From c3202f7d43746c084066d88e58913d85c0173d88 Mon Sep 17 00:00:00 2001
From: 杨张扬 <634643841@qq.com>
Date: 星期五, 13 六月 2025 17:14:42 +0800
Subject: [PATCH] 双钱-需求变更,增加复检合格物料自动搬送流程

---
 models/TN_CG_Detail.cs |    4 +-
 Program.cs             |    2 +
 wms/LocationHelper.cs  |    6 +-
 core/Monitor.cs        |   78 +++++++++++++++++++++++++++++++++++++++
 api/ApiHelper.cs       |   12 +++---
 api/ApiModel.cs        |    4 +-
 6 files changed, 93 insertions(+), 13 deletions(-)

diff --git a/Program.cs b/Program.cs
index db9ded7..c81d455 100644
--- a/Program.cs
+++ b/Program.cs
@@ -145,6 +145,8 @@
 
                 tasks.Add(GetTask(Monitor.FullOutTime));//婊℃墭杩囨湡鍑哄簱 杩囨湡鍚堟牸鍥炲簱锛岃繃鏈熸鍝佸洖鐐� 
+                tasks.Add(GetTask(Monitor.CGOkCheck));// 鍦ㄥ妫�尯妫�祴鐗╁搧鍚堟牸锛屽悎鏍肩殑鐗╁搧鑷姩鍥炲簱
+
                 Task.WaitAll(tasks.ToArray());
             }
             public void Stop() { Console.WriteLine("work stopped"); }
diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs
index ff81f44..6046611 100644
--- a/api/ApiHelper.cs
+++ b/api/ApiHelper.cs
@@ -167,10 +167,10 @@
                             && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0).
                             OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//鏌ヨ鍚堥�鐨勭粓鐐硅揣浣�                 }
-                else if (model.cgState == 4)//鎶�湳鍚堟牸鍥炲簱
+                else if (model.cgState == 4)//鎶�湳鍒ゅ畾鍥炲簱
                 {
                     cG_Detail.N_ITEM_STATE = 4;
-                    cG_Detail.S_ITEM_STATE = "鎶�湳鍚堟牸";
+                    cG_Detail.S_ITEM_STATE = "鎶�湳鍒ゅ畾";
                     endLoc = db.Queryable<TN_Location>().
                             Where(o => o.S_AREA_CODE == Settings.Areas[8] 
                             && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�
@@ -225,7 +225,7 @@
                 else
                 {
                     result.resultCode = 6;
-                    result.resultMsg = $"鐗╂枡鐘舵�鍙兘涓�鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍚堟牸锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂欙紝濡傛灉涓哄叾浠栧�锛屽垯涓嶅鐞�;
+                    result.resultMsg = $"鐗╂枡鐘舵�鍙兘涓�鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂欙紝濡傛灉涓哄叾浠栧�锛屽垯涓嶅鐞�;
                     LogHelper.Info(result.resultMsg);
                     return result;
                 }
@@ -241,7 +241,7 @@
 
                 var typeName = (model.cgState == 0) ? "浜哄伐澶嶆鍥炲簱" : "浜哄伐澶嶆鍥炵倝";
 
-                //鍒涘缓浜哄伐鎷嗙洏鍑哄簱浠诲姟
+                //鍒涘缓浜哄伐澶嶆浠诲姟
                 if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, typeName, 3, locCnt.S_CNTR_CODE,out string taskNo,cG_Detail.S_SPE))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣�                 {
                     LocationHelper.LockLoc(startLoc.S_CODE, 2);//璧风偣鍑哄簱閿侊紝
@@ -1021,13 +1021,13 @@
 
                 var waitTime = SpecHelper.GetWaitTime(model.Spe);
 
-                //浼樺厛鎶�湳鍚堟牸
+                //浼樺厛鎶�湳鍒ゅ畾
                 var startLoc = db.Queryable<TN_Location>().
                     LeftJoin<TN_Loc_Container>((o, i) => o.S_CODE == i.S_LOC_CODE).
                     LeftJoin<TN_CG_Detail>((o, i, s) => i.S_CNTR_CODE == s.S_CNTR_CODE).
                     Where((o, i, s) => o.N_CURRENT_NUM > 0 && o.S_AREA_CODE == Settings.Areas[1] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃� && o.C_ENABLE == "Y"
                     && (s.S_ITEM_SPEC == model.Spe || s.S_SPE == model.Spe)//鎸囧畾瑙勬牸
-                    && s.N_ITEM_STATE == 4 && s.S_ITEM_STATE == "鎶�湳鍚堟牸"). //鎶�湳鍚堟牸
+                    && s.N_ITEM_STATE == 4 && s.S_ITEM_STATE == "鎶�湳鍒ゅ畾"). //鎶�湳鍒ゅ畾
                     First();//绛涢�鏈夊鍣ㄨ揣浣嶅叧绯昏〃淇℃伅锛岀瓫閫夋湁瀹瑰櫒璐у搧鏄庣粏琛ㄤ俊鎭� 
                 if (startLoc == null)//鍏舵鍚堟牸
