diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsAreaH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsAreaH.cs index 844c7daa..85515fa0 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsAreaH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsAreaH.cs @@ -73,5 +73,9 @@ public partial class WmsAreaH : BaseEntity /// 时间戳(用于并发控制) /// public DateTime? timestamp { get; set; } + /// + /// 第三方设备类型 + /// + public string third_eqp_type { get; set; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPretaskH.part.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPretaskH.part.cs index 4ab03baa..e35603c6 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPretaskH.part.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPretaskH.part.cs @@ -13,4 +13,9 @@ public partial class WmsPretaskH : ITaskManagerDel /// [SugarColumn(IsIgnore = true)] public int move_num { get; set; } + /// + /// 第三方设备类型 + /// + [SugarColumn(IsIgnore = true)] + public string third_eqp_type { get; set; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Enums/EnumTaskChainType.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Enums/EnumTaskChainType.cs index 5938fe77..5a4b020b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Enums/EnumTaskChainType.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Enums/EnumTaskChainType.cs @@ -8,5 +8,7 @@ CTU = 1, KIVA = 2, AGV = 3, + 电梯 = 4, + 输送线 = 5, } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs index 03d7b45d..084109fa 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs @@ -218,7 +218,7 @@ namespace Tnb.WarehouseMgr try { Logger.Information($"任务链编号:{input.taskChainCode},状态:{input.status},设备ID:{input.deviceID}"); - switch (input.status) + /*switch (input.status) { case "CREATED": break; case "ALLOCATED": break; @@ -242,9 +242,23 @@ namespace Tnb.WarehouseMgr case "FAILURE": break; case "FINISHED": break; default: break; + }*/ + + + if (input.taskChainCode.Trim().IsNullOrEmpty()) + { + return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!"); } - //写入redis - //await _cacheManager.SetAsync($"{input.taskChainCode}", $"任务链状态上报,上报状态{input.status}"); + + List disTasks = await _db.Queryable().Where(it => it.bill_code.Contains(input.taskChainCode)).ToListAsync(); + List eps = await _db.Queryable().Where(it => it.code.Contains(input.deviceID)).ToListAsync(); + TaskExecuteUpInput taskExecuteUpInput = new() + { + disTaskIds = disTasks.Select(x => x.id).ToList(), + EqpIds = eps.Select(x => x.id).ToList(), + }; + await _wareHouseService.TaskExecute(taskExecuteUpInput); + ConnectionConfigOptions opts = App.GetOptions(); UserAgent userAgent = new(App.HttpContext); //写系统日志 @@ -321,6 +335,10 @@ namespace Tnb.WarehouseMgr return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!"); throw; } + finally + { + _ = InvokeGenPretaskExcute(); + } return await ToApiResult(HttpStatusCode.OK, "成功"); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index f0d72f5d..6a201aa8 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -256,19 +256,20 @@ namespace Tnb.WarehouseMgr .OrderBy(a => new { priority = SqlFunc.Desc(a.priority), a.bill_code }) .Select((a, b, c) => new WmsPretaskH { - move_num = c.move_num + move_num = c.move_num, + third_eqp_type = c.third_eqp_type, }, true) .ToListAsync(); List agvElevatorTasks = preTasks .Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) && !it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)) .ToList(); - preTasks = preTasks.Where(it => !agvElevatorTasks.Select(x=>x.endlocation_code).Contains(it.endlocation_code)).ToList(); + preTasks = preTasks.Where(it => !agvElevatorTasks.Select(x => x.endlocation_code).Contains(it.endlocation_code)).ToList(); IEnumerable firstEleGrp = agvElevatorTasks.GroupBy(g => g.endlocation_code).Select(t => t.OrderBy(o => o.bill_code).FirstOrDefault()); agvElevatorTasks = agvElevatorTasks.FindAll(x => firstEleGrp.Select(y => y.endlocation_code).Contains(x.endlocation_code)); preTasks = preTasks.Concat(agvElevatorTasks).ToList(); - + List ids = preTasks.Select(x => x.id).Distinct().ToList(); List? preTaskCodes = await db.Queryable().Where(it => ids.Contains(it.bill_id)).ToListAsync(); @@ -297,7 +298,7 @@ namespace Tnb.WarehouseMgr { List areaPreTasks = itGroup.ToList(); - if (moveNum == 1 || (moveNum > areaPreTasks.Count && areaPreTasks.Count == 1)) + if (moveNum == 1 || (moveNum > areaPreTasks.Count && areaPreTasks.Count == 1) || areaPreTasks.Any(x => x.third_eqp_type.ToEnum() != EnumTaskChainType.CTU)) { items.ForEach(x => { @@ -385,7 +386,7 @@ namespace Tnb.WarehouseMgr await db.Ado.CommitTranAsync(); - if(_eleCtlCfg.Environment == ElevatorConsts.EnvironmentName) + if (string.Equals(_eleCtlCfg.Environment, ElevatorConsts.EnvironmentName, StringComparison.OrdinalIgnoreCase)) { //呼梯操作 //获取目标库位为电梯库位的任务 @@ -887,13 +888,12 @@ namespace Tnb.WarehouseMgr { row = await _db.Insertable(preTaskCodes).ExecuteCommandAsync(); } - //先注释 by ly on 20231025 - /* var eleP = preTasks.Find(x => x.area_code.Contains("ELE")); - if (eleP != null) - { - row = await _db.Updateable().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => it.area_code == eleP.area_code).ExecuteCommandAsync(); - } - */ + var eleP = preTasks.Find(x => x.area_code.Contains("ELE")); + if (eleP != null) + { + row = await _db.Updateable().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => it.area_code == eleP.area_code).ExecuteCommandAsync(); + } + return row > 0; } ///