From 45a94a530bac7136373a008bff5e046de75e1a0e Mon Sep 17 00:00:00 2001 From: hlb <894797954@qq.com> Date: Thu, 15 Jun 2023 10:56:25 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=8F=96=E6=B6=88=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consts/ModuleConsts.cs | 120 ++++++++++++++++++ .../Consts/WmsWareHouseConst.cs | 15 ++- 2 files changed, 134 insertions(+), 1 deletion(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs index 4847bae1..69d95c77 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs @@ -4,5 +4,125 @@ public class ModuleConsts { public const string Tag = "WarehouseMgr"; public const string Area = "wms"; + /// + /// 任务操作-PDA异常取消 + /// + public const string MODULE_WMSEXCEPTIONCANCELPDA_ID = "26631250691605"; + /// + /// 任务操作-PDA异常重新执行 + /// + public const string MODULE_WMSEXCPTIONREEXCUTEPDA_ID = "26631184673813"; + /// + /// 任务操作-PDA异常完成 + /// + public const string MODULE_WMSEXCPTIONCOMPLETEPDA_ID = "26497241038869"; + /// + /// 任务操作-PDA投料操作 + /// + public const string MODULE_WMSFEEDINGRECORDPDA_ID = "26496913096981"; + /// + /// 任务操作-PDA绑定操作 + /// + public const string MODULE_WMSBINDINGPDA_ID = "26496560237333"; + /// + /// 任务操作-PDA载具解绑 + /// + public const string MODULE_WMSCARRYUNBINDPDA_ID = "26479624280613"; + /// + /// 任务操作-PDA载具绑定 + /// + public const string MODULE_WMSCARRYBINDPDA_ID = "26479495084837"; + /// + /// 任务操作-PDA载具移出 + /// + public const string MODULE_WMSCARRYMOOUTSTKPDA_ID = "26479437840677"; + /// + /// 任务操作-PDA载具移入 + /// + public const string MODULE_WMSMOVEINSTKPDA_ID = "26476127634469"; + /// + /// 任务操作-PDA载具更换 + /// + public const string MODULE_WMSCARRYREPLACEPDA_ID = "26475867493157"; + /// + /// 任务操作-PDA配送申请 + /// + public const string MODULE_WMSDELIVERYPDA_ID = "26475604135973"; + /// + /// 任务操作-PDA库内转移 + /// + public const string MODULE_WMSTRANSFERPDA_ID = "26475492865317"; + /// + /// 任务操作-PDA寄存捆包 + /// + public const string MODULE_WMSINBALEINPDA_ID = "26475412782629"; + /// + /// 任务操作-PDA寄存入库 + /// + public const string MODULE_WMSINBALEINSTKPDA_ID = "26474954845989"; + /// + /// 任务操作-PDA齐套入库 + /// + public const string MODULE_WMSKITTINGINSTKPDA_ID = "26474190687781"; + /// + /// 任务操作-PDA一般入库 + /// + public const string MODULE_WMSINSTOCKPDA_ID = "26458832529445"; + /// + /// 任务操作-寄存出库 + /// + public const string MODULE_WMSOUTBALE_ID = "26192638001445"; + /// + /// 任务操作-寄存捆包 + /// + public const string MODULE_WMSINBALE_ID = "26192480520485"; + /// + /// 任务操作-出库申请 + /// + public const string MODULE_WMSOUTSTOCK_ID = "26191983650597"; + /// + /// 任务操作-入库申请 + /// + public const string MODULE_WMSINSTOCK_ID = "26191326300453"; + /// + /// 任务操作-载具更换 + /// + public const string MODULE_WMSCARRYREPLACE_ID = "26188532491557"; + /// + /// 任务操作-齐套分拣 + /// + public const string MODULE_WMSSETSORTING_ID = "26172520979237"; + /// + /// 任务操作-齐套出库 + /// + public const string MODULE_WMSKITTINGOUTSTK_ID = "26169701736741"; + /// + /// 任务操作-齐套入库 + /// + public const string MODULE_WMSKITTINGINSTK_ID = "26166785871909"; + /// + /// 任务操作-配送申请 + /// + public const string MODULE_WMSDELIVERY_ID = "26126388337189"; + /// + /// 任务操作-库内转移 + /// + public const string MODULE_WMSTRANSFER_ID = "26125750270757"; + /// + /// 任务操作-载具移出 + /// + public const string MODULE_WMSCARRYMOOUTSTK_ID = "26123262586661"; + /// + /// 任务操作-空载具出库 + /// + public const string MODULE_WMSEPTYOUTSTK_ID = "26122798979365"; + /// + /// 任务操作-载具移入 + /// + public const string MODULE_CARRYMOVEINSTOCK_ID = "26122102481957"; + /// + /// 任务操作-空载具入库 + /// + public const string MODULE_WMSEMPTYINSTOCK_ID = "26120915344165"; } \ No newline at end of file diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs index 85c065c8..6b2c2387 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs @@ -60,8 +60,21 @@ namespace Tnb.WarehouseMgr.Entities.Consts /// public const string WMS_PRETASK_INSTOCK_TYPE_ID = "26126748597797"; /// - /// 预任务生成业务类型-载具移入Id + /// 预任务生成业务类型-空载具入库ID /// public const string BIZTYPE_EMPTYIN_ID = "26120915344165"; + /// + /// 预任务生成业务类型-空载具出库ID + /// + public const string BIZTYPE_EMPTYOUT_ID = "26122798979365"; + /// + /// 预任务生成业务类型-PDA空载具入库ID + /// + public const string BIZTYPE_EMPTYINPDA_ID = "26475795363877"; + /// + /// 预任务生成业务类型-PDA空载具出库ID + /// + public const string BIZTYPE_EMPTYOUTPDA_ID = "26475845405733"; + } } From c0e1f09388ab674528d502a979860cf87a638269 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 15 Jun 2023 11:01:52 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E9=80=9A=E7=94=A8=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E5=87=BD=E6=95=B0=E4=BB=A3=E7=A0=81=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Attributes/ServiceModuleAttribute.cs | 24 ++++++ .../Dto/Inputs/WareHouseUpInput.cs | 23 +++++ .../Enums/EnumWareHouseModule.cs | 83 +++++++++++++++++++ .../Tnb.WarehouseMgr.Interfaces/Interface1.cs | 16 ++++ .../Tnb.WarehouseMgr/BaseWareHouseService.cs | 35 +++++++- .../Tnb.WarehouseMgr/WareHouseService.cs | 26 +++++- .../WmsCarryMoveInStockService.cs | 10 +++ .../WmsEmptyInstockService.cs | 1 + 8 files changed, 214 insertions(+), 4 deletions(-) create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Attributes/ServiceModuleAttribute.cs create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/WareHouseUpInput.cs create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Enums/EnumWareHouseModule.cs create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Interfaces/Interface1.cs diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Attributes/ServiceModuleAttribute.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Attributes/ServiceModuleAttribute.cs new file mode 100644 index 00000000..0224145f --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Attributes/ServiceModuleAttribute.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tnb.WarehouseMgr.Entities.Attributes +{ + /// + /// 业务类型模块特性 + /// + [AttributeUsage(AttributeTargets.Class)] + public class ServiceModuleAttribute : Attribute + { + /// + /// 业务类型ID + /// + public string BizTypeId { get; set; } + public ServiceModuleAttribute(string bizTypeId) + { + this.BizTypeId = bizTypeId; + } + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/WareHouseUpInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/WareHouseUpInput.cs new file mode 100644 index 00000000..f571d010 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/WareHouseUpInput.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tnb.WarehouseMgr.Entities.Dto +{ + /// + /// 库房业务更新输入参数 + /// + public class WareHouseUpInput + { + /// + /// 需求来源单据Id,对应业务主表Id + /// + public string requireId { get; set; } + /// + /// 单据业务类型Id + /// + public string bizTypeId { get; set; } + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Enums/EnumWareHouseModule.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Enums/EnumWareHouseModule.cs new file mode 100644 index 00000000..8c55ebb1 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Enums/EnumWareHouseModule.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tnb.WarehouseMgr.Entities.Enums +{ + /// + /// 库房模块 + /// + public enum EnumWareHouseModule + { + /// + /// 其它 + /// + other= 1, + /// + /// 空载具出库 + /// + WmsEptyOutStk=2, + /// + /// 载具移出 + /// + WmsMoOutstk = 3, + /// + /// 空载具入库 + /// + WmsEmptyInstock = 4, + /// + /// 载具移入 + /// + CarryMoveInStock = 5, + /// + /// 齐套分拣 + /// + WmsTransfer = 6, + /// + /// 寄存捆包 + /// + WmsInbale = 7, + /// + /// 一般入库 + /// + WmsInStock = 8, + /// + /// 一般出库 + /// + WmsOutStock = 9, + /// + /// 齐套入库 + /// + WmsKittingInStk = 10, + /// + /// 齐套出库 + /// + WmsKittingOutStk = 11, + /// + /// 寄存出库 + /// + WmsOutBale = 12, + /// + /// 寄存入库 + /// + WmsInbaleInStk = 13, + /// + /// 配送申请 + /// + WmsDelivery = 14, + /// + /// 异常取消 + /// + WmsExceptionCancel = 15, + /// + /// 异常重新执行 + /// + WmsExceptionReExcute = 16, + /// + /// 异常完成 + /// + WmsExceptionComplete = 17, + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/Interface1.cs b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/Interface1.cs new file mode 100644 index 00000000..ca71435b --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/Interface1.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tnb.WarehouseMgr.Interfaces +{ + /// + /// 更新业务单据信息接口 + /// + public interface IUpdateBizBillInfo + { + Task Modify(string requireId); + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs index 04d0ff8e..767eb5cd 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs @@ -1,13 +1,18 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; using Aspose.Cells.Drawing; +using JNPF; +using JNPF.Common.Extension; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.VisualDev; using Microsoft.AspNetCore.Mvc; +using Tnb.WarehouseMgr.Entities.Attributes; +using Tnb.WarehouseMgr.Entities.Dto; namespace Tnb.WarehouseMgr { @@ -15,8 +20,36 @@ namespace Tnb.WarehouseMgr [Route("api/[area]/[controller]/[action]")] public class BaseWareHouseService : IOverideVisualDevService, IDynamicApiController, ITransient { + private static Dictionary _serviceMap = new Dictionary(); public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); - + static BaseWareHouseService() + { + var serviceTypes = App.EffectiveTypes.Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && u.IsSubclassOf(typeof(BaseWareHouseService))).ToList(); + foreach (var serviceType in serviceTypes) + { + var bizTypeId = serviceType.GetCustomAttribute()?.BizTypeId; + if (!bizTypeId.IsNullOrEmpty()) + { + _serviceMap[bizTypeId!] = (BaseWareHouseService)Activator.CreateInstance(serviceType)!; + } + } + } + + protected Task this[WareHouseUpInput input] + { + set + { + if (_serviceMap.ContainsKey(input.bizTypeId)) + { + _serviceMap[input.bizTypeId].ModifyAsync(input); + } + } + } + + public virtual Task ModifyAsync(WareHouseUpInput input) + { + return Task.CompletedTask; + } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 2ebf940f..ef64d08a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -393,14 +393,35 @@ namespace Tnb.WarehouseMgr //更新任务执行表,单据状态为 完成 await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); //更新预任务申请表,单据状态为 已完成 - var preTaskIds = await _db.Queryable().Where(it => input.disTaskIds.Contains(it.id)).Select(it => it.pretask_id).ToListAsync(); - if(preTaskIds?.Count > 0) + var disTasks = await _db.Queryable().Where(it => input.disTaskIds.Contains(it.id)).ToListAsync(); + if (disTasks?.Count > 0) { + var preTaskIds = disTasks.Select(x => x.pretask_id).ToList(); await _db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync(); } //更新载具,锁定状态为未锁定,更新载具的库位当前任务的目标库位 + if (disTasks?.Count > 0) + { + var multiList = disTasks.Select(it => (it.carry_id, it.endlocation_id)).ToList(); + for (int i = 0; i < multiList.Count; i++) + { + await _db.Updateable().SetColumns(it => new WmsCarryH { is_lock = 0, location_id = multiList[i].endlocation_id }).Where(it => it.id == multiList[i].carry_id).ExecuteCommandAsync(); + } + } //更新库位信息,使用状态为 使用,锁定状态为未锁定 + if (disTasks?.Count > 0) + { + var destLocIds = disTasks.Select(it => it.endlocation_id).ToList(); + await _db.Updateable().SetColumns(it => new BasLocation { is_use = "1", is_lock = 0 }).Where(it => destLocIds.Contains(it.id)).ExecuteCommandAsync(); + } //更新业务主表的单据状态 + if (disTasks?.Count > 0) + { + foreach (var dt in disTasks) + { + + } + } } /// @@ -456,7 +477,6 @@ namespace Tnb.WarehouseMgr #region PrivateMethods - private bool isArrivedEpoint = false; private async Task> LocPathCalcAlgorithms(string pStartId, string pEndId, List roads) { var points = await _db.Queryable().ToListAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs index 105a102e..21ba5738 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryMoveInStockService.cs @@ -18,6 +18,7 @@ using Microsoft.AspNetCore.Mvc; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.WarehouseMgr.Entities; +using Tnb.WarehouseMgr.Entities.Attributes; using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Dto; using Tnb.WarehouseMgr.Interfaces; @@ -28,8 +29,10 @@ namespace Tnb.WarehouseMgr /// 载具移入 /// [OverideVisualDev(ModuleId)] + [ServiceModule(BizTypeId)] public class WmsCarryMoveInStockService : BaseWareHouseService { + private const string BizTypeId = "26121988909861"; private const string ModuleId = "26122102481957"; private readonly ISqlSugarClient _db; private readonly IRunService _runService; @@ -137,5 +140,12 @@ namespace Tnb.WarehouseMgr } return Task.FromResult(true); } + + public override async Task ModifyAsync(WareHouseUpInput input) + { + if (input == null) throw new ArgumentNullException(nameof(input)); + var isOk = await _db.Updateable().SetColumns(it => new WmsMoveInstock { status = input.bizTypeId }).Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + if (!isOk) throw Oops.Oh(ErrorCode.COM1001); + } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs index 7d5ee9db..d86c11ba 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs @@ -29,6 +29,7 @@ namespace Tnb.WarehouseMgr /// 空载具入库 /// [OverideVisualDev(ModuleId)] + [AttributeUsage(AttributeTargets.Class)] public class WmsEmptyInstockService : BaseWareHouseService { private const string ModuleId = "26120915344165"; From 7cbd891bed9c65fdbf469b120acd0043945152f0 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 15 Jun 2023 11:02:09 +0800 Subject: [PATCH 3/5] 1 --- WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs index d86c11ba..ad86e417 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs @@ -29,7 +29,7 @@ namespace Tnb.WarehouseMgr /// 空载具入库 /// [OverideVisualDev(ModuleId)] - [AttributeUsage(AttributeTargets.Class)] + public class WmsEmptyInstockService : BaseWareHouseService { private const string ModuleId = "26120915344165"; From 2a6f90d20c254805511815edd9317393c9758f6c Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 15 Jun 2023 11:03:31 +0800 Subject: [PATCH 4/5] 1 --- .../Dto/Inputs/TaskExecuteAfterUpInput.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskExecuteAfterUpInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskExecuteAfterUpInput.cs index dc065732..2489ece5 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskExecuteAfterUpInput.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/TaskExecuteAfterUpInput.cs @@ -14,6 +14,6 @@ namespace Tnb.WarehouseMgr.Entities.Dto.Inputs /// /// 任务执行Ids /// - public List disTaskIds { get; set; } + public List disTaskIds { get; set; } } } From bc35d2a190fff853dc77a9097fab707bcf71e73a Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 15 Jun 2023 11:11:22 +0800 Subject: [PATCH 5/5] 1 --- WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs | 4 ++++ WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs index 767eb5cd..d6288960 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs @@ -45,6 +45,10 @@ namespace Tnb.WarehouseMgr _serviceMap[input.bizTypeId].ModifyAsync(input); } } + get + { + return Task.CompletedTask; + } } public virtual Task ModifyAsync(WareHouseUpInput input) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index ef64d08a..3ed12083 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -419,6 +419,11 @@ namespace Tnb.WarehouseMgr { foreach (var dt in disTasks) { + if (dt.is_chain == 0) + { + var upInput = new WareHouseUpInput { bizTypeId = dt.biz_type, requireId = dt.require_id }; + await base[upInput]; + } } }