From f703b278956736aa14c12d1d25c8e8f23b822760 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期四, 26 六月 2025 17:27:32 +0800
Subject: [PATCH] 优化国自辅助调度和任务推送逻辑

---
 api/ApiHelper.cs |  118 +++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 74 insertions(+), 44 deletions(-)

diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs
index 0279650..2c76ec6 100644
--- a/api/ApiHelper.cs
+++ b/api/ApiHelper.cs
@@ -1337,7 +1337,7 @@
         private static string GenerateOrderNo(string snType, string prefix) {
             var id = SYSHelper.GetSerialNumber(snType, prefix);
             var date = DateTime.Now.ToString("yyMMdd");
-            return $"{prefix}{date}{id.ToString().PadLeft(4, '0')}";
+            return $"{prefix}{date}-{id.ToString().PadLeft(4, '0')}";
         }
 
         /// <summary>
@@ -1437,15 +1437,23 @@
             var info = "";
             try {
                 // 鍙傛暟鍚堟硶鎬х‘璁ら儴鍒嗭細閿欒缂栫爜锛�00
-                if (model.pzsl <= 0) {
-                    info = $"鐗╂枡鏁伴噺(pzsl){model.pzsl}涓嶅悎娉曪細鐗╂枡鏁伴噺搴旇澶т簬 0";
+                if (model.pzjs <= 0) {
+                    info = $"鐗╂枡鏁伴噺(pzjs){model.pzjs}涓嶅悎娉曪細鐗╂枡鏁伴噺搴旇澶т簬 0";
                     LogHelper.Info(info);
                     return NewErpResult(400, info);
                 }
 
-                var outboundPlan = new TN_Outbound_Plan {
+                var outboundPlan = db.Queryable<TN_Outbound_Plan>()
+                    .Where(p => p.JHDH == model.jhdh).First();
+                if (outboundPlan != null) {
+                    info = $"璁″垝鍗曞彿{model.jhdh}宸插湪鏁版嵁搴撲腑瀛樺湪";
+                    LogHelper.Info(info);
+                    return NewErpResult(1, info);
+                }
+
+                outboundPlan = new TN_Outbound_Plan {
                     JHDH = model.jhdh, // 璁″垝鍗曞彿锛堝敮涓�爣璇嗭級
-                    CKZT = model.ckzt, // 鍑哄簱鐘舵�
+                    CKZT = model.ckzt, // 鍑哄簱鐘舵�锛堥渶瑕佽繑鍥烇級
                     JHLB = model.jhlb, // 璁″垝绫诲埆
                     CKDH = model.ckdh, // 鍙傝�鍗曞彿
                     CPH = model.cph, // 杞︾墝鍙�@@ -1456,9 +1464,9 @@
                     CPLB = model.cplb, // 浜у搧绫诲埆
                     CPLBMX = model.cplbmx, // 浜у搧绫诲埆鏄庣粏
                     PP = model.pp, // 鍝佺墝
-                    DJ = model.dj, // 绛夌骇
+                    DJ = model.dj, // 绛夌骇锛堥渶瑕佽繑鍥烇級
                     GH = model.gh, // 缃愬彿
-                    PH = model.ph, // 鎵瑰彿
+                    PH = model.ph, // 鎵瑰彿锛堥渶瑕佽繑鍥烇級
                     BZLX = model.bzlx, // 鍖呰绫诲瀷
                     PZDH = model.pzdh, // 娲捐鍗曞彿
                     PZD_DW = model.pzd_dw, // 娲捐鍗曞崟浣�@@ -1471,15 +1479,15 @@
                     PZ_ZFRQ = model.pz_zfrq, // 娲捐浣滃簾鏃ユ湡
                     PZ_BZ = model.pz_bz, // 娲捐澶囨敞
                     CKDBH = model.ckdbh, // 鍑哄簱鍗曠紪鍙�-                    SFJS = model.sfjs, // 瀹炲彂浠舵暟
-                    SFSL = model.sfsl, // 瀹炲彂鏁伴噺
-                    SFCS = model.sfcs, // 瀹炲彂杞︽暟
-                    ZCSJ = model.zcsj, // 瑁呰溅鏃堕棿
-                    JLDW = model.jldw, // 璁¢噺鍗曚綅
-                    FHRQ = model.fhrq, // 鍙戣揣鏃ユ湡
-                    CKDM = model.ckdm, // 浠撳簱浠g爜
-                    FHR = model.fhr, // 鍙戣揣浜�-                    CZYDM = model.czydm, // 鎿嶄綔鍛�+                    SFJS = model.sfjs, // 瀹炲彂浠舵暟锛堥渶瑕佽繑鍥烇級
+                    SFSL = model.sfsl, // 瀹炲彂鏁伴噺锛堥渶瑕佽繑鍥烇級
+                    SFCS = model.sfcs, // 瀹炲彂杞︽暟锛堥渶瑕佽繑鍥烇級
+                    ZCSJ = model.zcsj, // 瑁呰溅鏃堕棿锛堥渶瑕佽繑鍥烇級
+                    JLDW = model.jldw, // 璁¢噺鍗曚綅锛堥渶瑕佽繑鍥烇級
+                    FHRQ = model.fhrq, // 鍙戣揣鏃ユ湡锛堥渶瑕佽繑鍥烇級
+                    CKDM = model.ckdm, // 浠撳簱浠g爜锛堥渶瑕佽繑鍥烇級
+                    FHR = model.fhr, // 鍙戣揣浜猴紙闇�杩斿洖锛�+                    CZYDM = model.czydm, // 鎿嶄綔鍛橈紙闇�杩斿洖锛�                     SHR_USERNAME = model.shr_username, // 瀹℃牳浜�                     SHRQ = model.shrq, // 瀹℃牳鏃ユ湡
                     ZFBJ = model.zfbj, // 浣滃簾鏍囪
@@ -1488,52 +1496,74 @@
                     SHDW = model.shdw, // 鏀惰揣鍗曚綅
                     YSDW = model.ysdw, // 杩愯緭鍗曚綅
                     LXR = model.lxr, // 鑱旂郴浜�-                    RY_ZXG = model.ry_zxg, // 瑁呭嵏宸�-                    RY_CCSJ = model.ry_ccsj, // 鍙夎溅鍙告満
+                    RY_ZXG = model.ry_zxg, // 瑁呭嵏宸ワ紙闇�杩斿洖锛�+                    RY_CCSJ = model.ry_ccsj, // 鍙夎溅鍙告満锛堥渶瑕佽繑鍥烇級
                     ERPHX_JHDH = model.erphx_jhdh, // erp浜よ揣鍗曞彿
                     ERPHX_WLBM = model.erphx_wlbm, // erp鐗╂枡缂栫爜
                     ERPHX_WLMC = model.erphx_wlmc, // erp鐗╂枡鍚嶇О
                     ERPHX_CJRQ = model.erphx_cjrq, // erp鍒涘缓鏃ユ湡
-                    HW = model.hw, // 璐т綅
-                    HWZT = model.hwzt // 璐т綅鐘舵�
+                    HW = model.hw, // 璐т綅锛堥渶瑕佽繑鍥烇級
+                    HWZT = model.hwzt // 璐т綅鐘舵�锛堥渶瑕佽繑鍥烇級
                 };
 
-                var cgDetailList = SelectCgByTotalQty(
-                    qty: (int)model.pzsl,
-                    itemCode: model.cpdm,
-                    batchNo: model.ph
-                    );
+                //var cgDetailList = SelectCgByTotalQty(
+                //    qty: (int)model.pzsl,
+                //    itemCode: model.cpdm,
+                //    batchNo: model.ph
+                //    );
 
-                if (cgDetailList.Count == 0) {
-                    info = "娌℃湁鍚堥�鐨勭墿鏂欏彲浠ュ嚭搴�;
+                //if (cgDetailList.Count == 0) {
+                //    info = "娌℃湁鍚堥�鐨勭墿鏂欏彲浠ュ嚭搴�;
+                //    LogHelper.Info(info);
+                //    return NewErpResult(3, info);
+                //}
+
+                var cgDetail = db.Queryable<TN_CG_Detail>()
+                    .Where(d => d.S_ITEM_CODE == model.cpdm && d.N_ITEM_NUM >= model.pzjs).First();
+                if (cgDetail == null ) {
+                    info = $"娌℃湁鍚堥�鐨勭墿鏂欏彲浠ユ弧瓒筹細鐗╂枡缂栫爜={model.cpdm}锛岀墿鏂欐暟閲�={model.pzjs}";
                     LogHelper.Info(info);
-                    return NewErpResult(3, info);
+                    return NewErpResult(2, info);
                 }
 
                 var order = new TN_Outbound_Order {
                     S_NO = orderNo,
+                    //S_ITEM_CODE = model.cpdm,
+                    //S_BATCH = model.ph,
+                    //N_END_NUM = (int)model.pzsl,
                     S_ITEM_CODE = model.cpdm,
-                    S_BATCH = model.ph,
-                    N_END_NUM = (int)model.pzsl,
+                    S_BATCH = cgDetail.S_BATCH_NO,
+                    N_END_NUM = (int)model.pzjs,
                     S_END_AREA = "QCCKQ", // ERP涓嬪彂鍑哄簱浠诲姟涓烘苯杞﹀嚭搴撳尯
                     S_BS_NO = model.jhdh,
                     S_BS_TYPE = "ERP",
                 };
 
                 var detailList = new List<TN_Outbound_Detail>();
-                foreach (var cgDetail in cgDetailList) {
-                    var detail = new TN_Outbound_Detail {
-                        S_OO_NO = orderNo,
-                        S_ITEM_CODE = cgDetail.S_ITEM_CODE,
-                        S_BATCH_NO = cgDetail.S_BATCH_NO,
-                        S_CNTR_CODE = cgDetail.S_CNTR_CODE,
-                        N_COUNT = cgDetail.N_ITEM_NUM,
-                        S_END_AREA = order.S_END_AREA, // order涓篸etail鐨勬瘡涓�釜璐т綅璁剧疆缁堢偣鍊�-                        S_BS_NO = order.S_BS_NO,
-                        S_BS_TYPE= order.S_BS_TYPE,
-                    };
-                    detailList.Add(detail);
-                }
+                //foreach (var cgDetail in cgDetailList) {
+                //    var detail = new TN_Outbound_Detail {
+                //        S_OO_NO = orderNo,
+                //        S_ITEM_CODE = cgDetail.S_ITEM_CODE,
+                //        S_BATCH_NO = cgDetail.S_BATCH_NO,
+                //        S_CNTR_CODE = cgDetail.S_CNTR_CODE,
+                //        N_COUNT = cgDetail.N_ITEM_NUM,
+                //        S_END_AREA = order.S_END_AREA, // order涓篸etail鐨勬瘡涓�釜璐т綅璁剧疆缁堢偣鍊�+                //        S_BS_NO = order.S_BS_NO,
+                //        S_BS_TYPE= order.S_BS_TYPE,
+                //    };
+                //    detailList.Add(detail);
+                //}
+                var detail = new TN_Outbound_Detail {
+                    S_OO_NO = orderNo,
+                    S_ITEM_CODE = cgDetail.S_ITEM_CODE,
+                    S_BATCH_NO = cgDetail.S_BATCH_NO,
+                    S_CNTR_CODE = cgDetail.S_CNTR_CODE,
+                    N_COUNT = cgDetail.N_ITEM_NUM,
+                    S_END_AREA = order.S_END_AREA, // order涓篸etail鐨勬瘡涓�釜璐т綅璁剧疆缁堢偣鍊�+                    S_BS_NO = order.S_BS_NO,
+                    S_BS_TYPE = order.S_BS_TYPE,
+                };
+                detailList.Add(detail);
 
                 using (var tran = db.Ado.UseTran()) {
                     if (db.Insertable<TN_Outbound_Order>(order).ExecuteCommand() <= 0) {
@@ -1560,7 +1590,7 @@
                     tran.CommitTran();
                 }
 
-                info = $"鐢熸垚鍑哄簱鍗曟垚鍔�;
+                info = $"鐢熸垚鍑哄簱鍗曟垚鍔燂細" + JsonConvert.SerializeObject(order) + "\n鍑哄簱鍗曟槑缁嗭細" +JsonConvert.SerializeObject(detail);
                 LogHelper.Info(info);
                 return NewErpResult(0, info);
             }

--
Gitblit v1.9.1