1
This commit is contained in:
@@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 物料方案编号
|
||||
/// </summary>
|
||||
public string? materialid { get; set; }
|
||||
/// <summary>
|
||||
/// 工序编号
|
||||
/// </summary>
|
||||
public string? processid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工位编号
|
||||
/// </summary>
|
||||
public string? workid { get; set; }
|
||||
/// <summary>
|
||||
/// 触发条件
|
||||
/// </summary>
|
||||
public EnumTriggerEvent? triggerevent { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据计划生成任务
|
||||
/// </summary>
|
||||
/// <param name="TriggerPlanEntity"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task CreateTask(TriggerPlanEntity entity)
|
||||
{
|
||||
var Query = _repository.AsSugarClient().Queryable<QcCheckPlanH, QcCheckPlanAdd, QcCheckPlanMaterial, QcCheckPlanProcess, QcCheckPlanWork>
|
||||
((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<QcCheckPlanH, QcCheckPlanAdd, QcCheckPlanMaterial, QcCheckPlanProcess, QcCheckPlanWork> Query, EnumTriggerEvent? enumTriggerEvent)
|
||||
{
|
||||
|
||||
var DictionaryData = _repository.AsSugarClient().Queryable<DictionaryDataEntity, DictionaryTypeEntity>
|
||||
((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<QcTriggerEvent>().Where(p => p.type == DictionaryData.Where(p => p.FullName == "首件检").First().Id && p.name == "换模具").First();
|
||||
if (enumTriggerEvent == EnumTriggerEvent.首件检换物料批号)
|
||||
TriggerEvent = _repository.AsSugarClient().Queryable<QcTriggerEvent>().Where(p => p.type == DictionaryData.Where(p => p.FullName == "首件检").First().Id && p.name == "换物料批号").First();
|
||||
if (enumTriggerEvent == EnumTriggerEvent.首件检换物料编号)
|
||||
TriggerEvent = _repository.AsSugarClient().Queryable<QcTriggerEvent>().Where(p => p.type == DictionaryData.Where(p => p.FullName == "首件检").First().Id && p.name == "换物料编号").First();
|
||||
if (enumTriggerEvent == EnumTriggerEvent.首件检新的生产任务)
|
||||
TriggerEvent = _repository.AsSugarClient().Queryable<QcTriggerEvent>().Where(p => p.type == DictionaryData.Where(p => p.FullName == "首件检").First().Id && p.name == "新的生产任务").First();
|
||||
if (enumTriggerEvent == EnumTriggerEvent.首件检生产任务暂停)
|
||||
TriggerEvent = _repository.AsSugarClient().Queryable<QcTriggerEvent>().Where(p => p.type == DictionaryData.Where(p => p.FullName == "首件检").First().Id && p.name == "生产任务暂停").First();
|
||||
if (enumTriggerEvent == EnumTriggerEvent.出厂检按入厂频次)
|
||||
TriggerEvent = _repository.AsSugarClient().Queryable<QcTriggerEvent>().Where(p => p.type == DictionaryData.Where(p => p.FullName == "出厂检").First().Id && p.name == "按入厂频次").First();
|
||||
if (enumTriggerEvent == EnumTriggerEvent.入厂检按物料编号)
|
||||
TriggerEvent = _repository.AsSugarClient().Queryable<QcTriggerEvent>().Where(p => p.type == DictionaryData.Where(p => p.FullName == "入厂检").First().Id && p.name == "按物料编号").First();
|
||||
if (enumTriggerEvent == EnumTriggerEvent.生产检定量)
|
||||
TriggerEvent = _repository.AsSugarClient().Queryable<QcTriggerEvent>().Where(p => p.type == DictionaryData.Where(p => p.FullName == "生产检").First().Id && p.name == "定量").First();
|
||||
if (enumTriggerEvent == EnumTriggerEvent.生产检定码)
|
||||
TriggerEvent = _repository.AsSugarClient().Queryable<QcTriggerEvent>().Where(p => p.type == DictionaryData.Where(p => p.FullName == "生产检").First().Id && p.name == "定码").First();
|
||||
if (enumTriggerEvent == EnumTriggerEvent.生产检产出频次)
|
||||
TriggerEvent = _repository.AsSugarClient().Queryable<QcTriggerEvent>().Where(p => p.type == DictionaryData.Where(p => p.FullName == "生产检").First().Id && p.name == "产出频次").First();
|
||||
if (enumTriggerEvent == EnumTriggerEvent.生产检固定次数)
|
||||
TriggerEvent = _repository.AsSugarClient().Queryable<QcTriggerEvent>().Where(p => p.type == DictionaryData.Where(p => p.FullName == "生产检").First().Id && p.name == "固定次数").First();
|
||||
if (enumTriggerEvent == EnumTriggerEvent.生产检按流转卡)
|
||||
TriggerEvent = _repository.AsSugarClient().Queryable<QcTriggerEvent>().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<QcCheckPlanH> planhs, TriggerPlanEntity entity)
|
||||
{
|
||||
var DictionaryData = _repository.AsSugarClient().Queryable<DictionaryDataEntity, DictionaryTypeEntity>
|
||||
((a, b) => new object[] { JoinType.Left, a.DictionaryTypeId == b.Id, })
|
||||
.Where((a, b) => b.FullName == "质检状态" && a.FullName == "待执行").First();
|
||||
var plands = await _repository.AsSugarClient().Queryable<QcCheckPlanD>().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<QcCheckExecD>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,16 +54,19 @@ namespace Tnb.TaskScheduler.Listener
|
||||
|
||||
var DictionaryType = await repository.AsSugarClient().Queryable<DictionaryTypeEntity>().Where(p => p.FullName == "质检状态").FirstAsync();
|
||||
var DictionaryData = await repository.AsSugarClient().Queryable<DictionaryDataEntity>().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<QcCheckExecD>();
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user