From fc6dd85a865c4cadae0b9a07d56e2988d2262f10 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期二, 22 七月 2025 17:28:52 +0800
Subject: [PATCH] 优化数据库事务帮助类 , 查询/日志生成类

---
 core/WCSCore.cs |  215 ++++++++++++++++++++---------------------------------
 1 files changed, 81 insertions(+), 134 deletions(-)

diff --git a/core/WCSCore.cs b/core/WCSCore.cs
index dd776f4..6938961 100644
--- a/core/WCSCore.cs
+++ b/core/WCSCore.cs
@@ -22,26 +22,26 @@
 namespace HH.WCS.Mobox3.DSZSH.core {
     public class WCSCore {
         public static ReturnResult OperateAgvTaskStatus(AgvTaskState model) {
-            const string preLog = "AGV锛氫换鍔$姸鎬佸洖鎶ワ細";
+            const string preLog = "AGV:浠诲姟鐘舵�鍥炴姤:";
             try {
                 if (model.state > 0) {
                     // AGV 鎵ц浠诲姟鐨勯�杈戝鐞�                     if (!AgvTaskProcessOk(model)) {
-                        // 鎵ц涓峅K锛岃鏄庢病鏈夋壘鍒颁换鍔�-                        return NewReturnResult(1, preLog + $"鏍规嵁浠诲姟鍙�{model.task_no}'鏈壘鍒板搴旂殑浠诲姟锛�);
+                        // 鎵ц涓峅K,璇存槑娌℃湁鎵惧埌浠诲姟
+                        return NewReturnResult(1, preLog + $"鏍规嵁浠诲姟鍙�{model.task_no}'鏈壘鍒板搴旂殑浠诲姟!");
                     }
                 }
 
-                return NewReturnResult(0, "success"); // 涓嶈繑鍥炶缁嗘垚鍔熸棩蹇楋紝閬垮厤NDC浠sg=success浣滀负鎴愬姛鍒ゅ畾锛堝弬鑰冨浗鑷級
+                return NewReturnResult(0, "success"); // 涓嶈繑鍥炶缁嗘垚鍔熸棩蹇�閬垮厤NDC浠sg=success浣滀负鎴愬姛鍒ゅ畾 (鍙傝�鍥借嚜) 
             }
             catch (Exception ex) {
-                return NewReturnResult(-1, $"鍙戠敓浜嗗紓甯革細{ex.Message}\n{ex.StackTrace}");
+                return NewReturnResult(-1, $"鍙戠敓浜嗗紓甯�{ex.Message}\n\n{ex.StackTrace}\n");
             }
 
         }
 
         /// <summary>
-        /// 鎵ц AGV 浠诲姟锛屾煡璇笉鍒颁换鍔¤繑鍥�<see langword="false"/>
+        /// 鎵ц AGV 浠诲姟,鏌ヨ涓嶅埌浠诲姟杩斿洖 <see langword="false"/>
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
@@ -104,39 +104,37 @@
                     break;
             }
 
-            // 灏咥GV鎵ц鐘舵�锛屽姞鍏N_Task_Action琛ㄤ腑
+            // 灏咥GV鎵ц鐘舵�,鍔犲叆TN_Task_Action琛ㄤ腑
             WCSHelper.AddActionRecord(model.task_no, model.state, model.forklift_no, model.ext_data);
