From 2ecd9c5db603efcde9e6e51a500b3c2b1162fb85 Mon Sep 17 00:00:00 2001
From: bklLiudl <673013083@qq.com>
Date: 星期一, 28 四月 2025 17:15:44 +0800
Subject: [PATCH] 冲突合并

---
 Admin.NET/WCS.Application/PLC/PLCTaskAction.cs |  272 ++++++------------------------------------------------
 1 files changed, 32 insertions(+), 240 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
index 17bcb90..f22caec 100644
--- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -90,7 +90,7 @@
     /// <summary>
     /// 鍒濆鍖朠LC杩炴帴
     /// </summary>
-    public static void Init()
+    public static void Init() 
     {
         cts.Cancel();
         listPlc = _db.Queryable<WcsPlc>()
@@ -338,7 +338,7 @@
 
 
 
-                        Thread.Sleep(1000);
+                        Thread.Sleep(3000);
                     }
                     catch (OperationCanceledException)
                     {
@@ -460,266 +460,58 @@
 
                     #endregion
 
-                    #region 鑾峰彇閫傚悎鎵ц褰撳墠浠诲姟鐨勫皬杞� 鐢熸垚璺緞锛堥渶鑰冭檻灏忚溅闃婚樆鎸★級
 
+                    // 鑾峰彇閫傚悎鎵ц褰撳墠浠诲姟鐨勫皬杞� 鐢熸垚璺緞锛堥渶鑰冭檻灏忚溅闃婚樆鎸★級
                     var assignCar = kXCarList.OrderBy(m => m.Level).FirstOrDefault();
                     if (assignCar == null)
                     {
                         continue;//娌℃湁绌洪棽灏忚溅
                     }
-                    var data = new List<CarModel>();
+                    
                     if (assignCar.Level != 0)
                     {
                         //鍒ゆ柇灏忚溅浣嶇疆鏄惁涓庝换鍔$殑璧峰鍌ㄤ綅鐩稿悓,涓嶇浉鍚岋細鑾峰彇灏忚溅鍒板彇璐у偍浣嶈矾寰�
                         var carLocate = assignCar.X.ToString().PadLeft(2, '0')+assignCar.Y.ToString().PadLeft(2, '0')+ assignCar.Z.ToString().PadLeft(2, '0');
                         //鑾峰彇灏忚溅鍘诲彇璐у偍浣嶄换鍔¤矾寰�
                         var data1 = FourWayCarUtil.GetCarPath(carLocate, waitTask.StartLocate);
-                        var datas = FourWayCarUtil.GetCarPathUp(data1, 0);
-                        data.AddRange(datas);
+                        var datas1 = FourWayCarUtil.GetCarPathUp(data1, 0);
+                        if (datas1 == null)
+                        {
+                            continue;
+                        }
+                        else
+                        {
+                            var bl = FourWayCarUtil.AddCarTask(datas1, kXCarList, assignCar, waitTask,0);
+                            //鍒嗛厤閿欒锛屽垹闄ゅ垎閰嶄俊鎭�
+                            if (!bl)
+                            {
+                                var carTask = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == waitTask.TaskNo).ToList();
+                                _db.Deleteable(carTask).ExecuteCommand();
+                            }
+                        }
                     }
                     //鑾峰彇灏忚溅鍘绘斁璐у偍浣嶄换鍔¤矾寰�
                     var data2 = FourWayCarUtil.GetCarPath(waitTask.StartLocate, waitTask.EndLocate, "1");
                     var datas2 = FourWayCarUtil.GetCarPathUp(data2, 1);
