From 08eb1d72105662b301275fefd876be18df1b9fec Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期二, 29 四月 2025 15:12:47 +0800
Subject: [PATCH] 修改小车充电流程

---
 Admin.NET/WCS.Application/PLC/PLCService.cs      |  117 +++++++++++++++++++-------------------
 Admin.NET/WCS.Application/PLC/PLCTaskAction.cs   |    8 +-
 Admin.NET/WCS.Application/Enum/FourWayCarEnum.cs |   12 ++-
 3 files changed, 72 insertions(+), 65 deletions(-)

diff --git a/Admin.NET/WCS.Application/Enum/FourWayCarEnum.cs b/Admin.NET/WCS.Application/Enum/FourWayCarEnum.cs
index 5a0b3ce..34fc097 100644
--- a/Admin.NET/WCS.Application/Enum/FourWayCarEnum.cs
+++ b/Admin.NET/WCS.Application/Enum/FourWayCarEnum.cs
@@ -76,12 +76,16 @@
     /// 鏋侀檺鐢甸噺 浣庝簬姝ょ數閲忎笉鎵ц浠诲姟
     /// </summary>
     [Description("鏋侀檺鐢甸噺")]
-    Dl = 30,
+    Dl = 60,
     /// <summary>
     /// 鍋ュ悍鐢甸噺 浣庝簬姝ょ數閲� 涓旀棤浠诲姟鏃跺幓鍏呯數
     /// </summary>
     [Description("鍋ュ悍鐢甸噺")]
-    Dl2 = 80,
-     
- 
+    Dl2 = 90,
+    /// <summary>
+    /// 鏋侀檺鐢甸噺 浣庝簬姝ょ數閲忎笉鎵ц浠诲姟
+    /// </summary>
+    [Description("鏋侀檺鐢甸噺")]
+    Dl3 = 50,
+
 }
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index a25f1e5..bc201db 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -170,68 +170,66 @@
                         int valueTaskStr = Convert.ToInt32(valueTask);
                         //鑾峰彇浠诲姟淇℃伅 鏍规嵁  浠诲姟鍙枫�佸皬杞︾紪鍙�
                         var carTask = _db.Queryable<WcsCarTasks>().First(m=>m.IsDelete == false && m.Status == TaskStatusEnum.Doing && m.CarTaskNo == valueTaskStr && m.CarNo == modDevice.PlcIdIP);