diff --git a/api/ApiModel.cs b/api/ApiModel.cs
index e05c371..a0005e7 100644
--- a/api/ApiModel.cs
+++ b/api/ApiModel.cs
@@ -433,14 +433,14 @@
             public string old_StartLoc { get; set; }//鏃у鍣ㄧ殑璧风偣
 
             /// <summary>
-            /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍚堟牸锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�+            /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�             /// </summary>
             public int old_IsOK { get; set; }//鏃у鍣↖D锛屾棫瀹瑰櫒鐨勮揣鍝佺殑
             public string new_CntIds { get; set; }//鎷嗗悗鐨勬柊瀹瑰櫒ID
             public string new_StartLoc { get; set; }//鏂板鍣↖D璧风偣
 
             /// <summary>
-            /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍚堟牸锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�+            /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�             /// </summary>
             public int new_IsOK { get; set; }//鏂板鍣↖D鐨勮揣鍝佺殑
             public string staff { get; set; } = "None";//鎿嶄綔浜�diff --git a/core/Monitor.cs b/core/Monitor.cs
index 29452fc..0bdcc36 100644
--- a/core/Monitor.cs
+++ b/core/Monitor.cs
@@ -350,6 +350,84 @@
         }
 
         /// <summary>
+        /// 鍦ㄥ妫�尯妫�祴鐗╁搧鍚堟牸锛屽悎鏍肩殑鐗╁搧鑷姩鍥炲簱
+        /// </summary>
+        internal static void CGOkCheck()
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            try
+            {
+                var startLoc = db.Queryable<TN_Location>()
+                    .LeftJoin<TN_Loc_Container>((o, i) => o.S_CODE == i.S_LOC_CODE)
+                    .LeftJoin<TN_CG_Detail>((o, i, s) => i.S_CNTR_CODE == s.S_CNTR_CODE)
+                    .Where((o, i, s) => s.N_ITEM_STATE == 0 && s.S_ITEM_STATE == "鍚堟牸"
+                    && o.S_AREA_CODE == Settings.Areas[7] && o.N_CURRENT_NUM > 0
+                    && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�).First();
+
+                if (startLoc== null)
+                {
+                    LogHelper.Info("澶嶆鍖烘病鏈夊悎鏍肩殑鐗╁搧锛屾棤闇�嚜鍔ㄨ繑鍥�);
+                    return;
+                }
+
+                var endLoc = db.Queryable<TN_Location>().First(a => a.S_AREA_CODE == Settings.Areas[1]
+                && 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()//涓嶈兘鏈夎揣
+                );
+
+                if (endLoc != null)
+                {
+                    LogHelper.Info("缁堢偣搴撳尯宸叉弧鎴栬�宸插叏閮ㄩ攣浣�);
+                    return;
+                }
+
+                var cginfo = db.Queryable<TN_CG_Detail>()
+                    .LeftJoin<TN_Loc_Container>((o, i) => o.S_CNTR_CODE == i.S_CNTR_CODE)
+                    .Where((o, i) => i.S_LOC_CODE == startLoc.S_CODE).First();
+
+                if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, "澶嶆鑷姩鍚堟牸鍥炲簱", 3, cginfo.S_CNTR_CODE, out string taskNo, cginfo.S_SPE))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣�+                {
+                    LocationHelper.LockLoc(startLoc.S_CODE, 2);//璧风偣鍑哄簱閿侊紝
+                    LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�+                    LogHelper.Info($"鐢熸垚澶嶆鑷姩鍚堟牸鍥炲簱浠诲姟鎴愬姛锛屽鍣ㄥ彿{cginfo.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}");
+
+                    Task task99 = Task.Run(() =>
+                    {
+                        WMSHelper.InsertOpInfo("鑷姩杞", "澶嶆鑷姩鍚堟牸鍥炲簱", cginfo.S_CNTR_CODE);
+                    });
+
+                    Task task27 = Task.Run(() =>
+                    {
+                        var target = new TN_InventoryM()
+                        {
+                            S_ID = cginfo.S_ID,
+                            RFID = cginfo.S_CNTR_CODE,
+                            SPEC = cginfo.S_SPE,
+                            WEIGHT = cginfo.F_QTY,
+                            ITEMSTATE = cginfo.S_ITEM_STATE,
+                            ITEMCODE = cginfo.S_ITEM_CODE,
+                            LOGINNAME = "鑷姩杞",
+                            SHIFT = "鏃�,
+                        };
+                        SpecHelper.InsertInventoryM(target);
+                    });
+
+                    return ;
+                }
+                else
+                {
+                    LogHelper.Info($"鐢熸垚澶嶆鑷姩鍚堟牸鍥炲簱浠诲姟澶辫触锛屽鍣ㄥ彿{cginfo.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}");
+                    return;
+                }
+
+            }
+            catch(Exception ex)
+            {
+                LogHelper.Error("CGOkCheck鍙戠敓浜嗗紓甯�, ex);
+            }
+        }
+
+        /// <summary>
         /// 婊℃墭杩囨湡鍑哄簱 杩囨湡鍚堟牸鍥炲簱锛岃繃鏈熸鍝佸洖鐐�         /// </summary>
         internal static void FullOutTime()