-                    data.AddRange(datas2);
-                    if (data == null) { continue; }
-
-                    var preId1 = "";//鍓嶇疆浠诲姟Id
-                    var executionPath1 = "";//浜や簰璺緞
-                    var executionPath2 = "";//浜や簰璺緞
-                    var path = "";//鎵�鏈夎矾寰�
-                    var isOk = "1"; //鏄惁瀹屾暣璺緞  1瀹屾暣 2 涓ゆ潯璺緞
-                    for (int i = 0; i < data.Count; i++)
-                    {
-                        //璺緞鑺傜偣
-                        var pathXYZ = data[i].X.ToString().PadLeft(2, '0') + data[i].Y.ToString().PadLeft(2, '0') + data[i].Z.ToString().PadLeft(2, '0')+ data[i].NodeCom.ToString();
-                        path += pathXYZ + ";";
-                        
-                        //鑾峰彇绛夊緟鎴栨鍦ㄦ墽琛岀殑浠诲姟涓寘鍚綋鍓嶈妭鐐圭殑灏忚溅浠诲姟
-                        var taskList = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.Path.Contains(pathXYZ)).Select(m => m.Id).Distinct().ToList();
-
-                        foreach (var item in taskList)
-                        {
-                            //鍒ゆ柇濡傛灉鏄畬鏁磋矾寰� 璁板綍浜や簰璺緞
-                            if (isOk == "1")
-                            {
-                                //if (i == 0)
-                                //{
-                                //    return;//绗竴涓妭鐐规湁鍜屽叾浠栦换鍔¤矾寰勫啿绐侊紝鏃犳硶閬垮厤
-                                //}
-                                var pathXYZQian = data[i - 1].X.ToString().PadLeft(2, '0') + data[i - 1].Y.ToString().PadLeft(2, '0') + data[i - 1].Z.ToString().PadLeft(2, '0') + data[i].NodeCom.ToString();
-                                if (!executionPath1.Contains(pathXYZQian))
-                                {
-                                    executionPath1 += pathXYZQian + ";";
-                                }
-                                executionPath2 += pathXYZQian + ";";
-                            }
-                            //鍒ゆ柇娣诲姞鍓嶇疆浠诲姟Id
-                            if (!preId1.Contains(item + ""))
-                            {
-                                preId1 += item + ";";
-                            }
-                            
-                            isOk = "2";
-                        }
-                        
-                        if (data[i].IsSendPlc)
-                        {
-                            if (isOk == "1")
-                            {
-                                executionPath1 += pathXYZ + ";";
-                            }
-                            else
-                            {
-                                executionPath2 += pathXYZ + ";";
-                            }
-
-                        }
-
+                    
+                    if (datas2 == null) 
+                    { 
+                        continue; 
                     }
