1
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user