From 2ca90a404fa1ab94eb6374f50c6ddd47a2b7f0e6 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期四, 31 七月 2025 17:23:57 +0800
Subject: [PATCH] 删除有问题的TCP旧代码, 优化事务处理和ERP数据模型

---
 api/ApiHelper.cs |  403 ++++++++++++++++----------------------------------------
 1 files changed, 117 insertions(+), 286 deletions(-)

diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs
index 909bdee..36225f0 100644
--- a/api/ApiHelper.cs
+++ b/api/ApiHelper.cs
@@ -1,19 +1,11 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Security.Cryptography;
-
-using HH.WCS.Mobox3.DSZSH.core;
 using HH.WCS.Mobox3.DSZSH.models;
 using HH.WCS.Mobox3.DSZSH.util;
 using HH.WCS.Mobox3.DSZSH.wms;
-
 using Newtonsoft.Json;
-
 using SqlSugar;
-
-using Swashbuckle.Swagger;
-
 using static HH.WCS.Mobox3.DSZSH.api.ApiModel;
 using static HH.WCS.Mobox3.DSZSH.api.OtherModel;
 
@@ -29,7 +21,7 @@
             var (ok, msg) = (false, string.Empty);
             var obj = new CreateTaskObj();
 
-            var taskInfo = ETask.M婊$涓嬬嚎鍏ュ簱.Info();
+            var tInfo = ETask.M婊$涓嬬嚎鍏ュ簱.Info();
             const string preLog = "API:婊$涓嬬嚎鍏ュ簱:";
             const string cntrType = "濂借繍绠�;
 
@@ -39,7 +31,7 @@
                 }
 
                 // 妫�煡璐у搧瀹瑰櫒琛�鏄惁宸茬粡瀛樺湪璐存爣鏈轰紶閫掔殑寰呭叆搴撶墿鏂欎俊鎭�-                // TODO:鏁伴噺,瑙勬牸鏄惁涔熷弬涓庢瘮瀵癸紵
+                // QES:鏁伴噺,瑙勬牸鏄惁涔熷弬涓庢瘮瀵�
                 var cgDetail = db.Queryable<TN_CG_Detail>()
                     .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo 
                              && d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮").First();
@@ -48,23 +40,28 @@
                         $"璇锋鏌�PDA鎵爜鐗╂枡淇℃伅涓庤创鏍囨満浼犻�鐨勪俊鎭槸鍚︿竴鑷�!");
                 }
 
-                var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First();
+                // 鏌ヨ璧风偣璐т綅(缁戝畾鍓�
+                var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, tInfo.StartAreas)).First();
                 if (startLoc == null) {
-                    return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas));
+                    return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, tInfo.StartAreas));
                 }
 
                 // 鍜屾弧鎵樹笅绾垮叆搴撶殑閫昏緫涓�嚧,鐢变簬瀹瑰櫒绉诲姩涓嶄細鏇存敼缁戝畾淇℃伅,鎵�互蹇呴』鍒犻櫎鏃ф暟鎹�-                WMSHelper.FindCntrOldInfo(obj, cgDetail.S_CNTR_CODE, skipCgDetail: true);
+                WMSHelper.FindOldCntrInfo(obj, cgDetail.S_CNTR_CODE, skipCgDetail: true);
 
+                // 缁戝畾璐т綅瀹瑰櫒
                 var locCntrRel = WMSHelper.BindLocCntr(obj, startLoc, cgDetail.S_CNTR_CODE, cntrType);
 
-                var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas))
+                // 鏌ヨ缁堢偣璐т綅
+                // Order:浼樺厛閫夋嫨浣庡眰璐ф灦
+                var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: tInfo.EndAreas))
                     .OrderBy(l => new { l.N_LAYER }).First();
                 if (endLoc == null) {
-                    return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas));
+                    return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: tInfo.EndAreas));
                 }
 
-                WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName);
+                // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟
+                WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName);
                 (ok, msg) = DbTran.CreateTask(obj);
                 return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
