From 4fa92d8a2bb207029564ff33c3faf84ea9b814ed Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期三, 19 三月 2025 17:05:52 +0800 Subject: [PATCH] 优化接口逻辑 --- Tiger.Business.WMS/ERP/U9C_WMS.cs | 190 +++++++++++++++++++++++++++++------------------ 1 files changed, 118 insertions(+), 72 deletions(-) diff --git a/Tiger.Business.WMS/ERP/U9C_WMS.cs b/Tiger.Business.WMS/ERP/U9C_WMS.cs index b646743..274d584 100644 --- a/Tiger.Business.WMS/ERP/U9C_WMS.cs +++ b/Tiger.Business.WMS/ERP/U9C_WMS.cs @@ -88,8 +88,12 @@ var list = db.Queryable<mes_AsnDocInfo>().Where(x => x.ModifiedOn > input.startTime.ToDateTime() && x.ModifiedOn < input.endTime.ToDateTime()).ToList(); var orgs = Biz.Db.Queryable<SYS_ORGANIZATION>().ToList(); List<BIZ_U9_ASN> asns = new(); - List<BIZ_U9_ASN_DTL> items = new(); + List<BIZ_U9_ASN_DTL> dtls = new(); List<BIZ_U9_ASN_SN> sns = new(); + List<WMS_ITEM> items = new(); + List<WMS_ITEM_HIS> hiss = new(); + List<WMS_ITEM_EXT> itemExts = new(); + List<WMS_ITEM_PKG> pkgs = new(); if (list != null && list.Count > 0) { @@ -115,33 +119,36 @@ }) .ToList(); Logger.Scheduler.Info($"閫佽揣鍗曡〃澶翠俊鎭瓨鍏ュ疄浣撲腑锛屾�绘暟锛歔{asns.Count}]"); - foreach (var item in list) + foreach (var dtl in list) { - BIZ_U9_ASN_DTL info = new() { + BIZ_U9_ASN_DTL info = new() + { STATUS = BIZ_U9_ASN.STATUSs.Imported.GetValue(), - ORDER_NO = item.DocNo, - LINE_NO = item.DocLineNo.ToString(), - SUPP_CODE = item.SupplierCode, - ID = item.LineID.ToString(), - ITEM_CODE = item.ItemCode, - QTY_PACKING = item.PackQty.ToDouble(), - QTY = item.POQtyTU.ToDouble(), - SUPP_LOTNO = item.SupplierLot, - LOTNO = item.LotMater, - AUTH_ORG = orgs.FirstOrDefault(q => q.ID == item.Org.ToString())?.ORG_CODE, - CREATE_TIME = item.ModifiedOn,//--鏃堕棿涓嶆洿鏂� + ORDER_NO = dtl.DocNo, + LINE_NO = dtl.DocLineNo.ToString(), + ID = dtl.LineID.ToString(), + ITEM_CODE = dtl.ItemCode, + QTY_PACKING = dtl.PackQty.ToDouble(), + QTY = dtl.POQtyTU.ToDouble(), + SUPP_CODE = dtl.SupplierCode, + SUPP_LOTNO = dtl.SupplierLot, + LOTNO = dtl.LotMater, + AUTH_ORG = orgs.FirstOrDefault(q => q.ID == dtl.Org.ToString())?.ORG_CODE, + CREATE_TIME = dtl.ModifiedOn,//--鏃堕棿涓嶆洿鏂� CREATE_USER = UserCode, - UPDATE_TIME = item.ModifiedOn, - UPDATE_USER = UserCode }; - items.Add(info); + UPDATE_TIME = dtl.ModifiedOn, + UPDATE_USER = UserCode + }; + dtls.Add(info); } - Logger.Scheduler.Info($"閫佽揣鍗曟槑缁嗚淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{items.Count}]"); + Logger.Scheduler.Info($"閫佽揣鍗曟槑缁嗚淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{dtls.Count}]"); foreach (var asn in asns) { var snlist = db.Queryable<mes_MaterialBarCode>().Where(x => x.Segment1 == asn.ORDER_NO || x.Segment2 == asn.ORDER_NO).ToList(); - foreach (var item in snlist) + foreach (var sn in snlist) { - var barcode = new Barcode(item.Code); + var barcode = new Barcode(sn.Code); + var dtl = dtls.First(q => q.LINE_NO == barcode.OrderLine); BIZ_U9_ASN_SN info = new() { AUTH_ORG = asn.AUTH_ORG, @@ -151,15 +158,56 @@ UPDATE_USER = UserCode, STATUS = WMS_ITEM.STATUSs.Incoming.GetValue(), ORDER_NO = barcode.OrderNo, - LINE_NO = barcode.OrderLine, + LINE_NO = dtl.LINE_NO, SN = barcode.SN, - META_SN = item.Code, + META_SN = sn.Code, ITEM_CODE = barcode.ItemCode, - QTY = item.WhQty, + QTY = sn.WhQty, LOTNO = barcode.LotNo, CARTON_NO = barcode.SN, }; sns.Add(info); + if (!sn.Code.StartsWith("Carton")) + { + var item = new WMS_ITEM() + { + SN = barcode.SN, + ITEM_CODE = barcode.ItemCode, + AUTH_ORG = asn.AUTH_ORG, + STATUS = WMS_ITEM.STATUSs.Incoming.GetValue(), + QTY = sn.WhQty, + PROD_DATE = barcode.ProdDate ?? DateTime.Now, + UNIT = barcode.Unit, + TRANS_CODE = nameof(BIZ_U9_ASN), + TRANS_NO = info.ORDER_NO, + TRANS_LINE = info.LINE_NO, + SUPP_CODE = dtl.SUPP_CODE, + SUPP_LOTNO = dtl.SUPP_LOTNO, + }; + items.Add(item); + hiss.Add(new WMS_ITEM_HIS(item, $"鏉$爜[{barcode.SN}]瀵煎叆锛屾搷浣滃崟鎹甗{item.TRANS_NO}]")); + var ext = new WMS_ITEM_EXT() + { + SN = barcode.SN, + META_SN = sn.Code, + QR_CODE = sn.Code, + }; + itemExts.Add(ext); + var pkg = new WMS_ITEM_PKG() + { + SN = barcode.SN, + ITEM_CODE = barcode.ItemCode, + AUTH_ORG = asn.AUTH_ORG, + QTY = sn.WhQty, + UNIT = barcode.Unit, + TRANS_CODE = nameof(BIZ_U9_ASN), + TRANS_NO = info.ORDER_NO, + TRANS_LINE = info.LINE_NO, + SUPP_CODE = dtl.SUPP_CODE, + SUPP_LOTNO = dtl.SUPP_LOTNO, + }; + pkgs.Add(pkg); + } } Logger.Scheduler.Info($"閫佽揣鍗昜{asn.ORDER_NO}]鏉$爜鏄庣粏淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{snlist.Count}]"); @@ -169,69 +217,67 @@ db = Biz.Db; if (asns.Any()) { - if (asns.Count > 100) + db.Utilities.PageEach(asns, 100, pageList => { - db.Utilities.PageEach(asns, 100, pageList => - { - var y = db.Storageable(pageList, "U9C_In_DocASN") - .WhereColumns(t => new { t.ORDER_NO, t.GHOST_ROW }) - .ToStorage(); - y.AsInsertable.ExecuteCommand(); - y.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q => new { q.ORDER_NO, q.SUPP_CODE, q.SUPP_NAME, q.DELIVERY_DATE, q.PLANARRIVED_DATE, q.ORDER_DATE, q.CREATE_USER, q.UPDATE_TIME,q.AUTH_ORG ,q.UPDATE_USER , }).ExecuteCommand(); - }); - } - else - { - var s = db.Storageable(asns, "U9C_In_DocASN") + var y = db.Storageable(pageList, "U9C_In_DocASN") .WhereColumns(t => new { t.ORDER_NO, t.GHOST_ROW }) .ToStorage(); - s.AsInsertable.ExecuteCommand(); - s.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q => new { q.ORDER_NO, q.SUPP_CODE, q.SUPP_NAME, q.DELIVERY_DATE, q.PLANARRIVED_DATE, q.ORDER_DATE, q.CREATE_USER, q.UPDATE_TIME, q.AUTH_ORG, q.UPDATE_USER, }).ExecuteCommand(); - } + y.AsInsertable.ExecuteCommand(); + y.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q => new { q.ORDER_NO, q.SUPP_CODE, q.SUPP_NAME, q.DELIVERY_DATE, q.PLANARRIVED_DATE, q.ORDER_DATE, q.CREATE_USER, q.UPDATE_TIME, q.AUTH_ORG, q.UPDATE_USER, }).ExecuteCommand(); + }); } - if (items.Any()) + if (dtls.Any()) { - if (items.Count > 100) + db.Utilities.PageEach(dtls, 100, pageList => { - db.Utilities.PageEach(items, 100, pageList => - { - var y = db.Storageable(pageList, "U9C_In_DocASN") - .WhereColumns(t => new { t.ORDER_NO,t.ID, t.GHOST_ROW }) - .ToStorage(); - y.AsInsertable.ExecuteCommand(); - y.AsUpdateable.UpdateColumns(q => new { q.ORDER_NO,q.LINE_NO, q.SUPP_CODE, q.ID, q.ITEM_CODE, q.QTY_PACKING, q.QTY, q.SUPP_LOTNO, q.LOTNO, q.AUTH_ORG,q.CREATE_USER, q.UPDATE_TIME ,q.UPDATE_USER, }).ExecuteCommand(); - }); - } - else - { - var s = db.Storageable(items, "U9C_In_DocASN") - .WhereColumns(t => new { t.ORDER_NO,t.ID, t.GHOST_ROW }) + var y = db.Storageable(pageList, "U9C_In_DocASN") + .WhereColumns(t => new { t.ORDER_NO, t.ID, t.GHOST_ROW }) .ToStorage(); - s.AsInsertable.ExecuteCommand(); - s.AsUpdateable.UpdateColumns(q => new { q.ORDER_NO,q.LINE_NO, q.SUPP_CODE, q.ID, q.ITEM_CODE, q.QTY_PACKING, q.QTY, q.SUPP_LOTNO, q.LOTNO, q.AUTH_ORG, q.CREATE_USER, q.UPDATE_TIME, q.UPDATE_USER, }).ExecuteCommand(); - } + y.AsInsertable.ExecuteCommand(); + y.AsUpdateable.UpdateColumns(q => new { q.ORDER_NO, q.LINE_NO, q.SUPP_CODE, q.ID, q.ITEM_CODE, q.QTY_PACKING, q.QTY, q.SUPP_LOTNO, q.LOTNO, q.AUTH_ORG, q.CREATE_USER, q.UPDATE_TIME, q.UPDATE_USER, }).ExecuteCommand(); + }); } if (sns.Any()) { - if (sns.Count > 100) + db.Utilities.PageEach(sns, 100, pageList => { - db.Utilities.PageEach(sns, 100, pageList => - { - var y = db.Storageable(pageList, "U9C_In_DocASN") - .WhereColumns(t => new { t.ORDER_NO, t.LINE_NO,t.SN, t.GHOST_ROW }) - .ToStorage(); - y.AsInsertable.ExecuteCommand(); - y.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q => new { q.ORDER_NO, q.LINE_NO, q.SN, q.ITEM_CODE, q.QTY, q.LOTNO, q.AUTH_ORG, q.CREATE_TIME, q.CREATE_USER, q.UPDATE_TIME, q.UPDATE_USER, }).ExecuteCommand(); - }); - } - else - { - var s = db.Storageable(sns, "U9C_In_DocASN") + var y = db.Storageable(pageList, "U9C_In_DocASN") .WhereColumns(t => new { t.ORDER_NO, t.LINE_NO, t.SN, t.GHOST_ROW }) .ToStorage(); + y.AsInsertable.ExecuteCommand(); + y.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q => new { q.ORDER_NO, q.LINE_NO, q.SN, q.ITEM_CODE, q.QTY, q.LOTNO, q.AUTH_ORG, q.CREATE_TIME, q.CREATE_USER, q.UPDATE_TIME, q.UPDATE_USER, }).ExecuteCommand(); + }); + } + if (items.Any()) + { + db.Utilities.PageEach(items, 100, pageList => + { + var s = db.Storageable(pageList, "U9C_In_DocASN").WhereColumns(t => new { t.SN, t.GHOST_ROW }).ToStorage(); s.AsInsertable.ExecuteCommand(); - s.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q => new { q.ORDER_NO, q.LINE_NO, q.SN, q.ITEM_CODE, q.QTY, q.LOTNO, q.AUTH_ORG, q.CREATE_TIME, q.CREATE_USER, q.UPDATE_TIME, q.UPDATE_USER, }).ExecuteCommand(); - } + s.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q => new { q.ITEM_CODE, q.AUTH_ORG, q.STATUS, q.QTY, q.PROD_DATE, q.UNIT, q.TRANS_CODE, q.TRANS_NO, q.TRANS_LINE, q.SUPP_CODE, q.SUPP_LOTNO, q.UPDATE_TIME, q.UPDATE_USER, }).ExecuteCommand(); + }); + } + if (hiss.Any()) + { + db.Insertable(hiss, "U9C_In_DocASN").ExecuteCommand(); + } + if (itemExts.Any()) + { + db.Utilities.PageEach(itemExts, 100, pageList => + { + var s = db.Storageable(pageList, "U9C_In_DocASN").WhereColumns(t => new { t.SN, t.GHOST_ROW }).ToStorage(); + s.AsInsertable.ExecuteCommand(); + s.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q => new { q.META_SN, q.QR_CODE, q.UPDATE_TIME, q.UPDATE_USER, }).ExecuteCommand(); + }); + } + if (items.Any()) + { + db.Utilities.PageEach(pkgs, 100, pageList => + { + var s = db.Storageable(pageList, "U9C_In_DocASN").WhereColumns(t => new { t.SN, t.GHOST_ROW }).ToStorage(); + s.AsInsertable.ExecuteCommand(); + s.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(q => new { q.ITEM_CODE, q.AUTH_ORG, q.QTY, q.UNIT, q.TRANS_CODE, q.TRANS_NO, q.TRANS_LINE, q.SUPP_CODE, q.SUPP_LOTNO, q.UPDATE_TIME, q.UPDATE_USER, }).ExecuteCommand(); + }); } Logger.Scheduler.Info($"閫佽揣鍗曡〃澶翠俊鎭瓨鍏ユ暟鎹簱锛屾�绘暟锛歔{asns.Count}]"); action.Message = $"閫佽揣鍗曡〃澶翠俊鎭瓨鍏ユ暟鎹簱锛屾�绘暟锛歔{asns.Count}]"; -- Gitblit v1.9.3