heteng 3 жил өмнө
parent
commit
255698322d

+ 23 - 13
MicroServices/Business/Business.Application/Quartz/ProductionScheduleAppService.cs

@@ -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;

+ 1 - 1
MicroServices/Business/Bussiness.Model/Production/PeriodSequenceDet.cs

@@ -50,7 +50,7 @@ namespace Business.Model.Production
         /// 班次
         /// </summary>
         [Comment("班次")]
-        public int? Period { get; set; }
+        public Int16 Period { get; set; }
 
         /// <summary>
         /// 订单数量