-
-                    #endregion
-
-                    #region 鍒ゆ柇鏄惁鏈夌┖闂插皬杞﹂樆鎸¤矾寰� 3
-                    var preId3 = "";//鍓嶇疆浠诲姟Id
-                    foreach (var item in kXCarList)
+                    else
                     {
-                        if (item == assignCar)
+                        var bl = FourWayCarUtil.AddCarTask(datas2,kXCarList,assignCar,waitTask,1);
+                        //鍒嗛厤閿欒锛屽垹闄ゅ垎閰嶄俊鎭�
+                        if (!bl)
                         {
-                            continue;//鎺掗櫎褰撳墠鍒嗛厤浠诲姟鐨勫皬杞�
-                        }
-                        //灏忚溅浣嶇疆
-                        var carXYZ = item.X.ToString().PadLeft(2, '0') + item.Y.ToString().PadLeft(2, '0') + item.Z.ToString().PadLeft(2, '0') ;
-                        //鍒嗛厤鐨勪换鍔¤矾寰勪腑 褰撳墠灏忚溅鏄惁闃绘尅
-                        if (path.Contains(carXYZ))
-                        {
-                            //鑾峰彇绛夊緟鎴栨鍦ㄦ墽琛岀殑浠诲姟涓寘鍚綋鍓嶈妭鐐圭殑灏忚溅浠诲姟锛屼笉浼氭湁澶浠诲姟锛屽悓灞傛湁鍑犱釜灏忚溅鏈�澶氭湁鍑犱釜浠诲姟
-                            var taskList3 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing)).ToList();
-                            
-                            var str3 = "";//鎵�鏈夊凡鍒嗛厤鎴栨墽琛岀殑浠诲姟鍏ㄨ矾寰勪箣鍜�
-
-                            foreach (var item2 in taskList3)
-                            {
-                                str3 += item2.Path;
-                            }
-                            var endLocate3 = "";
-                            var executionPath3 = "";
-                            var path3 = ""; 
-                            var datas3 = new List<CarModel>();
-                            //鏌ユ壘鐩爣浣嶇疆
-                            while (endLocate3 == "" || datas3.Count == 0 || datas3 == null)
-                            {
-                                endLocate3 = FourWayCarUtil.GetCarEndLocation(carXYZ, str3);
-                                var data3 = FourWayCarUtil.GetCarPath(carXYZ, endLocate3, "0");
-                                datas3 = FourWayCarUtil.GetCarPathUp(data3, 0);
-                            }
-                            foreach (var itemPath in datas3)
-                            {
-                                var pathXYZ = itemPath.X.ToString().PadLeft(2, '0') + itemPath.Y.ToString().PadLeft(2, '0') + itemPath.Z.ToString().PadLeft(2, '0') + itemPath.NodeCom.ToString();
-
-                                path3 += pathXYZ + ";";
-                                if (itemPath.IsSendPlc)
-                                {
-                                    executionPath3 += pathXYZ + ";";
-                                }
-                            }
-                            WcsTask modTask = new WcsTask()
-                            {
-                                TaskNo = _taskService.GetTaskCode(),
-                                TaskType = TaskTypeEnum.Move,
-                                Type = PLCTypeEnum.ShuttleCar,
-                                StartLocate = carXYZ,
-                                EndLocate = endLocate3,
-                                PalletNo = "",
-                                Status = TaskStatusEnum.Wait,
-                                Levels = 2,
-                                Origin = "WCS"
-                            };
-                            _db.Insertable(modTask).ExecuteCommand();
-                            HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
-                            //绉诲姩灏忚溅
-                            var carTaskYC = new WcsCarTasks()
-                            {
-                                TaskNo = modTask.TaskNo,
-                                PreId = "",
-                                ExecutionPath = executionPath3,
-                                Path = path3,
-                                CarNo = item.CarPlcIp,
-                                Status = TaskStatusEnum.Wait
-                            };
-                            var idLong = _db.Insertable(carTaskYC).ExecuteReturnBigIdentity();
-                            preId3 += idLong + ";";
+                            waitTask.Status = TaskStatusEnum.Wait;
+                            _db.Updateable(waitTask).ExecuteCommand();
+                            var carTask = _db.Queryable<WcsCarTasks>().Where(m=>m.IsDelete == false && m.TaskNo == waitTask.TaskNo).ToList();
+                            _db.Deleteable(carTask).ExecuteCommand();
                         }
                     }
 
