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();