@@ -81,49 +78,42 @@
         public static SimpleResult EmptyInboundPallet(EmptyInboundInfo model) {
             var db = new SqlHelper<object>().GetInstance();
             var (ok, msg) = (false, string.Empty);
+            var obj = new CreateTaskObj();
 
-            var taskInfo = ETask.K绌烘墭鍏ュ簱.Info();
+            var tInfo = ETask.K绌烘墭鍏ュ簱.Info();
             const string preLog = "API:绌烘墭鍏ュ簱:";
             const string cntrType = "鎵樼洏";
 
             try {
-                // 鏌ヨ璧风偣璐т綅:鏁伴噺=0
-                var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First();
-                if (startLoc == null) {
-                    return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas));
-                }
-
                 // 鏌ヨ瀹瑰櫒琛�瀹瑰櫒绫诲瀷瀛楁
                 (ok, msg) = WMSHelper.CheckCntrType(model.CntrCode, cntrType, out var cntr);
                 if (!ok) {
-                    return NewSimpleResult(3, preLog + msg);
+                    return NewSimpleResult(1, preLog + msg);
                 }
-                
+
+                // 鏌ヨ璧风偣璐т綅(缁戝畾鍓�
+                var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, tInfo.StartAreas)).First();
+                if (startLoc == null) {
+                    return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, tInfo.StartAreas));
+                }
+
                 // 绌虹鍏ュ簱鏃�濡傛灉瀛樺湪鏃х殑缁戝畾鏁版嵁,鍒犻櫎
-                var old = WCSHelper.GetLocCntrCg(model.CntrCode);
+                WMSHelper.FindOldCntrInfo(obj, model.CntrCode);
 
                 // 缁戝畾璐т綅瀹瑰櫒
-                var locCntrRel = WCSHelper.BindLocCntr(startLoc, cntr.S_CODE);
-                locCntrRel.S_CNTR_TYPE = cntrType;
+                var locCntrRel = WMSHelper.BindLocCntr(obj, startLoc, cntr.S_CODE, cntrType);
 
                 // 鏌ヨ缁堢偣璐т綅
                 // Order:灞傛暟浠庝綆鍒伴珮,琛�鍒�-                var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas))
+                var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: tInfo.EndAreas))
                     .OrderBy(l => new { l.N_LAYER, l.N_ROW, l.N_COL }).First();
                 if (endLoc == null) {
-                    return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas));
+                    return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: tInfo.EndAreas));
                 }
 
                 // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟
-                var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName);
-
-                (ok, msg) = DbTran.CreateTask(new CreateTaskObj {
-                    Old = old,
-                    New = new LocCntrCg { LocCntrRel = locCntrRel },
-                    StartLocToUpdate = startLoc,
-                    EndLocToUpdate = endLoc,
-                    TaskToInsert = task,
-                });
+                WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName);
+                (ok, msg) = DbTran.CreateTask(obj);
                 return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
@@ -138,44 +128,39 @@
         public static SimpleResult EmptyInboundGoodpack(EmptyInboundInfo model) {
             var db = new SqlHelper<object>().GetInstance();
             var (ok, msg) = (false, string.Empty);
+            var obj = new CreateTaskObj();
 
-            var taskInfo = ETask.K绌虹鍏ュ簱.Info();
+            var tInfo = ETask.K绌虹鍏ュ簱.Info();
             const string preLog = "API:绌虹鍏ュ簱:";
             const string cntrType = "濂借繍绠�;
 
             try {
-                var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First();
+                // 鏌ヨ璧风偣璐т綅(缁戝畾鍓�
+                var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, tInfo.StartAreas)).First();
                 if (startLoc == null) {
-                    return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas));
+                    return NewSimpleResult(1, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, tInfo.StartAreas));
                 }
 
                 // 鏌ヨ瀹瑰櫒琛�瀹瑰櫒绫诲瀷瀛楁
                 (ok, msg) = WMSHelper.CheckCntrType(model.CntrCode, cntrType, out var cntr);
                 if (!ok) {
-                    return NewSimpleResult(3, preLog + msg);
+                    return NewSimpleResult(2, preLog + msg);
                 }
 
                 // 绌虹鍏ュ簱鏃�濡傛灉瀛樺湪鏃х殑缁戝畾鏁版嵁,鍒犻櫎
-                var old = WCSHelper.GetLocCntrCg(model.CntrCode);
+                WMSHelper.FindOldCntrInfo(obj, model.CntrCode);
 
