Преглед на файлове

生产排产量产工单、非量产工单共用产线场景调整

heteng преди 2 години
родител
ревизия
21705f6237
променени са 1 файла, в които са добавени 27 реда и са изтрити 18 реда
  1. 27 18
      MicroServices/Business/Business.Application/ResourceExamineManagement/ProductionScheduleAppService.cs

+ 27 - 18
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductionScheduleAppService.cs

@@ -605,14 +605,16 @@ namespace Business.ResourceExamineManagement
                     foreach (var item in fstWOMasters)
                     {
                         var curOp = tsWoRoutings.Where(p => p.WorkOrd == item.WorkOrd).OrderByDescending(p => p.OP).First();
-                        //计算已完成耗时(分钟)
-                        decimal usedTime = Math.Ceiling(curOp.QtyComplete / item.QtyOrded * item.LbrVar * 60);
+                        //剩余排产数量
+                        decimal qtyNeed = item.QtyOrded - curOp.QtyComplete;
+                        //剩余工作时长(分钟)
+                        decimal usedTime = Math.Ceiling(qtyNeed / item.QtyOrded * item.LbrVar * 60);
                         workDtos.Add(new WorkOrdMstDto
                         {
                             WorkOrd = item.WorkOrd,
                             ItemNum = item.ItemNum,
-                            QtyOrded = item.QtyOrded - curOp.QtyComplete,
-                            LbrVar = item.LbrVar * 60 - usedTime,
+                            QtyOrded = qtyNeed,
+                            LbrVar = usedTime,
                             Worked = 0,
                             QtyWorked = 0,
                             Op = curOp.OP,
@@ -658,21 +660,23 @@ namespace Business.ResourceExamineManagement
                             foreach (var item in secWOMasters)
                             {
                                 var curOp = tsWoRoutings.Where(p => p.WorkOrd == item.WorkOrd).OrderByDescending(p => p.OP).First();
-                                //计算已完成数量耗时(分钟)
-                                decimal usedTime = Math.Ceiling(curOp.QtyComplete / item.QtyOrded * item.LbrVar * 60);
+                                //剩余排产数量
+                                decimal qtyNeed = item.QtyOrded - curOp.QtyComplete;
+                                //剩余工作时长(分钟)
+                                decimal usedTime = Math.Ceiling(qtyNeed / item.QtyOrded * item.LbrVar * 60);
                                 workDtos.Add(new WorkOrdMstDto
                                 {
                                     WorkOrd = item.WorkOrd,
                                     ItemNum = item.ItemNum,
-                                    QtyOrded = item.QtyOrded - curOp.QtyComplete,
-                                    LbrVar = item.LbrVar * 60 - usedTime,
+                                    QtyOrded = qtyNeed,
+                                    LbrVar = usedTime,
                                     Worked = 0,
                                     QtyWorked = 0,
                                     Op = curOp.OP,
                                     WaitTime = curOp.WaitTime * 60,
                                     Priority = item.Priority
                                 });
-                                sumLbrVar += item.QtyOrded - curOp.QtyComplete;
+                                sumLbrVar += usedTime;
                                 sumCleanTimes += curOp.WaitTime * 60;
                             }
                             //获取最后一个特殊工单的清场时长
@@ -844,14 +848,16 @@ namespace Business.ResourceExamineManagement
                                 foreach (var item in secWOMasters)
                                 {
                                     var curOp = tsWoRoutings.Where(p => p.WorkOrd == item.WorkOrd).OrderByDescending(p => p.OP).First();
-                                    //计算已完成数量耗时(分钟)
-                                    decimal usedTime = Math.Ceiling(curOp.QtyComplete / item.QtyOrded * item.LbrVar * 60);
+                                    //剩余排产数量
+                                    decimal qtyNeed = item.QtyOrded - curOp.QtyComplete;
+                                    //剩余工作时长(分钟)
+                                    decimal usedTime = Math.Ceiling(qtyNeed / item.QtyOrded * item.LbrVar * 60);
                                     workDtos.Add(new WorkOrdMstDto
                                     {
                                         WorkOrd = item.WorkOrd,
                                         ItemNum = item.ItemNum,
-                                        QtyOrded = item.QtyOrded - curOp.QtyComplete,
-                                        LbrVar = item.LbrVar * 60 - usedTime,
+                                        QtyOrded = qtyNeed,
+                                        LbrVar = usedTime,
                                         Worked = 0,
                                         QtyWorked = 0,
                                         Op = curOp.OP,
@@ -859,6 +865,7 @@ namespace Business.ResourceExamineManagement
                                         Priority = item.Priority
                                     });
                                     sumCleanTimes += curOp.WaitTime * 60;
+                                    sumLbrVar += usedTime;
                                 }
                                 //获取最后一个特殊工单的清场时长
                                 var last = secWOMasters.Last();
@@ -1106,21 +1113,23 @@ namespace Business.ResourceExamineManagement
                             foreach (var item in secWOMasters)
                             {
                                 var curOp = tsWoRoutings.Where(p => p.WorkOrd == item.WorkOrd).OrderByDescending(p => p.OP).First();
-                                //计算已完成数量耗时(分钟)
-                                decimal usedTime = Math.Ceiling(curOp.QtyComplete / item.QtyOrded * item.LbrVar * 60);
+                                //剩余排产数量
+                                decimal qtyNeed = item.QtyOrded - curOp.QtyComplete;
+                                //剩余工作时长(分钟)
+                                decimal usedTime = Math.Ceiling(qtyNeed / item.QtyOrded * item.LbrVar * 60);
                                 workDtos.Add(new WorkOrdMstDto
                                 {
                                     WorkOrd = item.WorkOrd,
                                     ItemNum = item.ItemNum,
-                                    QtyOrded = item.QtyOrded - curOp.QtyComplete,
-                                    LbrVar = item.LbrVar * 60 - usedTime,
+                                    QtyOrded = qtyNeed,
+                                    LbrVar = usedTime,
                                     Worked = 0,
                                     QtyWorked = 0,
                                     Op = curOp.OP,
                                     WaitTime = curOp.WaitTime * 60,
                                     Priority = item.Priority
                                 });
-                                sumLbrVar += item.LbrVar * 60 - usedTime;
+                                sumLbrVar += usedTime;
                                 sumCleanTimes += curOp.WaitTime * 60;
                             }
                             //获取最后一个特殊工单的清场时长