|
|
@@ -18,6 +18,7 @@ using Microsoft.Extensions.Configuration;
|
|
|
using MongoDB.Driver.Linq;
|
|
|
using Amazon.Runtime.Internal.Util;
|
|
|
using IdentityModel.Client;
|
|
|
+using Amazon.Runtime;
|
|
|
|
|
|
namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
@@ -197,7 +198,8 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
//获取需要排产的工单(获取四周的工单:正常工单+已审批通过的特殊工单)
|
|
|
DateTime endDate = DateTime.Now.Date.AddWeeks(4).AddDays(1);
|
|
|
- DateTime startDate = DateTime.Now.Date;
|
|
|
+ //取数开始时间需要排除掉锁定期内的工单
|
|
|
+ DateTime startDate = DateTime.Now.Date.AddDays(1).AddDays((double)lockDays);
|
|
|
var workOrds = _workOrdMaster.Select(p => p.IsActive && p.Domain == domain && p.OrdDate < endDate && p.OrdDate >= startDate && string.IsNullOrEmpty(p.Status) && (string.IsNullOrEmpty(p.Typed) || (!string.IsNullOrEmpty(p.Typed) && p.BusinessID >0 ))).ToList();
|
|
|
await DoProductSchedule(workOrds, domain, 1);
|
|
|
}
|
|
|
@@ -205,7 +207,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <summary>
|
|
|
/// 生产排产
|
|
|
/// </summary>
|
|
|
- /// <param name="workOrds">工单</param>
|
|
|
+ /// <param name="workOrds">需要重新排产的工单</param>
|
|
|
/// <param name="factoryid">工单的工厂id</param>
|
|
|
/// <param name="type">排产类型:1-自动排产;2-手动排产</param>
|
|
|
/// <returns></returns>
|
|
|
@@ -236,10 +238,15 @@ namespace Business.ResourceExamineManagement
|
|
|
prodLineDetailRunCrews = _prodLineDetailRunCrew.Select(x => prodLines.Select(p => p.RecID).Contains(x.ProdLineDetailRecID) && x.IsActive && x.Domain == domain).ToList();
|
|
|
//获取加班设置
|
|
|
resourceOccupancyTimes = _resourceOccupancyTime.Select(x => prodLines.Select(p => p.Line).Contains(x.Resource) && x.IsActive && x.Domain == domain && x.StartTime.Value > DateTime.Now).ToList();
|
|
|
- //获取生产周期数据,TODO:需要过滤锁定期之外的工单
|
|
|
+ //获取生产周期数据
|
|
|
List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => lines.Contains(p.Line) && p.PlanDate >= earlist && p.Domain == domain && p.IsActive);
|
|
|
- //获取当前日期往后的排产记录数据,TODO:需要过滤锁定期之外的工单
|
|
|
+ //获取当前日期往后的排产记录数据
|
|
|
List<ScheduleResultOpMaster> dbSchedules = _scheduleResultOpMaster.Select(p => lines.Contains(p.Line) && p.WorkDate >= earlist && p.Domain == domain);
|
|
|
+ //获取锁定期之外的工单排产数据
|
|
|
+ List<PeriodSequenceDet> delPeriodSequences = dbPeriodSequences.Where(p => workOrds.Select(m => m.WorkOrd).Contains(p.WorkOrds)).ToList();
|
|
|
+ List<ScheduleResultOpMaster> delSchedules = dbSchedules.Where(p => workOrds.Select(m => m.WorkOrd).Contains(p.WorkOrd)).ToList();
|
|
|
+ //产线占用记录排除锁定期之前的工单
|
|
|
+ dbSchedules = dbSchedules.Where(p => !workOrds.Select(m => m.WorkOrd).Contains(p.WorkOrd)).ToList();
|
|
|
//获取工作日历数据:产线的工作日历+默认的工作日历
|
|
|
calendars = _shopCalendarWorkCtr.Select(p => (lines.Contains(p.ProdLine) || string.IsNullOrEmpty(p.ProdLine)) && p.Domain == domain && p.IsActive);
|
|
|
//获取产线休息记录数据
|
|
|
@@ -331,8 +338,12 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- //记录排产数据
|
|
|
+ //更新工单计划开工时间、计划结束时间
|
|
|
_workOrdMaster.Update(workOrds);
|
|
|
+ //删除锁定期之外的工单排产记录
|
|
|
+ _periodSequenceDet.Delete(delPeriodSequences);
|
|
|
+ _scheduleResultOpMaster.Delete(delSchedules);
|
|
|
+ //保存排产记录
|
|
|
_periodSequenceDet.Insert(periodSequenceDtls);
|
|
|
_scheduleResultOpMaster.Insert(scheduleMasters);
|
|
|
scope.Complete();
|