From b839bdc85e784e545cb5d371ed3f638747fb6a06 Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期一, 22 十二月 2025 09:05:22 +0800
Subject: [PATCH] 新增企业微信的接口

---
 src/main/java/com/gs/xky/task/ScheduledTasks.java |  230 +++++++++++++++++++++++++-------------------------------
 1 files changed, 103 insertions(+), 127 deletions(-)

diff --git a/src/main/java/com/gs/xky/task/ScheduledTasks.java b/src/main/java/com/gs/xky/task/ScheduledTasks.java
index 75c256f..3f6d295 100644
--- a/src/main/java/com/gs/xky/task/ScheduledTasks.java
+++ b/src/main/java/com/gs/xky/task/ScheduledTasks.java
@@ -1,157 +1,133 @@
 package com.gs.xky.task;
 
 
-import com.gs.xky.service.VwCjScSjTsBbService;
+import cn.hutool.core.collection.ListUtil;
+import com.gs.xky.config.DingTalkParam;
+import com.gs.xky.config.DingTalkResponse;
+import com.gs.xky.dto.EmployeeInfo;
+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.Async;
 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 VwCjScSjTsBbService vwCjScSjTsBbService;
-
-    private final AtomicBoolean exportTaskRunning = new AtomicBoolean(false);
-
-//    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 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);
+    private final AtomicBoolean isDeviceDataRunning = new AtomicBoolean(false);
+    private final AtomicBoolean isCompensateRunning = new AtomicBoolean(false);
+    private final AtomicBoolean isDingTalkRunning = new AtomicBoolean(false);
 
     /**
-     * 姣忓ぉ涓婂崍9鐐规墽琛�
-     * 瀵煎嚭鐢熶骇鏁版嵁骞跺彂閫侀拤閽夋秷鎭�
+     * 姣忎簲鍒嗛挓鎵ц涓�娆�
+     * 鑾峰彇璁惧鏈�杩戠殑涓�鏉¤褰�
      */
-    @Async("taskExecutor")
-    @Scheduled(cron = "0 0 12,16 * * ?")
-    public void exportAndSendProductionDataTask() {
-        if (!exportTaskRunning.compareAndSet(false, true)) {
-            log.warn("鐢熶骇鏁版嵁瀵煎嚭浠诲姟姝e湪鎵ц涓紝璺宠繃鏈鎵ц");
+    @Scheduled(cron = "0 0/5 * * * ?")
+    public void getDeviceRealTimeData() {
+        // 濡傛灉浠诲姟宸茬粡鍦ㄨ繍琛岋紝鍒欒烦杩囨湰娆℃墽琛�
+        if (!isDeviceDataRunning.compareAndSet(false, true)) {
+            log.info("銆恎etDeviceRealTimeData銆戜笂涓�娆′换鍔¤繕鍦ㄦ墽琛屼腑锛岃烦杩囨湰娆℃墽琛�");
             return;
         }
 
-        try {
-            log.info("寮�濮嬫墽琛岀敓浜ф暟鎹鍑哄苟鍙戦�侀拤閽変换鍔�");
-            boolean result = vwCjScSjTsBbService.exportAndSendToDingtalk();
+        log.info("銆恎etDeviceRealTimeData銆戝紑濮嬭幏鍙栬澶囧疄鏃舵暟鎹�");
 
-            if (result) {
-                log.info("鐢熶骇鏁版嵁瀵煎嚭骞跺彂閫侀拤閽変换鍔℃墽琛屾垚鍔�");
-            } else {
-                log.error("鐢熶骇鏁版嵁瀵煎嚭骞跺彂閫侀拤閽変换鍔℃墽琛屽け璐�");
+        // 浣跨敤寮傛鎵ц锛岄伩鍏嶉樆濉炶皟搴︾嚎绋�
+        CompletableFuture.runAsync(() -> {
+            try {
+                xkyService.GetSaveDetail();
+                log.info("銆恎etDeviceRealTimeData銆戣幏鍙栬澶囧疄鏃舵暟鎹垚鍔�");
+            } catch (IOException e) {
+                log.error("銆恎etDeviceRealTimeData銆戣幏鍙栬澶囧疄鏃舵暟鎹紓甯�: {}", e.getMessage(), e);
+            } finally {
+                isDeviceDataRunning.set(false);
             }
-        } catch (Exception e) {
-            log.error("鐢熶骇鏁版嵁瀵煎嚭骞跺彂閫侀拤閽変换鍔℃墽琛屽紓甯�", e);
-        } finally {
-            exportTaskRunning.set(false);
-        }
+        }, taskExecutor);
     }
 
-//    /**
-//     * 姣忎簲鍒嗛挓鎵ц涓�娆�
-//     * 鑾峰彇鍗忓浜戞渶杩戠殑涓�鏉¤褰�
-//     */
-//    @Scheduled(cron = "0 0/5 * * * ?")
-//    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 = "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;
-//        }
-//
-//        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);
-//    }
-//
-//    /**
-//     * 瀹氭椂鑾峰彇閽夐拤鏁版嵁
-//     */
-//    @Scheduled(cron = "0 0/53 * * * ?")
-//    public void getDinTalkData() {
-//        // 濡傛灉浠诲姟宸茬粡鍦ㄨ繍琛岋紝鍒欒烦杩囨湰娆℃墽琛�
-//        if (!isDingTalkRunning.compareAndSet(false, true)) {
-//            log.info("銆恎etDinTalkData銆戜笂涓�娆′换鍔¤繕鍦ㄦ墽琛屼腑锛岃烦杩囨湰娆℃墽琛�");
-//            return;
-//        }
-//
-//        log.info("銆恎etDinTalkData銆戝紑濮嬭幏鍙栭拤閽夋暟鎹�");
-//
-//        // 浣跨敤寮傛鎵ц锛岄伩鍏嶉樆濉炶皟搴︾嚎绋�
-//        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);
-//    }
+    /**
+     * 瀹氭椂鎵ц琛ュ伩閫昏緫
+     */
+    @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;
+        }
 
+        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);
+    }
+
+    /**
+     * 瀹氭椂鑾峰彇閽夐拤鏁版嵁
+     */
+    @Scheduled(cron = "0 0/53 * * * ?")
+    public void getDinTalkData() {
+        // 濡傛灉浠诲姟宸茬粡鍦ㄨ繍琛岋紝鍒欒烦杩囨湰娆℃墽琛�
+        if (!isDingTalkRunning.compareAndSet(false, true)) {
+            log.info("銆恎etDinTalkData銆戜笂涓�娆′换鍔¤繕鍦ㄦ墽琛屼腑锛岃烦杩囨湰娆℃墽琛�");
+            return;
+        }
+
+        log.info("銆恎etDinTalkData銆戝紑濮嬭幏鍙栭拤閽夋暟鎹�");
+
+        // 浣跨敤寮傛鎵ц锛岄伩鍏嶉樆濉炶皟搴︾嚎绋�
+        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