tjx
11 小时以前 ed83fdced0b1ce7a4476c32673b9349a2595d59b
获取设备打卡数据
已修改2个文件
58 ■■■■■ 文件已修改
src/main/java/com/gs/dingtalk/controller/KMController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/dingtalk/task/ScheduledTasks.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/dingtalk/controller/KMController.java
@@ -3,6 +3,7 @@
import com.gs.dingtalk.config.ResultMessage;
import com.gs.dingtalk.service.QwCheckinDayDataService;
import com.gs.dingtalk.service.QwHardwareCheckinDataService;
import com.gs.dingtalk.service.SendDingtalkService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@@ -21,6 +22,8 @@
    private final SendDingtalkService sendDingtalkService;
    private final QwCheckinDayDataService qwCheckinDayDataService;
    private final QwHardwareCheckinDataService qwHardwareCheckinDataService;
    @PostMapping("/chatSendMessage")
    public ResultMessage chatSendMessage() {
@@ -75,4 +78,31 @@
        }
    }
    /**
     * 同步企业微信设备打卡数据
     * @param startDate 开始日期,格式:yyyy-MM-dd
     * @param endDate 结束日期,格式:yyyy-MM-dd
     * @return 同步结果
     */
    @PostMapping("/syncHardwareCheckinData")
    public ResultMessage syncHardwareCheckinData(@RequestParam String startDate, @RequestParam String endDate) {
        try {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDate start = LocalDate.parse(startDate, formatter);
            LocalDate end = LocalDate.parse(endDate, formatter);
            // 转换为Unix时间戳
            ZoneId zoneId = ZoneId.of("Asia/Shanghai");
            long startTime = start.atStartOfDay(zoneId).toEpochSecond();
            // 结束时间为当天23:59:59
            long endTime = end.plusDays(1).atStartOfDay(zoneId).toEpochSecond() - 1;
            int insertCount = qwHardwareCheckinDataService.syncHardwareData(startTime, endTime);
            return ResultMessage.ok();
        } catch (Exception e) {
            return ResultMessage.error(e);
        }
    }
}
src/main/java/com/gs/dingtalk/task/ScheduledTasks.java
@@ -2,6 +2,7 @@
import com.gs.dingtalk.service.QwCheckinDayDataService;
import com.gs.dingtalk.service.QwHardwareCheckinDataService;
import com.gs.dingtalk.service.SendDingtalkService;
import com.gs.dingtalk.service.VwCjScSjTsBbService;
import lombok.RequiredArgsConstructor;
@@ -23,9 +24,13 @@
    private final QwCheckinDayDataService qwCheckinDayDataService;
    private final QwHardwareCheckinDataService qwHardwareCheckinDataService;
    private final AtomicBoolean exportTaskRunning = new AtomicBoolean(false);
    private final AtomicBoolean checkinDayDataTaskRunning = new AtomicBoolean(false);
    private final AtomicBoolean hardwareCheckinTaskRunning = new AtomicBoolean(false);
//    /**
//     * 每两分钟执行一次
@@ -116,4 +121,27 @@
            checkinDayDataTaskRunning.set(false);
        }
    }
    /**
     * 每天早上7:35执行(稍晚于打卡日报同步任务)
     * 同步前一天的企业微信设备打卡数据到数据库
     */
    @Async("taskExecutor")
    @Scheduled(cron = "0 35 7 * * ?")
    public void syncHardwareCheckinDataTask() {
        if (!hardwareCheckinTaskRunning.compareAndSet(false, true)) {
            log.warn("设备打卡数据同步任务正在执行中,跳过本次执行");
            return;
        }
        try {
            log.info("开始执行设备打卡数据同步任务(同步昨天数据)");
            int insertCount = qwHardwareCheckinDataService.syncYesterdayHardwareData();
            log.info("设备打卡数据同步任务执行成功,新增记录数: {}", insertCount);
        } catch (Exception e) {
            log.error("设备打卡数据同步任务执行异常", e);
        } finally {
            hardwareCheckinTaskRunning.set(false);
        }
    }
}