diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Outputs/InStockDetailOutput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Outputs/InStockDetailOutput.cs index 67bd2796..7d239f16 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Outputs/InStockDetailOutput.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Outputs/InStockDetailOutput.cs @@ -42,11 +42,11 @@ namespace Tnb.WarehouseMgr.Entities.Dto /// /// 需求数量 /// - public int pr_qty { get; set; } + public decimal? pr_qty { get; set; } /// /// 实际入库数量 /// - public int qty { get; set; } + public decimal? qty { get; set; } /// /// 不含税单价 /// @@ -66,7 +66,7 @@ namespace Tnb.WarehouseMgr.Entities.Dto /// /// 已打印数量 /// - public int print_qty { get; set; } + public decimal? print_qty { get; set; } /// /// 扫描数量 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsInstockD.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsInstockD.cs index e9f779da..7b676d67 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsInstockD.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsInstockD.cs @@ -52,12 +52,12 @@ public partial class WmsInstockD : BaseEntity /// /// 入库需求数量 /// - public int pr_qty { get; set; } + public decimal? pr_qty { get; set; } /// /// 实际入库数量 /// - public int qty { get; set; } + public decimal qty { get; set; } /// /// 原因 @@ -132,7 +132,7 @@ public partial class WmsInstockD : BaseEntity /// /// 已打印数量 /// - public int print_qty { get; set; } + public decimal print_qty { get; set; } /// /// 扫描数量 diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTempCode.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTempCode.cs index edc9cfd4..d67d38c8 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTempCode.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTempCode.cs @@ -42,7 +42,7 @@ public partial class WmsTempCode : BaseEntity /// /// 条码数量 /// - public int? codeqty { get; set; } + public decimal? codeqty { get; set; } /// /// 单位ID diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs index 478c3f0d..b006d4e0 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs @@ -3,10 +3,12 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Aop.Api.Domain; using JNPF.Common.Core.Manager; using JNPF.Systems.Interfaces.System; using Microsoft.AspNetCore.Mvc; using Minio.DataModel; +using NPOI.SS.Formula.Functions; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.WarehouseMgr.Entities; @@ -70,22 +72,47 @@ namespace Tnb.WarehouseMgr List wmsTempCodes = new(); for (int i = 0; i < inStockDetails.Count; i++) { - WmsTempCode barCode = new(); - barCode.org_id = inStockDetails[i].org_id; - barCode.material_id = inStockDetails[i].material_id; - barCode.material_code = inStockDetails[i].material_code; - var code = $"{inStockDetails[i].material_code}{inStockDetails[i].code_batch}{(i + 1).ToString().PadLeft(4, '0')}"; - barCode.barcode = code; - barCode.code_batch = inStockDetails[i].code_batch; - barCode.codeqty = (int?)(await _db.Queryable().FirstAsync(it => it.id == inStockDetails[i].material_id))?.minpacking; - barCode.unit_id = inStockDetails[i].unit_id; - barCode.is_lock = 0; - barCode.is_end = "0"; - barCode.require_id = input.BillIds[i]; - barCode.require_code = (await _db.Queryable().SingleAsync(it => it.id == input.BillIds[i])).bill_code; - barCode.create_id = _userManager.UserId; - barCode.create_time = DateTime.Now; - wmsTempCodes.Add(barCode); + if (inStockDetails[i] is null) continue; + var minPacking = (await _db.Queryable().FirstAsync(it => it.id == inStockDetails[i].material_id))?.minpacking; + var codeNum = 0; + + if (inStockDetails[i].pr_qty.HasValue && minPacking.HasValue && minPacking.Value > 0) + { + var mod = (int)(inStockDetails[i].pr_qty.Value % minPacking.Value); + codeNum = (int)(mod > 0 ? inStockDetails[i].pr_qty / minPacking.Value + 1 : inStockDetails[i].pr_qty / minPacking.Value); + if (inStockDetails[i].pr_qty.Value > minPacking.Value) + { + for (int j = 0; j < codeNum; j++) + { + var index = j + 1; + WmsTempCode barCode = await CreateInstock(inStockDetails[i], index); + if (minPacking.HasValue) + { + if (index < codeNum) + { + barCode.codeqty = minPacking; + } + else + { + if (mod > 0) barCode.codeqty = mod; + else barCode.codeqty = minPacking; + } + } + wmsTempCodes.Add(barCode); + } + } + else if (inStockDetails[i].pr_qty.Value <= minPacking.Value) + { + WmsTempCode barCode = await CreateInstock(inStockDetails[i], i + 1); + wmsTempCodes.Add(barCode); + } + + } + else if (!minPacking.HasValue) + { + WmsTempCode barCode = await CreateInstock(inStockDetails[i], i + 1); + wmsTempCodes.Add(barCode); + } } var row = await _db.Insertable(wmsTempCodes).ExecuteCommandAsync(); if (row > 0) @@ -96,17 +123,39 @@ namespace Tnb.WarehouseMgr await _db.Ado.CommitTranAsync(); } - catch (Exception) + catch (Exception ex) { await _db.Ado.RollbackTranAsync(); } } + + private async Task CreateInstock(WmsInstockD detail, int no) + { + var instock = await _db.Queryable().SingleAsync(it => it.id == detail.bill_id); + WmsTempCode barCode = new(); + barCode.org_id = detail.org_id; + barCode.material_id = detail.material_id; + barCode.material_code = detail.material_code; + var code = $"{detail.material_code}{detail.code_batch}{no.ToString().PadLeft(4, '0')}"; + barCode.barcode = code; + barCode.code_batch = detail.code_batch; + barCode.codeqty = detail.pr_qty.Value; + barCode.unit_id = detail.unit_id; + barCode.is_lock = 0; + barCode.is_end = "0"; + barCode.require_id = detail.bill_id; + barCode.require_code = instock?.bill_code; + barCode.create_id = _userManager.UserId; + barCode.create_time = DateTime.Now; + return barCode; + } + /// /// 扫码入库 /// /// [HttpPost] - public async Task SacnBarCodeInStock() + public async Task SacnBarCodeInStock() { }