|
|
@@ -1,4 +1,5 @@
|
|
|
-using Bussiness.Model.MES.IC;
|
|
|
+using Business.Business.Dto;
|
|
|
+using Bussiness.Model.MES.IC;
|
|
|
using Bussiness.Model.Production;
|
|
|
using Bussiness.Model.SRM;
|
|
|
using System;
|
|
|
@@ -8,6 +9,7 @@ using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
using Volo.Abp.Application.Services;
|
|
|
using Volo.Abp.Domain.Repositories;
|
|
|
+using Volo.Abp.Validation.Localization;
|
|
|
|
|
|
namespace Business.Quartz
|
|
|
{
|
|
|
@@ -93,26 +95,31 @@ namespace Business.Quartz
|
|
|
/// </summary>
|
|
|
public async Task DoProductShcedule()
|
|
|
{
|
|
|
- //1、获取工单:Status !='C'且 IsActive == 1
|
|
|
- List<WorkOrdMaster> workOrds = _workOrdMaster.GetListAsync(p=> p.Domain == "1001" && p.Status !="C" && p.IsActive == 1).Result;
|
|
|
- //1.1 过滤已排产的工单
|
|
|
-
|
|
|
+ //1、获取需要排产的工单:Status为空且IsActive==1
|
|
|
+ List<WorkOrdMaster> workOrds = _workOrdMaster.GetListAsync(p => string.IsNullOrEmpty(p.Status) && p.IsActive ==1).Result;
|
|
|
if (workOrds.Count == 0)
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
- //1.2、工单按照优先级排序:Priority从小到大排序
|
|
|
- workOrds = workOrds.OrderBy(p => p.Priority).ToList();
|
|
|
- //2、获取工单工艺路径数据
|
|
|
+ //2、获取数据
|
|
|
+ //获取工单工艺路径数据
|
|
|
List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.GetListAsync(p => workOrds.Select(m=>m.WorkOrd).Contains(p.WorkOrd) && p.Domain == "1001" && p.Status != "C" && p.IsActive == 1).Result;
|
|
|
- //3、获取物料对应的生产线信息
|
|
|
+ //获取物料对应的生产线信息:物料、工序对应的生产线
|
|
|
List<ProdLineDetail> prodLineDetails = _prodLineDetail.GetListAsync(p => workOrds.Select(m => m.ItemNum).Contains(p.Part) && p.Domain == "1001" && p.Status != "C" && p.IsActive == 1).Result;
|
|
|
- //4、获取工单物料明细
|
|
|
- List<WorkOrdDetail> workOrdDetails = _workOrdDetail.GetListAsync(p => workOrds.Select(m=>m.WorkOrd).Contains(p.WorkOrd) && p.Domain == "1001" && p.Status != "C" && p.IsActive == 1).Result;
|
|
|
- //5、获取物料的库存数据
|
|
|
- List<InvMaster> invMasters = _invMaster.GetListAsync(p => workOrds.Select(m => m.ItemNum).Contains(p.ItemNum) && p.Domain == "1001" && p.IsActive == 1).Result;
|
|
|
- //6、判断当前工单物料是否齐套
|
|
|
+ //获取当前日期往后的排产记录数据
|
|
|
+ List<ScheduleResultOpMaster> schedules = _scheduleResultOpMaster.GetListAsync(p=>workOrds.Select(m=>m.ItemNum).Contains(p.ItemNum) && p.Domain == "1001").Result;
|
|
|
+
|
|
|
+ //3、排产
|
|
|
+ //排产结果(记录所有工序的排产情况)
|
|
|
+ List<ScheduleResultOpMaster> scheduleResults = new List<ScheduleResultOpMaster>();
|
|
|
+ //生产周期(记录最后一个工序的排产情况)
|
|
|
+ List<PeriodSequenceDet> periodsDet = new List<PeriodSequenceDet>();
|
|
|
+ foreach (var item in workOrds)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|