From ff37e58ef82b3bd25430efe55b281c11e07e9fd3 Mon Sep 17 00:00:00 2001 From: "yang.lee" Date: Thu, 16 Nov 2023 11:53:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consts/DictConst.cs | 4 + .../Entity/BasRegionMat.cs | 72 ++++++++++++++ .../Tnb.BasicData/BasRegionMatService.cs | 99 +++++++++++++++++++ .../Consts/ModuleConsts.cs | 5 + .../Consts/WmsWareHouseConst.cs | 2 + .../Entity/WmsElevatorH.cs | 3 +- .../Entity/WmsElevatorH.part.cs | 7 ++ .../Tnb.WarehouseMgr/BasRegionMatService.cs | 18 ++++ .../Tnb.WarehouseMgr/BaseWareHouseService.cs | 5 +- .../Tnb.WarehouseMgr/DeviceProviderService.cs | 2 +- ...useService`1.cs => ServiceLoggerBase`1.cs} | 10 +- .../Tnb.WarehouseMgr/WareHouseService.cs | 2 +- .../Tnb.WarehouseMgr/WmsBasicDataBase`1.cs | 29 ++++++ .../Tnb.WarehouseMgr/WmsCheckTaskService.cs | 2 +- .../WmsEmptyInstockService.cs | 2 +- .../Tnb.WarehouseMgr/WmsOutStockService.cs | 2 +- .../Tnb.WarehouseMgr/WmsStockReportService.cs | 9 ++ 17 files changed, 262 insertions(+), 11 deletions(-) create mode 100644 BasicData/Tnb.BasicData.Entities/Entity/BasRegionMat.cs create mode 100644 BasicData/Tnb.BasicData/BasRegionMatService.cs create mode 100644 WarehouseMgr/Tnb.WarehouseMgr/BasRegionMatService.cs rename WarehouseMgr/Tnb.WarehouseMgr/{BaseWareHouseService`1.cs => ServiceLoggerBase`1.cs} (90%) create mode 100644 WarehouseMgr/Tnb.WarehouseMgr/WmsBasicDataBase`1.cs diff --git a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs index 6a3d17e6..95b03123 100644 --- a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs +++ b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs @@ -48,6 +48,10 @@ public static class DictConst /// 包装工单 /// public const string PrdMoTypeBZ = "25019191681045"; + /// + /// 物料分类 + /// + public const string MaterialCatagoryID = "24882163283733"; #endregion diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasRegionMat.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasRegionMat.cs new file mode 100644 index 00000000..6086951f --- /dev/null +++ b/BasicData/Tnb.BasicData.Entities/Entity/BasRegionMat.cs @@ -0,0 +1,72 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.BasicData.Entities; + +/// +/// 区域物料设定 +/// +[SugarTable("bas_region_mat")] +public partial class BasRegionMat : BaseEntity +{ + public BasRegionMat() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 所属组织 + /// + public string? org_id { get; set; } + + /// + /// 区域ID + /// + public string region_id { get; set; } = string.Empty; + + /// + /// 区域代码 + /// + public string region_code { get; set; } = string.Empty; + + /// + /// 物料分类 + /// + public string material_type { get; set; } = string.Empty; + + /// + /// 备注 + /// + public string? remark { get; set; } + + /// + /// 创建用户 + /// + public string create_id { get; set; } = string.Empty; + + /// + /// 创建时间 + /// + public DateTime create_time { get; set; } = DateTime.Now; + + /// + /// 修改用户 + /// + public string? modify_id { get; set; } + + /// + /// 修改时间 + /// + public DateTime? modify_time { get; set; } + + /// + /// 扩展字段 + /// + public string? extras { get; set; } + + /// + /// 时间戳(用于并发控制) + /// + public DateTime? timestamp { get; set; } + +} diff --git a/BasicData/Tnb.BasicData/BasRegionMatService.cs b/BasicData/Tnb.BasicData/BasRegionMatService.cs new file mode 100644 index 00000000..f89d5907 --- /dev/null +++ b/BasicData/Tnb.BasicData/BasRegionMatService.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Aspose.Cells.Drawing; +using DingTalk.Api.Request; +using JNPF.Common.Dtos.VisualDev; +using JNPF.Common.Extension; +using JNPF.DependencyInjection; +using JNPF.DynamicApiController; +using JNPF.FriendlyException; +using JNPF.Systems.Interfaces.System; +using JNPF.VisualDev; +using JNPF.VisualDev.Entitys; +using JNPF.VisualDev.Interfaces; +using Microsoft.AspNetCore.Components.Forms; +using Microsoft.AspNetCore.Mvc; +using SqlSugar; +using Tnb.BasicData.Entities; + +namespace Tnb.BasicData +{ + /// + /// 区域物料设定 + /// + [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 701)] + [Route("api/[area]/[controller]/[action]")] + [OverideVisualDev(ModuleId)] + + public class BasRegionMatService : IOverideVisualDevService, IDynamicApiController, ITransient + { + private const string ModuleId = "26187428200229"; + private readonly ISqlSugarClient _db; + private readonly IRunService _runService; + private readonly IVisualDevService _visualDevService; + private readonly IDictionaryDataService _dataDictionaryService; + private static Dictionary s_materialCategoryMap = new(); + + public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); + public BasRegionMatService(ISqlSugarRepository repo, + IRunService runService, IVisualDevService visualDevService, + IDictionaryDataService dataDictionaryService + ) + { + _db = repo.AsSugarClient(); + _runService = runService; + _visualDevService = visualDevService; + _dataDictionaryService = dataDictionaryService; + OverideFuncs.CreateAsync = CreateAsync; + } + + private async Task CreateAsync(VisualDevModelDataCrInput input) + { + Task respTask = Task.FromResult(1); + try + { + await _db.Ado.BeginTranAsync(); + + string? regionCode = null, materialType = null; + if (input.data.ContainsKey(nameof(BasRegionMat.region_code)) && input.data[nameof(BasRegionMat.region_code)].IsNotEmptyOrNull()) + { + regionCode = input.data[nameof(BasRegionMat.region_code)].ToString(); + } + if (input.data.ContainsKey(nameof(BasRegionMat.material_type)) && input.data[nameof(BasRegionMat.material_type)].IsNotEmptyOrNull()) + { + materialType = input.data[nameof(BasRegionMat.material_type)].ToString(); + } + var blTrueAll = new List { regionCode.IsNullOrWhiteSpace(), materialType.IsNullOrWhiteSpace() }; + if (blTrueAll.All(b => !b)) + { + if (s_materialCategoryMap.Count == 0) + { + s_materialCategoryMap = await _dataDictionaryService.GetDictionaryByTypeId(DictConst.MaterialCatagoryID); + } + var regionMat = await _db.Queryable().FirstAsync(it => it.region_code == regionCode && it.material_type == materialType); + if (regionMat != null) + { + throw new AppFriendlyException($"区域:【{regionCode}】,物料:【{s_materialCategoryMap[materialType]?.ToString()}】已存在", 500); + } + } + await _db.Ado.CommitTranAsync(); + + VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); + await _runService.Create(templateEntity, input); + + } + catch (Exception) + { + respTask = Task.FromResult(0); + await _db.Ado.RollbackTranAsync(); + throw; + } + + return await respTask; + } + + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs index d7dd9e09..b4bd74b9 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs @@ -195,4 +195,9 @@ public class ModuleConsts /// 模块标识-在库物料维护 /// public const string MODULE_WMSINSTKMIN_ID = "27124095468309"; + /// + /// 模块标识-区域物料设定 + /// + public const string MODULE_BASREGIONMAT_ID = "26187428200229"; + } \ 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 bec5a1b3..056da03d 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs @@ -265,5 +265,7 @@ /// 盘点任务计算状态-未结算 /// public const string CLOSINGSTATUS_WJS_ID = "27674058079509"; + + } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs index 88ca59b7..0b7fe63c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs @@ -47,7 +47,8 @@ public partial class WmsElevatorH : BaseEntity /// /// 状态 /// - public int status { get; set; } + [SugarColumn(ColumnName = "status")] + public int enable_mark { get; set; } /// /// 任务数量 diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.part.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.part.cs index a605cbb1..4709864f 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.part.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.part.cs @@ -59,4 +59,11 @@ public partial class WmsElevatorH /// [SugarColumn(IsIgnore = true)] public string device_id { get; set; } + + /// + /// 状态 + /// + [SugarColumn(ColumnName = "status")] + public int enable_mark { get; set; } + } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BasRegionMatService.cs b/WarehouseMgr/Tnb.WarehouseMgr/BasRegionMatService.cs new file mode 100644 index 00000000..f850db17 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr/BasRegionMatService.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using JNPF.VisualDev; + +namespace Tnb.WarehouseMgr +{ + /// + /// 区域物料设定 + /// + [OverideVisualDev(ModuleConsts.MODULE_BASREGIONMAT_ID)] + public class BasRegionMatService :BaseWareHouseService + { + + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs index ab54ec7b..ce5286db 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs @@ -2,6 +2,7 @@ using System.Runtime.InteropServices; using System.Security.Claims; using JNPF; +using JNPF.Common.Contracts; using JNPF.Common.Core.Manager; using JNPF.Common.Enums; using JNPF.Common.Extension; @@ -300,6 +301,8 @@ namespace Tnb.WarehouseMgr } } + + #region 斑马打印 /// /// 打印 @@ -347,7 +350,7 @@ namespace Tnb.WarehouseMgr // tcs.SetResult(printerList); // return tcs.Task; //} - #endregion + #endregion /// /// Api响应结果 diff --git a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs index 084109fa..606f6ac9 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs @@ -32,7 +32,7 @@ namespace Tnb.WarehouseMgr /// Wms设备接口提供程序服务类 /// - public class DeviceProviderService : BaseWareHouseService + public class DeviceProviderService : ServiceLoggerBase { private readonly ISqlSugarClient _db; private readonly IWareHouseService _wareHouseService; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService`1.cs b/WarehouseMgr/Tnb.WarehouseMgr/ServiceLoggerBase`1.cs similarity index 90% rename from WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService`1.cs rename to WarehouseMgr/Tnb.WarehouseMgr/ServiceLoggerBase`1.cs index 246da2d1..aafd0c79 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService`1.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/ServiceLoggerBase`1.cs @@ -6,17 +6,19 @@ using Tnb.WarehouseMgr.Entities; namespace Tnb.WarehouseMgr { - public class BaseWareHouseService : BaseWareHouseService + public class ServiceLoggerBase : BaseWareHouseService { protected static Dictionary s_elevatorMap = new(); private static readonly Lazy initializationTask; - static BaseWareHouseService() + static ServiceLoggerBase() { initializationTask = new Lazy(InitializeAsync); } + + private static async Task InitializeAsync() { @@ -37,7 +39,7 @@ namespace Tnb.WarehouseMgr - protected ILogger Logger => LoggerFactory.Create(builder => builder.AddFile($"{AppContext.BaseDirectory}/logs/custom{DateTime.Now:yyyyMMdd}.log", cfgOpts => + protected ILogger Logger => LoggerFactory.Create(builder => builder.AddFile($"{AppContext.BaseDirectory}/logs/{this.GetType().Name}{DateTime.Now:yyyyMMdd}.log", cfgOpts => { //cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff"; @@ -54,7 +56,7 @@ namespace Tnb.WarehouseMgr return sb.ToString(); }; - })).CreateLogger(); + })).CreateLogger(); } public static class CustomLoggerExtenstions diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 2d3a6937..e0095e8f 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -33,7 +33,7 @@ namespace Tnb.WarehouseMgr /// /// 库房业务类(出入库) /// - public class WareHouseService : BaseWareHouseService, IWareHouseService + public class WareHouseService : ServiceLoggerBase, IWareHouseService { private readonly ISqlSugarClient _db; private readonly IDictionaryDataService _dictionaryDataService; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsBasicDataBase`1.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsBasicDataBase`1.cs new file mode 100644 index 00000000..14fdeb1d --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsBasicDataBase`1.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using JNPF.Common.Contracts; +using Microsoft.AspNetCore.Mvc; +using SqlSugar; + +namespace Tnb.WarehouseMgr +{ + /// + /// Wms基础数据基类 + /// + /// + public class WmsBasicDataBase : BaseWareHouseService where TEntity : BaseEntity, new() + { + private readonly ISqlSugarClient _db; + public WmsBasicDataBase() + { + + } + [HttpPost] + public async Task IsEnabledMark(IEnumerable ids,int status) + { + + } + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs index d00f1dc2..c54969ce 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs @@ -29,7 +29,7 @@ namespace Tnb.WarehouseMgr /// 盘点任务 /// [OverideVisualDev(ModuleConsts.MODULE_WMSCHECKTASK_ID)] - public class WmsCheckTaskService : BaseWareHouseService + public class WmsCheckTaskService : ServiceLoggerBase { private readonly ISqlSugarClient _db; private readonly IWareHouseService _warehouseService; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs index 6ac049fc..25ebbc91 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs @@ -30,7 +30,7 @@ namespace Tnb.WarehouseMgr [OverideVisualDev(ModuleConsts.MODULE_WMSEMPTYINSTOCK_ID)] [ServiceModule(BizTypeId)] - public class WmsEmptyInstockService : BaseWareHouseService, IWmsEmptyInstockService + public class WmsEmptyInstockService : ServiceLoggerBase, IWmsEmptyInstockService { private const string BizTypeId = "26121986416677"; private readonly ISqlSugarClient _db; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs index 0fe26b25..53e6c2d8 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs @@ -34,7 +34,7 @@ namespace Tnb.WarehouseMgr /// [OverideVisualDev(ModuleConsts.MODULE_WMSOUTSTOCK_ID)] [ServiceModule(BizTypeId)] - public class WmsOutStockService : BaseWareHouseService, IWmsOutStockService + public class WmsOutStockService : ServiceLoggerBase, IWmsOutStockService { private const string BizTypeId = "26191522660645"; private readonly ISqlSugarClient _db; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs index df16f071..99ef65d1 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs @@ -1,9 +1,11 @@ using JNPF.Common.Core.Manager; +using JNPF.Common.Extension; using JNPF.Common.Filter; using JNPF.Common.Security; using JNPF.VisualDev; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using Mapster; +using Newtonsoft.Json.Linq; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.WarehouseMgr.Entities; @@ -29,11 +31,18 @@ namespace Tnb.WarehouseMgr private async Task GetListAsync(VisualDevModelListQueryInput input) { + var materialCode = ""; + if (!input.queryJson.IsNullOrWhiteSpace()) + { + materialCode = JObject.Parse(input.queryJson).Value(nameof(WmsCarryCode.material_code)); + } + List items = await _db.Queryable().InnerJoin((a, b) => a.material_id == b.id) .InnerJoin((a, b, c) => b.id == c.material_id) .InnerJoin((a, b, c, d) => a.carry_id == d.id) .InnerJoin((a, b, c, d, e) => d.location_id == e.id) .Where((a, b, c, d, e) => e.is_type == ((int)EnumLocationType.存储库位).ToString()) + .WhereIF(!string.IsNullOrEmpty(materialCode), (a, b, c, d, e) => a.material_code.Contains(materialCode)) .Select((a, b, c, d, e) => new WmsStockReportH { warehouse_id = a.warehouse_id,