From c3d2666ddfe09fd79ccff9782e4cbba6cab35547 Mon Sep 17 00:00:00 2001
From: 杨张扬 <634643841@qq.com>
Date: 星期二, 10 六月 2025 18:03:17 +0800
Subject: [PATCH] 库存管理的过期天数要改为过期小时、取消的任务不计入库存管理

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

diff --git a/core/Monitor.cs b/core/Monitor.cs
index 43287a4..7ac23a4 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)
                     {
@@ -528,6 +534,7 @@
                     db.Updateable<TN_InventoryM>(targetInM).UpdateColumns(it => new { it.ITEMSTATE }).ExecuteCommand();
                 }
 
+              
                 targetInM = db.Queryable<TN_InventoryM>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID).
                    Where((o, i) => System.DateTime.Now >= o.EXPIRATION && i.S_ITEM_STATE == "寰呮" && i.N_ITEM_STATE == 1).First();
 
@@ -557,6 +564,13 @@
                 {
                     targetInM.EXPIRATION_DAY = "0";
                     db.Updateable<TN_InventoryM>(targetInM).UpdateColumns(it => new { it.EXPIRATION_DAY }).ExecuteCommand();
+                }
+
+                var targetInM_De = db.Queryable<TN_InventoryM>().LeftJoin<TN_Task>((o, i) => o.RFID == i.S_CNTR_CODE).
+                  Where((o, i) => i.N_B_STATE == 4 || i.S_B_STATE == "閿欒").ToList();//閿欒鐨勪换鍔″垹闄ゅ搴旂殑搴撳瓨淇℃伅
+                if (targetInM_De.Count>0)
+                {
+                    db.Deleteable<TN_InventoryM>(targetInM_De).ExecuteCommand();
                 }
 
                 //  鍚屾 TN_DayProDetail
@@ -797,7 +811,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]");
@@ -858,7 +876,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