From 8741f7e84dc7c0a1150c92758ebb2cf4b7d18c73 Mon Sep 17 00:00:00 2001
From: pulg <plg@Haninfo>
Date: 星期五, 18 七月 2025 14:49:30 +0800
Subject: [PATCH] 1

---
 HH.WCS.QingXiNongfu/wms/TaskHelper.cs        |   16 ++++++++
 HH.WCS.QingXiNongfu/process/DeviceProcess.cs |   19 ++++++++-
 HH.WCS.QingXiNongfu/core/Monitor.cs          |   62 +++++++++++++++++--------------
 HH.WCS.QingXiNongfu/process/TaskProcess.cs   |   17 +++++---
 4 files changed, 76 insertions(+), 38 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs
index 29f31af..e578a4a 100644
--- a/HH.WCS.QingXiNongfu/core/Monitor.cs
+++ b/HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -1470,11 +1470,10 @@
                 {
                     // var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "鏃犺弻鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList();
                     var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "鏃犺弻鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0).OrderBy(x => x.TagOverTime).ToList();
-                    if (LocLock(WJ_BQ.RK_BBHJQ))
-                    {
-                        //鏍囩鍏ュ簱
-                        YwlBQ_CreInwork(locsFirst, WJ_BQ.RK_BQDDQ, WJ_BQ.RK_BBHJQ);
-                    }
+
+                    //鏍囩鍏ュ簱
+                    YwlBQ_CreInwork(locsFirst, WJ_BQ.RK_BQDDQ, WJ_BQ.RK_BBHJQ);
+
                     if (yuworders.Any())
                     {
                         LogHelper.Info($" 鏃犺弻鍑哄簱  宸ュ崟寮�惎涓�");
@@ -1494,11 +1493,10 @@
                 {
                     // var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "鏃犺弻鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList();
                     var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "涓按鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0).OrderBy(x => x.TagOverTime).ToList();
-                    if (LocLock(SX_BQ.RK_BBHJQ))
-                    {
-                        //姘存爣鍏ュ簱
-                        YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
-                    }
+
+                    //姘存爣鍏ュ簱
+                    YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
+
                     if (yuworders.Any())
                     {
                         LogHelper.Info($" 鏃犺弻鍑哄簱  宸ュ崟寮�惎涓�");
@@ -2001,18 +1999,26 @@
                             var cir = cirs.OrderByDescending(x => x.T_CREATE).FirstOrDefault();
                             if (CNTR.FirstOrDefault().S_TYPE == BQ_PRA.B)
                             {
-                                var s_type = ContainerHelper.GetCntrItemRel(CNTR.FirstOrDefault().S_CNTR_CODE).FirstOrDefault()?.N_BQ_TRAY_TYPE ?? 0;
-                                Location Endbit = null;
-                                //if (area == area/* WJ_BQ.RK_BQJBQ*/)
-                                //{
-                                var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, false, false);
-                                var Type = s_type == .5 ? 1 : (s_type == .75 ? 2 : 3);
-                                Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == Type).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
-                                if (Endbit != null)
+                                if (cirs.FirstOrDefault().S_ITEM_NAME.Contains("绌烘"))//绌烘 閫�埌绌烘缂撳瓨鍖�                                 {
-                                    var re = TaskProcess.CreateTransport("", lastfull.S_LOC_CODE.Trim(), Endbit.S_LOC_CODE, "鏍囩鍙夎繍-绾胯竟鏍囩閫�簱", CNTR.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, 1, 62);
-                                    LogHelper.CSucessLog($"from {lastfull.S_LOC_CODE} to {Endbit.S_LOC_CODE} 鏍囩鍙夎繍-鎺ラ┏鏍囩閫�簱 锛屽垱寤簕re}");
+                                    var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, false, false);
                                 }
+                                else
+                                {
+                                    var s_type = ContainerHelper.GetCntrItemRel(CNTR.FirstOrDefault().S_CNTR_CODE).FirstOrDefault()?.N_BQ_TRAY_TYPE ?? 0;
+                                    Location Endbit = null;
+                                    //if (area == area/* WJ_BQ.RK_BQJBQ*/)
+                                    //{
+                                    var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, false, false);
+                                    var Type = s_type == .5 ? 1 : (s_type == .75 ? 2 : 3);
+                                    Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == Type).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
+                                    if (Endbit != null)
+                                    {
+                                        var re = TaskProcess.CreateTransport("", lastfull.S_LOC_CODE.Trim(), Endbit.S_LOC_CODE, "鏍囩鍙夎繍-绾胯竟鏍囩閫�簱", CNTR.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, 1, 62);
+                                        LogHelper.CSucessLog($"from {lastfull.S_LOC_CODE} to {Endbit.S_LOC_CODE} 鏍囩鍙夎繍-鎺ラ┏鏍囩閫�簱 锛屽垱寤簕re}");
+                                    }
+                                }
+
                                 // }
 
                                 //else
