Crazy 8 months ago
parent
commit
fa5ef4177e

+ 32 - 11
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/StudentAttendanceController.java

@@ -17,6 +17,7 @@ import javax.validation.*;
 import javax.servlet.http.*;
 import java.time.LocalDate;
 import java.time.ZoneId;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.io.IOException;
 
@@ -229,16 +230,36 @@ public class StudentAttendanceController {
         return success(result);
     }
 
-//    //TODO还没做的
-//    @GetMapping("/weekendAttendance")
-//    @Operation(summary = "周出勤统计")
-//    @PreAuthorize("@ss.hasPermission('system:student-attendance:day')")
-//    public CommonResult<Map<String,Integer>> getWeekendAttendance () {
-//        List<AdminUserDO>studentList = adminUserService.getAllUserList();
-//        for (AdminUserDO student :studentList){
-//            if ()
-//        }
-//        return null;
-//    }
+
+    @GetMapping("/weekendAttendance")
+    @Operation(summary = "周出勤统计")
+    @PreAuthorize("@ss.hasPermission('system:student-attendance:day')")
+    public CommonResult<Map<String,Integer>> getWeekendAttendance () {
+        List<AdminUserDO>studentList = adminUserService.getAllUserList();
+        //获取当天所在的一周内
+        LocalDate today = LocalDate.now();
+        LocalDate startDate = today.with(TemporalAdjusters.previousOrSame(java.time.DayOfWeek.MONDAY));
+        LocalDate endDate = today.with(TemporalAdjusters.nextOrSame(java.time.DayOfWeek.SUNDAY));
+        List<AdminUserDO> errorList =new ArrayList<>();
+        List<AdminUserDO> normalList =new ArrayList<>();
+        for (AdminUserDO student :studentList){
+          List<StudentAttendanceDO> attendanceList = studentAttendanceService.getStudentAttendanceInRange(student.getUserNumber(),startDate,endDate);
+          for (StudentAttendanceDO attendance :attendanceList){
+              if ("2".equals(attendance.getClockInStatus())){//有一个警告就添加
+                  errorList.add(student);
+                  break;
+              }else{
+                  normalList.add(student);
+              }
+          }
+        }
+        Integer errorNum =errorList.size();
+        Integer normalNum =normalList.size();
+        Map<String, Integer> result = new HashMap<>();
+        result.put("errorNum", errorNum);
+        result.put("normalNum", normalNum);
+
+        return success(result);
+    }
 
 }

+ 2 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentAttendance/StudentAttendanceMapper.java

@@ -78,7 +78,7 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
                  // 只出现在老师工作间下面的学生考勤情况
                  .eqIfPresent(StudentAttendanceDO::getDeptId, dept_id)
                  // 大于等于1
-                 .ge(StudentAttendanceDO::getClockInStatus,1)
+                 .ge(StudentAttendanceDO::getClockInStatus,2)
                  .orderByDesc(StudentAttendanceDO::getId));
     }
 
@@ -113,6 +113,7 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
     List<StudentAttendanceDO> getStudentAttendanceDay(@Param("userNumber") String userNumber,
                                                       @Param("clockDate") LocalDate clockDate);
 
+
     @Select("SELECT * FROM system_student_attendance " +
             "WHERE user_number = #{userNumber} " +
             "AND date BETWEEN #{startDate} AND #{endDate}")

+ 4 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceService.java

@@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.system.controller.admin.studentAttendance.vo.*;
 import cn.iocoder.yudao.module.system.dal.dataobject.studentAttendance.StudentAttendanceDO;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 学生考勤记录 Service 接口
@@ -70,4 +71,7 @@ public interface StudentAttendanceService {
     //所有学生某天
     List<StudentAttendanceDO> getStudentsAttendanceDay( LocalDate clockDate);
 
+    //一段时间内的考勤
+    List<StudentAttendanceDO> getStudentAttendanceInRange( String userNumber, LocalDate startDate,LocalDate endDate);
+
 }

+ 7 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceServiceImpl.java

@@ -97,14 +97,21 @@ public class StudentAttendanceServiceImpl implements StudentAttendanceService {
         return studentAttendanceMapper.getStudentAttendanceOne(userNumber,clockTime);
     }
 
+    //找某天的某个用户的打卡记录
     @Override
     public  List<StudentAttendanceDO> getStudentAttendanceDay(String userNumber, LocalDate clockDate){
         return studentAttendanceMapper.getStudentAttendanceDay(userNumber,clockDate);
     }
 
+    //找某天所有用户的打卡记录
     @Override
     public  List<StudentAttendanceDO> getStudentsAttendanceDay(LocalDate clockDate){
         return studentAttendanceMapper.getStudentsAttendanceDay(clockDate);
     }
+    //一段时间内某个用户的打卡记录
+    @Override
+   public List<StudentAttendanceDO> getStudentAttendanceInRange( String userNumber, LocalDate startDate,LocalDate endDate){
+        return studentAttendanceMapper.getStudentAttendanceInRange(userNumber,startDate,endDate);
+   }
 
 }