From 9e5eb7707c9a42e2515a583b40078d2d7685e2d0 Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期三, 19 三月 2025 00:51:42 +0800 Subject: [PATCH] 优化清点上架支持扫箱条码 --- Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs | 129 +++++++++++++++++++++++++++---------------- 1 files changed, 81 insertions(+), 48 deletions(-) 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 255dfb3..bf58099 100644 --- a/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs +++ b/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs @@ -11,6 +11,8 @@ using Tiger.IBusiness; using Tiger.Model.MES.Yada; using Tiger.Model.Entitys.MES.U9C; +using System.Security.Policy; +using Tiger.Model.Entitys.MES.Position; namespace Tiger.Business.WMS.Transaction { @@ -21,7 +23,7 @@ { public ICount_BIZ_U9_ASN Init(string id, string userCode, string apiHost, string orgCode) { - base.Init(id, apiHost, userCode, orgCode); + base.Init(id, userCode, apiHost, orgCode); //鍔犺浇宸茬粡娓呯偣鏁版嵁 LoadData(); Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]"); @@ -31,7 +33,7 @@ #region Propertys & Variables //private List<WmsOrder<BIZ_U9_ASN>> _OrderList { get; set; } = new(); private List<string> OrderList = new(); - private BIZ_U9_ASN_SN CurSn = new(); + private List<BIZ_U9_ASN_SN> CurSn = new(); private List<BIZ_U9_ASN_SN> ScanList = new(); #endregion @@ -41,8 +43,7 @@ /// </summary> private void LoadData() { - var orders = MainDB.Queryable<BIZ_U9_ASN>().Where(q => ("," + q.RECEIVER + ",").Contains("," + UserCode + ",")).ToList(); - OrderList = orders.Select(q => q.ORDER_NO).ToList(); + OrderList = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.RECEIVER == UserCode && SqlFunc.Subqueryable<BIZ_U9_ASN>().Where(s => s.ORDER_NO == q.ORDER_NO && s.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()).Any()).Select(q => q.ORDER_NO).ToList(); } /// <summary> /// 鎵弿鍏ュ彛 @@ -99,8 +100,20 @@ action.LocaleMsg = Biz.L("WMS.WmsItem.Barcode.IllegalFailure", input.SN); return action; } - CurSn = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.SN == barcode.SN).First(); + if (barcode.Type == Barcode.Types.OuterPackage) + { + CurSn = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.CARTON_NO == barcode.SN).ToList(); + } + else + { + CurSn = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.SN == barcode.SN).ToList(); + foreach (var sn in CurSn) + { + sn.META_SN = input.SN; + } + } + if (CurSn.IsNullOrEmpty()) { action.IsSuccessed = false; @@ -108,22 +121,22 @@ action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.SnNotExists", input.SN); return action; } - if (CurSn.AUTH_ORG != input.AuthOption.CurOrg) + if (CurSn.First().AUTH_ORG != input.AuthOption.CurOrg) { action.IsSuccessed = false; //action.LocaleMsg = Biz.L($"鏉$爜鎵�灞炵粍缁嘯{0}]涓庡綋鍓嶇櫥褰曠粍缁嘯{1}]涓嶄竴鑷达紝璇烽噸鏂伴�夋嫨缁勭粐"); - action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.OrgNotCorrect", CurSn.AUTH_ORG, input.AuthOption.CurOrg); + action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.OrgNotCorrect", CurSn.First().AUTH_ORG, input.AuthOption.CurOrg); return action; } //楠岃瘉鏉$爜鏄惁姝g‘ - if (CurSn.STATUS > WMS_ITEM.STATUSs.Incoming.GetValue()) + if (CurSn.First().STATUS > WMS_ITEM.STATUSs.Incoming.GetValue()) { action.IsSuccessed = false; //action.LocaleMsg = Biz.L("鐘舵�乕{0}]寮傚父锛岃閲嶆柊鎵弿"); - action.LocaleMsg = Biz.L("WMS.Default.ScanItem.StatusException", CurSn.STATUS.GetEnumDesc<WMS_ITEM.STATUSs>()); + action.LocaleMsg = Biz.L("WMS.Default.ScanItem.StatusException", CurSn.First().STATUS.GetEnumDesc<WMS_ITEM.STATUSs>()); return action; } - CurSn.META_SN = input.SN; + Result<IInventory> result = WMS_ITEM_Biz.WmsItem.Get(barcode.SN, input.AuthOption, true); if (!result.IsSuccessed) @@ -139,7 +152,7 @@ { action.IsSuccessed = false; //action.LocaleMsg = Biz.L("鐗╂枡缂栫爜[{0}]涓嶅瓨鍦ㄦ垨鑰呰鐗╂枡鏈惎鐢�"); - action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ItemCodeNotExistsOrNotActive", inv.ItemInfo.ITEM_CODE.IsNullOrEmpty(inv.Barcode.ItemCode)); + action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ItemCodeNotExistsOrNotActive", (inv.ItemInfo?.ITEM_CODE).IsNullOrEmpty(inv.Barcode.ItemCode)); return action; } @@ -155,8 +168,7 @@ AUTH_ORG = input.AuthOption.CurOrg, STATUS = WMS_ITEM.STATUSs.WaitIn.GetValue(), QTY = inv.Barcode.Qty.ToDouble(), - PROD_DATE = inv.Barcode.DateCode.ToDateTime(), - ERP_WH = CurScanShelf.WarehouseCode, + PROD_DATE = (inv.Barcode.DateCode?? DateTime.Now.ToString("yyyy-MM-dd")).ToDateTime(), UNIT = inv.Barcode.Unit, }; @@ -166,7 +178,6 @@ AUTH_ORG = input.AuthOption.CurOrg, ITEM_CODE = inv.Barcode.ItemCode, QTY = inv.Barcode.Qty.ToDouble(), - ERP_WH = CurScanShelf.WarehouseCode, UNIT = inv.Barcode.Unit, }; @@ -201,12 +212,12 @@ { foreach (var item in inv.Items) { - item.ERP_WH = CurScanShelf.WarehouseCode; + item.ERP_WH = ""; item.AUTH_ORG = input.AuthOption.CurOrg; } foreach (var item in inv.Packages) { - item.ERP_WH = CurScanShelf.WarehouseCode; + item.ERP_WH = ""; item.AUTH_ORG = input.AuthOption.CurOrg; } } @@ -259,18 +270,24 @@ } //鎵ц娓呯偣鏁版嵁澶勭悊 - CurSn.STATUS = WMS_ITEM.STATUSs.Counted.GetValue(); - CurSn.QTY = CurInvItem.Items.Sum(q => q.QTY); - foreach (var item in CurInvItem.Items) + foreach (var sn in CurSn) + { + sn.STATUS = WMS_ITEM.STATUSs.Counted.GetValue(); + sn.QTY = CurInvItem.Items.Where(q => q.SN == sn.SN).Sum(q => q.QTY); + sn.RECEIVER = UserCode; + sn.RECEIVE_DATE = DateTime.Now; + } + foreach (var item in CurInvItem.Items) { - item.AUTH_ORG = CurSn.AUTH_ORG; + var sn = CurSn.First(q => q.SN == item.SN); + item.AUTH_ORG = sn.AUTH_ORG; item.STATUS = WMS_ITEM.STATUSs.Counted.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_ASN); - item.TRANS_NO = CurSn.ORDER_NO; - item.TRANS_LINE = CurSn.LINE_NO; + item.TRANS_NO = sn.ORDER_NO; + item.TRANS_LINE = sn.LINE_NO; CurInvItem.History.Add(new WMS_ITEM_HIS(item, $"鏉$爜[{CurInvItem.SN}]娓呯偣瀹屾垚锛屾搷浣滃崟鎹甗{item.TRANS_NO}]")); } @@ -294,7 +311,7 @@ db.Storageable(_Packages, UserCode).ToStorage().AsInsertable.ExecuteCommand(); db.Insertable(_History, UserCode).ExecuteCommand(); var e = db.Storageable(_ItemsExt, UserCode).ToStorage().AsInsertable.ExecuteCommand();//涓嶅瓨鍦ㄦ彃鍏� - db.Updateable<BIZ_U9_ASN>(UserCode).SetColumns(q => q.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()).Where(q => q.ORDER_NO == _CurSn.ORDER_NO).ExecuteCommand(); + db.Updateable<BIZ_U9_ASN>(UserCode).SetColumns(q => q.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()).Where(q => q.ORDER_NO == _CurSn.First().ORDER_NO).ExecuteCommand(); db.Storageable(_CurSn, UserCode).ExecuteCommand(); }); @@ -321,11 +338,11 @@ //淇濆瓨鏁版嵁搴� SaveCommitListToDB(); - if (!OrderList.Contains(CurSn.ORDER_NO)) + if (!OrderList.Contains(CurSn.First().ORDER_NO)) { - OrderList.Add(CurSn.ORDER_NO); + OrderList.Add(CurSn.First().ORDER_NO); } - ScanList.Add(CurSn); + ScanList.AddRange(CurSn); // 杩斿洖鏁版嵁 action.Data.Data = ScanList; @@ -350,6 +367,8 @@ foreach (var sn in ScanList) { sn.STATUS = WMS_ITEM.STATUSs.Incoming.GetValue(); + sn.RECEIVER = null; + sn.RECEIVE_DATE = DateTime.MinValue; } var historys = new List<WMS_ITEM_HIS>(); @@ -418,7 +437,9 @@ var dbTran = db.UseTran(() => { db.Updateable<BIZ_U9_ASN_SN>(UserCode).SetColumns(q => q.STATUS == WMS_ITEM.STATUSs.Incoming.GetValue()) - .Where(q => q.SN == input.SN).ExecuteCommand(); + .SetColumns(q => q.RECEIVER == null) + .SetColumns(q => q.RECEIVE_DATE == DateTime.MinValue) + .Where(q => q.SN == input.SN).ExecuteCommand(); db.Updateable(item, UserCode).ExecuteCommand(); db.Insertable(new WMS_ITEM_HIS(item, $"鏉$爜[{item.SN}]鍙栨秷娓呯偣锛屾搷浣滃崟鎹甗{order}]"), UserCode).ExecuteCommand(); }); @@ -445,25 +466,29 @@ /// 鑾峰彇鏈宸叉竻鐐圭殑鐗╂枡鍒楄〃锛堝甫鍒嗛〉锛� /// </summary> /// <returns></returns> - public async Task<PageAble<BIZ_U9_ASN_SN>> GetScannedList() + public async Task<ApiAction<PageAble<BIZ_U9_ASN_SN>>> GetScannedList(BaseInputWithPage input) { - return await Task.FromResult(new PageAble<BIZ_U9_ASN_SN>() - { - data = ScanList, - totals = ScanList.Count(), - }); - } + var action = new ApiAction<PageAble<BIZ_U9_ASN_SN>>(); + action.Data = new PageAble<BIZ_U9_ASN_SN>(); + action.Data.pageSize = input.pageSize; + action.Data.pageIndex = input.pageIndex; + action.Data.totals = ScanList.Count; + action.Data.data = ScanList.Skip((input.pageIndex - 1) * input.pageSize).Take(input.pageSize).ToList(); + //action.Data = query; + return action; + } - /// <summary> - /// 鑾峰彇褰撳墠鎵�鏈夊崟鎹俊鎭� - /// </summary> - /// <returns></returns> - public async Task<List<BIZ_U9_ASN>> GetOrderList() + /// <summary> + /// 鑾峰彇褰撳墠鎵�鏈夊崟鎹俊鎭� + /// </summary> + /// <returns></returns> + public async Task<ApiAction<List<BIZ_U9_ASN>>> GetOrderList() { - var Orders = await Biz.Db.Queryable<BIZ_U9_ASN>().Where(q => OrderList.Contains(q.ORDER_NO)).IncludesAllFirstLayer().ToListAsync(); - if (!Orders.IsNullOrEmpty()) + var action = new ApiAction<List<BIZ_U9_ASN>>(); + action.Data = await Biz.Db.Queryable<BIZ_U9_ASN>().Where(q => OrderList.Contains(q.ORDER_NO)).IncludesAllFirstLayer().ToListAsync(); + if (!action.Data.IsNullOrEmpty()) { - foreach (var order in Orders) + foreach (var order in action.Data) { foreach (var dtl in order.Details) { @@ -472,7 +497,7 @@ } } } - return Orders; + return action; } /// <summary> @@ -569,7 +594,8 @@ if (list != null && list.Count > 0) { - receipt.AUTH_ORG = order.AUTH_ORG; + 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; @@ -587,6 +613,7 @@ 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, @@ -641,14 +668,20 @@ 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}]锛屽緟妫�楠屽畬鎴愬悗鍙叆搴�")); } + 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(); + //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄 + var db = GetCommitDB(); var dbTran = db.UseTran(() => { - db.Updateable(items, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.TRANS_CODE, q.TRANS_NO, q.TRANS_LINE, q.SOURCE_CODE, q.SOURCE_ORDER, q.SOURCE_LINE }).ExecuteCommandAsync(); + db.Updateable(items, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, 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.Insertable(receipt, 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(); }); -- Gitblit v1.9.3