| src/main/java/com/gs/xky/config/DataAcquisitionConfiguration.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/gs/xky/service/WorkWXService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/gs/xky/task/ScheduledTasks.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/test/java/com/gs/xky/XkyApplicationTests.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/gs/xky/config/DataAcquisitionConfiguration.java
@@ -40,4 +40,9 @@ public static final String CUSTOM_ROBOT_TOKEN = "c2849e46cb0d91b0721c377742938b8ac5ef57e3c9eeab918e2cd5dd9c3aad2a"; public static final String SECRET = "SEC382027a5c81ea5152b71b687fb2c1ebf26acbde035355da6ab2fb37306454134"; //ä¼ä¸å¾®ä¿¡ public static final String CORPID = "wwabe21b935901a7d8"; public static final String CORPSECRET = "Z-7fNbZjrd80ypz69U14j8FMxI_fpUxcT6PksxlvKaY"; } src/main/java/com/gs/xky/service/WorkWXService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,70 @@ package com.gs.xky.service; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; import com.gs.xky.config.DataAcquisitionConfiguration; import lombok.Data; import lombok.RequiredArgsConstructor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import java.io.IOException; import java.util.concurrent.TimeUnit; @Service @RequiredArgsConstructor public class WorkWXService { private static final Logger log = LoggerFactory.getLogger(WorkWXService.class); private final OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(90, TimeUnit.SECONDS) .readTimeout(90, TimeUnit.SECONDS) .build(); private final ObjectMapper objectMapper = new ObjectMapper(); public String getAccessToken() throws IOException { String url = String.format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s", DataAcquisitionConfiguration.CORPID, DataAcquisitionConfiguration.CORPSECRET); Request request = new Request.Builder() .url(url) .get() .build(); try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { log.error("è·åä¼ä¸å¾®ä¿¡access_token失败ï¼HTTPç¶æç : {}", response.code()); throw new IOException("è·åaccess_token失败: " + response.message()); } String responseBody = response.body().string(); WorkWXTokenResponse tokenResponse = objectMapper.readValue(responseBody, WorkWXTokenResponse.class); if (tokenResponse.getErrcode() != 0) { log.error("è·åä¼ä¸å¾®ä¿¡access_token失败ï¼é误ç : {}, é误信æ¯: {}", tokenResponse.getErrcode(), tokenResponse.getErrmsg()); throw new IOException("è·åaccess_token失败: " + tokenResponse.getErrmsg()); } log.info("æåè·åä¼ä¸å¾®ä¿¡access_tokenï¼æææ: {}ç§", tokenResponse.getExpiresIn()); return tokenResponse.getAccessToken(); } } @Data private static class WorkWXTokenResponse { private Integer errcode; private String errmsg; @JsonProperty("access_token") private String accessToken; @JsonProperty("expires_in") private Integer expiresIn; } } src/main/java/com/gs/xky/task/ScheduledTasks.java
@@ -20,14 +20,17 @@ private final AtomicBoolean exportTaskRunning = new AtomicBoolean(false); /** * æ¯äºåéæ§è¡ä¸æ¬¡ * è·åè®¾å¤æè¿ç䏿¡è®°å½ */ @Scheduled(cron = "0 0/5 * * * ?") public void getDeviceRealTimeData() { // 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); /** * æ¯å¤©ä¸å9ç¹æ§è¡ @@ -57,4 +60,98 @@ } } // /** // * æ¯äºåéæ§è¡ä¸æ¬¡ // * è·ååå®¢äºæè¿ç䏿¡è®°å½ // */ // @Scheduled(cron = "0 0/5 * * * ?") // public void getDeviceRealTimeData() { // // 妿任å¡å·²ç»å¨è¿è¡ï¼åè·³è¿æ¬æ¬¡æ§è¡ // if (!isDeviceDataRunning.compareAndSet(false, true)) { // log.info("ãgetDeviceRealTimeDataãä¸ä¸æ¬¡ä»»å¡è¿å¨æ§è¡ä¸ï¼è·³è¿æ¬æ¬¡æ§è¡"); // return; // } // // log.info("ãgetDeviceRealTimeDataãå¼å§è·å设å¤å®æ¶æ°æ®"); // // // 使ç¨å¼æ¥æ§è¡ï¼é¿å é»å¡è°åº¦çº¿ç¨ // CompletableFuture.runAsync(() -> { // try { // xkyService.GetSaveDetail(); // log.info("ãgetDeviceRealTimeDataãè·å设å¤å®æ¶æ°æ®æå"); // } catch (IOException e) { // log.error("ãgetDeviceRealTimeDataãè·å设å¤å®æ¶æ°æ®å¼å¸¸: {}", 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("ãcompensateMethodãä¸ä¸æ¬¡ä»»å¡è¿å¨æ§è¡ä¸ï¼è·³è¿æ¬æ¬¡æ§è¡"); // return; // } // // log.info("ãcompensateMethodãå¼å§æ§è¡è¡¥å¿é»è¾"); // // // 使ç¨å¼æ¥æ§è¡ï¼é¿å é»å¡è°åº¦çº¿ç¨ // CompletableFuture.runAsync(() -> { // try { // // è¡¥å¿é»è¾ // List<MesInvItemArn> itemArnMinus = invItemArnService.getItemArnMinus(); // deliveryNoticeService.processMesInvItemArnStatusAsync(itemArnMinus); // log.info("ãcompensateMethodãè¡¥å¿é»è¾æ§è¡æå"); // } catch (Exception e) { // log.error("ãcompensateMethodãè¡¥å¿é»è¾æ§è¡å¼å¸¸: {}", e.getMessage(), e); // } finally { // isCompensateRunning.set(false); // } // }, taskExecutor); // } // // /** // * 宿¶è·åééæ°æ® // */ // @Scheduled(cron = "0 0/53 * * * ?") // public void getDinTalkData() { // // 妿任å¡å·²ç»å¨è¿è¡ï¼åè·³è¿æ¬æ¬¡æ§è¡ // if (!isDingTalkRunning.compareAndSet(false, true)) { // log.info("ãgetDinTalkDataãä¸ä¸æ¬¡ä»»å¡è¿å¨æ§è¡ä¸ï¼è·³è¿æ¬æ¬¡æ§è¡"); // return; // } // // log.info("ãgetDinTalkDataãå¼å§è·åééæ°æ®"); // // // 使ç¨å¼æ¥æ§è¡ï¼é¿å é»å¡è°åº¦çº¿ç¨ // 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("ãgetDinTalkDataãè·åå°{}æ¡åå·¥æ°æ®", collect.size()); // // List<List<EmployeeInfo>> partition = ListUtil.partition(collect, 100); // partition.forEach(staffService::UpdateStaff); // // log.info("ãgetDinTalkDataãééæ°æ®å¤ç宿"); // } catch (IOException e) { // log.error("ãgetDinTalkDataãè·åééæ°æ®å¼å¸¸: {}", e.getMessage(), e); // } finally { // isDingTalkRunning.set(false); // } // }, taskExecutor); // } } src/test/java/com/gs/xky/XkyApplicationTests.java
@@ -1,20 +1,12 @@ package com.gs.xky; import com.alibaba.fastjson.JSON; import com.gs.xky.config.*; import com.gs.xky.dto.BarcodeDeliveryNo; import com.gs.xky.dto.EmployeeInfo; import com.gs.xky.dto.XkyDetail; import com.gs.xky.dto.XkyEntity; import com.gs.xky.entity.MesInvItemArn; import com.gs.xky.service.*; import com.gs.xky.service.VwCjScSjTsBbService; import com.gs.xky.service.WorkWXService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.io.IOException; import java.util.List; import java.util.stream.Collectors; @SpringBootTest class XkyApplicationTests { @@ -22,6 +14,9 @@ @Autowired private VwCjScSjTsBbService vwCjScSjTsBbService; @Autowired private WorkWXService workWXService; /** * æµè¯å¯¼åºçäº§æ°æ®å¹¶åéééæ¶æ¯ @@ -49,4 +44,30 @@ System.out.println("=== æµè¯ç»æ ==="); } /** * æµè¯è·åä¼ä¸å¾®ä¿¡access_token * åè½ï¼è°ç¨ä¼ä¸å¾®ä¿¡APIè·åaccess_token */ @Test void testGetWorkWXAccessToken() { System.out.println("=== å¼å§æµè¯è·åä¼ä¸å¾®ä¿¡access_token ==="); try { String accessToken = workWXService.getAccessToken(); if (accessToken != null && !accessToken.isEmpty()) { System.out.println("â æåè·åä¼ä¸å¾®ä¿¡access_token"); System.out.println(" - access_token: " + accessToken); System.out.println(" - tokené¿åº¦: " + accessToken.length()); } else { System.out.println("â è·åçaccess_token为空"); } } catch (IOException e) { System.out.println("â è·åaccess_token失败: " + e.getMessage()); e.printStackTrace(); } System.out.println("=== æµè¯ç»æ ==="); } }