From 0926aaf5b0272133bb5a3d139040fa8867405de3 Mon Sep 17 00:00:00 2001
From: 杨张扬 <634643841@qq.com>
Date: 星期五, 06 六月 2025 17:30:08 +0800
Subject: [PATCH] 搬送流程增加终点货品检查逻辑

---
 core/Monitor.cs |   45 ++++++++++++++++++++++++++++++++-------------
 1 files changed, 32 insertions(+), 13 deletions(-)

diff --git a/core/Monitor.cs b/core/Monitor.cs
index ac0b0fb..6a604c2 100644
--- a/core/Monitor.cs
+++ b/core/Monitor.cs
@@ -133,7 +133,10 @@
                                             else
                                             {
                                                 var endLoc = db.Queryable<TN_Location>().
-                                                                           Where(c => c.S_AREA_CODE == Settings.Areas[1] && c.S_LOCK_STATE == "鏃� && c.N_LOCK_STATE == 0 && c.N_CURRENT_NUM == 0 && c.C_ENABLE == "Y").
+                                                                           Where(c => c.S_AREA_CODE == Settings.Areas[1] && c.S_LOCK_STATE == "鏃� 
+                                                                           && c.N_LOCK_STATE == 0 && c.N_CURRENT_NUM == 0
+                                                                           && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == c.S_CODE).NotAny()//涓嶈兘鏈夎揣
+                                                                           && c.C_ENABLE == "Y").
                                                                            OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//鏌ヨ鍚堥�鐨勭粓鐐硅揣浣嶏紝鐩存帴鍒ゆ柇褰撳墠鏁伴噺涓�鍗冲彲
 
                                                 if (endLoc != null)
@@ -179,7 +182,7 @@
 
                                                     endLoc.N_LOCK_STATE = 1;
                                                     endLoc.S_LOCK_STATE = "鍏ュ簱閿�;
-                                                    startLoc.T_MODIFY = System.DateTime.Now;
+                                                    endLoc.T_MODIFY = System.DateTime.Now;
 
                                                     using (var tran = db.Ado.UseTran())
                                                     {
@@ -278,7 +281,7 @@
                             return;
                         }
 
-                        var endLoc = db.Queryable<TN_Location>().
+                        var endLoc = db.Queryable<TN_Location>().//绌烘墭涓婄嚎鐨勭粓鐐逛笉鏍¢獙鏄惁鏈夎揣
                         First(a => a.S_CODE == endPoint.PointIn && a.S_LOCK_STATE == "鏃� && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y");
 
                         if (endLoc == null)
@@ -366,8 +369,9 @@
                 if (startLoc_1 != null)
                 {
                     var endLoc_1 = db.Queryable<TN_Location>()
-                        .First(o => o.S_AREA_CODE == Settings.Areas[12] &&
-                        o.N_CURRENT_NUM == 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�);
+                        .Where(o => o.S_AREA_CODE == Settings.Areas[12]
+                         && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == o.S_CODE).NotAny()//涓嶈兘鏈夎揣
+                        && o.N_CURRENT_NUM == 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�).First();
 
                     if (endLoc_1 != null)
                     {
@@ -399,8 +403,9 @@
                 if (startLoc_2 != null)
                 {
                     var endLoc_2 = db.Queryable<TN_Location>()
-                     .First(o => o.S_AREA_CODE == Settings.Areas[2] &&
-                     o.N_CURRENT_NUM == 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�);
+                     .Where(o => o.S_AREA_CODE == Settings.Areas[2]
+                      && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == o.S_CODE).NotAny()//涓嶈兘鏈夎揣
+                     && o.N_CURRENT_NUM == 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�).First();
 
                     if (endLoc_2 != null)
                     {
@@ -443,8 +448,9 @@
                 if (startLoc_3 != null)
                 {
                     var endLoc_3 = db.Queryable<TN_Location>()
-                     .First(o => o.S_AREA_CODE == Settings.Areas[11] &&
-                     o.N_CURRENT_NUM == 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�);
+                     .Where(o => o.S_AREA_CODE == Settings.Areas[11]
+                     && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == o.S_CODE).NotAny()//涓嶈兘鏈夎揣
+                     && o.N_CURRENT_NUM == 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�).First();
 
                     if (endLoc_3 != null)
                     {
@@ -534,7 +540,7 @@
                 if (targetInM != null)//妫�祴鍑哄凡杩囨湡鐨勮揣鍝�                 {
                     targetInM.ITEMSTATE = "杩囨湡";
-                    targetInM.EXPIRATION_DAY = 0;
+                    targetInM.EXPIRATION_DAY = "0";
                     db.Updateable<TN_InventoryM>(targetInM).UpdateColumns(it => new { it.ITEMSTATE }).ExecuteCommand();
 
                     var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetInM.S_ID);
@@ -548,10 +554,16 @@
 
                 if (targetInM != null)//妫�祴鍑哄揩杩囨湡鐨勮揣鍝�                 {
-                    targetInM.EXPIRATION_DAY = SpecHelper.CalculateDaysDifference(System.DateTime.Now,targetInM.EXPIRATION);
+                    targetInM.EXPIRATION_DAY = SpecHelper.CalculateDaysDifference(System.DateTime.Now,targetInM.EXPIRATION).ToString();
                     db.Updateable<TN_InventoryM>(targetInM).UpdateColumns(it => new { it.EXPIRATION_DAY }).ExecuteCommand();
                 }
 
+                targetInM = db.Queryable<TN_InventoryM>().First(a => Convert.ToInt32(a.EXPIRATION_DAY) > 0 && a.ITEMSTATE == "杩囨湡");//宸茶繃鏈熺殑璐у搧锛屽墿浣欏ぉ鏁版敼涓�
+                if (targetInM != null)
+                {
+                    targetInM.EXPIRATION_DAY = "0";
+                    db.Updateable<TN_InventoryM>(targetInM).UpdateColumns(it => new { it.EXPIRATION_DAY }).ExecuteCommand();
+                }
 
                 //  鍚屾 TN_DayProDetail
                 var curDay = System.DateTime.Now.Date;
@@ -791,7 +803,11 @@
                 }
 
 
-                var endLoc = db.Queryable<TN_Location>().First(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.S_AREA_CODE == Settings.Areas[7]);
+                var endLoc = db.Queryable<TN_Location>()
+                    .Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃�
+                    && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == a.S_CODE).NotAny()//涓嶈兘鏈夎揣
+                    && a.S_AREA_CODE == Settings.Areas[7]).First();
+
                 if (endLoc == null)
                 {
                     LogHelper.Info($"鏈壘鍒板悎閫傜殑缁堢偣璐т綅锛岃姹俛.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == 鏃�&& a.S_AREA_CODE == Settings.Areas[7]");
@@ -852,7 +868,10 @@
                 }
 
                 var endLoc = db.Queryable<TN_Location>().
-                    Where(a => a.S_AREA_CODE == Settings.Areas[4] && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0).
+                    Where(a => a.S_AREA_CODE == Settings.Areas[4] && a.N_LOCK_STATE == 0 
+                    && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0
+                    && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == a.S_CODE).NotAny()
+                    ).
                     OrderBy(a => a.N_CURRENT_NUM, OrderByType.Asc).
                     First();
 

--
Gitblit v1.9.1