| src/main/java/com/gs/dingtalk/controller/KMController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/gs/dingtalk/task/ScheduledTasks.java | ●●●●● 补丁 | 查看 | 原始文档 | 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); } } }