From c2bed218cc875e59fff53ef43a187d5934bdf35c Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期日, 27 四月 2025 14:59:20 +0800
Subject: [PATCH] 修改优化问题

---
 Admin.NET/WCS.Application/PLC/PLCTaskAction.cs |  419 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 410 insertions(+), 9 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
index 7bd5530..17bcb90 100644
--- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -2,13 +2,18 @@
 using DocumentFormat.OpenXml.Bibliography;
 using DocumentFormat.OpenXml.Drawing;
 using DocumentFormat.OpenXml.Drawing.Charts;
+using Elastic.Clients.Elasticsearch.Snapshot;
 using Furion.Logging;
 using Microsoft.AspNetCore.SignalR;
 using NewLife.Serialization;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using OnceMi.AspNetCore.OSS;
 using System;
 using System.Drawing.Drawing2D;
 using System.Net.NetworkInformation;
+using WCS.Application.Entity;
+using WCS.Application.Util;
 using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressIntracityUpdateStoreRequest.Types;
 //using WCS.Application.Util;
 
@@ -35,6 +40,7 @@
     private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
     private static readonly SysCacheService sysCacheService = App.GetRequiredService<SysCacheService>();
     private static readonly SysConfigService _sysConfigService = App.GetService<SysConfigService>();
+    private static readonly WcsTaskService _taskService = App.GetService<WcsTaskService>();
 
     private static List<WcsPlc> listPlc = new List<WcsPlc>();
     private static List<WcsDevice> listPlcDevice = new List<WcsDevice>();
@@ -137,6 +143,7 @@
             StartRead();
             ConnectionStatus();
             StartWatchAlarm();
+            AssignTasks();
             //StartWatchPosition();
         }
     }
@@ -202,15 +209,15 @@
                                         var (result, value) = modPlcUtil.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos);
                                         if (result.IsSucceed)
                                         {
-                                            //濡傛灉鏄┛姊溅锛岃繖閲屽彂閫佸績璺�
-                                            if (modPlc.Type == PLCTypeEnum.ShuttleCar)
-                                            {
-                                                var modHeart = listPlcPosition.Where(s => s.DeviceId == modDevice.Id && s.Text == "蹇冭烦").FirstOrDefault();
-                                                if (modHeart != null)
-                                                {
-                                                    modPlcUtil.SetPlcDBValue(modHeart.PosType, modHeart.PlcPos, "1");
-                                                }
-                                            }
+                                            ////濡傛灉鏄┛姊溅锛岃繖閲屽彂閫佸績璺�
+                                            //if (modPlc.Type == PLCTypeEnum.ShuttleCar)
+                                            //{
+                                            //    var modHeart = listPlcPosition.Where(s => s.DeviceId == modDevice.Id && s.Text == "蹇冭烦").FirstOrDefault();
+                                            //    if (modHeart != null)
+                                            //    {
+                                            //        modPlcUtil.SetPlcDBValue(modHeart.PosType, modHeart.PlcPos, "1");
+                                            //    }
+                                            //}
                                             //鏃犳祦绋嬭烦鍑�
                                             if (Convert.ToInt32(value) == 0)
                                                 continue;
@@ -258,11 +265,22 @@
                                         var (result, value) = modbusUtil.GetDBValue(modDevice.PosType, modDevice.PlcPos);
                                         if (result.IsSucceed)
                                         {
+                                            //濡傛灉鏄┛姊溅锛岃繖閲屽彂閫佸績璺�
+                                            if (modPlc.Type == PLCTypeEnum.ShuttleCar)
+                                            {
+                                                var modHeart = listPlcPosition.Where(s => s.DeviceId == modDevice.Id && s.Text == "蹇冭烦").FirstOrDefault();
+                                                if (modHeart != null)
+                                                {
+                                                    modbusUtil.SetDBValue(modHeart.PosType, modHeart.PlcPos, "1");
+                                                }
+                                            }
+
                                             //鏃犳祦绋嬭烦鍑�
                                             if (value == 0)
                                                 continue;
                                             var dto = modDevice.Adapt<WcsDeviceDto>();
                                             dto.Value = value;
+                                            dto.PlcIdIP = modPlc.IP;
                                             dto.Type = _modplc.Type;
                                             dto.modbusUtil = modbusUtil;
                                             dto.listStation = listPlcPosition.Where(s => s.DeviceId == modDevice.Id).ToList();
@@ -334,6 +352,385 @@
             }, cts.Token);
         }
     }
