From 8b3541c95039e65eac076c330af75ca109ff1643 Mon Sep 17 00:00:00 2001 From: zhoukeda <1315948824@qq.com> Date: Fri, 10 Nov 2023 13:38:32 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E5=B7=A5=E4=BD=8D?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=BF=9B=E8=A1=8C=E4=B8=AD=E5=BE=85=E5=BC=80?= =?UTF-8?q?=E5=B7=A5=E6=9A=82=E5=81=9C=E7=9A=84=E4=BB=BB=E5=8A=A1=E5=8D=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IPrdMoTaskService.cs | 7 +++++ .../Tnb.ProductionMgr/PrdMoTaskService.cs | 27 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs index a2a45e06..3a28f090 100644 --- a/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs @@ -28,6 +28,13 @@ namespace Tnb.ProductionMgr.Interfaces /// Task GetPrdMoTaskInfoByStationId(Dictionary dic); + /// + /// 根据工位获取进行中待开工暂停的任务单信息 + /// + /// + /// + Task> GetPrdMoTaskListByStationId(Dictionary dic); + /// /// 外包装根据工位id获取喷码数据 /// diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs index ad0bbe82..567eca46 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs @@ -2739,6 +2739,33 @@ namespace Tnb.ProductionMgr return prdMoTask; } + /// + /// 根据工位获取进行中待开工暂停的任务单信息 + /// + /// + /// + [HttpPost] + public async Task> GetPrdMoTaskListByStationId(Dictionary dic) + { + string station_id = dic.ContainsKey("station_id") ? dic["station_id"] : ""; + if (string.IsNullOrEmpty(station_id)) + { + throw Oops.Bah("工位错误"); + } + + List list = await _db.Queryable().Where(x => x.workstation_id == station_id && x.parent_id != null && (x.mo_task_status == DictConst.InProgressEnCode || x.mo_task_status == DictConst.ToBeStartedEnCode || x.mo_task_status == DictConst.MoStatusPauseCode )).ToListAsync(); + if (list != null && list.Count>0) + { + foreach (var prdMoTask in list) + { + BasMaterial basMaterial = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.material_id); + prdMoTask.material_name = basMaterial.name; + } + } + + return list; + } + /// /// 外包装根据工位id获取喷码数据 /// From 113f67b1682e3af2499413314bb9603ea0f21f73 Mon Sep 17 00:00:00 2001 From: hlb <894797954@qq.com> Date: Fri, 10 Nov 2023 14:53:33 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=9B=98=E7=82=B9=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=9B=98=E7=82=B9=E7=AD=BE=E6=94=B6=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entity/WmsCheckSignConfig.cs | 77 +++++++++++++++++++ .../Tnb.WarehouseMgr/WmsCheckTaskService.cs | 36 ++++++++- 2 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCheckSignConfig.cs diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCheckSignConfig.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCheckSignConfig.cs new file mode 100644 index 00000000..3cd97e5b --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCheckSignConfig.cs @@ -0,0 +1,77 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.WarehouseMgr.Entities; + +/// +/// 盘点签收配置 +/// +[SugarTable("wms_check_sign_config")] +public partial class WmsCheckSignConfig : BaseEntity +{ + public WmsCheckSignConfig() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 所属组织 + /// + public string? org_id { get; set; } + + /// + /// 仓库ID + /// + public string? warehouse_id { get; set; } + + /// + /// 盘点库位 + /// + public string? location_id { get; set; } + + /// + /// 是否启用 + /// + public int? enabled { get; set; } + + /// + /// 创建用户 + /// + public string? create_id { get; set; } + + /// + /// 创建时间 + /// + public DateTime? create_time { get; set; } + + /// + /// 修改用户 + /// + public string? modify_id { get; set; } + + /// + /// 修改时间 + /// + public DateTime? modify_time { get; set; } + + /// + /// 扩展 + /// + public string? extras { get; set; } + + /// + /// 时间戳 + /// + public DateTime? timestamp { get; set; } + + /// + /// 流程任务Id + /// + public string? f_flowtaskid { get; set; } + + /// + /// 流程引擎Id + /// + public string? f_flowid { get; set; } + +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs index 3b02b958..1a5a4593 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs @@ -1,4 +1,5 @@ -using System.Linq.Expressions; +using System.Linq; +using System.Linq.Expressions; using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Extension; @@ -10,6 +11,7 @@ using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Mapster; +using Newtonsoft.Json.Linq; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.WarehouseMgr.Entities; @@ -127,9 +129,35 @@ namespace Tnb.WarehouseMgr //生成预任务信息 if (details.Count > 0 && carryCodes.Count > 0) { - string[] locTypes = new[] { ((int)EnumLocationType.出库库位).ToString(), ((int)EnumLocationType.出入库位).ToString() }; - BasLocation[] endLocs = await _db.Queryable().Where(it => it.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && locTypes.Contains(it.is_type)).ToArrayAsync(); - int randomIndex = new Random().Next(0, endLocs.GetUpperBound(0)); + // 判断当前仓库是否有盘点签收配置 + var wcsConf = await _db.Queryable().Where(it => it.warehouse_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && it.enabled == 1) + .FirstAsync(); + BasLocation[] endLocs = Array.Empty(); + int randomIndex = 0; + if (wcsConf != null) + { + if (wcsConf.location_id == null) { + throw new AppFriendlyException("盘点签收配置库位为空,请查看配置!", 500); + } + JArray? jsonArr = null; + jsonArr = JArray.Parse(wcsConf.location_id); + string?[] locArr = jsonArr.Select(x => x.ToObject()).ToArray(); + if (locArr != null) + { + endLocs = await _db.Queryable().Where(it => it.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && locArr.Contains(it.id)).ToArrayAsync(); + randomIndex = new Random().Next(0, endLocs.GetUpperBound(0)); + } + else { + throw new AppFriendlyException("盘点签收配置有误,请查看配置!", 500); + } + + } + else { + string[] locTypes = new[] { ((int)EnumLocationType.出库库位).ToString(), ((int)EnumLocationType.出入库位).ToString() }; + endLocs = await _db.Queryable().Where(it => it.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && locTypes.Contains(it.is_type)).ToArrayAsync(); + randomIndex = new Random().Next(0, endLocs.GetUpperBound(0)); + } + List carrys = await _db.Queryable().Where(it => carryCodes.Select(x => x.carry_id).Distinct().Contains(it.id)).ToListAsync(); List curDetails = details.DistinctBy(x => x.carry_id).ToList(); List curCarryCodes = carryCodes.FindAll(x => curDetails.Select(d => d.carry_id).Contains(x.carry_id)); From e60dc3245637eaac6bb7253e2c7547bc1357a5d4 Mon Sep 17 00:00:00 2001 From: qianjiawei <1184704771@qq.com> Date: Fri, 10 Nov 2023 16:03:45 +0800 Subject: [PATCH 3/3] =?UTF-8?q?redis=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.ProductionMgr/RedisDataService.cs | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs b/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs index 6007f34f..fd7cad38 100644 --- a/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs @@ -1,11 +1,17 @@ -using JNPF.Common.Cache; +using System.Reflection; +using JNPF.Common.Cache; +using JNPF.Common.Dtos.VisualDev; +using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; +using JNPF.VisualDev; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using SqlSugar; using Tnb.Common.Redis; +using Tnb.ProductionMgr.Entities; using Tnb.ProductionMgr.Interfaces; namespace Tnb.ProductionMgr @@ -15,12 +21,32 @@ namespace Tnb.ProductionMgr /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] - public class RedisDataService : IRedisDataService, IDynamicApiController, ITransient + [OverideVisualDev(ModuleId)] + public class RedisDataService : IOverideVisualDevService, IRedisDataService, IDynamicApiController, ITransient { + private const string ModuleId = "30062789830933"; private readonly RedisData _redisData; - public RedisDataService(RedisData redisData) + private readonly ISqlSugarRepository _repository; + public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); + public RedisDataService(RedisData redisData, ISqlSugarRepository repository) { _redisData = redisData; + _repository = repository; + OverideFuncs.CreateAsync = Create; + } + private async Task Create(VisualDevModelDataCrInput input) + { + RedisReadConfig redisReadConfig = new RedisReadConfig(); + redisReadConfig.id = SnowflakeIdHelper.NextId(); + redisReadConfig.dev_name = input.data[nameof(RedisReadConfig.dev_name)].ToString(); + redisReadConfig.tag_name = input.data[nameof(RedisReadConfig.tag_name)].ToString(); + redisReadConfig.data = input.data[nameof(RedisReadConfig.data)].ToString(); + redisReadConfig.event_type = int.Parse(input.data[nameof(RedisReadConfig.event_type)].ToString()!); + redisReadConfig.data_type = int.Parse(input.data[nameof(RedisReadConfig.data_type)].ToString()!); + redisReadConfig.check_type = int.Parse(input.data[nameof(RedisReadConfig.check_type)].ToString()!); + redisReadConfig.enabled = int.Parse(input.data[nameof(RedisReadConfig.enabled)].ToString()!); + await _repository.AsSugarClient().Insertable(redisReadConfig).ExecuteCommandAsync(); + return await Task.FromResult(true); } /// /// 根据机号获取重量