From 49dcc79b6a5cc660619407f96a59cab317e2cbe2 Mon Sep 17 00:00:00 2001 From: "yang.lee" Date: Thu, 9 Nov 2023 11:03:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Agv=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=EF=BC=8C=E5=87=BA=E5=8F=91=E9=A2=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=89=A7=E8=A1=8C=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.WarehouseMgr/DeviceProviderService.cs | 24 ++++++++++++++++--- .../Tnb.WarehouseMgr/WareHouseService.cs | 19 +++++++-------- 2 files changed, 30 insertions(+), 13 deletions(-) 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..74b167c9 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -263,12 +263,12 @@ namespace Tnb.WarehouseMgr .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(); @@ -385,7 +385,7 @@ namespace Tnb.WarehouseMgr await db.Ado.CommitTranAsync(); - if(_eleCtlCfg.Environment == ElevatorConsts.EnvironmentName) + if (string.Equals(_eleCtlCfg.Environment, ElevatorConsts.EnvironmentName, StringComparison.OrdinalIgnoreCase)) { //呼梯操作 //获取目标库位为电梯库位的任务 @@ -887,13 +887,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; } /// From d757785f0b670d90088a98dbfdedfdb8540ddb82 Mon Sep 17 00:00:00 2001 From: "yang.lee" Date: Thu, 9 Nov 2023 11:48:45 +0800 Subject: [PATCH 2/2] =?UTF-8?q?EnumTaskChainType=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=EF=BC=8C=E7=94=B5=E6=A2=AF=EF=BC=8C=E8=BE=93=E9=80=81=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsAreaH.cs | 4 ++++ .../Tnb.WarehouseMgr.Entities/Entity/WmsPretaskH.part.cs | 5 +++++ .../Tnb.WarehouseMgr.Entities/Enums/EnumTaskChainType.cs | 2 ++ WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs | 5 +++-- 4 files changed, 14 insertions(+), 2 deletions(-) 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/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 74b167c9..6a201aa8 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -256,7 +256,8 @@ 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 @@ -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 => {