From f317e966ce0872e04d1455305845c3e19fb4a532 Mon Sep 17 00:00:00 2001
From: czw <selecti@yeah.net>
Date: 星期日, 06 七月 2025 12:00:53 +0800
Subject: [PATCH] Merge branch 'master' of http://121.37.118.194:8000/r/WMSPrjInstance/HH-0014_NongFu_QingXi

---
 HH.WCS.QingXiNongfu/core/Monitor.cs |  114 ++++++++++++++++++++------------------------------------
 1 files changed, 41 insertions(+), 73 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs
index 5189a8a..569c8a8 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)
                         {
@@ -1784,8 +1752,8 @@
                                         var cirs = ContainerHelper.GetCntrItemRel(CNTR.FirstOrDefault().S_CNTR_CODE);
                                         if (!cirs.Any()) continue;
                                         cir = cirs.OrderByDescending(x => x.T_CREATE).FirstOrDefault();
-                                        LogHelper.Info($"鏀剁缉鑶�鍑哄簱锛亄item.Key}鎺�[{cir.S_ITEM_CODE}-{order.SQL_ItemCode}]   [{cir.S_ITEM_NAME}-{order.SQL_ItemName}]  [{cir.S_CJ_NAME}-{order.S_CJ_NAME}]  {(cir.S_ITEM_CODE == order.SQL_ItemCode && cir.S_ITEM_NAME == order.SQL_ItemName && cir.S_CJ_NAME == order.S_CJ_NAME)}");
-                                        if (cir.S_ITEM_CODE == order.SQL_ItemCode && cir.S_ITEM_NAME == order.SQL_ItemName && cir.S_CJ_NAME == order.S_CJ_NAME)
+                                        LogHelper.Info($"鏀剁缉鑶�鍑哄簱锛亄item.Key}鎺�[{cir.S_ITEM_CODE}-{order.SQL_ItemCode}]   [{cir.S_ITEM_NAME}-{order.SQL_ItemName}]  [{cir.S_CJ_NAME}-{order.S_CJ_NAME}]  {(cir.S_ITEM_CODE == order.SQL_ItemCode && cir.S_ITEM_NAME == order.SQL_ItemName)}");
+                                        if (cir.S_ITEM_CODE == order.SQL_ItemCode && cir.S_ITEM_NAME == order.SQL_ItemName)
                                         {
                                             //plg 2025骞�鏈�3鏃�09:08:10 
                                             Temp = new locCntItem
@@ -1829,15 +1797,15 @@
                                         {
                                             var re = TaskProcess.CreateTransport("", tagLoc.S_LOC_CODE.Trim(), loc.S_LOC_CODE, "鏀剁缉鑶滃弶杩�璐ф灦鍑烘彁鍗囨満", new List<string> { tagLoc.S_CNTR_CODE }, StartBit.N_CURRENT_NUM, 1, 1, 62);
                                             LogHelper.CSucessLog($"from {tagLoc.S_LOC_CODE} to {loc.S_LOC_CODE} 鏀剁缉鑶滃弶杩�璐ф灦鍑烘彁鍗囨満 锛屽垱寤簕re} ");
-                                            if (re)
-                                            {
-                                                oto.Add(oic);
-                                                if (outlock == null)
-                                                {
-                                                    var r = new RowLock { S_LOCK_SRC = (StartBit.S_NOTE /*+ StartBit.HalfOrFull*/), T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍑哄簱閿�, S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW };
-                                                    db.Insertable(r).ExecuteCommand();
-                                                }
-                                            }
+                                            //if (re)
+                                            //{
+                                            //    oto.Add(oic);
+                                            //    if (outlock == null)
+                                            //    {
+                                            //        var r = new RowLock { S_LOCK_SRC = (StartBit.S_NOTE /*+ StartBit.HalfOrFull*/), T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍑哄簱閿�, S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW };
+                                            //        db.Insertable(r).ExecuteCommand();
+                                            //    }
+                                            //}
                                         }
                                     }
                                 }

--
Gitblit v1.9.1