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

考勤统计,学生部分

dzx пре 1 година
родитељ
комит
f734847c8f

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

@@ -17,6 +17,7 @@ import com.xjrsoft.module.outint.service.IStudentOutInRecordService;
 import com.xjrsoft.module.outint.service.ITeacherOutInRecordService;
 import com.xjrsoft.module.student.entity.BaseStudent;
 import com.xjrsoft.module.student.entity.StudentLeave;
+import com.xjrsoft.module.student.service.IStudentLeaveService;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.service.IWfTeacherleaveService;
@@ -54,6 +55,7 @@ public class StatisticsController {
     private final IStudentOutInRecordService studentOutInRecordService;
     private final IAttendanceRuleCategoryService ruleCategoryService;
     private final IWfTeacherleaveService wfTeacherleaveService;
+    private final IStudentLeaveService studentLeaveService;
 
     @GetMapping(value = "/teacher-statistics")
     @ApiOperation(value="教职工考勤统计")
@@ -91,6 +93,9 @@ public class StatisticsController {
 
             //查询教师请假人数
             Long leaveCount = wfTeacherleaveService.getLeaveCount(startTime, endTime);
+            if(leaveCount == null){
+                leaveCount = 0L;
+            }
             statisticsVo.setLeaveCount(leaveCount);
 
             //查询每个人当天的考勤规则
@@ -123,7 +128,7 @@ public class StatisticsController {
 
 
     @GetMapping(value = "/student-statistics")
-    @ApiOperation(value="教职工考勤统计")
+    @ApiOperation(value="学生考勤统计")
     @SaCheckPermission("statistics:detail")
     public RT<TeacherStatisticsVo> studentStatistics(@Valid AttendanceStatisticDto dto){
         TeacherStatisticsVo statisticsVo = new TeacherStatisticsVo();
@@ -156,11 +161,14 @@ public class StatisticsController {
             statisticsVo.setActualCount(Long.valueOf(outInRecords.size()));
 
             //查询教师请假人数
-            Long leaveCount = wfTeacherleaveService.getLeaveCount(startTime, endTime);
+            Long leaveCount = studentLeaveService.getLeaveCount(startTime, endTime);
+            if(leaveCount == null){
+                leaveCount = 0L;
+            }
             statisticsVo.setLeaveCount(leaveCount);
 
             //查询每个人当天的考勤规则
-            Map<Long, AttendanceRuleDetailsUserVo> allTeacherTodyRule = ruleCategoryService.getAllTeacherTodyRule(queryDate.getDayOfWeek().name());
+            Map<Long, AttendanceRuleDetailsUserVo> allTeacherTodyRule = ruleCategoryService.getAllStudentTodyRule(queryDate.getDayOfWeek().name());
             //通过考勤规则和实到人数信息,计算迟到的
             Long lateCount = 0L;
             for (StudentOutInRecord outInRecord : outInRecords) {

+ 3 - 0
src/main/java/com/xjrsoft/module/attendance/mapper/AttendanceRuleDetailsMapper.java

@@ -19,4 +19,7 @@ public interface AttendanceRuleDetailsMapper extends MPJBaseMapper<AttendanceRul
     List<AttendanceRuleDetails> getTodayRules(@Param("dayOfWeek") String dayOfWeek);
 
     List<AttendanceRuleDetailsUserVo> getAllTeacherTodyRule(@Param("dayOfWeek") String dayOfWeek);
+
+    List<AttendanceRuleDetailsUserVo> getAllStudentTodyRule(@Param("dayOfWeek") String dayOfWeek);
+
 }

+ 2 - 0
src/main/java/com/xjrsoft/module/attendance/service/IAttendanceRuleCategoryService.java

@@ -47,4 +47,6 @@ public interface IAttendanceRuleCategoryService extends MPJBaseService<Attendanc
     AttendanceRuleDetails getTodayRulesByParam(String dayOfWeek);
 
     Map<Long, AttendanceRuleDetailsUserVo> getAllTeacherTodyRule(String dayOfWeek);
+
+    Map<Long, AttendanceRuleDetailsUserVo> getAllStudentTodyRule(String dayOfWeek);
 }

+ 11 - 0
src/main/java/com/xjrsoft/module/attendance/service/impl/AttendanceRuleCategoryServiceImpl.java

@@ -434,4 +434,15 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
 
         return result;
     }
+
+    @Override
+    public Map<Long, AttendanceRuleDetailsUserVo> getAllStudentTodyRule(String dayOfWeek) {
+        List<AttendanceRuleDetailsUserVo> teacherTodyRule = detailsMapper.getAllStudentTodyRule(dayOfWeek);
+        Map<Long, AttendanceRuleDetailsUserVo> result = new HashMap<>();
+        for (AttendanceRuleDetailsUserVo userVo : teacherTodyRule) {
+            result.put(userVo.getUserId(), userVo);
+        }
+
+        return result;
+    }
 }

+ 7 - 2
src/main/java/com/xjrsoft/module/student/mapper/StudentLeaveMapper.java

@@ -4,13 +4,18 @@ import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.student.entity.StudentDropOut;
 import com.xjrsoft.module.student.entity.StudentLeave;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.LocalDateTime;
 
 /**
-* @title: 退学申请
+* @title: 学生请假
 * @Author dzx
-* @Date: 2024年4月17日
+* @Date: 2024年5月27日
 * @Version 1.0
 */
 @Mapper
 public interface StudentLeaveMapper extends MPJBaseMapper<StudentLeave> {
+
+    Long getLeaveCount(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
 }

+ 4 - 0
src/main/java/com/xjrsoft/module/student/service/IStudentLeaveService.java

@@ -3,6 +3,8 @@ package com.xjrsoft.module.student.service;
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.student.entity.StudentLeave;
 
+import java.time.LocalDateTime;
+
 /**
 * @title: 学生荣誉
 * @Author dzx
@@ -13,4 +15,6 @@ import com.xjrsoft.module.student.entity.StudentLeave;
 public interface IStudentLeaveService extends MPJBaseService<StudentLeave> {
 
     Boolean hikvisionLeave(Long id);
+
+    Long getLeaveCount(LocalDateTime startTime, LocalDateTime endTime);
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/student/service/impl/StudentLeaveServiceImpl.java

@@ -15,6 +15,7 @@ import com.xjrsoft.module.student.service.IStudentLeaveService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.Map;
@@ -75,6 +76,11 @@ public class StudentLeaveServiceImpl extends MPJBaseServiceImpl<StudentLeaveMapp
         return true;
     }
 
+    @Override
+    public Long getLeaveCount(LocalDateTime startTime, LocalDateTime endTime) {
+        return null;
+    }
+
     JsonArray selectResource(ApiUtil apiUtil){
         String apiPath = "/api/irds/v2/resource/resourcesByParams";
         JsonObject jsonObject = new JsonObject();

+ 7 - 4
src/main/resources/mapper/attendance/AttendanceRuleDetailsMapper.xml

@@ -18,10 +18,13 @@
         WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND NOW() BETWEEN start_date AND end_date
         AND t2.date_type = #{dayOfWeek}
     </select>
-    <select id="getAllStudentTodyRule" resultType="com.xjrsoft.module.attendance.entity.AttendanceRuleDetails">
-        SELECT t2.* FROM attendance_rule_category t1
-                             INNER JOIN attendance_rule_details t2 ON t1.id = t2.attendance_rule_category_id
+    <select id="getAllStudentTodyRule" resultType="com.xjrsoft.module.attendance.vo.AttendanceRuleDetailsUserVo">
+        SELECT t2.*,t5.user_id FROM attendance_rule_category t1
+        INNER JOIN attendance_rule_details t2 ON t1.id = t2.attendance_rule_category_id
+        INNER JOIN attendance_user_relation t3 ON t1.id = t3.attendance_rule_category_id
+        INNER JOIN xjr_user t4 ON t3.user_id = t4.id
+        INNER JOIN base_student t5 ON t4.id = t5.user_id
         WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND NOW() BETWEEN start_date AND end_date
-          AND t2.date_type = #{dayOfWeek}
+        AND t2.date_type = #{dayOfWeek}
     </select>
 </mapper>

+ 17 - 0
src/main/resources/mapper/student/StudentLeaveMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.student.mapper.StudentLeaveMapper">
+    <select id="getLeaveCount" resultType="java.lang.Long">
+        SELECT COUNT(*) FROM student_leave t1
+                                 INNER JOIN xjr_user t2 ON t1.user_id = t2.id
+        WHERE t1.status = 1 AND t2.delete_mark = 0
+          AND (
+                (start_date BETWEEN #{startTime} and #{endTime})
+                OR (end_date BETWEEN #{startTime} and #{endTime})
+                OR (start_date > #{startTime} and #{endTime} > end_date)
+                OR (#{startTime} > start_date and end_date > #{endTime})
+            )
+    </select>
+</mapper>

+ 2 - 2
src/main/resources/mapper/teacher/WfTeacherleaveMapper.xml

@@ -10,8 +10,8 @@
         AND (
         (leave_start_time BETWEEN #{startTime} and #{endTime})
         OR (leave_end_time BETWEEN #{startTime} and #{endTime})
-        OR (leave_end_time > #{startTime} and #{endTime} > leave_end_time)
-        OR (#{startTime} > leave_end_time and leave_end_time > #{endTime})
+        OR (leave_start_time > #{startTime} and #{endTime} > leave_end_time)
+        OR (#{startTime} > leave_start_time and leave_end_time > #{endTime})
         )
     </select>
 </mapper>