|
@@ -4778,7 +4778,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
//凑整件数
|
|
|
Integer rounding=0;
|
|
|
//拆算件数
|
|
|
- BigDecimal converted=new BigDecimal(0);
|
|
|
+ BigDecimal convertedTime=new BigDecimal(0);
|
|
|
+ BigDecimal convertedCost=new BigDecimal(0);
|
|
|
//找到产品下的工序
|
|
|
List<ProdProcedure> targetProdProcedures = prodProcedureList.stream().filter(p -> p.getProductId().equals(product.getId())).collect(Collectors.toList());
|
|
|
//过滤工序id 作为完整件数 需要路过的全部工序
|
|
@@ -4903,19 +4904,28 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
//过滤日报所填了哪些工序
|
|
|
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);
|
|
|
+ BigDecimal reduceTime = targetProdProcedures.stream().map(i -> new BigDecimal(i.getWorkingTime())).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal reduceCost = targetProdProcedures.stream().map(i -> new BigDecimal(String.valueOf(i.getUnitPrice()))).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
//利用上面找到的所填了哪些工序 按照所在工序占比计算
|
|
|
List<ProdProcedure> hasReportProcedures = targetProdProcedures.stream().filter(ts -> hasReportProdProduceIds.contains(ts.getId())).collect(Collectors.toList());
|
|
|
- BigDecimal bigDecimal=new BigDecimal(0);
|
|
|
+ BigDecimal bigDecimalTime=new BigDecimal(0);
|
|
|
+ BigDecimal bigDecimalCost=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);
|
|
|
+ BigDecimal decimalTime = new BigDecimal(hasReportProcedure.getWorkingTime());
|
|
|
+ BigDecimal divideTime = decimalTime.divide(reduceTime, 3,BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal checkTime = new BigDecimal(1);
|
|
|
+ checkTime=checkTime.multiply(divideTime).setScale(3,BigDecimal.ROUND_HALF_UP);
|
|
|
+ bigDecimalTime=bigDecimalTime.add(checkTime).setScale(3,BigDecimal.ROUND_HALF_UP);
|
|
|
+ //找到当前工序所在产品总预算工时
|
|
|
+ BigDecimal decimalCost = new BigDecimal(String.valueOf(hasReportProcedure.getUnitPrice()));
|
|
|
+ BigDecimal divideCost = decimalCost.divide(reduceCost, 3,BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal checkCost = new BigDecimal(1);
|
|
|
+ checkCost=checkCost.multiply(divideCost).setScale(3,BigDecimal.ROUND_HALF_UP);
|
|
|
+ bigDecimalCost=bigDecimalCost.add(checkCost).setScale(3,BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
- converted=converted.add(bigDecimal);
|
|
|
+ convertedTime=convertedTime.add(bigDecimalTime);
|
|
|
+ convertedCost=convertedCost.add(bigDecimalCost);
|
|
|
}
|
|
|
|
|
|
//计算凑整件数
|
|
@@ -5008,13 +5018,17 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
// }
|
|
|
resultMap.put("integratedSteelNums",integratedSteelNums);
|
|
|
resultMap.put("roundingSteelNums",roundingSteelNums);
|
|
|
- converted = converted.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ convertedTime = convertedTime.setScale(3, BigDecimal.ROUND_HALF_UP);
|
|
|
+ convertedCost = convertedCost.setScale(3, BigDecimal.ROUND_HALF_UP);
|
|
|
resultMap.put("integrated",integrated);
|
|
|
resultMap.put("rounding",rounding);
|
|
|
- resultMap.put("converted",converted);
|
|
|
+ resultMap.put("convertedTime",convertedTime);
|
|
|
+ resultMap.put("convertedCost",convertedCost);
|
|
|
BigDecimal bigDecimal=new BigDecimal(integrated);
|
|
|
- bigDecimal=bigDecimal.add(new BigDecimal(rounding)).add(converted);
|
|
|
- resultMap.put("total",bigDecimal.doubleValue());
|
|
|
+ BigDecimal bigDecimalTime=bigDecimal.add(new BigDecimal(rounding)).add(convertedTime);
|
|
|
+ BigDecimal bigDecimalCost=bigDecimal.add(new BigDecimal(rounding)).add(convertedCost);
|
|
|
+ resultMap.put("totalTime",bigDecimalTime.doubleValue());
|
|
|
+ resultMap.put("totalCost",bigDecimalCost.doubleValue());
|
|
|
resultMapList.add(resultMap);
|
|
|
}
|
|
|
Map<String,Object> result=new HashMap<>();
|
|
@@ -5185,6 +5199,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
}
|
|
|
if(isViewUser){
|
|
|
+ BigDecimal arrangeTotalPlanCost=new BigDecimal(0);
|
|
|
+ BigDecimal arrangeTotalNowCost=new BigDecimal(0);
|
|
|
+ BigDecimal arrangeTotalPlanHour=new BigDecimal(0);
|
|
|
+ BigDecimal arrangeTotalNowHour=new BigDecimal(0);
|
|
|
for (String userId : userIdList) {
|
|
|
Map<String,Object> item=new HashMap<>();
|
|
|
item.put("startDate",date.replaceAll("-",""));
|
|
@@ -5204,13 +5222,32 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
nowCost=nowCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
planHour=planHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
nowHour=nowHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ arrangeTotalPlanCost=arrangeTotalPlanCost.add(planCost).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ arrangeTotalNowCost=arrangeTotalNowCost.add(nowCost).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ arrangeTotalPlanHour=arrangeTotalPlanHour.add(planHour).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ arrangeTotalNowHour=arrangeTotalNowHour.add(nowHour).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
item.put("planCost",planCost.doubleValue());
|
|
|
item.put("nowCost",nowCost.doubleValue());
|
|
|
item.put("planHour",planHour.doubleValue());
|
|
|
item.put("nowHour",nowHour.doubleValue());
|
|
|
resultList.add(item);
|
|
|
}
|
|
|
+ //手动增加合计列 用于计算列合计数据
|
|
|
+ Map<String,Object> item=new HashMap<>();
|
|
|
+ item.put("startDate",date.replaceAll("-",""));
|
|
|
+ item.put("userId","0");
|
|
|
+ item.put("planCost",arrangeTotalPlanCost.doubleValue());
|
|
|
+ item.put("nowCost",arrangeTotalNowCost.doubleValue());
|
|
|
+ item.put("planHour",arrangeTotalPlanHour.doubleValue());
|
|
|
+ item.put("nowHour",arrangeTotalNowHour.doubleValue());
|
|
|
+ resultList.add(item);
|
|
|
}else {
|
|
|
+ BigDecimal arrangeTotalPlanNum=new BigDecimal(0);
|
|
|
+ BigDecimal arrangeTotalNowNum=new BigDecimal(0);
|
|
|
+ BigDecimal arrangeTotalPlanCost=new BigDecimal(0);
|
|
|
+ BigDecimal arrangeTotalNowCost=new BigDecimal(0);
|
|
|
+ BigDecimal arrangeTotalPlanHour=new BigDecimal(0);
|
|
|
+ BigDecimal arrangeTotalNowHour=new BigDecimal(0);
|
|
|
for (Integer dept : deptIdList) {
|
|
|
Map<String,Object> item=new HashMap<>();
|
|
|
item.put("startDate",date.replaceAll("-",""));
|
|
@@ -5237,6 +5274,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
nowCost=nowCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
planHour=planHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
nowHour=nowHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ arrangeTotalPlanNum=arrangeTotalPlanNum.add(planNum).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ arrangeTotalNowNum=arrangeTotalNowNum.add(nowNum).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ arrangeTotalPlanCost=arrangeTotalPlanCost.add(planCost).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ arrangeTotalNowCost=arrangeTotalNowCost.add(nowCost).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ arrangeTotalPlanHour=arrangeTotalPlanHour.add(planHour).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ arrangeTotalNowHour=arrangeTotalNowHour.add(nowHour).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
item.put("planNum",planNum.doubleValue());
|
|
|
item.put("nowNum",nowNum.doubleValue());
|
|
|
item.put("planCost",planCost.doubleValue());
|
|
@@ -5247,6 +5290,17 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
item.put("progress",format.format(progress.doubleValue()));
|
|
|
resultList.add(item);
|
|
|
}
|
|
|
+ //手动增加合计列 用于计算列合计数据
|
|
|
+ Map<String,Object> item=new HashMap<>();
|
|
|
+ item.put("startDate",date.replaceAll("-",""));
|
|
|
+ item.put("deptId","0");
|
|
|
+ item.put("planNum",arrangeTotalPlanNum.doubleValue());
|
|
|
+ item.put("nowNum",arrangeTotalNowNum.doubleValue());
|
|
|
+ item.put("planCost",arrangeTotalPlanCost.doubleValue());
|
|
|
+ item.put("nowCost",arrangeTotalNowCost.doubleValue());
|
|
|
+ item.put("planHour",arrangeTotalPlanHour.doubleValue());
|
|
|
+ item.put("nowHour",arrangeTotalNowHour.doubleValue());
|
|
|
+ resultList.add(item);
|
|
|
}
|
|
|
}
|
|
|
List<Map<String,Object>> lastList=new ArrayList<>();
|
|
@@ -5258,7 +5312,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
map.put("userList",maps);
|
|
|
map.put("userId",userId);
|
|
|
Optional<User> first = userList.stream().filter(u -> u.getId().equals(userId)).findFirst();
|
|
|
- map.put("userName",first.isPresent()?first.get().getName():"");
|
|
|
+ map.put("userName",userId.equals("0")?"合计":first.isPresent()?first.get().getName():"");
|
|
|
BigDecimal totalPlanHour = new BigDecimal(0);
|
|
|
BigDecimal totalNowHour = new BigDecimal(0);
|
|
|
BigDecimal totalPlanCost = new BigDecimal(0);
|
|
@@ -5283,7 +5337,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
List<String> deptIdList = resultList.stream().map(r -> String.valueOf(r.get("deptId"))).distinct().collect(Collectors.toList());
|
|
|
for (String dept : deptIdList) {
|
|
|
Map<String,Object> map=new HashMap<>();
|
|
|
- map.put("departmentCascade",convertDepartmentIdToCascade(Integer.valueOf(dept),departmentList));
|
|
|
+ map.put("departmentCascade",dept.equals("0")?"合计":convertDepartmentIdToCascade(Integer.valueOf(dept),departmentList));
|
|
|
List<Map<String, Object>> maps = resultList.stream().filter(r -> String.valueOf(r.get("deptId")).equals(dept)).collect(Collectors.toList());
|
|
|
map.put("deptList",maps);
|
|
|
map.put("deptId",dept);
|
|
@@ -5318,6 +5372,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
lastList.add(map);
|
|
|
}
|
|
|
}
|
|
|
+ List<Map<String, Object>> list;
|
|
|
+ List<Map<String, Object>> list1;
|
|
|
+ if(isViewUser){
|
|
|
+ list = lastList.stream().filter(l -> !String.valueOf(l.get("userId")).equals("0")).collect(Collectors.toList());
|
|
|
+ list1 = lastList.stream().filter(l -> String.valueOf(l.get("userId")).equals("0")).collect(Collectors.toList());
|
|
|
+
|
|
|
+ }else {
|
|
|
+ list = lastList.stream().filter(l -> !String.valueOf(l.get("deptId")).equals("0")).collect(Collectors.toList());
|
|
|
+ list1 = lastList.stream().filter(l -> String.valueOf(l.get("deptId")).equals("0")).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ if(list1.size()>0){
|
|
|
+ list.add(list1.get(0));
|
|
|
+ }
|
|
|
+ lastList=list;
|
|
|
|
|
|
if(stationId!=null){
|
|
|
lastList=lastList.stream().filter(l->Integer.valueOf(String.valueOf(l.get("deptId"))).equals(stationId)).collect(Collectors.toList());
|