From b079910e5de15863c26e479ffab15cc45d706f1a Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期一, 19 五月 2025 16:25:22 +0800 Subject: [PATCH] 测试修复轮询出库、抽检流程的问题 --- Services/MoboxService.cs | 408 ++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 252 insertions(+), 156 deletions(-) diff --git a/Services/MoboxService.cs b/Services/MoboxService.cs index 4ff7773..1e82ed8 100644 --- a/Services/MoboxService.cs +++ b/Services/MoboxService.cs @@ -3,6 +3,7 @@ using System.Linq; using HH.WCS.Mobox3.DSZSH.Consts; +using HH.WCS.Mobox3.DSZSH.Dispatch; using HH.WCS.Mobox3.DSZSH.Helper; using HH.WCS.Mobox3.DSZSH.Helpers; using HH.WCS.Mobox3.DSZSH.Models; @@ -13,7 +14,6 @@ using static HH.WCS.Mobox3.DSZSH.Dtos.Request.MoboxRequest; using static HH.WCS.Mobox3.DSZSH.Dtos.Response.MoboxResponse; -using static HH.WCS.Mobox3.DSZSH.Helpers.ResultHelper; namespace HH.WCS.Mobox3.DSZSH.Services { public class MoboxService { @@ -30,169 +30,185 @@ var db = DbHelper.GetDbClient(); try { - // TODO 灏哖DA鎻愪緵鐨勭墿鏂欑紪鐮佷笌璐存爣鏈虹殑淇℃伅姣斿 + // 灏哖DA鎻愪緵鐨勭墿鏂欑紪鐮佷笌璐存爣鏈虹殑淇℃伅姣斿 + var cgDetail = db.Queryable<TN_CG_Detail>() + .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo) // 鎸囧畾锛氱墿鏂欑紪鐮併�鎵规鍙�+ .Where(d => d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮") // NOTE 鍐椾綑妫�煡锛氱墿鏂欑姸鎬佸簲璇ヤ负 1寰呮 + .First(); - var startLoc = db.Queryable<TN_Location>() - .Where(ExprHelper.LocCode(model.StartLoc)) - .Where(ExprHelper.LocIsFree) - .Where(ExprHelper.LocIsEmpty.Negate()).First(); - - if (startLoc == null) { - return BuildSimpleResult(2, $"璧风偣浣嶇疆 '{model.StartLoc}' 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�); + if (cgDetail == null) { + return BuildSimpleResult(2, $"PDA鎵爜鐗╂枡淇℃伅涓庤创鏍囨満浼犻�鐨勪俊鎭笉涓�嚧锛� + JsonConvert.SerializeObject(model)); } - // 鏌ョ湅瀹瑰櫒涓庤捣鐐硅揣浣嶆槸鍚︾粦瀹�- var locCntrRel = db.Queryable<TN_Loc_Container>().First( - a => a.S_LOC_CODE == startLoc.S_CODE); - if (locCntrRel == null) { - return BuildSimpleResult(3, $"璧风偣浣嶇疆 '{model.StartLoc}' 鏃犲彲鍑哄簱鐨勭墿鏂�); + var startLoc = db.Queryable<TN_Location>() + .Where(ExprHelper.LocCode(model.StartLoc)) // 鎸囧畾锛氳捣鐐硅揣浣�+ .Where(ExprHelper.LocIsFree) + //.Where(ExprHelper.LocIsEmpty) + .First(); + + if (startLoc == null) { + return BuildSimpleResult(3, $"璧风偣浣嶇疆 '{model.StartLoc}' 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�); + } + + // 缁戝畾璐т綅鍜屽鍣ㄥ彿 + var locCntrRel = new TN_Loc_Container { + S_LOC_CODE = model.StartLoc, + S_CNTR_CODE = cgDetail.S_CNTR_CODE, + S_CNTR_TYPE = "濂借繍绠�, + }; + + if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) { + return BuildSimpleResult(4, $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴澶辫触锛� + JsonConvert.SerializeObject(locCntrRel)); } // TODO 婊$鍏ュ簱绠楁硶寰呬紭鍖� var endLoc = db.Queryable<TN_Location>() .Where(ExprHelper.LocBelongsToArea(AreaName.婊$瀛樻斁鍖�) .Where(ExprHelper.LocIsFree) - .Where(ExprHelper.LocIsFree) + .Where(ExprHelper.LocIsEmpty) .OrderBy(l => l.N_LAYER) .OrderBy(l => l.S_AREA_CODE).First(); if (endLoc == null) { - return BuildSimpleResult(4, "婊$鍏ュ簱鏆傛椂娌℃湁鍚堥�鐨勮揣浣嶅彲浠ュ叆搴�); + return BuildSimpleResult(5, "婊$鍏ュ簱鏆傛椂娌℃湁鍚堥�鐨勮揣浣嶅彲浠ュ叆搴�); } - return TaskHelper.SimpleCreateTask(startLoc.S_CODE, locCntrRel.S_CNTR_CODE, endLoc.S_CODE, taskName); + return TaskHelper.SimpleCreateTask(startLoc.S_CODE, locCntrRel.S_CNTR_CODE, endLoc.S_CODE, taskName, failCode: 6); } catch (Exception ex) { return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); } } - /// <summary> - /// 绌烘墭鐩樼粦瀹�PDA) - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - public static SimpleResult EmptyBindPallet(EmptyBindInfo model) { - var db = DbHelper.GetDbClient(); + ///// <summary> + ///// 绌烘墭鐩樼粦瀹�PDA) + ///// </summary> + ///// <param name="model"></param> + ///// <returns></returns> + //public static SimpleResult EmptyBindPallet(EmptyBindInfo model) { + // var db = DbHelper.GetDbClient(); - try { - var loc = db.Queryable<TN_Location>() - .Where(ExprHelper.LocCode(model.LocCode)) - .Where(ExprHelper.LocBelongsToArea(AreaName.绌烘墭鐩樻帴椹冲尯)) - .Where(ExprHelper.LocIsFree) - .Where(ExprHelper.LocIsEmpty).First(); + // try { + // var loc = db.Queryable<TN_Location>() + // .Where(ExprHelper.LocCode(model.LocCode)) + // .Where(ExprHelper.LocBelongsToArea(AreaName.绌烘墭鐩樻帴椹冲尯)) + // .Where(ExprHelper.LocIsFree) + // .Where(ExprHelper.LocIsEmpty).First(); - if (loc == null) { - return BuildSimpleResult(2, $"褰撳墠璐т綅 '{model.LocCode}' 鏃犳硶鍐嶇粦瀹氬鍣�); - } + // if (loc == null) { + // return BuildSimpleResult(2, $"褰撳墠璐т綅 '{model.LocCode}' 鏃犳硶鍐嶇粦瀹氬鍣�); + // } - var locCntrRel = db.Queryable<TN_Loc_Container>() - .Where(lc => lc.S_CNTR_CODE == model.LocCode).First(); + // var locCntrRel = db.Queryable<TN_Loc_Container>() + // .Where(lc => lc.S_CNTR_CODE == model.LocCode).First(); - if (locCntrRel != null) { - return BuildSimpleResult(3, $"褰撳墠瀹瑰櫒 '{model.CntrCode}' 宸茬粡涓�'{locCntrRel.S_LOC_CODE}' 缁戝畾"); - } + // if (locCntrRel != null) { + // return BuildSimpleResult(3, $"褰撳墠瀹瑰櫒 '{model.CntrCode}' 宸茬粡涓�'{locCntrRel.S_LOC_CODE}' 缁戝畾"); + // } - //loc.N_CURRENT_NUM = model.PalletCount; + // //loc.N_CURRENT_NUM = model.PalletCount; - locCntrRel = new TN_Loc_Container { - S_LOC_CODE = model.LocCode, - S_CNTR_CODE = model.CntrCode - }; + // locCntrRel = new TN_Loc_Container { + // S_LOC_CODE = model.LocCode, + // S_CNTR_CODE = model.CntrCode + // }; - using (var tran = db.Ado.UseTran()) { - if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() > 0 - && db.Updateable<TN_Location>(loc).UpdateColumns(it => it.N_CURRENT_NUM).ExecuteCommand() > 0) { - tran.CommitTran(); - return BuildSimpleResult(0, $"缁戝畾瀹瑰櫒 '{model.CntrCode}' 涓庤揣浣�'{model.LocCode}' 鎴愬姛"); - } - else { - tran.RollbackTran(); - return BuildSimpleResult(4, $"缁戝畾瀹瑰櫒 '{model.CntrCode}' 涓庤揣浣�'{model.LocCode}' 澶辫触"); - } - } - } - catch (Exception ex) { - return BuildSimpleEx(ex); - } - } + // using (var tran = db.Ado.UseTran()) { + // if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() > 0 + // && db.Updateable<TN_Location>(loc).UpdateColumns(it => it.N_CURRENT_NUM).ExecuteCommand() > 0) { + // tran.CommitTran(); + // return BuildSimpleResult(0, $"缁戝畾瀹瑰櫒 '{model.CntrCode}' 涓庤揣浣�'{model.LocCode}' 鎴愬姛"); + // } + // else { + // tran.RollbackTran(); + // return BuildSimpleResult(4, $"缁戝畾瀹瑰櫒 '{model.CntrCode}' 涓庤揣浣�'{model.LocCode}' 澶辫触"); + // } + // } + // } + // catch (Exception ex) { + // return BuildSimpleEx(ex); + // } + //} - /// <summary> - /// 绌虹缁戝畾(PDA) - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - public static SimpleResult EmptyBindGoodpack(EmptyBindInfo model) { - var db = DbHelper.GetDbClient(); + ///// <summary> + ///// 绌虹缁戝畾(PDA) + ///// </summary> + ///// <param name="model"></param> + ///// <returns></returns> + //public static SimpleResult EmptyBindGoodpack(EmptyBindInfo model) { + // var db = DbHelper.GetDbClient(); - try { - var loc = db.Queryable<TN_Location>() - .Where(ExprHelper.LocCode(model.LocCode)) - .Where(ExprHelper.LocBelongsToArea(AreaName.绌虹鎺ラ┏鍖�) - .Where(ExprHelper.LocIsFree) - .Where(ExprHelper.LocIsEmpty).First(); + // try { + // var loc = db.Queryable<TN_Location>() + // .Where(ExprHelper.LocCode(model.LocCode)) + // .Where(ExprHelper.LocBelongsToArea(AreaName.绌虹鎺ラ┏鍖�) + // .Where(ExprHelper.LocIsFree) + // .Where(ExprHelper.LocIsEmpty).First(); - if (loc == null) { - return BuildSimpleResult(2, $"褰撳墠璐т綅 '{model.LocCode}' 鏃犳硶鍐嶇粦瀹氬鍣�); - } + // if (loc == null) { + // return BuildSimpleResult(2, $"褰撳墠璐т綅 '{model.LocCode}' 鏃犳硶鍐嶇粦瀹氬鍣�); + // } - var locCntrRel = db.Queryable<TN_Loc_Container>() - .Where(lc => lc.S_CNTR_CODE == model.LocCode).First(); + // var locCntrRel = db.Queryable<TN_Loc_Container>() + // .Where(lc => lc.S_CNTR_CODE == model.LocCode).First(); - if (locCntrRel != null) { - return BuildSimpleResult(3, $"褰撳墠瀹瑰櫒 '{model.CntrCode}' 宸茬粡涓�'{locCntrRel.S_LOC_CODE}' 缁戝畾"); - } + // if (locCntrRel != null) { + // return BuildSimpleResult(3, $"褰撳墠瀹瑰櫒 '{model.CntrCode}' 宸茬粡涓�'{locCntrRel.S_LOC_CODE}' 缁戝畾"); + // } - loc.N_CURRENT_NUM = 1; // 绌虹缁戝畾鏃跺鍣ㄦ暟蹇呯劧涓�1 + // loc.N_CURRENT_NUM = 1; // 绌虹缁戝畾鏃跺鍣ㄦ暟蹇呯劧涓�1 - locCntrRel = new TN_Loc_Container { - S_LOC_CODE = model.LocCode, - S_CNTR_CODE = model.CntrCode - }; + // locCntrRel = new TN_Loc_Container { + // S_LOC_CODE = model.LocCode, + // S_CNTR_CODE = model.CntrCode + // }; - using (var tran = db.Ado.UseTran()) { - if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() > 0 - && db.Updateable<TN_Location>(loc).UpdateColumns(it => it.N_CURRENT_NUM).ExecuteCommand() > 0) { - tran.CommitTran(); - return BuildSimpleResult(0, $"缁戝畾瀹瑰櫒 '{model.CntrCode}' 涓庤揣浣�'{model.LocCode}' 鎴愬姛"); - } - else { - tran.RollbackTran(); - return BuildSimpleResult(4, $"缁戝畾瀹瑰櫒 '{model.CntrCode}' 涓庤揣浣�'{model.LocCode}' 澶辫触"); - } - } - - } - catch (Exception ex) { - return BuildSimpleEx(ex); - } - } + // using (var tran = db.Ado.UseTran()) { + // if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() > 0 + // && db.Updateable<TN_Location>(loc).UpdateColumns(it => it.N_CURRENT_NUM).ExecuteCommand() > 0) { + // tran.CommitTran(); + // return BuildSimpleResult(0, $"缁戝畾瀹瑰櫒 '{model.CntrCode}' 涓庤揣浣�'{model.LocCode}' 鎴愬姛"); + // } + // else { + // tran.RollbackTran(); + // return BuildSimpleResult(4, $"缁戝畾瀹瑰櫒 '{model.CntrCode}' 涓庤揣浣�'{model.LocCode}' 澶辫触"); + // } + // } + // } + // catch (Exception ex) { + // return BuildSimpleEx(ex); + // } + //} /// <summary> /// 鎵樼洏-绌烘墭鍏ュ簱(PDA) /// </summary> /// <param name="model"></param> /// <returns></returns> - public static SimpleResult EmptyInboundPallet(EmptyInboundDetailInfo model) { + public static SimpleResult EmptyInboundPallet(EmptyInboundInfo model) { var taskName = TaskName.鎵樼洏_绌烘墭鍏ュ簱; var db = DbHelper.GetDbClient(); try { + + var startLoc = db.Queryable<TN_Location>() .Where(ExprHelper.LocCode(model.StartLoc)) .Where(ExprHelper.LocIsFree) - .Where(ExprHelper.LocIsEmpty.Negate()).First(); + .Where(ExprHelper.LocIsEmpty.Negate()) + .First(); if (startLoc == null) { return BuildSimpleResult(2, $"璧风偣浣嶇疆 '{model.StartLoc}' 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�); } // 鏌ョ湅瀹瑰櫒涓庤捣鐐硅揣浣嶆槸鍚︾粦瀹�- var locCntrRel = db.Queryable<TN_Loc_Container>().First( - a => a.S_LOC_CODE == model.StartLoc - && a.S_CNTR_CODE == model.CntId); + var locCntrRel = db.Queryable<TN_Loc_Container>() + .Where(c => c.S_LOC_CODE == model.StartLoc && c.S_CNTR_CODE == model.CntrCode) + .First(); + if (locCntrRel == null) { - return BuildSimpleResult(3, $"璧风偣浣嶇疆 '{model.StartLoc}' 娌℃湁缁戝畾瀹瑰櫒 '{model.CntId}'"); + return BuildSimpleResult(3, $"璧风偣浣嶇疆 '{model.StartLoc}' 娌℃湁缁戝畾瀹瑰櫒 '{model.CntrCode}'"); } // TODO 鏆傚畾閫夋嫨鏈�綆灞傛寜鍖轰綅椤哄簭鍏ュ簱锛屽悗闈㈠緟淇敼 @@ -216,7 +232,7 @@ /// 濂借繍绠�绌虹鍏ュ簱(PDA) /// </summary> /// <returns></returns> - public static SimpleResult EmptyInboundGoodpack(EmptyInboundDetailInfo model) { + public static SimpleResult EmptyInboundGoodpack(EmptyInboundInfo model) { var taskName = TaskName.濂借繍绠盻绌虹鍏ュ簱; var db = DbHelper.GetDbClient(); @@ -231,11 +247,12 @@ } // 鏌ョ湅瀹瑰櫒涓庤捣鐐硅揣浣嶆槸鍚︾粦瀹�- var locCntrRel = db.Queryable<TN_Loc_Container>().First( - a => a.S_LOC_CODE == model.StartLoc - && a.S_CNTR_CODE == model.CntId); + var locCntrRel = db.Queryable<TN_Loc_Container>() + .Where(c => c.S_LOC_CODE == model.StartLoc && c.S_CNTR_CODE == model.CntrCode) + .First(); + if (locCntrRel == null) { - return BuildSimpleResult(3, $"璧风偣浣嶇疆 '{model.StartLoc}' 娌℃湁缁戝畾瀹瑰櫒 '{model.CntId}'"); + return BuildSimpleResult(3, $"璧风偣浣嶇疆 '{model.StartLoc}' 娌℃湁缁戝畾瀹瑰櫒 '{model.CntrCode}'"); } // TODO 鏆傚畾閫夋嫨鏈�綆灞傛寜鍖轰綅椤哄簭鍏ュ簱锛屽悗闈㈠緟淇敼 @@ -355,11 +372,13 @@ public static SimpleResult CreateCheckOrder(CreateCheckOrderInfo model) { var db = DbHelper.GetDbClient(); try { + var orderNo = GenerateOrderNo("鎶芥鍗曞彿", "CN"); + // 缁戝畾鎿嶄綔锛氭彃鍏ュ嚭搴撳崟銆佹墍鏈夌殑鍑哄簱鍗曟槑缁� using (var tran = db.Ado.UseTran()) { var order = new TN_Check_Order { - S_NO = GenerateOrderNo("鎶芥鍗曞彿", "CN"), + S_NO = orderNo, S_ITEM_CODE = model.ItemCode, //S_ITEM_NAME = model.ItemName, S_BATCH_NO = model.BatchNo, @@ -372,20 +391,33 @@ return BuildSimpleResult(2, "鐢熸垚 鎶芥鍗�澶辫触锛� + JsonConvert.SerializeObject(order)); } - for (int i = 0; i < model.Qty; i++) { - var detail = new TN_Check_Detail { - S_NO = order.S_NO, - S_ITEM_CODE = model.ItemCode, - S_BATCH_NO = model.BatchNo, - S_END_AREA = model.EndArea - }; + var cgDetailList = SelectCgByTotalQty(model); - if (db.Insertable<TN_Check_Detail>(detail).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return BuildSimpleResult(3, "鐢熸垚 鎶芥鍗曟槑缁�澶辫触锛� + JsonConvert.SerializeObject(detail)); - } + if (cgDetailList.Count == 0) { + return BuildSimpleResult(3, "娌℃湁鍚堥�鐨勭墿鏂欏彲浠ユ娊妫�); } + 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, + S_END_AREA = model.EndArea, + }; + + cgDetail.N_ITEM_STATE = 3; + cgDetail.S_ITEM_STATE = "姝e湪妫�獙"; + + if (db.Insertable<TN_Outbound_Detail>(detail).ExecuteCommand() <= 0 + && db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => new { it.N_ITEM_STATE, it.S_ITEM_STATE }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(4, "鐢熸垚鍑哄簱鍗曟槑缁嗗け璐ワ細" + JsonConvert.SerializeObject(detail)); + } + + LogHelper.Debug("鍒涘缓鍑哄簱鍗曟槑缁嗘垚鍔燂細" + JsonConvert.SerializeObject(detail)); + } + tran.CommitTran(); } return BuildSimpleResult(0, $"鍒涘缓 鎶芥鍗�鎴愬姛"); @@ -394,28 +426,31 @@ return BuildSimpleEx(ex); } } - + /// <summary> + /// 鎶芥-鍚堟牸鍥炲簱(PDA) + /// </summary> + /// <param name="model"></param> + /// <returns></returns> public static SimpleResult QualifiedBack(QualifiedBackInfo model) { var db = DbHelper.GetDbClient(); 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 BuildSimpleResult(2, "娌℃湁鎵惧埌寰呭洖搴撶殑鎶芥鐗╂枡"); + return BuildSimpleResult(2, "娌℃湁鎵惧埌寰呭洖搴撶殑鎶芥鐗╂枡锛� + JsonConvert.SerializeObject(model)); } cgDetail.N_ITEM_STATE = 0; cgDetail.S_ITEM_STATE = "鍚堟牸"; - // TODO 涓嶉渶瑕佽仈绔嬩笁涓〃 var startLocCntrRel = db.Queryable<TN_Location, TN_Loc_Container> ((l, c) => l.S_CODE == c.S_LOC_CODE) - .Where(ExprHelper.LocIsFree) - .Select((l, c) => c) + .Where((l, c) => c.S_CNTR_CODE == cgDetail.S_CNTR_CODE) // 鎸囧畾瀹瑰櫒鍙�+ .Where(ExprHelper.LocIsFree) // NOTE 妫�煡 + .Select((l, c) => c) // 绛涢� Loc_Container .First(); if (startLocCntrRel == null) { @@ -468,7 +503,6 @@ cgDetail.N_ITEM_STATE = 2; cgDetail.S_ITEM_STATE = "涓嶅悎鏍�; - // TODO 涓嶉渶瑕佽仈绔嬩笁涓〃 var startLocCntrRel = db.Queryable<TN_Location, TN_Loc_Container> ((l, c) => l.S_CODE == c.S_LOC_CODE) .Where(ExprHelper.LocIsFree) @@ -538,6 +572,56 @@ } } + public static List<TN_CG_Detail> SelectCgByTotalQty(CreateCheckOrderInfo model) { + var db = DbHelper.GetDbClient(); + var result = new List<TN_CG_Detail>(); + var targetNum = model.Qty; + + try { + var targetCg = db.Queryable<TN_CG_Detail>().Where(a => a.S_ITEM_CODE == model.ItemCode + && a.N_ITEM_NUM > targetNum). + OrderBy(a => a.N_ITEM_NUM, OrderByType.Asc).First(); + if (targetCg != null) //鍒氬ソ鏈変竴琛屾弧瓒虫潯浠�+ { + result.Add(targetCg); + return result; + } + + var sortedMaterials = new List<TN_CG_Detail>(); + + sortedMaterials = db.Queryable<TN_CG_Detail, TN_Loc_Container>((d, c) => d.S_CNTR_CODE == c.S_CNTR_CODE) + .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo && d.N_ITEM_NUM > 0) + .Where((d, c) => c.S_CNTR_TYPE == model.CntrType) + .Where(d => d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮") + .OrderBy(d => d.N_ITEM_NUM, OrderByType.Desc) + .OrderBy(d => d.N_ITEM_STATE, OrderByType.Asc).ToList(); + + if (sortedMaterials.Count == 0) //娌℃湁婊¤冻鏉′欢鐨�+ { + return result; + } + + int countNum = 0; + foreach (var mat in sortedMaterials) { + countNum += mat.N_ITEM_NUM; + result.Add(mat); + if (countNum >= targetNum) { + break; + } + } + if (result.Sum(a => a.N_ITEM_NUM) >= targetNum) { + return result; + } + else { + result.Clear(); + return result; + } + } + catch (Exception ex) { + throw ex; + } + } + #endregion #region Mobox 鍔熻兘 @@ -566,13 +650,13 @@ return BuildSimpleResult(3, "娌℃湁鍚堥�鐨勭墿鏂欏彲浠ュ嚭搴�); } - // NOTE 濡傛灉鍒涘缓order鐨勬椂鍊欏氨鎸囧畾鍏蜂綋鍑哄簱鐗╂枡鐨刢ntr锛岄偅涔堝鏋滃湪鍒涘缓浠诲姟鍓嶏紝杩欎釜鐗╂枡琚敊璇娊妫�簡鎬庝箞鍔� foreach (var cgDetail in cgDetailList) { var detail = new TN_Outbound_Detail { - S_NO = orderNo, + 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 = model.EndArea }; @@ -585,9 +669,9 @@ var order = new TN_Outbound_Order { S_NO = orderNo, S_ITEM_CODE = model.ItemCode, - S_BATCH_NO = model.BatchNo, - F_QTY = model.Qty, - F_OUT_QTY = cgDetailList.Sum(a => a.N_QTY), + S_BATCH = model.BatchNo, + N_END_NUM = model.Qty, + //F_OUT_QTY = cgDetailList.Sum(a => a.N_QTY), S_END_AREA = model.EndArea }; @@ -627,10 +711,9 @@ return BuildSimpleResult(3, "娌℃湁鍚堥�鐨勭墿鏂欏彲浠ュ嚭搴�); } - // NOTE 濡傛灉鍒涘缓order鐨勬椂鍊欏氨鎸囧畾鍏蜂綋鍑哄簱鐗╂枡鐨刢ntr锛岄偅涔堝鏋滃湪鍒涘缓浠诲姟鍓嶏紝杩欎釜鐗╂枡琚敊璇娊妫�簡鎬庝箞鍔� foreach (var cgDetail in cgDetailList) { var detail = new TN_Outbound_Detail { - S_NO = orderNo, + 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, @@ -646,9 +729,9 @@ var order = new TN_Outbound_Order { S_NO = orderNo, S_ITEM_CODE = model.ItemCode, - S_BATCH_NO = model.BatchNo, - F_QTY = model.Qty, - F_OUT_QTY = cgDetailList.Sum(a => a.N_QTY), + S_BATCH = model.BatchNo, + N_END_NUM = model.Qty, + //F_OUT_QTY = cgDetailList.Sum(a => a.N_QTY), S_END_AREA = model.EndArea }; @@ -674,8 +757,8 @@ try { var targetCg = db.Queryable<TN_CG_Detail>().Where(a => a.S_ITEM_CODE == model.ItemCode - && a.N_QTY > targetNum). - OrderBy(a => a.N_QTY, OrderByType.Asc).First(); + && a.N_ITEM_NUM > targetNum). + OrderBy(a => a.N_ITEM_NUM, OrderByType.Asc).First(); if (targetCg != null) //鍒氬ソ鏈変竴琛屾弧瓒虫潯浠� { result.Add(targetCg); @@ -683,29 +766,42 @@ } // NOTE 鏍规嵁鎬婚噺閫塪etail鏃讹紝鏄惁闇�鑰冭檻璐т綅鐨勯珮浣庯紵 - var sortedMaterials = db.Queryable<TN_CG_Detail, TN_Loc_Container>((d, c) => d.S_CNTR_CODE == c.S_CNTR_CODE) - .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo && d.N_QTY > 0) - .Where((d, c) => c.S_CNTR_TYPE == model.CntrType) - .Where(d => (model.ForcedOut && d.N_ITEM_STATE == 0 && d.S_ITEM_STATE == "鍚堟牸") - || (!model.ForcedOut && (d.N_ITEM_STATE == 0 && d.S_ITEM_STATE == "鍚堟牸" - || d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮"))) - .OrderBy(d => d.N_QTY, OrderByType.Desc) - .OrderBy(d => d.N_ITEM_STATE, OrderByType.Asc).ToList(); - if (sortedMaterials.Count == 0)//娌℃湁婊¤冻鏉′欢鐨�+ var sortedMaterials = new List<TN_CG_Detail>(); + + if (model.ForcedOut) { + sortedMaterials = db.Queryable<TN_CG_Detail, TN_Loc_Container>((d, c) => d.S_CNTR_CODE == c.S_CNTR_CODE) + .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo && d.N_ITEM_NUM > 0) + .Where((d, c) => c.S_CNTR_TYPE == model.CntrType) + .Where(d => d.N_ITEM_STATE == 0 && d.S_ITEM_STATE == "鍚堟牸" + || d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮") + .OrderBy(d => d.N_ITEM_NUM, OrderByType.Desc) + .OrderBy(d => d.N_ITEM_STATE, OrderByType.Asc).ToList(); + } + else { + sortedMaterials = db.Queryable<TN_CG_Detail, TN_Loc_Container>((d, c) => d.S_CNTR_CODE == c.S_CNTR_CODE) + .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo && d.N_ITEM_NUM > 0) + .Where((d, c) => c.S_CNTR_TYPE == model.CntrType) + .Where(d => d.N_ITEM_STATE == 0 && d.S_ITEM_STATE == "鍚堟牸") + .OrderBy(d => d.N_ITEM_NUM, OrderByType.Desc) + .OrderBy(d => d.N_ITEM_STATE, OrderByType.Asc).ToList(); + } + + + if (sortedMaterials.Count == 0) //娌℃湁婊¤冻鏉′欢鐨� { return result; } - float countNum = 0; + int countNum = 0; foreach (var mat in sortedMaterials) { - countNum += mat.N_QTY; + countNum += mat.N_ITEM_NUM; result.Add(mat); if (countNum >= targetNum) { break; } } - if (result.Sum(a => a.N_QTY) >= targetNum) { + if (result.Sum(a => a.N_ITEM_NUM) >= targetNum) { return result; } else { -- Gitblit v1.9.1