From aa9f03add1c43871c1fa7ad66d8122c8c8d161e0 Mon Sep 17 00:00:00 2001
From: pulg <plg@Haninfo>
Date: 星期六, 05 七月 2025 14:05:34 +0800
Subject: [PATCH] 1

---
 HH.WCS.QingXiNongfu/api/AgvController.cs     |    2 
 HH.WCS.QingXiNongfu/Program.cs               |    2 
 HH.WCS.QingXiNongfu/process/DeviceProcess.cs |   53 +++++++++++++++++
 HH.WCS.QingXiNongfu/core/TaskCore.cs         |    2 
 HH.WCS.QingXiNongfu/core/Monitor.cs          |   92 ++++++++++--------------------
 HH.WCS.QingXiNongfu/process/TaskProcess.cs   |    1 
 HH.WCS.QingXiNongfu/wms/WCSModel.cs          |    5 +
 7 files changed, 91 insertions(+), 66 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/Program.cs b/HH.WCS.QingXiNongfu/Program.cs
index 7a98936..b6a4111 100644
--- a/HH.WCS.QingXiNongfu/Program.cs
+++ b/HH.WCS.QingXiNongfu/Program.cs
@@ -760,7 +760,7 @@
                     GetTask(Monitor.AutoRunABD),
                     GetTask(Monitor.AutoRun13TSJ),
                     GetTask(Monitor.ZdzyABArea),
-                      GetTask(Monitor.Qchc),
+                     // GetTask(Monitor.Qchc),
                     
 
                     //GetTask(Monitor.AutoTK_PE),//鎻愭墸 - PE鑶滃嚭鍏ュ簱
