|
@@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
@@ -4808,7 +4809,7 @@ 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<Integer> targetComparator = comparatorReportList.stream().map(Report::getProdProcedureId).distinct().collect(Collectors.toList());
|
|
@@ -4829,7 +4830,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
check=check.multiply(divide);
|
|
|
bigDecimal=bigDecimal.add(check);
|
|
|
}
|
|
|
- converted=bigDecimal.doubleValue();
|
|
|
+ converted+=bigDecimal.doubleValue();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -4880,4 +4881,74 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
return msg;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg getPlanDataWithStation(Integer isFilterDept,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();
|
|
|
+ format.setMinimumFractionDigits(2);
|
|
|
+ Integer companyId = user.getCompanyId();
|
|
|
+ DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ DateTimeFormatter dtf1=DateTimeFormatter.ofPattern("yyyyMMdd");
|
|
|
+ List<LocalDate> dates = getDays(LocalDate.parse(startDate, dtf), LocalDate.parse(endDate, dtf));
|
|
|
+ List<String> dataStringList=new ArrayList<>();
|
|
|
+ for (LocalDate localDate : dates) {
|
|
|
+ dataStringList.add(localDate.format(dtf1));
|
|
|
+ }
|
|
|
+ Integer pageStart = null;
|
|
|
+ if (pageIndex!=null){
|
|
|
+ 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);
|
|
|
+ }else {
|
|
|
+ mapList = reportMapper.getPlanDataWithStation(companyId,startDate,endDate,null,deptIds,pageStart,pageSize);
|
|
|
+// total =reportMapper.getPlanDataWithStationCount(companyId,startDate,endDate,null,deptIds,null,null);
|
|
|
+ }
|
|
|
+ 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<String,Object> resultMap=new HashMap<>();
|
|
|
+ //处理数据 先按照日期 再按照分组重新组装数据
|
|
|
+ List<Map<String,Object>> resultList=new ArrayList<>();
|
|
|
+ for (String date : dateList) {
|
|
|
+ List<Map<String, Object>> maps = listMapGroupByDate.get(date);
|
|
|
+ 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")))));
|
|
|
+ Map<String,Object> item=new HashMap<>();
|
|
|
+ item.put("startDate",date);
|
|
|
+ BigDecimal planNum=new BigDecimal(0);
|
|
|
+ BigDecimal nowNum=new BigDecimal(0);
|
|
|
+ for (Integer dept : deptIdList) {
|
|
|
+ List<Map<String, Object>> list = listMapGroupByDept.get(dept);
|
|
|
+ item.put("deptId",dept);
|
|
|
+ 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")))));
|
|
|
+ }
|
|
|
+ item.put("planNum",planNum.doubleValue());
|
|
|
+ item.put("nowNum",nowNum.doubleValue());
|
|
|
+ BigDecimal progress = nowNum.divide(planNum, RoundingMode.HALF_UP);
|
|
|
+ item.put("progress",format.format(progress.doubleValue()));
|
|
|
+ resultList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ resultMap.put("records",resultList.subList(pageStart,pageSize));
|
|
|
+ resultMap.put("header",dataStringList);
|
|
|
+ resultMap.put("total",resultList.size());
|
|
|
+ msg.setData(resultMap);
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
}
|