|
@@ -5001,7 +5001,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public HttpRespMsg getPlanDataWithStation(Integer isFilterDept,Integer stationId, String startDate, String endDate, Integer pageIndex, Integer pageSize) {
|
|
|
+ public HttpRespMsg getPlanDataWithStation(Integer isFilterDept,Integer filterDeptId,Integer stationId, String startDate, String endDate, Integer pageIndex, Integer pageSize) {
|
|
|
HttpRespMsg msg=new HttpRespMsg();
|
|
|
User user = userMapper.selectById(request.getHeader("token"));
|
|
|
NumberFormat format = NumberFormat.getPercentInstance();
|
|
@@ -5019,20 +5019,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
pageStart = (pageIndex -1) * pageSize;
|
|
|
pageSize=pageStart+pageSize;
|
|
|
}
|
|
|
- List<Integer> deptIds=null;
|
|
|
- if(isFilterDept!=0){
|
|
|
- List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().select(Department::getDepartmentId).eq(Department::getSuperiorId, stationId));
|
|
|
- deptIds=departmentList.stream().map(Department::getDepartmentId).distinct().collect(Collectors.toList());
|
|
|
- }
|
|
|
boolean viewAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部车间工位计划表");
|
|
|
List<Map<String, Object>> mapList;
|
|
|
- Integer total;
|
|
|
if(!viewAll){
|
|
|
- mapList = reportMapper.getPlanDataWithStation(companyId, startDate, endDate, user.getId(), deptIds, pageStart, pageSize);
|
|
|
-// total = reportMapper.getPlanDataWithStationCount(companyId, startDate, endDate, user.getId(), deptIds, null, null);
|
|
|
+ mapList = reportMapper.getPlanDataWithStation(companyId, startDate, endDate, user.getId(), pageStart, pageSize);
|
|
|
}else {
|
|
|
- mapList = reportMapper.getPlanDataWithStation(companyId,startDate,endDate,null,deptIds,pageStart,pageSize);
|
|
|
-// total =reportMapper.getPlanDataWithStationCount(companyId,startDate,endDate,null,deptIds,null,null);
|
|
|
+ mapList = reportMapper.getPlanDataWithStation(companyId,startDate,endDate,null,pageStart,pageSize);
|
|
|
}
|
|
|
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"))));
|
|
@@ -5045,20 +5037,27 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
if(maps==null||maps.size()<=0){
|
|
|
continue;
|
|
|
}
|
|
|
- List<Integer> deptIdList = maps.stream().map(m -> Integer.valueOf(String.valueOf(m.get("deptId")))).distinct().collect(Collectors.toList());
|
|
|
- Map<Object, List<Map<String, Object>>> listMapGroupByDept = maps.stream().collect(Collectors.groupingBy(m -> Integer.valueOf(String.valueOf(m.get("deptId")))));
|
|
|
- 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);
|
|
|
+ List<Integer> deptIdList;
|
|
|
+ Map<Object, List<Map<String, Object>>> listMapGroupByDept;
|
|
|
+ if(isFilterDept==0){
|
|
|
+ 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")))));
|
|
|
+ }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")))));
|
|
|
+ }
|
|
|
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")))));
|
|
@@ -5122,14 +5121,59 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
map.put("totalProgress",format.format(totalProgress.doubleValue()));
|
|
|
lastList.add(map);
|
|
|
}
|
|
|
+ if(stationId!=null){
|
|
|
+ lastList=lastList.stream().filter(l->Integer.valueOf(String.valueOf(l.get("deptId"))).equals(stationId)).collect(Collectors.toList());
|
|
|
+ }
|
|
|
//得到的数据再根据部门过滤一下
|
|
|
- if(pageSize>lastList.size()){
|
|
|
+ if(pageSize!=null&&pageSize>lastList.size()){
|
|
|
pageSize=lastList.size();
|
|
|
}
|
|
|
- resultMap.put("records",lastList.subList(pageStart,pageSize));
|
|
|
+ resultMap.put("records",(pageIndex==null||pageSize==null)?lastList:lastList.subList(pageStart,pageSize));
|
|
|
resultMap.put("header",dataStringList);
|
|
|
resultMap.put("total",lastList.size());
|
|
|
msg.setData(resultMap);
|
|
|
return msg;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg exportPlanDataWithStation(Integer isFilterDept, Integer filterDeptId, Integer stationId, String startDate, String endDate) {
|
|
|
+ HttpRespMsg msg=new HttpRespMsg();
|
|
|
+ Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
|
|
|
+ HttpRespMsg data = getPlanDataWithStation(isFilterDept, filterDeptId, stationId, startDate, endDate, null, null);
|
|
|
+ Map<String, Object> objectMap = (Map<String, Object>) data.data;
|
|
|
+ List<Map<String, Object>> mapList = (List<Map<String, Object>>) objectMap.get("records");
|
|
|
+ List<String> title=new ArrayList<>();
|
|
|
+ title.add("部门名称");
|
|
|
+ List<String> headerList = (List<String>) objectMap.get("header");
|
|
|
+ title.addAll(headerList);
|
|
|
+ title.add("合计");
|
|
|
+ List<List<String>> dataList=new ArrayList<>();
|
|
|
+ dataList.add(title);
|
|
|
+ for (Map<String, Object> map : mapList) {
|
|
|
+ List<String> item=new ArrayList<>();
|
|
|
+ item.add((String) map.get("departmentCascade"));
|
|
|
+ List<Map<String, Object>> deptList = (List<Map<String, Object>>) map.get("deptList");
|
|
|
+ for (String dateString : headerList) {
|
|
|
+ Optional<Map<String, Object>> first = deptList.stream().filter(d -> String.valueOf(d.get("startDate")).equals(dateString)).findFirst();
|
|
|
+ if(first.isPresent()){
|
|
|
+ Map<String, Object> target = first.get();
|
|
|
+ item.add("计划数:"+target.get("planNum")+" "+target.get("planHour")+"分钟"+" "+target.get("planCost")+"元"+"\n"+
|
|
|
+ "实际数:"+target.get("nowNum")+" "+target.get("nowHour")+"分钟"+" "+target.get("nowCost")+"元"+"\n"+
|
|
|
+ "进度:"+target.get("progress"));
|
|
|
+ }else {
|
|
|
+ item.add("");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ item.add("计划数:"+map.get("totalPlanNum")+" "+map.get("totalPlanHour")+"分钟"+" "+map.get("totalPlanCost")+"元"+"\n"+
|
|
|
+ "实际数:"+map.get("totalNowNum")+" "+map.get("totalNowHour")+"分钟"+" "+map.get("totalNowCost")+"元"+"\n"+
|
|
|
+ "进度:"+map.get("totalProgress"));
|
|
|
+ dataList.add(item);
|
|
|
+
|
|
|
+ }
|
|
|
+ Company company = companyMapper.selectById(companyId);
|
|
|
+ String fileName=("车间工位计划表_")+company.getCompanyName()+System.currentTimeMillis();
|
|
|
+ String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName, dataList, path);
|
|
|
+ msg.setData(resp);
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
}
|