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 +++++++++++++++++++++++++++++------------------ Tiger.Business.WMS/Common/Barcode/BarcodeAnalysis.Yada.cs | 6 Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs | 38 +-------- Tiger.Business.WMS/Common/Barcode/Barcode.cs | 2 4 files changed, 126 insertions(+), 110 deletions(-) diff --git a/Tiger.Business.WMS/Common/Barcode/Barcode.cs b/Tiger.Business.WMS/Common/Barcode/Barcode.cs index 1c07325..9e0e92a 100644 --- a/Tiger.Business.WMS/Common/Barcode/Barcode.cs +++ b/Tiger.Business.WMS/Common/Barcode/Barcode.cs @@ -69,7 +69,7 @@ /// <summary> /// 鐢熶骇鏃ユ湡 /// </summary> - public DateTime? ProdDate { get => BarcodeAnalysis.GetDateTime(ProdDateStr) ?? BarcodeAnalysis.GetDateTime(PrintDateStr); } + public DateTime? ProdDate { get => BarcodeAnalysis.GetDateTime(ProdDateStr); } /// <summary> /// 鎵撳嵃鏃ユ湡 /// </summary> diff --git a/Tiger.Business.WMS/Common/Barcode/BarcodeAnalysis.Yada.cs b/Tiger.Business.WMS/Common/Barcode/BarcodeAnalysis.Yada.cs index 99fd0e4..33a3a72 100644 --- a/Tiger.Business.WMS/Common/Barcode/BarcodeAnalysis.Yada.cs +++ b/Tiger.Business.WMS/Common/Barcode/BarcodeAnalysis.Yada.cs @@ -40,7 +40,7 @@ Barcode.OrderNo = parts[1]; Barcode.OrderLine = parts[2]; Barcode.ItemCode = parts[3]; - Barcode.LotNo = parts[4] + parts[2]; + Barcode.LotNo = parts[4].StartsWith("ASN") ? parts[4] + parts[2] : parts[4]; Barcode.SerialNoStr = parts[5]; Barcode.Type = Types.OuterPackage; Barcode.ItemType = ItemTypes.RawMaterial; @@ -60,8 +60,8 @@ Barcode.OrderLine = parts[1]; Barcode.ItemCode = parts[2]; Barcode.LotNo = parts[3]; - Barcode.SerialNoStr = parts[4] + parts[2]; - Barcode.Type = Types.MiniPackage; + Barcode.LotNo = parts[4].StartsWith("ASN") ? parts[4] + parts[2] : parts[4]; + Barcode.Type = Types.MiniPackage; Barcode.ItemType = ItemTypes.RawMaterial; result.Flag = Result.Flags.Success; 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}]"; diff --git a/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs b/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs index 6a52f23..8074ddc 100644 --- a/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs +++ b/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs @@ -223,7 +223,7 @@ } CurInvItem = inv; - //妫�鏌ョ墿鏂欐暟閲忥紝濡傛灉娌℃湁鍒欐煡璇㈤泤杈炬潯鐮佷富妗o紝鎶婃暟閲忚繑鍥炲墠绔‘璁� + //妫�鏌ョ墿鏂欐暟閲忥紝濡傛灉娌℃湁鍒欐煡璇㈤泤杈炬潯鐮佷富妗o紝鏇存柊鏉$爜鏁伴噺 if (CurInvItem.Items.Any(q => q.QTY <= 0)) { var qtyList = Biz.DataSource["YadaU9C"].Client.Queryable<mes_MaterialBarCode>().Where(q => CurInvItem.Items.Select(q => q.SN).Contains(q.Code)).ToList(); @@ -231,41 +231,11 @@ { var item = CurInvItem.Items.First(q => q.SN == qty.Code); item.QTY = qty.WhQty; - item.SUPP_LOTNO = qty.Segment7; //渚涘簲鍟嗘壒娆″彿 - } - action.Data.Data = CurInvItem.Items.Select(q => new { q.SN, q.QTY }); - action.Data.Command = Command = "ComfirmQty"; - //action.LocaleMsg = Biz.L("璇风‘璁ゆ潯鐮乕{0}]鐨勬暟閲忔槸鍚︽纭�"); - action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ComfirmQty", input.SN); - return action; - } - } - - //鏇存柊宸茬‘璁ょ墿鏂欐暟閲� - if (Command == "ComfirmQty") - { - var qtyList = (input.Data ?? "").JsonToObject<List<WMS_ITEM>>() ?? new List<WMS_ITEM>(); - if (!qtyList.Any() || qtyList.Any(q => q.QTY <= 0)) - { - action.IsSuccessed = false; - action.Data.Data = CurInvItem.Items.Select(q => new { q.SN, q.QTY }); - action.Data.Command = Command = "ComfirmQty"; - //action.LocaleMsg = Biz.L("鏁伴噺涓嶈兘灏忎簬绛変簬闆讹紝璇烽噸鏂扮‘璁ゆ潯鐮乕{0}]鐨勬暟閲�"); - action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ReComfirmQty", input.SN); - return action; - } - else - { - foreach (var qty in qtyList) - { - var item = CurInvItem.Items.First(q => q.SN == qty.SN); - item.QTY = qty.QTY; - var pkg = CurInvItem.Packages.First(q => q.SN == qty.SN); - pkg.QTY = qty.QTY; + item.SUPP_LOTNO = new Barcode(qty.Code).LotNo; //渚涘簲鍟嗘壒娆″彿 + var pkg = CurInvItem.Packages.First(q => q.SN == qty.Code); + pkg.QTY = qty.WhQty; } CurInvItem.UpdatePkgQty(); - - Command = "Normal"; } } -- Gitblit v1.9.3