齐套开发

This commit is contained in:
2024-09-25 15:18:19 +08:00
parent 6fe56c2de4
commit ab8b18af8f
6 changed files with 51 additions and 19 deletions

View File

@@ -2729,6 +2729,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
List<PrdMoTask> prdMoTasks = await db_WmsMaterialkit.Queryable<PrdMoTask>().Where(r => r.mo_task_status == DictConst.InProgressEnCode
&& !string.IsNullOrEmpty(r.parent_id)).ToListAsync();
LoggerWmsMaterialkit.LogInformation($"*********************************************************************************");
LoggerWmsMaterialkit.LogInformation($"查找到进行中的任务单:{string.Join(',', prdMoTasks.Select(r => r.mo_task_code))}");
Dictionary<string, object> workstaiondic = db_WmsMaterialkit.Queryable<OrganizeEntity>().ToDictionary(k => k.Id, v => v.EnCode);
@@ -2814,6 +2815,25 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
codeqty = d.codeqty,
unit_code = d.unit_id
}).ToListAsync();
LoggerWmsMaterialkit.LogWarning($"物料齐套计划{wmsMaterialkitRecordH.bill_code} 绑定工位{workstaiondic[prdMoTask.workstation_id].ToString()}的料箱物料{material.code}在暂存仓库存为{zccinventory.Sum(r => r.codeqty)}");
// 输送线库存
var ssxinventory = await db_WmsMaterialkit.Queryable<WmsCarryH>()
.InnerJoin<BasLocation>((a, b) => a.location_id == b.id)
.InnerJoin<WmsCarryCode>((a, b, c) => a.id == c.carry_id)
.InnerJoin<BasMaterial>((a, b, c, d) => d.id == c.material_id)
.Where((a, b, c, d) => (b.id == WmsWareHouseConst.ZZCSSX121009 || b.id == WmsWareHouseConst.ZZCSSX121010) && d.id == material.id
&& a.work_station == workstaiondic[prdMoTask.workstation_id].ToString())
.Select((a, b, c, d) => new customInventoryEntity
{
material_id = d.id,
material_code = d.code,
material_name = d.name,
material_specification = d.material_specification,
codeqty = c.codeqty,
unit_code = c.unit_id
}).ToListAsync();
LoggerWmsMaterialkit.LogWarning($"物料齐套计划{wmsMaterialkitRecordH.bill_code} 绑定工位{workstaiondic[prdMoTask.workstation_id].ToString()}的料箱物料{material.code}在输送线库存为{ssxinventory.Sum(r => r.codeqty)}");
// 正在配送
var inroadinventory = await db_WmsMaterialkit.Queryable<WmsPretaskH>()
@@ -2833,11 +2853,12 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
codeqty = c.codeqty,
unit_code = c.unit_id
}).ToListAsync();
LoggerWmsMaterialkit.LogWarning($"物料齐套计划{wmsMaterialkitRecordH.bill_code} 绑定工位{workstaiondic[prdMoTask.workstation_id].ToString()}的料箱物料{material.code}正在配送中的数量为{inroadinventory.Sum(r => r.codeqty)}");
List<customInventoryEntity> inventory = new List<customInventoryEntity>();
inventory.AddRange(zccinventory);
inventory.AddRange(ssxinventory);
inventory.AddRange(inroadinventory);
inventory.GroupBy(g => new { g.material_id, g.material_code, g.material_name, g.material_specification, g.unit_code }).Select(g =>
@@ -2935,7 +2956,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
};
List<WmsCarryH> items = await _wareHouseService.OutStockStrategy(outStockStrategyInput);
List<WmsCarryCode> wmsCarryCodes = await db_WmsMaterialkit.Queryable<WmsCarryCode>()
.Where(r => r.material_id == _wmsMaterialTransferD.material_id && r.code_batch == _wmsMaterialTransferD.code_batch).ToListAsync();
.Where(r => r.material_id == _wmsMaterialTransferD.material_id && r.code_batch == _wmsMaterialTransferD.code_batch
&& items.Select(x => x.id).Contains(r.carry_id)).ToListAsync();
decimal? inv_qty = wmsCarryCodes.Sum(r => r.codeqty);
can_qty = inv_qty > can_qty ? can_qty : inv_qty;
LoggerWmsMaterialkit.LogWarning($"转库单id{_wmsMaterialTransferD.bill_id} 明细id{_wmsMaterialTransferD.id} 物料{_wmsMaterialTransferD.material_code} 批次{_wmsMaterialTransferD.code_batch} 中储仓出库时可出数量为{can_qty}");
@@ -2981,7 +3003,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
List<WmsMaterialkitRecordD> WmsMaterialkitRecordDs = db_WmsMaterialkit.Queryable<WmsMaterialkitRecordD>()
.Where(a => a.bill_id == wmsMaterialkitRecord.id && a.yxf_qty < a.plan_qty).ToList();
if (wmsMaterialTransferDs.Count == 0)
if (WmsMaterialkitRecordDs.Count == 0)
{
await db_WmsMaterialkit.Updateable<WmsMaterialkitRecordH>().SetColumns(it => new WmsMaterialkitRecordH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID })
.Where(it => it.id == wmsMaterialkitRecord.id).ExecuteCommandHasChangeAsync();
@@ -3055,7 +3077,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
elevatorTimer = new Timer(ElevatorTaskExceptionHandle, null, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10));
agvelevatorTimer = new Timer(AgvelevatorTimerTaskExceptionHandle, null, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10));
//WmsMaterialkittimer = new Timer(WmsMaterialkit, null, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(3600));
//WmsMaterialkittimer = new Timer(WmsMaterialkit, null, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(20));
return Task.CompletedTask;
}

