|
@@ -133,6 +133,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
private ProdProcedureMapper prodProcedureMapper;
|
|
private ProdProcedureMapper prodProcedureMapper;
|
|
@Resource
|
|
@Resource
|
|
private LeaveSheetService leaveSheetService;
|
|
private LeaveSheetService leaveSheetService;
|
|
|
|
+ @Resource
|
|
|
|
+ private ProdProcedureTeamService prodProcedureTeamService;
|
|
|
|
|
|
@Value(value = "${upload.path}")
|
|
@Value(value = "${upload.path}")
|
|
private String path;
|
|
private String path;
|
|
@@ -6169,4 +6171,74 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
msg.setData("修复完成, 共修复"+updateList.size()+"条数据");
|
|
msg.setData("修复完成, 共修复"+updateList.size()+"条数据");
|
|
return msg;
|
|
return msg;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional
|
|
|
|
+ public HttpRespMsg updateHasDeleteTeamData() {
|
|
|
|
+ HttpRespMsg msg=new HttpRespMsg();
|
|
|
|
+ List<Report> reportList = reportService.list(new LambdaQueryWrapper<Report>().inSql(Report::getId, "SELECT r.id FROM report r\n" +
|
|
|
|
+ "LEFT JOIN prod_procedure_team ppt ON r.user_procedure_team_id=ppt.id\n" +
|
|
|
|
+ "WHERE ppt.id IS NULL AND r.user_procedure_team_id IS NOT NULL"));
|
|
|
|
+ List<ProdProcedureTeam> list=new ArrayList<>();
|
|
|
|
+ for (Report report : reportList) {
|
|
|
|
+ PlanProcedureTotal planProcedureTotal = planProcedureTotalMapper.selectOne(new LambdaQueryWrapper<PlanProcedureTotal>().eq(PlanProcedureTotal::getPlanId, report.getPlanId()).eq(PlanProcedureTotal::getProdProcedureId, report.getProdProcedureId()));
|
|
|
|
+ if(planProcedureTotal!=null){
|
|
|
|
+ //未删除的数据
|
|
|
|
+ List<ProdProcedureTeam> procedureTeams = prodProcedureTeamMapper.selectList(new LambdaQueryWrapper<ProdProcedureTeam>().eq(ProdProcedureTeam::getPlanProcedureId, planProcedureTotal.getId()));
|
|
|
|
+ List<String> ptlist = procedureTeams.stream().map(u -> u.getUserId()).collect(Collectors.toList());
|
|
|
|
+ ptlist.add(report.getCreatorId());
|
|
|
|
+ List<Report> reports = reportList.stream().filter(f -> f.getProdProcedureId().equals(planProcedureTotal.getProdProcedureId()) && f.getPlanId().equals(planProcedureTotal.getPlanId())).collect(Collectors.toList());
|
|
|
|
+ List<String> integers = reports.stream().map(Report::getCreatorId).distinct().collect(Collectors.toList());
|
|
|
|
+ ptlist.addAll(integers);
|
|
|
|
+ String teamIds=integers.stream().distinct().collect(Collectors.joining(","));
|
|
|
|
+ String[] team = teamIds.split(",");
|
|
|
|
+ Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
|
|
|
|
+ BigDecimal totalWages=new BigDecimal((planProcedureTotal.getTotalWages()==null||StringUtils.isEmpty(planProcedureTotal.getTotalWages()))?0:planProcedureTotal.getTotalWages());
|
|
|
|
+ BigDecimal totalWorkingHours=new BigDecimal((planProcedureTotal.getTotalWorkingHours()==null||StringUtils.isEmpty(planProcedureTotal.getTotalWorkingHours())?0:planProcedureTotal.getTotalWorkingHours()));
|
|
|
|
+ BigDecimal overCountWages = new BigDecimal(0);
|
|
|
|
+ BigDecimal overWorkingHours = new BigDecimal(0);
|
|
|
|
+ Plan plan = planMapper.selectById(planProcedureTotal.getPlanId());
|
|
|
|
+ totalWages=totalWages.divide(new BigDecimal(team.length),1, RoundingMode.HALF_UP);
|
|
|
|
+ totalWorkingHours=totalWorkingHours.divide(new BigDecimal(team.length),1, RoundingMode.HALF_UP);
|
|
|
|
+ overCountWages=totalWages.multiply(new BigDecimal(team.length));
|
|
|
|
+ overWorkingHours=totalWorkingHours.multiply(new BigDecimal(team.length));
|
|
|
|
+ List<ProdProcedureTeam> procedureTeamList = prodProcedureTeamService.list(new QueryWrapper<ProdProcedureTeam>().eq("plan_procedure_id",planProcedureTotal.getId()));
|
|
|
|
+ List<User> userList = userMapper.selectBatchIds(Arrays.asList(team));
|
|
|
|
+ for (int i = 0; i < team.length; i++) {
|
|
|
|
+ ProdProcedureTeam prodProcedureTeam=new ProdProcedureTeam();
|
|
|
|
+ int finalI1 = i;
|
|
|
|
+ Optional<ProdProcedureTeam> first1 = procedureTeams.stream().filter(p -> p.getUserId().equals(team[finalI1])).findFirst();
|
|
|
|
+ if(first1.isPresent()){
|
|
|
|
+ prodProcedureTeam.setId(first1.get().getId());
|
|
|
|
+ prodProcedureTeam.setDistributeDate(first1.get().getDistributeDate());
|
|
|
|
+ }else {
|
|
|
|
+ prodProcedureTeam.setDistributeDate(report.getCreateDate());
|
|
|
|
+ }
|
|
|
|
+ prodProcedureTeam.setCompanyId(companyId);
|
|
|
|
+ prodProcedureTeam.setPlanProcedureId(planProcedureTotal.getId());
|
|
|
|
+ prodProcedureTeam.setUserId(team[i]);
|
|
|
|
+ prodProcedureTeam.setStatus(2);
|
|
|
|
+ int finalI = i;
|
|
|
|
+ //已存在的人员更新处理
|
|
|
|
+ Optional<ProdProcedureTeam> first = procedureTeamList.stream().filter(pl -> pl.getUserId().equals(team[finalI])).findFirst();
|
|
|
|
+ if(first.isPresent()){
|
|
|
|
+ prodProcedureTeam.setId(first.get().getId());
|
|
|
|
+ }
|
|
|
|
+ if(i==team.length-1){
|
|
|
|
+ double wagesAbs =new BigDecimal(planProcedureTotal.getTotalWages()).subtract(overCountWages).doubleValue();
|
|
|
|
+ double workTimesAbs =new BigDecimal(planProcedureTotal.getTotalWorkingHours()).subtract(overWorkingHours).doubleValue();
|
|
|
|
+ prodProcedureTeam.setWorkTime(totalWorkingHours.add(new BigDecimal(workTimesAbs)).doubleValue());
|
|
|
|
+ prodProcedureTeam.setJobOfMoney(totalWages.add(new BigDecimal(wagesAbs)));
|
|
|
|
+ }else {
|
|
|
|
+ prodProcedureTeam.setWorkTime(totalWorkingHours.doubleValue());
|
|
|
|
+ prodProcedureTeam.setJobOfMoney(totalWages);
|
|
|
|
+ }
|
|
|
|
+ prodProcedureTeamService.saveOrUpdate(prodProcedureTeam);
|
|
|
|
+ report.setUserProcedureTeamId(prodProcedureTeam.getId());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ reportService.updateBatchById(reportList);
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
}
|
|
}
|