From c665a59fd9472c4349db11701e682599bff23513 Mon Sep 17 00:00:00 2001 From: taomin0419 <865692298@qq.com> Date: Wed, 28 Jun 2023 10:37:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=94=B3=E8=AF=B7=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E5=9B=9E=E6=9B=B4=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.WarehouseMgr/WmsOutStockService.cs | 91 +++++++++++-------- .../WmsSignForDeliveryService.cs | 25 +++-- 2 files changed, 72 insertions(+), 44 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs index ba350f16..3b15c0eb 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs @@ -17,6 +17,7 @@ using Microsoft.AspNetCore.Mvc; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.WarehouseMgr.Entities; +using Tnb.WarehouseMgr.Entities.Attributes; using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Dto; using Tnb.WarehouseMgr.Entities.Enums; @@ -28,8 +29,10 @@ namespace Tnb.WarehouseMgr /// 出库申请业务类 /// [OverideVisualDev(ModuleConsts.MODULE_WMSOUTSTOCK_ID)] + [ServiceModule(BizTypeId)] public class WmsOutStockService : BaseWareHouseService, IWmsOutStockService { + private const string BizTypeId = "26191522660645"; private readonly ISqlSugarClient _db; private readonly IDictionaryDataService _dictionaryDataService; private readonly IRunService _runService; @@ -271,54 +274,68 @@ namespace Tnb.WarehouseMgr public override async Task ModifyAsync(WareHouseUpInput input) { if (input == null) throw new ArgumentNullException("input"); - var carryId = input.carryIds[^input.carryIds.Count]; - var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); - if (carry != null) - { - var outStatus = carry.out_status.ToEnum(); - if (outStatus == EnumOutStatus.全部出) - { - //当前载具对应的所有条码插入 - var carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); - var outStockCodes = carryCodes.Adapt>(); - var otds = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); - outStockCodes.ForEach(x => - { - var billDId = otds?.Find(xx => xx.material_id == x.material_id && xx.code_batch == x.code_batch)?.id; - x.id = SnowflakeIdHelper.NextId(); - x.bill_id = input.requireId; - x.bill_d_id = billDId; - x.org_id = _userManager.User.OrganizeId; - x.create_id = _userManager.UserId; - x.create_time = DateTime.Now; - }); - await _db.Insertable(outStockCodes).ExecuteCommandAsync(); - var detailIds = outStockCodes.Select(x => x.bill_d_id).ToList(); - var curOutstockDetails = otds.FindAll(x => detailIds.Contains(x.id)); - var dic = outStockCodes.GroupBy(g => g.bill_d_id).ToDictionary(x => x.Key, x => x.Select(x => x.codeqty).ToList()); - foreach (var osd in curOutstockDetails) + + try + { + var carryId = input.carryIds[^input.carryIds.Count]; + var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); + if (carry != null) + { + var outStatus = carry.out_status.ToEnum(); + if (outStatus == EnumOutStatus.全部出) { - if (dic.ContainsKey(osd.id)) + //当前载具对应的所有条码插入 + var carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); + var outStockCodes = carryCodes.Adapt>(); + var otds = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); + outStockCodes.ForEach(x => { - osd.qty += dic[osd.id].Sum(d => d); - if (osd.qty >= osd.pr_qty) + var billDId = otds?.Find(xx => xx.material_id == x.material_id && xx.code_batch == x.code_batch)?.id; + if (billDId.IsNullOrEmpty()) { - osd.line_status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID; + billDId = otds?.Find(xx => xx.material_id == x.material_id)?.id; + } + x.id = SnowflakeIdHelper.NextId(); + x.bill_id = input.requireId; + x.bill_d_id = billDId; + x.org_id = _userManager.User.OrganizeId; + x.create_id = _userManager.UserId; + x.create_time = DateTime.Now; + }); + await _db.Insertable(outStockCodes).ExecuteCommandAsync(); + + var detailIds = outStockCodes.Select(x => x.bill_d_id).ToList(); + var curOutstockDetails = otds.FindAll(x => detailIds.Contains(x.id)); + var dic = outStockCodes.GroupBy(g => g.bill_d_id).ToDictionary(x => x.Key, x => x.Select(x => x.codeqty).ToList()); + foreach (var osd in curOutstockDetails) + { + if (dic.ContainsKey(osd.id)) + { + osd.qty += dic[osd.id].Sum(d => d); + if (osd.qty >= osd.pr_qty) + { + osd.line_status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID; + } } } + await _db.Updateable(curOutstockDetails).ExecuteCommandAsync(); + if (otds.All(x => x.line_status == WmsWareHouseConst.BILLSTATUS_COMPLETE_ID)) + { + await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); + //如果是自动单据,需要回更上层系统 + } } - await _db.Updateable(curOutstockDetails).ExecuteCommandAsync(); - if (otds.All(x => x.line_status == WmsWareHouseConst.BILLSTATUS_COMPLETE_ID)) + else if (outStatus == EnumOutStatus.分拣出) { - await _db.Updateable().SetColumns(it => new WmsOutstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }).Where(it => it.id == input.requireId).ExecuteCommandAsync(); - //如果是自动单据,需要回更上层系统 + } } - else if (outStatus == EnumOutStatus.分拣出) - { + } + catch (Exception ex) + { - } + throw; } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs index 6af12c94..5f972f85 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs @@ -66,6 +66,12 @@ namespace Tnb.WarehouseMgr var carry = await _db.Queryable().SingleAsync(it => it.id == input.carryId); if (carry != null) { + if (carry.location_id.IsNotEmptyOrNull()) + { + var loc = await _db.Queryable().SingleAsync(it => it.id == carry.location_id); + loc.is_use = (int)EnumCarryStatus.空闲; + await _db.Updateable(loc).UpdateColumns(it => it.is_use).ExecuteCommandAsync(); + } var disTask = await _db.Queryable().SingleAsync(it => it.id == input.disTaskId); if (disTask != null) { @@ -77,18 +83,23 @@ namespace Tnb.WarehouseMgr case "寄存出库": case "齐套出库": case "一般出库": - await _wareCarryService.UpdateNullCarry(carry); + { + WareHouseUpInput upInput = new() { loginType = "web", bizTypeId = disTask.biz_type, requireId = disTask.require_id, carryIds = new List { input.carryId } }; + await DoUpdate(upInput); //回更业务 + await _wareCarryService.UpdateNullCarry(carry); + } break; + case "载具移出": + { + WareHouseUpInput upInput = new() { loginType = "web", bizTypeId = disTask.biz_type, requireId = disTask.require_id, carryIds = new List { input.carryId } }; + await DoUpdate(upInput); //回更业务 + } + break; + } } - var loc = await _db.Queryable().SingleAsync(it => it.id == carry.location_id); - loc.is_use = (int)EnumCarryStatus.空闲; - await _db.Updateable(loc).UpdateColumns(it => it.is_use).ExecuteCommandAsync(); - WareHouseUpInput upInput = new() { loginType = "web", bizTypeId = disTask.biz_type, requireId = disTask.require_id, carryIds = new List { input.carryId } }; - await DoUpdate(upInput); //回更业务 } } - await _db.Ado.CommitTranAsync(); } catch (Exception)