View File

@@ -598,12 +598,6 @@ namespace Tnb.WarehouseMgr
.ToListAsync();
string ss = cyDb.Queryable<WmsCarryH>().LeftJoin<WmsCarryCode>((a, b) => a.id == b.carry_id)
.LeftJoin<BasLocation>((a, b, c) => a.location_id == c.id)
.Where(whereExpr)
//.OrderByIF((a,b,c)=>SqlFunc.IsNullOrEmpty())
.OrderBy(policy.policy).ToSqlString();
items = items.DistinctBy(r => r.id).ToList();
return input.Size > 0 ? items.Take(input.Size).ToList() : items;
}

View File

@@ -62,7 +62,7 @@ namespace Tnb.WarehouseMgr
.Where((a, b, c, d, e) => ((!string.IsNullOrEmpty(b.carry_code) && b.carry_status != "0" && b.carry_status != "6") || string.IsNullOrEmpty(b.carry_code)))
.WhereIF(!string.IsNullOrEmpty(warehouse_id), (a, b, c, d) => c.id == warehouse_id)
.WhereIF(!string.IsNullOrEmpty(carry_code), (a, b, c, d) => b.carry_code.Contains(carry_code))
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f) => e.material_code.Contains(material_code))
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f) => f.code.Contains(material_code))
.WhereIF(!string.IsNullOrEmpty(code_batch), (a, b, c, d, e, f) => e.code_batch.Contains(code_batch))
.WhereIF(!string.IsNullOrEmpty(container_no), (a, b, c, d, e, f) => f.container_no.Contains(container_no))
.OrderByDescending((a, b, c, d, e, f) => b.carry_code)

View File

@@ -598,7 +598,7 @@ namespace Tnb.WarehouseMgr
catch (Exception ex)
{
Logger.LogWarning($"【WmsInStockService Modify】 {ex.Message}");
Logger.LogWarning($"【MaterialSign Modify】 {ex.StackTrace}");
Logger.LogWarning($"【WmsInStockService Modify】 {ex.StackTrace}");
await _db.Ado.RollbackTranAsync();
throw;
}

View File