-                        if (carTask == null)
+                        if (carTask != null)
                         {
                             //var modRests = modDevice.listStation.FirstOrDefault(s => s.Text == "澶嶄綅");
                             //plcConn.SetDBValue(modRests.PosType, modRests.PlcPos, "1");//娌℃湁鎵惧埌浠诲姟  澶嶄綅
-                            return;
-                        }
-                         
-                        var modFinshTask = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.TaskNo == carTask.TaskNo);
-                        if (modFinshTask == null)
-                        {
-                            break;//娌℃湁鏌ヨ鍒版�讳换鍔�
-                        } 
-                        if (carTask != null && carTask.Status != TaskStatusEnum.Complete)
-                        {
-                            carTask.Status = TaskStatusEnum.Complete;
-                            carTask.UpdateTime = DateTime.Now;
-                            _db.Updateable(carTask).ExecuteCommand();
-                            //娣诲姞浠诲姟鏄庣粏
-                            var taskMonitor = new WcsTaskMonitor()
-                            {
-                                TaskNo = carTask.TaskNo,
-                                PlcName = modDevice.Text,
-                                InteractiveMsg = $"绌挎杞﹀弽棣堜换鍔″畬鎴�"
-                            };
-                            _db.Insertable(taskMonitor).ExecuteCommand();
-                            //涓嬪彂浠诲姟鏃ュ織
                             
-                            HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
-                        }
-                        //鑾峰彇璺緞2鐨勪换鍔� 涓嬪彂
-                        carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing).OrderBy(m => m.CreateTime).First();
-                        //鎬讳换鍔′笅娌℃湁鍏朵粬鏈墽琛屽皬杞︾殑浠诲姟 鍙樻洿鎬讳换鍔′俊鎭�
-                        if (carTaskNext == null && modFinshTask != null && modFinshTask.Status != TaskStatusEnum.Complete)
-                        {
-                            modFinshTask.Status = TaskStatusEnum.Complete;
-                            modFinshTask.FinishDate = DateTime.Now;
-                            _db.Updateable(modFinshTask).ExecuteCommand();
-                            
-                            //鍒ゆ柇浠诲姟鏄惁鍏呯數浠诲姟,涓嬪彂寮�濮嬪厖鐢靛懡浠�
-                            if (modFinshTask.Levels == 888)
+                            var modFinshTask = _db.Queryable<WcsTask>().First(s => s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.ShuttleCar && s.TaskNo == carTask.TaskNo);
+                            if (modFinshTask == null)
                             {
-                                //鍐欏叆寮�濮嬪厖鐢�
-                                var modCd = modDevice.listStation.FirstOrDefault(s => s.Text == "鍏呯數鍛戒护");
-                                plcConn.SetDBValue(modCd.PosType, modCd.PlcPos.ToString(), "2");
+                                break;//娌℃湁鏌ヨ鍒版�讳换鍔�
+                            } 
+                            if (carTask != null && carTask.Status != TaskStatusEnum.Complete)
+                            {
+                                carTask.Status = TaskStatusEnum.Complete;
+                                carTask.UpdateTime = DateTime.Now;
+                                _db.Updateable(carTask).ExecuteCommand();
+                                //娣诲姞浠诲姟鏄庣粏
+                                var taskMonitor = new WcsTaskMonitor()
+                                {
+                                    TaskNo = carTask.TaskNo,
+                                    PlcName = modDevice.Text,
+                                    InteractiveMsg = $"绌挎杞﹀弽棣堜换鍔″畬鎴�"
+                                };
+                                _db.Insertable(taskMonitor).ExecuteCommand();
+                                //涓嬪彂浠诲姟鏃ュ織
+                            
+                                HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
                             }
-
-                            //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚
-                            //HttpService httpService = new HttpService();
-                            //var requestMode = new TaskRequestWMS()
-                            //{
-                            //    TaskNo = modFinshTask.TaskNo,
-                            //    PalletNo = modFinshTask.PalletNo,
-                            //    TaskType = ((int)modFinshTask.TaskType).ToString(),
-                            //    TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
-                            //};
-                            //var modResponseTask = httpService.RequestTask(requestMode).Result;
-                            //modFinshTask.IsSuccess = TaskSuccessEnum.Success;
-                            //_db.Updateable(modFinshTask).ExecuteCommand();
-                            HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
+                            //鑾峰彇璺緞2鐨勪换鍔� 涓嬪彂
+                            carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing).OrderBy(m => m.CreateTime).First();
+                            //鎬讳换鍔′笅娌℃湁鍏朵粬鏈墽琛屽皬杞︾殑浠诲姟 鍙樻洿鎬讳换鍔′俊鎭�
+                            if (carTaskNext == null && modFinshTask != null && modFinshTask.Status != TaskStatusEnum.Complete)
+                            {
+                                modFinshTask.Status = TaskStatusEnum.Complete;
+                                modFinshTask.FinishDate = DateTime.Now;
+                                _db.Updateable(modFinshTask).ExecuteCommand();
                             
+                                //鍒ゆ柇浠诲姟鏄惁鍏呯數浠诲姟,涓嬪彂寮�濮嬪厖鐢靛懡浠�
+                                if (modFinshTask.Levels == 888)
+                                {
+                                    //鍐欏叆寮�濮嬪厖鐢�
+                                    var modCd = modDevice.listStation.FirstOrDefault(s => s.Text == "鍏呯數鍛戒护");
+                                    plcConn.SetDBValue(modCd.PosType, modCd.PlcPos.ToString(), "2");
+                                }
+
+                                //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚
+                                //HttpService httpService = new HttpService();
+                                //var requestMode = new TaskRequestWMS()
+                                //{
+                                //    TaskNo = modFinshTask.TaskNo,
+                                //    PalletNo = modFinshTask.PalletNo,
+                                //    TaskType = ((int)modFinshTask.TaskType).ToString(),
+                                //    TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
+                                //};
+                                //var modResponseTask = httpService.RequestTask(requestMode).Result;
+                                //modFinshTask.IsSuccess = TaskSuccessEnum.Success;
+                                //_db.Updateable(modFinshTask).ExecuteCommand();
+                                HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
+                            
+                            }
                         }
-                        
                     }
                     
                     WcsTask modTask;
