From d2f14f6bb44c6dd19cc0816a033452b6de56184b Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期日, 06 四月 2025 18:09:45 +0800 Subject: [PATCH] 增加备料任务调用U9接口方法 --- Tiger.Business.WMS/Common/Preparation.cs | 272 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 240 insertions(+), 32 deletions(-) diff --git a/Tiger.Business.WMS/Common/Preparation.cs b/Tiger.Business.WMS/Common/Preparation.cs index 139088e..cb21723 100644 --- a/Tiger.Business.WMS/Common/Preparation.cs +++ b/Tiger.Business.WMS/Common/Preparation.cs @@ -32,7 +32,8 @@ public DbClient MainDB { get; set; } public string UserCode { get; set; } public string OrgCode { get; set; } - public BIZ_WMS_PREP PrepOrder { get; set; } + public BIZ_WMS_PREP Order { get; set; } + public BIZ_WMS_PREP.BIZ_TYPEs BizType => Order.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>(); #endregion Propertys & Variables #region Functions @@ -51,18 +52,18 @@ // 鏌ヨ鏄惁宸插瓨鍦ㄥ鏂欎换鍔� var src = MainDB.Queryable<BIZ_WMS_PREP_SRC>().Where(q => q.SOURCE_ORDER == orderNo && SqlFunc.Subqueryable<BIZ_WMS_PREP>().Where(p => p.STATUS < BIZ_WMS_PREP.STATUSs.Sended.GetValue()).Any()).First(); - if (PrepOrder.IsNullOrEmpty()) + if (Order.IsNullOrEmpty()) { if (!src.IsNullOrEmpty()) { - PrepOrder = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ORDER_NO == src.ORDER_NO).IncludesAllFirstLayer().First(); - //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]鐨勫鏂欎换鍔{1}]鍔犺浇鎴愬姛锛屽彲浠ュ紑濮嬪鏂欎笅鏋�"); - action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.LoadSuccess", orderNo, PrepOrder.ORDER_NO); - return action; + Order = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ORDER_NO == src.ORDER_NO).IncludesAllFirstLayer().First(); + //action.LocaleMsg = Biz.L("澶囨枡浠诲姟[{0}娣诲姞]鍗曟嵁[{1}]鎴愬姛锛岃閫夋嫨澶囨枡鐨勭墿鏂欒"); + action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.LoadSuccess", Order?.ORDER_NO, orderNo); + return action; } else { - PrepOrder = new BIZ_WMS_PREP() + Order = new BIZ_WMS_PREP() { AUTH_ORG = OrgCode, ORDER_NO = $"MP{DateTime.Now:yyMMdd}{(DateTime.Now - DateTime.Today).TotalSeconds:00000}", @@ -71,11 +72,11 @@ }; } } - if (!src.IsNullOrEmpty() && src.ORDER_NO != PrepOrder.ORDER_NO) + if (!src.IsNullOrEmpty() && src.ORDER_NO != Order.ORDER_NO) { action.IsSuccessed = false; //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]宸插睘浜庡鏂欎换鍔{1}]锛屾棤娉曟坊鍔犲埌褰撳墠澶囨枡浠诲姟[{2}]涓紝濡傞渶鍒囨崲澶囨枡涓氬姟锛岃閫�鍑哄悗閲嶆柊閫夋嫨"); - action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.NoFound", orderNo, src.ORDER_NO, PrepOrder.ORDER_NO); + action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.NoFound", orderNo, src.ORDER_NO, Order.ORDER_NO); return action; } @@ -89,31 +90,31 @@ return action; } - PrepOrder.SourceOrders = PrepOrder.SourceOrders ?? new(); - PrepOrder.SourceDetails = PrepOrder.SourceDetails ?? new(); - PrepOrder.Details = PrepOrder.Details ?? new(); - PrepOrder.Batchs = PrepOrder.Batchs ?? new(); - PrepOrder.SnList = PrepOrder.SnList ?? new(); + Order.SourceOrders = Order.SourceOrders ?? new(); + Order.SourceDetails = Order.SourceDetails ?? new(); + Order.Details = Order.Details ?? new(); + Order.Batchs = Order.Batchs ?? new(); + Order.SnList = Order.SnList ?? new(); var srcOrder = new BIZ_WMS_PREP_SRC() { AUTH_ORG = OrgCode, - ORDER_NO = PrepOrder.ORDER_NO, + ORDER_NO = Order.ORDER_NO, SOURCE_CODE = bizType.GetSourceCode(), SOURCE_ORDER = orderNo, ADD_TIME = DateTime.Now, }; - PrepOrder.SourceOrders.Add(srcOrder); + Order.SourceOrders.Add(srcOrder); foreach (var dtl in dtls) { dtl.AUTH_ORG = OrgCode; - var pdtl = PrepOrder.Details.Where(q => q.ITEM_CODE == dtl.ITEM_CODE).FirstOrDefault(); + var pdtl = Order.Details.Where(q => q.ITEM_CODE == dtl.ITEM_CODE).FirstOrDefault(); if (pdtl.IsNullOrEmpty()) { pdtl = new () { AUTH_ORG = OrgCode, - ORDER_NO = PrepOrder.ORDER_NO, - ORDER_LINE = (PrepOrder.Details.Max(q => q.LINE_CODE.ToInt32()) + 1).ToString(), + ORDER_NO = Order.ORDER_NO, + ORDER_LINE = (Order.Details.Max(q => q.LINE_CODE.ToInt32()) + 1).ToString(), ITEM_CODE = dtl.ITEM_CODE, SUBITEM_CODE = dtl.SUBITEM_CODE, UNIT = dtl.UNIT, @@ -136,34 +137,49 @@ FEEDER_NO = dtl.FEEDER_NO, FEEDER_TYPE = dtl.FEEDER_TYPE, }; - PrepOrder.Details.Add(pdtl); + Order.Details.Add(pdtl); } pdtl.QTY_REQ += dtl.QTY_ACT_REQ; - PrepOrder.SourceDetails.Add(dtl); + Order.SourceDetails.Add(dtl); } - var srcInfo = PrepOrder.SourceOrders.Select(q => new { q.SOURCE_CODE, q.SOURCE_ORDER }).DistinctBy(q => q.SOURCE_ORDER).OrderBy(q => q.SOURCE_ORDER); - PrepOrder.SOURCE_CODE = string.Join(",", srcInfo.Select(q => q.SOURCE_CODE)); - PrepOrder.SOURCE_ORDER = string.Join(",", srcInfo.Select(q => q.SOURCE_ORDER)); + var srcInfo = Order.SourceOrders.Select(q => new { q.SOURCE_CODE, q.SOURCE_ORDER }).DistinctBy(q => q.SOURCE_ORDER).OrderBy(q => q.SOURCE_ORDER); + Order.SOURCE_CODE = string.Join(",", srcInfo.Select(q => q.SOURCE_CODE)); + Order.SOURCE_ORDER = string.Join(",", srcInfo.Select(q => q.SOURCE_ORDER)); + if (Order.CurBatch.IsNullOrEmpty()) + { + var bacth = new BIZ_WMS_PREP_BTH() + { + AUTH_ORG = OrgCode, + ORDER_NO = Order.ORDER_NO, + BATCH = Order.Batchs.Max(q => q.BATCH) + 1, + PREP_MODE = BIZ_WMS_PREP_BTH.PREP_MODEs.Whole.GetValue(), + DLVY_MODE = BIZ_WMS_PREP_BTH.DLVY_MODEs.Supply.GetValue(), + STATUS = BIZ_WMS_PREP_BTH.STATUSs.WaitPick.GetValue(), + CALL_TIME = DateTime.Now, + PRIORITY = 4, + }; + bacth.PLAN_TIME = bacth.CALL_TIME.AddHours(1); + Order.Batchs.Add(bacth); + } //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄 var db = Biz.Db; var dbTran = db.UseTran(() => { - var o = db.Storageable(PrepOrder, UserCode).WhereColumns(t => new { t.ORDER_NO, t.GHOST_ROW }).ToStorage(); + var o = db.Storageable(Order, UserCode).WhereColumns(t => new { t.ORDER_NO, t.GHOST_ROW }).ToStorage(); o.AsInsertable.ExecuteCommand(); o.AsUpdateable.IgnoreColumns(q => q.ID).UpdateColumns(q => new { q.SOURCE_CODE, q.SOURCE_ORDER, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); - var so = db.Storageable(PrepOrder.SourceOrders, UserCode).WhereColumns(t => new { t.ORDER_NO, t.SOURCE_ORDER, t.GHOST_ROW }).ToStorage(); - so.AsInsertable.ExecuteCommand(); - var sd = db.Storageable(PrepOrder.SourceDetails, UserCode).WhereColumns(t => new { t.ORDER_NO, t.ITEM_CODE, t.GHOST_ROW }).ToStorage(); - sd.AsInsertable.ExecuteCommand(); - var d = db.Storageable(PrepOrder.Details, UserCode).WhereColumns(t => new { t.ORDER_NO, t.ITEM_CODE, t.GHOST_ROW }).ToStorage(); + db.Storageable(Order.SourceOrders, UserCode).WhereColumns(t => new { t.ORDER_NO, t.SOURCE_ORDER, t.GHOST_ROW }).ToStorage().AsInsertable.ExecuteCommand(); + db.Storageable(Order.SourceDetails, UserCode).WhereColumns(t => new { t.ORDER_NO, t.ITEM_CODE, t.GHOST_ROW }).ToStorage().AsInsertable.ExecuteCommand(); + var d = db.Storageable(Order.Details, UserCode).WhereColumns(t => new { t.ORDER_NO, t.ITEM_CODE, t.GHOST_ROW }).ToStorage(); d.AsInsertable.ExecuteCommand(); d.AsUpdateable.IgnoreColumns(q => q.ID).UpdateColumns(q => new { q.QTY_REQ, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); + db.Storageable(Order.Batchs, UserCode).WhereColumns(t => new { t.ORDER_NO, t.BATCH, t.GHOST_ROW }).ToStorage().AsInsertable.ExecuteCommand(); }); if (dbTran.IsSuccess) { - //action.LocaleMsg = Biz.L("澶囨枡浠诲姟[{0}娣诲姞]鍗曟嵁[{1}]鎴愬姛锛屽彲浠ュ紑濮嬪鏂欎笅鏋�"); - action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.LoadSuccess", PrepOrder?.ORDER_NO, orderNo); + //action.LocaleMsg = Biz.L("澶囨枡浠诲姟[{0}娣诲姞]鍗曟嵁[{1}]鎴愬姛锛岃閫夋嫨澶囨枡鐨勭墿鏂欒"); + action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.LoadSuccess", Order?.ORDER_NO, orderNo); } else { @@ -175,6 +191,198 @@ } } + /// <summary> + /// 鐢熸垚棰嗘枡鍗曪細璋冪敤棰嗘枡鍗曟帴鍙� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + //public async Task<ApiAction> GenerateRequisition(BaseInput input) + //{ + // var action = new ApiAction(); + // var orderNo = input.Data; + // try + // { + // var order = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == orderNo).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().FirstAsync(); + // if (order.IsNullOrEmpty()) + // { + // action.IsSuccessed = false; + // //action.LocaleMsg = Biz.L($"鎵句笉鍒伴�佽揣鍗昜{0}]鐨勫崟鎹俊鎭紝璇锋彁浜ゆ纭殑鍗曞彿"); + // action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.GenerateReceipt.ASNNotExists", orderNo); + // return action; + // } + // //楠岃瘉鏉$爜鏄惁姝g‘ + // if (order.STATUS != BIZ_U9_ASN.STATUSs.Counting.GetValue()) + // { + // action.IsSuccessed = false; + // //action.LocaleMsg = Biz.L("鐢熸垚鏀惰揣鍗曪細閫佽揣鍗曠姸鎬乕{0}]寮傚父"); + // action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.GenerateReceipt.StatusException", order.STATUS.GetEnumDesc<BIZ_U9_ASN.STATUSs>()); + // return action; + // } + + // //鏌ヨ鏄惁娓呯偣瀹屾垚 + // var noFinish = order.Details.Where(q => q.QTY != order.SnList.Where(s => s.LINE_NO == q.LINE_NO && (s.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue())).Sum(s => s.QTY)); + // if (noFinish.Any()) + // { + // action.IsSuccessed = false; + // //action.LocaleMsg = Biz.L("閫佽揣鍗昜{0}]鏈竻鐐瑰畬鎴愶紝璇峰厛娓呯偣瀹屾垚锛屾湭瀹屾垚娓呯偣鐨勮鍙峰涓嬶細{1}"); + // action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.GenerateReceipt.NoFinishCounting", orderNo, string.Join("锛�", noFinish.Select(q => q.LINE_NO))); + // return action; + // } + + // var iInput = new CreateRcvBySrcASNInput + // { + // userId = UserCode, + // IsLogin = true, + // CreateRcvBySrcASNParam = new() + // { + // aSNToRcvTransDTOs = order.Details.Select(q => new ASNToRcvTransDTO + // { + // ASNLineKey = q.ID, + // TransQty = new() { m_amount1 = q.QTY }, + // BinInfoList = new() { new() { Bin = new() { m_code = q.ItemInfo.DEFAULT_LOCATION }, LocationQtySU = q.QTY, LocationQtyTU = q.QTY } }, + // }).ToList(), + // } + // }; + // var result = await DI.Resolve<IWMS_U9C>().CreateRcvBySrcASN(iInput); + // if (!result.IsSuccessed) + // { + // action.IsSuccessed = false; + // action.LocaleMsg = result.LocaleMsg; + // return action; + // } + + // //鏍规嵁鎺ュ彛杩斿洖鏀惰揣鍗曞崟鍙锋煡璇㈠崟鎹槑缁嗭紝骞跺垱寤烘潯鐮佹槑缁� + // var receipt = new BIZ_U9_RECEIPT(); + // receipt.Details = new(); + // receipt.SnList = new(); + // DbClient U9Cdb = Biz.DataSource["YadaU9C"].Client; + // var list = U9Cdb.Queryable<mes_ReturnedDocInfo>().Where(x => x.RcvId == result.Data[0].ID.ToDouble() && x.DocNo == result.Data[0].Code && x.SplitFlag != 1).ToList(); + + // if (list != null && list.Count > 0) + // { + // receipt.ID = list.First().RcvId.ToString(); + // receipt.AUTH_ORG = order.AUTH_ORG; + // receipt.STATUS = BIZ_U9_RECEIPT.STATUSs.InQC.GetValue(); + // receipt.ORDER_NO = list.First().DocNo; + // receipt.SUPP_CODE = list.First().SupplierCode; + // receipt.SUPP_NAME = list.First().SupplierName; + // receipt.RECEIVER = UserCode; + // receipt.RECEIVE_DATE = DateTime.Now; + // receipt.ASN_ID = order.ID; + // receipt.ASN_NO = order.ORDER_NO; + // receipt.ORDER_DATE = list.First().ModifiedOn; + // receipt.HANDLED = 0; + // receipt.HANDLED_DATE = DateTime.Now; + + // foreach (var item in list) + // { + // var asnDtl = order.Details.First(q => q.ID == item.SrcASNDocLineId.ToString()); + // BIZ_U9_RECEIPT_DTL receiptDt = new() + // { + // ID = item.RcvLineId.ToString(), + // AUTH_ORG = receipt.AUTH_ORG, + // STATUS = BIZ_U9_RECEIPT.STATUSs.InQC.GetValue(), + // ORDER_NO = item.DocNo, + // LINE_NO = item.DocLineNo.ToString(), + // ITEM_CODE = item.ItemCode, + // QTY = item.EyeballingQtyTU.ToDouble(), // mes鍗曟嵁鏁伴噺 --U9閫�琛ユ暟閲� + // QTY_GIFT = asnDtl.QTY_GIFT, + // ASN_ID = item.SrcASNDocId.ToString(), + // ASN_NO = asnDtl.ORDER_NO, + // ASN_LINE_ID = item.SrcASNDocLineId.ToString(), + // ASN_LINE = asnDtl.LINE_NO, + // ERP_CODE = item.ItemCode1, + // }; + // receipt.Details.Add(receiptDt); + // } + + // foreach (var sn in order.SnList) + // { + // var dtl = receipt.Details.First(q => q.ASN_LINE == sn.LINE_NO); + // BIZ_U9_RECEIPT_SN receiptSn = new() + // { + // AUTH_ORG = dtl.AUTH_ORG, + // ORDER_NO = dtl.ORDER_NO, + // LINE_NO = dtl.LINE_NO, + // SN = sn.SN, + // META_SN = sn.META_SN, + // ITEM_CODE = sn.ITEM_CODE, + // STATUS = WMS_ITEM.STATUSs.WaitIn.GetValue(), + // QTY = sn.QTY, + // UNIT = sn.UNIT, + // IS_OK = sn.IS_OK, + // IS_IN = sn.IS_IN, + // LOTNO = sn.LOTNO, + // CARTON_NO = sn.CARTON_NO, + // PALLET_NO = sn.PALLET_NO, + // }; + // receipt.SnList.Add(receiptSn); + // } + // } + + // //鏇存柊搴撳瓨琛ㄤ俊鎭� + // var items = MainDB.Queryable<WMS_ITEM>().Where(q => SqlFunc.Subqueryable<BIZ_U9_ASN_SN>().Where(s => s.SN == q.SN && s.ORDER_NO == order.ORDER_NO).Any()).ToList(); + // var historys = new List<WMS_ITEM_HIS>(); + // foreach (var item in items) + // { + // item.AUTH_ORG = receipt.AUTH_ORG; + // item.STATUS = WMS_ITEM.STATUSs.WaitIn.GetValue(); + // item.SOURCE_CODE = item.TRANS_CODE; + // item.SOURCE_ORDER = item.TRANS_NO; + // item.SOURCE_LINE = item.TRANS_LINE; + // item.TRANS_CODE = nameof(BIZ_U9_RECEIPT); + // item.TRANS_NO = receipt.ORDER_NO; + // item.TRANS_LINE = receipt.SnList.First(q => q.SN == item.SN).LINE_NO; + // historys.Add(new WMS_ITEM_HIS(item, $"閫佽揣鍗昜{order.ORDER_NO}]鐨勬潯鐮乕{item.SN}]鐢熸垚鏀惰揣鍗昜{receipt.ORDER_NO}]锛屽緟妫�楠屽畬鎴愬悗鍙叆搴�")); + // } + // var pkgs = MainDB.Queryable<WMS_ITEM_PKG>().Where(q => SqlFunc.Subqueryable<BIZ_U9_ASN_SN>().Where(s => s.SN == q.SN && s.ORDER_NO == order.ORDER_NO).Any()).ToList(); + // foreach (var item in pkgs) + // { + // item.AUTH_ORG = receipt.AUTH_ORG; + // item.SOURCE_CODE = item.TRANS_CODE; + // item.SOURCE_ORDER = item.TRANS_NO; + // item.SOURCE_LINE = item.TRANS_LINE; + // item.TRANS_CODE = nameof(BIZ_U9_RECEIPT); + // item.TRANS_NO = receipt.ORDER_NO; + // item.TRANS_LINE = receipt.SnList.First(q => q.SN == item.SN).LINE_NO; + // } + // order.STATUS = BIZ_U9_ASN.STATUSs.Finished.GetValue(); + // order.RECEIVER_ID = receipt.ID; + // order.RECEIVER_NO = receipt.ORDER_NO; + // order.RECEIVER = UserCode; + // order.RECEIVE_DATE = DateTime.Now; + + // //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄 + // var db = GetCommitDB(); + // var dbTran = db.UseTran(() => + // { + // db.Updateable(items, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.AUTH_ORG, q.STATUS, q.TRANS_CODE, q.TRANS_NO, q.TRANS_LINE, q.SOURCE_CODE, q.SOURCE_ORDER, q.SOURCE_LINE }).ExecuteCommand(); + // db.Updateable(pkgs, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.AUTH_ORG, q.TRANS_CODE, q.TRANS_NO, q.TRANS_LINE, q.SOURCE_CODE, q.SOURCE_ORDER, q.SOURCE_LINE }).ExecuteCommand(); + // db.Insertable(historys, UserCode).ExecuteCommand(); + // db.Updateable(order, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.RECEIVER, q.RECEIVE_DATE, q.RECEIVER_ID, q.RECEIVER_NO }).ExecuteCommand(); + // db.Insertable(receipt, UserCode).ExecuteCommand(); + // db.Insertable(receipt.Details, UserCode).ExecuteCommand(); + // db.Insertable(receipt.SnList, UserCode).ExecuteCommand(); + // }); + // if (dbTran.IsSuccess) + // { + // //action.LocaleMsg = Biz.L($"閫佽揣鍗昜{0}]鐢熸垚鏀惰揣鍗昜{1}]鎴愬姛"); + // action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.GenerateReceipt.Success", order.ORDER_NO, receipt.ORDER_NO); + // } + // else + // { + // Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception"); + // //鎶涘嚭寮傚父 + // throw dbTran.ErrorException; + // } + // } + // catch (System.Exception ex) + // { + // //return action.CatchExceptionWithLog(ex, Biz.L("閫佽揣鍗昜{0}]鐢熸垚鏀惰揣鍗曞紓甯�")); + // return action.CatchExceptionWithLog(ex, Biz.L("WMS.Count_BIZ_U9_ASN.GenerateReceiptException", orderNo)); + // } + // return action; + //} #endregion Functions } } -- Gitblit v1.9.3