-            //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus锛屾坊鍔犱换鍔″姩浣滃叧绯昏〃
+            //璋冪敤绗笁鏂规帴鍙�(濡傛灉鏈� TaskProcess.ReportStatus,娣诲姞浠诲姟鍔ㄤ綔鍏崇郴琛� 
             return true;
         }
 
         private static void RecordTaskTable(TN_Task task) {
             var db = new SqlHelper<object>().GetInstance();
-            var info = "";
 
             try {
-                var cgDetail = new TN_CG_Detail(); // 濡傛灉娌℃湁淇℃伅锛岄粯璁ゅ氨鏄┖鍊硷紝鍙互鐩存帴濉叆锛屼笉闇�鍒ゆ柇
+                var cgDetail = new TN_CG_Detail(); // 濡傛灉娌℃湁淇℃伅,榛樿灏辨槸绌哄�,鍙互鐩存帴濉叆,涓嶉渶瑕佸垽鏂�                 
                 //var emptyTask = false; // 绌烘墭/绌虹浠诲姟
                 if (task.S_TYPE != ETask.K绌烘墭涓婄嚎鍑哄簱.Name() && task.S_TYPE != ETask.K绌烘墭鍏ュ簱.Name() &&
                     task.S_TYPE != ETask.K绌虹涓婄嚎鍑哄簱.Name() && task.S_TYPE != ETask.K绌虹鍏ュ簱.Name()) {
-                    // 闈炵┖鎵�绌虹浠诲姟锛堢┖鎵�绌虹浠诲姟鏃犳硶鍦–GDetail鏌ュ埌鐗╂枡淇℃伅锛�+                    // 闈炵┖鎵�绌虹浠诲姟 (绌烘墭/绌虹浠诲姟鏃犳硶鍦–GDetail鏌ュ埌鐗╂枡淇℃伅) 
                     //emptyTask= true;
                     cgDetail = db.Queryable<TN_CG_Detail>()
                         .Where(d => d.S_CNTR_CODE == task.S_CNTR_CODE)
                         .First();
 
                     if (cgDetail == null) {
-                        info = $"浠诲姟{task.S_CODE}瀹屾垚锛岃褰曞嚭鍏ュ簱瀛樺湪闂锛氭棤娉曞湪瀹瑰櫒璐у搧鏄庣粏琛ㄤ腑鎵惧埌鎵樼洏{task.S_CNTR_CODE}瀵瑰簲鐨勭墿鏂�;
-                        LogHelper.Info(info);
+                        LogHelper.Info($"浠诲姟{task.S_CODE}瀹屾垚,璁板綍鍑哄叆搴撳瓨鍦ㄩ棶棰�鏃犳硶鍦ㄥ鍣ㄨ揣鍝佹槑缁嗚〃涓壘鍒版墭鐩榹task.S_CNTR_CODE}瀵瑰簲鐨勭墿鏂�);
                         //return;
                         cgDetail = new TN_CG_Detail() ;
                         cgDetail.S_ITEM_CODE = "寮傚父";
                     }
                 }
 
-                var isInbound = false; // 鍏ュ簱绫诲瀷鐨勪换鍔★紙鍖呮嫭绉诲簱绫讳换鍔★級
+                var isInbound = false; // 鍏ュ簱绫诲瀷鐨勪换鍔�(鍖呮嫭绉诲簱绫讳换鍔� 
                 var inboundTasks = new List<string> {
                     ETask.M婊℃墭涓嬬嚎鍏ュ簱.Name(), ETask.M婊$涓嬬嚎鍏ュ簱.Name(), ETask.K绌烘墭鍏ュ簱.Name(), ETask.K绌虹鍏ュ簱.Name(),
                     ETask.C鎶芥鍚堟牸鍥炲簱.Name(), ETask.C鎶芥涓嶅悎鏍肩Щ搴�Name(), ETask.Y绉诲簱.Name()
@@ -150,8 +148,7 @@
                     .Where(r => r.S_TASK_NO == task.S_CODE).First();
                 if (record != null) {
                     //needUpdateRecordTable = true;
-                    info = $"鍑哄叆搴撹褰曡〃涓凡缁忓瓨鍦ㄤ换鍔″彿{task.S_CODE}"; // 闃叉娴嬭瘯鏃跺弽澶嶈皟鐢�34562瀵艰嚧閲嶅璁板綍
-                    LogHelper.Info(info);
+                    LogHelper.Info($"鍑哄叆搴撹褰曡〃涓凡缁忓瓨鍦ㄤ换鍔″彿{task.S_CODE}"); // 闃叉娴嬭瘯鏃跺弽澶嶈皟鐢�34562瀵艰嚧閲嶅璁板綍
                     return;
                 }
 
@@ -159,7 +156,7 @@
                     S_ITEM_CODE = cgDetail.S_ITEM_CODE,
                     S_BATCH_NO = cgDetail.S_BATCH_NO,
                     S_ITEM_NAME = cgDetail.S_ITEM_NAME,
-                    S_LOC_CODE = isInbound ? task.S_END_LOC : task.S_START_LOC, // 鍏ュ簱璁板綍缁堢偣璐т綅锛屽嚭搴撹褰曡捣鐐硅揣浣�+                    S_LOC_CODE = isInbound ? task.S_END_LOC : task.S_START_LOC, // 鍏ュ簱璁板綍缁堢偣璐т綅,鍑哄簱璁板綍璧风偣璐т綅
                     S_CNTR_CODE = task.S_CNTR_CODE,
                     S_ITEM_SPEC = cgDetail.S_ITEM_SPEC,
                     S_NET_WEIGHT = cgDetail.S_NET_WEIGHT,
@@ -168,20 +165,18 @@
                     S_TASK_NO = task.S_CODE,
                     T_RECORD_TIME = DateTime.Now,
                     S_TYPE = task.S_TYPE,
-                    S_BS_CODE = task.S_BS_NO, // ERP鍗曞彿锛岄粯璁や负绌�+                    S_BS_CODE = task.S_BS_NO, // ERP鍗曞彿,榛樿涓虹┖
                     N_QTY = cgDetail.N_ITEM_NUM,
                     S_NO = task.S_OP_CODE, // 鍑哄簱/鎶芥/绉诲簱鍗�                 };
 
                 // 鏁版嵁搴撴搷浣�                 if (db.Insertable(record).ExecuteCommand() <= 0) {
-                    info = "鎻掑叆鍑哄叆搴撹褰曡〃澶辫触锛� + JsonConvert.SerializeObject(record);
-                    LogHelper.Info(info);
+                    LogHelper.Info("鎻掑叆鍑哄叆搴撹褰曡〃澶辫触:" + JsonConvert.SerializeObject(record));
                     return;
                 }
 
-                info = "鎻掑叆鍑哄叆搴撹褰曡〃鎴愬姛";
-                LogHelper.Info(info);
+                LogHelper.Info("鎻掑叆鍑哄叆搴撹褰曡〃鎴愬姛");
             }
             catch (Exception ex) {
                 LogHelper.InfoEx(ex);
@@ -195,7 +190,7 @@
         /// <returns></returns>
         public static ReturnResult SafetyInteraction(SafetyInteractionInfo model) {
             var db = new SqlHelper<object>().GetInstance();
-            const string preLog = "AGV锛氫骇绾垮畨鍏ㄤ氦浜掞細";
+            const string preLog = "AGV:浜х嚎瀹夊叏浜や簰:";
 
             try {
                 ModbusHelper.Relink();
@@ -233,13 +228,13 @@
                 //}
 
                 if (prodLineDevice.SystemState != 1) {
-                    return NewReturnResult(3, preLog + $"褰撳墠浜х嚎鏃犳硶涓嶢GV鑱斿姩锛氱姸鎬亄prodLineDevice.SystemState}");
+                    return NewReturnResult(3, preLog + $"褰撳墠浜х嚎鏃犳硶涓嶢GV鑱斿姩:鐘舵�{prodLineDevice.SystemState}");
                 }
 
                 // 璇锋眰鍙栬揣
                 if (model.apply_code == "5") {
                     if (prodLineDevice.FullOffline != 1) {
-                        return NewReturnResult(4, preLog + $"褰撳墠杈撻�绾挎弧鏂欎笅绾夸俊鍙蜂笉涓�锛屾棤娉曞彇璐�);
+                        return NewReturnResult(4, preLog + $"褰撳墠杈撻�绾挎弧鏂欎笅绾夸俊鍙蜂笉涓�,鏃犳硶鍙栬揣");
                     }
                     
                     if (!prodLineDevice.SetAgvPicking(1)) {
@@ -251,7 +246,7 @@
                 // 璇锋眰鍗歌揣
                 else if (model.apply_code == "1") {
                     if (prodLineDevice.AllowAgvPlacePallet != 1) {
-                        return NewReturnResult(6, preLog + $"褰撳墠杈撻�绾垮厑璁告斁鎵樼洏淇″彿涓嶄负1锛屾棤娉曟斁璐�);
+                        return NewReturnResult(6, preLog + $"褰撳墠杈撻�绾垮厑璁告斁鎵樼洏淇″彿涓嶄负1,鏃犳硶鏀捐揣");
                     }
 
                     if (!prodLineDevice.SetAgvPlacingPallet(1)) {
@@ -266,7 +261,7 @@
 
             }
             catch (Exception ex) {
-                return NewReturnResult(1, preLog + $"鍙戠敓浜嗗紓甯革細{ex.Message}\n{ex.StackTrace}");
+                return NewReturnResult(1, preLog + $"鍙戠敓浜嗗紓甯�{ex.Message}\n\n{ex.StackTrace}\n");
             }
         }
 
@@ -278,7 +273,7 @@
                 .First(d => d.N_B_STATE == 2);
 
             if (detail == null) {
-                LogHelper.Info($"{taskName}锛欰GV鍙栬揣锛氭煡璇㈡槑缁嗗崟锛氬綋鍓嶆病鏈夋墽琛屼腑鐨勬槑缁嗗崟");
+                LogHelper.Info($"{taskName}:AGV鍙栬揣:鏌ヨ鏄庣粏鍗�褰撳墠娌℃湁鎵ц涓殑鏄庣粏鍗�);
                 return;
             }
 
@@ -286,23 +281,23 @@
                 detail.N_B_STATE = spotStateCode;
                 if (db.Updateable(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
                     tran.RollbackTran();
-                    LogHelper.Info($"{taskName}锛欰GV鍙栬揣锛氫慨鏀规槑缁嗗崟鐘舵�涓恒�3浠诲姟鎵ц瀹屾垚銆戝け璐ワ紒");
+                    LogHelper.Info($"{taskName}:AGV鍙栬揣:淇敼鏄庣粏鍗曠姸鎬佷负銆�浠诲姟鎵ц瀹屾垚銆戝け璐�");
                     return;
                 }
 
                 var finishedCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == detail.S_OO_NO && d.N_B_STATE == 3);
                 var allCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == detail.S_OO_NO);
 
-                LogHelper.Info($"{taskName}锛欰GV鍙栬揣锛氱粺璁′换鍔″凡瀹屾垚锛歿finishedCount}/{allCount}");
+                LogHelper.Info($"{taskName}:AGV鍙栬揣:缁熻浠诲姟宸插畬鎴�{finishedCount}/{allCount}");
 
-                if (finishedCount == allCount) { // 褰撳墠鍑哄簱鍗曚笅鐨勬墍鏈夋槑缁嗗崟锛屼换鍔¢兘宸茬粡瀹屾垚
+                if (finishedCount == allCount) { // 褰撳墠鍑哄簱鍗曚笅鐨勬墍鏈夋槑缁嗗崟,浠诲姟閮藉凡缁忓畬鎴� 
                     if (db.Updateable<TN_Outbound_Order>().SetColumns(it => it.N_B_STATE == 3)
                         .Where(it => it.S_NO == detail.S_OO_NO)
                         .ExecuteCommand() <= 0) {
 
                         tran.RollbackTran();
-                        LogHelper.Info($"{taskName}锛欰GV鍙栬揣锛氭墍鏈変换鍔″畬鎴愭椂锛氫慨鏀瑰崟鎹姸鎬佷负3浠诲姟鎵ц瀹屾垚--澶辫触锛�);
+                        LogHelper.Info($"{taskName}:AGV鍙栬揣:鎵�湁浠诲姟瀹屾垚鏃�淇敼鍗曟嵁鐘舵�涓�浠诲姟鎵ц瀹屾垚--澶辫触!");
                         return;
                     }
                 }
@@ -313,7 +308,6 @@
 
         public static void PickUpReturnErp(TN_Task task) {
             var db = new SqlHelper<object>().GetInstance();
-            var info = "";
             var httpH = new HttpHelper();
             
             try {
@@ -322,8 +316,7 @@
                     .First();
 
                 if (plan == null) {
-                    info = $"璁″垝鍗曞彿{task.S_BS_NO}涓嶅瓨鍦紒";
-                    LogHelper.Info(info);
+                    LogHelper.Info($"璁″垝鍗曞彿{task.S_BS_NO}涓嶅瓨鍦�");
                 }
 
                 var cgDetail = db.Queryable<TN_CG_Detail>()
@@ -331,13 +324,12 @@
                     .First();
 
                 if (cgDetail == null) {
-                    info = $"鐗╂枡缂栫爜涓嶅瓨鍦紒";
-                    LogHelper.Info(info);
+                    LogHelper.Info($"鐗╂枡缂栫爜涓嶅瓨鍦�");
                 }
 
                 var model = new OtherModel.PickUpReturnErpInfo {
-                    jhdh = plan.JHDH, // 璁″垝鍗曞彿锛堝敮涓�爣璇嗭級
-                    ckzt = plan.CKZT, // 鍑哄簱鐘舵�锛堥渶瑕佽繑鍥烇級
+                    jhdh = plan.JHDH, // 璁″垝鍗曞彿 (鍞竴鏍囪瘑) 
+                    ckzt = plan.CKZT, // 鍑哄簱鐘舵� (闇�杩斿洖) 
                     jhlb = plan.JHLB, // 璁″垝绫诲埆
                     ckdh = plan.CKDH, // 鍙傝�鍗曞彿
                     cph = plan.CPH, // 杞︾墝鍙�@@ -348,9 +340,9 @@
                     cplb = plan.CPLB, // 浜у搧绫诲埆
                     cplbmx = plan.CPLBMX, // 浜у搧绫诲埆鏄庣粏
                     pp = plan.PP, // 鍝佺墝
-                    dj = plan.DJ, // 绛夌骇锛堥渶瑕佽繑鍥烇級
+                    dj = plan.DJ, // 绛夌骇 (闇�杩斿洖) 
                     gh = plan.GH, // 缃愬彿
-                    ph = plan.PH, // 鎵瑰彿锛堥渶瑕佽繑鍥烇級
+                    ph = plan.PH, // 鎵瑰彿 (闇�杩斿洖) 
                     bzlx = plan.BZLX, // 鍖呰绫诲瀷
                     pzdh = plan.PZDH, // 娲捐鍗曞彿
                     pzd_dw = plan.PZD_DW, // 娲捐鍗曞崟浣�@@ -363,15 +355,15 @@
                     pz_zfrq = plan.PZ_ZFRQ, // 娲捐浣滃簾鏃ユ湡
                     pz_bz = plan.PZ_BZ, // 娲捐澶囨敞
                     ckdbh = plan.CKDBH, // 鍑哄簱鍗曠紪鍙�-                    sfjs = plan.SFJS, // 瀹炲彂浠舵暟锛堥渶瑕佽繑鍥烇級--鏇存柊
-                    sfsl = plan.SFSL, // 瀹炲彂鏁伴噺锛堥渶瑕佽繑鍥烇級--鏇存柊
-                    //sfcs = plan.SFCS , // 瀹炲彂杞︽暟锛堥渶瑕佽繑鍥烇級
-                    //zcsj = plan.ZCSJ , // 瑁呰溅鏃堕棿锛堥渶瑕佽繑鍥烇級
-                    //jldw = plan.JLDW , // 璁¢噺鍗曚綅锛堥渶瑕佽繑鍥烇級
-                    //fhrq = plan.FHRQ , // 鍙戣揣鏃ユ湡锛堥渶瑕佽繑鍥烇級
-                    //ckdm = plan.CKDM , // 浠撳簱浠g爜锛堥渶瑕佽繑鍥烇級
-                    //fhr = plan.FHR , // 鍙戣揣浜猴紙闇�杩斿洖锛�-                    //czydm = plan.CZYDM , // 鎿嶄綔鍛橈紙闇�杩斿洖锛�+                    sfjs = plan.SFJS, // 瀹炲彂浠舵暟 (闇�杩斿洖) --鏇存柊
+                    sfsl = plan.SFSL, // 瀹炲彂鏁伴噺 (闇�杩斿洖) --鏇存柊
+                    //sfcs = plan.SFCS , // 瀹炲彂杞︽暟 (闇�杩斿洖) 
+                    //zcsj = plan.ZCSJ , // 瑁呰溅鏃堕棿 (闇�杩斿洖) 
+                    //jldw = plan.JLDW , // 璁¢噺鍗曚綅 (闇�杩斿洖) 
+                    //fhrq = plan.FHRQ , // 鍙戣揣鏃ユ湡 (闇�杩斿洖) 
+                    //ckdm = plan.CKDM , // 浠撳簱浠g爜 (闇�杩斿洖) 
+                    //fhr = plan.FHR , // 鍙戣揣浜�(闇�杩斿洖) 
+                    //czydm = plan.CZYDM , // 鎿嶄綔鍛�(闇�杩斿洖) 
                     shr_username = plan.SHR_USERNAME, // 瀹℃牳浜�                     shrq = plan.SHRQ, // 瀹℃牳鏃ユ湡
                     zfbj = plan.ZFBJ, // 浣滃簾鏍囪
@@ -380,14 +372,14 @@
                     shdw = plan.SHDW, // 鏀惰揣鍗曚綅
                     ysdw = plan.YSDW, // 杩愯緭鍗曚綅
                     lxr = plan.LXR, // 鑱旂郴浜�-                    //ry_zxg = plan.RY_ZXG , // 瑁呭嵏宸ワ紙闇�杩斿洖锛�-                    //ry_ccsj = plan.RY_CCSJ , // 鍙夎溅鍙告満锛堥渶瑕佽繑鍥烇級
+                    //ry_zxg = plan.RY_ZXG , // 瑁呭嵏宸�(闇�杩斿洖) 
+                    //ry_ccsj = plan.RY_CCSJ , // 鍙夎溅鍙告満 (闇�杩斿洖) 
                     erphx_jhdh = plan.ERPHX_JHDH, // erp浜よ揣鍗曞彿
                     erphx_wlbm = plan.ERPHX_WLBM, // erp鐗╂枡缂栫爜
                     erphx_wlmc = plan.ERPHX_WLMC, // erp鐗╂枡鍚嶇О
                     erphx_cjrq = plan.ERPHX_CJRQ, // erp鍒涘缓鏃ユ湡
-                    hw = plan.HW, // 璐т綅锛堥渶瑕佽繑鍥烇級
-                    hwzt = plan.HWZT // 璐т綅鐘舵�锛堥渶瑕佽繑鍥烇級
+                    hw = plan.HW, // 璐т綅 (闇�杩斿洖) 
+                    hwzt = plan.HWZT // 璐т綅鐘舵� (闇�杩斿洖) 
                 };
                 model.sfjs = cgDetail.N_ITEM_NUM;
                 model.sfsl = (decimal) cgDetail.F_QTY; // TEMP
@@ -396,14 +388,13 @@
                 var jsonInfo = JsonConvert.SerializeObject(model);
                 var result = httpH.WebPost(Settings.ErpApiUrl + Settings.ErpRoute.PickUpReturn, jsonInfo);
 
-                LogHelper.InfoApi($"鍙栬揣瀹屾垚鍙嶉ERP鎺ュ彛锛岀粨鏋�{result}锛岃皟鐢ㄥ弬鏁帮細", model);
+                LogHelper.InfoApi($"鍙栬揣瀹屾垚鍙嶉ERP鎺ュ彛,缁撴灉={result},璋冪敤鍙傛暟:", model);
 
                 plan.SFJS = model.sfjs;
                 plan.SFSL = model.sfsl;
                 plan.HWZT = model.hwzt;
                 var success = db.Updateable(plan).UpdateColumns(p => new { p.SFJS, p.SFSL, p.HWZT }).ExecuteCommand() > 0;
-                info = "鏇存柊鍑哄簱璁″垝鍗曡褰曡〃" + (success ? "鎴愬姛" : "澶辫触");
-                LogHelper.Info(info);
+                LogHelper.Info("鏇存柊鍑哄簱璁″垝鍗曡褰曡〃" + (success ? "鎴愬姛" : "澶辫触"));
             }
             catch (Exception ex) {
                 LogHelper.InfoEx(ex);
@@ -411,14 +402,13 @@
         }
 
         /// <summary>
-        /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺
+        /// 浠诲姟鍒嗗彂,鏍规嵁璋冨害绫诲瀷鍙戠粰涓嶅悓鐨勮皟搴︾郴缁�         /// </summary>
         internal static void Dispatch() {
-            //鏌ヨ浠诲姟
             //鑾峰彇鎵�湁绛夊緟鐨勪换鍔�             var list = WCSHelper.GetWaitingTaskList();
-            LogHelper.Info("绛夊緟浠诲姟淇℃伅" + JsonConvert.SerializeObject(list), "API");
             if (list.Count > 0) {
+                LogHelper.Info($"杞:浠诲姟鍒嗗彂:绛夊緟浠诲姟淇℃伅\n\n{JsonConvert.SerializeObject(list)}\n");
                 list.ForEach(task => {
                     //浣跨敤鑷畾涔変换鍔℃帹閫�                     //TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧
@@ -426,7 +416,7 @@
                 });
             }
             else {
-                LogHelper.Info("鏆傛棤浠诲姟");
+                LogHelper.Debug("杞:浠诲姟鍒嗗彂:鏆傛棤浠诲姟");
             }
         }
 
@@ -436,7 +426,7 @@
             var ListenPort = Settings.TcpServerPort;
             TcpListener listener = new TcpListener(IPAddress.Any, ListenPort);
             listener.Start();
-            Console.WriteLine($"鍚庡彴鏈嶅姟宸插惎鍔紝鐩戝惉绔彛 {ListenPort}...");
+            Console.WriteLine($"鍚庡彴鏈嶅姟宸插惎鍔�鐩戝惉绔彛 {ListenPort}...");
 
             while (true) {
                 try {
@@ -444,7 +434,7 @@
                     System.Net.Sockets.TcpClient client = listener.AcceptTcpClient();
                     Console.WriteLine($"浜х嚎瀹㈡埛绔凡杩炴帴: {client.Client.RemoteEndPoint}");
 
-                    // 澶勭悊瀹㈡埛绔姹傦紙浣跨敤Task閬垮厤闃诲涓荤嚎绋嬶級
+                    // 澶勭悊瀹㈡埛绔姹�(浣跨敤Task閬垮厤闃诲涓荤嚎绋� 
                     Task.Run(() => HandleClientRequest(client));
                 }
                 catch (Exception ex) {
@@ -455,6 +445,8 @@
 
         public static void HandleClientRequest(System.Net.Sockets.TcpClient client) {
             var db = new SqlHelper<object>().GetInstance();
+            var (ok, msg) = (false, string.Empty);
+
             using (client)
             using (NetworkStream stream = client.GetStream()) {
                 try {
@@ -465,21 +457,22 @@
 
                     // 瑙f瀽娑堟伅
                     var message = JsonConvert.DeserializeObject<ProductCompletedMessage>(jsonMessage);
-                    //Console.WriteLine($"鏀跺埌浜у搧瀹屾垚閫氱煡 - 鐗╂枡锛歿message.ItemCode}锛涙壒娆″彿锛歿message.BatchNo}锛涘鍣ㄥ彿锛歿message.CntrCode}");
-                    LogHelper.Info($"鏀跺埌浜у搧涓嬬嚎閫氱煡锛�+message);
+                    //Console.WriteLine($"鏀跺埌浜у搧瀹屾垚閫氱煡 - 鐗╂枡:{message.ItemCode};鎵规鍙�{message.BatchNo};瀹瑰櫒鍙�{message.CntrCode}");
+                    LogHelper.Info($"鏀跺埌浜у搧涓嬬嚎閫氱煡:"+message);
 
                     string startLocCode = "";
 
-                    // A. 濡傛灉鏄崟涓骇绾縋LC锛岄�杩嘥CP浼犳挱锛岄渶瑕佷紶閫掍骇绾縄D锛屾牴鎹甀D璁$畻璧风偣璐т綅
-                    //startLocCode = Settings.ProductionLines[message.Id].OffLoc[0]; // 鐞嗚涓婂簲璇ュ彧鏈�涓狾ffLoc锛屽惁鍒欏簲璇ユ敞鏄庢槸鍝竴涓�+                    // A. 濡傛灉鏄崟涓骇绾縋LC,閫氳繃TCP浼犳挱,闇�浼犻�浜х嚎ID,鏍规嵁ID璁$畻璧风偣璐т綅
+                    //startLocCode = Settings.ProductionLines[message.Id].OffLoc[0]; // 鐞嗚涓婂簲璇ュ彧鏈�涓狾ffLoc,鍚﹀垯搴旇娉ㄦ槑鏄摢涓�釜
                     
-                    // B. 濡傛灉鏄瘡鏉′骇绾垮悇涓�釜瀹㈡埛绔紝鏇寸畝鍗曪紝鐩存帴鏍规嵁IP鍦板潃纭畾缁堢偣璐т綅
+                    // B. 濡傛灉鏄瘡鏉′骇绾垮悇涓�釜瀹㈡埛绔�鏇寸畝鍗�鐩存帴鏍规嵁IP鍦板潃纭畾缁堢偣璐т綅
                     // TODO 鍏蜂綋閫昏緫寰呭悗缁‘瀹氭椂琛ュ畬
 
-                    var success = CreateInboundTask(startLocCode, message.CntrCode).Value;
+                    (ok, msg) = CreateInboundTask(startLocCode, message.CntrCode);
+                    LogHelper.Info(msg);
 
                     // 鍙戦�鍝嶅簲
-                    string response = success ? "ACK: 鏈哄櫒浜哄凡璋冨害" : "NAK: 璋冨害澶辫触";
+                    string response = ok ? "ACK: 鏈哄櫒浜哄凡璋冨害" : "NAK: 璋冨害澶辫触";
                     byte[] responseData = Encoding.UTF8.GetBytes(response);
                     stream.Write(responseData, 0, responseData.Length);
                 }
@@ -490,14 +483,13 @@
         }
 
         /// <summary>
-        /// 鍏ュ簱浣滀笟鍒涘缓鍙帴鏀惰捣鐐硅揣浣嶅拰瀹瑰櫒鍙凤紙鐗╂枡淇℃伅寰呭畾銆侀�杩囦骇绾垮彿璁$畻璧风偣鐨勯�杈戞斁鍦ㄦ柟娉曞锛�+        /// 鍏ュ簱浣滀笟鍒涘缓鍙帴鏀惰捣鐐硅揣浣嶅拰瀹瑰櫒鍙�(鐗╂枡淇℃伅寰呭畾,閫氳繃浜х嚎鍙疯绠楄捣鐐圭殑閫昏緫鏀惧湪鏂规硶澶� 
         /// </summary>
         /// <param name="startLocCode"></param>
         /// <param name="cntrCode"></param>
         /// <returns></returns>
-        public static Result<bool> CreateInboundTask(string startLocCode, string cntrCode) {
+        public static (bool, string) CreateInboundTask(string startLocCode, string cntrCode) {
             var db = new SqlHelper<object>().GetInstance();
-            var info = "";
 
             var taskInfo = Settings.GetTaskInfo(ETask.M婊℃墭涓嬬嚎鍏ュ簱);
             var taskName = taskInfo.TaskName;
@@ -512,11 +504,9 @@
                 .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y")
                 //.Where(l => l.N_CURRENT_NUM == 0) // 缁戝畾鍓�                 .First();
-
+                
                 if (startLoc == null) {
-                    info = $"娌℃湁鎵惧埌璧风偣璐т綅'{startLocCode}'锛屾垨涓嶆弧瓒宠姹傦細鏈笂閿併�褰撳墠瀹瑰櫒鏁伴噺=0";
-                    LogHelper.Info(info);
-                    return new Result<bool>(false, info);
+                    return (false, $"娌℃湁鎵惧埌璧风偣璐т綅'{startLocCode}'!!瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0");
                 }
 
                 var locCntrRelOld = db.Queryable<TN_Loc_Container>()
@@ -533,87 +523,54 @@
 
                 var endLoc = db.Queryable<TN_Location>()
                     .Where(a => endAreas.Contains(a.S_AREA_CODE))
-                    .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
-                    .Where(a => a.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅
+                    .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�:鏈笂閿�+                    .Where(a => a.N_CURRENT_NUM == 0) // 绛涢�:绌鸿揣浣�                     .OrderBy(l => l.N_LAYER)
                     .First();
-
+                
                 if (endLoc == null) {
-                    info = $"娌℃湁鎵惧埌鍚堥�鐨勩�缁堢偣璐т綅銆戯紝闇�婊¤冻瑕佹眰锛氭湭涓婇攣銆佸綋鍓嶅鍣ㄦ暟閲�0";
-                    LogHelper.Info(info);
-                    return new Result<bool>(false, info);
+                    return (false, $"娌℃湁鎵惧埌鍚堥�鐨刐缁堢偣璐т綅]!!瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0");
                 }
 
                 var cntId = locCntrRel.S_CNTR_CODE;
-                var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
-
-                WCSHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�-                WCSHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿�+                var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName);
 
                 using (var tran = db.Ado.UseTran()) {
                     if (locCntrRelOld != null) {
                         if (db.Deleteable(locCntrRelOld).ExecuteCommand() <= 0 &&
                             db.Updateable<TN_Location>().SetColumns(l => l.N_CURRENT_NUM == 0).Where(l => l.S_CODE == locCntrRelOld.S_LOC_CODE).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info = $"鍒犻櫎鏃ц揣浣嶅鍣ㄥ叧绯昏〃澶辫触锛氳揣浣嶇紪鐮亄locCntrRelOld.S_LOC_CODE}锛屽鍣ㄧ紪鐮亄locCntrRelOld.S_CNTR_CODE}";
-                            LogHelper.Info(info);
-                            return new Result<bool>(false, info);
+                            return (false, $"鍒犻櫎鏃ц揣浣嶅鍣ㄥ叧绯昏〃澶辫触:璐т綅缂栫爜{locCntrRelOld.S_LOC_CODE},瀹瑰櫒缂栫爜{locCntrRelOld.S_CNTR_CODE}");
                         }
                     }
 
                     if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        info = $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐ワ細璐т綅缂栫爜{locCntrRel.S_LOC_CODE}锛屽鍣ㄧ紪鐮亄locCntrRel.S_CNTR_CODE}";
-                        LogHelper.Info(info);
-                        return new Result<bool>(false, info);
+                        return (false, $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�璐т綅缂栫爜{locCntrRel.S_LOC_CODE},瀹瑰櫒缂栫爜{locCntrRel.S_CNTR_CODE}");
                     }
 
-                    if (db.Updateable(startLoc).UpdateColumns(it => new {
-                        it.N_LOCK_STATE,
-                        it.S_LOCK_STATE,
-                        it.S_LOCK_OP,
-                        it.T_MODIFY,
-                        it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚庯紝灏嗚揣浣嶇姸鎬佹洿鏂�-                    }).ExecuteCommand() <= 0) {
+                    if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�;
-                        LogHelper.Info(info);
-                        return new Result<bool>(false, info);
+                        return (false, $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊璧风偣璐т綅{startLoc.S_CODE}閿佺姸鎬佸け璐�);
                     }
 
-                    if (db.Updateable(endLoc).UpdateColumns(it => new {
-                        it.N_LOCK_STATE,
-                        it.S_LOCK_STATE,
-                        it.S_LOCK_OP,
-                        it.T_MODIFY,
-                    }).ExecuteCommand() <= 0) {
+                    if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�;
-                        LogHelper.Info(info);
-                        return new Result<bool>(false, info);
+                        return (false, $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊缁堢偣璐т綅{endLoc.S_CODE}閿佺姸鎬佸け璐�);
                     }
 
                     if (db.Insertable(task).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
-                        LogHelper.Info(info);
-                        return new Result<bool>(false, info);
+                        return (false, $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}");
                     }
 
                     tran.CommitTran();
-                    info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
-                    LogHelper.Info(info);
-                    return new Result<bool>(true, info);
+                    return (true, $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}");
                 }
             }
             catch (Exception ex) {
-                return NewResult(false, ex.Message);
+                return (false, ex.Message);
             }
-        }
-
-        private static Result<bool> NewResult(bool res, string msg, bool log = true) {
-            if (log) { LogHelper.Info(msg); }
-            return new Result<bool>(res, msg);
         }
 
     }
@@ -623,15 +580,5 @@
         //public string ItemCode { get; set; }
         //public string BatchNo { get; set; }
         public string CntrCode { get; set; }
-    }
-
-    public class Result<T> {
-        public T Value { get; set; }
-        public string Content { get; set; }
-
-        public Result(T value, string content) { 
-            Value = value;
-            Content = content;
-        }
     }
 }

--
Gitblit v1.9.1