diff --git a/models/TN_CG_Detail.cs b/models/TN_CG_Detail.cs
index 0843946..81fb2b2 100644
--- a/models/TN_CG_Detail.cs
+++ b/models/TN_CG_Detail.cs
@@ -27,12 +27,12 @@
         public string S_SPE { get; set; }//货品规格
 
         /// <summary>
-        /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合,6一级料、7二级料
+        /// 0合格1待检2不合格,下线即待检,3过期,4技术判定,5混合,6一级料、7二级料
         /// </summary>
         public string S_ITEM_STATE { get; set; }//货品状态
 
         /// <summary>
-        ///0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合,6一级料、7二级料
+        ///0合格1待检2不合格,下线即待检,3过期,4技术判定,5混合,6一级料、7二级料
         /// </summary>
         public int N_ITEM_STATE { get; set; }//货品状态_字典
         public string S_BATCH_NO { get; set; }//批次号
diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs
index 2c22fba..6cd1348 100644
--- a/wms/LocationHelper.cs
+++ b/wms/LocationHelper.cs
@@ -517,7 +517,7 @@
         }
 
         /// <summary>
-        /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍚堟牸锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�+        /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�         /// </summary>
         /// <param name="state"></param>
         /// <returns></returns>
@@ -541,7 +541,7 @@
             }
             if (state == 4)
             {
-                return "鎶�湳鍚堟牸";
+                return "鎶�湳鍒ゅ畾";
             }
             if (state == 5)
             {
@@ -605,7 +605,7 @@
         public string rfId { get; set; }//瀹瑰櫒鍙� 
         /// <summary>
-        /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝3杩囨湡锛�鎶�湳鍚堟牸锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�+        /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�         /// </summary>
         public int cgState { get; set; }//鐗╂枡鐘舵�
 

--
Gitblit v1.9.1