This commit is contained in:
alex
2023-06-21 14:01:54 +08:00
parent ceed112536
commit fcb3a321ae

View File

@@ -26,6 +26,7 @@ namespace Tnb.WarehouseMgr
private readonly ISqlSugarClient _db; private readonly ISqlSugarClient _db;
private readonly IDictionaryDataService _dictionaryDataService; private readonly IDictionaryDataService _dictionaryDataService;
private readonly IUserManager _userManager; private readonly IUserManager _userManager;
private static Dictionary<string, object> _dicBillCodes = new();
public WmsInStockService(ISqlSugarRepository<WmsInstockH> repository, IDictionaryDataService dictionaryDataService, IUserManager userManager) public WmsInStockService(ISqlSugarRepository<WmsInstockH> repository, IDictionaryDataService dictionaryDataService, IUserManager userManager)
{ {
_db = repository.AsSugarClient(); _db = repository.AsSugarClient();
@@ -66,6 +67,11 @@ namespace Tnb.WarehouseMgr
{ {
await _db.Ado.BeginTranAsync(); await _db.Ado.BeginTranAsync();
if (_dicBillCodes.Count < 1)
{
_dicBillCodes = await _db.Queryable<WmsInstockH>().ToDictionaryAsync(x => x.id, x => x.bill_code);
}
var inStockDetails = await _db.Queryable<WmsInstockD>().Where(it => input.BillIds.Contains(it.bill_id)).ToListAsync(); var inStockDetails = await _db.Queryable<WmsInstockD>().Where(it => input.BillIds.Contains(it.bill_id)).ToListAsync();
if (inStockDetails?.Count > 0) if (inStockDetails?.Count > 0)
{ {
@@ -78,9 +84,9 @@ namespace Tnb.WarehouseMgr
if (inStockDetails[i].pr_qty.HasValue && minPacking.HasValue && minPacking.Value > 0) if (inStockDetails[i].pr_qty.HasValue && minPacking.HasValue && minPacking.Value > 0)
{ {
var mod = (int)(inStockDetails[i].pr_qty.Value % minPacking.Value); 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); codeNum = (int)(mod > 0 ? inStockDetails[i].pr_qty!.Value / minPacking.Value + 1 : inStockDetails[i].pr_qty!.Value / minPacking.Value);
if (inStockDetails[i].pr_qty.Value > minPacking.Value) if (inStockDetails[i].pr_qty!.Value > minPacking.Value)
{ {
for (int j = 0; j < codeNum; j++) for (int j = 0; j < codeNum; j++)
{ {
@@ -101,7 +107,7 @@ namespace Tnb.WarehouseMgr
wmsTempCodes.Add(barCode); wmsTempCodes.Add(barCode);
} }
} }
else if (inStockDetails[i].pr_qty.Value <= minPacking.Value) else if (inStockDetails[i].pr_qty!.Value <= minPacking.Value)
{ {
WmsTempCode barCode = await CreateInstock(inStockDetails[i], i + 1); WmsTempCode barCode = await CreateInstock(inStockDetails[i], i + 1);
wmsTempCodes.Add(barCode); wmsTempCodes.Add(barCode);
@@ -131,7 +137,6 @@ namespace Tnb.WarehouseMgr
private async Task<WmsTempCode> CreateInstock(WmsInstockD detail, int no) private async Task<WmsTempCode> CreateInstock(WmsInstockD detail, int no)
{ {
var instock = await _db.Queryable<WmsInstockH>().SingleAsync(it => it.id == detail.bill_id);
WmsTempCode barCode = new(); WmsTempCode barCode = new();
barCode.org_id = detail.org_id; barCode.org_id = detail.org_id;
barCode.material_id = detail.material_id; barCode.material_id = detail.material_id;
@@ -139,12 +144,12 @@ namespace Tnb.WarehouseMgr
var code = $"{detail.material_code}{detail.code_batch}{no.ToString().PadLeft(4, '0')}"; var code = $"{detail.material_code}{detail.code_batch}{no.ToString().PadLeft(4, '0')}";
barCode.barcode = code; barCode.barcode = code;
barCode.code_batch = detail.code_batch; barCode.code_batch = detail.code_batch;
barCode.codeqty = detail.pr_qty.Value; barCode.codeqty = detail.pr_qty!.Value;
barCode.unit_id = detail.unit_id; barCode.unit_id = detail.unit_id;
barCode.is_lock = 0; barCode.is_lock = 0;
barCode.is_end = "0"; barCode.is_end = "0";
barCode.require_id = detail.bill_id; barCode.require_id = detail.bill_id;
barCode.require_code = instock?.bill_code; barCode.require_code = _dicBillCodes.ContainsKey(detail.bill_id) ? _dicBillCodes[detail.bill_id]?.ToString() : "";
barCode.create_id = _userManager.UserId; barCode.create_id = _userManager.UserId;
barCode.create_time = DateTime.Now; barCode.create_time = DateTime.Now;
return barCode; return barCode;