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