-                var locCntrRel = WCSHelper.BindLocCntr(startLoc, model.CntrCode);
-                locCntrRel.S_CNTR_TYPE = cntrType;
+                var locCntrRel = WMSHelper.BindLocCntr(obj, startLoc, model.CntrCode, cntrType);
 
-                var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas))
+                var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: tInfo.EndAreas))
                     .OrderBy(l => new { l.N_LAYER, l.N_ROW, l.N_COL }).First();
                 if (endLoc == null) {
-                    return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas));
+                    return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: tInfo.EndAreas));
                 }
 
-                var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName);
-
-                (ok, msg) = DbTran.CreateTask(new CreateTaskObj {
-                    Old = old,
-                    New = new LocCntrCg { LocCntrRel = locCntrRel },
-                    StartLocToUpdate = startLoc,
-                    EndLocToUpdate = endLoc,
-                    TaskToInsert = task,
-                });
+                // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟
+                WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName);
+                (ok, msg) = DbTran.CreateTask(obj);
                 return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
@@ -191,8 +176,9 @@
         public static SimpleResult EmptyOnlinePallet(EmptyOnlinePalletInfo model) {
             var db = new SqlHelper<object>().GetInstance();
             var (ok, msg) = (false, string.Empty);
+            var obj = new CreateTaskObj();
 
-            var taskInfo = ETask.K绌烘墭涓婄嚎鍑哄簱.Info();
+            var tInfo = ETask.K绌烘墭涓婄嚎鍑哄簱.Info();
             const string preLog = "API:绌烘墭涓婄嚎鍑哄簱:";
             const string cntrType = "鎵樼洏";
 
@@ -203,11 +189,11 @@
                     return NewSimpleResult(1, preLog + msg);
                 }
 
+                // 妫�煡瀹瑰櫒琛�瀹瑰櫒瑙勬牸(鐗╂枡缂栫爜)
                 var needUpdateContainer = false;
                 if (string.IsNullOrEmpty(cntr.S_SPEC)) {
-                    // TEMP 鐩墠娴佺▼:濡傛灉瀹瑰櫒琛ㄤ腑瑙勬牸 (鐗╂枡缂栫爜) 涓虹┖,鏍规嵁娴佺▼鐨勭墿鏂欎俊鎭啓鍏�-                    // 寰呭畾:鍚庨潰鍙兘浼氭洿鏀规祦绋�鎴栬�鐢ㄥ叾浠栦俊鎭�(濡傜墿鏂欑被鍨�瑙勬牸) 浣滀负瀹瑰櫒鐨勮鏍�-
+                    // 鐩墠娴佺▼:濡傛灉瀹瑰櫒琛ㄤ腑瑙勬牸 (鐗╂枡缂栫爜) 涓虹┖,鏍规嵁娴佺▼鐨勭墿鏂欎俊鎭啓鍏�+                    // TEMP:鍚庨潰鍙兘浼氭洿鏀规祦绋�鎴栬�鐢ㄥ叾浠栦俊鎭�(濡傜墿鏂欑被鍨�瑙勬牸) 浣滀负瀹瑰櫒鐨勮鏍�                     needUpdateContainer = true;
                     cntr.S_SPEC = model.ItemCode;
                     LogHelper.Info($"瀹瑰櫒'{model.CntId}'鍦╗瀹瑰櫒琛╙涓璠瑙勬牸(鐗╂枡缂栫爜)]涓虹┖,灏嗙墿鏂欑紪鐮�{model.ItemCode}'鍐欏叆瀹瑰櫒鐨勮鏍�);
@@ -216,30 +202,29 @@
                     return NewSimpleResult(3, $"瀹瑰櫒'{model.CntId}'宸茬粡涓庣墿鏂欑被鍨�{cntr.S_SPEC}'缁戝畾,鏃犳硶鐢ㄤ簬瑁呰浇鐗╂枡'{model.ItemCode}'!");
                 }
 
+                // 鏌ヨ璧风偣璐т綅
                 var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE)
