Min hai 1 ano
pai
achega
8d14843539

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

@@ -4825,7 +4825,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
             }
 
-            //以钢印号为基准,进行计算,剔除完整件数的钢印号
+            //以钢印号为基准,进行计算,剔除完整件数的钢印号 //这个在上面已经去过了
             List<String> noCompleteSteelNums = steelNums.stream().filter(s->!integratedSteelNums.contains(s)).collect(Collectors.toList());
             //列出每一道工序上的钢印号集合
             HashMap<Integer, List> prodProcedureSteelNumMap = new HashMap<>();
@@ -4894,8 +4894,28 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     System.out.println("折算的工序::" + left);
                 }
             }
-
-
+            //计算折算数据
+            for (String leftSteelNum : leftSteelNums) {
+                //找到该产品下填报了该钢印号的所有日报数据
+                List<Integer> hasReportIds = reportSteelNums.stream().filter(r -> r.getSteelNum().equals(leftSteelNum)).collect(Collectors.toList()).stream().map(ReportSteelNum::getReportId).collect(Collectors.toList());
+                List<Report> hasReportList = targetReportList.stream().filter(r->hasReportIds.contains(r.getId())).collect(Collectors.toList());
+                //过滤日报所填了哪些工序
+                List<Integer> hasReportProdProduceIds = hasReportList.stream().map(Report::getProdProcedureId).collect(Collectors.toList());
+                //计算当前产品的总预算工时
+                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,BigDecimal.ROUND_HALF_UP);
+                    BigDecimal check = new BigDecimal(1);
+                    check=check.multiply(divide).setScale(2,BigDecimal.ROUND_HALF_UP);
+                    bigDecimal=bigDecimal.add(check).setScale(2,BigDecimal.ROUND_HALF_UP);
+                }
+                converted=converted.add(bigDecimal);
+            }
 
             //计算凑整件数
 //            for (String steelNum : steelNums) {