@@ -4573,7 +4579,7 @@
                 if (PLC.deviceName.Contains("T2"))
                     pline = "T2鎻愬崌鏈�绾哥";
 
-                var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "鎵ц涓�);
+                var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).ToList();
                 bool can = false;
                 if (orkOrd.Any())
                 {
@@ -4586,10 +4592,10 @@
                     can = true;
                 }
 
-                orkOrd = orkOrd.FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10);
+                orkOrd = orkOrd.FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).ToList();
                 ReadCCK = can;
                 if (orkOrd.Any())
-                    foreach (var od in orkOrd.OrderBy(x => x.TagOverTime).ThenBy(x => x.OutNum))
+                    foreach (var od in orkOrd.OrderBy(x => x.TagOverTime).ThenBy(x => x.OutNum).ToList())
                     //foreach (var od in od2.ToList())
                     {
                         var l2 = new List<string>() { "YWLAQWJ", "YWLBQWJ" };//, "YWLCQSX", "YWLDQWJ" };
@@ -4778,11 +4784,11 @@
                                         var db = new SqlHelper<object>().GetInstance();
                                         od.TagOverTime = DateTime.Now;
                                         od.TagOver = StartBit.S_AREA_CODE;
-                                        if (od.OutNum >= StartBit.N_CURRENT_NUM)
-                                        {
-                                            od.OutNum = od.OutNum - StartBit.N_CURRENT_NUM;
-                                        }
-                                        var ggf = db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver, it.OutNum }).ExecuteCommand();
+                                        //if (od.OutNum >= StartBit.N_CURRENT_NUM)
+                                        //{
+                                        //    od.OutNum = od.OutNum - StartBit.N_CURRENT_NUM;
+                                        //}
+                                        var ggf = db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver }).ExecuteCommand();
                                         LogHelper.Info($"涓婃彁鍗囨満浠诲姟 鏇存柊宸ュ崟鐨勬椂闂村奖鍝嶈鏁� {ggf}");
 
                                         // var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍑哄簱閿�, S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW };
diff --git a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
index f85d37e..67f3ffa 100644
--- a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
+++ b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
@@ -334,7 +334,7 @@
                             }
                             else
                             {
-                                if (DateTime.Now.Subtract(_clrel0.T_CREATE).TotalSeconds < 3 || !string.IsNullOrEmpty(_clrel0.S_TYPE))
+                                if (!string.IsNullOrEmpty(_clrel0.S_TYPE))
                                     goto ballll;
                             }
                         }
@@ -2312,7 +2312,7 @@
                         }
 
                         //鑾峰彇鎸囧畾搴撳尯 鎸囧畾鎺�婊$殑璐т綅 鐒跺悗鎺掗櫎 姣旀渶澶у垪杩樺皬鐨勭┖璐т綅