-                    .Where(DbExpr.StartLoc(areas: taskInfo.StartAreas))
+                    .Where(DbExpr.StartLoc(areas: tInfo.StartAreas))
                     .Where((l, c) => c.S_CNTR_CODE == model.CntId && c.S_CNTR_TYPE == cntrType).First();
                 if (startLoc == null) {
-                    return NewSimpleResult(3, preLog + LogMsg.StartLocNotFound(areas: taskInfo.StartAreas) +
+                    return NewSimpleResult(3, preLog + LogMsg.StartLocNotFound(areas: tInfo.StartAreas) +
                         $"缁戝畾瀹瑰櫒缂栫爜='{model.CntId}';缁戝畾瀹瑰櫒绫诲瀷='{cntrType}';");
                 }
 
-                var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)).First();
+                // 鏌ヨ缁堢偣璐т綅
+                var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: tInfo.EndAreas)).First();
                 if (endLoc == null) {
-                    return NewSimpleResult(5, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas));
+                    return NewSimpleResult(5, preLog + LogMsg.EndLocNotFound(areas: tInfo.EndAreas));
                 }
 
-                var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, model.CntId, taskInfo.TaskName);
+                // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟
+                var task = WMSHelper.CreateTask(obj, startLoc, endLoc, model.CntId, tInfo.TaskName);
 
                 cntr.S_SOURCE = task.S_CODE; // 鐢ㄤ换鍔″彿浣滀负瀹瑰櫒鏇存柊鐨勪緷鎹�                 cntr.T_MODIFY = DateTime.Now;
+                obj.ContainerToUpdate = needUpdateContainer ? cntr : null; // 濡傛灉闇�鏇存柊[瀹瑰櫒琛╙瑙勬牸,鍐欏叆obj
 
-                (ok, msg) = DbTran.CreateTask(new CreateTaskObj {
-                    ContainerToUpdate = needUpdateContainer ? cntr : null,
-                    StartLocToUpdate = startLoc,
-                    EndLocToUpdate = endLoc,
-                    TaskToInsert = task,
-                });
+                (ok, msg) = DbTran.CreateTask(obj);
                 return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
@@ -255,8 +240,9 @@
         public static SimpleResult EmptyOnlineGoodpack(EmptyOnlineGoodpackInfo model) {
             var db = new SqlHelper<object>().GetInstance();
             var (ok, msg) = (false, string.Empty);
+            var obj = new CreateTaskObj();
 
-            var taskInfo = ETask.K绌虹涓婄嚎鍑哄簱.Info();
+            var tInfo = ETask.K绌虹涓婄嚎鍑哄簱.Info();
             const string preLog = "API:绌虹涓婄嚎鍑哄簱:";
             const string cntrType = "濂借繍绠�;
 
@@ -268,26 +254,21 @@
                 }
 
                 var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE)
-                    .Where(DbExpr.StartLoc(areas: taskInfo.StartAreas))
+                    .Where(DbExpr.StartLoc(areas: tInfo.StartAreas))
                     .Where((l, c) => c.S_CNTR_CODE == model.CntId && c.S_CNTR_TYPE == cntrType).First();
                 if (startLoc == null) {
-                    return NewSimpleResult(2, preLog + preLog + LogMsg.StartLocNotFound(areas: taskInfo.StartAreas) +
+                    return NewSimpleResult(2, preLog + preLog + LogMsg.StartLocNotFound(areas: tInfo.StartAreas) +
                         $"缁戝畾瀹瑰櫒缂栫爜='{model.CntId}';缁戝畾瀹瑰櫒绫诲瀷='{cntrType}';");
                 }
 
-                var endLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y")
-                    .Where(l => taskInfo.EndAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).First();
+                var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: tInfo.EndAreas)).First();
                 if (endLoc == null) {
-                    return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas));
+                    return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: tInfo.EndAreas));
                 }
 
-                var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, model.CntId, taskInfo.TaskName);
-
-                (ok, msg) = DbTran.CreateTask(new CreateTaskObj {
-                    StartLocToUpdate = startLoc,
-                    EndLocToUpdate = endLoc,
-                    TaskToInsert = task,
-                });
+                // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟
+                WMSHelper.CreateTask(obj, startLoc, endLoc, model.CntId, tInfo.TaskName);
+                (ok, msg) = DbTran.CreateTask(obj);
                 return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
