|
@@ -12630,7 +12630,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public HttpRespMsg groupExpendProcessList(String startDate, String endDate) {
|
|
|
+ public HttpRespMsg groupExpendProcessList(String startDate, String endDate,Integer pageIndex,Integer pageSize) {
|
|
|
HttpRespMsg msg=new HttpRespMsg();
|
|
|
User user = userMapper.selectById(request.getHeader("token"));
|
|
|
NumberFormat percentFormat = NumberFormat.getPercentInstance();
|
|
@@ -12641,11 +12641,17 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
List<Department> allDeptList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, companyId));
|
|
|
List<Map<String,Object>> resultList;
|
|
|
Long total;
|
|
|
+ Integer size=null;
|
|
|
+ Integer start=null;
|
|
|
+ if(pageIndex!=null&&pageSize!=null){
|
|
|
+ size=pageSize;
|
|
|
+ start=(pageIndex-1)*size;
|
|
|
+ }
|
|
|
//是否具有查看全部数据的权限
|
|
|
if(!viewAll){
|
|
|
if(!incharger){
|
|
|
//只能查看本人的数据
|
|
|
- resultList=projectMapper.groupExpendProcessList(user.getId(),companyId,startDate,endDate,null);
|
|
|
+ resultList=projectMapper.groupExpendProcessList(user.getId(),companyId,startDate,endDate,null,start,size);
|
|
|
total=projectMapper.groupExpendProcessListCount(user.getId(),companyId,startDate,endDate,null);
|
|
|
}else {
|
|
|
List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().select(Department::getDepartmentId).eq(Department::getManagerId, user.getId()));
|
|
@@ -12660,50 +12666,16 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
List<Integer> branchDepartment = getBranchDepartment(integer, allDeptList);
|
|
|
deptIds.addAll(branchDepartment);
|
|
|
}
|
|
|
- resultList=projectMapper.groupExpendProcessList(null,companyId,startDate,endDate,deptIds);
|
|
|
+ resultList=projectMapper.groupExpendProcessList(null,companyId,startDate,endDate,deptIds,start,size);
|
|
|
total=projectMapper.groupExpendProcessListCount(null,companyId,startDate,endDate,deptIds);
|
|
|
}
|
|
|
}else {
|
|
|
- resultList=projectMapper.groupExpendProcessList(null,companyId,startDate,endDate,null);
|
|
|
+ resultList=projectMapper.groupExpendProcessList(null,companyId,startDate,endDate,null,start,size);
|
|
|
total=projectMapper.groupExpendProcessListCount(null,companyId,startDate,endDate,null);
|
|
|
}
|
|
|
- Map<String, List<Map<String, Object>>> listMapGroupList = resultList.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.get("corpwxDeptId"))));
|
|
|
- List<String> departmentNameList = resultList.stream().map(m -> String.valueOf(m.get("corpwxDeptId"))).distinct().collect(Collectors.toList());
|
|
|
- List<Map<String,Object>> lastList=new ArrayList<>();
|
|
|
- for (String deptName : departmentNameList) {
|
|
|
- List<Map<String, Object>> maps = listMapGroupList.get(deptName);
|
|
|
- //再根据每个部门下员工数据长度合并人员名称列
|
|
|
- Map<String, List<Map<String, Object>>> listMapGroupList2 = maps.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.get("groupName"))));
|
|
|
- List<String> groupNameList = maps.stream().map(m -> String.valueOf(m.get("groupName"))).distinct().collect(Collectors.toList());
|
|
|
- for (String groupName : groupNameList) {
|
|
|
- List<Map<String, Object>> mapList1 = listMapGroupList2.get(groupName);
|
|
|
- double planHour = mapList1.stream().mapToDouble(m -> Double.valueOf(String.valueOf(m.get("planHour")))).sum();
|
|
|
- double normalHour = mapList1.stream().mapToDouble(m -> Double.valueOf(String.valueOf(m.get("normalHour")))).sum();
|
|
|
- double overHour = mapList1.stream().mapToDouble(m -> Double.valueOf(String.valueOf(m.get("overHour")))).sum();
|
|
|
- double realHour = mapList1.stream().mapToDouble(m -> Double.valueOf(String.valueOf(m.get("realHour")))).sum();
|
|
|
- double realCost = mapList1.stream().mapToDouble(m -> Double.valueOf(String.valueOf(m.get("realCost")))).sum();
|
|
|
- double planHourNum = new BigDecimal(planHour).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- double normalHourNum = new BigDecimal(normalHour).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- double overHourNum = new BigDecimal(overHour).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- double realHourNum = new BigDecimal(realHour).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- double realCostNum = new BigDecimal(realCost).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- BigDecimal decimal = new BigDecimal(realHourNum);
|
|
|
- decimal=decimal.divide(new BigDecimal(planHourNum),4,BigDecimal.ROUND_HALF_UP);
|
|
|
- Map<String,Object> item=new HashMap<>();
|
|
|
- item.put("deptId",deptName);
|
|
|
- item.put("corpwxDeptId",maps.get(0).get("corpwxDeptId"));
|
|
|
- item.put("groupName",groupName);
|
|
|
- item.put("planHour",planHourNum);
|
|
|
- item.put("normalHour",normalHourNum);
|
|
|
- item.put("overHour",overHourNum);
|
|
|
- item.put("realHour",realHourNum);
|
|
|
- item.put("realCost",realCostNum);
|
|
|
- item.put("process",percentFormat.format(decimal.doubleValue()));
|
|
|
- lastList.add(item);
|
|
|
- }
|
|
|
- }
|
|
|
Map<String,Object> resultMap=new HashMap<>();
|
|
|
- resultMap.put("record",lastList);
|
|
|
+ resultMap.put("record",resultList);
|
|
|
+ resultMap.put("total",total);
|
|
|
msg.setData(resultMap);
|
|
|
return msg;
|
|
|
}
|
|
@@ -12713,7 +12685,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
HttpRespMsg httpRespMsg=new HttpRespMsg();
|
|
|
NumberFormat percentFormat = NumberFormat.getPercentInstance();
|
|
|
percentFormat.setMaximumFractionDigits(2);
|
|
|
- HttpRespMsg resultMsg = groupExpendProcessList(startDate,endDate);
|
|
|
+ HttpRespMsg resultMsg = groupExpendProcessList(startDate,endDate,null,null);
|
|
|
Map<String, Object> msgData = (Map<String, Object>) resultMsg.getData();
|
|
|
List<Map<String, Object>> mapList = (List<Map<String, Object>>) msgData.get("record");
|
|
|
Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
|
|
@@ -12798,6 +12770,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
SXSSFRow row0 = sheet.createRow(rowNum++);
|
|
|
row0.setHeight((short)500);
|
|
|
List<String> row_first =new ArrayList<>();
|
|
|
+ row_first.add("项目名称");
|
|
|
row_first.add("负责部门");
|
|
|
row_first.add("任务分组");
|
|
|
row_first.add("计划工时(财务)");
|
|
@@ -12811,11 +12784,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
tempCell.setCellValue(row_first.get(i));
|
|
|
tempCell.setCellStyle(headStyle);
|
|
|
}
|
|
|
- sheet.addMergedRegion(new CellRangeAddress(0,0,3,6));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0,0,4,7));
|
|
|
sheet.addMergedRegion(new CellRangeAddress(0,1,0,0));
|
|
|
sheet.addMergedRegion(new CellRangeAddress(0,1,1,1));
|
|
|
sheet.addMergedRegion(new CellRangeAddress(0,1,2,2));
|
|
|
- sheet.addMergedRegion(new CellRangeAddress(0,1,7,7));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0,1,3,3));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0,1,8,8));
|
|
|
//第二行
|
|
|
SXSSFRow row1 = sheet.createRow(rowNum++);
|
|
|
row1.setHeight((short)500);
|
|
@@ -12823,6 +12797,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
row_second.add("");
|
|
|
row_second.add("");
|
|
|
row_second.add("");
|
|
|
+ row_second.add("");
|
|
|
row_second.add("正常工时");
|
|
|
row_second.add("加班工时");
|
|
|
row_second.add("合计工时");
|
|
@@ -12834,50 +12809,43 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
tempCell.setCellStyle(headStyle);
|
|
|
}
|
|
|
List<String> list=new ArrayList<>();
|
|
|
- Map<String, List<Map<String, Object>>> listMapGroupList = mapList.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.get("corpwxDeptId"))));
|
|
|
- List<String> departmentNameList = mapList.stream().map(m -> String.valueOf(m.get("corpwxDeptId"))).distinct().collect(Collectors.toList());
|
|
|
- //根据每个部门下数据长度合并部门名称列
|
|
|
- int deptIndex=rowNum;
|
|
|
- int allRowNum=0;
|
|
|
- for (String deptName : departmentNameList) {
|
|
|
- List<Map<String, Object>> maps = listMapGroupList.get(deptName);
|
|
|
- //再根据每个部门下员工数据长度合并人员名称列
|
|
|
- Map<String, List<Map<String, Object>>> listMapGroupList2 = maps.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.get("groupName"))));
|
|
|
- List<String> groupNameList = maps.stream().map(m -> String.valueOf(m.get("groupName"))).distinct().collect(Collectors.toList());
|
|
|
- if(groupNameList.size()>1){
|
|
|
- sheet.addMergedRegion(new CellRangeAddress(deptIndex,deptIndex+groupNameList.size()-1,0,0));
|
|
|
- }
|
|
|
- deptIndex+=groupNameList.size();
|
|
|
- for (String groupName : groupNameList) {
|
|
|
- List<Map<String, Object>> mapList1 = listMapGroupList2.get(groupName);
|
|
|
- list.add("$departmentName="+deptName+"$");
|
|
|
- list.add(groupName);
|
|
|
- double planHour = mapList1.stream().mapToDouble(m -> Double.valueOf(String.valueOf(m.get("planHour")))).sum();
|
|
|
- double normalHour = mapList1.stream().mapToDouble(m -> Double.valueOf(String.valueOf(m.get("normalHour")))).sum();
|
|
|
- double overHour = mapList1.stream().mapToDouble(m -> Double.valueOf(String.valueOf(m.get("overHour")))).sum();
|
|
|
- double realHour = mapList1.stream().mapToDouble(m -> Double.valueOf(String.valueOf(m.get("realHour")))).sum();
|
|
|
- double realCost = mapList1.stream().mapToDouble(m -> Double.valueOf(String.valueOf(m.get("realCost")))).sum();
|
|
|
- double planHourNum = new BigDecimal(planHour).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- double normalHourNum = new BigDecimal(normalHour).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- double overHourNum = new BigDecimal(overHour).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- double realHourNum = new BigDecimal(realHour).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- double realCostNum = new BigDecimal(realCost).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- list.add(String.valueOf(planHourNum));
|
|
|
- list.add(String.valueOf(normalHourNum));
|
|
|
- list.add(String.valueOf(overHourNum));
|
|
|
- list.add(String.valueOf(realHourNum));
|
|
|
- list.add(String.valueOf(realCostNum));
|
|
|
- BigDecimal decimal = new BigDecimal(realHourNum);
|
|
|
- decimal=decimal.divide(new BigDecimal(planHourNum),4,BigDecimal.ROUND_HALF_UP);
|
|
|
- list.add(percentFormat.format(decimal.doubleValue()));
|
|
|
- }
|
|
|
- allRowNum+=groupNameList.size();
|
|
|
+ Map<String, List<Map<String, Object>>> listMapGroupList = mapList.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.get("projectId"))));
|
|
|
+ List<String> projectIdList = mapList.stream().map(m -> String.valueOf(m.get("projectId"))).distinct().collect(Collectors.toList());
|
|
|
+ //根据每个项目合并项目列表
|
|
|
+ Integer projectNum=rowNum;
|
|
|
+ for (String projectId : projectIdList) {
|
|
|
+ List<Map<String, Object>> maps = listMapGroupList.get(projectId);
|
|
|
+ if(maps.size()>1){
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(projectNum,projectNum+maps.size()-1,0,0));
|
|
|
+ }
|
|
|
+ Map<String, List<Map<String, Object>>> listMapGroupDeptList = maps.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.get("corpwxDeptId"))));
|
|
|
+ List<String> deptIdList = maps.stream().map(m -> String.valueOf(m.get("corpwxDeptId"))).distinct().collect(Collectors.toList());
|
|
|
+ Integer deptNum=projectNum;
|
|
|
+ for (String deptId : deptIdList) {
|
|
|
+ List<Map<String, Object>> maps1 = listMapGroupDeptList.get(deptId);
|
|
|
+ if(maps1.size()>1){
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(deptNum,deptNum+maps1.size()-1,1,1));
|
|
|
+ }
|
|
|
+ deptNum+=maps1.size();
|
|
|
+ }
|
|
|
+ projectNum+=maps.size()+1;
|
|
|
+ }
|
|
|
+ for (Map<String, Object> map : mapList) {
|
|
|
+ list.add(String.valueOf(map.get("projectName")));
|
|
|
+ list.add(String.valueOf(map.get("corpwxDeptId")));
|
|
|
+ list.add(String.valueOf(map.get("groupName")));
|
|
|
+ list.add(String.valueOf(map.get("planHour")));
|
|
|
+ list.add(String.valueOf(map.get("normalHour")));
|
|
|
+ list.add(String.valueOf(map.get("overHour")));
|
|
|
+ list.add(String.valueOf(map.get("realHour")));
|
|
|
+ list.add(String.valueOf(map.get("realCost")));
|
|
|
+ list.add(String.valueOf(map.get("process")));
|
|
|
}
|
|
|
int k=0;
|
|
|
- for(int i = 0;i<allRowNum;i++){
|
|
|
+ for(int i = 0;i<mapList.size();i++){
|
|
|
SXSSFRow tempRow = sheet.createRow(rowNum++);
|
|
|
tempRow.setHeight((short)500);
|
|
|
- for(int j=0;j<8;j++){
|
|
|
+ for(int j=0;j<9;j++){
|
|
|
SXSSFCell tempCell = tempRow.createCell(j);
|
|
|
String cellValue = "";
|
|
|
tempCell.setCellStyle(cellStyle);
|