Min пре 1 година
родитељ
комит
b91f6f61f7

+ 15 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -4628,7 +4628,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             //凑整件数
             Integer rounding=0;
             //拆算件数
-            Integer converted=0;
+            double converted=0;
             //找到产品下的工序
             List<ProdProcedure> targetProdProcedures = prodProcedureList.stream().filter(p -> p.getProductId().equals(product.getId())).collect(Collectors.toList());
             //过滤工序id 作为完整件数 需要路过的全部工序
@@ -4667,7 +4667,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     if(match){
                         rounding+=1;
                     }else {
-                        converted+=1;
+                        //计算当前产品的总预算工时
+                        BigDecimal reduce = targetProdProcedures.stream().map(i -> new BigDecimal(i.getWorkingTime())).reduce(BigDecimal.ZERO, BigDecimal::add);
+                        //利用上面找到的所填了哪些工序 按照所在工序占比计算
+                        List<ProdProcedure> hasReportProcedures = targetProdProcedures.stream().filter(ts -> hasReportProdProduceIds.contains(ts.getId())).collect(Collectors.toList());
+                        BigDecimal bigDecimal=new BigDecimal(0);
+                        for (ProdProcedure hasReportProcedure : hasReportProcedures) {
+                            //找到当前工序所在产品总预算工时
+                            BigDecimal decimal = new BigDecimal(hasReportProcedure.getWorkingTime());
+                            BigDecimal divide = decimal.divide(reduce, 2, RoundingMode.HALF_UP);
+                            BigDecimal check = new BigDecimal(1);
+                            check=check.multiply(divide);
+                            bigDecimal=bigDecimal.add(check);
+                        }
+                        converted=bigDecimal.doubleValue();
                     }
                 }