@@ -303,45 +284,43 @@
         public static SimpleResult QualifiedBack(QualifiedBackInfo model) {
             var db = new SqlHelper<object>().GetInstance();
             var (ok, msg) = (false, string.Empty);
+            var obj = new CreateTaskObj();
 
-            var taskInfo = ETask.C鎶芥鍚堟牸鍥炲簱.Info();
-            const string preLog = "API:鎶芥鍚堟牸鍥炲簱";
+            var tInfo = ETask.C鎶芥鍚堟牸鍥炲簱.Info();
+            const string preLog = "API:鎶芥鍚堟牸鍥炲簱:";
 
             try {
                 var cgDetail = db.Queryable<TN_CG_Detail>()
                     .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_CNTR_CODE == model.CntrCode).First();
                 if (cgDetail == null) {
-                    return NewSimpleResult(2, preLog + LogMsg.CgDetailNotFound(item: model.ItemCode, cntr: model.CntrCode));
+                    return NewSimpleResult(1, preLog + LogMsg.CgDetailNotFound(item: model.ItemCode, cntr: model.CntrCode));
                 }
 
                 var locCntrRel = db.Queryable<TN_Loc_Container>().Where(c => c.S_CNTR_CODE == cgDetail.S_CNTR_CODE).First();
                 if (locCntrRel == null) {
-                    return NewSimpleResult(3, preLog + LogMsg.LocCntrRelNotFound(cntr: cgDetail.S_CNTR_CODE));
+                    return NewSimpleResult(2, preLog + LogMsg.LocCntrRelNotFound(cntr: cgDetail.S_CNTR_CODE));
                 }
 
-                var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(locCntrRel.S_LOC_CODE, taskInfo.StartAreas)).First();
+                var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(locCntrRel.S_LOC_CODE, tInfo.StartAreas)).First();
                 if (startLoc == null) {
-                    return NewSimpleResult(4, preLog + LogMsg.StartLocNotFound(locCntrRel.S_LOC_CODE, taskInfo.StartAreas));
+                    return NewSimpleResult(3, preLog + LogMsg.StartLocNotFound(locCntrRel.S_LOC_CODE, tInfo.StartAreas));
                 }
 
-                var endAreas = locCntrRel.S_CNTR_CODE == "鎵樼洏" ? taskInfo.EndAreas_Pallet : taskInfo.EndAreas_Goodpack;
+                var endAreas = locCntrRel.S_CNTR_CODE == "鎵樼洏" ? tInfo.EndAreas_Pallet : tInfo.EndAreas_Goodpack;
                 var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: endAreas)).First();
                 if (endLoc == null) {
-                    return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: endAreas));
+                    return NewSimpleResult(4, preLog + LogMsg.EndLocNotFound(areas: endAreas));
                 }
 
+                //淇敼鐗╂枡鐘舵�涓篬鍚堟牸]
                 cgDetail.N_ITEM_STATE = 0;
                 cgDetail.S_ITEM_STATE = "鍚堟牸";
                 cgDetail.T_MODIFY = DateTime.Now;
+                obj.CgDetailToUpdate = cgDetail;
 
-                var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName);
-
-                (ok, msg) = DbTran.CreateTask(new CreateTaskObj {
-                    CgDetailToUpdate = cgDetail,
-                    StartLocToUpdate = startLoc,
-                    EndLocToUpdate = endLoc,
-                    TaskToInsert = task,
-                });
+                // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟
+                WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName);
+                (ok, msg) = DbTran.CreateTask(obj);
                 return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
