From f0e415a3dd1371265f3e77bead31b9b801633bf9 Mon Sep 17 00:00:00 2001 From: qianjiawei <1184704771@qq.com> Date: Thu, 20 Jul 2023 15:45:20 +0800 Subject: [PATCH] 1 --- QcMgr/Tnb.QcMgr.Entities/Dto/Trigger.cs | 21 ++++ .../Enums/EnumTriggerType.cs | 16 +++ QcMgr/Tnb.QcMgr/QcCheckPlanService.cs | 104 ++++++++++++++++++ .../Listener/QcTaskTimeWorker.cs | 6 +- 4 files changed, 146 insertions(+), 1 deletion(-) diff --git a/QcMgr/Tnb.QcMgr.Entities/Dto/Trigger.cs b/QcMgr/Tnb.QcMgr.Entities/Dto/Trigger.cs index d13358b4..65de98c4 100644 --- a/QcMgr/Tnb.QcMgr.Entities/Dto/Trigger.cs +++ b/QcMgr/Tnb.QcMgr.Entities/Dto/Trigger.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using NPOI.SS.Formula.PTG; +using Tnb.QcMgr.Entities.Enums; namespace Tnb.QcMgr.Entities.Dto { @@ -17,4 +18,24 @@ namespace Tnb.QcMgr.Entities.Dto public string[]? trievent { get; set; } public string[]? trieventid { get; set; } } + public class TriggerPlanEntity + { + /// + /// 物料方案编号 + /// + public string? materialid { get; set; } + /// + /// 工序编号 + /// + public string? processid { get; set; } + + /// + /// 工位编号 + /// + public string? workid { get; set; } + /// + /// 触发条件 + /// + public EnumTriggerEvent? triggerevent { get; set; } + } } diff --git a/QcMgr/Tnb.QcMgr.Entities/Enums/EnumTriggerType.cs b/QcMgr/Tnb.QcMgr.Entities/Enums/EnumTriggerType.cs index d1d954fb..9ef65818 100644 --- a/QcMgr/Tnb.QcMgr.Entities/Enums/EnumTriggerType.cs +++ b/QcMgr/Tnb.QcMgr.Entities/Enums/EnumTriggerType.cs @@ -12,4 +12,20 @@ namespace Tnb.QcMgr.Entities.Enums 周期触发 = 2, 事件触发 = 3 } + public enum EnumTriggerEvent + { + 首件检换模具 = 1, + 首件检换物料批号 = 2, + 首件检换物料编号 = 3, + 首件检新的生产任务 = 4, + 首件检生产任务暂停 = 5, + 出厂检按入厂频次 = 6, + 入厂检按物料频次 = 7, + 入厂检按物料编号 = 8, + 生产检定量 = 9, + 生产检定码 = 10, + 生产检产出频次 = 11, + 生产检固定次数 = 12, + 生产检按流转卡 = 13 + } } diff --git a/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs b/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs index 98eb180c..5ec7522e 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs @@ -14,6 +14,7 @@ using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.JsonSerialization; +using JNPF.Systems.Entitys.System; using JNPF.TaskScheduler; using JNPF.TaskScheduler.Entitys.Dto.TaskScheduler; using JNPF.TaskScheduler.Entitys.Model; @@ -21,6 +22,7 @@ using JNPF.VisualDev; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; +using Tnb.ProductionMgr.Entities; using Tnb.QcMgr.Entities; using Tnb.QcMgr.Entities.Dto; using Tnb.QcMgr.Entities.Entity; @@ -211,6 +213,8 @@ namespace Tnb.QcMgr QcCheckPlanD.attachment = item.attachment; QcCheckPlanD.isexec = item.isexec; QcCheckPlanD.custom = item.customer; + QcCheckPlanD.create_id = _userManager.UserId; + QcCheckPlanD.create_time = DateTime.Now; QcCheckPlanDs.Add(QcCheckPlanD); } } @@ -256,5 +260,105 @@ namespace Tnb.QcMgr throw Oops.Oh(ErrorCode.COM1000); } } + + /// + /// 根据计划生成任务 + /// + /// + /// + [HttpPost] + public async Task CreateTask(TriggerPlanEntity entity) + { + var Query = _repository.AsSugarClient().Queryable + ((a, b, c, d, e) => new object[] { + JoinType.Inner,a.id== b.mainid, + JoinType.Left,a.id == c.planid, + JoinType.Left,a.id == d.planid, + JoinType.Left,a.id == e.planid, + }); + GetQuery(Query, entity.triggerevent); + var list = await Query + .WhereIF(!string.IsNullOrEmpty(entity.materialid), (a, b, c, d, e) => c.materialid == entity.materialid) + .WhereIF(!string.IsNullOrEmpty(entity.processid), (a, b, c, d, e) => d.processid == entity.processid) + .WhereIF(!string.IsNullOrEmpty(entity.workid), (a, b, c, d, e) => e.workid == entity.workid).ToListAsync(); + if (list.Count > 0) + await SaveTask(list, entity); + } + private void GetQuery(ISugarQueryable Query, EnumTriggerEvent? enumTriggerEvent) + { + + var DictionaryData = _repository.AsSugarClient().Queryable + ((a, b) => new object[] { JoinType.Left, a.DictionaryTypeId == b.Id, }) + .Where((a, b) => b.FullName == "质量方案类型").ToList(); + var TriggerEvent = new QcTriggerEvent(); + if (enumTriggerEvent == EnumTriggerEvent.首件检换模具) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "首件检").First().Id && p.name == "换模具").First(); + if (enumTriggerEvent == EnumTriggerEvent.首件检换物料批号) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "首件检").First().Id && p.name == "换物料批号").First(); + if (enumTriggerEvent == EnumTriggerEvent.首件检换物料编号) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "首件检").First().Id && p.name == "换物料编号").First(); + if (enumTriggerEvent == EnumTriggerEvent.首件检新的生产任务) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "首件检").First().Id && p.name == "新的生产任务").First(); + if (enumTriggerEvent == EnumTriggerEvent.首件检生产任务暂停) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "首件检").First().Id && p.name == "生产任务暂停").First(); + if (enumTriggerEvent == EnumTriggerEvent.出厂检按入厂频次) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "出厂检").First().Id && p.name == "按入厂频次").First(); + if (enumTriggerEvent == EnumTriggerEvent.入厂检按物料编号) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "入厂检").First().Id && p.name == "按物料编号").First(); + if (enumTriggerEvent == EnumTriggerEvent.生产检定量) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "生产检").First().Id && p.name == "定量").First(); + if (enumTriggerEvent == EnumTriggerEvent.生产检定码) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "生产检").First().Id && p.name == "定码").First(); + if (enumTriggerEvent == EnumTriggerEvent.生产检产出频次) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "生产检").First().Id && p.name == "产出频次").First(); + if (enumTriggerEvent == EnumTriggerEvent.生产检固定次数) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "生产检").First().Id && p.name == "固定次数").First(); + if (enumTriggerEvent == EnumTriggerEvent.生产检按流转卡) + TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == "生产检").First().Id && p.name == "按流转卡").First(); + Query = Query.Where((a, b, c, d, e) => b.triggertype == "3" && b.content!.Contains(TriggerEvent.id)); + } + private async Task SaveTask(List planhs, TriggerPlanEntity entity) + { + var DictionaryData = _repository.AsSugarClient().Queryable + ((a, b) => new object[] { JoinType.Left, a.DictionaryTypeId == b.Id, }) + .Where((a, b) => b.FullName == "质检状态" && a.FullName == "待执行").First(); + var plands = await _repository.AsSugarClient().Queryable().Where(p => planhs.Select(p => p.id).ToList().Contains(p.mainid!)).ToListAsync(); + foreach (var planh in planhs) + { + var time = DateTime.Now; + QcCheckExecH qcCheckExecH = new QcCheckExecH(); + qcCheckExecH.id = SnowflakeIdHelper.NextId(); + qcCheckExecH.checktype = planh.checktype; + qcCheckExecH.status = DictionaryData.Id; + qcCheckExecH.tasktime = time.ToString("yyyy-MM-dd HH:mm:ss"); + qcCheckExecH.materialid = entity.materialid; + qcCheckExecH.processid = entity.processid; + qcCheckExecH.workid = entity.workid; + qcCheckExecH.create_id = _userManager.UserId; + qcCheckExecH.create_time = time; + var ExecDs = new List(); + foreach (var pland in plands.Where(p => p.mainid == planh.id).ToList()) + { + QcCheckExecD QcCheckExecD = new QcCheckExecD(); + QcCheckExecD.mainid = qcCheckExecH.id; + QcCheckExecD.extype = pland.extype; + QcCheckExecD.excontent = pland.excontent; + QcCheckExecD.check = pland.check; + QcCheckExecD.errorcause = pland.errorcause; + QcCheckExecD.errorlevel = pland.errorlevel; + QcCheckExecD.remark = pland.remark; + QcCheckExecD.attachment = pland.attachment; + QcCheckExecD.isexec = pland.isexec; + QcCheckExecD.custom = pland.custom; + QcCheckExecD.typeid = pland.typeid; + QcCheckExecD.itemid = pland.itemid; + QcCheckExecD.create_id = _userManager.UserId; + QcCheckExecD.create_time = time; + ExecDs.Add(QcCheckExecD); + } + await _repository.AsSugarClient().Insertable(qcCheckExecH).ExecuteCommandAsync(); + await _repository.AsSugarClient().Insertable(ExecDs).ExecuteCommandAsync(); + } + } } } diff --git a/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs b/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs index 11cff9c6..00b15904 100644 --- a/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs +++ b/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs @@ -54,16 +54,19 @@ namespace Tnb.TaskScheduler.Listener var DictionaryType = await repository.AsSugarClient().Queryable().Where(p => p.FullName == "质检状态").FirstAsync(); var DictionaryData = await repository.AsSugarClient().Queryable().Where(p => p.DictionaryTypeId == DictionaryType.Id && p.FullName == "待执行").FirstAsync(); + var time = DateTime.Now; foreach (var PrdMoTask in PrdMoTasks) { + QcCheckExecH qcCheckExecH = new QcCheckExecH(); qcCheckExecH.id = SnowflakeIdHelper.NextId(); qcCheckExecH.checktype = PlanH.checktype; qcCheckExecH.status = DictionaryData.Id; - qcCheckExecH.tasktime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + qcCheckExecH.tasktime = time.ToString("yyyy-MM-dd HH:mm:ss"); qcCheckExecH.materialid = PrdMoTask.material_id; qcCheckExecH.processid = PrdMoTask.process_id; qcCheckExecH.workid = PrdMoTask.workstation_id; + qcCheckExecH.create_time = time; var ExecDs = new List(); foreach (var PlanD in PlanDs) { @@ -80,6 +83,7 @@ namespace Tnb.TaskScheduler.Listener QcCheckExecD.custom = PlanD.custom; QcCheckExecD.typeid = PlanD.typeid; QcCheckExecD.itemid = PlanD.itemid; + QcCheckExecD.create_time = time; ExecDs.Add(QcCheckExecD); } await repository.AsSugarClient().Insertable(qcCheckExecH).ExecuteCommandAsync();