Преглед изворни кода

非项目工时占比设置,从2024-08-14后开始

seyason пре 9 месеци
родитељ
комит
e1d3753175

+ 42 - 37
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -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;
             }
         }