@@ -357,13 +336,14 @@
         public static SimpleResult UnqualifiedShift(UnqualifiedShiftInfo model) {
             var db = new SqlHelper<object>().GetInstance();
             var (ok, msg) = (false, string.Empty);
+            var obj = new CreateTaskObj();
 
-            var taskInfo = ETask.C鎶芥涓嶅悎鏍肩Щ搴�Info();
+            var tInfo = ETask.C鎶芥涓嶅悎鏍肩Щ搴�Info();
             const string preLog = "API:鎶芥涓嶅悎鏍肩Щ搴�";
 
             try {
-                if (!taskInfo.EndAreas.Contains(model.EndArea)) {
-                    return NewSimpleResult(1, preLog + $"缁堢偣搴撳尯'{model.EndArea}'涓嶆弧瓒虫潯浠�闇�:璐у尯={LogObject(taskInfo.EndAreas)}");
+                if (!tInfo.EndAreas.Contains(model.EndArea)) {
+                    return NewSimpleResult(1, preLog + $"缁堢偣搴撳尯'{model.EndArea}'涓嶆弧瓒虫潯浠�闇�:璐у尯={LogObject(tInfo.EndAreas)}");
                 }
 
                 var cgDetail = db.Queryable<TN_CG_Detail>()
@@ -377,27 +357,24 @@
                     return NewSimpleResult(3, preLog + LogMsg.LocCntrRelNotFound(cntr: cgDetail.S_CNTR_CODE));
                 }
 
-                var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(locCntrRel.S_LOC_CODE, taskInfo.StartAreas)).First();
+                var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(locCntrRel.S_LOC_CODE, tInfo.StartAreas)).First();
                 if (startLoc == null) {
-                    return NewSimpleResult(1, preLog + LogMsg.StartLocNotFound(locCntrRel.S_LOC_CODE, taskInfo.StartAreas));
+                    return NewSimpleResult(4, preLog + LogMsg.StartLocNotFound(locCntrRel.S_LOC_CODE, tInfo.StartAreas));
                 }
 
                 var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: new List<string> { model.EndArea })).First();
                 if (endLoc == null) {
-                    return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: new List<string> { model.EndArea }));
+                    return NewSimpleResult(5, preLog + LogMsg.EndLocNotFound(areas: new List<string> { model.EndArea }));
                 }
 
                 cgDetail.N_ITEM_STATE = 2;
                 cgDetail.S_ITEM_STATE = "涓嶅悎鏍�;
+                cgDetail.T_MODIFY = DateTime.Now;
+                obj.CgDetailToUpdate = cgDetail;
 
-                var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName);
-
-                (ok, msg) = DbTran.CreateTask(new CreateTaskObj {
-                    CgDetailToUpdate = cgDetail,
-                    StartLocToUpdate = startLoc,
-                    EndLocToUpdate = endLoc,
-                    TaskToInsert = task,
-                });
+                // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟
+                WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName);
+                (ok, msg) = DbTran.CreateTask(obj);
                 return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
@@ -413,8 +390,9 @@
         public static SimpleResult RestBack(RestBackInfo model) {
             var db = new SqlHelper<object>().GetInstance();
             var (ok, msg) = (false, string.Empty);
+            var obj = new CreateTaskObj();
 
-            var taskInfo = ETask.W灏炬枡鍥炲簱.Info();
+            var tInfo = ETask.W灏炬枡鍥炲簱.Info();
             const string preLog = "API:灏炬枡鍥炲簱:";
             
             try {
@@ -428,19 +406,15 @@
                     return NewSimpleResult(3, preLog + LogMsg.LocCntrRelNotFound(loc: model.StartLoc));
                 }
 
-                var endAreas = locCntrRel.S_CNTR_CODE == "鎵樼洏" ? taskInfo.EndAreas_Pallet : taskInfo.EndAreas_Goodpack;
+                var endAreas = locCntrRel.S_CNTR_CODE == "鎵樼洏" ? tInfo.EndAreas_Pallet : tInfo.EndAreas_Goodpack;
                 var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: endAreas)).First();
                 if (endLoc == null) {
                     return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: endAreas));
                 }
 
-                var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName);
-
-                (ok, msg) = DbTran.CreateTask(new CreateTaskObj {
-                    StartLocToUpdate = startLoc,
-                    EndLocToUpdate = endLoc,
-                    TaskToInsert = task,
-                });
+                // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟
+                WMSHelper.CreateTask(obj, startLoc, endLoc, locCntrRel.S_CNTR_CODE, tInfo.TaskName);
+                (ok, msg) = DbTran.CreateTask(obj);
                 return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
@@ -449,7 +423,20 @@
         }
 
         /// <summary>
-        /// 鎴愬搧鑳跺嚭搴�PDA) 寰呭畾,鏆傛椂涓嶉渶瑕佹鍔熻兘
+        /// 鐢熸垚鍑哄簱鍗曞彿,绉佹湁
+        /// </summary>
+        /// <param name="snType"></param>
+        /// <param name="prefix"></param>
+        /// <returns></returns>
+        private static string GenerateOrderNo(string snType, string prefix) {
+            //var id = SYSHelper.GetSerialNumberResetByDay(snType, prefix);
+            //var date = DateTime.Now.ToString("yyMMdd");
+            //return $"{prefix}{date}-{id.ToString().PadLeft(4, '0')}";
+            return SYSHelper.GenerateSN(snType, prefix, "yyMMdd");
+        }
+
+        /// <summary>
+        /// 鎴愬搧鑳跺嚭搴�鎼佺疆)
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
@@ -457,7 +444,7 @@
             var db = new SqlHelper<object>().GetInstance();
             var (ok, msg) = (false, string.Empty);
 
