From 4f99f59668c9160ca60958b7347944def26f2228 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期日, 27 四月 2025 10:58:53 +0800
Subject: [PATCH] 回退配置

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/http4Xjnk/Worker.java |  218 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 218 insertions(+), 0 deletions(-)

diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/http4Xjnk/Worker.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/http4Xjnk/Worker.java
new file mode 100644
index 0000000..be427a4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/http4Xjnk/Worker.java
@@ -0,0 +1,218 @@
+package com.dy.rtuMw3rd.http4Xjnk;
+
+
+import java.util.*;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.rtuMw3rd.http4Xjnk.deal.XjnkDealer;
+import com.dy.rtuMw3rd.http4Xjnk.protocol.XjnkResVo;
+import com.dy.rtuMw3rd.http4Xjnk.protocol.controller.ControllerVo;
+import com.dy.rtuMw3rd.http4Xjnk.protocol.mainController.MainControllerVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import com.dy.rtuMw3rd.http4Xjnk.protocol.XjnkProtocol;
+import com.dy.rtuMw3rd.http4Xjnk.protocol.accessToken.Res4AccessTokenVo;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/3/19 15:53
+ * @Description
+ */
+@Slf4j
+@Component()
+public class Worker extends TimerTask {
+
+    private HttpsRq httpsRq ;
+    private XjnkDealer dealer ;
+
+    public String httpsBaseUr ;
+    public String appid ;
+    public String secret ;
+    private Long workInterval ;//寰幆浠诲姟闂撮殧
+
+    private Timer timer;
+
+    private boolean stop;
+
+    private boolean first = true ;
+    private boolean isAccessTokenGot = false ;
+    private List<MainControllerVo> mainControllerVos ;
+    private List<ControllerVo> controllerVos ;
+
+    @Autowired
+    public void setHttpsRq(HttpsRq httpsRq){
+        this.httpsRq = httpsRq ;
+    }
+    @Autowired
+    private void setDealer(XjnkDealer dealer){
+        this.dealer = dealer;
+    }
+    public void setHttpsBaseUr(String httpsBaseUr){
+        this.httpsBaseUr = httpsBaseUr ;
+    }
+    public void setAppid(String appid){
+        this.appid = appid ;
+    }
+    public void setSecret(String secret){
+        this.secret = secret ;
+    }
+    public void setWorkInterval(Long workInterval){
+        this.workInterval = workInterval ;
+    }
+
+    public void stop(){
+        this.stop = true ;
+        if(this.timer != null){
+            this.timer.cancel();
+        }
+    }
+
+    public boolean isStop(){
+        return this.stop ;
+    }
+
+    public void start(){
+        this.timer = new Timer();
+        this.stop = false ;
+        new Thread(() -> {
+            while(true){
+                try {
+                    getAccessToken() ;
+                }catch (Exception e){
+                    log.error("鏂扮枂鍐滃灕--鑾峰緱AccessToken寮傚父" + (e.getMessage() == null ? "" : (":" + e.getMessage())), e);
+                }
+                try{
+                    Thread.sleep(10000);
+                }catch (Exception e){
+                }
+                if(isAccessTokenGot){
+                    timer.schedule(this, 0, this.workInterval);
+                    break ;
+                }
+            }
+        }).start();
+    }
+
+    @Override
+    public void run() {
+        if(first){
+            first = false ;
+        }else{
+            try{
+                getAccessToken() ;
+            }catch(Exception e){
+                log.error("鏂扮枂鍐滃灕--鑾峰緱AccessToken寮傚父" + (e.getMessage() == null ? "" : (":" + e.getMessage())), e);
+            }
+        }
+        if(isAccessTokenGot) {
+            try {
+                getMainControllers();
+            } catch (Exception e) {
+                log.error("鏂扮枂鍐滃灕--鑾峰緱涓绘帶鍒跺櫒寮傚父" + (e.getMessage() == null ? "" : (":" + e.getMessage())), e);
+            }
+            try {
+                getControllers();
+            } catch (Exception e) {
+                log.error("鏂扮枂鍐滃灕--鑾峰緱鎺у埗鍣ㄥ紓甯�" + (e.getMessage() == null ? "" : (":" + e.getMessage())), e);
+            }
+        }
+    }
+
+    public void getAccessToken() throws Exception{
+        this.httpsRq.get4JsonBySync(this.httpsBaseUr + "/thirdapi/token?appid=" + this.appid + "&secret=" + this.secret,
+                null,
+                (statusCode, charset, body) -> {
+                    // 鎵撳嵃鍝嶅簲鐘舵�佺爜
+                    //System.out.println("Status Code: " + statusCode);
+                    // 鎵撳嵃鍝嶅簲鍐呭缂栫爜绫诲瀷
+                    //System.out.println("Response encoding: " + charset);
+                    // 鎵撳嵃鍝嶅簲浣撳唴瀹�
+                    //System.out.println("Response Body: " + body);
+                    if(statusCode != null && statusCode.equals(XjnkProtocol.SuccessCode)){
+                        Res4AccessTokenVo vo = JSON.parseObject(body, Res4AccessTokenVo.class);
+                        if(vo != null && vo.errcode != null && vo.errcode.length() > 0){
+                            log.error("鏂扮枂鍐滃灕--鑾峰彇AccessToken澶辫触锛宔rrcode锛�" + vo.errcode + "锛宔rrmsg锛�" + vo.errmsg);
+                        }else{
+                            isAccessTokenGot = true ;
+                            XjnkProtocol.AccessToken = vo.accessToken ;
+                            XjnkProtocol.AccessTokenExpires = vo.expires ;
+                            log.info("鏂扮枂鍐滃灕--鑾峰彇AccessToken鎴愬姛锛宎ccessToken锛�" + vo.accessToken + "锛宔xpires锛�" + vo.expires);
+                        }
+                    }
+                });
+    }
+
+    /**
+     * 鑾峰彇涓绘帶鍒跺櫒
+     * @throws Exception
+     */
+    public void getMainControllers() throws Exception{
+        this.httpsRq.get4JsonBySync(this.httpsBaseUr + "/thirdapi/pridevice/all?access_token=" + XjnkProtocol.AccessToken,
+                null,
+                (statusCode, charset, body) -> {
+                    if(statusCode != null && statusCode.equals(XjnkProtocol.SuccessCode)){
+                        try{
+                            //棣栧厛璁や负杩斿洖鐨勬槸閿欒淇℃伅锛岃繘琛屽皾璇�
+                            XjnkResVo vo = JSON.parseObject(body, XjnkResVo.class);
+                            if(vo != null && vo.errcode != null && vo.errcode.length() > 0){
+                                log.error("鏂扮枂鍐滃灕--鑾峰彇涓绘帶鍒跺櫒澶辫触锛宔rrcode锛�" + vo.errcode + "锛宔rrmsg锛�" + vo.errmsg);
+                            }
+                        }catch (Exception e){
+                            //濡傛灉涓嶆槸閿欒淇℃伅锛岄偅灏辨槸姝g‘淇℃伅
+                            try{
+                                mainControllerVos = JSON.parseArray(body, MainControllerVo.class);
+                                log.info("鏂扮枂鍐滃灕--鑾峰彇涓绘帶鍒跺櫒鎴愬姛锛�");
+                                if(mainControllerVos != null && mainControllerVos.size() > 0){
+                                    this.dealer.dealMainController(mainControllerVos);
+                                    for(MainControllerVo cvo : mainControllerVos){
+                                        log.info("涓绘帶鍒跺櫒锛�" + cvo);
+                                    }
+                                }
+                            }catch (Exception ee){
+                                log.error("鏂扮枂鍐滃灕--鑾峰彇涓绘帶鍒跺櫒寮傚父" + (ee.getMessage() == null ? "" : (":" + ee.getMessage())), ee);
+                            }
+                        }
+                    }
+                });
+    }
+    /**
+     * 鑾峰彇鎺у埗鍣�
+     * @throws Exception
+     */
+    public void getControllers() throws Exception{
+        if(this.mainControllerVos != null && this.mainControllerVos.size() > 0){
+            for(MainControllerVo mcvo : this.mainControllerVos){
+                Map<String, String> params = new HashMap<>() ;
+                params.put("pdId", "" + mcvo.id) ;
+                this.httpsRq.post4JsonBySync(this.httpsBaseUr + "/thirdapi/control_device/query?access_token=" + XjnkProtocol.AccessToken,
+                        params,
+                        (statusCode, charset, body) -> {
+                            if(statusCode != null && statusCode.equals(XjnkProtocol.SuccessCode)){
+                                try{
+                                    //棣栧厛璁や负杩斿洖鐨勬槸閿欒淇℃伅锛岃繘琛屽皾璇�
+                                    XjnkResVo vo = JSON.parseObject(body, XjnkResVo.class);
+                                    if(vo != null && vo.errcode != null && vo.errcode.length() > 0){
+                                        log.error("鏂扮枂鍐滃灕--鑾峰彇鎺у埗鍣ㄥけ璐ワ紝errcode锛�" + vo.errcode + "锛宔rrmsg锛�" + vo.errmsg);
+                                    }
+                                }catch (Exception e){
+                                    //濡傛灉涓嶆槸閿欒淇℃伅锛岄偅灏辨槸姝g‘淇℃伅
+                                    try{
+                                        controllerVos = JSON.parseArray(body, ControllerVo.class);
+                                        log.info("鏂扮枂鍐滃灕--鑾峰彇鎺у埗鍣ㄦ垚鍔燂細");
+                                        if(controllerVos != null && controllerVos.size() > 0){
+                                            this.dealer.dealController(controllerVos);
+                                            for(ControllerVo cvo : controllerVos){
+                                                log.info("鎺у埗鍣細" + cvo);
+                                            }
+                                        }
+                                    }catch (Exception ee){
+                                        log.error("鏂扮枂鍐滃灕--鑾峰彇鎺у埗鍣ㄥ紓甯�" + (ee.getMessage() == null ? "" : (":" + ee.getMessage())), ee);
+                                    }
+                                }
+                            }
+                        });
+            }
+        }
+    }
+}

--
Gitblit v1.8.0