From 49dcc79b6a5cc660619407f96a59cab317e2cbe2 Mon Sep 17 00:00:00 2001 From: "yang.lee" Date: Thu, 9 Nov 2023 11:03:52 +0800 Subject: [PATCH 1/9] =?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/9] =?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 => { From bf47dca08a56dc5ce3545bc069d0081fc1eed32b Mon Sep 17 00:00:00 2001 From: zhoukeda <1315948824@qq.com> Date: Thu, 9 Nov 2023 14:38:58 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E4=BF=9D=E5=85=BB=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E4=BA=86=E6=89=8D=E7=94=9F=E6=88=90=E4=B8=8B?= =?UTF-8?q?=E4=B8=80=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GenerateMaintainPlanTimeWorker.cs | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs b/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs index baba20a4..adfe18c8 100644 --- a/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs +++ b/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs @@ -42,15 +42,41 @@ namespace JNPF.TaskScheduler.Listener { //整除表示一个周期到了 + // foreach (var item in eqpSpotInsTemEquipHsByCirculate) + // { + // TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); + // TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(item.start_time.ToString("yyyy-MM-dd")).Ticks); + // TimeSpan ts3 = ts1.Subtract(ts2).Duration(); + // if (ts3.TotalDays * 10 % (10 * (double)item.plan_cycle) == 0) + // { + // tobeCreateTemplets.Add(item); + // } + // } + + //按上一个保养记录来生成数据 foreach (var item in eqpSpotInsTemEquipHsByCirculate) { - TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); - TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(item.start_time.ToString("yyyy-MM-dd")).Ticks); - TimeSpan ts3 = ts1.Subtract(ts2).Duration(); - if (ts3.TotalDays * 10 % (10 * (double)item.plan_cycle) == 0) + EqpMaintainRecordH eqpMaintainRecordH = await db.Queryable().Where(x=>x.maintain_tem_equip_id==item.id).OrderByDescending(x=>x.create_time).FirstAsync(); + if (eqpMaintainRecordH == null) { - tobeCreateTemplets.Add(item); + TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(item.start_time.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts3 = ts1.Subtract(ts2).Duration(); + if (ts3.TotalDays * 10 % (10 * (double)item.plan_cycle) == 0) + { + tobeCreateTemplets.Add(item); + } + }else if (eqpMaintainRecordH.status!="1") + { + TimeSpan ts1 = new TimeSpan(Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts2 = new TimeSpan(Convert.ToDateTime(eqpMaintainRecordH.execute_time.Value.ToString("yyyy-MM-dd")).Ticks); + TimeSpan ts3 = ts1.Subtract(ts2).Duration(); + if (ts3.TotalDays * 10 % (10 * (double)item.plan_cycle) == 0) + { + tobeCreateTemplets.Add(item); + } } + } } From 00c11a4515829fe344ebb4d6254395b64d84244a Mon Sep 17 00:00:00 2001 From: "yang.lee" Date: Thu, 9 Nov 2023 15:20:27 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A2=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=94=9F=E6=88=90=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consts/ModuleConsts.cs | 2 +- .../Tnb.WarehouseMgr/WareHouseService.cs | 31 +++++++++++-------- .../WmsPDAScanInStockService.cs | 4 +++ 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs index 77cdcdf4..a267545b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs @@ -184,7 +184,7 @@ public class ModuleConsts public const string MODULE_WMSPOINT_ID = "26099196480805"; /// - /// 模块标识-PDA寄存出库 + /// 模块标识-PDA扫码入库 /// public const string MODULE_WMSSCANCODEINSTOCKPDA_ID = "28576495374869"; /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 6a201aa8..956f9f38 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -267,7 +267,8 @@ namespace Tnb.WarehouseMgr 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)); + //agvElevatorTasks = agvElevatorTasks.FindAll(x => firstEleGrp.Select(y => y.endlocation_code).Contains(x.endlocation_code)).DistinctBy(x=>x.endlocation_code).ToList(); + agvElevatorTasks = firstEleGrp?.ToList() ?? Enumerable.Empty().ToList(); preTasks = preTasks.Concat(agvElevatorTasks).ToList(); @@ -291,24 +292,26 @@ namespace Tnb.WarehouseMgr int itemsCount = items.Count; int mod = itemsCount % moveNum > 0 ? (itemsCount / moveNum) + 1 : itemsCount / moveNum; WmsDistaskH[] arrary = items.ToArray(); - for (int i = 1; i <= mod; i++) + //for (int i = 1; i <= mod; i++) { - string groupCode = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_TASK_EXECUTE_ENCODE); + if (moveNum >= 1) { List areaPreTasks = itGroup.ToList(); - if (moveNum == 1 || (moveNum > areaPreTasks.Count && areaPreTasks.Count == 1) || areaPreTasks.Any(x => x.third_eqp_type.ToEnum() != EnumTaskChainType.CTU)) + if ( areaPreTasks.Any(x => x.third_eqp_type.ToEnum() != EnumTaskChainType.CTU)) { - items.ForEach(x => + foreach (var x in items) { + string groupCode = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_TASK_EXECUTE_ENCODE).Result; x.is_chain = 0; - }); - items[0].groups = groupCode; - items[0].bill_code = $"{groupCode}-1"; + x.groups = groupCode; + x.bill_code = $"{groupCode}-1"; + } } else if ((moveNum >= areaPreTasks.Count && areaPreTasks.Count > 1) || moveNum < areaPreTasks.Count) { + string groupCode = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_TASK_EXECUTE_ENCODE); items.ForEach(x => x.is_chain = 1); int start = 0; @@ -948,7 +951,7 @@ namespace Tnb.WarehouseMgr List points = await LocPathCalcAlgorithms(pStartId, pEndId, roads); try { - if (points.FindAll(x => x.location_code != null && x.location_code.Contains("ELE"))?.Count > 0) + if (points.FindAll(x => x.location_code != null && x.location_code.Contains("dt", StringComparison.OrdinalIgnoreCase))?.Count > 0) { //查询当前电梯点 List curEleDs = await _db.Queryable().Where(it => points.Select(x => x.id).Contains(it.point_id)).ToListAsync(); @@ -957,14 +960,16 @@ namespace Tnb.WarehouseMgr { //当前电梯 WmsElevatorH curEle = await _db.Queryable().SingleAsync(it => it.id == curEleDs.First().bill_id && it.status == 1); - if (curEle == null) + //同电梯组电梯 + List sGpEle = await _db.Queryable().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.status == 1).ToListAsync(); + + if (curEle == null && sGpEle?.Count > 0) { throw new AppFriendlyException("电梯被禁用或未配置", 500); } - //同电梯组电梯 - List sGpEle = await _db.Queryable().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.status == 1).ToListAsync(); + //判断电梯组中各电梯任务数 - if (sGpEle.FindAll(x => Math.Abs(x.task_nums - curEle.task_nums) % 2 == 1)?.Count > 0) + if (curEle == null || sGpEle.FindAll(x => Math.Abs(x.task_nums - curEle.task_nums) % 2 == 1)?.Count > 0) { List sGpDs = await _db.Queryable().Where(it => it.bill_id == sGpEle.First().id).ToListAsync(); if (sGpDs?.Count > 0) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs index 89bc2bce..236fff07 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs @@ -322,6 +322,10 @@ namespace Tnb.WarehouseMgr await _db.Ado.RollbackTranAsync(); throw; } + finally + { + _ = InvokeGenPretaskExcute(); + } return Task.FromResult(true); } } From 7e0a89b0a2d18a0a16bd6e27be81de9bc4cab486 Mon Sep 17 00:00:00 2001 From: "yang.lee" Date: Thu, 9 Nov 2023 15:31:05 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E8=BF=87=E6=BB=A4=E9=A2=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=96=B0=E5=A2=9E=E5=BA=93=E4=BD=8D=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E5=8D=A0=E7=94=A8=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 956f9f38..9a50c27f 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -252,9 +252,10 @@ namespace Tnb.WarehouseMgr //获取所有未下发的预任务申请 List preTasks = await db.Queryable().InnerJoin((a, b) => a.startlocation_id == b.location_id && a.carry_id == b.id) .InnerJoin((a, b, c) => a.area_id == c.id) + .InnerJoin((a, b, c, d) => a.endlocation_id == d.id && d.is_use == "0") .Where(a => a.status == WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID && !string.IsNullOrWhiteSpace(a.startlocation_id)) .OrderBy(a => new { priority = SqlFunc.Desc(a.priority), a.bill_code }) - .Select((a, b, c) => new WmsPretaskH + .Select((a, b, c,d) => new WmsPretaskH { move_num = c.move_num, third_eqp_type = c.third_eqp_type, @@ -299,7 +300,7 @@ namespace Tnb.WarehouseMgr { List areaPreTasks = itGroup.ToList(); - if ( areaPreTasks.Any(x => x.third_eqp_type.ToEnum() != EnumTaskChainType.CTU)) + if (areaPreTasks.Any(x => x.third_eqp_type.ToEnum() != EnumTaskChainType.CTU)) { foreach (var x in items) { From 869c05c7904694743da8bab8bd325960d1789a9f Mon Sep 17 00:00:00 2001 From: "yang.lee" Date: Thu, 9 Nov 2023 15:56:50 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=A2=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=94=9F=E6=88=90=E6=89=A7=E8=A1=8C=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E5=BA=93=E4=BD=8D=E5=8D=A0=E7=94=A8=E8=B5=8B?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs | 6 +++++- WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs | 2 +- WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs | 2 +- WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 9a50c27f..7c8ea061 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -255,7 +255,7 @@ namespace Tnb.WarehouseMgr .InnerJoin((a, b, c, d) => a.endlocation_id == d.id && d.is_use == "0") .Where(a => a.status == WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID && !string.IsNullOrWhiteSpace(a.startlocation_id)) .OrderBy(a => new { priority = SqlFunc.Desc(a.priority), a.bill_code }) - .Select((a, b, c,d) => new WmsPretaskH + .Select((a, b, c, d) => new WmsPretaskH { move_num = c.move_num, third_eqp_type = c.third_eqp_type, @@ -925,6 +925,10 @@ namespace Tnb.WarehouseMgr Expression> whereExp = input.CarryIds?.Count > 0 ? it => input.CarryIds.Contains(it.id) : it => it.id == input.CarryId; _ = await _db.Updateable().SetColumns(setCarryColumnsExp).Where(whereExp).ExecuteCommandAsync(); } + if (input.CarryStartLocationId.IsNullOrWhiteSpace() == false) + { + _ = await _db.Updateable().SetColumns(setLocaionColumbExp).Where(it => input.LocationIds.Contains(it.id)).ExecuteCommandAsync(); + } //根据所有库位更新库位的锁定状态为“锁定” if (setLocaionColumbExp != null && input.LocationIds?.Count > 0) { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs index 90845eb4..ce05775b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs @@ -466,7 +466,7 @@ namespace Tnb.WarehouseMgr _ = await _db.Insertable(carryCodes).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { carry_code = instock!.carry_code!, is_lock = 1, carry_status = ((int)EnumCarryStatus.占用).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, - it => new BasLocation { is_lock = 1, is_use = ((int)EnumCarryStatus.占用).ToString() }); + it => new BasLocation { is_lock = 1 }); if (instockCOdes?.Count > 0) { _ = await _db.Updateable().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCOdes.Select(x => x.bill_d_id).Contains(it.id)).ExecuteCommandAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs index 72119a86..1ba5f236 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs @@ -264,7 +264,7 @@ namespace Tnb.WarehouseMgr // 更新临时条码表 状态is_end await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { carry_code = input.data[nameof(WmsCarryH.carry_code)].ToString()!, is_lock = 1, carry_status = ((int)EnumCarryStatus.占用).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode, source_id = input.data[nameof(WmsOutstockH.source_id)].ToString(), source_code = input.data[nameof(WmsOutstockH.source_code)].ToString() }, - it => new BasLocation { is_lock = 1, is_use = ((int)EnumCarryStatus.占用).ToString() }); + it => new BasLocation { is_lock = 1 }); if (instockCOdes?.Count > 0) { _ = await _db.Updateable().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCOdes.Select(x => x.bill_d_id).Contains(it.id)).ExecuteCommandAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs index 236fff07..86b3c6ac 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs @@ -308,7 +308,7 @@ namespace Tnb.WarehouseMgr //回更状态 await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, it => new WmsCarryH { carry_code = instock!.carry_code!, is_lock = 1, carry_status = ((int)EnumCarryStatus.占用).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, - it => new BasLocation { is_lock = 1, is_use = ((int)EnumCarryStatus.占用).ToString() }); + it => new BasLocation { is_lock = 1 }); _ = await _db.Updateable().SetColumns(it => new WmsInstockD { line_status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => instockCode.bill_d_id == it.id).ExecuteCommandAsync(); _ = await _db.Updateable().SetColumns(it => new WmsInstockH { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == instock!.id).ExecuteCommandAsync(); From 753e24741be1ec243eb211b0ea31869850720aeb Mon Sep 17 00:00:00 2001 From: zhoukeda <1315948824@qq.com> Date: Thu, 9 Nov 2023 16:00:05 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=96=B7=E7=A0=81?= =?UTF-8?q?=E8=B4=B4=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entity/BasMaterial.cs | 10 +++ .../Entity/PrdMoTask.cs | 5 ++ .../Entity/PrdOutPackMarkLabel.cs | 4 +- .../Tnb.ProductionMgr/PrdMoTaskService.cs | 71 ++++++++++++++----- .../Tnb.ProductionMgr/PrdPackReportService.cs | 14 ++-- 5 files changed, 77 insertions(+), 27 deletions(-) diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasMaterial.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasMaterial.cs index 847f2e4d..77335163 100644 --- a/BasicData/Tnb.BasicData.Entities/Entity/BasMaterial.cs +++ b/BasicData/Tnb.BasicData.Entities/Entity/BasMaterial.cs @@ -253,5 +253,15 @@ public partial class BasMaterial : BaseEntity /// 是否创建子工单 /// public string? is_create_sub_work_order { get; set; } + + /// + /// 保质期 + /// + public int? quality_guarantee_period { get; set; } + + /// + /// DI编码 + /// + public string? di { get; set; } } diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs index cdeb3123..905d73a0 100644 --- a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs +++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs @@ -197,5 +197,10 @@ public partial class PrdMoTask : BaseEntity /// 物料清单id /// public string? ebom_id { get; set; } + + /// + /// 批号 + /// + public string? batch { get; set; } } diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdOutPackMarkLabel.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdOutPackMarkLabel.cs index 0da7ab0c..8098b7b9 100644 --- a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdOutPackMarkLabel.cs +++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdOutPackMarkLabel.cs @@ -17,12 +17,12 @@ public partial class PrdOutPackMarkLabel : BaseEntity /// /// 是否喷码 0 否 1 是 /// - public int is_mark { get; set; } + public int? is_mark { get; set; } /// /// 是否贴标 0 否 1 是 /// - public int is_label { get; set; } + public int? is_label { get; set; } /// /// 任务单号 diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs index aff6e4fe..ad0bbe82 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs @@ -2753,18 +2753,35 @@ namespace Tnb.ProductionMgr }); if (prdMoTask == null) throw Oops.Bah("没找到对应任务单"); - PrdOutPackMarkLabel prdOutPackMarkLabel = new PrdOutPackMarkLabel() + if (await _db.Queryable().Where(x => + x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == 0 && x.is_mark==null).AnyAsync()) { - is_mark = 0, - is_label = 0, - mo_task_code = prdMoTask.mo_task_code, - material_code = prdMoTask.material_code, - create_time = DateTime.Now, - }; + await _db.Updateable() + .SetColumns(x => x.is_mark == 0) + .Where(x => x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == 0 && + x.is_mark == null) + .ExecuteCommandAsync(); + } + else + { + PrdOutPackMarkLabel prdOutPackMarkLabel = new PrdOutPackMarkLabel() + { + is_mark = 0, + is_label = null, + mo_task_code = prdMoTask.mo_task_code, + material_code = prdMoTask.material_code, + create_time = DateTime.Now, + }; - await _db.Insertable(prdOutPackMarkLabel).ExecuteCommandAsync(); + await _db.Insertable(prdOutPackMarkLabel).ExecuteCommandAsync(); + } + + PrdMoTask parent = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.parent_id); + BasMaterial basMaterial = await _db.Queryable().SingleAsync(x=>x.id==parent.material_id); + + string code = $"(01){basMaterial.di ?? ""}\\n(11){DateTime.Now.ToString("yyMMdd")}\\n(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}\\n(10){parent.batch??""}"; - return prdMoTask.mo_task_code + "/" + prdMoTask.material_code; + return code; } /// @@ -2781,19 +2798,35 @@ namespace Tnb.ProductionMgr }); if (prdMoTask == null) throw Oops.Bah("没找到对应任务单"); - PrdOutPackMarkLabel prdOutPackMarkLabel = new PrdOutPackMarkLabel() + if (await _db.Queryable().Where(x => + x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == null && x.is_mark==0).AnyAsync()) { - is_mark = 0, - is_label = 0, - mo_task_code = prdMoTask.mo_task_code, - material_code = prdMoTask.material_code, - create_time = DateTime.Now, - station_id = input.station_id, - }; + await _db.Updateable() + .SetColumns(x => x.is_label == 0) + .Where(x => x.mo_task_code == prdMoTask.mo_task_code && x.status == "0" && x.is_label == null && + x.is_mark == 0) + .ExecuteCommandAsync(); + } + else + { + PrdOutPackMarkLabel prdOutPackMarkLabel = new PrdOutPackMarkLabel() + { + is_mark = null, + is_label = 0, + mo_task_code = prdMoTask.mo_task_code, + material_code = prdMoTask.material_code, + create_time = DateTime.Now, + }; - await _db.Insertable(prdOutPackMarkLabel).ExecuteCommandAsync(); + await _db.Insertable(prdOutPackMarkLabel).ExecuteCommandAsync(); + } - return prdMoTask.mo_task_code + "/" + prdMoTask.material_code; + PrdMoTask parent = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.parent_id); + BasMaterial basMaterial = await _db.Queryable().SingleAsync(x=>x.id==parent.material_id); + + string code = $"(01){basMaterial.di ?? ""}\\n(11){DateTime.Now.ToString("yyMMdd")}\\n(17){DateTime.Now.AddMonths(basMaterial.quality_guarantee_period ?? 0).ToString("yyMMdd")}\\n(10){parent.batch??""}"; + + return code; } } diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs index 9ea6e5f3..28c0ada2 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs @@ -498,11 +498,12 @@ namespace Tnb.ProductionMgr /// public async Task OutPackMarkCheck(MarkingLabelInput input) { - string[] arr = input.mark_code.Split("/"); + string[] arr = input.mark_code.Split("(10)"); if (arr.Length > 1) { - string mo_task_code = arr[0]; - PrdMoTask prdMoTask = await _db.Queryable().Where(x => x.mo_task_code == mo_task_code).FirstAsync(); + string batch = arr[1]; + PrdMoTask prdMoTask = await _db.Queryable().Where(x => x.batch == batch).FirstAsync(); + string mo_task_code = prdMoTask.mo_task_code; if (prdMoTask == null) throw Oops.Bah("未找到对应任务单"); BasMaterial basMaterial = await _db.Queryable().Where(x => x.id == prdMoTask.material_id).FirstAsync(); DictionaryDataEntity unit = await _db.Queryable() @@ -567,11 +568,12 @@ namespace Tnb.ProductionMgr /// public async Task OutPackLabelCheck(MarkingLabelInput input) { - string[] arr = input.mark_code.Split("/"); + string[] arr = input.label_code.Split("(10)"); if (arr.Length > 1) { - string mo_task_code = arr[0]; - PrdMoTask prdMoTask = await _db.Queryable().Where(x => x.mo_task_code == mo_task_code).FirstAsync(); + string batch = arr[1]; + PrdMoTask prdMoTask = await _db.Queryable().Where(x => x.batch == batch).FirstAsync(); + string mo_task_code = prdMoTask.mo_task_code; if (prdMoTask == null) throw Oops.Bah("未找到对应任务单"); BasMaterial basMaterial = await _db.Queryable().Where(x => x.id == prdMoTask.material_id).FirstAsync(); DictionaryDataEntity unit = await _db.Queryable() From 665286f997abb722a35ce6a3779054417dae5bb2 Mon Sep 17 00:00:00 2001 From: "yang.lee" Date: Thu, 9 Nov 2023 16:27:30 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E6=97=B6=E8=B0=83=E7=94=A8=20=EF=BC=8C=E9=A2=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 7c8ea061..55aecb17 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -829,6 +829,10 @@ namespace Tnb.WarehouseMgr await _db.Ado.RollbackTranAsync(); throw; } + finally + { + _ = GenTaskExecute(); + } } /// /// 出入库策略启用、禁用状态修改 From e7d9ad29ff0309f7217707d44ac928a964e75d29 Mon Sep 17 00:00:00 2001 From: "yang.lee" Date: Thu, 9 Nov 2023 16:55:47 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E5=88=A0=E9=99=A4Tnb.WarehouseMgr.csproj?= =?UTF-8?q?=20=E6=96=87=E4=BB=B6=E6=97=A0=E7=94=A8=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WarehouseMgr/Tnb.WarehouseMgr/Tnb.WarehouseMgr.csproj | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/Tnb.WarehouseMgr.csproj b/WarehouseMgr/Tnb.WarehouseMgr/Tnb.WarehouseMgr.csproj index 1e562b1a..736045a9 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/Tnb.WarehouseMgr.csproj +++ b/WarehouseMgr/Tnb.WarehouseMgr/Tnb.WarehouseMgr.csproj @@ -6,13 +6,9 @@ enable enable True - Debug;Release;tianyi + Debug;Release - - - -