-            var taskInfo = ETask.C鎴愬搧鑳跺嚭搴�Info();
+            var tInfo = ETask.C鎴愬搧鑳跺嚭搴�Info();
             const string preLog = "API:鎴愬搧鑳跺嚭搴�";
 
             try {
@@ -555,12 +542,12 @@
                 using (var tran = db.Ado.UseTran()) {
                     if (db.Insertable(order).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        return NewSimpleResult(2, preLog + "鐢熸垚鍑哄簱鍗曞け璐�" + LogObject(order));
+                        return NewSimpleResult(500, preLog + "鐢熸垚鍑哄簱鍗曞け璐�" + LogObject(order));
                     }
 
                     if (db.Insertable(detailList).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        return NewSimpleResult(4, preLog + "鐢熸垚鍑哄簱鍗曟槑缁嗗け璐�" + LogObject(detailList));
+                        return NewSimpleResult(500, preLog + "鐢熸垚鍑哄簱鍗曟槑缁嗗け璐�" + LogObject(detailList));
                     }
 
                     tran.CommitTran();
@@ -588,7 +575,7 @@
                     return result;
                 }
 
-                // NOTE 鏍规嵁鎬婚噺閫塪etail鏃�鏄惁闇�鑰冭檻璐т綅鐨勯珮浣庯紵
+                // NOTE 鏍规嵁鎬婚噺閫塪etail鏃�鏄惁闇�鑰冭檻璐т綅鐨勯珮浣�
 
                 var sortedMaterials = new List<TN_CG_Detail>();
 
@@ -645,12 +632,7 @@
             }
         }
 
-        private static string GenerateOrderNo(string snType, string prefix) {
-            //var id = SYSHelper.GetSerialNumberResetByDay(snType, prefix);
-            //var date = DateTime.Now.ToString("yyMMdd");
-            //return $"{prefix}{date}-{id.ToString().PadLeft(4, '0')}";
-            return SYSHelper.GenerateSN(snType, prefix, "yyMMdd");
-        }
+        
 
         /// <summary>
         /// 鍗氬疄鐗╂枡淇℃伅涓嬪彂鍚屾 (鍙拡瀵瑰ソ杩愮) 
