|
|
@@ -2,6 +2,8 @@
|
|
|
using Business.ResourceExamineManagement.Dto;
|
|
|
using Bussiness.Model.Production;
|
|
|
using Bussiness.Model.Tech;
|
|
|
+using Bussiness.MongoModel.Production;
|
|
|
+using Bussiness.MongoModel.Tech;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
@@ -21,47 +23,47 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <summary>
|
|
|
/// 工艺路径
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mes_technique> _mes_technique;
|
|
|
+ private readonly IMongoDB<mo_mes_technique> _mes_technique;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工序
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mes_process> _mes_process;
|
|
|
+ private readonly IMongoDB<mo_mes_process> _mes_process;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工艺关联工序
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mes_tech_process> _mes_tech_process;
|
|
|
+ private readonly IMongoDB<mo_mes_tech_process> _mes_tech_process;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工作日历
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mes_work_calendar> _mes_work_calendar;
|
|
|
+ private readonly IMongoDB<mo_mes_work_calendar> _mes_work_calendar;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工作日历明细
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mes_work_calendar_list> _mes_work_calendar_list;
|
|
|
+ private readonly IMongoDB<mo_mes_work_calendar_list> _mes_work_calendar_list;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工艺工序关联工位
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mes_tech_proc_workshop> _mes_tech_proc_workshop;
|
|
|
+ private readonly IMongoDB<mo_mes_tech_proc_workshop> _mes_tech_proc_workshop;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 排程占用记录
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mes_schedule_occupy> _mes_schedule_occupy;
|
|
|
+ private readonly IMongoDB<mo_mes_schedule_occupy> _mes_schedule_occupy;
|
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
|
/// 构造函数
|
|
|
/// </summary>
|
|
|
public ProductExamineAppService(
|
|
|
- IMongoDB<mes_technique> mes_technique,
|
|
|
- IMongoDB<mes_process> mes_process,
|
|
|
- IMongoDB<mes_tech_process> mes_tech_process,
|
|
|
- IMongoDB<mes_tech_proc_workshop> mes_tech_proc_workshop
|
|
|
+ IMongoDB<mo_mes_technique> mes_technique,
|
|
|
+ IMongoDB<mo_mes_process> mes_process,
|
|
|
+ IMongoDB<mo_mes_tech_process> mes_tech_process,
|
|
|
+ IMongoDB<mo_mes_tech_proc_workshop> mes_tech_proc_workshop
|
|
|
)
|
|
|
{
|
|
|
_mes_technique = mes_technique;
|
|
|
@@ -79,42 +81,36 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
if (param.packages <= 0)
|
|
|
{
|
|
|
- var rtn = 10 * param.packages;
|
|
|
- return rtn;
|
|
|
- //throw new NotImplementedException("产能计算参数有误!");
|
|
|
+ throw new NotImplementedException("产能计算参数有误!");
|
|
|
}
|
|
|
#region 1、数据准备
|
|
|
//1.1、获取工艺路径数据
|
|
|
- mes_technique tech = _mes_technique.Find(p => p.bom == param.bom_number && p.bomver == param.version && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.FirstOrDefault();
|
|
|
+ mo_mes_technique tech = _mes_technique.Find(p => p.bom == param.bom_number && p.bomver == param.version && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.FirstOrDefault();
|
|
|
if (tech == null)
|
|
|
{
|
|
|
- var rtn = 10 * param.packages;
|
|
|
- return rtn;
|
|
|
- //throw new NotImplementedException("请先配置工艺路径!");
|
|
|
+ throw new NotImplementedException("请先配置工艺路径!");
|
|
|
}
|
|
|
|
|
|
//1.2、获取工艺路径关联工序数据
|
|
|
- List<mes_tech_process> tech_Processes = await _mes_tech_process.GetManyByCondition(p => p.tech_id == tech.Id && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted);
|
|
|
+ List<mo_mes_tech_process> tech_Processes = await _mes_tech_process.GetManyByCondition(p => p.tech_id == tech.mysql_id && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted);
|
|
|
if (tech_Processes.Count == 0)
|
|
|
{
|
|
|
- var rtn = 10 * param.packages;
|
|
|
- return rtn;
|
|
|
- //throw new NotImplementedException("请先配置工序!");
|
|
|
+ throw new NotImplementedException("请先配置工序!");
|
|
|
}
|
|
|
|
|
|
//1.3、获取当前工艺路径下的工序数据
|
|
|
//FilterDefinition<mes_process> filter = Builders<mes_process>.Filter.In(s => s.Id, tech_Processes.Select(m => m.proc_id).ToList());
|
|
|
//List<mes_process> process = await _mes_process.GetManyByIds(filter);
|
|
|
List<long> procIds = tech_Processes.Select(m => m.proc_id.GetValueOrDefault()).ToList();
|
|
|
- List<mes_process> process = await _mes_process.GetManyByCondition(p => procIds.Contains(p.Id) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted);
|
|
|
+ List<mo_mes_process> process = await _mes_process.GetManyByCondition(p => procIds.Contains(p.mysql_id) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted);
|
|
|
|
|
|
//1.3、获取工艺工序关联工位信息
|
|
|
- List<long> techProcIds = tech_Processes.Select(m => m.Id).ToList();
|
|
|
- List<mes_tech_proc_workshop> tech_Proc_Workshops = await _mes_tech_proc_workshop.GetManyByCondition(p => techProcIds.Contains(p.tech_proc_id.Value) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted);
|
|
|
+ List<long> techProcIds = tech_Processes.Select(m => m.mysql_id).ToList();
|
|
|
+ List<mo_mes_tech_proc_workshop> tech_Proc_Workshops = await _mes_tech_proc_workshop.GetManyByCondition(p => techProcIds.Contains(p.tech_proc_id.Value) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted);
|
|
|
#endregion
|
|
|
|
|
|
//1、获取工艺路径下的第一层级工序:目前只考虑第一层级
|
|
|
- List<mes_tech_process> fistLevels = tech_Processes.Where(p => p.parentprocid == tech.Id).ToList();
|
|
|
+ List<mo_mes_tech_process> fistLevels = tech_Processes.Where(p => p.parentprocid == tech.mysql_id).ToList();
|
|
|
if (fistLevels.Count == 0)
|
|
|
{
|
|
|
throw new NotImplementedException("当前工艺路径没有配置工序,请调整!");
|
|
|
@@ -132,7 +128,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="processes">工艺关联工序list</param>
|
|
|
/// <param name="packages">生产件数</param>
|
|
|
/// <returns></returns>
|
|
|
- private List<TechProcDto> TechProcPretreatment(List<mes_tech_process> processes,int packages)
|
|
|
+ private List<TechProcDto> TechProcPretreatment(List<mo_mes_tech_process> processes,int packages)
|
|
|
{
|
|
|
//工艺路径预处理dto
|
|
|
List<TechProcDto> techProcDtos = new List<TechProcDto>();
|
|
|
@@ -142,11 +138,11 @@ namespace Business.ResourceExamineManagement
|
|
|
//获取起点工序
|
|
|
var startProcs = processes.Where(p => !nextProcIds.Contains(p.proc_id.GetValueOrDefault())).ToList();
|
|
|
//递归处理工序返回值
|
|
|
- List<mes_tech_process> rtnList;
|
|
|
+ List<mo_mes_tech_process> rtnList;
|
|
|
for (int i = 0; i < startProcs.Count; i++)
|
|
|
{
|
|
|
dto = new TechProcDto();
|
|
|
- rtnList = new List<mes_tech_process>();
|
|
|
+ rtnList = new List<mo_mes_tech_process>();
|
|
|
GetNextProc(startProcs[i], processes, rtnList);
|
|
|
dto.serialno = i + 1;
|
|
|
dto.processes = rtnList;
|
|
|
@@ -164,7 +160,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="proc"></param>
|
|
|
/// <param name="processes"></param>
|
|
|
/// <param name="rtnList"></param>
|
|
|
- private void GetNextProc(mes_tech_process proc, List<mes_tech_process> processes, List<mes_tech_process> rtnList)
|
|
|
+ private void GetNextProc(mo_mes_tech_process proc, List<mo_mes_tech_process> processes, List<mo_mes_tech_process> rtnList)
|
|
|
{
|
|
|
rtnList.Add(proc);
|
|
|
//下一工序id为null,终止
|
|
|
@@ -187,7 +183,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="Processes"></param>
|
|
|
/// <param name="packages"></param>
|
|
|
/// <returns></returns>
|
|
|
- private List<StartTimeDto> CalcTakeTimeByLq(List<mes_tech_process> Processes, int packages)
|
|
|
+ private List<StartTimeDto> CalcTakeTimeByLq(List<mo_mes_tech_process> Processes, int packages)
|
|
|
{
|
|
|
//工序需要等待时间记录
|
|
|
List<StartTimeDto> starts = new List<StartTimeDto>();
|
|
|
@@ -217,7 +213,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="quantity">LeadQuantity to Start Next</param>
|
|
|
/// <param name="packages">件数</param>
|
|
|
/// <returns></returns>
|
|
|
- private StartTimeDto CalcProcTakeTimeByLq(mes_tech_process proc, decimal quantity, int packages)
|
|
|
+ private StartTimeDto CalcProcTakeTimeByLq(mo_mes_tech_process proc, decimal quantity, int packages)
|
|
|
{
|
|
|
//记录当前工序耗时
|
|
|
StartTimeDto dto = new StartTimeDto();
|
|
|
@@ -261,7 +257,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="Processes"></param>
|
|
|
/// <param name="packages"></param>
|
|
|
/// <returns></returns>
|
|
|
- private List<StartTimeDto> CalcTakeTimeByLqt(List<mes_tech_process> Processes, int packages)
|
|
|
+ private List<StartTimeDto> CalcTakeTimeByLqt(List<mo_mes_tech_process> Processes, int packages)
|
|
|
{
|
|
|
//工序需要等待时间记录
|
|
|
List<StartTimeDto> starts = new List<StartTimeDto>();
|
|
|
@@ -296,7 +292,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="proc"></param>
|
|
|
/// <param name="packages">件数</param>
|
|
|
/// <returns></returns>
|
|
|
- private decimal CalcProcTakeTime(mes_tech_process proc, int packages)
|
|
|
+ private decimal CalcProcTakeTime(mo_mes_tech_process proc, int packages)
|
|
|
{
|
|
|
//当前工序生产时间
|
|
|
decimal takeTiem = 0.00m;
|