Explorar o código

考勤统计调整

dzx hai 6 meses
pai
achega
6db87526c2

+ 46 - 46
src/main/java/com/xjrsoft/module/attendance/controller/StatisticsController.java

@@ -143,52 +143,52 @@ public class StatisticsController {
         statisticsVo.setLeaveCount(leaveCount);
         statisticsVo.setAbsenteeismCount(absenteeismCount);
 
-        //查询不需要考勤的人
-        List<AttendanceRuleCategory> ruleCategories = ruleCategoryService.list(
-                new QueryWrapper<AttendanceRuleCategory>().lambda()
-                        .eq(AttendanceRuleCategory::getDeleteMark, DeleteMark.NODELETE.getCode())
-                        .eq(AttendanceRuleCategory::getRoleId, 2)
-                        .le(AttendanceRuleCategory::getStartDate, LocalDate.now())
-                        .ge(AttendanceRuleCategory::getEndDate, LocalDate.now())
-        );
-        if(!ruleCategories.isEmpty()){
-            //查询所有需要考勤的人
-            BaseTeacherPageDto teacherPageDto = new BaseTeacherPageDto();
-            List<Long> userIds = new ArrayList<>();
-            List<Long> deptIds = new ArrayList<>();
-            for (AttendanceRuleCategory ruleCategory : ruleCategories) {
-                JsonArray userRelation = new JsonParser().parse(ruleCategory.getUserRelation()).getAsJsonArray();
-
-                for (JsonElement jsonElement : userRelation) {
-                    JsonObject jsonObject = jsonElement.getAsJsonObject();
-                    if(jsonObject.get("deptId") != null && !jsonObject.get("deptId").isJsonNull()){
-                        deptIds.add(jsonObject.get("deptId").getAsLong());
-                    }
-                    if(jsonObject.get("userId") != null && !jsonObject.get("userId").isJsonNull()){
-                        userIds.add(jsonObject.get("userId").getAsLong());
-                    }
-                }
-            }
-            teacherPageDto.setDeptIds(deptIds);
-            List<XjrUserPageVo> attendanceTeacherList = teacherbaseManagerService.getList(teacherPageDto);
-
-            teacherPageDto = new BaseTeacherPageDto();
-            teacherPageDto.setUserIds(userIds);
-            attendanceTeacherList.addAll(teacherbaseManagerService.getList(teacherPageDto));
-            //将所有需要考勤的人的id存入set集合
-            Set<String> attendanceUserIdSet = attendanceTeacherList.stream().map(XjrUserPageVo::getId).collect(Collectors.toSet());
-
-            //查询所有人
-            teacherPageDto = new BaseTeacherPageDto();
-            if(dto.getDeptId() != null){
-                List<Long> dtoDeptIds = new ArrayList<>();
-                dtoDeptIds.add(dto.getDeptId());
-                teacherPageDto.setDeptIds(dtoDeptIds);
-            }
-
-            List<XjrUserPageVo> allTeacherList = teacherbaseManagerService.getList(teacherPageDto);
-            statisticsVo.setNotAttendanceCount(allTeacherList.stream().filter(x -> !attendanceUserIdSet.contains(x.getId())).collect(Collectors.toList()).size());
-        }
+//        //查询不需要考勤的人
+//        List<AttendanceRuleCategory> ruleCategories = ruleCategoryService.list(
+//                new QueryWrapper<AttendanceRuleCategory>().lambda()
+//                        .eq(AttendanceRuleCategory::getDeleteMark, DeleteMark.NODELETE.getCode())
+//                        .eq(AttendanceRuleCategory::getRoleId, 2)
+//                        .le(AttendanceRuleCategory::getStartDate, LocalDate.now())
+//                        .ge(AttendanceRuleCategory::getEndDate, LocalDate.now())
+//        );
+//        if(!ruleCategories.isEmpty()){
+//            //查询所有需要考勤的人
+//            BaseTeacherPageDto teacherPageDto = new BaseTeacherPageDto();
+//            List<Long> userIds = new ArrayList<>();
+//            List<Long> deptIds = new ArrayList<>();
+//            for (AttendanceRuleCategory ruleCategory : ruleCategories) {
+//                JsonArray userRelation = new JsonParser().parse(ruleCategory.getUserRelation()).getAsJsonArray();
+//
+//                for (JsonElement jsonElement : userRelation) {
+//                    JsonObject jsonObject = jsonElement.getAsJsonObject();
+//                    if(jsonObject.get("deptId") != null && !jsonObject.get("deptId").isJsonNull()){
+//                        deptIds.add(jsonObject.get("deptId").getAsLong());
+//                    }
+//                    if(jsonObject.get("userId") != null && !jsonObject.get("userId").isJsonNull()){
+//                        userIds.add(jsonObject.get("userId").getAsLong());
+//                    }
+//                }
+//            }
+//            teacherPageDto.setDeptIds(deptIds);
+//            List<XjrUserPageVo> attendanceTeacherList = teacherbaseManagerService.getList(teacherPageDto);
+//
+//            teacherPageDto = new BaseTeacherPageDto();
+//            teacherPageDto.setUserIds(userIds);
+//            attendanceTeacherList.addAll(teacherbaseManagerService.getList(teacherPageDto));
+//            //将所有需要考勤的人的id存入set集合
+//            Set<String> attendanceUserIdSet = attendanceTeacherList.stream().map(XjrUserPageVo::getId).collect(Collectors.toSet());
+//
+//            //查询所有人
+//            teacherPageDto = new BaseTeacherPageDto();
+//            if(dto.getDeptId() != null){
+//                List<Long> dtoDeptIds = new ArrayList<>();
+//                dtoDeptIds.add(dto.getDeptId());
+//                teacherPageDto.setDeptIds(dtoDeptIds);
+//            }
+//
+//            List<XjrUserPageVo> allTeacherList = teacherbaseManagerService.getList(teacherPageDto);
+//            statisticsVo.setNotAttendanceCount(allTeacherList.stream().filter(x -> !attendanceUserIdSet.contains(x.getId())).collect(Collectors.toList()).size());
+//        }
 
 
         //计算出勤率

+ 1 - 0
src/main/java/com/xjrsoft/module/attendance/controller/TeacherStatisticsController.java

@@ -92,6 +92,7 @@ public class TeacherStatisticsController {
                             " WHERE t1.delete_mark = 0 AND t2.user_id = t.id) as dept_name")
                     .eq(ObjectUtil.isNotNull(dto.getDeptId()), UserDeptRelation::getDeptId, dto.getDeptId())
                     .eq(StrUtil.isNotEmpty(dto.getAttendanceMode()), AttendanceUserRelation::getAttendanceMode, dto.getAttendanceMode())
+                    .eq(ObjectUtil.isNotNull(dto.getRuleCategoryId()), AttendanceUserRelation::getAttendanceRuleCategoryId, dto.getRuleCategoryId())
                     .like(StrUtil.isNotEmpty(dto.getCarNumber()), AttendanceUserRelation::getCarNumber, dto.getCarNumber())
                     .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
                     .selectAs(User::getName, TeacherStatisticsPageVo::getTeacherName)

+ 3 - 0
src/main/java/com/xjrsoft/module/attendance/dto/TeacherDetailsDto.java

@@ -32,4 +32,7 @@ public class TeacherDetailsDto extends PageInput {
 
     @ApiModelProperty("车牌号")
     private String carNumber;
+
+    @ApiModelProperty("考勤规则id")
+    private Long ruleCategoryId;
 }

+ 5 - 0
src/main/resources/mapper/attendance/TeacherAttendanceRecordMapper.xml

@@ -12,12 +12,17 @@
             inner join xjr_user_dept_relation t3 on t2.id = t3.user_id
             and t3.dept_id = #{dto.deptId}
         </if>
+        INNER JOIN attendance_user_relation t4 ON t1.user_id = t3.user_id
         WHERE t1.delete_mark = 0
+          and t4.delete_mark = 0
         AND t1.attendance_date = #{dto.date}
         AND t1.time_interval = #{dto.timePeriod}
         <if test="dto.name != null and dto.name != ''">
             and t2.name like concat('%', #{dto.name},'%')
         </if>
+        <if test="dto.ruleCategoryId != null">
+            and t4.attendance_rule_category_id = #{dto.ruleCategoryId}
+        </if>
         <if test="dto.credentialNumber != null and dto.credentialNumber != ''">
             and t2.credential_number like concat('%', #{dto.credentialNumber},'%')
         </if>