|
@@ -1315,45 +1315,50 @@ public class ReportController {
|
|
|
return o1.compareTo(o2);
|
|
|
}
|
|
|
}).get();
|
|
|
-
|
|
|
- //取最近五个工作日
|
|
|
- int cnt = 0;
|
|
|
- LocalDate passDate = maxDate;
|
|
|
- List<LocalDate> dateCollect = new ArrayList<>();
|
|
|
- while (true) {
|
|
|
- if (WorkDayCalculateUtils.isWorkDay(passDate)) {
|
|
|
- cnt++;
|
|
|
- dateCollect.add(passDate);
|
|
|
+ //该逻辑生效日期
|
|
|
+ LocalDate effectiveDate = LocalDate.of(2024, 8, 14);
|
|
|
+ if (maxDate.isAfter(effectiveDate)) {
|
|
|
+ //取最近五个工作日
|
|
|
+ int cnt = 0;
|
|
|
+ LocalDate passDate = maxDate;
|
|
|
+ List<LocalDate> dateCollect = new ArrayList<>();
|
|
|
+ while (true) {
|
|
|
+ if (WorkDayCalculateUtils.isWorkDay(passDate)) {
|
|
|
+ cnt++;
|
|
|
+ dateCollect.add(passDate);
|
|
|
+ }
|
|
|
+ if (cnt == 5) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ passDate = passDate.minusDays(1);
|
|
|
+ //在生效期之前就不考虑了
|
|
|
+ if (passDate.isBefore(effectiveDate)) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
- if (cnt == 5) {
|
|
|
- break;
|
|
|
+ if (dateCollect.size() > 0) {
|
|
|
+ //获取非项目列表
|
|
|
+ List<Project> nonProjectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").eq("is_public", 1).eq("company_id", reportOwner.getCompanyId()));
|
|
|
+ List<Integer> collect = nonProjectList.stream().map(Project::getId).collect(Collectors.toList());
|
|
|
+ List<Report> oldRelatedReportList = reportMapper.selectList(new QueryWrapper<Report>().select("id,project_id,working_time")
|
|
|
+ .eq("creator_id", reportOwner.getId())
|
|
|
+ .and(wrapper->wrapper.eq("state",0).or().eq("state",1).or().eq("state",3))
|
|
|
+ .in("create_date", dateCollect));
|
|
|
+ //剔除掉当前日报中的
|
|
|
+
|
|
|
+ oldRelatedReportList = oldRelatedReportList.stream().filter(old->!reportList.stream().map(Report::getId).collect(Collectors.toList()).contains(old.getId())).collect(Collectors.toList());
|
|
|
+ oldRelatedReportList.addAll(reportList);
|
|
|
+ double totalWorkingTime = oldRelatedReportList.stream().mapToDouble(Report::getWorkingTime).sum();
|
|
|
+ double nonProjectWorkingTime = oldRelatedReportList.stream().filter(old->collect.contains(old.getProjectId())).mapToDouble(Report::getWorkingTime).sum();
|
|
|
+ double percent = 100*nonProjectWorkingTime/totalWorkingTime;
|
|
|
+
|
|
|
+ int maxPercent = userGroupMapper.selectById(reportOwner.getUserGroupId()).getNoProjectPercent();
|
|
|
+ if(percent > maxPercent){
|
|
|
+ HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
+ httpRespMsg.setError("非项目工时占比不得超过"+maxPercent+"%");
|
|
|
+ return httpRespMsg;
|
|
|
+ }
|
|
|
}
|
|
|
- passDate = passDate.minusDays(1);
|
|
|
- }
|
|
|
- //打印dateCollect
|
|
|
-// for (LocalDate date : dateCollect) {
|
|
|
-// System.out.println(date);
|
|
|
-// }
|
|
|
- //获取非项目列表
|
|
|
- List<Project> nonProjectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").eq("is_public", 1).eq("company_id", reportOwner.getCompanyId()));
|
|
|
- List<Integer> collect = nonProjectList.stream().map(Project::getId).collect(Collectors.toList());
|
|
|
- List<Report> oldRelatedReportList = reportMapper.selectList(new QueryWrapper<Report>().select("id,project_id,working_time")
|
|
|
- .eq("creator_id", reportOwner.getId())
|
|
|
- .and(wrapper->wrapper.eq("state",0).or().eq("state",1).or().eq("state",3))
|
|
|
- .in("create_date", dateCollect));
|
|
|
- //剔除掉当前日报中的
|
|
|
-
|
|
|
- oldRelatedReportList = oldRelatedReportList.stream().filter(old->!reportList.stream().map(Report::getId).collect(Collectors.toList()).contains(old.getId())).collect(Collectors.toList());
|
|
|
- oldRelatedReportList.addAll(reportList);
|
|
|
- double totalWorkingTime = oldRelatedReportList.stream().mapToDouble(Report::getWorkingTime).sum();
|
|
|
- double nonProjectWorkingTime = oldRelatedReportList.stream().filter(old->collect.contains(old.getProjectId())).mapToDouble(Report::getWorkingTime).sum();
|
|
|
- double percent = 100*nonProjectWorkingTime/totalWorkingTime;
|
|
|
-
|
|
|
- int maxPercent = userGroupMapper.selectById(reportOwner.getUserGroupId()).getNoProjectPercent();
|
|
|
- if(percent > maxPercent){
|
|
|
- HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
- httpRespMsg.setError("非项目工时占比不得超过"+maxPercent+"%");
|
|
|
- return httpRespMsg;
|
|
|
}
|
|
|
}
|
|
|
|