|
@@ -4771,6 +4771,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
for (Product product : products) {
|
|
for (Product product : products) {
|
|
Map<String,Object> resultMap=new HashMap<>();
|
|
Map<String,Object> resultMap=new HashMap<>();
|
|
resultMap.put("productName",product.getName());
|
|
resultMap.put("productName",product.getName());
|
|
|
|
+ List<String> integratedSteelNums=new ArrayList<>();
|
|
|
|
+ List<String> roundingSteelNums=new ArrayList<>();
|
|
//完整件数
|
|
//完整件数
|
|
Integer integrated=0;
|
|
Integer integrated=0;
|
|
//凑整件数
|
|
//凑整件数
|
|
@@ -4798,6 +4800,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
//如果全包含了所需路过的全部工序内容 就算完整件数
|
|
//如果全包含了所需路过的全部工序内容 就算完整件数
|
|
if(hasReportProdProduceIds.containsAll(targetProdProduceIds)){
|
|
if(hasReportProdProduceIds.containsAll(targetProdProduceIds)){
|
|
integrated+=1;
|
|
integrated+=1;
|
|
|
|
+ integratedSteelNums.add(steelNum);
|
|
List<ReportSteelNum> newReportSteelNums=new ArrayList<>();
|
|
List<ReportSteelNum> newReportSteelNums=new ArrayList<>();
|
|
//作为完整的钢印号直接去掉
|
|
//作为完整的钢印号直接去掉
|
|
for (int i = 0; i < reportSteelNums.size(); i++) {
|
|
for (int i = 0; i < reportSteelNums.size(); i++) {
|
|
@@ -4819,6 +4822,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
//计算凑整件数
|
|
//计算凑整件数
|
|
for (String steelNum : steelNums) {
|
|
for (String steelNum : steelNums) {
|
|
|
|
+ if(roundingSteelNums.contains(steelNum)){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
//找到该产品下填报了该钢印号的所有日报数据
|
|
//找到该产品下填报了该钢印号的所有日报数据
|
|
List<Integer> hasReportIds = reportSteelNums.stream().filter(r -> r.getSteelNum().equals(steelNum)).collect(Collectors.toList()).stream().map(ReportSteelNum::getReportId).collect(Collectors.toList());
|
|
List<Integer> hasReportIds = reportSteelNums.stream().filter(r -> r.getSteelNum().equals(steelNum)).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<Report> hasReportList = targetReportList.stream().filter(r->hasReportIds.contains(r.getId())).collect(Collectors.toList());
|
|
@@ -4826,7 +4832,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
List<Integer> hasReportProdProduceIds = hasReportList.stream().map(Report::getProdProcedureId).collect(Collectors.toList());
|
|
List<Integer> hasReportProdProduceIds = hasReportList.stream().map(Report::getProdProcedureId).collect(Collectors.toList());
|
|
//如果没有包含所需路过的全部工序内容 (有任意工序可以共同完成)-->凑整
|
|
//如果没有包含所需路过的全部工序内容 (有任意工序可以共同完成)-->凑整
|
|
//根据当前钢印号已经填报的内容 对比出没有填报的工序内容
|
|
//根据当前钢印号已经填报的内容 对比出没有填报的工序内容
|
|
- if(hasReportProdProduceIds.containsAll(targetProdProduceIds)){
|
|
|
|
|
|
+ if(!hasReportProdProduceIds.containsAll(targetProdProduceIds)){
|
|
List<Integer> hasNotReportProdProduceIds=new ArrayList<>();
|
|
List<Integer> hasNotReportProdProduceIds=new ArrayList<>();
|
|
targetProdProduceIds.forEach(tp->{
|
|
targetProdProduceIds.forEach(tp->{
|
|
if(!hasReportProdProduceIds.contains(tp)){
|
|
if(!hasReportProdProduceIds.contains(tp)){
|
|
@@ -4834,17 +4840,21 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
});
|
|
});
|
|
//所有已填报的钢印号有任意满足 上面未填报工序集合 就算凑整件数
|
|
//所有已填报的钢印号有任意满足 上面未填报工序集合 就算凑整件数
|
|
- //找到所有填报了未填报其工序日报数据
|
|
|
|
- List<Report> comparatorReportList = targetReportList.stream().filter(r ->r.getProdProcedureId()!=null && hasNotReportProdProduceIds.contains(r.getProdProcedureId())).collect(Collectors.toList());
|
|
|
|
|
|
+ //找到所有可能填报了未填报其工序日报数据
|
|
|
|
+ List<Report> comparatorReportList = targetReportList.stream().filter(r ->r.getSteelNumArray()!=null&&JSONArray.parseArray(r.getSteelNumArray()).stream().anyMatch(a->!integratedSteelNums.contains(a))&&r.getProdProcedureId()!=null && hasNotReportProdProduceIds.contains(r.getProdProcedureId())).collect(Collectors.toList());
|
|
//过滤这些日报下的工序数据
|
|
//过滤这些日报下的工序数据
|
|
List<Integer> targetComparator = comparatorReportList.stream().map(Report::getProdProcedureId).distinct().collect(Collectors.toList());
|
|
List<Integer> targetComparator = comparatorReportList.stream().map(Report::getProdProcedureId).distinct().collect(Collectors.toList());
|
|
boolean match = targetComparator.containsAll(hasNotReportProdProduceIds);
|
|
boolean match = targetComparator.containsAll(hasNotReportProdProduceIds);
|
|
if(match){
|
|
if(match){
|
|
rounding+=1;
|
|
rounding+=1;
|
|
|
|
+ roundingSteelNums.add(steelNum);
|
|
|
|
+ //找到参与凑整的钢印号
|
|
|
|
+ List<Integer> hasJoinReportIds = comparatorReportList.stream().map(Report::getId).collect(Collectors.toList());
|
|
|
|
+ roundingSteelNums.addAll(reportSteelNums.stream().filter(r -> hasJoinReportIds.contains(r.getReportId())).map(ReportSteelNum::getSteelNum).collect(Collectors.toList()));
|
|
List<ReportSteelNum> newReportSteelNums=new ArrayList<>();
|
|
List<ReportSteelNum> newReportSteelNums=new ArrayList<>();
|
|
//作为凑整的钢印号直接去掉
|
|
//作为凑整的钢印号直接去掉
|
|
for (int i = 0; i < reportSteelNums.size(); i++) {
|
|
for (int i = 0; i < reportSteelNums.size(); i++) {
|
|
- if(reportSteelNums.get(i).getSteelNum().equals(steelNum)){
|
|
|
|
|
|
+ if(reportSteelNums.get(i).getSteelNum().equals(steelNum)||roundingSteelNums.contains(reportSteelNums.get(i).getSteelNum())){
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
newReportSteelNums.add(reportSteelNums.get(i));
|
|
newReportSteelNums.add(reportSteelNums.get(i));
|
|
@@ -4898,6 +4908,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ resultMap.put("integratedSteelNums",integratedSteelNums);
|
|
|
|
+ resultMap.put("roundingSteelNums",roundingSteelNums);
|
|
converted = converted.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
converted = converted.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
resultMap.put("integrated",integrated);
|
|
resultMap.put("integrated",integrated);
|
|
resultMap.put("rounding",rounding);
|
|
resultMap.put("rounding",rounding);
|
|
@@ -5007,6 +5019,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
HttpRespMsg msg=new HttpRespMsg();
|
|
HttpRespMsg msg=new HttpRespMsg();
|
|
User user = userMapper.selectById(request.getHeader("token"));
|
|
User user = userMapper.selectById(request.getHeader("token"));
|
|
NumberFormat format = NumberFormat.getPercentInstance();
|
|
NumberFormat format = NumberFormat.getPercentInstance();
|
|
|
|
+ List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, user.getCompanyId()));
|
|
format.setMinimumFractionDigits(2);
|
|
format.setMinimumFractionDigits(2);
|
|
Integer companyId = user.getCompanyId();
|
|
Integer companyId = user.getCompanyId();
|
|
DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
@@ -5023,11 +5036,28 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
boolean viewAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部车间工位计划表");
|
|
boolean viewAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部车间工位计划表");
|
|
List<Map<String, Object>> mapList;
|
|
List<Map<String, Object>> mapList;
|
|
|
|
+ List<Integer> deptIds = new ArrayList<>();
|
|
|
|
+ boolean isViewUser=false;
|
|
if(!viewAll){
|
|
if(!viewAll){
|
|
|
|
+ isFilterDept=1;
|
|
|
|
+ List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getManagerId, user.getId()));
|
|
|
|
+ deptIds=departmentList.stream().map(m->m.getSuperiorId()==null?m.getDepartmentId():m.getSuperiorId()).collect(Collectors.toList());
|
|
mapList = reportMapper.getPlanDataWithStation(companyId, startDate, endDate, user.getId(), pageStart, pageSize);
|
|
mapList = reportMapper.getPlanDataWithStation(companyId, startDate, endDate, user.getId(), pageStart, pageSize);
|
|
}else {
|
|
}else {
|
|
mapList = reportMapper.getPlanDataWithStation(companyId,startDate,endDate,null,pageStart,pageSize);
|
|
mapList = reportMapper.getPlanDataWithStation(companyId,startDate,endDate,null,pageStart,pageSize);
|
|
}
|
|
}
|
|
|
|
+ //有传部门的情况下
|
|
|
|
+ if(filterDeptId!=null){
|
|
|
|
+ //且该部门下没有任何子部门
|
|
|
|
+ Integer count = departmentMapper.selectCount(new LambdaQueryWrapper<Department>().eq(Department::getSuperiorId, filterDeptId));
|
|
|
|
+ if(count<=0){
|
|
|
|
+ //查看人员数据
|
|
|
|
+ isViewUser=true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(isViewUser){
|
|
|
|
+ mapList = reportMapper.getPlanDataWithUser(companyId, startDate, endDate,filterDeptId);
|
|
|
|
+ }
|
|
List<String> dateList = mapList.stream().map(m -> String.valueOf(m.get("startDate"))).distinct().collect(Collectors.toList());
|
|
List<String> dateList = mapList.stream().map(m -> String.valueOf(m.get("startDate"))).distinct().collect(Collectors.toList());
|
|
Map<Object, List<Map<String, Object>>> listMapGroupByDate = mapList.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.get("startDate"))));
|
|
Map<Object, List<Map<String, Object>>> listMapGroupByDate = mapList.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.get("startDate"))));
|
|
List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, companyId));
|
|
List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, companyId));
|
|
@@ -5039,90 +5069,158 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
if(maps==null||maps.size()<=0){
|
|
if(maps==null||maps.size()<=0){
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
- List<Integer> deptIdList;
|
|
|
|
- Map<Object, List<Map<String, Object>>> listMapGroupByDept;
|
|
|
|
|
|
+ List<Integer> deptIdList=new ArrayList<>();
|
|
|
|
+ List<String> userIdList=new ArrayList<>();
|
|
|
|
+ Map<Object, List<Map<String, Object>>> listMapGroupByDept=new HashMap<>();
|
|
|
|
+ Map<Object, List<Map<String, Object>>> listMapGroupByUser=new HashMap<>();
|
|
if(isFilterDept==0){
|
|
if(isFilterDept==0){
|
|
deptIdList = maps.stream().map(m -> Integer.valueOf(String.valueOf(m.get("superiorId")))).distinct().collect(Collectors.toList());
|
|
deptIdList = maps.stream().map(m -> Integer.valueOf(String.valueOf(m.get("superiorId")))).distinct().collect(Collectors.toList());
|
|
listMapGroupByDept = maps.stream().collect(Collectors.groupingBy(m -> Integer.valueOf(String.valueOf(m.get("superiorId")))));
|
|
listMapGroupByDept = maps.stream().collect(Collectors.groupingBy(m -> Integer.valueOf(String.valueOf(m.get("superiorId")))));
|
|
}else {
|
|
}else {
|
|
- deptIdList = maps.stream().filter(m->Integer.valueOf(String.valueOf(m.get("superiorId"))).equals(filterDeptId)).map(m -> Integer.valueOf(String.valueOf(m.get("deptId")))).distinct().collect(Collectors.toList());
|
|
|
|
- listMapGroupByDept = maps.stream().collect(Collectors.groupingBy(m -> Integer.valueOf(String.valueOf(m.get("deptId")))));
|
|
|
|
|
|
+ List<Integer> finalDeptIds = deptIds;
|
|
|
|
+ if(isViewUser){
|
|
|
|
+ userIdList= maps.stream().map(m -> String.valueOf(m.get("userId"))).distinct().collect(Collectors.toList());
|
|
|
|
+ listMapGroupByUser = maps.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.get("userId"))));
|
|
|
|
+ }else {
|
|
|
|
+ deptIdList = maps.stream().filter(m->filterDeptId!=null?Integer.valueOf(String.valueOf(m.get("superiorId"))).equals(filterDeptId):finalDeptIds.contains(Integer.valueOf(String.valueOf(m.get("superiorId"))))).map(m -> Integer.valueOf(String.valueOf(m.get("deptId")))).distinct().collect(Collectors.toList());
|
|
|
|
+ listMapGroupByDept = maps.stream().collect(Collectors.groupingBy(m -> Integer.valueOf(String.valueOf(m.get("deptId")))));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- for (Integer dept : deptIdList) {
|
|
|
|
- Map<String,Object> item=new HashMap<>();
|
|
|
|
- item.put("startDate",date.replaceAll("-",""));
|
|
|
|
- List<Map<String, Object>> list = listMapGroupByDept.get(dept);
|
|
|
|
- item.put("deptId",dept);
|
|
|
|
- item.put("departmentCascade",convertDepartmentIdToCascade(dept,departmentList));
|
|
|
|
- BigDecimal planNum=new BigDecimal(0);
|
|
|
|
- BigDecimal nowNum=new BigDecimal(0);
|
|
|
|
- BigDecimal planCost=new BigDecimal(0);
|
|
|
|
- BigDecimal nowCost=new BigDecimal(0);
|
|
|
|
- BigDecimal planHour=new BigDecimal(0);
|
|
|
|
- BigDecimal nowHour=new BigDecimal(0);
|
|
|
|
- for (Map<String, Object> map : list) {
|
|
|
|
- planNum=planNum.add(new BigDecimal((String.valueOf(map.get("planNum")))));
|
|
|
|
- nowNum=nowNum.add(new BigDecimal((String.valueOf(map.get("nowNum")))));
|
|
|
|
- planCost=planCost.add(new BigDecimal((String.valueOf(map.get("planCost")))));
|
|
|
|
- nowCost=nowCost.add(new BigDecimal((String.valueOf(map.get("nowCost")))));
|
|
|
|
- planHour=planHour.add(new BigDecimal((String.valueOf(map.get("planHour")))));
|
|
|
|
- nowHour=nowHour.add(new BigDecimal((String.valueOf(map.get("nowHour")))));
|
|
|
|
|
|
+ if(isViewUser){
|
|
|
|
+ for (String userId : userIdList) {
|
|
|
|
+ Map<String,Object> item=new HashMap<>();
|
|
|
|
+ item.put("startDate",date.replaceAll("-",""));
|
|
|
|
+ List<Map<String, Object>> list = listMapGroupByUser.get(userId);
|
|
|
|
+ item.put("userId",userId);
|
|
|
|
+ BigDecimal planCost=new BigDecimal(0);
|
|
|
|
+ BigDecimal nowCost=new BigDecimal(0);
|
|
|
|
+ BigDecimal planHour=new BigDecimal(0);
|
|
|
|
+ BigDecimal nowHour=new BigDecimal(0);
|
|
|
|
+ for (Map<String, Object> map : list) {
|
|
|
|
+ planCost=planCost.add(new BigDecimal((String.valueOf(map.get("planCost")))));
|
|
|
|
+ nowCost=nowCost.add(new BigDecimal((String.valueOf(map.get("nowCost")))));
|
|
|
|
+ planHour=planHour.add(new BigDecimal((String.valueOf(map.get("planHour")))));
|
|
|
|
+ nowHour=nowHour.add(new BigDecimal((String.valueOf(map.get("nowHour")))));
|
|
|
|
+ }
|
|
|
|
+ planCost=planCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ nowCost=nowCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ planHour=planHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ nowHour=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);
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ for (Integer dept : deptIdList) {
|
|
|
|
+ Map<String,Object> item=new HashMap<>();
|
|
|
|
+ item.put("startDate",date.replaceAll("-",""));
|
|
|
|
+ List<Map<String, Object>> list = listMapGroupByDept.get(dept);
|
|
|
|
+ item.put("deptId",dept);
|
|
|
|
+ item.put("departmentCascade",convertDepartmentIdToCascade(dept,departmentList));
|
|
|
|
+ BigDecimal planNum=new BigDecimal(0);
|
|
|
|
+ BigDecimal nowNum=new BigDecimal(0);
|
|
|
|
+ BigDecimal planCost=new BigDecimal(0);
|
|
|
|
+ BigDecimal nowCost=new BigDecimal(0);
|
|
|
|
+ BigDecimal planHour=new BigDecimal(0);
|
|
|
|
+ BigDecimal nowHour=new BigDecimal(0);
|
|
|
|
+ for (Map<String, Object> map : list) {
|
|
|
|
+ planNum=planNum.add(new BigDecimal((String.valueOf(map.get("planNum")))));
|
|
|
|
+ nowNum=nowNum.add(new BigDecimal((String.valueOf(map.get("nowNum")))));
|
|
|
|
+ planCost=planCost.add(new BigDecimal((String.valueOf(map.get("planCost")))));
|
|
|
|
+ nowCost=nowCost.add(new BigDecimal((String.valueOf(map.get("nowCost")))));
|
|
|
|
+ planHour=planHour.add(new BigDecimal((String.valueOf(map.get("planHour")))));
|
|
|
|
+ nowHour=nowHour.add(new BigDecimal((String.valueOf(map.get("nowHour")))));
|
|
|
|
+ }
|
|
|
|
+ planNum=planNum.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ nowNum=nowNum.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ planCost=planCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ nowCost=nowCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ planHour=planHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ nowHour=nowHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ item.put("planNum",planNum.doubleValue());
|
|
|
|
+ item.put("nowNum",nowNum.doubleValue());
|
|
|
|
+ item.put("planCost",planCost.doubleValue());
|
|
|
|
+ item.put("nowCost",nowCost.doubleValue());
|
|
|
|
+ item.put("planHour",planHour.doubleValue());
|
|
|
|
+ item.put("nowHour",nowHour.doubleValue());
|
|
|
|
+ BigDecimal progress = nowNum.divide(planNum,2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ item.put("progress",format.format(progress.doubleValue()));
|
|
|
|
+ resultList.add(item);
|
|
}
|
|
}
|
|
- planNum=planNum.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- nowNum=nowNum.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- planCost=planCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- nowCost=nowCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- planHour=planHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- nowHour=nowHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- item.put("planNum",planNum.doubleValue());
|
|
|
|
- item.put("nowNum",nowNum.doubleValue());
|
|
|
|
- item.put("planCost",planCost.doubleValue());
|
|
|
|
- item.put("nowCost",nowCost.doubleValue());
|
|
|
|
- item.put("planHour",planHour.doubleValue());
|
|
|
|
- item.put("nowHour",nowHour.doubleValue());
|
|
|
|
- BigDecimal progress = nowNum.divide(planNum,2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- item.put("progress",format.format(progress.doubleValue()));
|
|
|
|
- resultList.add(item);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- List<String> deptIdList = resultList.stream().map(r -> String.valueOf(r.get("deptId"))).distinct().collect(Collectors.toList());
|
|
|
|
List<Map<String,Object>> lastList=new ArrayList<>();
|
|
List<Map<String,Object>> lastList=new ArrayList<>();
|
|
- for (String dept : deptIdList) {
|
|
|
|
- Map<String,Object> map=new HashMap<>();
|
|
|
|
- map.put("departmentCascade",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);
|
|
|
|
- BigDecimal totalPlanNum = new BigDecimal(0);
|
|
|
|
- BigDecimal totalNowNum = new BigDecimal(0);
|
|
|
|
- BigDecimal totalPlanHour = new BigDecimal(0);
|
|
|
|
- BigDecimal totalNowHour = new BigDecimal(0);
|
|
|
|
- BigDecimal totalPlanCost = new BigDecimal(0);
|
|
|
|
- BigDecimal totalNowCost= new BigDecimal(0);
|
|
|
|
- for (Map<String, Object> stringObjectMap : maps) {
|
|
|
|
- totalPlanNum=totalPlanNum.add(new BigDecimal((String.valueOf(stringObjectMap.get("planNum")))));
|
|
|
|
- totalNowNum=totalNowNum.add(new BigDecimal((String.valueOf(stringObjectMap.get("nowNum")))));
|
|
|
|
- totalPlanHour=totalPlanHour.add(new BigDecimal((String.valueOf(stringObjectMap.get("planHour")))));
|
|
|
|
- totalNowHour=totalNowHour.add(new BigDecimal((String.valueOf(stringObjectMap.get("nowHour")))));
|
|
|
|
- totalPlanCost=totalPlanCost.add(new BigDecimal((String.valueOf(stringObjectMap.get("planCost")))));
|
|
|
|
- totalNowCost=totalNowCost.add(new BigDecimal((String.valueOf(stringObjectMap.get("nowCost")))));
|
|
|
|
|
|
+ if(isViewUser){
|
|
|
|
+ List<String> userIdList = resultList.stream().map(r -> String.valueOf(r.get("userId"))).distinct().collect(Collectors.toList());
|
|
|
|
+ for (String userId : userIdList) {
|
|
|
|
+ Map<String,Object> map=new HashMap<>();
|
|
|
|
+ List<Map<String, Object>> maps = resultList.stream().filter(r -> String.valueOf(r.get("userId")).equals(userId)).collect(Collectors.toList());
|
|
|
|
+ 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():"");
|
|
|
|
+ BigDecimal totalPlanHour = new BigDecimal(0);
|
|
|
|
+ BigDecimal totalNowHour = new BigDecimal(0);
|
|
|
|
+ BigDecimal totalPlanCost = new BigDecimal(0);
|
|
|
|
+ BigDecimal totalNowCost= new BigDecimal(0);
|
|
|
|
+ for (Map<String, Object> stringObjectMap : maps) {
|
|
|
|
+ totalPlanHour=totalPlanHour.add(new BigDecimal((String.valueOf(stringObjectMap.get("planHour")))));
|
|
|
|
+ totalNowHour=totalNowHour.add(new BigDecimal((String.valueOf(stringObjectMap.get("nowHour")))));
|
|
|
|
+ totalPlanCost=totalPlanCost.add(new BigDecimal((String.valueOf(stringObjectMap.get("planCost")))));
|
|
|
|
+ totalNowCost=totalNowCost.add(new BigDecimal((String.valueOf(stringObjectMap.get("nowCost")))));
|
|
|
|
+ }
|
|
|
|
+ totalPlanHour=totalPlanHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ totalNowHour=totalNowHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ totalPlanCost=totalPlanCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ totalNowCost=totalNowCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ map.put("totalPlanHour",totalPlanHour.doubleValue());
|
|
|
|
+ map.put("totalNowHour",totalNowHour.doubleValue());
|
|
|
|
+ map.put("totalPlanCost",totalPlanCost.doubleValue());
|
|
|
|
+ map.put("totalNowCost",totalNowCost.doubleValue());
|
|
|
|
+ lastList.add(map);
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ 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));
|
|
|
|
+ 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);
|
|
|
|
+ BigDecimal totalPlanNum = new BigDecimal(0);
|
|
|
|
+ BigDecimal totalNowNum = new BigDecimal(0);
|
|
|
|
+ BigDecimal totalPlanHour = new BigDecimal(0);
|
|
|
|
+ BigDecimal totalNowHour = new BigDecimal(0);
|
|
|
|
+ BigDecimal totalPlanCost = new BigDecimal(0);
|
|
|
|
+ BigDecimal totalNowCost= new BigDecimal(0);
|
|
|
|
+ for (Map<String, Object> stringObjectMap : maps) {
|
|
|
|
+ totalPlanNum=totalPlanNum.add(new BigDecimal((String.valueOf(stringObjectMap.get("planNum")))));
|
|
|
|
+ totalNowNum=totalNowNum.add(new BigDecimal((String.valueOf(stringObjectMap.get("nowNum")))));
|
|
|
|
+ totalPlanHour=totalPlanHour.add(new BigDecimal((String.valueOf(stringObjectMap.get("planHour")))));
|
|
|
|
+ totalNowHour=totalNowHour.add(new BigDecimal((String.valueOf(stringObjectMap.get("nowHour")))));
|
|
|
|
+ totalPlanCost=totalPlanCost.add(new BigDecimal((String.valueOf(stringObjectMap.get("planCost")))));
|
|
|
|
+ totalNowCost=totalNowCost.add(new BigDecimal((String.valueOf(stringObjectMap.get("nowCost")))));
|
|
|
|
+ }
|
|
|
|
+ totalPlanNum=totalPlanNum.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ totalNowNum=totalNowNum.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ totalPlanHour=totalPlanHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ totalNowHour=totalNowHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ totalPlanCost=totalPlanCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ totalNowCost=totalNowCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ map.put("totalPlanNum",totalPlanNum.doubleValue());
|
|
|
|
+ map.put("totalNowNum",totalNowNum.doubleValue());
|
|
|
|
+ map.put("totalPlanHour",totalPlanHour.doubleValue());
|
|
|
|
+ map.put("totalNowHour",totalNowHour.doubleValue());
|
|
|
|
+ map.put("totalPlanCost",totalPlanCost.doubleValue());
|
|
|
|
+ map.put("totalNowCost",totalNowCost.doubleValue());
|
|
|
|
+ BigDecimal totalProgress = totalNowNum.divide(totalPlanNum, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ map.put("totalProgress",format.format(totalProgress.doubleValue()));
|
|
|
|
+ lastList.add(map);
|
|
}
|
|
}
|
|
- totalPlanNum=totalPlanNum.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- totalNowNum=totalNowNum.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- totalPlanHour=totalPlanHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- totalNowHour=totalNowHour.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- totalPlanCost=totalPlanCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- totalNowCost=totalNowCost.setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- map.put("totalPlanNum",totalPlanNum.doubleValue());
|
|
|
|
- map.put("totalNowNum",totalNowNum.doubleValue());
|
|
|
|
- map.put("totalPlanHour",totalPlanHour.doubleValue());
|
|
|
|
- map.put("totalNowHour",totalNowHour.doubleValue());
|
|
|
|
- map.put("totalPlanCost",totalPlanCost.doubleValue());
|
|
|
|
- map.put("totalNowCost",totalNowCost.doubleValue());
|
|
|
|
- BigDecimal totalProgress = totalNowNum.divide(totalPlanNum, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- map.put("totalProgress",format.format(totalProgress.doubleValue()));
|
|
|
|
- lastList.add(map);
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
if(stationId!=null){
|
|
if(stationId!=null){
|
|
lastList=lastList.stream().filter(l->Integer.valueOf(String.valueOf(l.get("deptId"))).equals(stationId)).collect(Collectors.toList());
|
|
lastList=lastList.stream().filter(l->Integer.valueOf(String.valueOf(l.get("deptId"))).equals(stationId)).collect(Collectors.toList());
|
|
}
|
|
}
|
|
@@ -5133,6 +5231,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
resultMap.put("records",(pageIndex==null||pageSize==null)?lastList:lastList.subList(pageStart,pageSize));
|
|
resultMap.put("records",(pageIndex==null||pageSize==null)?lastList:lastList.subList(pageStart,pageSize));
|
|
resultMap.put("header",dataStringList);
|
|
resultMap.put("header",dataStringList);
|
|
resultMap.put("total",lastList.size());
|
|
resultMap.put("total",lastList.size());
|
|
|
|
+ resultMap.put("isViewUser",isViewUser);
|
|
msg.setData(resultMap);
|
|
msg.setData(resultMap);
|
|
return msg;
|
|
return msg;
|
|
}
|
|
}
|