-                    #endregion
-
-                    #region 鍒ゆ柇鐜版湁浠诲姟涓渶缁堣妭鐐规槸鍚﹀湪褰撳墠鍒嗛厤璺緞涓紝濡傛湁 娣诲姞绉昏蛋灏忚溅浠诲姟骞跺姞鍏ュ墠缃换鍔� 4
-
-                    //鑾峰彇绛夊緟鎴栨鍦ㄦ墽琛岀殑浠诲姟涓寘鍚綋鍓嶈妭鐐圭殑灏忚溅浠诲姟锛屼笉浼氭湁澶浠诲姟锛屽悓灞傛湁鍑犱釜灏忚溅鏈�澶氭湁鍑犱釜浠诲姟
-                    var taskList4 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing)).ToList();
-                    var preId4 = "";//鍓嶇疆浠诲姟Id
-                    var str4 = "";//鎵�鏈夊凡鍒嗛厤鎴栨墽琛岀殑浠诲姟鍏ㄨ矾寰勪箣鍜�
-
-                    foreach (var item in taskList4)
-                    {
-                        str4 += item.Path;
-                    } 
-                    //鍒ゆ柇鐜版湁浠诲姟涓渶缁堣妭鐐规槸鍚﹀湪褰撳墠鍒嗛厤璺緞涓紝濡傛湁 娣诲姞绉昏蛋灏忚溅浠诲姟骞跺姞鍏ュ墠缃换鍔� 
-                    foreach (var item in taskList4)
-                    {
-                        var lastPathList = item.ExecutionPath.Split(';');
-                        //  a;b;c; 鏈�鍚庝竴涓綅鏄�溾�濓紝鎵�浠astPathList.Length - 2
-                        var lastPath = lastPathList[lastPathList.Length - 2];
-
-                        //濡傛灉姝ゆ鍒嗛厤璺緞鍖呭惈閱夎垶涓渶缁堣妭鐐硅矾寰勶紝娣诲姞绉昏蛋灏忚溅
-                        if (path.Contains(lastPath))
-                        {
-                            var endLocate = "";
-                            var executionPath4 = "";
-                            var path4 = "";
-                            var datas4 = new List<CarModel>();
-                            //鏌ユ壘鐩爣浣嶇疆
-                            while (endLocate == "" || datas4.Count == 0 || datas4 == null)
-                            {
-                                endLocate = FourWayCarUtil.GetCarEndLocation(lastPath, str4);
-                                var data4 = FourWayCarUtil.GetCarPath(lastPath, endLocate);
-                                datas4 = FourWayCarUtil.GetCarPathUp(data4, 0);
-                            }
-                            foreach (var itemPath in datas4)
-                            {
-                                var pathXYZ = itemPath.X.ToString().PadLeft(2, '0') + itemPath.Y.ToString().PadLeft(2, '0') + itemPath.Z.ToString().PadLeft(2, '0') + itemPath.NodeCom.ToString();
-
-                                path4 += pathXYZ + ";";
-                                if (itemPath.IsSendPlc)
-                                {
-                                    executionPath4 += pathXYZ + ";";
-                                }
-                            }
-                            WcsTask modTask = new WcsTask()
-                            {
-                                TaskNo = _taskService.GetTaskCode(),
-                                TaskType = TaskTypeEnum.Move,
-                                Type = PLCTypeEnum.ShuttleCar,
-                                StartLocate = lastPath,
-                                EndLocate = endLocate,
-                                PalletNo = "",
-                                Status = TaskStatusEnum.Wait,
-                                Levels = 2,
-                                Origin = "WCS"
-                            };
-                            _db.Insertable(modTask).ExecuteCommand();
-                            HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
-                            //绉诲姩灏忚溅
-                            var carTaskYC = new WcsCarTasks()
-                            {
-                                TaskNo = modTask.TaskNo,
-                                PreId = "",
-                                ExecutionPath = executionPath4,
-                                Path = path4,
-                                CarNo = item.CarNo,
-                                Status = TaskStatusEnum.Wait
-                            };
-                            var idLong = _db.Insertable(carTaskYC).ExecuteReturnBigIdentity();
-                            preId4 += idLong + ";";
-                        }
-                    }
-
-                    #endregion
-
-                    #region 鎻掑叆浠诲姟鏁版嵁  鏀瑰彉浠诲姟鐘舵��
-
-                    // 鎻掑叆鍥涘悜杞︿换鍔¤〃
-                    var carTask1 = new WcsCarTasks()
-                    {
-                        TaskNo = waitTask.TaskNo,
-                        PreId = preId1+ preId3+preId4,
-                        ExecutionPath = executionPath1,
-                        Path = path,
-                        CarNo = assignCar.CarPlcIp,
-                        Status = TaskStatusEnum.Wait
-                    };
-                    _db.Insertable(carTask1).ExecuteCommand();
-                    if (!string.IsNullOrWhiteSpace(executionPath1) && isOk == "2")
-                    {
-                        // 鎻掑叆鍥涘悜杞︿换鍔¤〃
-                        var carTask2 = new WcsCarTasks()
-                        {
-                            TaskNo = waitTask.TaskNo,
-                            PreId = preId1,
-                            ExecutionPath = executionPath2,
-                            Path = path,
-                            CarNo = assignCar.CarPlcIp,
-                            Status = TaskStatusEnum.Wait
-                        };
-                        _db.Insertable(carTask2).ExecuteCommand();
-                    }
-                    // 鏀瑰彉鎬讳换鍔¤〃鐘舵��
-                    waitTask.Status = TaskStatusEnum.Doing;
-                    waitTask.UpdateTime = DateTime.Now;
-                    _db.Updateable(waitTask).ExecuteCommand();
-                    HubUtil.PublicTask(waitTask.Adapt<WcsTaskOutput>());
-
-                    #endregion
+                    
 
                     Thread.Sleep(3000);
                 }

--
Gitblit v1.8.0