| | |
| | | OrgCode = input.OrgCode; |
| | | pageSize = input.pageSize; |
| | | _GetScannedList(); |
| | | CurBatchNo = !inStoreInfos.IsNullOrEmpty() && inStoreInfos.InStoreScanInfos.Count>0? InStoreScanInfos[0].BATCH_NO: DateTime.Now.ToString("yyyyMMddHHmmss"); |
| | | CurBatchNo = !inStoreInfos.IsNullOrEmpty() && inStoreInfos.InStoreScanInfos.Count > 0 ? InStoreScanInfos[0].BATCH_NO : DateTime.Now.ToString("yyyyMMddHHmmss"); |
| | | Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]"); |
| | | return this; |
| | | } |
| | |
| | | |
| | | #region Functions |
| | | |
| | | public ApiAction<InStoreInfos> GetInStoreInfos() { |
| | | return new() { Data= inStoreInfos }; |
| | | public ApiAction<InStoreInfos> GetInStoreInfos() |
| | | { |
| | | return new() { Data = inStoreInfos }; |
| | | } |
| | | /// <summary> |
| | | /// 扫描条码 |
| | |
| | | SN = item.SN, |
| | | BUSINESSCODE = UserCode, |
| | | ITEM_CODE = item.ITEM_CODE, |
| | | Qty = item.QTY.ToDecimal(), |
| | | Qty = item.QTY.ToDouble(), |
| | | SOURCECODE = Info?.ErpProdInBth.WORK_ORDER, |
| | | STATUS = WMS_ITEM.STATUSs.Counted.GetValue(), |
| | | CREATE_USER = UserCode, |
| | |
| | | RcvRptInput.labels = new(); |
| | | RcvRptInput.ErpProdInBths = ErpProdInBths; |
| | | RcvRptInput.userId = UserCode; |
| | | inStoreInfos= new() |
| | | inStoreInfos = new() |
| | | { |
| | | ErpProdInBths = ErpProdInBths, |
| | | InStoreScanInfos = InStoreScanInfos, |
| | |
| | | WorkOrder = item.WORK_ORDER, |
| | | ItemCode = item.ITEM_CODE, |
| | | WhCode = "10105", |
| | | PkgQty = item.SCAN_QTY.ToInt32(), |
| | | CompleteQty = item.SCAN_QTY.ToInt32(), |
| | | PkgQty = item.SCAN_QTY, |
| | | CompleteQty = item.SCAN_QTY, |
| | | OutputType = 0, |
| | | StorageType = 4, |
| | | DocState = 1, |
| | |
| | | { |
| | | foreach (var sn in ErpProdInSns) |
| | | { |
| | | var d = action.Data.ErpProdInBths.Where(q=> q.WORK_ORDER == sn.SOURCECODE).FirstOrDefault(); |
| | | var d = action.Data.ErpProdInBths.Where(q => q.WORK_ORDER == sn.SOURCECODE).FirstOrDefault(); |
| | | if (!d.IsNullOrEmpty()) |
| | | { |
| | | sn.BUSINESSCODE = d.ORDER_NO; |
| | |
| | | /// 查询已扫描列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public async Task<ApiAction<RcvRptDocCreateInput>> GetScannedList() |
| | | public async Task<ApiAction<InStoreInfos>> GetScannedList() |
| | | { |
| | | var action = new ApiAction<RcvRptDocCreateInput>(); |
| | | var action = new ApiAction<InStoreInfos>(); |
| | | try |
| | | { |
| | | action.Data = _GetScannedList(); |
| | | _GetScannedList(); |
| | | action.Data = inStoreInfos; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | private RcvRptDocCreateInput _GetScannedList() |
| | | { |
| | | RcvRptInput.RcvRptDocBases = new(); |
| | | RcvRptInput.ErpProdInBths = new(); |
| | | RcvRptInput.PrintJsons = new(); |
| | | RcvRptInput.labels = new(); |
| | | RcvRptInput.userId = UserCode; |
| | | if (RcvRptInput.ErpProdInBths.Count == 0) |
| | | ErpProdInSns.Clear(); |
| | | ErpProdIns.Clear(); |
| | | ErpProdInBths.Clear(); |
| | | InStoreScanInfos.Clear(); |
| | | RcvRptInput.ErpProdInBths = Biz.Db.Queryable<BIZ_ERP_PROD_IN_BTH>() |
| | | .Where(q => q.BATCH_NO == SqlFunc.Subqueryable<BIZ_ERP_PROD_IN_BTH>().Where(s => s.ORDER_NO == UserCode && s.GHOST_ROW == false).Select(s => s.BATCH_NO)) |
| | | .IncludesAllFirstLayer().ToList(); |
| | | foreach (var item in RcvRptInput.ErpProdInBths) |
| | | { |
| | | RcvRptInput.ErpProdInBths = Biz.Db.Queryable<BIZ_ERP_PROD_IN_BTH>() |
| | | .Where(q => q.BATCH_NO == SqlFunc.Subqueryable<BIZ_ERP_PROD_IN_BTH>().Where(s => s.ORDER_NO == UserCode).Select(s => s.BATCH_NO)) |
| | | .IncludesAllFirstLayer().ToList(); |
| | | foreach (var item in RcvRptInput.ErpProdInBths) |
| | | var values = item.ProdInSns.GroupBy(x => x.CARTONNO) |
| | | .Select(g => new InStoreScanInfo() { SN = g.Key, SALES_ORDER = item.SALES_ORDER, BATCH_NO = item.BATCH_NO, WORK_ORDER = item.WORK_ORDER, SCAN_QTY = g.Sum(x => x.Qty).ToDouble() }); |
| | | foreach (var t in values) |
| | | { |
| | | var values = item.ProdInSns.GroupBy(x => x.CARTONNO) |
| | | .Select(g => new InStoreScanInfo() { SN = g.Key, SALES_ORDER = item.SALES_ORDER, BATCH_NO = item.BATCH_NO, WORK_ORDER = item.WORK_ORDER, SCAN_QTY = g.Sum(x => x.Qty).ToDouble() }); |
| | | foreach (var t in values) |
| | | InStoreScanInfos.Add(t); |
| | | } |
| | | item.CartonQty = values.Count(); |
| | | |
| | | ErpProdIns.Add(new() |
| | | { |
| | | AUTH_ORG = OrgCode, |
| | | BILLCODE = UserCode, |
| | | BILLDATE = DateTime.Now, |
| | | STATUS = 0, |
| | | HANDLED = -1, |
| | | WAREHOUSECODE = "", |
| | | SOURCECODE = item.WORK_ORDER, |
| | | HANDLED_DATE = DateTime.Now, |
| | | }); |
| | | ErpProdInSns.AddRange(item.ProdInSns); |
| | | |
| | | //生成打印实体 |
| | | if (RcvRptInput.PrintJsons.Count == 0) |
| | | { |
| | | RcvRptInput.PrintJsons.Add(new() |
| | | { |
| | | InStoreScanInfos.Add(t); |
| | | ID = Guid.NewGuid().ToString("N"), |
| | | Items = new() { |
| | | item |
| | | } |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | //拼分页 |
| | | bool isAdded = false; |
| | | foreach (var p in RcvRptInput.PrintJsons) |
| | | { |
| | | if (!p.Items.Any(q => q.WORK_ORDER == item.WORK_ORDER)) |
| | | { |
| | | if (p.Items.Count < pageSize) |
| | | { |
| | | p.Items.Add(item); |
| | | isAdded = true; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | isAdded = true; |
| | | } |
| | | } |
| | | item.CartonQty = values.Count(); |
| | | |
| | | BIZ_ERP_PROD_IN prodIn = new() |
| | | { |
| | | AUTH_ORG = OrgCode, |
| | | BILLCODE = UserCode, |
| | | BILLDATE = DateTime.Now, |
| | | STATUS = 0, |
| | | HANDLED = -1, |
| | | WAREHOUSECODE = "", |
| | | SOURCECODE = item.WORK_ORDER, |
| | | HANDLED_DATE = DateTime.Now, |
| | | }; |
| | | ErpProdIns.Add(prodIn); |
| | | ErpProdInSns.AddRange(item.ProdInSns); |
| | | |
| | | //生成打印实体 |
| | | if (RcvRptInput.PrintJsons.Count == 0) |
| | | if (!isAdded) |
| | | { |
| | | RcvRptInput.PrintJsons.Add(new() |
| | | { |
| | |
| | | } |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | //拼分页 |
| | | bool isAdded = false; |
| | | foreach (var p in RcvRptInput.PrintJsons) |
| | | { |
| | | if (!p.Items.Any(q => q.WORK_ORDER == item.WORK_ORDER)) |
| | | { |
| | | if (p.Items.Count < pageSize) |
| | | { |
| | | p.Items.Add(item); |
| | | isAdded = true; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | isAdded = true; |
| | | } |
| | | } |
| | | if (!isAdded) |
| | | { |
| | | RcvRptInput.PrintJsons.Add(new() |
| | | { |
| | | ID = Guid.NewGuid().ToString("N"), |
| | | Items = new() { |
| | | item |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | ErpProdInBths = RcvRptInput.ErpProdInBths; |
| | | } |
| | | |
| | | ErpProdInBths = RcvRptInput.ErpProdInBths; |
| | | |
| | | inStoreInfos = new() |
| | | { |
| | | ErpProdInBths = ErpProdInBths, |
| | |
| | | return RcvRptInput; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除箱 |
| | | /// </summary> |
| | | /// <param name="SN"></param> |
| | | /// <returns></returns> |
| | | public async Task<ApiAction> Delete(string CartonNo) |
| | | { |
| | | var action = new ApiAction(); |
| | | try |
| | | { |
| | | var ErpProdInSn = ErpProdInSns.Where(s => s.CARTONNO == CartonNo).ToList(); |
| | | BIZ_ERP_PROD_IN_BTH erpbth = new(); |
| | | if (!ErpProdInSn.IsNullOrEmpty()) |
| | | { |
| | | erpbth = ErpProdInBths.Where(q => q.WORK_ORDER == ErpProdInSn[0].SOURCECODE).FirstOrDefault(); |
| | | if (!erpbth.IsNullOrEmpty()) |
| | | { |
| | | erpbth.SCAN_QTY -= ErpProdInSn.Count(q => q.CARTONNO == CartonNo); |
| | | erpbth.CartonQty--; |
| | | } |
| | | } |
| | | |
| | | //保存数据库 |
| | | var db = Business.Biz.Db; |
| | | var dbTran = db.UseTran(() => |
| | | { |
| | | db.Deleteable<BIZ_ERP_PROD_IN_SN>().Where(x => x.BUSINESSCODE == UserCode && x.CARTONNO == CartonNo).ExecuteCommand(); |
| | | db.Updateable(erpbth, $"InStoreOrderNo_{UserCode}").ExecuteCommand(); |
| | | if (erpbth.CartonQty == 0) |
| | | { |
| | | db.Deleteable(erpbth).ExecuteCommand(); |
| | | } |
| | | }); |
| | | if (!dbTran.IsSuccess) |
| | | { |
| | | Logger.Default.Fatal(dbTran.ErrorException, "Database transaction delete exception"); |
| | | this.Close(!dbTran.IsSuccess); |
| | | throw dbTran.ErrorException; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | action.CatchExceptionWithLog(ex, $"查询已扫描列表异常"); |
| | | } |
| | | return action; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 清除 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public async Task<ApiAction> Clear() |
| | | { |
| | | var action = new ApiAction(); |
| | | try |
| | | { |
| | | RcvRptInput = new(); |
| | | ProdInBatchs = new() { }; |
| | | ErpProdInBths = new() { }; |
| | | ErpProdIns = new(); |
| | | /// <summary> |
| | | /// 扫描列表 |
| | | /// </summary> |
| | | InStoreScanInfos = new() { }; |
| | | ErpProdInSns = new(); |
| | | inStoreInfos = new() { }; |
| | | |
| | | //保存数据库 |
| | | var db = Business.Biz.Db; |
| | | var dbTran = db.UseTran(() => |
| | | { |
| | | db.Deleteable<BIZ_ERP_PROD_IN_BTH>().Where(x => x.ORDER_NO == UserCode && x.IS_HANDLED == "N").ExecuteCommand(); |
| | | db.Deleteable<BIZ_ERP_PROD_IN_SN>().Where(x => x.BUSINESSCODE == UserCode).ExecuteCommand(); |
| | | }); |
| | | if (!dbTran.IsSuccess) |
| | | { |
| | | Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception"); |
| | | this.Close(!dbTran.IsSuccess); |
| | | throw dbTran.ErrorException; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | action.CatchExceptionWithLog(ex, $"查询已扫描列表异常"); |
| | | } |
| | | return action; |
| | | } |
| | | |
| | | #endregion Functions |
| | | |
| | | public override bool Close(bool needSaveHistoryLog = false) |