Prechádzať zdrojové kódy

生成工单调用产能计算调整

heteng 2 rokov pred
rodič
commit
203a126d3b

+ 3 - 2
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -396,8 +396,9 @@ namespace Business.ResourceExamineManagement
                         }
                         //ProductionTimeDay = LeadTime;
                         mes_Morders.moentry_sys_etime = LeadTime;
-                        mes_Morders.morder_need_time = Convert.ToInt32(DateTime.ParseExact(ProductiveDate.ToString("yyyyMMddHHmmss"), "yyyyMMddHHmmss", CultureInfo.CurrentCulture) -
-                            DateTime.ParseExact(mes_Morders.moentry_sys_stime.Value.ToString("yyyyMMddHHmmss"), "yyyyMMddHHmmss", CultureInfo.CurrentCulture));
+                        TimeSpan span = ProductiveDate - mes_Morders.moentry_sys_stime.Value;
+                        mes_Morders.morder_need_time = (decimal)span.TotalMinutes;
+
                         //满足资源检查的时间需加上提前期
                         level1Dto.satisfy_time = LeadTime;
                         if (sentrys != null)

+ 2 - 2
MicroServices/Business/Business.Application/ResourceExamineManagement/MorderAppService.cs

@@ -177,8 +177,8 @@ namespace Business.ResourceExamineManagement
                     //系统建议完工日期为 开工日期+产能检查时间=完工日期
                     //var Day = ProductiveDate / (60 * 10); //返回的分钟除以十个小时得出工作天数;
                     mes_Morder.moentry_sys_etime = ProductiveDate;
-                    mes_Morder.morder_need_time = Convert.ToInt32(DateTime.ParseExact(ProductiveDate.ToString("yyyyMMddHHmmss"), "yyyyMMddHHmmss", CultureInfo.CurrentCulture) -
-                            DateTime.ParseExact(generateMorderDto.moentry_sys_stime.Value.ToString("yyyyMMddHHmmss"), "yyyyMMddHHmmss", CultureInfo.CurrentCulture)); ;
+                    TimeSpan span = ProductiveDate - generateMorderDto.moentry_sys_stime.Value;
+                    mes_Morder.morder_need_time = (decimal)span.TotalMinutes;
                 }
             }
 

+ 5 - 5
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductExamineAppService.cs

@@ -80,7 +80,7 @@ namespace Business.ResourceExamineManagement
             {
                 return planEnd;
             }
-            var lastOp = curRoutingOps.Last();
+            var lastOp = curRoutingOps.First();
             //获取产线
             var curProdLine = prodLines.FirstOrDefault(p => p.Part == param.ItemNum && p.Op == lastOp.Op);
             if (curProdLine == null)
@@ -89,7 +89,7 @@ namespace Business.ResourceExamineManagement
             }
             //获取产线工作日历
             var curCalendars = calendarWorks.Where(p => p.ProdLine == curProdLine.Line).ToList();
-            if (curCalendars.Count() == 0 || curCalendars.Count() != 0)
+            if (curCalendars.Count() == 0 || curCalendars.Count() != 7)
             {
                 return planEnd;
             }
@@ -103,7 +103,7 @@ namespace Business.ResourceExamineManagement
                 planEnd = GetNextWorkDay(planEnd, curCalendars);
                 //计算工作日的产能
                 sumAmount += CalcCapacity(planEnd, curProdLine, curCalendars, curqualityLines);
-                planEnd.AddDays(1);
+                planEnd = planEnd.AddDays(1);
             } while (sumAmount < param.QtyOrd);
             return planEnd.AddDays(-1);
         }
@@ -157,7 +157,7 @@ namespace Business.ResourceExamineManagement
             //获取当天的工作时长(分钟)
             decimal workTime = curCalendars.First(p => p.WeekDay == (int)startTime.DayOfWeek).ShiftsHours1 * 60;
             //计算产能
-            sumQty = (workTime - sumResrt) / 60 * prodLine.Rate;
+            sumQty = Math.Floor((workTime - sumResrt) / 60 * prodLine.Rate);
             return sumQty;
         }
 
@@ -193,7 +193,7 @@ namespace Business.ResourceExamineManagement
                 item.sys_capacity_date = item.sys_material_date;
                 //计算系统交期(产能)
                 //获取主线最后一道工序
-                var routings = routingOps.Where(p => p.RoutingCode == item.item_number && p.ParentOp == 0).ToList();
+                var routings = routingOps.Where(p => p.RoutingCode == item.item_number && p.ParentOp == 0).OrderBy(p=>p.Op).ToList();
                 if (routings.Count() == 0)
                 {
                     continue;