|
|
@@ -156,8 +156,8 @@ namespace Business.Quartz
|
|
|
public async Task DoProductShcedule()
|
|
|
{
|
|
|
//1、获取需要排产的工单:Status为空且IsActive==1
|
|
|
- //List<WorkOrdMaster> workOrds = _workOrdMaster.Select(p => string.IsNullOrEmpty(p.Status) && p.IsActive == 1).Result;
|
|
|
- List<WorkOrdMaster> workOrds = _workOrdMaster.Select(p => p.WorkOrd == "Test0000001").Result;
|
|
|
+ List<WorkOrdMaster> workOrds = _workOrdMaster.Select(p => string.IsNullOrEmpty(p.Status) && p.IsActive).Result;
|
|
|
+ //List<WorkOrdMaster> workOrds = _workOrdMaster.Select(p => p.WorkOrd == "Test0000002").Result;//测试代码
|
|
|
if (workOrds.Count == 0)
|
|
|
{
|
|
|
return;
|
|
|
@@ -254,7 +254,7 @@ namespace Business.Quartz
|
|
|
LineSchedule(item, routingDtos.OrderBy(p => p.level).ToList(), periodSequenceDtls, scheduleMasters);
|
|
|
|
|
|
//更新工单表
|
|
|
- item.Status = "w";
|
|
|
+ item.Status = "r";
|
|
|
}
|
|
|
_businessDbContext.UpdateRange(workOrds);
|
|
|
//记录排产数据
|
|
|
@@ -588,19 +588,24 @@ namespace Business.Quartz
|
|
|
//剩余提前期
|
|
|
needMinute -= curMins;
|
|
|
//获取前层级时间段
|
|
|
- var prePoints = workPoints.Where(p => p.Level < curPoint.Level).ToList();
|
|
|
+ var prePoints = workPoints.Where(p => p.Level < curPoint.Level).OrderByDescending(p=>p.Level).ToList();
|
|
|
+ bool flag = true;//标志位
|
|
|
foreach (var item in prePoints)
|
|
|
{
|
|
|
if (item.WorkMinutes >= needMinute)//当前时间段的可用提前期满足
|
|
|
{
|
|
|
actStart = item.EndPoint.AddMinutes((double)-needMinute);
|
|
|
+ flag = false;
|
|
|
break;
|
|
|
}
|
|
|
needMinute -= item.WorkMinutes;
|
|
|
}
|
|
|
+ if (!flag)
|
|
|
+ {
|
|
|
+ return actStart;
|
|
|
+ }
|
|
|
//今天可用提前期不够,往前工作日找
|
|
|
DateTime perStartTime = startTime;
|
|
|
- bool flag = true;//标志位
|
|
|
while (flag)
|
|
|
{
|
|
|
//获取前一个工作日
|
|
|
@@ -623,10 +628,11 @@ namespace Business.Quartz
|
|
|
}
|
|
|
flag = false;
|
|
|
}
|
|
|
- //当天可用提前期不满足
|
|
|
- needMinute -= sumWorkMins;
|
|
|
+ else {
|
|
|
+ //当天可用提前期不满足
|
|
|
+ needMinute -= sumWorkMins;
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
return actStart;
|
|
|
}
|
|
|
|
|
|
@@ -652,7 +658,8 @@ namespace Business.Quartz
|
|
|
if (!holidays.Exists(p => p.Dated.GetValueOrDefault().Date == nextDate && p.Ufld1 == "调休"))//下一天是周末
|
|
|
{
|
|
|
//递归继续找下一个工作日
|
|
|
- GetNextWorkDay(nextWeekDay, nextDate, curCalendars);
|
|
|
+ rtnData = GetNextWorkDay(nextWeekDay, nextDate, curCalendars);
|
|
|
+ return rtnData;
|
|
|
}
|
|
|
rtnData = Convert.ToDateTime(nextDate.ToString("yyyy-MM-dd") + " " + strStart);
|
|
|
return rtnData;
|
|
|
@@ -661,7 +668,8 @@ namespace Business.Quartz
|
|
|
if (holidays.Exists(p => p.Dated.GetValueOrDefault().Date == nextDate && p.Ufld1 == "休假"))//是节假日
|
|
|
{
|
|
|
//递归继续找下一个工作日
|
|
|
- GetNextWorkDay(nextWeekDay, nextDate, curCalendars);
|
|
|
+ rtnData = GetNextWorkDay(nextWeekDay, nextDate, curCalendars);
|
|
|
+ return rtnData;
|
|
|
}
|
|
|
rtnData = Convert.ToDateTime(nextDate.ToString("yyyy-MM-dd") + " " + strStart);
|
|
|
return rtnData;
|
|
|
@@ -687,8 +695,9 @@ namespace Business.Quartz
|
|
|
{
|
|
|
if (!holidays.Exists(p => p.Dated.GetValueOrDefault().Date == preDate && p.Ufld1 == "调休"))//前一天是非工作日
|
|
|
{
|
|
|
- //递归继续找下一个工作日
|
|
|
- GetPreWorkDay(preDate, curCalendars);
|
|
|
+ //递归继续找上一个工作日
|
|
|
+ rtnData = GetPreWorkDay(preDate, curCalendars);
|
|
|
+ return rtnData;
|
|
|
}
|
|
|
rtnData = Convert.ToDateTime(preDate.ToString("yyyy-MM-dd") + " " + strStart);
|
|
|
return rtnData;
|
|
|
@@ -697,7 +706,8 @@ namespace Business.Quartz
|
|
|
if (holidays.Exists(p => p.Dated.GetValueOrDefault().Date == preDate && p.Ufld1 == "休假"))//是节假日
|
|
|
{
|
|
|
//递归继续找前一个工作日
|
|
|
- GetPreWorkDay(preDate, curCalendars);
|
|
|
+ rtnData = GetPreWorkDay(preDate, curCalendars);
|
|
|
+ return rtnData;
|
|
|
}
|
|
|
rtnData = Convert.ToDateTime(preDate.ToString("yyyy-MM-dd") + " " + strStart);
|
|
|
return rtnData;
|