|
@@ -169,10 +169,11 @@ namespace Business.Quartz
|
|
|
List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.Select(p => workOrds.Select(m => m.WorkOrd).Contains(p.WorkOrd) && p.Domain == "1001" && p.Status != "C" && p.IsActive);
|
|
List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.Select(p => workOrds.Select(m => m.WorkOrd).Contains(p.WorkOrd) && p.Domain == "1001" && p.Status != "C" && p.IsActive);
|
|
|
//获取物料对应的生产线信息:物料、工序对应的生产线
|
|
//获取物料对应的生产线信息:物料、工序对应的生产线
|
|
|
List<ProdLineDetail> prodLines = _prodLineDetail.Select(p => workOrds.Select(m => m.ItemNum).Contains(p.Part) && p.Domain == "1001" && p.IsActive);
|
|
List<ProdLineDetail> prodLines = _prodLineDetail.Select(p => workOrds.Select(m => m.ItemNum).Contains(p.Part) && p.Domain == "1001" && p.IsActive);
|
|
|
|
|
+ List<string> lines = prodLines.Select(p => p.Line).ToList();
|
|
|
//获取生产周期数据
|
|
//获取生产周期数据
|
|
|
- List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p=> workOrds.Select(m => m.ItemNum).Contains(p.ItemNum) && p.PlanDate >= earlist && p.Domain == "1001" && p.IsActive);
|
|
|
|
|
|
|
+ List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p=> lines.Contains(p.Line) && p.PlanDate >= earlist && p.Domain == "1001" && p.IsActive);
|
|
|
//获取当前日期往后的排产记录数据
|
|
//获取当前日期往后的排产记录数据
|
|
|
- List<ScheduleResultOpMaster> dbSchedules = _scheduleResultOpMaster.Select(p => workOrds.Select(m => m.ItemNum).Contains(p.ItemNum) && p.WorkDate >= earlist && p.Domain == "1001");
|
|
|
|
|
|
|
+ List<ScheduleResultOpMaster> dbSchedules = _scheduleResultOpMaster.Select(p => lines.Contains(p.Line) && p.WorkDate >= earlist && p.Domain == "1001");
|
|
|
//获取工作日历数据
|
|
//获取工作日历数据
|
|
|
calendars = _shopCalendarWorkCtr.Select(p=>p.Domain == "1001" && p.IsActive);
|
|
calendars = _shopCalendarWorkCtr.Select(p=>p.Domain == "1001" && p.IsActive);
|
|
|
//获取产线休息记录数据
|
|
//获取产线休息记录数据
|
|
@@ -185,15 +186,21 @@ namespace Business.Quartz
|
|
|
List<PeriodSequenceDet> periodSequenceDtls = new List<PeriodSequenceDet>();
|
|
List<PeriodSequenceDet> periodSequenceDtls = new List<PeriodSequenceDet>();
|
|
|
//排产记录表
|
|
//排产记录表
|
|
|
List<ScheduleResultOpMaster> scheduleMasters = new List<ScheduleResultOpMaster>();
|
|
List<ScheduleResultOpMaster> scheduleMasters = new List<ScheduleResultOpMaster>();
|
|
|
|
|
+ //排产结果
|
|
|
|
|
+ List<ScheduleResultOpMaster> allResults = new List<ScheduleResultOpMaster>();
|
|
|
|
|
+ allResults.AddRange(dbSchedules);
|
|
|
foreach (var item in workOrds)
|
|
foreach (var item in workOrds)
|
|
|
{
|
|
{
|
|
|
//当前工单的排产计划开始时间:年-月-日
|
|
//当前工单的排产计划开始时间:年-月-日
|
|
|
DateTime planStart = item.OrdDate.GetValueOrDefault().Date;
|
|
DateTime planStart = item.OrdDate.GetValueOrDefault().Date;
|
|
|
- //当前工单的对应的产线排产记录
|
|
|
|
|
- var curSchedules = dbSchedules.Where(p => p.ItemNum == item.ItemNum).ToList();
|
|
|
|
|
|
|
+ ////当前工单对应的产线数据
|
|
|
|
|
+ //var curLines = prodLines.Where(p => p.Part == item.ItemNum).Select(m=>m.Line).Distinct().ToList();
|
|
|
|
|
+ ////当前工单的对应的产线排产记录
|
|
|
|
|
+ //var curSchedules = dbSchedules.Where(p => curLines.Contains(p.Line)).ToList();
|
|
|
|
|
+ allResults.AddRange(scheduleMasters);
|
|
|
|
|
|
|
|
//工序预处理:确定每层级工序对应的产线
|
|
//工序预处理:确定每层级工序对应的产线
|
|
|
- List<WorkOrdRoutingDto> routingDtos = ProcPretreatment(item, workOrdRoutings.Where(p => p.WorkOrd == item.WorkOrd).ToList(), prodLines, curSchedules);
|
|
|
|
|
|
|
+ List<WorkOrdRoutingDto> routingDtos = ProcPretreatment(item, workOrdRoutings.Where(p => p.WorkOrd == item.WorkOrd).ToList(), prodLines, allResults);
|
|
|
|
|
|
|
|
//排产前的数据校验
|
|
//排产前的数据校验
|
|
|
if (routingDtos.Count() == 0)//没有维护主工序
|
|
if (routingDtos.Count() == 0)//没有维护主工序
|