@@ -1378,6 +1378,8 @@ namespace Tnb.WarehouseMgr
wmsMaterialTransferCarry.mat_bill_id = wmsMaterialTransferD.id;
wmsMaterialTransferCarry.qty = codeqty;
wmsMaterialTransferCarrys.Add(wmsMaterialTransferCarry);
await _db.Updateable<WmsCarryH>().SetColumns(r => r.work_station == wmsMaterialTransferD.station_code).Where(r => r.id == wmsCarryH.id).ExecuteCommandAsync();
}
}
@@ -1413,7 +1415,7 @@ namespace Tnb.WarehouseMgr
JObject keyValuePairs = JObject.Parse(res.data.ToString());
JArray array = JArray.Parse(keyValuePairs["pretaskids"].ToString());
wmsMaterialTransferCarry.pretask_id = array[0].ToString();
await _db.Updateable<WmsMaterialTransferD>().SetColumns(r => r.yxfqty == r.yxfqty + wmsMaterialTransferCarry.qty).Where(r => r.id == wmsMaterialTransferCarry.mat_bill_id).ExecuteCommandAsync();
}
@@ -1508,6 +1510,7 @@ namespace Tnb.WarehouseMgr
wmsMaterialTransferCarry.mat_bill_id = wmsMaterialTransferD.id;
wmsMaterialTransferCarry.qty = codeqty;
wmsMaterialTransferCarrys.Add(wmsMaterialTransferCarry);
await _db.Updateable<WmsCarryH>().SetColumns(r => r.work_station == wmsMaterialTransferD.station_code).Where(r => r.id == wmsCarryH.id).ExecuteCommandAsync();
}
await db.Ado.BeginTranAsync();
@@ -1521,8 +1524,6 @@ namespace Tnb.WarehouseMgr
}).Where(r => r.id == input.source_id).ExecuteCommandAsync();
Logger.LogInformation($"【DistributeToZCC】更新转库单{wmsMaterialTransfer.bill_code}主表的数据");
await db.Insertable(wmsMaterialTransferCarrys).ExecuteCommandAsync();
Logger.LogInformation($"【DistributeToZCC】插入转库单{wmsMaterialTransfer.bill_code}载具表的数据");
foreach (WmsMaterialTransferCarry wmsMaterialTransferCarry in wmsMaterialTransferCarrys)
{
@@ -1542,9 +1543,14 @@ namespace Tnb.WarehouseMgr
Logger.LogInformation($"【DistributeToZCC生成预任务失败 载具 {wmsMaterialTransferCarry.carry_code}");
throw new AppFriendlyException($"生成预任务失败 载具 {wmsMaterialTransferCarry.carry_code}", 500);
}
JObject keyValuePairs = JObject.Parse(res.data.ToString());
JArray array = JArray.Parse(keyValuePairs["pretaskids"].ToString());
wmsMaterialTransferCarry.pretask_id = array[0].ToString();
await db.Updateable<WmsMaterialTransferD>().SetColumns(r => r.yxfqty == r.yxfqty + wmsMaterialTransferCarry.qty).Where(r => r.id == wmsMaterialTransferCarry.mat_bill_id).ExecuteCommandAsync();
}
await db.Insertable(wmsMaterialTransferCarrys).ExecuteCommandAsync();
Logger.LogInformation($"【DistributeToZCC】插入转库单{wmsMaterialTransfer.bill_code}载具表的数据");
Logger.LogInformation($"转库单{wmsMaterialTransfer.bill_code}预任务{wmsMaterialTransferCarrys.Count}条全部生成成功");

View File

@@ -69,7 +69,7 @@ namespace Tnb.WarehouseMgr
.Select((a, b, c, d, e, f, g, h) => new WmsStockReportH
{
org_id = e.org_id,
warehouse_id = a.warehouse_id,
warehouse_id = c.wh_id,
warehouse_code = d.whcode,
warehouse_name = d.whname,
material_name = f.name,
@@ -82,7 +82,12 @@ namespace Tnb.WarehouseMgr
supplier_name = "",
}, true).ToListAsync();
List<WmsCarryCode> carryCodes = await _db.Queryable<WmsCarryCode>().ToListAsync();
List<WmsCarryCode> carryCodes = await _db.Queryable<WmsCarryCode>()
.InnerJoin<WmsCarryH>((a, b) => a.carry_id == b.id)
.InnerJoin<BasLocation>((a, b, c) => b.location_id == c.id).Select((a, b, c) => new WmsCarryCode
{
warehouse_id = c.wh_id
}, true).ToListAsync();
var storeMap = items.DistinctBy(x => new { x.warehouse_id, x.material_id, x.code_batch }).ToDictionary(x => new { x.warehouse_id, x.material_id, x.code_batch }, x => x);
var group = items.GroupBy(g => new { g.warehouse_id, g.material_id, g.code_batch });
@@ -134,7 +139,7 @@ namespace Tnb.WarehouseMgr
.Select((a, b, c, d, e, f, g, h) => new WmsStockReportH
{
org_id = e.org_id,
warehouse_id = a.warehouse_id,
warehouse_id = c.wh_id,
warehouse_code = d.whcode,
warehouse_name = d.whname,
material_name = f.name,
@@ -147,7 +152,12 @@ namespace Tnb.WarehouseMgr
supplier_name = h.supplier_name,
}, true).ToListAsync();
List<WmsCarryCode> carryCodes = await _db.Queryable<WmsCarryCode>().ToListAsync();
List<WmsCarryCode> carryCodes = await _db.Queryable<WmsCarryCode>()
.InnerJoin<WmsCarryH>((a, b) => a.carry_id == b.id)
.InnerJoin<BasLocation>((a, b, c) => b.location_id == c.id).Select((a, b, c) => new WmsCarryCode
{
warehouse_id = c.wh_id
}, true).ToListAsync();
var storeMap = items.DistinctBy(x => new { x.warehouse_id, x.material_id, x.code_batch, x.supplier_code }).ToDictionary(x => new { x.warehouse_id, x.material_id, x.code_batch, x.supplier_code }, x => x);
var group = items.GroupBy(g => new { g.warehouse_id, g.material_id, g.code_batch, g.supplier_code });