|
|
@@ -29,6 +29,7 @@ using XCZ.Extensions;
|
|
|
using System.ComponentModel.Design;
|
|
|
using Volo.Abp.Validation.StringValues;
|
|
|
using System.Runtime.CompilerServices;
|
|
|
+using MongoDB.Driver;
|
|
|
|
|
|
namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
@@ -108,6 +109,9 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="icbom"></param>
|
|
|
public ResourceExamineAppService(
|
|
|
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<ic_item> ic_item,
|
|
|
IMongoDB<ic_bom> ic_bom,
|
|
|
IMongoDB<ic_bom_child> ic_bom_child,
|
|
|
@@ -120,6 +124,9 @@ namespace Business.ResourceExamineManagement
|
|
|
)
|
|
|
{
|
|
|
_mes_technique = mes_technique;
|
|
|
+ _mes_process = mes_process;
|
|
|
+ _mes_tech_process = mes_tech_process;
|
|
|
+ _mes_tech_proc_workshop = mes_tech_proc_workshop;
|
|
|
_ic_item = ic_item;
|
|
|
_ic_bom = ic_bom;
|
|
|
_ic_bom_child = ic_bom_child;
|
|
|
@@ -174,8 +181,8 @@ namespace Business.ResourceExamineManagement
|
|
|
public async Task<PschedDto> ReceiveResult(SeorderentryDto input)
|
|
|
{
|
|
|
//测试代码
|
|
|
- await test();
|
|
|
-
|
|
|
+ //await test();
|
|
|
+ await ProductiveExamine(1733221167209762816,100,1000);
|
|
|
return null;
|
|
|
throw new NotImplementedException();
|
|
|
|
|
|
@@ -203,10 +210,12 @@ namespace Business.ResourceExamineManagement
|
|
|
List<mes_tech_process> tech_Processes = _mes_tech_process.GetManyByCondition(x => x.tech_id == tech_id).Result;
|
|
|
|
|
|
//1.3、获取当前工艺路径下的工序数据
|
|
|
- List<mes_process> process = _mes_process.GetManyByCondition(p => p.Id.IsIn(tech_Processes.Select(m => m.proc_id))).Result;
|
|
|
+ FilterDefinition<mes_process> filter = Builders<mes_process>.Filter.In(s => s.Id, tech_Processes.Select(m => m.proc_id).ToList());
|
|
|
+ List<mes_process> process = _mes_process.GetManyByIds(filter).Result;
|
|
|
|
|
|
//1.3、获取工艺工序关联工位信息
|
|
|
- List<mes_tech_proc_workshop> tech_Proc_Workshops = _mes_tech_proc_workshop.GetManyByCondition(x => x.tech_proc_id.IsIn<long>(tech_Processes.Select(m => m.Id))).Result;
|
|
|
+ FilterDefinition<mes_tech_proc_workshop> filter1 = Builders<mes_tech_proc_workshop>.Filter.In(s => s.tech_proc_id, tech_Processes.Select(m => m.Id).ToList());
|
|
|
+ List<mes_tech_proc_workshop> tech_Proc_Workshops = _mes_tech_proc_workshop.GetManyByIds(filter1).Result;
|
|
|
|
|
|
//1.4、获取工位占用情况
|
|
|
//List<mes_schedule_occupy> schedule_Occupies = _mes_schedule_occupy.GetManyByCondition().Result;
|
|
|
@@ -287,15 +296,15 @@ namespace Business.ResourceExamineManagement
|
|
|
//计算完成,进行下一次循环
|
|
|
continue;
|
|
|
}
|
|
|
- //节拍时间:流水线,从流水线起始工序开始计算
|
|
|
- if (item.preprocid != null)
|
|
|
+ //节拍时间:流水线,从流水线最后工序开始计算
|
|
|
+ if (item.nextprocid != null)
|
|
|
{
|
|
|
- //上-工序Id不为null,说明不是流水线起始工序,进行下一次循环
|
|
|
+ //下-工序Id不为null,说明不是流水线最终工序,进行下一次循环
|
|
|
continue;
|
|
|
}
|
|
|
List<mes_tech_process> allProcess = new List<mes_tech_process>();
|
|
|
- //递归,获取起始工序的后续工序
|
|
|
- GetNextProcess(tech_Processes, item, allProcess);
|
|
|
+ //递归,获取最终工序的上一工序
|
|
|
+ GetPreProcess(tech_Processes, item, allProcess);
|
|
|
//sum(CT)
|
|
|
decimal sumCT = allProcess.Sum(p => p.ct.Value);
|
|
|
//max(CT)
|
|
|
@@ -317,14 +326,13 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="tech_Processes"></param>
|
|
|
/// <param name="item"></param>
|
|
|
/// <returns></returns>
|
|
|
- private void GetNextProcess(List<mes_tech_process> tech_Processes, mes_tech_process item, List<mes_tech_process> allProcess)
|
|
|
+ private void GetPreProcess(List<mes_tech_process> tech_Processes, mes_tech_process item, List<mes_tech_process> allProcess)
|
|
|
{
|
|
|
allProcess.Add(item);
|
|
|
- //判断下一工序id是否为null
|
|
|
- if (item.nextprocid != null)
|
|
|
- {
|
|
|
- var nextProc = tech_Processes.FirstOrDefault(p => p.proc_id == item.nextprocid);
|
|
|
- GetNextProcess(tech_Processes, nextProc, allProcess);
|
|
|
+ //获取上一工序
|
|
|
+ var preProc = tech_Processes.FirstOrDefault(p => p.nextprocid == item.proc_id);
|
|
|
+ if (preProc != null) {
|
|
|
+ GetPreProcess(tech_Processes, preProc, allProcess);
|
|
|
}
|
|
|
}
|
|
|
|