-                        var Mhw = locationInLock.FindAll(e => e.N_CURRENT_NUM > 0).ToList();
+                        var Mhw = locationInLock.FindAll(e => e.N_CURRENT_NUM > 0 && e.S_LOCK_STATE == "鏃�).ToList();
                         if (Mhw.Count() > 0)
                         {
                             var RowLis = Mhw.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList();
@@ -4219,6 +4219,13 @@
                     }
                     if (hojs.N_CURRENT_NUM == 0)//涓婃墭鐩�鍚﹀垯涓嬫墭鐩�                     {
+                        List<string> TaskState = new List<string>() { "瀹屾垚", "鍙栨秷" };
+                        var TaskListNum = LocationHelper.GetList<WMSTask>(x => x.S_START_LOC == location && !TaskState.Contains(x.S_B_STATE));
+                        if (TaskListNum.Count() > 0)
+                        {
+                            throw new Exception("鍙兘鐢熸垚涓�釜浠诲姟 杩涘嚭");
+                        }
+
                         //涓婃墭鐩�婊℃墭
                         var jcjykk = bcpList.FindAll(e => e.S_CNTR_TYPE == "婊℃墭").OrderByDescending(g => g.N_PRI).ToList();
                         var AreaList = jcjykk.Select(e => e.S_AREA_CODE).Distinct().ToList();
@@ -4277,11 +4284,17 @@
                     {
                         var time = LocationHelper.GetT_FULL_TIME(location);
                         LogHelper.Info(location + "锛氭墭鐩樻斁缃椂闂�(" + time + ") 璐т綅鎵樼洏鏁伴噺(" + hojs.N_CURRENT_NUM + ")");
-                        if (DateTime.Now.Subtract(time ?? DateTime.Now).TotalMinutes < 1)
+                        if (DateTime.Now.Subtract(time ?? DateTime.Now).TotalSeconds < 10)
                         {
                             PlcHelper.SendHex(plc.address, "3F00110D0A");
                             return false;
                         }
+                        List<string> TaskState = new List<string>() { "瀹屾垚", "鍙栨秷", "鎺ㄩ�寮傚父" };
+                        var TaskListNum = LocationHelper.GetList<WMSTask>(x => x.S_END_LOC == location && !TaskState.Contains(x.S_B_STATE));
+                        if (TaskListNum.Count() > 0)
+                        {
+                            throw new Exception("鍙兘鐢熸垚涓�釜浠诲姟 杩涘嚭");
+                        }
                         LocCntrRel _clrel = LocationHelper.GetLocCntrRel(hojs.S_LOC_CODE).FirstOrDefault();
                         //涓嬫墭鐩�绌烘
                         var jcjykk = bcpList.FindAll(e => e.S_CNTR_TYPE == "绌烘墭").OrderByDescending(g => g.N_PRI).ToList();
diff --git a/HH.WCS.QingXiNongfu/process/TaskProcess.cs b/HH.WCS.QingXiNongfu/process/TaskProcess.cs
index a058a04..1382812 100644
--- a/HH.WCS.QingXiNongfu/process/TaskProcess.cs
+++ b/HH.WCS.QingXiNongfu/process/TaskProcess.cs
@@ -433,9 +433,11 @@
                     && mst.S_TYPE.Trim() != "闈掓邯绾哥鎼繍鐗╂枡"
                     && !mst.S_TYPE.Trim().Contains("鑷敱鐐瑰鐐�))
                 {
-                    CacheBitUpdate(mst, load: false, mst.S_NOTE);
+                    if (mst.S_END_LOC != "YWLT1TSJ")
+                    {
+                        CacheBitUpdate(mst, load: false, mst.S_NOTE);
+                    }
                 }
-
 
                 if (mst.S_TYPE.Trim().Contains("鎴愬搧-绌烘墭涓婄嚎"))
                 {
@@ -479,7 +481,8 @@
                     {
                         // to.AlQty += mst.S_CNTRS.Split(',').Length;// mst.S_CNTRS.Substring(1).Split('v').Length;
                         to.OutNum -= mst.S_CNTRS.Split(',').Length;
-                        db.Updateable(to).UpdateColumns(it => new { it.OutNum }).ExecuteCommand();
+                        var ggi = db.Updateable(to).UpdateColumns(it => new { it.OutNum }).ExecuteCommand();
+                        LogHelper.Info($"鏇存柊 鎻愬崌鏈轰笂鏂欏伐鍗曡〃鏁伴噺涓�{to.OutNum} 褰卞搷琛屾暟涓�{ggi}");
                     }
                 }
 
@@ -1353,18 +1356,18 @@
                         else return false;
                     }
                 }
-                else if (taskType.Contains("鐡跺澂缈绘枟鏈虹┖鎵�) && mst.S_END_LAREA == "QXPPXXQ")
+                else if (taskType.Contains("鐡跺澂缈绘枟鏈虹┖鎵�))
                 {
                     start = LocationHelper.GetAgvSite(mst.S_START_LOC);
                     end = LocationHelper.GetAgvSite(mst.S_END_LOC, "2");
-                    LogHelper.Info($"鐡跺澂鏈轰换鍔�璧风偣缁堢偣瀵瑰簲鐨刟gv绔欑偣 start {start} end {end}  浠诲姟:" + mst.S_TASK_NO);
+                    LogHelper.Info($"鐡跺澂鏈虹炕鏂楁満浠诲姟 璧风偣缁堢偣瀵瑰簲鐨刟gv绔欑偣 start {start} end {end}  浠诲姟:" + mst.S_TASK_NO);
 
                 }
-                else if (taskType.Contains("鐡跺澂缈绘枟鏈烘弧鎵�) && mst.S_START_LAREA == "QXPPXXQ")
+                else if (taskType.Contains("鐡跺澂缈绘枟鏈烘弧鎵�))
                 {
                     start = LocationHelper.GetAgvSite(mst.S_START_LOC, "2");
                     end = LocationHelper.GetAgvSite(mst.S_END_LOC);
-                    LogHelper.Info($"鐡跺澂鏈轰换鍔�璧风偣缁堢偣瀵瑰簲鐨刟gv绔欑偣 start {start} end {end}  浠诲姟:" + mst.S_TASK_NO);
+                    LogHelper.Info($"鐡跺澂鏈虹炕鏂楁満浠诲姟 璧风偣缁堢偣瀵瑰簲鐨刟gv绔欑偣 start {start} end {end}  浠诲姟:" + mst.S_TASK_NO);
                 }
                 //else if (taskType.Contains("鏀剁缉鑶滃弶杩�鍏ュ簱") || taskType.Contains("鏀剁缉鑶滃弶杩�鍏ュ簱") || taskType.Contains("鏀剁缉鑶滃弶杩�璐ф灦鍑烘彁鍗囨満"))
                 //{
diff --git a/HH.WCS.QingXiNongfu/wms/TaskHelper.cs b/HH.WCS.QingXiNongfu/wms/TaskHelper.cs
index fb28716..cae6c27 100644
--- a/HH.WCS.QingXiNongfu/wms/TaskHelper.cs
+++ b/HH.WCS.QingXiNongfu/wms/TaskHelper.cs
@@ -1,4 +1,5 @@
 锘縰sing HH.WCS.QingXigongchang.dispatch;
+using HH.WCS.QingXigongchang.process;
 using HH.WCS.QingXigongchang.util;
 using Newtonsoft.Json;
 using SqlSugar;
@@ -241,6 +242,21 @@
         {
             var db = new SqlHelper<object>().GetInstance();
 
+            if (task.S_START_LOC == "YWLT1TSJCD-1" && task.N_START_LAYER == 2)
+            {
+                var _clrel = LocationHelper.GetLocCntrRel(task.S_START_LOC);
+
+                if (_clrel != null)
+                {
+                    var sta = db.Queryable<Location>().Where(l => l.S_LOC_CODE == task.S_START_LOC).First();
+                    if (sta.N_CURRENT_NUM > 0 && sta.S_LOCK_STATE == "鏃�)
+                    {
+                        var sign = Settings.GetTimeStamp();
+                        var res = TaskProcess.CreateTransport(sign, task.S_START_LOC, task.S_END_LOC, "鍘熺墿鏂欐惉杩�绾哥", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sta.N_CURRENT_NUM, 1, 1, 60);
+                    }
+                }
+            }
+
             if (task.S_END_LAREA == "YWLYLTKQ" || task.S_END_LAREA == "YWLTKKTQ")
             {
                 //鏌ヨ鍑哄簱閿乊WLWJJB

--
Gitblit v1.9.1