From ab8b18af8fe42f36eba191bd797352c142c2a474 Mon Sep 17 00:00:00 2001 From: majian <780924089@qq.com> Date: Wed, 25 Sep 2024 15:18:19 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BD=90=E5=A5=97=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.ProductionMgr/RedisBackGround.cs | 30 ++++++++++++++++--- .../Tnb.WarehouseMgr/WareHouseService.cs | 6 ---- .../WmsCarryStockReportService.cs | 2 +- .../Tnb.WarehouseMgr/WmsInStockService.cs | 2 +- .../WmsMaterialTransferService.cs | 12 ++++++-- .../Tnb.WarehouseMgr/WmsStockReportService.cs | 18 ++++++++--- 6 files changed, 51 insertions(+), 19 deletions(-) diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs index f8cde1ab..66a6a2d2 100644 --- a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs +++ b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs @@ -2729,6 +2729,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA List prdMoTasks = await db_WmsMaterialkit.Queryable().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 workstaiondic = db_WmsMaterialkit.Queryable().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() + .InnerJoin((a, b) => a.location_id == b.id) + .InnerJoin((a, b, c) => a.id == c.carry_id) + .InnerJoin((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() @@ -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 inventory = new List(); 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 items = await _wareHouseService.OutStockStrategy(outStockStrategyInput); List wmsCarryCodes = await db_WmsMaterialkit.Queryable() - .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 WmsMaterialkitRecordDs = db_WmsMaterialkit.Queryable() .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().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; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 4d417704..664ba479 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -598,12 +598,6 @@ namespace Tnb.WarehouseMgr .ToListAsync(); - string ss = cyDb.Queryable().LeftJoin((a, b) => a.id == b.carry_id) - .LeftJoin((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; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryStockReportService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryStockReportService.cs index e8120e2e..71db37df 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryStockReportService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryStockReportService.cs @@ -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) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs index 61acd0d3..edd3c4a8 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs @@ -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; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs index 9a089d9a..691b231f 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs @@ -1378,6 +1378,8 @@ namespace Tnb.WarehouseMgr wmsMaterialTransferCarry.mat_bill_id = wmsMaterialTransferD.id; wmsMaterialTransferCarry.qty = codeqty; wmsMaterialTransferCarrys.Add(wmsMaterialTransferCarry); + + await _db.Updateable().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().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().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().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}条全部生成成功"); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs index 28c6b0e9..8a624f16 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs @@ -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 carryCodes = await _db.Queryable().ToListAsync(); + List carryCodes = await _db.Queryable() + .InnerJoin((a, b) => a.carry_id == b.id) + .InnerJoin((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 carryCodes = await _db.Queryable().ToListAsync(); + List carryCodes = await _db.Queryable() + .InnerJoin((a, b) => a.carry_id == b.id) + .InnerJoin((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 });