@@ -260,12 +258,12 @@
                     var modStationZ = modDevice.listStation.FirstOrDefault(s => s.Text == "鍥涘悜杞︿綅缃�(Z)");
                     var (resultz, valuez) = plcConn.GetDBValue(modStationZ.PosType, modStationZ.PlcPos);
                     var carXYZ = valuex.ToString().PadLeft(2, '0') + valuey.ToString().PadLeft(2, '0') + valuez.ToString().PadLeft(2, '0');
-                    if (modTask == null || carTaskNext == null)
+                    if (modTask == null)
                     {
                         //璇诲彇灏忚溅鐢甸噺
                         var modPosCarDl = modDevice.listStation.FirstOrDefault(s => s.Text == "鐢垫睜鐢甸噺");
                         var (resultDl, valueDl) = plcConn.GetDBValue(modPosCarDl.PosType, modPosCarDl.PlcPos);
-                        if (resultDl.IsSucceed && valueDl < FourWayCarDLEnum.Dl)
+                        if (resultDl.IsSucceed && valueDl < (int)FourWayCarDLEnum.Dl)
                         {
                             var endLocateCar = "";
                             if (valuez == 1)
@@ -297,7 +295,7 @@
                             _db.Insertable(modCarTask).ExecuteCommand();
                             HubUtil.PublicTask(modCarTask.Adapt<WcsTaskOutput>());
                         }
-                        else if(resultDl.IsSucceed && valueDl < FourWayCarDLEnum.Dl2)
+                        else if(resultDl.IsSucceed && valueDl < (int)FourWayCarDLEnum.Dl2)
                         {
                             //鍒ゆ柇灏忚溅鏄惁鏈夌┖闂叉椂闂磋褰� 娌℃湁锛氭坊鍔�  鏈夛細鍒ゆ柇褰撳墠鏃堕棿涓庤褰曟椂闂存槸鍚︽弧瓒�5鍒嗛挓 婊¤冻锛氭坊鍔犺灏忚溅鍘诲厖鐢典换鍔�
                             var carTime = _db.Queryable<WcsCarTime>().First(m => m.IsDelete == false && m.CarIp == modDevice.PlcIdIP);
@@ -364,7 +362,10 @@
                         
                         return;
                     }
-                    
+                    if (carTaskNext == null)
+                    {
+                        return;
+                    }
                     if (carTaskNext.Status == TaskStatusEnum.Doing)
                     {
                         Thread.Sleep(3000);
diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
index 08712ca..ab3e7b4 100644
--- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -417,11 +417,11 @@
                                 {
                                     var modCarDl = plcPosition.FirstOrDefault(s => s.Text == "鐢垫睜鐢甸噺");
                                     var (resultDl, valueDl) = modbusUtil.GetDBValue(modCarDl.PosType, modCarDl.PlcPos);
-                                    if (resultDl.IsSucceed && valueDl> FourWayCarDLEnum.Dl) 
+                                    if (resultDl.IsSucceed && valueDl> (int)FourWayCarDLEnum.Dl3) 
                                     {
                                         //鍐欏叆缁撴潫鍏呯數鍛戒护
                                         var modCdEnd = plcPosition.FirstOrDefault(s => s.Text == "鍏呯數鍛戒护");
-                                        modbusUtil.SetDBValue(modCdEnd.PosType, modCdEnd.PlcPos.ToString(), "2") ;
+                                        var resultDl22 = modbusUtil.SetDBValue(modCdEnd.PosType, modCdEnd.PlcPos.ToString(), "3") ;
                                         carErr = true;
                                         break; //鏆傜紦鍒嗛厤锛岄槻姝㈠悓灞傚皬杞﹀叧鏈烘垨澶辫仈瀵艰嚧闃绘尅璺緞
                                     }
@@ -505,13 +505,15 @@
                         }
                     }
                     var typeStr = "1";
+                    var typeStr2 = 1;
                     if (waitTask.Levels  == 888 )
                     {
                         typeStr = "0";//灏忚溅浠诲姟鏄厖鐢典换鍔�
+                        typeStr2 = 0;
                     }
                     //鑾峰彇灏忚溅鍘绘斁璐у偍浣嶄换鍔¤矾寰�
                     var data2 = FourWayCarUtil.GetCarPath(waitTask.StartLocate, waitTask.EndLocate, typeStr);
-                    var datas2 = FourWayCarUtil.GetCarPathUp(data2, 1);
+                    var datas2 = FourWayCarUtil.GetCarPathUp(data2, typeStr2);
                     
                     if (datas2 == null) 
                     { 

--
Gitblit v1.8.0