夏文涛 %!s(int64=2) %!d(string=hai) anos
pai
achega
54770ca8f5

+ 18 - 8
src/main/java/com/template/controller/ScheduleController.java

@@ -84,6 +84,7 @@ public class ScheduleController {
     //0 0 22 * * ?
     @Async
     @Scheduled(cron = "0 0 */1 * * ?")//一个小时
+    //@Scheduled(cron = "0 */1 * * * ?")//1分钟
     @Transactional(rollbackFor = {Exception.class})
     public void autoDispatch() throws Exception {
 
@@ -91,6 +92,7 @@ public class ScheduleController {
             if (scheduleConfig.getIsOpen().equals("1")) {
 
                 List<SmartAttendance> attendances = new ArrayList<>();
+                List<Integer> deleteAttendances = new ArrayList<>();
                 List<SmartUser> students = smartUserService.queryStudentDatas();
 
 //            SmartUser studentData = smartUserService.getSmartById(1088);
@@ -149,9 +151,9 @@ public class ScheduleController {
                     for (AttendanceRuleListEventByClazzResult.DataItem eventId : eventItems) {
 
                         //判断考勤是否开始 用考勤事件的开始时间和当前时间判断 考勤规则开始生效了才拉取
-                        Date eventStartTime =TimeExchange.StringToDate((TimeExchange.getDate() + " " + eventId.getAttendStartTime() + ":00"), "yyyy-MM-dd HH:mm:ss");
+                        Date eventStartTime = TimeExchange.StringToDate((TimeExchange.getDate() + " " + eventId.getAttendStartTime() + ":00"), "yyyy-MM-dd HH:mm:ss");
                         Date nowDate = new Date();
-                        if(nowDate.compareTo(eventStartTime) < 0){
+                        if (nowDate.compareTo(eventStartTime) < 0) {
                             continue;
                         }
 
@@ -199,10 +201,10 @@ public class ScheduleController {
                                         if (newAttends != null && newAttends.size() > 0) {
                                             int i = 0;
                                             for (AttendanceServiceListAttendClassRecordsResult.RecordsItem newAttend : newAttends) {
-                                                if (newAttend.getStatus().intValue() != 6) {//请假数据不通过考勤接口拿 因为考勤给的请假数据没有请假原因和请假时长
-                                                    if (oldAttends.size() > i) {
-                                                        SmartAttendance oldData = new SmartAttendance();
-                                                        oldData = oldAttends.get(i);
+                                                if (oldAttends.size() > i) {
+                                                    SmartAttendance oldData = new SmartAttendance();
+                                                    oldData = oldAttends.get(i);
+                                                    if (newAttend.getStatus().intValue() != 6) {
                                                         boolean isUpdate = false;
                                                         Date AttendTime = StringUtils.hasText(newAttend.getAttendTime()) ? TimeExchange.StringToDate((TimeExchange.getDate() + " " + newAttend.getAttendTime()), "yyyy-MM-dd HH:mm:ss") : TimeExchange.StringToDate((TimeExchange.getDate() + " " + eventId.getAttendEndTime() + ":00"), "yyyy-MM-dd HH:mm:ss");
                                                         if (oldData.getAttendTime().compareTo(AttendTime) != 0) {
@@ -220,8 +222,11 @@ public class ScheduleController {
                                                         if (isUpdate) {
                                                             attendances.add(oldData);
                                                         }
-
-                                                    } else {
+                                                    }else{
+                                                        deleteAttendances.add(oldData.getId());
+                                                    }
+                                                } else {
+                                                    if (newAttend.getStatus().intValue() != 6) {//请假数据不通过考勤接口拿 因为考勤给的请假数据没有请假原因和请假时长
                                                         SmartAttendance attendance = new SmartAttendance();
                                                         attendance.setUserId(student.get().getId());
                                                         attendance.setUserUid(newAttend.getUserUid());
@@ -235,6 +240,8 @@ public class ScheduleController {
                                                         attendances.add(attendance);
                                                     }
                                                 }
+                                                i++;
+
                                             }
                                         }
                                     }
@@ -247,6 +254,9 @@ public class ScheduleController {
                 if (attendances.size() > 0) {
                     smartAttendanceService.saveOrUpdateBatch(attendances);
                 }
+                if(deleteAttendances.size() > 0){
+                    smartAttendanceService.deleteDatasByids(deleteAttendances);
+                }
             }
         } catch (
                 Exception e) {

+ 2 - 0
src/main/java/com/template/services/SmartAttendanceService.java

@@ -52,4 +52,6 @@ public interface SmartAttendanceService extends IService<SmartAttendance> {
     Integer getClassAckHistoricalAttendance(int i, Date startTime, Date endTime, Integer id);
 
     List<AckDetailVo> ackDetail(Integer userId, LocalDateTime startTime, LocalDateTime endTime);
+
+    Integer deleteDatasByids(List<Integer> ids);
 }

+ 7 - 0
src/main/java/com/template/services/impl/SmartAttendanceServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.template.model.enumModel.eAttendanceStatu;
 import com.template.model.pojo.SmartAttendance;
 import com.template.mapper.SmartAttendanceMapper;
+import com.template.model.pojo.SmartTeaching;
 import com.template.model.pojo.SmartVisitor;
 import com.template.model.result.PageUtils;
 import com.template.model.vo.*;
@@ -187,4 +188,10 @@ public class SmartAttendanceServiceImpl extends ServiceImpl<SmartAttendanceMappe
     public List<AckDetailVo> ackDetail(Integer userId, LocalDateTime startTime, LocalDateTime endTime) {
         return smartAttendanceMapper.ackDetail(userId,startTime,endTime);
     }
+
+    @Override
+    public Integer deleteDatasByids(List<Integer> ids) {
+        int result = smartAttendanceMapper.deleteBatchIds(ids);
+        return result;
+    }
 }