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/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMolds.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMolds.cs index 3674be98..639fcd84 100644 --- a/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMolds.cs +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/ToolMolds.cs @@ -67,7 +67,7 @@ public partial class ToolMolds : BaseEntity /// /// 成长周期 /// - public int? growth_cycle { get; set; } + public decimal? growth_cycle { get; set; } /// /// 型腔数 diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldRequisitionService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldRequisitionService.cs index f71ae603..e7dbd085 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldRequisitionService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldRequisitionService.cs @@ -1,4 +1,5 @@ using System.Dynamic; +using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; using JNPF.Common.Filter; @@ -7,10 +8,12 @@ using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Systems.Entitys.Permission; +using JNPF.Systems.Interfaces.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using JNPF.VisualDev.Interfaces; +using Mapster; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; @@ -34,12 +37,16 @@ namespace Tnb.EquipMgr private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; + private readonly IBillRullService _billRuleService; + private readonly IUserManager _userManager; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public ToolMoldRequisitionService( ISqlSugarRepository repository, IRunService runService, - IVisualDevService visualDevService + IVisualDevService visualDevService, + IBillRullService billRullService, + IUserManager userManager ) { _db = repository.AsSugarClient(); @@ -47,6 +54,8 @@ namespace Tnb.EquipMgr _visualDevService = visualDevService; OverideFuncs.GetListAsync = GetList; OverideFuncs.CreateAsync = Create; + _billRuleService= billRullService; + _userManager= userManager; } private async Task GetList(VisualDevModelListQueryInput input) @@ -96,13 +105,42 @@ namespace Tnb.EquipMgr return PageResult.SqlSugarPageResult(result); } - + private DateTime GetDateTime(long value) + { + + DateTime unixStartTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + DateTime dateTime = unixStartTime.AddMilliseconds(value); + return dateTime; + } private async Task Create(VisualDevModelDataCrInput input) { + string Code = await _billRuleService.GetBillNumber("moldRequisition"); DbResult result = await _db.Ado.UseTranAsync(async () => { - VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); - await _runService.Create(templateEntity, input); + ToolMoldRequisition toolMoldRequisition = new ToolMoldRequisition(); + toolMoldRequisition.code = Code; + toolMoldRequisition.mold_id= input.data[nameof(ToolMoldRequisition.mold_id)].ToString(); + toolMoldRequisition.mo_task_id = input.data[nameof(ToolMoldRequisition.mo_task_id)].ToString(); + toolMoldRequisition.equip_id = input.data[nameof(ToolMoldRequisition.equip_id)].ToString(); + if (input.data[nameof(ToolMoldRequisition.requisition_time)] != null) + { + toolMoldRequisition.requisition_time = GetDateTime(long.Parse(input.data[nameof(ToolMoldRequisition.requisition_time)].ToString()!)); + } + if (input.data[nameof(ToolMoldRequisition.estimated_return_time)] != null) + { + toolMoldRequisition.estimated_return_time = GetDateTime(long.Parse(input.data[nameof(ToolMoldRequisition.estimated_return_time)].ToString()!)); + } + + toolMoldRequisition.recipient_id = input.data[nameof(ToolMoldRequisition.recipient_id)].ToString(); + if (input.data.ContainsKey(nameof(ToolMoldRequisition.remark))) + { + toolMoldRequisition.remark = input.data[nameof(ToolMoldRequisition.remark)].ToString(); + } + toolMoldRequisition.create_time = DateTime.Now; + toolMoldRequisition.create_id = _userManager.UserId; + await _db.Insertable(toolMoldRequisition).ExecuteCommandAsync(); + // VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); + // await _runService.Create(templateEntity, input); _ = await _db.Updateable().SetColumns(x => x.mold_status == Tnb.BasicData.DictConst.SCTypeId) diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldReturnService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldReturnService.cs index 2c413d78..b6211f70 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldReturnService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldReturnService.cs @@ -1,8 +1,10 @@ +using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; 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; @@ -25,29 +27,60 @@ namespace Tnb.EquipMgr private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; + private readonly IBillRullService _billRuleService; + private readonly IUserManager _userManager; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public ToolMoldReturnService( ISqlSugarRepository repository, IRunService runService, - IVisualDevService visualDevService + IVisualDevService visualDevService, + IBillRullService billRullService, + IUserManager userManager ) { _db = repository.AsSugarClient(); _runService = runService; _visualDevService = visualDevService; OverideFuncs.CreateAsync = Create; + _billRuleService= billRullService; + _userManager = userManager; } + private DateTime GetDateTime(long value) + { + DateTime unixStartTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + DateTime dateTime = unixStartTime.AddMilliseconds(value); + return dateTime; + } private async Task Create(VisualDevModelDataCrInput input) { + string Code = await _billRuleService.GetBillNumber("moldReturn"); DbResult result = await _db.Ado.UseTranAsync(async () => { - VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); - await _runService.Create(templateEntity, input); + ToolMoldReturn toolMoldReturn = new ToolMoldReturn(); + toolMoldReturn.code = Code; + toolMoldReturn.mold_id = input.data[nameof(ToolMoldReturn.mold_id)].ToString(); + toolMoldReturn.location_id = input.data[nameof(ToolMoldReturn.location_id)].ToString(); + if (input.data[nameof(ToolMoldReturn.return_id)] != null) + { + toolMoldReturn.return_id = input.data[nameof(ToolMoldReturn.return_id)].ToString(); + } + if (input.data[nameof(ToolMoldReturn.return_time)] != null) + { + toolMoldReturn.return_time = GetDateTime(long.Parse(input.data[nameof(ToolMoldReturn.return_time)].ToString()!)); + } + if (input.data.ContainsKey(nameof(ToolMoldReturn.remark))) + { + toolMoldReturn.remark = input.data[nameof(ToolMoldReturn.remark)].ToString(); + } + toolMoldReturn.create_time = DateTime.Now; + toolMoldReturn.create_id = _userManager.UserId; + // VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); + //await _runService.Create(templateEntity, input); + await _db.Insertable(toolMoldReturn).ExecuteCommandAsync(); - - string? locationId = ""; + string ? locationId = ""; if (input.data.TryGetValue("location_id", out object? value)) { locationId = value.ToString(); diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldsService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldsService.cs index bb2d2b4a..ca540162 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldsService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldsService.cs @@ -72,7 +72,12 @@ namespace Tnb.EquipMgr private async Task Update(string id, VisualDevModelDataUpInput visualDevModelDataUpInput) { - string? qrcode = visualDevModelDataUpInput.data.ContainsKey("qrcode") ? visualDevModelDataUpInput.data["qrcode"].ToString() : ""; + string? qrcode = string.Empty; + if (visualDevModelDataUpInput.data.ContainsKey("qrcode") && visualDevModelDataUpInput.data["qrcode"] != null) + { + qrcode = visualDevModelDataUpInput.data["qrcode"].ToString(); + } + if (!string.IsNullOrEmpty(qrcode) && await _repository.AsSugarClient().Queryable().AnyAsync(x => x.code == visualDevModelDataUpInput.data["qrcode"] && x.source_id != id)) { throw Oops.Bah("二维码总表中已存在该二维码"); diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdInstockService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdInstockService.cs index 1a21e971..dbd431b5 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdInstockService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdInstockService.cs @@ -59,11 +59,12 @@ namespace Tnb.ProductionMgr { Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string moCode = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; - List list = await _repository.AsSugarClient().Queryable() + var list = await _repository.AsSugarClient().Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.mold_id == c.id) .LeftJoin((a, b, c, d) => a.eqp_id == d.id) .WhereIF(!string.IsNullOrEmpty(moCode), (a, b, c, d) => a.mo_task_code!.Contains(moCode)) + .Where(a=>string.IsNullOrEmpty(a.parent_id)) .Select((a, b, c, d) => new PrdMoTaskTreeOutput() { id = a.id, @@ -78,20 +79,20 @@ namespace Tnb.ProductionMgr estimated_start_date = a.estimated_start_date!.ToString(), estimated_end_date = a.estimated_end_date.ToString(), create_time = a.create_time.ToString() - }).ToListAsync(); - List treeList = list.ToTree(); - treeList = treeList.Skip((input.currentPage - 1) * input.pageSize).Take(input.pageSize).ToList(); - SqlSugarPagedList pagedList = new() - { - list = treeList, - pagination = new Pagination - { - CurrentPage = input.currentPage, - PageSize = input.pageSize, - Total = treeList.Count - } - }; - return PageResult.SqlSugarPageResult(pagedList); + }).ToPagedListAsync(input.currentPage, input.pageSize); + // List treeList = list.ToTree(); + // treeList = treeList.Skip((input.currentPage - 1) * input.pageSize).Take(input.pageSize).ToList(); + // SqlSugarPagedList pagedList = new() + // { + // list = treeList, + // pagination = new Pagination + // { + // CurrentPage = input.currentPage, + // PageSize = input.pageSize, + // Total = treeList.Count + // } + // }; + return PageResult.SqlSugarPageResult(list); } [HttpPost] diff --git a/QcMgr/Tnb.QcMgr/QcCheckTaskResultService.cs b/QcMgr/Tnb.QcMgr/QcCheckTaskResultService.cs index 1d2880e5..4b8c36ee 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckTaskResultService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckTaskResultService.cs @@ -56,7 +56,7 @@ namespace Tnb.QcMgr .LeftJoin((a, b, c) => a.processid == c.id) .LeftJoin((a, b, c, d) => a.workid == d.Id) .LeftJoin((a, b, c, d, e) => a.execuser == e.Id) - .WhereIF(!string.IsNullOrEmpty(materialid), (a, b, c, d, e) => a.materialid == materialid) + .WhereIF(!string.IsNullOrEmpty(materialid), (a, b, c, d, e) => b.name.Contains(materialid)) .WhereIF(!string.IsNullOrEmpty(checktype), (a, b, c, d, e) => a.checktype == checktype) .WhereIF(!string.IsNullOrEmpty(status), (a, b, c, d, e) => a.status == status) .Where((a, b, c, d, e) => a.status == list.Where(p => p.FullName == "已完成").First().Id) diff --git a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs index 51b94859..70ef769b 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs @@ -67,7 +67,7 @@ namespace Tnb.QcMgr .LeftJoin((a, b, c) => a.processid == c.id) .LeftJoin((a, b, c, d) => a.workid == d.Id) .LeftJoin((a, b, c, d, e) => a.execuser == e.Id) - .WhereIF(!string.IsNullOrEmpty(materialid), (a, b, c, d, e) => a.materialid == materialid) + .WhereIF(!string.IsNullOrEmpty(materialid), (a, b, c, d,e) => b.name.Contains(materialid)) .WhereIF(!string.IsNullOrEmpty(checktype), (a, b, c, d, e) => a.checktype == checktype) .WhereIF(!string.IsNullOrEmpty(status), (a, b, c, d, e) => a.status == status) .Where((a, b, c, d, e) => a.status == list.Where(p => p.FullName == "待执行").First().Id) 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..83c7b068 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs @@ -44,10 +44,6 @@ public partial class WmsElevatorH : BaseEntity /// public string elevator_group { get; set; } = string.Empty; - /// - /// 状态 - /// - public int status { 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..032b86a3 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs @@ -1,7 +1,9 @@ using System.Reflection; using System.Runtime.InteropServices; using System.Security.Claims; +using System.Text; using JNPF; +using JNPF.Common.Contracts; using JNPF.Common.Core.Manager; using JNPF.Common.Enums; using JNPF.Common.Extension; @@ -12,6 +14,7 @@ using JNPF.EventBus; using JNPF.Extras.CollectiveOAuth.Enums; using JNPF.VisualDev; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SqlSugar; @@ -37,7 +40,24 @@ namespace Tnb.WarehouseMgr protected IEventPublisher? EventPublisher { set; get; } + 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"; + cfgOpts.MessageFormat = (logMsg) => + { + Span span = logMsg.LogLevel.ToString().ToCharArray(); + StringBuilder sb = new(); + _ = sb.Append($"{span[..4]} "); + _ = sb.Append($"{logMsg.LogName} "); + _ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} "); + _ = sb.Append($"#{logMsg.EventId.Id} "); + _ = sb.Append(logMsg.Message + " "); + _ = sb.Append(logMsg.Exception?.ToString()); + return sb.ToString(); + }; + + })).CreateLogger(this.GetType()); static BaseWareHouseService() @@ -300,6 +320,8 @@ namespace Tnb.WarehouseMgr } } + + #region 斑马打印 /// /// 打印 @@ -347,7 +369,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 62% rename from WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService`1.cs rename to WarehouseMgr/Tnb.WarehouseMgr/ServiceLoggerBase`1.cs index 246da2d1..8be1be94 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,24 +39,24 @@ 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"; - cfgOpts.MessageFormat = (logMsg) => - { - Span span = logMsg.LogLevel.ToString().ToCharArray(); - StringBuilder sb = new(); - _ = sb.Append($"{span[..4]} "); - _ = sb.Append($"{logMsg.LogName} "); - _ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} "); - _ = sb.Append($"#{logMsg.EventId.Id} "); - _ = sb.Append(logMsg.Message + " "); - _ = sb.Append(logMsg.Exception?.ToString()); - return sb.ToString(); - }; + // //cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff"; + // cfgOpts.MessageFormat = (logMsg) => + // { + // Span span = logMsg.LogLevel.ToString().ToCharArray(); + // StringBuilder sb = new(); + // _ = sb.Append($"{span[..4]} "); + // _ = sb.Append($"{logMsg.LogName} "); + // _ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} "); + // _ = sb.Append($"#{logMsg.EventId.Id} "); + // _ = sb.Append(logMsg.Message + " "); + // _ = sb.Append(logMsg.Exception?.ToString()); + // return sb.ToString(); + // }; - })).CreateLogger(); + //})).CreateLogger(this.GetType()); } public static class CustomLoggerExtenstions diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 2d3a6937..c9c64737 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; @@ -977,9 +977,9 @@ namespace Tnb.WarehouseMgr if (curEleDs?.Count > 0) { //当前电梯 - WmsElevatorH curEle = await _db.Queryable().SingleAsync(it => it.id == curEleDs.First().bill_id && it.status == 1); + WmsElevatorH curEle = await _db.Queryable().SingleAsync(it => it.id == curEleDs.First().bill_id && it.enable_mark == 1); //同电梯组电梯 - List sGpEle = await _db.Queryable().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.status == 1).ToListAsync(); + List sGpEle = await _db.Queryable().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.enable_mark == 1).ToListAsync(); if (curEle == null && sGpEle?.Count > 0) { @@ -1048,9 +1048,9 @@ namespace Tnb.WarehouseMgr if (curEleDs?.Count > 0) { //当前电梯 - WmsElevatorH curEle = await _db.Queryable().SingleAsync(it => it.id == curEleDs.First().bill_id && it.status == 1); + WmsElevatorH curEle = await _db.Queryable().SingleAsync(it => it.id == curEleDs.First().bill_id && it.enable_mark == 1); //同电梯组电梯 - List sGpEle = await _db.Queryable().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.status == 1).ToListAsync(); + List sGpEle = await _db.Queryable().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.enable_mark == 1).ToListAsync(); if (curEle == null && sGpEle?.Count > 0) { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsBasicDataBase`1.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsBasicDataBase`1.cs new file mode 100644 index 00000000..d9be1169 --- /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,