@@ -715,157 +697,6 @@
             }
             catch (Exception ex) {
                 return NewMesResult(-1, preLog + $"鍙戠敓浜嗗紓甯�{ex.Message}\n\n{ex.StackTrace}\n");
-            }
-        }
-
-        public static ErpResult ErpSendOutboundPlan(ErpSendOutboundPlanInfo model) {
-            var db = new SqlHelper<object>().GetInstance();
-            var orderNo = GenerateOrderNo("鍑哄簱鍗曞彿", "CKD");
-            const string preLog = "API:ERP涓嬪彂鍑哄簱璁″垝鍗�";
-            try {
-                if (model.pzjs <= 0) {
-                    return NewErpResult(400, preLog + $"鐗╂枡鏁伴噺(pzjs)'{model.pzjs}'涓嶅悎娉�瑕佹眰:鐗╂枡鏁伴噺锛�");
-                }
-
-                var outboundPlan = db.Queryable<TN_Outbound_Plan>()
-                    .Where(p => p.JHDH == model.jhdh).First();
-                if (outboundPlan != null) {
-                    return NewErpResult(1, preLog + $"璁″垝鍗曞彿'{model.jhdh}'宸插湪[鍑哄簱璁″垝鍗昡涓瓨鍦�");
-                }
-
-                outboundPlan = new TN_Outbound_Plan {
-                    JHDH = model.jhdh, // 璁″垝鍗曞彿 (鍞竴鏍囪瘑) 
-                    CKZT = model.ckzt, // 鍑哄簱鐘舵� (闇�杩斿洖) 
-                    JHLB = model.jhlb, // 璁″垝绫诲埆
-                    CKDH = model.ckdh, // 鍙傝�鍗曞彿
-                    CPH = model.cph, // 杞︾墝鍙�-                    YSFS = model.ysfs, // 杩愯緭鏂瑰紡
-                    CPZT = model.cpzt, // 浜у搧鐘舵�
-                    MDDW = model.mddw, // 涔版柇鍗曚綅
-                    CPDM = model.cpdm, // 浜у搧浠g爜
-                    CPLB = model.cplb, // 浜у搧绫诲埆
-                    CPLBMX = model.cplbmx, // 浜у搧绫诲埆鏄庣粏
-                    PP = model.pp, // 鍝佺墝
-                    DJ = model.dj, // 绛夌骇 (闇�杩斿洖) 
-                    GH = model.gh, // 缃愬彿
-                    PH = model.ph, // 鎵瑰彿 (闇�杩斿洖) 
-                    BZLX = model.bzlx, // 鍖呰绫诲瀷
-                    PZDH = model.pzdh, // 娲捐鍗曞彿
-                    PZD_DW = model.pzd_dw, // 娲捐鍗曞崟浣�-                    PZD_DYBH = model.pzd_dybh, // 娲捐鍗曡皟杩愮紪鍙�-                    PZJS = model.pzjs, // 娲捐浠舵暟
-                    PZSL = model.pzsl, // 娲捐鏁伴噺
-                    PZ_RQ = model.pz_rq, // 娲捐鏃ユ湡(yyyy-mm-dd)
-                    PZ_CZRQ = model.pz_czrq, // 娲捐鎿嶄綔鏃ユ湡
-                    PZ_ZFBJ = model.pz_zfbj, // 娲捐浣滃簾鏍囪
-                    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, // 鎿嶄綔鍛�(闇�杩斿洖) 
-                    SHR_USERNAME = model.shr_username, // 瀹℃牳浜�-                    SHRQ = model.shrq, // 瀹℃牳鏃ユ湡
-                    ZFBJ = model.zfbj, // 浣滃簾鏍囪
-                    ZFRQ = model.zfrq, // 浣滃簾鏃ユ湡
-                    JSDW = model.jsdw, // 缁撶畻鍗曚綅
-                    SHDW = model.shdw, // 鏀惰揣鍗曚綅
-                    YSDW = model.ysdw, // 杩愯緭鍗曚綅
-                    LXR = model.lxr, // 鑱旂郴浜�-                    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 // 璐т綅鐘舵� (闇�杩斿洖) 
-                };
-
-                //var cgDetailList = SelectCgByTotalQty(
-                //    qty: (int)model.pzsl,
-                //    itemCode: model.cpdm,
-                //    batchNo: model.ph
-                //    );
-
-                //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 ) {
-                    return NewErpResult(2, preLog + $"鍦╗璐у搧鏄庣粏琛╙涓病鏈夋壘鍒板悎閫傜殑鐗╂枡!瑕佹眰:鐗╂枡缂栫爜='{model.cpdm}',鐗╂枡鏁伴噺>={model.pzjs}");
-                }
-
-                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 = 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);
-                //}
-                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(order).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewErpResult(500, preLog + $"鐢熸垚[鍑哄簱鍗昡澶辫触!鏁版嵁:{LogObject(order)}");
-                    }
-
-                    if (db.Insertable(detailList).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewErpResult(500, preLog + $"鐢熸垚[鍑哄簱鍗曟槑缁哴澶辫触!鏁版嵁:{LogObject(detailList)}");
-                    }
-
-                    if (db.Insertable(outboundPlan).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewErpResult(500, preLog + $"鐢熸垚[鍑哄簱鍗曡鍒掕褰曡〃]澶辫触!鏁版嵁:{LogObject(outboundPlan)}");
-                    }
-
-                    tran.CommitTran();
-                    return NewErpResult(0, preLog + $"鐢熸垚[鍑哄簱鍗昡鎴愬姛!鍑哄簱鍗�{LogObject(order)}\n鍑哄簱鍗曟槑缁�{LogObject(detail)}");
-                }
-            }
-            catch (Exception ex) {
-                return NewErpResult(1, preLog + $"鍙戠敓浜嗗紓甯�{ex.Message}\n\n{ex.StackTrace}\n");
             }
         }
 

--
Gitblit v1.9.1