diff --git a/HH.WCS.QingXiNongfu/api/AgvController.cs b/HH.WCS.QingXiNongfu/api/AgvController.cs
index ce3f676..9313d8e 100644
--- a/HH.WCS.QingXiNongfu/api/AgvController.cs
+++ b/HH.WCS.QingXiNongfu/api/AgvController.cs
@@ -25,7 +25,7 @@
 
         public ReturnResult AGVCallbackCancel(AgvTaskState model)
         {
-            LogHelper.Warn("AGVCallbackCancel Request锛� + JsonConvert.SerializeObject(model), "HosttoagvTask");
+            LogHelper.Info("AGVCallbackCancel Request锛� + JsonConvert.SerializeObject(model), "HosttoagvTask");
             //TaskCore.OperateTaskStatus(model);
             var R = NDCHelper.CancelS(model.No);
             //鎸囧畾浠诲姟宸茬粡瀹屾垚鎴栧彇娑堬紝鏃犳硶鍐嶅鐞�diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs
index 5189a8a..330f190 100644
--- a/HH.WCS.QingXiNongfu/core/Monitor.cs
+++ b/HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -1197,71 +1197,38 @@
                                             if (CDlist.Contains(EdnRarea))
                                             {
                                                 isCd = true;
-                                                //inlockLis = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && x.S_LOCK_STATE == "鍏ュ簱閿�).ToList();
-                                                //if (inlockLis.Count() > 0)
-                                                //{
-                                                //    inlock = inlockLis.FirstOrDefault();
-                                                //}
-                                                inlock = RGRow.FirstOrDefault();
-                                                if (inlock != null)
-                                                {
-                                                    //褰撳叆搴撶殑浠诲姟鑳芥斁婊′竴鎺掑苟涓旇繕鏈変綑鐨勬椂鍊�寮�浜屾帓
-                                                    //鍏堝垽鏂捣鐐规湁澶氬皯鐩稿悓鐨�鑳藉叆鐨勭墿鏂�-                                                    if (_cl.S_AREA_CODE == "YWLRGDD")//鍒ゆ柇璧风偣鏄惁鏄汉宸ュ爢鍙犲尯
-                                                    {
-                                                        inlockLis = RGRow.FindAll(e => e.S_AREA_CODE == EdnRarea && e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME).ToList();
-                                                        //鐒跺悗鍒ゆ柇浜哄伐鍫嗗彔鍖洪渶瑕佸叆搴撳灏戞墭鍚屽搧绉嶇墿鏂�startMum
-                                                        //璐т綅 鎵樼洏 鐗╂枡琛ㄨ仈鏌�-                                                        LogHelper.Info($"鏌ヨ捣鐐规湁澶氬皯鍚屽搧绉嶇殑鐗╂枡 寮�");
-                                                        var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
-                                                        ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == _clrel0.S_TYPE);
-                                                        var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList();
-                                                        LogHelper.Info($"璧风偣瑕佸叆CD鐨勬湁澶氬皯鎵樼洏鏁伴噺涓簕lstCanOutL.Count()}");
-                                                        //鍒ゆ柇缁堢偣鎺掕兘鍏ュ灏� 灏戜簬鍏ュ簱鎵樼洏鏁板垯澶氬紑涓�帓 EndMum 
-                                                        var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "鏃� && inlockLis.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList();
-                                                        LogHelper.Info($"缁堢偣CD鎺掓湁澶氬皯绌烘墭鑳藉叆{lstCanOutL.Count()}");
-                                                        if (lstCanOutL.Count <= EndMum.Count())
-                                                        {
-                                                            arloclist = arloclist.FindAll(x => inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList();
-                                                        }
-                                                        else
-                                                        {
-                                                            arloclist = arloclist.FindAll(x => !inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList();
-                                                            inlock = null;
-                                                        }
-                                                        LogHelper.Info($"鏌ヨ捣鐐规湁澶氬皯鍚屽搧绉嶇殑鐗╂枡 缁撴潫");
-                                                    }
-                                                    else
-                                                    {
-                                                        arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList();
-                                                    }
-                                                }
-                                                else
-                                                {
-                                                    if (_cl.S_AREA_CODE == "YWLRGDD")
-                                                    {
-                                                        //鏌ヨ鏄惁鏈夊凡缁忓叆浜嗙殑鎺�-                                                        var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
-                                                        ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == EdnRarea);
-                                                        var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList();
-                                                        LogHelper.Info($"缁堢偣鏈夌浉鍚岀殑鐗╂枡鐨勮揣浣嶆湁{lstCanOutL.Count()}");
 
-                                                        var ca1 = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
-                                                        ca1.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == EdnRarea);
-                                                        var lstCanOutLSta = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca1.ToExpression()).ToList();
-                                                        if (lstCanOutL.Count() > 0)
+                                                if (_cl.S_AREA_CODE == "YWLRGDD")
+                                                {
+                                                    //鏌ヨ鏄惁鏈夊凡缁忓叆浜嗙殑鎺�+                                                    var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
+                                                    ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == EdnRarea);
+                                                    var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList();
+                                                    LogHelper.Info($"缁堢偣鏈夌浉鍚岀殑鐗╂枡鐨勮揣浣嶆湁{lstCanOutL.Count()}");
+
+                                                    var ca1 = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
+                                                    ca1.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == EdnRarea);
+                                                    var lstCanOutLSta = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca1.ToExpression()).ToList();
+                                                    if (lstCanOutL.Count() > 0)
+                                                    {
+                                                        var ProRow = lstCanOutLSta.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList();
+                                                        //杩欎簺鎺掕兘鍏ョ殑璐т綅鏁�+                                                        var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "鏃� && lstCanOutL.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList();
+
+                                                        //鏌ヨ姣忎竴鎺掓渶澶х殑鍒�灏忎簬杩欎簺鍒楃殑 涓嶅厑璁稿叆
+                                                        foreach (var item in ProRow)
                                                         {
-                                                            var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "鏃� && lstCanOutL.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList();
-                                                            if (EndMum.Count() > 0)
+                                                            var MaxCol = lstCanOutLSta.FindAll(d => d.N_ROW == item.N_ROW).OrderByDescending(f => f.N_COL).First();
+                                                            EndMum.RemoveAll(f => f.N_ROW == item.N_ROW && f.N_COL < MaxCol.N_COL);
+                                                        }
+                                                        if (EndMum.Count() > 0)
+                                                        {
+                                                            if (lstCanOutL.Count() <= EndMum.Count())
                                                             {
-                                                                if (lstCanOutL.Count() <= EndMum.Count())
-                                                                {
-                                                                    arloclist = arloclist.FindAll(x => lstCanOutL.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList();
-                                                                }
+                                                                arloclist = arloclist.FindAll(x => lstCanOutL.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList();
                                                             }
                                                         }
                                                     }
-
                                                 }
                                             }
                                             foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenBy(x => x.Key))
@@ -1485,6 +1452,7 @@
                     }
                 }
                 var locsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鏍囩-") && x.S_TYPE == WJ_BQ.RK_BBHJQ);
+                var SblocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鏍囩-") && x.S_NOTE.Contains("姘�) && x.S_TYPE == WJ_BQ.RK_BBHJQ);
                 var SlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鏍囩-") && x.S_TYPE == SX_BQ.RK_BBHJQ);
                 var TKlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鎻愭墸-"));
                 var PElocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鏀剁缉鑶�"));
@@ -1513,7 +1481,6 @@
                             // 鏍囩鍑哄簱銆傝揣鏋剁洿鎺ュ嚭鍒扮嚎杈�                             YwlBQ_CreWJOutOrder();
                         }
-
                         // 鏍囩鏃犺弻閫�簱銆�
                         YwlBQ_CreWJTK();
                     }
