|
|
@@ -3,6 +3,7 @@ using Business.Core.Utilities;
|
|
|
using Business.Domain;
|
|
|
using Business.Dto;
|
|
|
using Business.EntityFrameworkCore.SqlRepositories;
|
|
|
+using Business.ResourceExamineManagement.Dto;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Collections.Immutable;
|
|
|
@@ -97,6 +98,10 @@ namespace Business.ResourceExamineManagement
|
|
|
/// </summary>
|
|
|
private List<HolidayMaster> holidays;
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 工厂id
|
|
|
+ /// </summary>
|
|
|
+ private string domain = "";
|
|
|
#endregion
|
|
|
|
|
|
#region 构造函数
|
|
|
@@ -139,20 +144,23 @@ namespace Business.ResourceExamineManagement
|
|
|
public async void DoExt()
|
|
|
{
|
|
|
List<WorkOrdMaster> workOrds = new List<WorkOrdMaster>();
|
|
|
- await DoProductShcedule(workOrds);
|
|
|
+ domain = "1001";//定时任务跑资源检查,需要定义工厂id
|
|
|
+ await DoProductShcedule(workOrds, domain);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 生产排产
|
|
|
/// </summary>
|
|
|
/// <param name="workOrds">工单:定时任务执行时count=0;资源检查调用count>0</param>
|
|
|
+ /// <param name="factoryid">工单的工厂id</param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task DoProductShcedule(List<WorkOrdMaster> workOrds)
|
|
|
+ public async Task DoProductShcedule(List<WorkOrdMaster> workOrds,string factoryid)
|
|
|
{
|
|
|
+ domain = factoryid;
|
|
|
if (workOrds.Count == 0)//定时任务调用时,需要获取工单数据
|
|
|
{
|
|
|
//1、获取需要排产的工单:Status为空且IsActive==1
|
|
|
- workOrds = _workOrdMaster.Select(p => string.IsNullOrEmpty(p.Status) && p.IsActive);
|
|
|
+ workOrds = _workOrdMaster.Select(p => string.IsNullOrEmpty(p.Status) && p.IsActive && p.Domain == domain);
|
|
|
}
|
|
|
if (workOrds.Count == 0)//没有工单需要排产
|
|
|
{
|
|
|
@@ -170,20 +178,20 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
//2、获取数据
|
|
|
//获取工单工艺路径数据
|
|
|
- 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 == domain && 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 == domain && p.IsActive);
|
|
|
List<string> lines = prodLines.Select(p => p.Line).ToList();
|
|
|
//获取生产周期数据
|
|
|
- List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => lines.Contains(p.Line) && p.PlanDate >= earlist && p.Domain == "1001" && p.IsActive);
|
|
|
+ List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => lines.Contains(p.Line) && p.PlanDate >= earlist && p.Domain == domain && p.IsActive);
|
|
|
//获取当前日期往后的排产记录数据
|
|
|
- List<ScheduleResultOpMaster> dbSchedules = _scheduleResultOpMaster.Select(p => lines.Contains(p.Line) && p.WorkDate >= earlist && p.Domain == "1001");
|
|
|
+ List<ScheduleResultOpMaster> dbSchedules = _scheduleResultOpMaster.Select(p => lines.Contains(p.Line) && p.WorkDate >= earlist && p.Domain == domain);
|
|
|
//获取工作日历数据
|
|
|
- calendars = _shopCalendarWorkCtr.Select(p => p.Domain == "1001" && p.IsActive);
|
|
|
+ calendars = _shopCalendarWorkCtr.Select(p => p.Domain == domain && p.IsActive);
|
|
|
//获取产线休息记录数据
|
|
|
- qualityLines = _qualityLineWorkDetail.Select(p => p.Domain == "1001" && p.IsActive);
|
|
|
+ qualityLines = _qualityLineWorkDetail.Select(p => p.Domain == domain && p.IsActive);
|
|
|
//获取节假日记录数据
|
|
|
- holidays = _holidayMaster.Select(p => p.Domain == "1001" && p.IsActive && p.Dated >= earlist);
|
|
|
+ holidays = _holidayMaster.Select(p => p.Domain == domain && p.IsActive && p.Dated >= earlist);
|
|
|
|
|
|
//3、排产
|
|
|
//生产周期
|
|
|
@@ -329,7 +337,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//记录生产周期
|
|
|
curSequences.Add(new PeriodSequenceDet
|
|
|
{
|
|
|
- Domain = "1001",
|
|
|
+ Domain = domain,
|
|
|
Line = item.Line,
|
|
|
ItemNum = workOrd.ItemNum,
|
|
|
PlanDate = workStartTime.Date,
|
|
|
@@ -344,7 +352,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//记录排产记录
|
|
|
curScheduleRsts.Add(new ScheduleResultOpMaster
|
|
|
{
|
|
|
- Domain = "1001",
|
|
|
+ Domain = domain,
|
|
|
WorkOrd = workOrd.WorkOrd,
|
|
|
Line = item.Line,
|
|
|
ItemNum = workOrd.ItemNum,
|
|
|
@@ -401,7 +409,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//记录生产周期
|
|
|
curSequences.Add(new PeriodSequenceDet
|
|
|
{
|
|
|
- Domain = "1001",
|
|
|
+ Domain = domain,
|
|
|
Line = item.Line,
|
|
|
ItemNum = workOrd.ItemNum,
|
|
|
PlanDate = workStartTime.Date,
|
|
|
@@ -416,7 +424,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//记录排产记录
|
|
|
curScheduleRsts.Add(new ScheduleResultOpMaster
|
|
|
{
|
|
|
- Domain = "1001",
|
|
|
+ Domain = domain,
|
|
|
WorkOrd = workOrd.WorkOrd,
|
|
|
Line = item.Line,
|
|
|
ItemNum = workOrd.ItemNum,
|