diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryService.cs b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryService.cs index 4eeff321..d8e1515f 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryService.cs @@ -1,4 +1,5 @@ -using Tnb.WarehouseMgr.Entities; +using System.Runtime.CompilerServices; +using Tnb.WarehouseMgr.Entities; namespace Tnb.WarehouseMgr.Interfaces { @@ -12,6 +13,6 @@ namespace Tnb.WarehouseMgr.Interfaces /// /// /// - Task UpdateNullCarry(WmsCarryH carryObj); + Task UpdateNullCarry(WmsCarryH carryObj, Func> updateTask=null, [CallerMemberName] string original = ""); } } \ No newline at end of file diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index c0b294a5..301b9f70 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -200,7 +200,7 @@ namespace Tnb.WarehouseMgr items[0].groups = groupCode; items[0].bill_code = $"{groupCode}-1"; } - else if ((moveNum > areaPreTasks.Count && areaPreTasks.Count > 1) || moveNum < areaPreTasks.Count) + else if ((moveNum >= areaPreTasks.Count && areaPreTasks.Count > 1) || moveNum < areaPreTasks.Count) { items.ForEach(x => x.is_chain = 1); var itemsCount = items.Count; @@ -210,19 +210,20 @@ namespace Tnb.WarehouseMgr var arrary = items.ToArray(); for (int i = 1; i <= mod; i++) { - if (start >= itemsCount) break; - var subArray = arrary[start..end]; - for (int j = 0, arrLen = subArray.Length; j < arrLen; j++) + while (start < itemsCount) { - subArray[j].groups = groupCode; - subArray[j].bill_code = $"{groupCode}-{i}"; + var subArray = arrary[start..end]; + for (int j = 0, arrLen = subArray.Length; j < arrLen; j++) + { + subArray[j].groups = groupCode; + subArray[j].bill_code = $"{groupCode}-{i}"; + } + start = end; + end = Math.Min((end + moveNum), arrary.Length); } - start = end; - end = Math.Min((end + moveNum), arrary.Length); } } }); - } //获取所有未下发的预任务申请 @@ -251,40 +252,11 @@ namespace Tnb.WarehouseMgr { items[i].id = SnowflakeIdHelper.NextId(); items[i].status = WmsWareHouseConst.TASK_BILL_STATUS_DZX_ID; - //items[i].groups = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_TASK_EXECUTE_ENCODE); } - - if (moveNum == 1) - { - items.ForEach(x => - { - x.is_chain = 0; - //x.chain_type = "3"; - }); - } - else if (moveNum > 1) + if (moveNum >= 1) { var areaPreTasks = itGroup.ToList(); - //搬运数量==预任务数,可以生成任务执行,为任务链 - if (moveNum == areaPreTasks.Count) - { - await _taskChainAttrHandle(items, areaPreTasks, moveNum); - } - else if (moveNum > areaPreTasks.Count && areaPreTasks.Count == 1) //搬运数量>预任务数,且预任务数等于1,不是任务链,预任务数据平替到任务执行 - { - await _taskChainAttrHandle(items, areaPreTasks, moveNum); - } - else if (moveNum > areaPreTasks.Count && areaPreTasks.Count > 1) //搬运数量>预任务数,且预任务数大于1,可以执行时,可以生成任务执行,为任务链 - { - await _taskChainAttrHandle(items, areaPreTasks, moveNum); - } - else if (false) //搬运数量>预任务数,且预任务数大于1,不可以执行时,先空着 - { - } - else if (moveNum < areaPreTasks.Count) //搬运数量<预任务数, 按照预任务先后顺序,生成对应搬运数量的任务组 - { - await _taskChainAttrHandle(items, areaPreTasks, moveNum); - } + await _taskChainAttrHandle(items, areaPreTasks, moveNum); } if (preTaskCodes?.Count > 0) { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs index ad7988b0..5aa85612 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs @@ -1,4 +1,5 @@ -using JNPF.Common.Contracts; +using System.Runtime.CompilerServices; +using JNPF.Common.Contracts; using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; @@ -155,7 +156,7 @@ namespace Tnb.WarehouseMgr } [NonAction] - public async Task UpdateNullCarry(WmsCarryH carryObj) + public async Task UpdateNullCarry(WmsCarryH carryObj, Func> updateTask = null, [CallerMemberName] string original = "") { var row = 1; try @@ -172,8 +173,15 @@ namespace Tnb.WarehouseMgr carryObj.collocation_scheme_code = null; carryObj.source_id = null; carryObj.source_code = null; - Task.Run(() => _db.CopyNew().Updateable(carryObj).ExecuteCommandAsync()); - //row = await _db.CopyNew().Updateable(carryObj).ExecuteCommandAsync(); + if (updateTask != null) + { + updateTask(carryObj); + } + else + { + row = await _db.CopyNew().Updateable(carryObj).ExecuteCommandAsync(); + } + //Task.Run(() => _db.CopyNew().Updateable(carryObj).ExecuteCommandAsync()); //删除对应明细表 //删除载具明细 await _db.CopyNew().Deleteable().Where(it => it.carry_id == carryObj.id).ExecuteCommandHasChangeAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs index 56df10e8..cd498d19 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs @@ -309,7 +309,7 @@ namespace Tnb.WarehouseMgr var tasks = new List>(); foreach (var carryIt in carrys) { - tasks.Add(_carryService.UpdateNullCarry(carryIt)); + tasks.Add(_carryService.UpdateNullCarry(carryIt, carryIt => Task.Run(() => _db.CopyNew().Updateable(carryIt).ExecuteCommandAsync()))); } var all = await Task.WhenAll(tasks); await _db.Ado.CommitTranAsync();