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