|
@@ -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();
|
|
|
}
|
|
|
}
|
|
|
|