From d0443c2b5d277377f22748be405d9a06dafe04e6 Mon Sep 17 00:00:00 2001 From: tjx <t2856754968@163.com> Date: 星期六, 21 六月 2025 23:13:58 +0800 Subject: [PATCH] 更改 --- src/main/java/com/gs/xky/task/ScheduledTasks.java | 116 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 96 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/gs/xky/task/ScheduledTasks.java b/src/main/java/com/gs/xky/task/ScheduledTasks.java index 8ec7107..3f6d295 100644 --- a/src/main/java/com/gs/xky/task/ScheduledTasks.java +++ b/src/main/java/com/gs/xky/task/ScheduledTasks.java @@ -5,53 +5,129 @@ import com.gs.xky.config.DingTalkParam; import com.gs.xky.config.DingTalkResponse; import com.gs.xky.dto.EmployeeInfo; -import com.gs.xky.service.ApiService; -import com.gs.xky.service.MesStaffService; -import com.gs.xky.service.XkyService; +import com.gs.xky.entity.MesInvItemArn; +import com.gs.xky.service.*; import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.IOException; import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @Component @RequiredArgsConstructor public class ScheduledTasks { + private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class); private final XkyService xkyService; - private final ApiService apiService; - private final MesStaffService staffService; + private final DeliveryNoticeService deliveryNoticeService; + private final MesInvItemArnService invItemArnService; + private final Executor taskExecutor; // 娉ㄥ叆閫氱敤绾跨▼姹� + + // 鐢ㄤ簬鏍囪鍚勪换鍔℃槸鍚︽鍦ㄦ墽琛� + private final AtomicBoolean isDeviceDataRunning = new AtomicBoolean(false); + private final AtomicBoolean isCompensateRunning = new AtomicBoolean(false); + private final AtomicBoolean isDingTalkRunning = new AtomicBoolean(false); /** * 姣忎簲鍒嗛挓鎵ц涓�娆� * 鑾峰彇璁惧鏈�杩戠殑涓�鏉¤褰� - * - * @return void - * @author tjx - * @description TODO - * @date 2024/9/27 21:48 */ @Scheduled(cron = "0 0/5 * * * ?") - public void getDeviceRealTimeData() throws IOException { - xkyService.GetSaveDetail(); + public void getDeviceRealTimeData() { + // 濡傛灉浠诲姟宸茬粡鍦ㄨ繍琛岋紝鍒欒烦杩囨湰娆℃墽琛� + if (!isDeviceDataRunning.compareAndSet(false, true)) { + log.info("銆恎etDeviceRealTimeData銆戜笂涓�娆′换鍔¤繕鍦ㄦ墽琛屼腑锛岃烦杩囨湰娆℃墽琛�"); + return; + } + + log.info("銆恎etDeviceRealTimeData銆戝紑濮嬭幏鍙栬澶囧疄鏃舵暟鎹�"); + + // 浣跨敤寮傛鎵ц锛岄伩鍏嶉樆濉炶皟搴︾嚎绋� + CompletableFuture.runAsync(() -> { + try { + xkyService.GetSaveDetail(); + log.info("銆恎etDeviceRealTimeData銆戣幏鍙栬澶囧疄鏃舵暟鎹垚鍔�"); + } catch (IOException e) { + log.error("銆恎etDeviceRealTimeData銆戣幏鍙栬澶囧疄鏃舵暟鎹紓甯�: {}", e.getMessage(), e); + } finally { + isDeviceDataRunning.set(false); + } + }, taskExecutor); } - @Scheduled(cron = "0 0/55 * * * ?") - public void getDinTalkData() throws IOException { - DingTalkParam dingTalkParam = new DingTalkParam(1); + /** + * 瀹氭椂鎵ц琛ュ伩閫昏緫 + */ + @Scheduled(cron = "10 3,8,13,18,23,28,33,38,43,48,53,58 * * * ?") + public void compensateMethod() { + // 濡傛灉浠诲姟宸茬粡鍦ㄨ繍琛岋紝鍒欒烦杩囨湰娆℃墽琛� + if (!isCompensateRunning.compareAndSet(false, true)) { + log.info("銆恈ompensateMethod銆戜笂涓�娆′换鍔¤繕鍦ㄦ墽琛屼腑锛岃烦杩囨湰娆℃墽琛�"); + return; + } - DingTalkResponse<EmployeeInfo> employeeInfoDingTalkResponse = apiService.sendListRequest(dingTalkParam, EmployeeInfo.class, "http://192.168.1.64/eHR/eHRExternalService/Service.ashx"); + log.info("銆恈ompensateMethod銆戝紑濮嬫墽琛岃ˉ鍋块�昏緫"); + // 浣跨敤寮傛鎵ц锛岄伩鍏嶉樆濉炶皟搴︾嚎绋� + CompletableFuture.runAsync(() -> { + try { + // 琛ュ伩閫昏緫 + List<MesInvItemArn> itemArnMinus = invItemArnService.getItemArnMinus(); + deliveryNoticeService.processMesInvItemArnStatusAsync(itemArnMinus); + log.info("銆恈ompensateMethod銆戣ˉ鍋块�昏緫鎵ц鎴愬姛"); + } catch (Exception e) { + log.error("銆恈ompensateMethod銆戣ˉ鍋块�昏緫鎵ц寮傚父: {}", e.getMessage(), e); + } finally { + isCompensateRunning.set(false); + } + }, taskExecutor); + } - List<EmployeeInfo> collect = employeeInfoDingTalkResponse.getData().stream().filter(s -> "閫犳ⅵ鑰咃紙娴欐睙锛夌鎶�鏈夐檺鍏徃".equals(s.getCUnitName())).collect(Collectors.toList()); - System.out.println(collect.size()); + /** + * 瀹氭椂鑾峰彇閽夐拤鏁版嵁 + */ + @Scheduled(cron = "0 0/53 * * * ?") + public void getDinTalkData() { + // 濡傛灉浠诲姟宸茬粡鍦ㄨ繍琛岋紝鍒欒烦杩囨湰娆℃墽琛� + if (!isDingTalkRunning.compareAndSet(false, true)) { + log.info("銆恎etDinTalkData銆戜笂涓�娆′换鍔¤繕鍦ㄦ墽琛屼腑锛岃烦杩囨湰娆℃墽琛�"); + return; + } - List<List<EmployeeInfo>> partition = ListUtil.partition(collect, 100); + log.info("銆恎etDinTalkData銆戝紑濮嬭幏鍙栭拤閽夋暟鎹�"); - partition.forEach(staffService::UpdateStaff); + // 浣跨敤寮傛鎵ц锛岄伩鍏嶉樆濉炶皟搴︾嚎绋� + CompletableFuture.runAsync(() -> { + try { + DingTalkParam dingTalkParam = new DingTalkParam(1); + DingTalkResponse<EmployeeInfo> employeeInfoDingTalkResponse = + apiService.sendListRequest(dingTalkParam, EmployeeInfo.class, + "http://192.168.1.64/eHR/eHRExternalService/Service.ashx"); + + List<EmployeeInfo> collect = employeeInfoDingTalkResponse.getData().stream() + .filter(s -> "閫犳ⅵ鑰咃紙娴欐睙锛夌鎶�鏈夐檺鍏徃".equals(s.getCUnitName())) + .collect(Collectors.toList()); + + log.info("銆恎etDinTalkData銆戣幏鍙栧埌{}鏉″憳宸ユ暟鎹�", collect.size()); + + List<List<EmployeeInfo>> partition = ListUtil.partition(collect, 100); + partition.forEach(staffService::UpdateStaff); + + log.info("銆恎etDinTalkData銆戦拤閽夋暟鎹鐞嗗畬鎴�"); + } catch (IOException e) { + log.error("銆恎etDinTalkData銆戣幏鍙栭拤閽夋暟鎹紓甯�: {}", e.getMessage(), e); + } finally { + isDingTalkRunning.set(false); + } + }, taskExecutor); } } -- Gitblit v1.9.3