|
@@ -892,29 +892,45 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
List<Integer> collect = reportList.stream().map(Report::getId).collect(Collectors.toList());
|
|
|
reportMapper.update(new Report().setBatchId(batch.getId()), new QueryWrapper<Report>().in("id", collect));
|
|
|
} else {
|
|
|
- //每日或按周填报,为每天生成一条记录
|
|
|
- List<LocalDate> dateList = reportList.stream().map(Report::getCreateDate).collect(Collectors.toList());
|
|
|
- List<Report> updateBIdList = new ArrayList<>();
|
|
|
- for (Report r : reportList) {
|
|
|
- LocalDate curDate = r.getCreateDate();
|
|
|
+ //每日或按周填报,为每天生成一条记录; 每日或者按周填报时,填报人就是操作人自己,不存在代填的情况
|
|
|
+ List<LocalDate> dateList = reportList.stream().map(Report::getCreateDate).distinct().collect(Collectors.toList());
|
|
|
+ String creatorId = reportList.get(0).getCreatorId();
|
|
|
+ for (LocalDate curDate : dateList) {
|
|
|
//删除已有的记录
|
|
|
- reportBatchMapper.delete(new QueryWrapper<ReportBatch>().eq("start_date", curDate).eq("end_date", curDate).eq("creator_id", r.getCreatorId()));
|
|
|
-
|
|
|
+ reportBatchMapper.delete(new QueryWrapper<ReportBatch>().eq("start_date", curDate).eq("end_date", curDate).eq("creator_id", creatorId));
|
|
|
ReportBatch batch = new ReportBatch();
|
|
|
- batch.setCreatorId(reportList.get(0).getCreatorId());
|
|
|
+ batch.setCreatorId(creatorId);
|
|
|
batch.setState(0);
|
|
|
batch.setCompanyId(companyId);
|
|
|
batch.setStartDate(curDate);
|
|
|
batch.setEndDate(curDate);
|
|
|
- batch.setTotalWorkTime(reportList.stream().filter(item->item.getCreateDate().equals(curDate) && item.getCreatorId().equals(r.getCreatorId())).mapToDouble(Report::getWorkingTime).sum());
|
|
|
+ batch.setTotalWorkTime(reportList.stream().filter(item->item.getCreateDate().equals(curDate) && item.getCreatorId().equals(creatorId)).mapToDouble(Report::getWorkingTime).sum());
|
|
|
reportBatchMapper.insert(batch);
|
|
|
+
|
|
|
//更新batchId
|
|
|
- Report uItem = new Report();
|
|
|
- uItem.setId(r.getId());
|
|
|
- uItem.setBatchId(batch.getId());
|
|
|
- updateBIdList.add(uItem);
|
|
|
+ List<Integer> curDateReportIds = reportList.stream().filter(item -> item.getCreateDate().equals(curDate) && item.getCreatorId().equals(creatorId)).map(Report::getId).collect(Collectors.toList());
|
|
|
+ reportMapper.update(new Report().setBatchId(batch.getId()), new QueryWrapper<Report>().in("id", curDateReportIds));
|
|
|
}
|
|
|
- reportService.updateBatchById(updateBIdList);
|
|
|
+// for (Report r : reportList) {
|
|
|
+// LocalDate curDate = r.getCreateDate();
|
|
|
+// //删除已有的记录; //TODO: 一天多个项目会导致删除其他项目的记录, 需要修复
|
|
|
+// reportBatchMapper.delete(new QueryWrapper<ReportBatch>().eq("start_date", curDate).eq("end_date", curDate).eq("creator_id", r.getCreatorId()));
|
|
|
+//
|
|
|
+// ReportBatch batch = new ReportBatch();
|
|
|
+// batch.setCreatorId(reportList.get(0).getCreatorId());
|
|
|
+// batch.setState(0);
|
|
|
+// batch.setCompanyId(companyId);
|
|
|
+// batch.setStartDate(curDate);
|
|
|
+// batch.setEndDate(curDate);
|
|
|
+// batch.setTotalWorkTime(reportList.stream().filter(item->item.getCreateDate().equals(curDate) && item.getCreatorId().equals(r.getCreatorId())).mapToDouble(Report::getWorkingTime).sum());
|
|
|
+// reportBatchMapper.insert(batch);
|
|
|
+// //更新batchId
|
|
|
+// Report uItem = new Report();
|
|
|
+// uItem.setId(r.getId());
|
|
|
+// uItem.setBatchId(batch.getId());
|
|
|
+// updateBIdList.add(uItem);
|
|
|
+// }
|
|
|
+// reportService.updateBatchById(updateBIdList);
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
@@ -5381,97 +5397,115 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public HttpRespMsg fixIssue() {
|
|
|
- //处理被误操作为自动审核的数据,
|
|
|
- List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(new QueryWrapper<AuditWorkflowTimeSetting>().select("distinct company_id"));
|
|
|
- System.out.println("有审批流的公司size="+settings.size());
|
|
|
-
|
|
|
- List<Report> reportList = reportMapper.selectList(
|
|
|
- new QueryWrapper<Report>().select("company_id, id, state, project_auditor_id, creator_id, create_date")
|
|
|
- .eq("report_auto_approve", 1));
|
|
|
- reportList = reportList.stream().filter(r->r.getCompanyId() != 767).collect(Collectors.toList());
|
|
|
- System.out.println("查询到数据=="+reportList.size());
|
|
|
- int dealCnt = 0;
|
|
|
- List<Report> auditWorkflowReportList = new ArrayList<>();
|
|
|
- List<Report> noWorkflowReportList = new ArrayList<>();
|
|
|
- for (Report report : reportList) {
|
|
|
- if (!settings.stream().anyMatch(s->s.getCompanyId().equals(report.getCompanyId()))) {
|
|
|
- //无审批流的公司,直接通过
|
|
|
- Report r = new Report();
|
|
|
- r.setId(report.getId());
|
|
|
- r.setReportAutoApprove(0);
|
|
|
- r.setProjectAuditState(0);
|
|
|
- r.setState(0);
|
|
|
- noWorkflowReportList.add(r);
|
|
|
- dealCnt++;
|
|
|
- } else {
|
|
|
- auditWorkflowReportList.add(report);
|
|
|
- }
|
|
|
- }
|
|
|
- if (noWorkflowReportList.size() > 0) {
|
|
|
- updateBatchById(noWorkflowReportList);
|
|
|
- }
|
|
|
-
|
|
|
- System.out.println("已处理无审批流的日报size="+dealCnt);
|
|
|
- System.out.println("有审批流的日报size="+auditWorkflowReportList.size());
|
|
|
- //检查哪些是项目没审核的
|
|
|
- int projectAuditManulPassCnt = 0;
|
|
|
- int blurFind = 0;
|
|
|
+ public HttpRespMsg fixIssue(Integer companyId) {
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
+ List<ReportBatch> reportBatchList = reportBatchMapper.selectList(new QueryWrapper<ReportBatch>().eq("company_id", companyId));
|
|
|
+ List<Integer> batchIds = reportBatchList.stream().map(ReportBatch::getId).collect(Collectors.toList());
|
|
|
+ List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().eq("company_id", companyId).notIn("batch_id", batchIds));
|
|
|
List<Report> updateList = new ArrayList<>();
|
|
|
- for (Report report : auditWorkflowReportList) {
|
|
|
- int count = reportLogMapper.selectCount(new QueryWrapper<ReportLog>()
|
|
|
- //.like("msg", "审核通过了日报").eq("operator_id", report.getProjectAuditorId())
|
|
|
- .like("msg", MessageUtils.message("report.reportApp")).eq("operator_id", report.getProjectAuditorId())
|
|
|
- .eq("report_ids", report.getId()));
|
|
|
- boolean findLog = false;
|
|
|
-
|
|
|
- if (count == 0) {
|
|
|
- //模糊匹配一下
|
|
|
- List<ReportLog> reportLogs = reportLogMapper.selectList(new QueryWrapper<ReportLog>().select("id, report_ids")
|
|
|
- //.like("msg", "审核通过了日报").eq("operator_id", report.getProjectAuditorId())
|
|
|
- .like("msg", MessageUtils.message("report.reportApp")).eq("operator_id", report.getProjectAuditorId())
|
|
|
- .eq("company_id", report.getCompanyId())
|
|
|
- .eq("creator_id", report.getCreatorId())
|
|
|
- .eq("create_date", report.getCreateDate()));
|
|
|
- if (reportLogs.size() > 0) {
|
|
|
- //找到匹配的记录
|
|
|
- System.out.println("开始匹配模糊===reportLog Size=="+reportLogs.size());
|
|
|
- for (ReportLog log : reportLogs) {
|
|
|
- String[] arr = log.getReportIds().split(",");
|
|
|
- for (String s : arr) {
|
|
|
- System.out.println("比对=logId="+log.getId()+", "+s+" , "+report.getId());
|
|
|
- if (s.equals(report.getId().toString())) {
|
|
|
- findLog = true;
|
|
|
- blurFind++;
|
|
|
- System.out.println("模糊匹配到了====="+blurFind);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- findLog = true;
|
|
|
- }
|
|
|
- Report r = new Report();
|
|
|
- r.setId(report.getId());
|
|
|
- r.setReportAutoApprove(0);
|
|
|
- r.setState(0);
|
|
|
- if (findLog) {
|
|
|
- projectAuditManulPassCnt++;
|
|
|
- //已经是手动审核通过的,不需要撤回projectAuditState了
|
|
|
- } else {
|
|
|
- //没有项目审核通过的,需要撤回为0状态
|
|
|
- r.setProjectAuditState(0);
|
|
|
- }
|
|
|
- updateList.add(r);
|
|
|
+ for(Report r : reportList) {
|
|
|
+ Report targetReport = reportMapper.selectOne(new QueryWrapper<Report>().select("id, batch_id").eq("company_id", companyId).eq("creator_id", r.getCreatorId()).eq("create_date", r.getCreateDate()).orderByDesc("batch_id").last("limit 1"));
|
|
|
+ Report upItem = new Report();
|
|
|
+ upItem.setId(r.getId());
|
|
|
+ upItem.setBatchId(targetReport.getBatchId());
|
|
|
+ updateList.add(upItem);
|
|
|
}
|
|
|
-
|
|
|
- System.out.println("手动审核过的日报size="+projectAuditManulPassCnt+", 其中模糊匹配到的size=" +blurFind);
|
|
|
if (updateList.size() > 0) {
|
|
|
updateBatchById(updateList);
|
|
|
}
|
|
|
- System.out.println("===无审批流的日报size="+noWorkflowReportList.size()+", 有审批流的日报size="+updateList.size());
|
|
|
- return new HttpRespMsg();
|
|
|
+ msg.setData("共更新"+updateList.size()+"条数据");
|
|
|
+ return msg;
|
|
|
+
|
|
|
+// //处理被误操作为自动审核的数据,
|
|
|
+// List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(new QueryWrapper<AuditWorkflowTimeSetting>().select("distinct company_id"));
|
|
|
+// System.out.println("有审批流的公司size="+settings.size());
|
|
|
+//
|
|
|
+// List<Report> reportList = reportMapper.selectList(
|
|
|
+// new QueryWrapper<Report>().select("company_id, id, state, project_auditor_id, creator_id, create_date")
|
|
|
+// .eq("report_auto_approve", 1));
|
|
|
+// reportList = reportList.stream().filter(r->r.getCompanyId() != 767).collect(Collectors.toList());
|
|
|
+// System.out.println("查询到数据=="+reportList.size());
|
|
|
+// int dealCnt = 0;
|
|
|
+// List<Report> auditWorkflowReportList = new ArrayList<>();
|
|
|
+// List<Report> noWorkflowReportList = new ArrayList<>();
|
|
|
+// for (Report report : reportList) {
|
|
|
+// if (!settings.stream().anyMatch(s->s.getCompanyId().equals(report.getCompanyId()))) {
|
|
|
+// //无审批流的公司,直接通过
|
|
|
+// Report r = new Report();
|
|
|
+// r.setId(report.getId());
|
|
|
+// r.setReportAutoApprove(0);
|
|
|
+// r.setProjectAuditState(0);
|
|
|
+// r.setState(0);
|
|
|
+// noWorkflowReportList.add(r);
|
|
|
+// dealCnt++;
|
|
|
+// } else {
|
|
|
+// auditWorkflowReportList.add(report);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if (noWorkflowReportList.size() > 0) {
|
|
|
+// updateBatchById(noWorkflowReportList);
|
|
|
+// }
|
|
|
+//
|
|
|
+// System.out.println("已处理无审批流的日报size="+dealCnt);
|
|
|
+// System.out.println("有审批流的日报size="+auditWorkflowReportList.size());
|
|
|
+// //检查哪些是项目没审核的
|
|
|
+// int projectAuditManulPassCnt = 0;
|
|
|
+// int blurFind = 0;
|
|
|
+// List<Report> updateList = new ArrayList<>();
|
|
|
+// for (Report report : auditWorkflowReportList) {
|
|
|
+// int count = reportLogMapper.selectCount(new QueryWrapper<ReportLog>()
|
|
|
+// //.like("msg", "审核通过了日报").eq("operator_id", report.getProjectAuditorId())
|
|
|
+// .like("msg", MessageUtils.message("report.reportApp")).eq("operator_id", report.getProjectAuditorId())
|
|
|
+// .eq("report_ids", report.getId()));
|
|
|
+// boolean findLog = false;
|
|
|
+//
|
|
|
+// if (count == 0) {
|
|
|
+// //模糊匹配一下
|
|
|
+// List<ReportLog> reportLogs = reportLogMapper.selectList(new QueryWrapper<ReportLog>().select("id, report_ids")
|
|
|
+// //.like("msg", "审核通过了日报").eq("operator_id", report.getProjectAuditorId())
|
|
|
+// .like("msg", MessageUtils.message("report.reportApp")).eq("operator_id", report.getProjectAuditorId())
|
|
|
+// .eq("company_id", report.getCompanyId())
|
|
|
+// .eq("creator_id", report.getCreatorId())
|
|
|
+// .eq("create_date", report.getCreateDate()));
|
|
|
+// if (reportLogs.size() > 0) {
|
|
|
+// //找到匹配的记录
|
|
|
+// System.out.println("开始匹配模糊===reportLog Size=="+reportLogs.size());
|
|
|
+// for (ReportLog log : reportLogs) {
|
|
|
+// String[] arr = log.getReportIds().split(",");
|
|
|
+// for (String s : arr) {
|
|
|
+// System.out.println("比对=logId="+log.getId()+", "+s+" , "+report.getId());
|
|
|
+// if (s.equals(report.getId().toString())) {
|
|
|
+// findLog = true;
|
|
|
+// blurFind++;
|
|
|
+// System.out.println("模糊匹配到了====="+blurFind);
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// } else {
|
|
|
+// findLog = true;
|
|
|
+// }
|
|
|
+// Report r = new Report();
|
|
|
+// r.setId(report.getId());
|
|
|
+// r.setReportAutoApprove(0);
|
|
|
+// r.setState(0);
|
|
|
+// if (findLog) {
|
|
|
+// projectAuditManulPassCnt++;
|
|
|
+// //已经是手动审核通过的,不需要撤回projectAuditState了
|
|
|
+// } else {
|
|
|
+// //没有项目审核通过的,需要撤回为0状态
|
|
|
+// r.setProjectAuditState(0);
|
|
|
+// }
|
|
|
+// updateList.add(r);
|
|
|
+// }
|
|
|
+//
|
|
|
+// System.out.println("手动审核过的日报size="+projectAuditManulPassCnt+", 其中模糊匹配到的size=" +blurFind);
|
|
|
+// if (updateList.size() > 0) {
|
|
|
+// updateBatchById(updateList);
|
|
|
+// }
|
|
|
+// System.out.println("===无审批流的日报size="+noWorkflowReportList.size()+", 有审批流的日报size="+updateList.size());
|
|
|
+// return new HttpRespMsg();
|
|
|
}
|
|
|
|
|
|
@Override
|