From 5defa98b47f651d69d0ed4cad5c83672089a07e1 Mon Sep 17 00:00:00 2001 From: FanLian Date: Thu, 3 Aug 2023 15:23:28 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=9B=B8=E5=85=B3=E4=B8=9A=E5=8A=A1=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0source=5Fid=E5=92=8Csource=5Fcode=202.=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E7=94=B3=E8=AF=B7=E6=9F=A5=E8=AF=A2=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E5=8D=95=E5=A2=9E=E5=8A=A0=E4=BB=93=E5=BA=93=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E5=9B=9E=E4=BC=A0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dto/Inputs/MESCreateInstockInput.cs | 5 ++++ .../Dto/Inputs/MESCreateOutstockInput.cs | 12 +++++++++- .../Dto/Inputs/MESKittingOutStkInput.cs | 4 ++++ .../Entity/WmsInstockD.part.cs | 19 +++++++++++++++ .../Entity/WmsKittingInstock.cs | 5 ++++ .../Entity/WmsKittingoutH.cs | 5 ++++ .../Entity/WmsOutstockH.cs | 10 ++++++++ .../Entity/WmsSetsortingH.cs | 6 +++++ .../Tnb.WarehouseMgr/WmsInStockService.cs | 7 +++++- .../WmsKittingInStkService.cs | 4 +++- .../Tnb.WarehouseMgr/WmsOutStockService.cs | 23 +++++++++++-------- .../Tnb.WarehouseMgr/WmsPDAInStockService.cs | 6 +++-- .../WmsRobotCallbackService.cs | 3 ++- .../Tnb.WarehouseMgr/WmsSetSortingService.cs | 15 ++++++++++-- .../Tnb.WarehouseMgr/WmskittingOutService.cs | 11 +++++++-- 15 files changed, 115 insertions(+), 20 deletions(-) create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsInstockD.part.cs diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESCreateInstockInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESCreateInstockInput.cs index 74fcb491..665a9b9f 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESCreateInstockInput.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESCreateInstockInput.cs @@ -52,6 +52,11 @@ namespace Tnb.WarehouseMgr.Entities.Dto.Inputs /// public string source_id { get; set; } + /// + /// 来源单据代码 + /// + public string source_code { get; set; } + /// /// 创建用户 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESCreateOutstockInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESCreateOutstockInput.cs index 358ffbc5..8c6e913c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESCreateOutstockInput.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESCreateOutstockInput.cs @@ -53,7 +53,17 @@ namespace Tnb.WarehouseMgr.Entities.Dto.Inputs /// public string location_code { get; set; } - + /// + /// 来源单据ID + /// + public string source_id { get; set; } + + /// + /// 来源单据号 + /// + public string source_code { get; set; } + + } public class MESWmsOutstockDInput { diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESKittingOutStkInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESKittingOutStkInput.cs index 6136d12c..ec0f52d8 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESKittingOutStkInput.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MESKittingOutStkInput.cs @@ -76,6 +76,10 @@ namespace Tnb.WarehouseMgr.Entities.Dto.Inputs /// public string source_id { get; set; } + /// + /// 来源单据号 + /// + public string source_code { get; set; } /// /// 顺序号 diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsInstockD.part.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsInstockD.part.cs new file mode 100644 index 00000000..296b48e7 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsInstockD.part.cs @@ -0,0 +1,19 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.WarehouseMgr.Entities; + +/// +/// 入库申请明细表 +/// + +public partial class WmsInstockD : BaseEntity +{ + + /// + /// 仓库名称 + /// + [SugarColumn(IsIgnore = true)] + public string warehouse_name { get; set; } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingInstock.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingInstock.cs index d9ef6375..e1fe43f2 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingInstock.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingInstock.cs @@ -69,6 +69,11 @@ public partial class WmsKittingInstock : BaseEntity /// public string? source_id { get; set; } + /// + /// 来源单据ID + /// + public string? source_code { get; set; } + /// /// 来源单单据类型 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingoutH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingoutH.cs index d09a8a25..dbae7a87 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingoutH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingoutH.cs @@ -94,6 +94,11 @@ public partial class WmsKittingoutH : BaseEntity /// public string? source_id { get; set; } + /// + /// 来源单据ID + /// + public string? source_code { get; set; } + /// /// 来源单单据类型 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutstockH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutstockH.cs index 99c50715..bea1851e 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutstockH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutstockH.cs @@ -114,6 +114,16 @@ public partial class WmsOutstockH : BaseEntity /// public string? use_dept_id { get; set; } + /// + /// 来源单据ID + /// + public string source_id { get; set; } + + /// + /// 来源单据号 + /// + public string source_code { get; set; } + /// /// 备注 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsSetsortingH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsSetsortingH.cs index b8001b33..02e04bb0 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsSetsortingH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsSetsortingH.cs @@ -89,6 +89,12 @@ public partial class WmsSetsortingH : BaseEntity /// public string? source_id { get; set; } + /// + /// 来源单据号 + /// + public string? source_code { get; set; } + + /// /// 来源单单据类型 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs index 71cfd65c..c171d8a9 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs @@ -70,7 +70,12 @@ namespace Tnb.WarehouseMgr public async Task GetInStockDetailsListById([FromRoute] string billId) { var dic = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_INSTOCK_D_BILL_STATUS_TYPEID); - var items = await _db.Queryable().Where(it => it.bill_id == billId).ToListAsync(); + var items = await _db.Queryable().LeftJoin((a,b)=>a.warehouse_id == b.id) + .Select((a, b) => new WmsInstockD + { + warehouse_name = b.whname + },true) + .Where(a => a.bill_id == billId).ToListAsync(); _db.ThenMapper(items, it => it.line_status = dic.ContainsKey(it.line_status) ? dic[it.line_status]?.ToString()! : ""); return items; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsKittingInStkService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsKittingInStkService.cs index 108a2dde..e513798d 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsKittingInStkService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsKittingInStkService.cs @@ -91,10 +91,10 @@ namespace Tnb.WarehouseMgr if (sPoint != null && ePoint != null) { var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) if (points?.Count > 0) { - if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => { var sPoint = it.FirstOrDefault(); @@ -124,6 +124,8 @@ namespace Tnb.WarehouseMgr preTask.require_code = input.data[nameof(preTask.bill_code)]?.ToString()!; preTask.create_id = _userManager.UserId; preTask.create_time = DateTime.Now; + preTask.source_id = input.data[nameof(WmsKittingInstock.source_id)].ToString(); + preTask.source_code = input.data[nameof(WmsKittingInstock.source_code)].ToString(); return preTask; }).ToList(); List carryCodes = new(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs index 06a008b2..3ce127dc 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs @@ -92,15 +92,16 @@ namespace Tnb.WarehouseMgr List carryCodes = new(); foreach (var os in outStockDList) { - var OutStockStrategyInput = new OutStockStrategyQuery { + var OutStockStrategyInput = new OutStockStrategyQuery + { carry_id = input.data[nameof(OutStockStrategyQuery.carry_id)].ToString(), warehouse_id = input.data[nameof(WmsOutstockH.warehouse_id)].ToString(), material_id = os.material_id, code_batch = os.code_batch, - }; - var outStkCarrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); + }; + var outStkCarrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); var carryCodesPart = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id).InnerJoin((a, b, c) => a.location_id == c.id) - .Where((a,b) => outStkCarrys.Select(x=>x.id).Contains(b.carry_id)) + .Where((a, b) => outStkCarrys.Select(x => x.id).Contains(b.carry_id)) .Select() .ToListAsync(); if (carryCodesPart?.Count > 0) @@ -167,8 +168,8 @@ namespace Tnb.WarehouseMgr } } carryIds = allOutIds.Concat(sortingOutIds).ToList(); - await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.全部出).ToString() }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.分拣出).ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); + await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.全部出).ToString(), source_id = input.data[nameof(WmsOutstockH.source_id)].ToString(), source_code = input.data[nameof(WmsOutstockH.source_code)].ToString() }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync(); + await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.分拣出).ToString(), source_id = input.data[nameof(WmsOutstockH.source_id)].ToString(), source_code = input.data[nameof(WmsOutstockH.source_code)].ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); } @@ -378,7 +379,7 @@ namespace Tnb.WarehouseMgr .Select() .ToListAsync(); if (carryCodesPart?.Count > 0) - { + { var codeQty = carryCodes.Sum(x => x.codeqty); if (codeQty < os.pr_qty) { @@ -450,8 +451,8 @@ namespace Tnb.WarehouseMgr } await _db.Insertable(outstock).ExecuteCommandAsync(); await _db.Insertable(outstockDs).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.全部出).ToString() }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.分拣出).ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); + await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.全部出).ToString(), source_id = outstock.source_id, source_code = outstock.source_code }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync(); + await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.分拣出).ToString(), source_id = outstock.source_id, source_code = outstock.source_code }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); } var carrys = await _db.Queryable().Where(it => carryIds.Contains(it.id)).ToListAsync(); @@ -497,7 +498,9 @@ namespace Tnb.WarehouseMgr require_id = outstock.id.ToString(), require_code = outstock.bill_code?.ToString(), create_id = _userManager.UserId, - create_time = DateTime.Now + create_time = DateTime.Now, + source_id = outstock.source_id, + source_code = outstock.source_code, }; return preTask; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs index 08b138ae..3b594c4d 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs @@ -136,7 +136,9 @@ namespace Tnb.WarehouseMgr require_code = input.data[nameof(WmsHandleH.require_code)]?.ToString(), create_id = _userManager.UserId, create_time = DateTime.Now, - }; + source_id = input.data[nameof(WmsKittingInstock.source_id)].ToString(), + source_code = input.data[nameof(WmsKittingInstock.source_code)].ToString() + }; return preTask; }).ToList(); @@ -252,7 +254,7 @@ namespace Tnb.WarehouseMgr // 更新临时条码表 状态is_end await _db.Updateable().SetColumns(it => new WmsTempCode { is_end = 1 }).Where(it => instockCOdes.Select(x => x.barcode).Contains(it.barcode)).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, - it => new WmsCarryH { carry_code = input.data[nameof(WmsCarryH.carry_code)].ToString()!, is_lock = 1, carry_status = ((int)EnumCarryStatus.占用).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, + it => new WmsCarryH { carry_code = input.data[nameof(WmsCarryH.carry_code)].ToString()!, is_lock = 1, carry_status = ((int)EnumCarryStatus.占用).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode, source_id = input.data[nameof(WmsOutstockH.source_id)].ToString(), source_code = input.data[nameof(WmsOutstockH.source_code)].ToString() }, it => new BasLocation { is_lock = 1, is_use = ((int)EnumCarryStatus.占用).ToString() }); if (instockCOdes?.Count > 0) { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsRobotCallbackService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsRobotCallbackService.cs index fceecd92..53a612da 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsRobotCallbackService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsRobotCallbackService.cs @@ -99,7 +99,8 @@ namespace Tnb.WarehouseMgr visualDevModelCrInput.data[nameof(WmsKittingInstock.create_time)] = DateTime.Now; visualDevModelCrInput.data[nameof(WmsKittingInstock.location_id)] = carry!.location_id!; visualDevModelCrInput.data[nameof(WmsKittingInstock.bill_code)] = _billRullService.GetBillNumber("WmsKittingInStk").GetAwaiter().GetResult(); - visualDevModelCrInput.data[nameof(WmsKittingInstock.source_id)] = kittingout.id; + visualDevModelCrInput.data[nameof(WmsKittingInstock.source_id)] = kittingout.source_id; + visualDevModelCrInput.data[nameof(WmsKittingInstock.source_code)] = kittingout.source_code; var location = await _db.Queryable().SingleAsync(it => it.id == kittingout.location_id); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs index 7a34163e..4075f939 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs @@ -1,4 +1,5 @@ using System; +using System.ArrayExtensions; using System.Collections.Generic; using System.Linq; using System.Text; @@ -141,7 +142,14 @@ namespace Tnb.WarehouseMgr await _db.Insertable(carryMats).ExecuteCommandAsync(); carryIds = carryMats.Select(x => x.carry_id).Distinct().ToList(); - await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.全部出).ToString(), collocation_scheme_id = singleSorting.collocation_scheme_id, collocation_scheme_code = singleSorting.collocation_scheme_code }).Where(it => carryIds.Contains(it.id)).ExecuteCommandAsync(); + await _db.Updateable() + .SetColumns(it => new WmsCarryH { + out_status = ((int)EnumOutStatus.全部出).ToString(), + collocation_scheme_id = singleSorting.collocation_scheme_id, + collocation_scheme_code = singleSorting.collocation_scheme_code, + source_id = singleSorting.source_id, + source_code = singleSorting.source_code }) + .Where(it => carryIds.Contains(it.id)).ExecuteCommandAsync(); //天益项目不需要 //await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.分拣出).ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); } @@ -159,6 +167,7 @@ namespace Tnb.WarehouseMgr List locIds = new(); var mid = 6; + if (carrys.Length > mid) { var leftCarrys = carrys[..mid]; @@ -246,7 +255,9 @@ namespace Tnb.WarehouseMgr require_id = requireId, require_code = requireCode, create_id = _userManager.UserId, - create_time = DateTime.Now + create_time = DateTime.Now, + source_id = carry.source_id, + source_code = carry.source_code, }; return preTask; }).ToList(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs index 8e1c0279..cc8523f1 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs @@ -96,6 +96,12 @@ namespace Tnb.WarehouseMgr ko.carry_id = firstCarry?.id; ko.carry_code = firstCarry?.carry_code; await _db.Updateable(ko).UpdateColumns(it => new { it.status, it.carry_id, it.carry_code }).ExecuteCommandAsync(); + if (firstCarry != null) + { + firstCarry.source_id = ko.source_id; + firstCarry.source_code = ko.source_code; + await _db.Updateable(firstCarry).UpdateColumns(it => new { it.source_id, it.source_code }).ExecuteCommandAsync(); + } } else { @@ -206,7 +212,9 @@ namespace Tnb.WarehouseMgr require_id = ko.id, require_code = ko.bill_code, create_id = _userManager.UserId, - create_time = DateTime.Now + create_time = DateTime.Now, + source_id = ko.source_id, + source_code = ko.source_code }; return preTask; }).ToList(); @@ -381,7 +389,6 @@ namespace Tnb.WarehouseMgr await _db.Ado.CommitTranAsync(); - await KittingOutByAdd(); isSuccessFul = true; } catch (Exception ex)