+
+    /// <summary>
+    /// 鍥涘悜杞︿换鍔″垎閰�
+    /// </summary>
+    private static void AssignTasks()
+    {
+        
+        Task.Run(() =>
+        {
+            while (true)
+            {
+                Console.WriteLine("寮�鍚洓鍚戣溅浠诲姟鑷垎閰�");
+                //鍙栨秷绾跨▼ 鍏抽棴PLC杩炴帴
+                if (cts.Token.IsCancellationRequested)
+                {
+                    foreach (var modModBusUtil in listModbusUtil)
+                    {
+                        if (modModBusUtil != null && modModBusUtil.Connected)
+                            modModBusUtil.Close();
+                    }
+                    break;
+                }
+                try
+                {
+                    // 鑾峰彇瀵嗛泦搴撴湭鎵ц浠诲姟 鏍规嵁鍒涘缓鏃堕棿鎺掑簭
+                    var waitTask = _db.Queryable<WcsTask>().Where(s => s.IsDelete == false && s.Status == TaskStatusEnum.Wait && s.Type == PLCTypeEnum.ShuttleCar).OrderBy(s => s.CreateTime).First();
+                    if (waitTask == null)
+                    {
+                        continue;
+                    }
+                    //01010101: 01鎺� 01鍒� 01灞� 01娣卞害-姝ら」鐩笉鍋氬垽鏂�
+                    var taskpai = int.Parse(waitTask.StartLocate.Substring(0, 2));
+                    var tasklie = int.Parse(waitTask.StartLocate.Substring(2, 2));
+                    var taskceng = int.Parse(waitTask.StartLocate.Substring(4, 2));
+
+                    #region 鑾峰彇褰撳墠浠诲姟鎵�鍦ㄥ眰鎵�鏈夌┖闂插皬杞�
+
+                    // 鑾峰彇鏈変换鍔$殑灏忚溅缂栧彿
+                    var taskCarList = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.Status == TaskStatusEnum.Wait).Select(m => m.CarNo).Distinct().ToList();
+
+                    // 鑾峰彇褰撳墠浠诲姟鎵�鍦ㄥ眰鎵�鏈夌┖闂插皬杞︼紙鏍规嵁灏忚溅浠诲姟琛ㄦ槸鍚︽湁浠诲姟鍜屽皬杞︾姸鎬佸叡鍚屽垽鏂皬杞︽槸鍚︾┖闂�)
+                    var kXCarList = new List<CarInfo>();
+                    var carErr = false;//灏忚溅鏄惁鏈夊け鑱旂殑
+                    foreach (var modbusUtil in listModbusUtil)
+                    {
+                        //濡傛灉灏忚溅鏈夋湭鎵ц鐨勪换鍔★紝璺冲嚭
+                        if (taskCarList.Contains(modbusUtil.PlcIP))
+                        {
+                            continue;
+                        }
+                        //鑾峰彇灏忚溅鐨刉csDevice淇℃伅
+                        var listDevice = listPlcDevice.Where(s => s.PlcId == modbusUtil.PlcId && s.DeviceType == DeviceTypeEnum.Business).ToList();
+                        //寰幆璇昏澶�
+                        foreach (var modDevice in listDevice)
+                        {
+                            var (result, value) = modbusUtil.GetDBValue(modDevice.PosType, modDevice.PlcPos);
+                            if (result.IsSucceed)
+                            {
+                                //鑾峰彇宸ヤ綅WCSPLCPosition淇℃伅
+                                var plcPosition = listPlcPosition.Where(s => s.DeviceId == modDevice.Id).ToList();
+                                //灏忚溅绌洪棽鍔犲叆闆嗗悎
+                                if (value == 1)
+                                {
+                                    var modStationX = plcPosition.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(X)");
+                                    var (resultx, valuex) = modbusUtil.GetDBValue(modStationX.PosType, modStationX.PlcPos);
+                                    var modStationY = plcPosition.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(Y)");
+                                    var (resulty, valuey) = modbusUtil.GetDBValue(modStationY.PosType, modStationY.PlcPos);
+                                    var modStationZ = plcPosition.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(Z)");
+                                    var (resultz, valuez) = modbusUtil.GetDBValue(modStationZ.PosType, modStationZ.PlcPos);
+                                    //灏忚溅褰撳墠灞�
+                                    var carZ = (int)valuez;
+                                    //浠诲姟灞備笌灏忚溅灞傜浉鍚�
+                                    if (taskceng == carZ)
+                                    {
+                                        if (!kXCarList.Any(m => m.CarPlcIp == modbusUtil.PlcIP))
+                                        {
+                                            var carVal = ((int)valuex).ToString().PadLeft(2, '0') + ((int)valuey).ToString().PadLeft(2, '0') + ((int)valuez).ToString().PadLeft(2, '0');
+                                            //灏忚溅鍒板彇璐у偍浣嶈矾寰�  
+                                            var d = FourWayCarUtil.GetCarPath(carVal, waitTask.StartLocate);
+                                            kXCarList.Add(new CarInfo()
+                                            {
+                                                CarPlcIp = modbusUtil.PlcIP,
+                                                X = (int)valuex,
+                                                Y = (int)valuey,
+                                                Z = (int)valuez,
+                                                Level = d.Count,
+                                            });
+                                        }
+                                    }
+                                }
+                            }
+                            else
+                            {
+                                Console.WriteLine($"璇诲彇鍥涘悜杞modbusUtil.PlcIP}鐘舵�佸け璐�");
+                                carErr = true;
+                                break;//鏈変竴涓皬杞﹁鍙栧け璐ヨ烦鍑烘柟娉曪紝鏆傜紦鍒嗛厤锛岄槻姝㈠悓灞傚皬杞﹀叧鏈烘垨澶辫仈瀵艰嚧闃绘尅璺緞
+                            }
+                        }
+                        //鏈夊皬杞﹀け鑱旓紝涓嶅垎閰嶄换鍔�
+                        if (carErr)
+                        {
+                            kXCarList.Clear();//娓呮绌鸿溅璁板綍
+                            break;
+                        }
+                    }
+
+                    #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 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 + ";";
+                            }
+
+                        }
+
+                    }
+
+                    #endregion
+
+                    #region 鍒ゆ柇鏄惁鏈夌┖闂插皬杞﹂樆鎸¤矾寰� 3
+                    var preId3 = "";//鍓嶇疆浠诲姟Id
+                    foreach (var item in kXCarList)
+                    {
+                        if (item == assignCar)
+                        {
+                            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 + ";";
+                        }
+                    }
+
+                    #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);
+                }
+                catch (Exception ex)
+                {
+                    Log.Error("浠诲姟鍒嗛厤鍙戠敓寮傚父", ex);
+                }
+            }
+        },cts.Token);
+    }
+
 
     /// <summary>
     /// 杩炴帴鐘舵�佺嚎绋�
@@ -692,6 +1089,10 @@
             }
         });
     }
+    /// <summary>
+    /// 淇敼浣嶇疆淇℃伅
+    /// </summary>
+    /// <param name="modInfo"></param>
     private static void UpdatePosition(PlcPositionInfo modInfo)
     {
         var modTemp = listPositionInfo.FirstOrDefault(s => s.StationNum == modInfo.StationNum && modInfo.Type == s.Type);

--
Gitblit v1.8.0