From 6887ca9dedf82b71d573fa7e5fc3c0a3560e84ef Mon Sep 17 00:00:00 2001 From: qianjiawei <1184704771@qq.com> Date: Mon, 17 Jul 2023 09:42:15 +0800 Subject: [PATCH] 1 --- .../Listener/QcTaskTimeWorker.cs | 122 +++++++++--------- 1 file changed, 64 insertions(+), 58 deletions(-) diff --git a/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs b/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs index 2e9cd054..11cff9c6 100644 --- a/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs +++ b/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs @@ -24,72 +24,78 @@ namespace Tnb.TaskScheduler.Listener /// public class QcTaskTimeWorker : ISpareTimeWorker { - private ISqlSugarClient repository => App.GetService(); + private ISqlSugarRepository repository => App.GetService>(); [SpareTime("0 0 0 * * ?", "生成质检任务", ExecuteType = SpareTimeExecuteTypes.Serial, StartNow = false)] public async void CreateTask(SpareTimer timer, long count) { - var timeTaskEntity = await repository.Queryable().Where(p => p.Id == timer.WorkerName && p.EnabledMark == 1).FirstAsync(); - if (timeTaskEntity == null) - return; - ContentModel? comtentModel = timeTaskEntity.ExecuteContent.ToObject(); - var PlanH = await repository.Queryable().Where(p => p.id == comtentModel.parameter.Where(p => p.field == "id").First().value).FirstAsync(); - var PlanDs = await repository.Queryable().Where(p => p.mainid == PlanH.id).ToListAsync(); - if (PlanH == null || PlanDs.Count == 0) - return; - var PlanMaterials = repository.Queryable().Where(p => p.planid == PlanH.id).Select(p => p.materialid).ToList(); - var PlanProcesss = repository.Queryable().Where(p => p.planid == PlanH.id).Select(p => p.processid).ToList(); - var PlanWork = repository.Queryable().Where(p => p.planid == PlanH.id).Select(p => p.workid).ToList(); - //物料工序工位不能同时为空 - if (PlanMaterials.Count == 0 && PlanProcesss.Count == 0 && PlanWork.Count == 0) - return; - var PrdMoTasks = await repository.Queryable() - .WhereIF(PlanMaterials.Count > 0, p => PlanMaterials.Contains(p.material_id)) - .WhereIF(PlanProcesss.Count > 0, p => PlanProcesss.Contains(p.process_id)) - .WhereIF(PlanWork.Count > 0, p => PlanWork.Contains(p.workstation_id)) - .Where(p => p.mo_task_status == "InProgress")//进行中 - .ToListAsync(); - - var DictionaryType = await repository.Queryable().Where(p => p.FullName == "质检状态").FirstAsync(); - var DictionaryData = await repository.Queryable().Where(p => p.DictionaryTypeId == DictionaryType.Id && p.FullName == "待执行").FirstAsync(); - foreach (var PrdMoTask in PrdMoTasks) + try { - 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.materialid = PrdMoTask.material_id; - qcCheckExecH.processid = PrdMoTask.process_id; - qcCheckExecH.workid = PrdMoTask.workstation_id; - var ExecDs = new List(); - foreach (var PlanD in PlanDs) + var timeTaskEntity = await repository.AsSugarClient().Queryable().Where(p => p.Id == timer.WorkerName && p.EnabledMark == 1).FirstAsync(); + if (timeTaskEntity == null) + return; + ContentModel? comtentModel = timeTaskEntity.ExecuteContent.ToObject(); + var PlanH = await repository.AsSugarClient().Queryable().Where(p => p.id == comtentModel.parameter.Where(p => p.field == "id").First().value).FirstAsync(); + var PlanDs = await repository.AsSugarClient().Queryable().Where(p => p.mainid == PlanH.id).ToListAsync(); + if (PlanH == null || PlanDs.Count == 0) + return; + var PlanMaterials = repository.AsSugarClient().Queryable().Where(p => p.planid == PlanH.id).Select(p => p.materialid).ToList(); + var PlanProcesss = repository.AsSugarClient().Queryable().Where(p => p.planid == PlanH.id).Select(p => p.processid).ToList(); + var PlanWork = repository.AsSugarClient().Queryable().Where(p => p.planid == PlanH.id).Select(p => p.workid).ToList(); + //物料工序工位不能同时为空 + if (PlanMaterials.Count == 0 && PlanProcesss.Count == 0 && PlanWork.Count == 0) + return; + var PrdMoTasks = await repository.AsSugarClient().Queryable() + .WhereIF(PlanMaterials.Count > 0, p => PlanMaterials.Contains(p.material_id)) + .WhereIF(PlanProcesss.Count > 0, p => PlanProcesss.Contains(p.process_id)) + .WhereIF(PlanWork.Count > 0, p => PlanWork.Contains(p.workstation_id)) + .Where(p => p.mo_task_status == "InProgress")//进行中 + .ToListAsync(); + + 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(); + foreach (var PrdMoTask in PrdMoTasks) { - 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; - ExecDs.Add(QcCheckExecD); + 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.materialid = PrdMoTask.material_id; + qcCheckExecH.processid = PrdMoTask.process_id; + qcCheckExecH.workid = PrdMoTask.workstation_id; + var ExecDs = new List(); + foreach (var PlanD in PlanDs) + { + 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; + ExecDs.Add(QcCheckExecD); + } + await repository.AsSugarClient().Insertable(qcCheckExecH).ExecuteCommandAsync(); + await repository.AsSugarClient().Insertable(ExecDs).ExecuteCommandAsync(); + } + //只执行一次的 修改EnabledMark字段 + var InterfaceParameter = comtentModel.parameter.Where(p => p.field == "doonce").FirstOrDefault(); + if (InterfaceParameter != null && bool.Parse(InterfaceParameter.value)) + { + timeTaskEntity.EnabledMark = 0; + await repository.AsSugarClient().Updateable(timeTaskEntity).ExecuteCommandAsync(); + SpareTime.Cancel(timeTaskEntity.Id); } - await repository.Insertable(qcCheckExecH).ExecuteCommandAsync(); - await repository.Insertable(ExecDs).ExecuteCommandAsync(); } - //只执行一次的 修改EnabledMark字段 - var InterfaceParameter = comtentModel.parameter.Where(p => p.field == "doonce").FirstOrDefault(); - if (InterfaceParameter != null && bool.Parse(InterfaceParameter.value)) - { - timeTaskEntity.EnabledMark = 0; - await repository.Updateable(timeTaskEntity).ExecuteCommandAsync(); - SpareTime.Cancel(timeTaskEntity.Id); + catch (Exception) + { } }