dzx 1 год назад
Родитель
Сommit
e28f850d88

+ 54 - 49
src/main/java/com/xjrsoft/module/attendance/controller/TeacherStatisticsController.java

@@ -147,33 +147,33 @@ public class TeacherStatisticsController {
                     }
                     if(dto.getTimePeriod() != null && dto.getTimePeriod() == 1){
                         startTime = queryDate.atTime(5, 0, 0);
-                        if(detailsUserVo != null && detailsUserVo.getAmStartTime() != null){
+                        if(detailsUserVo.getAmStartTime() != null){
                             startTime = queryDate.atTime(detailsUserVo.getAmStartTime());
                         }
                         endTime = queryDate.atTime(12, 0, 0);
-                        if(detailsUserVo != null && detailsUserVo.getAmEndTime() != null){
+                        if(detailsUserVo.getAmEndTime() != null){
                             endTime = queryDate.atTime(detailsUserVo.getAmEndTime());
                         }
                     }else if(dto.getTimePeriod() != null && dto.getTimePeriod() == 2){
                         startTime = queryDate.atTime(12, 0, 0);
-                        if(detailsUserVo != null && detailsUserVo.getPmStartTime() != null){
+                        if(detailsUserVo.getPmStartTime() != null){
                             startTime = queryDate.atTime(detailsUserVo.getPmStartTime());
                         }
                         endTime = queryDate.atTime(18, 0, 0);
-                        if(detailsUserVo != null && detailsUserVo.getPmEndTime() != null){
+                        if(detailsUserVo.getPmEndTime() != null){
                             endTime = queryDate.atTime(detailsUserVo.getPmEndTime());
                         }
                         amEndTime  = queryDate.atTime(12, 0, 0);
-                        if(detailsUserVo != null && detailsUserVo.getAmEndTime() != null){
+                        if(detailsUserVo.getAmEndTime() != null){
                             amEndTime = queryDate.atTime(detailsUserVo.getAmEndTime());
                         }
                     }else{
                         startTime = queryDate.atTime(0, 0, 0);
-                        if(detailsUserVo != null && detailsUserVo.getEveningStartTime() != null){
+                        if(detailsUserVo.getEveningStartTime() != null){
                             startTime = queryDate.atTime(detailsUserVo.getEveningStartTime());
                         }
                         endTime = queryDate.atTime(23, 59, 59);
-                        if(detailsUserVo != null && detailsUserVo.getEveningEndTime() != null){
+                        if(detailsUserVo.getEveningEndTime() != null){
                             endTime = queryDate.atTime(detailsUserVo.getEveningEndTime());
                         }
                     }
@@ -184,18 +184,6 @@ public class TeacherStatisticsController {
                         continue;
                     }
 
-                    WfHeadTeacherLeave teacherLeave = headTeacherLeaveService.selectJoinOne(WfHeadTeacherLeave.class,
-                            new MPJLambdaWrapper<WfHeadTeacherLeave>()
-                                    .select(WfHeadTeacherLeave.class, x -> VoToColumnUtil.fieldsToColumns(WfHeadTeacherLeave.class).contains(x.getProperty()))
-                                    .innerJoin(XjrUser.class, XjrUser::getId, WfHeadTeacherLeave::getApplicantUserId)
-                                    .eq(WfHeadTeacherLeave::getStatus, 1)
-                                    .eq(WfHeadTeacherLeave::getApplicantUserId, record.getUserId())
-                                    .between(WfHeadTeacherLeave::getStartTime, startTime, endTime)
-                    );
-                    if(teacherLeave != null){
-                        record.setStatus(teacherLeave.getLeaveReason());
-                        continue;
-                    }
                     TeacherOutInRecordDto outInDto = new TeacherOutInRecordDto();
                     outInDto.setQueryDate(startTime.toLocalDate());
                     outInDto.setStartTime(startTime);
@@ -203,39 +191,56 @@ public class TeacherStatisticsController {
                     outInDto.setStatus(OutInStatusEnum.enter.getCode());
                     outInDto.setUserId(record.getUserId());
                     List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.getListByParam(outInDto);
-                    if(!outInRecords.isEmpty()){
+                    //查询该教师是否通过车辆进入
+                    List<CarOutInRecord> list = carOutInRecordService.list(
+                            new MPJLambdaWrapper<CarOutInRecord>()
+                                    .select(CarOutInRecord.class, x -> VoToColumnUtil.fieldsToColumns(CarOutInRecord.class).contains(x.getProperty()))
+                                    .leftJoin(CarMessageApply.class, CarMessageApply::getId, CarOutInRecord::getCarMessageApplyId)
+                                    .le(CarOutInRecord::getRecordTime, endTime)
+                                    .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
+                                    .eq(CarMessageApply::getUserId, record.getUserId())
+                                    .ge(dto.getTimePeriod() == 2, CarOutInRecord::getRecordTime, amEndTime)
+                                    .eq(CarOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
+                                    .orderByAsc(CarOutInRecord::getRecordTime)
+                    );
+                    //最早进入方式:1人脸 2车辆
+                    Integer inStatus = 0;
+                    if(!outInRecords.isEmpty() && !list.isEmpty()){
+                        TeacherOutInRecord teacherOutInRecord = outInRecords.get(0);
+                        CarOutInRecord carOutInRecord = list.get(0);
+                        int result = teacherOutInRecord.getRecordTime().compareTo(carOutInRecord.getRecordTime());
+                        if(result < 0){//人脸进入
+                            inStatus = 1;
+                        }else if(result == 0){//同时
+                            inStatus = 0;
+                        }else{//车辆进入
+                            inStatus = 2;
+                        }
+                    }else if(!outInRecords.isEmpty()){
+                        inStatus = 1;
+                    }else if(!list.isEmpty()){
+                        inStatus = 2;
+                    }
+
+                    if(inStatus == 1){
                         TeacherOutInRecord outInRecord = outInRecords.get(0);
-                        if(outInRecord != null){
+                        if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
+                            record.setRecordTime(outInRecord.getRecordTime());
+                            record.setStatus("到校");
+                        }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
                             record.setRecordTime(outInRecord.getRecordTime());
-                            record.setStatus(outInRecord.getAttendanceStatus());
-                            record.setAttendanceMode("人脸");
+                            record.setStatus("迟到");
                         }
-                    }else{
-                        //查询该教师是否通过车辆进入
-                        List<CarOutInRecord> list = carOutInRecordService.list(
-                                new MPJLambdaWrapper<CarOutInRecord>()
-                                        .select(CarOutInRecord.class, x -> VoToColumnUtil.fieldsToColumns(CarOutInRecord.class).contains(x.getProperty()))
-                                        .leftJoin(CarMessageApply.class, CarMessageApply::getId, CarOutInRecord::getCarMessageApplyId)
-                                        .le(CarOutInRecord::getRecordTime, endTime)
-                                        .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
-                                        .eq(CarMessageApply::getUserId, record.getUserId())
-                                        .ge(dto.getTimePeriod() != null && dto.getTimePeriod() == 2 && amEndTime != null, CarOutInRecord::getRecordTime, amEndTime)
-                                        .eq(CarOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
-                                        .orderByAsc(CarOutInRecord::getRecordTime)
-                        );
-                        if(!list.isEmpty()){
-                            CarOutInRecord outInRecord = list.get(0);
-                            if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
-                                record.setRecordTime(outInRecord.getRecordTime());
-                                record.setStatus("到校");
-                                record.setAttendanceMode("车辆");
-                                record.setCarNumber(outInRecord.getPlanNo());
-                            }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
-                                record.setRecordTime(outInRecord.getRecordTime());
-                                record.setStatus("迟到");
-                                record.setAttendanceMode("车辆");
-                                record.setCarNumber(outInRecord.getPlanNo());
-                            }
+                    }else if(inStatus == 2){
+                        CarOutInRecord outInRecord = list.get(0);
+                        if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
+                            record.setRecordTime(outInRecord.getRecordTime());
+                            record.setStatus("到校");
+                            record.setCarNumber(outInRecord.getPlanNo());
+                        }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
+                            record.setRecordTime(outInRecord.getRecordTime());
+                            record.setStatus("迟到");
+                            record.setCarNumber(outInRecord.getPlanNo());
                         }
                     }
 

+ 1 - 1
src/main/java/com/xjrsoft/module/databoard/controller/DataboardController.java

@@ -146,7 +146,7 @@ public class DataboardController {
         result.setAllCount(list.size());
         int teacherCount = 0, noTeacherCount = 0;
         for (CourseTable courseTable : list) {
-            if(courseTable.getTimePeriod() != null && "0".equals(courseTable.getTeacherId())){
+            if(courseTable.getTeacherId() != null && !"0".equals(courseTable.getTeacherId())){
                 teacherCount ++;
             }else{
                 noTeacherCount ++;

+ 46 - 32
src/main/java/com/xjrsoft/module/job/AttendanceRecordTask.java

@@ -68,7 +68,7 @@ public class AttendanceRecordTask {
     private IHolidayDateService holidayDateService;
 
 
-    @Scheduled(cron = "0 30 * * * ?")
+    @Scheduled(cron = "0 */30 * * * ?")
     public void execute() {
         String active = SpringUtil.getActiveProfile();
         if(!"prod".equals(active)){
@@ -83,27 +83,27 @@ public class AttendanceRecordTask {
         LocalDateTime startDateTime = now.withHour(0).withMinute(0).withSecond(0).withNano(0);
         LocalDateTime endDateTime = startDateTime.plusDays(1).plusSeconds(-1);
 
-        if(now.isBefore(noon)){
-            //计算上午考勤
-            teacherAttendanceRecord(startDateTime, endDateTime, 1);
-        }else if(now.isAfter(noon) && now.isBefore(evening)){
-            //计算上午考勤
-            teacherAttendanceRecord(startDateTime, endDateTime, 2);
-        }
-
-        LocalDateTime beginTime = now.withHour(0).withMinute(58).withSecond(0);
-        LocalDateTime endTime = now.withHour(1).withMinute(3).withSecond(0);
-
-        //凌晨1点计算前一天的数据
-        if(now.isAfter(beginTime) && now.isBefore(endTime)){
-            startDateTime = now.plusDays(-1).withHour(0).withMinute(0).withSecond(0).withNano(0);
-            endDateTime = startDateTime.plusDays(1).plusSeconds(-1);
-
-            //计算上午考勤
-            teacherAttendanceRecord(startDateTime, endDateTime, 1);
-            //计算上午考勤
-            teacherAttendanceRecord(startDateTime, endDateTime, 2);
-        }
+//        if(now.isBefore(noon)){
+//            //计算上午考勤
+//            teacherAttendanceRecord(startDateTime, endDateTime, 1);
+//        }else if(now.isAfter(noon) && now.isBefore(evening)){
+//            //计算上午考勤
+//            teacherAttendanceRecord(startDateTime, endDateTime, 2);
+//        }
+//
+//        LocalDateTime beginTime = now.withHour(0).withMinute(58).withSecond(0);
+//        LocalDateTime endTime = now.withHour(1).withMinute(3).withSecond(0);
+//
+//        //凌晨1点计算前一天的数据
+//        if(now.isAfter(beginTime) && now.isBefore(endTime)){
+//            startDateTime = now.plusDays(-1).withHour(0).withMinute(0).withSecond(0).withNano(0);
+//            endDateTime = startDateTime.plusDays(1).plusSeconds(-1);
+//
+//            //计算上午考勤
+//            teacherAttendanceRecord(startDateTime, endDateTime, 1);
+//            //计算上午考勤
+//            teacherAttendanceRecord(startDateTime, endDateTime, 2);
+//        }
     }
 
     /**
@@ -199,6 +199,7 @@ public class AttendanceRecordTask {
             WfTeacherleave studentLeave = wfTeacherleaveService.getLeaveByUserId(startTime, endTime, user.getId());
             if(studentLeave != null){
                 record.setAttendanceStatus(studentLeave.getLeaveType());
+                insertList.add(record);
                 continue;
             }
 
@@ -209,6 +210,8 @@ public class AttendanceRecordTask {
             outInDto.setStartTime(startTime);
             outInDto.setStatus(OutInStatusEnum.enter.getCode());
             outInDto.setUserId(record.getUserId());
+            outInDto.setTimePeriod(timePeriod);
+            outInDto.setAmEndTime(amEndTime);
             List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.getListByParam(outInDto);
 
             //查询该教师是否通过车辆进入
@@ -244,22 +247,26 @@ public class AttendanceRecordTask {
 
             if(inStatus == 1){
                 TeacherOutInRecord outInRecord = outInRecords.get(0);
-                if(outInRecord != null){
+                if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
                     record.setRecordTime(outInRecord.getRecordTime());
-                    record.setAttendanceStatus(outInRecord.getAttendanceStatus());
-                    record.setAttendanceMode(1);
+                    record.setAttendanceStatus("到校");
+                    record.setAttendanceMode(inStatus);
+                }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
+                    record.setRecordTime(outInRecord.getRecordTime());
+                    record.setAttendanceStatus("迟到");
+                    record.setAttendanceMode(inStatus);
                 }
             }else if(inStatus == 2){
                 CarOutInRecord outInRecord = list.get(0);
                 if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
                     record.setRecordTime(outInRecord.getRecordTime());
                     record.setAttendanceStatus("到校");
-                    record.setAttendanceMode(2);
+                    record.setAttendanceMode(inStatus);
                     record.setCarNumber(outInRecord.getPlanNo());
                 }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
                     record.setRecordTime(outInRecord.getRecordTime());
                     record.setAttendanceStatus("迟到");
-                    record.setAttendanceMode(1);
+                    record.setAttendanceMode(inStatus);
                     record.setCarNumber(outInRecord.getPlanNo());
                 }
             }
@@ -376,6 +383,7 @@ public class AttendanceRecordTask {
             WfTeacherleave studentLeave = wfTeacherleaveService.getLeaveByUserId(startTime, endTime, user.getId());
             if(studentLeave != null){
                 record.setAttendanceStatus(studentLeave.getLeaveType());
+                insertList.add(record);
                 continue;
             }
             TeacherOutInRecordDto outInDto = new TeacherOutInRecordDto();
@@ -384,6 +392,8 @@ public class AttendanceRecordTask {
             outInDto.setStartTime(startTime);
             outInDto.setStatus(OutInStatusEnum.enter.getCode());
             outInDto.setUserId(record.getUserId());
+            outInDto.setTimePeriod(timePeriod);
+            outInDto.setAmEndTime(amEndTime);
             List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.getListByParam(outInDto);
 
             //查询该教师是否通过车辆进入
@@ -419,22 +429,26 @@ public class AttendanceRecordTask {
 
             if(inStatus == 1){
                 TeacherOutInRecord outInRecord = outInRecords.get(0);
-                if(outInRecord != null){
+                if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
                     record.setRecordTime(outInRecord.getRecordTime());
-                    record.setAttendanceStatus(outInRecord.getAttendanceStatus());
-                    record.setAttendanceMode(1);
+                    record.setAttendanceStatus("到校");
+                    record.setAttendanceMode(inStatus);
+                }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
+                    record.setRecordTime(outInRecord.getRecordTime());
+                    record.setAttendanceStatus("迟到");
+                    record.setAttendanceMode(inStatus);
                 }
             }else if(inStatus == 2){
                 CarOutInRecord outInRecord = list.get(0);
                 if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
                     record.setRecordTime(outInRecord.getRecordTime());
                     record.setAttendanceStatus("到校");
-                    record.setAttendanceMode(2);
+                    record.setAttendanceMode(inStatus);
                     record.setCarNumber(outInRecord.getPlanNo());
                 }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
                     record.setRecordTime(outInRecord.getRecordTime());
                     record.setAttendanceStatus("迟到");
-                    record.setAttendanceMode(1);
+                    record.setAttendanceMode(inStatus);
                     record.setCarNumber(outInRecord.getPlanNo());
                 }
             }

+ 3 - 0
src/main/java/com/xjrsoft/module/outint/dto/TeacherOutInRecordDto.java

@@ -49,4 +49,7 @@ public class TeacherOutInRecordDto implements Serializable {
     @ApiModelProperty("时间段:1上午 2下午 3晚上")
     private Integer timePeriod;
 
+    @ApiModelProperty("上午结束时间")
+    private LocalDateTime amEndTime;
+
 }

+ 1 - 1
src/main/resources/application.yml

@@ -5,7 +5,7 @@ server:
 spring:
   # 环 io境 dev|pre|prod
   profiles:
-    active: pre
+    active: dev
   # jackson时间格式化
   jackson:
     time-zone: GMT+8

+ 3 - 0
src/main/resources/mapper/outin/TeacherOutInRecordMapper.xml

@@ -18,6 +18,9 @@
         AND status = #{dto.status}
         AND DATE_FORMAT(record_time, '%Y-%m-%d') = #{dto.queryDate}
         AND user_id = #{dto.userId}
+        <if test="dto.timePeriod != null and dto.timePeriod == 2">
+            AND record_time >= #{dto.amEndTime}
+        </if>
         ORDER BY record_time ASC
     </select>
 </mapper>

+ 64 - 52
src/test/java/com/xjrsoft/module/job/AttendanceRecordTaskTest.java

@@ -58,9 +58,6 @@ class AttendanceRecordTaskTest {
     @Autowired
     private IWfTeacherleaveService wfTeacherleaveService;
 
-    @Autowired
-    private IWfHeadTeacherLeaveService headTeacherLeaveService;
-
     @Autowired
     private ITeacherOutInRecordService teacherOutInRecordService;
 
@@ -75,14 +72,14 @@ class AttendanceRecordTaskTest {
     @Test
     public void execute() {
 
-        LocalDateTime now = LocalDateTime.of(2024, 11, 1, 0, 0, 0);
-        for (int i = 0; i < 17; i ++){
+        LocalDateTime now = LocalDateTime.of(2024, 12, 6, 0, 0, 0);
+        for (int i = 0; i < 1; i ++){
             LocalDateTime startDateTime = now.plusDays(i).withHour(0).withMinute(0).withSecond(0).withNano(0);
             LocalDateTime endDateTime = startDateTime.plusDays(i).withHour(23).withMinute(59).withSecond(59);
 
             teacherAttendanceRecord(startDateTime, endDateTime, 1);
 
-            teacherAttendanceRecord(startDateTime, endDateTime, 2);
+//            teacherAttendanceRecord(startDateTime, endDateTime, 2);
         }
 
     }
@@ -94,10 +91,7 @@ class AttendanceRecordTaskTest {
      */
     public void teacherAttendanceRecord(LocalDateTime startDateTime, LocalDateTime endDateTime, Integer timePeriod){
         List<String> nameList = new ArrayList<>();
-        nameList.add("李顺");
-        nameList.add("袁凯");
-        nameList.add("童勇");
-        nameList.add("张伟(大)");
+        nameList.add("彭佳佳");
         List<User> teacherList = userService.list(
                 new MPJLambdaWrapper<User>()
                         .select(User::getId)
@@ -186,61 +180,74 @@ class AttendanceRecordTaskTest {
             WfTeacherleave studentLeave = wfTeacherleaveService.getLeaveByUserId(startTime, endTime, user.getId());
             if(studentLeave != null){
                 record.setAttendanceStatus(studentLeave.getLeaveType());
+                insertList.add(record);
                 continue;
             }
 
-            WfHeadTeacherLeave teacherLeave = headTeacherLeaveService.selectJoinOne(WfHeadTeacherLeave.class,
-                    new MPJLambdaWrapper<WfHeadTeacherLeave>()
-                            .select(WfHeadTeacherLeave.class, x -> VoToColumnUtil.fieldsToColumns(WfHeadTeacherLeave.class).contains(x.getProperty()))
-                            .innerJoin(XjrUser.class, XjrUser::getId, WfHeadTeacherLeave::getApplicantUserId)
-                            .eq(WfHeadTeacherLeave::getStatus, 1)
-                            .eq(WfHeadTeacherLeave::getApplicantUserId, record.getUserId())
-                            .between(WfHeadTeacherLeave::getStartTime, startTime, endTime)
-            );
-            if(teacherLeave != null){
-                record.setAttendanceStatus(teacherLeave.getLeaveReason());
-                continue;
-            }
             TeacherOutInRecordDto outInDto = new TeacherOutInRecordDto();
             outInDto.setQueryDate(startTime.toLocalDate());
             outInDto.setEndTime(endTime);
             outInDto.setStartTime(startTime);
             outInDto.setStatus(OutInStatusEnum.enter.getCode());
             outInDto.setUserId(record.getUserId());
+            outInDto.setTimePeriod(timePeriod);
+            outInDto.setAmEndTime(amEndTime);
             List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.getListByParam(outInDto);
-            if(!outInRecords.isEmpty()){
+
+            //查询该教师是否通过车辆进入
+            List<CarOutInRecord> list = carOutInRecordService.list(
+                    new MPJLambdaWrapper<CarOutInRecord>()
+                            .select(CarOutInRecord.class, x -> VoToColumnUtil.fieldsToColumns(CarOutInRecord.class).contains(x.getProperty()))
+                            .leftJoin(CarMessageApply.class, CarMessageApply::getId, CarOutInRecord::getCarMessageApplyId)
+                            .le(CarOutInRecord::getRecordTime, endTime)
+                            .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
+                            .eq(CarMessageApply::getUserId, record.getUserId())
+                            .ge(timePeriod == 2, CarOutInRecord::getRecordTime, amEndTime)
+                            .eq(CarOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
+                            .orderByAsc(CarOutInRecord::getRecordTime)
+            );
+            //最早进入方式:1人脸 2车辆
+            Integer inStatus = 0;
+            if(!outInRecords.isEmpty() && !list.isEmpty()){
+                TeacherOutInRecord teacherOutInRecord = outInRecords.get(0);
+                CarOutInRecord carOutInRecord = list.get(0);
+                int result = teacherOutInRecord.getRecordTime().compareTo(carOutInRecord.getRecordTime());
+                if(result < 0){//人脸进入
+                    inStatus = 1;
+                }else if(result == 0){//同时
+                    inStatus = 0;
+                }else{//车辆进入
+                    inStatus = 2;
+                }
+            }else if(!outInRecords.isEmpty()){
+                inStatus = 1;
+            }else if(!list.isEmpty()){
+                inStatus = 2;
+            }
+
+            if(inStatus == 1){
                 TeacherOutInRecord outInRecord = outInRecords.get(0);
-                if(outInRecord != null){
+                if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
+                    record.setRecordTime(outInRecord.getRecordTime());
+                    record.setAttendanceStatus("到校");
+                    record.setAttendanceMode(inStatus);
+                }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
                     record.setRecordTime(outInRecord.getRecordTime());
-                    record.setAttendanceStatus(outInRecord.getAttendanceStatus());
-                    record.setAttendanceMode(1);
+                    record.setAttendanceStatus("迟到");
+                    record.setAttendanceMode(inStatus);
                 }
-            }else{
-                //查询该教师是否通过车辆进入
-                List<CarOutInRecord> list = carOutInRecordService.list(
-                        new MPJLambdaWrapper<CarOutInRecord>()
-                                .select(CarOutInRecord.class, x -> VoToColumnUtil.fieldsToColumns(CarOutInRecord.class).contains(x.getProperty()))
-                                .leftJoin(CarMessageApply.class, CarMessageApply::getId, CarOutInRecord::getCarMessageApplyId)
-                                .le(CarOutInRecord::getRecordTime, endTime)
-                                .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
-                                .eq(CarMessageApply::getUserId, record.getUserId())
-                                .ge(timePeriod != null && timePeriod == 2 && amEndTime != null, CarOutInRecord::getRecordTime, amEndTime)
-                                .eq(CarOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
-                                .orderByAsc(CarOutInRecord::getRecordTime)
-                );
-                if(!list.isEmpty()){
-                    CarOutInRecord outInRecord = list.get(0);
-                    if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
-                        record.setRecordTime(outInRecord.getRecordTime());
-                        record.setAttendanceStatus("到校");
-                        record.setAttendanceMode(2);
-                        record.setCarNumber(outInRecord.getPlanNo());
-                    }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
-                        record.setRecordTime(outInRecord.getRecordTime());
-                        record.setAttendanceStatus("迟到");
-                        record.setAttendanceMode(1);
-                        record.setCarNumber(outInRecord.getPlanNo());
-                    }
+            }else if(inStatus == 2){
+                CarOutInRecord outInRecord = list.get(0);
+                if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
+                    record.setRecordTime(outInRecord.getRecordTime());
+                    record.setAttendanceStatus("到校");
+                    record.setAttendanceMode(inStatus);
+                    record.setCarNumber(outInRecord.getPlanNo());
+                }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
+                    record.setRecordTime(outInRecord.getRecordTime());
+                    record.setAttendanceStatus("迟到");
+                    record.setAttendanceMode(inStatus);
+                    record.setCarNumber(outInRecord.getPlanNo());
                 }
             }
 
@@ -252,6 +259,11 @@ class AttendanceRecordTaskTest {
         }
 
         if(!insertList.isEmpty()){
+            recordService.remove(
+                    new QueryWrapper<TeacherAttendanceRecord>().lambda()
+                            .eq(TeacherAttendanceRecord::getTimeInterval, timePeriod)
+                            .eq(TeacherAttendanceRecord::getAttendanceDate, queryDate)
+            );
             recordService.saveBatch(insertList);
         }
     }