diff --git a/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs b/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs
index 060bc1a5..11cff9c6 100644
--- a/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs
+++ b/taskschedule/Tnb.TaskScheduler/Listener/QcTaskTimeWorker.cs
@@ -22,74 +22,80 @@ namespace Tnb.TaskScheduler.Listener
///
/// 生成质检任务
///
- public class QcTaskTimeWorker //: ISpareTimeWorker
+ public class QcTaskTimeWorker : ISpareTimeWorker
{
- private ISqlSugarClient repository => App.GetService();
+ private ISqlSugarRepository repository => App.GetService>();
- //[SpareTime("0 0 0 * * ?", "生成质检任务", ExecuteType = SpareTimeExecuteTypes.Serial, StartNow = false)]
+ [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)
+ {
}
}