From 95c865c03a9cb128af51ac4b7d7f9d7149441efd Mon Sep 17 00:00:00 2001
From: lss <2538410689@qq.com>
Date: 星期一, 07 七月 2025 17:30:35 +0800
Subject: [PATCH] agv效率开发

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs |  236 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 163 insertions(+), 73 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs
index 92da512..63dde4f 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs
@@ -5,8 +5,13 @@
 using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
+using System.IdentityModel.Protocols.WSTrust;
 using System.Linq;
+using System.Net.NetworkInformation;
+using System.Security.Policy;
+using System.Threading.Tasks;
 using static HH.WCS.JiaTong.api.ApiModel;
+using static HH.WCS.JiaTong.util.Settings;
 
 namespace HH.WCS.JiaTong.core
 {
@@ -27,7 +32,6 @@
                 {
                     if (model.state <= 7)
                     {
-
                         //鏈変换鍔″彿璇锋眰
                         switch (model.state)
                         {
@@ -36,6 +40,7 @@
                                 break;
                             #region MyRegion
                             case 3:
+                                WCSHelper.UpdateAgvNo(TN_Task, model.forklift_no);
                                 WCSHelper.UpdateStatus(TN_Task, "寮�鍙栬揣");
                                 break;
                             case 4:
@@ -47,10 +52,15 @@
                                 break;
                             case 6:
                                 WCSHelper.UpdateStatus(TN_Task, "鍗歌揣瀹屾垚");
-                                if (TN_Task.S_NOTE != "鍏ュ簱" && TN_Task.S_NOTE != "绌烘墭鍥炲簱")
+                                if (!string.IsNullOrEmpty(TN_Task.S_NOTE) && (TN_Task.S_NOTE.Trim() == "鍏ュ簱" || TN_Task.S_NOTE.Trim() == "绌烘墭鍥炲簱"))
+                                {
+                                    LocationHelper.UnlockLoc(TN_Task.S_END_LOC);
+                                }
+                                else
                                 {
                                     TaskProcess.OperateStatus(TN_Task, 6);
                                 }
+                                UpdateWait(TN_Task);
                                 break;
                             #endregion
                             case 2:
@@ -63,14 +73,14 @@
                                 break;
                         }
                         WCSHelper.AddActionRecord(model.task_no, model.state, model.forklift_no, model.ext_data);
-                        //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級
+
                         //鐗╂枡鍒颁綅閫氱煡
-                        if ((TN_Task.S_TYPE == "鍑哄钩搴� || TN_Task.S_TYPE == "浣欐枡杩斿洖") && model.state == 2)
+                        if ((TN_Task.S_TYPE == "鍑哄钩搴� || TN_Task.S_TYPE == "浣欐枡杩斿洖") && model.state == 6)
                         {
                             string urlitem = Settings.tableUrls.Find(a => a.id == 5).url;
                             TaskProcess.MESIteminfoback(TN_Task, urlitem);
                         }
-                        if ((TN_Task.S_NOTE == "鍑哄簱" || TN_Task.S_NOTE == "寮傚父搴撳尯鍏ュ簱") && !string.IsNullOrEmpty(TN_Task.S_MES_NO) && model.state == 2)
+                        if ((TN_Task.S_NOTE == "鍑哄簱" || TN_Task.S_NOTE == "寮傚父搴撳尯鍏ュ簱") && !string.IsNullOrEmpty(TN_Task.S_MES_NO) && model.state == 6)
                         {
                             string urlitem = Settings.tableUrls.Find(a => a.id == 5).url;
                             TaskProcess.MESIteminfoback(TN_Task, urlitem);
@@ -78,100 +88,115 @@
                         //浠诲姟鍥炴姤 浠诲姟鏉ユ簮 1.閽笣绔嬪簱  2.鑳剁墖搴� 3.棰勫搴�5.mes涓嬪彂
                         if (TN_Task.Z_TYPE == 5)
                         {
+                            //TN_Task = WCSHelper.GetTask(TN_Task.S_CODE);
                             string urlstate = Settings.tableUrls.Find(a => a.id == 4).url;
                             TaskProcess.MESReportback(TN_Task, model.state, urlstate);
                         }
                         else
                         {
-                            string url = "";
-                            if (TN_Task.Z_TYPE == 1)
+                            //绔嬪簱涓巜ms浠诲姟鍥炴姤
+                            TableUrl url = null;
+                            switch (TN_Task.Z_TYPE)
                             {
-                                url = Settings.tableUrls.Find(a => a.id == 1).url;
-                            }
-                            else if (TN_Task.Z_TYPE == 3)
-                            {
-                                url = Settings.tableUrls.Find(a => a.id == 9).url;
-                            }
-                            else if (TN_Task.Z_TYPE == 4)
-                            {
-                                url = Settings.tableUrls.Find(a => a.id == 11).url;
-                            }
-                            else if (TN_Task.Z_TYPE == 6)//wms瀹ゅ唴鍒拌揣鍥炴姤
-                            {
-                                url = Settings.tableUrls.Find(a => a.id == 14).url;
-                            }
-                            else
-                            {
-                                LogHelper.Info($"浠诲姟鍥炴姤锛氫换鍔$被鍨嬮敊璇�);
-                            }
-                            if (TN_Task.S_TYPE.Contains("鐢垫"))
-                            {
-                                if (TN_Task.S_TYPE == "鐢垫1")
-                                {
-                                    if (TN_Task.S_CODE == "1" || TN_Task.S_CODE == "3" || TN_Task.S_CODE == "4")
+
+                                case 1:
+                                    url = Settings.tableUrls.Find(a => a.id == 1);
+                                    if (url != null)
                                     {
-                                        TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url);
-                                    }
-                                }
-                                else if (TN_Task.S_TYPE == "鐢垫2")
-                                {
-                                    if (TN_Task.S_CODE == "5" || TN_Task.S_CODE == "6" || TN_Task.S_CODE == "2")
-                                    {
-                                        TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url);
-                                    }
-                                }
-                            }
-                            //鍘熸潗鏂欐帴鍙i渶瑕佸姞涓妕oken
-                            else if (TN_Task.Z_TYPE == 4)
-                            {
-                                Console.WriteLine($"鍘熸潗鏂欎换鍔″洖鎶TN_Task.S_EQ_NO}");
-                                var db = new SqlHelper<object>().GetInstance();
-
-                                var mstbyEqno = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO.Trim() == TN_Task.S_EQ_NO).ToList();
-                                //鍒嗘。浠诲姟鍥炴姤,浠诲姟1鍙洖鎶� 3 4 浠诲姟2鍙洖鎶�5 6 2
-
-                                TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url);
-                            }
-                            else
-                            {
-                                if (!string.IsNullOrEmpty(url))
-                                {
-                                    if (TN_Task.S_TYPE == "鐢垫2" && TN_Task.S_CODE == "2")
-                                    {
-
-                                        TaskProcess.WmsReportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url);
-
+                                        TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url, "ML");
                                     }
                                     else
                                     {
-                                        TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url);
+                                        LogHelper.Info("鍘熸潗鏂欎换鍔″洖鎶ワ紝鏍规嵁id=1鏈壘鍒板湴鍧�厤缃枃浠讹紝璇锋鏌ラ厤缃枃浠�);
+                                    }
+                                    break;
+                                case 3:
+                                    url = Settings.tableUrls.Find(a => a.id == 9);
+                                    if (url != null)
+                                    {
+                                        TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url, "YBK");
+                                    }
+                                    else
+                                    {
+                                        LogHelper.Info("鍘熸潗鏂欎换鍔″洖鎶ワ紝鏍规嵁id=9鏈壘鍒板湴鍧�厤缃枃浠讹紝璇锋鏌ラ厤缃枃浠�);
+                                    }
+                                    break;
+                                case 4:
+                                    url = Settings.tableUrls.Find(a => a.id == 11);
+                                    if (url != null)
+                                    {
+                                        Console.WriteLine($"鍘熸潗鏂欎换鍔″洖鎶TN_Task.S_EQ_NO}");
+                                        if (TN_Task.S_TYPE.Contains("鐢垫"))
+                                        {
+                                            if (TN_Task.S_TYPE == "鐢垫1")
+                                            {
+                                                if (TN_Task.S_CODE == "1" || TN_Task.S_CODE == "3" || TN_Task.S_CODE == "4")
+                                                {
+                                                    TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
+                                                }
+                                            }
+                                            else if (TN_Task.S_TYPE == "鐢垫2")
+                                            {
+                                                if (TN_Task.S_CODE == "5" || TN_Task.S_CODE == "6" || TN_Task.S_CODE == "2")
+                                                {
+                                                    TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
+                                                }
+                                            }
+                                        }
+                                        else
+                                        {
+
+                                            var db = new SqlHelper<object>().GetInstance();
+                                            var mstbyEqno = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO.Trim() == TN_Task.S_EQ_NO).ToList();
+                                            TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        LogHelper.Info("鍘熸潗鏂欎换鍔″洖鎶ワ紝鏍规嵁id=11鏈壘鍒板湴鍧�厤缃枃浠讹紝璇锋鏌ラ厤缃枃浠�);
+                                    }
+                                    break;
+                                case 6:
+                                    url = Settings.tableUrls.Find(a => a.id == 14);
+                                    if (url != null)
+                                    {
+                                        TaskProcess.WmsReportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
+                                    }
+                                    else
+                                    {
+                                        LogHelper.Info("鍘熸潗鏂欎换鍔″洖鎶ワ紝鏍规嵁id=14鏈壘鍒板湴鍧�厤缃枃浠讹紝璇锋鏌ラ厤缃枃浠�);
                                     }
 
-                                }
-                                else
-                                {
-                                    LogHelper.Info($"浠诲姟鍥炴姤锛氭湭鎵惧埌鍥炴姤鍦板潃锛岃妫�煡閰嶇疆鏂囦欢==>{JsonConvert.SerializeObject(Settings.tableUrls)}");
-                                }
+                                    break;
                             }
-
                         }
-
                     }
                     else
                     {
+                        var db = new SqlHelper<TaskAction>().GetInstance();
+                        var taskAction = db.Queryable<TaskAction>().Where(a => a.S_TASK_CODE == model.task_no && a.N_ACTION_CODE == model.state).First();
+                        if (taskAction == null)
+                        {
+                            WCSHelper.AddActionRecord(model.task_no, model.state, model.forklift_no, model.ext_data);
+                        }
+
                         //瀹夊叏璇锋眰绛�                         string url = "";
+                        string name = "";
                         if (TN_Task.Z_TYPE == 1)
                         {
                             url = Settings.tableUrls.Find(a => a.id == 2).url;
+                            name = "ML";
                         }
                         else if (TN_Task.Z_TYPE == 3)
                         {
                             url = Settings.tableUrls.Find(a => a.id == 10).url;
+                            name = "YBK";
                         }
                         else if (TN_Task.Z_TYPE == 4)
                         {
                             url = Settings.tableUrls.Find(a => a.id == 11).url;
+                            name = "YCL";
                         }
                         else
                         {
@@ -179,7 +204,7 @@
                         }
                         if (!string.IsNullOrEmpty(url))
                         {
-                            TaskProcess.OperateReq(model, url, TN_Task);
+                            TaskProcess.OperateReq(model, url, TN_Task, name);
                         }
                         else
                         {
@@ -191,13 +216,63 @@
         }
 
         /// <summary>
+        /// 鍗歌揣瀹屾垚濡傛灉鏈夌浉閭诲簱鍖虹殑鍥炲簱浠诲姟 鎺ㄩ�浠诲姟
+        /// </summary>
+        internal static void UpdateWait(WCSTask mst)
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            try
+            {
+                var area = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == mst.S_END_AREA).First();
+                if (area != null)
+                {
+                    if (!string.IsNullOrEmpty(area.S_GROUP))
+                    {
+                        int code = int.Parse(area.S_GROUP.Substring(1, 1));
+                        string areaName = area.S_GROUP.Substring(0, 1);
+                        string[] AreaList = new string[] { areaName + (code - 1), areaName + (code + 1), area.S_GROUP };
+                        LogHelper.Info($"浠诲姟{mst.S_CODE},缁堢偣鍖哄煙{JsonConvert.SerializeObject(AreaList)}");
+                        var AreasByGroup = db.Queryable<Area>().Where(a => AreaList.Contains(a.S_GROUP)).ToList();
+                        if (AreasByGroup.Count > 0)
+                        {
+                            var AreaCodes = AreasByGroup.Select(a => a.S_CODE).ToList();
+                            LogHelper.Info($"浠诲姟{mst.S_CODE},鏍规嵁缁堢偣鍖哄煙鑾峰彇搴撳尯缂栫爜锛歿JsonConvert.SerializeObject(AreaCodes)}");
+                            var updateMst = db.Queryable<WCSTask>().Where(a => AreaCodes.Contains(a.S_END_AREA.Trim()) && a.S_B_STATE == "绛夊緟鎺ㄩ�").OrderBy(a=>a.T_CREATE).First();
+                            updateMst.S_B_STATE = "绛夊緟";
+                            db.Updateable(updateMst).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand();
+                        }
+                        else
+                        {
+                            LogHelper.Info($"浠诲姟{mst.S_CODE},缁堢偣鍖哄煙{JsonConvert.SerializeObject(AreaList)},鏈壘鍒板浜庡垎缁勫簱鍖猴紝璇锋鏌ュ簱鍖鸿〃");
+                        }
+
+                    }
+                    else
+                    {
+                        LogHelper.Info($"浠诲姟{mst.S_CODE},缁堢偣搴撳尯{mst.S_END_AREA}鍒嗙粍涓虹┖");
+                    }
+                }
+                else
+                {
+                    LogHelper.Info($"浠诲姟{mst.S_CODE},缁堢偣搴撳尯{mst.S_END_AREA}鏈壘鍒板浜庡簱鍖猴紝璇锋鏌ュ簱鍖鸿〃");
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info($"UpdateWait Error锛歿ex}");
+
+            }
+
+        }
+
+        /// <summary>
         /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺
         /// </summary>
         internal static void Dispatch()
         {
             //鏌ヨ浠诲姟
             //鑾峰彇鎵�湁绛夊緟鐨勪换鍔�-
+            Console.WriteLine("寮�浠诲姟鎺ㄩ�");
             var list = WCSHelper.GetTaskListByState("绛夊緟");
 
             if (list.Count > 0)
@@ -212,11 +287,26 @@
                     }
 
                 });
-
-
             }
         }
 
+        /// <summary>
+        /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺
+        /// </summary>
+        internal static void DispatchWait()
+        {
+            //鏌ヨ浠诲姟
+            //鑾峰彇鎵�湁绛夊緟鐨勪换鍔�+            //  Console.WriteLine("寮�浠诲姟鎺ㄩ�");
+            var list = WCSHelper.GetTaskListByState("绛夊緟鎺ㄩ�");
 
+            if (list.Count > 0)
+            {
+                list.ForEach(task =>
+                {
+                    TaskProcess.WaitSend(task);
+                });
+            }
+        }
     }
 }

--
Gitblit v1.9.1