@@ -1531,7 +1498,8 @@
                         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(locsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
+                            //姘存爣鍏ュ簱
+                            YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
                         }
                         if (yuworders.Any())
                         {
@@ -1562,7 +1530,7 @@
                         if (LocLock(SX_BQ.RK_BBHJQ))
                         {
                             //姘寸嚎鏍囩鍏ュ簱
-                            YwlBQ_CreInwork(SlocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
+                            YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
                         }
                         if (tklist.Count() > 0)
                         {
diff --git a/HH.WCS.QingXiNongfu/core/TaskCore.cs b/HH.WCS.QingXiNongfu/core/TaskCore.cs
index 093bc4d..6035cc5 100644
--- a/HH.WCS.QingXiNongfu/core/TaskCore.cs
+++ b/HH.WCS.QingXiNongfu/core/TaskCore.cs
@@ -98,7 +98,7 @@
                                     TaskHelper.BeEnd(wmsTask);
                                 break;
                             case 9://寮哄埗鍙栨秷  //璧风偣瑙g粦閿侀噴鏀�缁堢偣閿侀噴鏀�-                                var R = NDCHelper.CancelS(model.No);
+                                   // var R = NDCHelper.CancelS(model.No);
                                 r = TaskProcess.OperateStatus(wmsTask, 9);
                                 if (r.ResultCode != -1)
                                 {
diff --git a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
index 640d998..65da30a 100644
--- a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
+++ b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
@@ -1733,9 +1733,42 @@
                鐘舵�2	閫佺┖瀹屾垚涔嬪悗涓虹姸鎬�
                鐘舵�3	婊℃墭鍙栬蛋锛岄�绌轰箣鍓嶄负鐘舵�3锛屽紑鏈洪粯璁ょ姸鎬佷篃涓虹姸鎬�
            */
+            //3F 00 12 22 0D 0A--鏃犱换鍔′俊鍙�+            //3F 00 11 22 0D 0A--A鍙e伐浣滀俊鍙�+            //3F 00 12 21 0D 0A--B鍙d俊鍙�+            //3F 00 11 21 0D 0A--A銆丅鍙e伐浣滀俊鍙�+
+            //A鍙e浣嶄俊鍙�- 3F 00 10 0D 0A
+            //B鍙e浣嶄俊鍙�- 3F 00 20 0D 0A
 
             if (data.Length == 4)
             {
+                //if (data == "1122")//A鍙e伐浣滀俊鍙�+                //{
+                //    if (BottlePEMInfoFullTwo(plc, plc.location[0]))
+                //    {
+
+                //    }
+                //}
+                //else if (data == "1221")//B鍙e伐浣滀俊鍙�+                //{
+                //    if (BottlePEMInfoFullTwo(plc, plc.location[1]))
+                //    {
+
+                //    }
+                //}
+                //else if (data == "1121")//B鍙e伐浣滀俊鍙�+                //{
+                //    if (BottlePEMInfoFullTwo(plc, plc.location[0]))
+                //    {
+
+                //    }
+                //    if (BottlePEMInfoFullTwo(plc, plc.location[1]))
+                //    {
+
+                //    }
+                //}
+
                 if (data.Substring(1, 1) == "1")
                 {
                     if (BottlePEMInfoFull(plc, plc.location[0]))
@@ -1964,6 +1997,26 @@
                 }
             }
         }
+        static bool BottlePEMInfoFullTwo(Settings.deviceInfo plc, string location)
+        {
+            try
+            {
+                if (location != "")
+                {
+                    var workOrder = WCSHelper.GetWorkOrder(plc.deviceName);
+                    if (workOrder == null)
+                    {
+                        LogHelper.Info(plc.deviceName + "娌℃湁銆愭墽琛屼腑銆戠殑宸ュ崟");
+                        return false;
+                    }
+                }
+                return false;
+            }
+            catch (Exception ex)
+            {
+                return false;
+            }
+        }
 
 
         //鐡跺澂婊″叆搴�diff --git a/HH.WCS.QingXiNongfu/process/TaskProcess.cs b/HH.WCS.QingXiNongfu/process/TaskProcess.cs
index 48f649f..5b96932 100644
--- a/HH.WCS.QingXiNongfu/process/TaskProcess.cs
+++ b/HH.WCS.QingXiNongfu/process/TaskProcess.cs
@@ -399,7 +399,6 @@
             //new List<string> { "鎴愬搧婊℃-鍏ュ簱", "" }
             if (state == 6 || state == 5)
             {
-
                 LogHelper.Info($"浠诲姟绫诲瀷锛歿mst.S_TYPE}- 鍔ㄤ綔锛歿state}. 鏄惁5绠�锛焮mst.S_TYPE.Contains("鎴愬搧婊℃") || mst.S_TYPE.Contains("澶囪揣")} ");
                 if (mst.S_TYPE.Contains("澶囪揣"))
                 {
diff --git a/HH.WCS.QingXiNongfu/wms/WCSModel.cs b/HH.WCS.QingXiNongfu/wms/WCSModel.cs
index 7ce11e3..29531c3 100644
--- a/HH.WCS.QingXiNongfu/wms/WCSModel.cs
+++ b/HH.WCS.QingXiNongfu/wms/WCSModel.cs
@@ -285,6 +285,11 @@
         public string S_CJ_NAME { get; set; }
     }
 
+    [SuGG("鍗婃垚鍝佸尯鍩熻〃")]
+    public class BcpQyOrder : BaseModel
+    {
+    }
+
     [SuGG("鍘傚鏃堕棿琛�)]
     public class CjTimeOrder : BaseModel
     {

--
Gitblit v1.9.1