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()
{
}