|
@@ -194,6 +194,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
private DepartmentOtherManagerMapper departmentOtherManagerMapper;
|
|
private DepartmentOtherManagerMapper departmentOtherManagerMapper;
|
|
@Resource
|
|
@Resource
|
|
private ExcelExportService excelExportService;
|
|
private ExcelExportService excelExportService;
|
|
|
|
+ @Resource
|
|
|
|
+ private ProjectMainMapper projectMainMapper;
|
|
@Autowired
|
|
@Autowired
|
|
RestTemplate restTemplate;
|
|
RestTemplate restTemplate;
|
|
|
|
|
|
@@ -7493,4 +7495,74 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public HttpRespMsg geProjectTimeCostByThird(String json) {
|
|
|
|
+ HttpRespMsg msg=new HttpRespMsg();
|
|
|
|
+ JSONObject requestData = JSONObject.parseObject(json);
|
|
|
|
+ if(requestData.get("header")==null){
|
|
|
|
+ msg.setError("Request Parameter Parsing Error,Unable to find 'header'");
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+ JSONObject requestHeader = JSONObject.parseObject(String.valueOf(requestData.get("header")));
|
|
|
|
+ if(requestData.get("projectQuery")==null){
|
|
|
|
+ msg.setError("Request Parameter Parsing Error,Unable to find 'projectQuery'");
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+ JSONObject requestProjectQuery = JSONObject.parseObject(String.valueOf(requestData.get("projectQuery")));
|
|
|
|
+ if(requestHeader.get("token")==null){
|
|
|
|
+ msg.setError("Request Parameter Parsing Error,Unable to find 'token'");
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+ String requestToken = String.valueOf(requestHeader.get("token"));
|
|
|
|
+ List<ThirdPartyInterface> thirdPartyInterfaces = thirdPartyInterfaceMapper.selectList(new QueryWrapper<ThirdPartyInterface>().eq("token", requestToken));
|
|
|
|
+ if(thirdPartyInterfaces.size()<=0){
|
|
|
|
+ msg.setError("Validation failed,'token' is Error");
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+ if(LocalDateTime.now().isAfter(thirdPartyInterfaces.get(0).getExpireTime())){
|
|
|
|
+ msg.setError("'token' is Expire");
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+ if(requestProjectQuery.get("projectMainCode")==null){
|
|
|
|
+ msg.setError("Request Parameter Parsing Error,Unable to find 'projectMainCode'");
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+ String requestProjectMainCode = String.valueOf(requestProjectQuery.get("projectMainCode"));
|
|
|
|
+ ProjectMain projectMain = projectMainMapper.selectOne(new LambdaQueryWrapper<ProjectMain>().eq(ProjectMain::getCode, requestProjectMainCode));
|
|
|
|
+ if(projectMain==null){
|
|
|
|
+ msg.setError("'projectMainCode'["+requestProjectMainCode+"] is Not Exist");
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+ Map<String,Object> responseData=new HashMap<>();
|
|
|
|
+ List<Map<String,Object>> projectMainTimeCostList=reportMapper.getProjectMainTimeCost(thirdPartyInterfaces.get(0).getCompanyId(),requestProjectMainCode);
|
|
|
|
+ List<Integer> projectMainIds = projectMainTimeCostList.stream().map(p -> Integer.valueOf(String.valueOf(p.get("pmId")))).distinct().collect(Collectors.toList());
|
|
|
|
+ projectMainIds.add(-1);
|
|
|
|
+ List<Map<String,Object>> projectTimeCostList=reportMapper.getProjectTimeCost(thirdPartyInterfaces.get(0).getCompanyId(),projectMainIds);
|
|
|
|
+ List<Integer> projectIds = projectTimeCostList.stream().map(p -> Integer.valueOf(String.valueOf(p.get("projectId")))).distinct().collect(Collectors.toList());
|
|
|
|
+ projectIds.add(-1);
|
|
|
|
+ List<Map<String,Object>> taskGroupPlanTimeList=reportMapper.getTaskGroupPlanTime(projectIds);
|
|
|
|
+ List<Integer> groupIds = taskGroupPlanTimeList.stream().map(t -> Integer.valueOf(String.valueOf(t.get("groupId")))).distinct().collect(Collectors.toList());
|
|
|
|
+ groupIds.add(-1);
|
|
|
|
+ List<Report> reportList = reportMapper.selectList(new LambdaQueryWrapper<Report>().in(Report::getGroupId, groupIds).and(wrapper -> wrapper.eq(Report::getState, 0).or().eq(Report::getState, 1)));
|
|
|
|
+ for (Map<String, Object> map : taskGroupPlanTimeList) {
|
|
|
|
+ BigDecimal workingTime = reportList.stream().filter(r -> r.getGroupId().equals(map.get("groupId"))).map(r -> new BigDecimal(r.getWorkingTime())).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ BigDecimal bigDecimal=new BigDecimal(String.valueOf(map.get("planTime")));
|
|
|
|
+ bigDecimal=bigDecimal.subtract(workingTime);
|
|
|
|
+ map.put("realityTime",workingTime.doubleValue());
|
|
|
|
+ map.put("isOver",bigDecimal.doubleValue()<0?"是":"否");
|
|
|
|
+ map.put("remaining",bigDecimal.doubleValue()>0?bigDecimal.doubleValue():0);
|
|
|
|
+ }
|
|
|
|
+ projectTimeCostList.forEach(pt->{
|
|
|
|
+ List<Map<String, Object>> mapList = taskGroupPlanTimeList.stream().filter(t -> t.get("projectId").equals(pt.get("projectId"))).collect(Collectors.toList());
|
|
|
|
+ pt.put("projectGroupData",mapList);
|
|
|
|
+ });
|
|
|
|
+ projectMainTimeCostList.forEach(pt->{
|
|
|
|
+ List<Map<String, Object>> mapList = projectTimeCostList.stream().filter(p -> p.get("pmId").equals(pt.get("pmId"))).collect(Collectors.toList());
|
|
|
|
+ pt.put("projectArrays",mapList);
|
|
|
|
+ });
|
|
|
|
+ responseData.put("projectMainData",projectMainTimeCostList);
|
|
|
|
+ msg.setData(responseData);
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
}
|
|
}
|