This commit is contained in:
qianjiawei
2023-07-20 15:45:20 +08:00
parent b5e3db8acf
commit f0e415a3dd
4 changed files with 146 additions and 1 deletions

View File

@@ -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; }
}
}

View File

@@ -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
}
}

View File

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

View File

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