Переглянути джерело

特殊工单开工时间处理

heteng 2 роки тому
батько
коміт
e7187001be

+ 9 - 2
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductionScheduleAppService.cs

@@ -3830,6 +3830,9 @@ namespace Business.ResourceExamineManagement
                 var mLCalendars = calendars.Where(p => p.ProdLine == item.ProdLine || string.IsNullOrEmpty(p.ProdLine)).ToList();
                 //当前产线的休息时间设置
                 var mlqtyWorkDtls = qualityLines.Where(p => p.ProdLine == item.ProdLine).ToList();
+                //计算产线实际开始时间
+                workStartTime = CalcActStartTime(item.ProdLine, workStartTime, mLCalendars, mlqtyWorkDtls);
+
                 LineStartDto lineStart = new LineStartDto();
                 lineStart.RecID = 0;
                 lineStart.Line = item.ProdLine;
@@ -4015,12 +4018,16 @@ namespace Business.ResourceExamineManagement
             //当天排产结束时间
             scheduledDto.EndTime = workPoints.Last().EndPoint;
             //计算starttime处于那个工作时间段
-            var curPoint = workPoints.Where(p => startTime >= p.StartPoint && startTime <= p.EndPoint).First();
+            var curPoint = workPoints.Where(p => startTime >= p.StartPoint && startTime <= p.EndPoint).FirstOrDefault();
             //开始时间不在工作时间段
             if (curPoint == null)
             {
                 //获取离开始时间最近的时间段
-                curPoint = workPoints.Where(p => p.EndPoint < startTime).OrderBy(p => p.Level).Last();
+                curPoint = workPoints.Where(p => p.EndPoint < startTime).OrderBy(p => p.Level).LastOrDefault();
+                if (curPoint == null)
+                {
+                    curPoint = workPoints.Where(p => startTime < p.StartPoint).OrderBy(p => p.Level).FirstOrDefault();
+                }
                 startTime = curPoint.EndPoint;
             }
             TimeSpan span = curPoint.EndPoint - startTime;