From 4e4bcc8e95fef11e695d476da4e761399d3c7247 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期二, 19 十一月 2024 09:49:52 +0800 Subject: [PATCH] json传输byte[]数组,转换为base64编码 --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java | 193 +++++++++++++++++++++++++++++++++++++---------- 1 files changed, 150 insertions(+), 43 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java index aff5c1b..540e811 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java @@ -1,6 +1,16 @@ package com.dy.rtuMw.server.upgrade; +import com.dy.common.softUpgrade.state.UpgradeInfo; +import com.dy.common.softUpgrade.state.UpgradeRtu; +import com.dy.common.softUpgrade.state.UpgradeState; +import com.dy.common.softUpgrade.state.UpgradeTaskVo; +import com.dy.common.springUtil.SpringContextUtil; import com.dy.common.util.Callback; +import com.dy.common.util.DateTime; +import com.dy.common.util.ThreadJob; +import com.dy.rtuMw.web.webRequest.WebRequestDeal; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.util.List; @@ -9,7 +19,9 @@ * @Date: 2024/11/4 16:03 * @Description */ -public class UpgradeManager { +public class UpgradeManager extends ThreadJob implements Callback { + + private static final Logger log = LogManager.getLogger(UpgradeManager.class.getName()); private static final UpgradeManager INSTANCE = new UpgradeManager(); @@ -17,9 +29,6 @@ private Integer ugMaxRtuSameTime ;//鍚屾椂鍗囩骇RTU鏈�澶т釜鏁� private UpgradeTask task ;//鍗囩骇浠诲姟 - - private boolean taskIsOver = false ;//鍗囩骇浠诲姟鏄惁缁撴潫 - private int triggerTimes = 0 ;//杩炴帴瑙﹀彂娆℃暟 private UpgradeManager(){} @@ -32,46 +41,33 @@ */ public void initOption(UpgradeUnitConfigVo configVo) { this.failTryTimes = configVo.failTryTimes; - this.ugMaxRtuSameTime = configVo.ugMaxRtuSameTime; + this.ugMaxRtuSameTime = configVo.ugMaxRtuAtOnce; } /** * 璁剧疆鍗囩骇浠诲姟 - * @param softFileName 鍗囩骇绋嬪簭鏂囦欢鍚� - * @param softStoreAddr 鍗囩骇绋嬪簭瀛樻斁鍦板潃 - * @param softStartAddr 绋嬪簭瑕嗙洊璧峰鍦板潃 - * @param softFileData 鍗囩骇绋嬪簭瀛楄妭鏁扮粍 - * @param softBytesCalculate 鍗囩骇绋嬪簭瀛楄妭鏁�(鎸夊叕寮忚绠�) - * @param rtuAddrList 鍗囩骇RTU + * @param vo UpgradeTaskVo 鍗囩骇浠诲姟瀵硅薄 * @throws Exception */ - public void setUpgradeTask(String softFileName, - String softStoreAddr, - String softStartAddr, - byte[] softFileData, - Integer softBytesCalculate, - List<String> rtuAddrList) throws Exception { - if(this.task != null && !this.task.isOver()){ - throw new Exception("褰撳墠瀛樺湪鍗囩骇浠诲姟锛岃绛夊緟褰撳墠浠诲姟鎵ц瀹屾垨寮哄埗鍋滄褰撳墠浠诲姟"); - }else{ + public void setUpgradeTask(UpgradeTaskVo vo) throws Exception { + if(this.task != null && !this.task.taskIsOver){ + throw new Exception("褰撳墠瀛樺湪鍗囩骇浠诲姟锛岃绛夊緟褰撳墠浠诲姟鎵ц瀹屾垨寮哄埗缁撴潫褰撳墠浠诲姟"); + }else { this.task.forceOver(); this.task = new UpgradeTask(); this.task.initOption(this.failTryTimes, this.ugMaxRtuSameTime); - this.task.setTask(softFileName, - softStoreAddr, - softStartAddr, - softFileData, - softBytesCalculate, - rtuAddrList); + this.task.setTask(vo); + this.start(this); } } /** - * 鍋滄褰撳墠鍗囩骇浠诲姟 + * 缁撴潫褰撳墠鍗囩骇浠诲姟 * @throws Exception */ - public void stopUpgradeTask() throws Exception { + public void overUpgradeTask() throws Exception { if(this.task != null){ + this.stop(); this.task.forceOver(); } this.task = null ; @@ -83,20 +79,11 @@ * @param code * @param protocolName * @param protocolVersion - * @param callback + * @param callbackCom */ - public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callback){ - if(task != null && !taskIsOver){ - triggerTimes ++ ; - if(triggerTimes == 100){ - triggerTimes = 0 ; - if(this.task.isOver()){ - taskIsOver = true ; - } - } - if(!taskIsOver){ - this.task.trigger(rtuAddr, code, protocolName, protocolVersion, callback); - } + public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callbackCom){ + if(task != null && !task.taskIsOver){ + this.task.trigger(rtuAddr, code, protocolName, protocolVersion, callbackCom); } } @@ -122,7 +109,7 @@ * @param rtuAddr * @return */ - public UpgradeRtu upgradeInfos(String rtuAddr){ + public UpgradeRtu upgradeRtuInfo(String rtuAddr){ if(task != null){ return task.upgradeInfos(rtuAddr) ; }else{ @@ -135,7 +122,7 @@ * @param rtuAddrList * @return */ - public List<UpgradeRtu> upgradeInfos(List<String> rtuAddrList){ + public List<UpgradeRtu> upgradeRtuInfos(List<String> rtuAddrList){ if(task != null){ return task.upgradeInfos(rtuAddrList) ; }else{ @@ -144,4 +131,124 @@ } + /** + * Rtu鍗囩骇淇℃伅 + * @return + */ + public List<UpgradeRtu> upgradeRtuInfoAll(){ + if(task != null){ + return task.upgradeInfoAll() ; + }else{ + return null ; + } + } + + + //////////////////////////////////////////////////// + // + // 鍗囩骇鏈嶅姟宸ヤ綔绾跨▼鎵ц鐨勬柟娉� + // 缁熻鐘舵�� + 鐘舵�侀�氱煡 + // + //////////////////////////////////////////////////// + @Override + public Object execute() throws Exception { + boolean first = true ; + while (true){ + if(this.isStop()){ + break ; + } + if(first){ + try{ + //棣栨鍚姩锛屽仠1绉� + Thread.sleep(1000L); + }catch (Exception e){ + } + }else{ + try{ + //鍋淴姣 + Thread.sleep(UpgradeUnit.confVo.notifyStateInterval); + }catch (Exception e){ + } + } + if(this.task == null + || this.task.taskVo == null + || this.task.taskVo.rtuAddrList == null + || this.task.taskVo.rtuAddrList.size() == 0){ + //浠诲姟涓虹┖ + break ; + }else{ + if(!this.task.taskIsOver){ + //鍗囩骇浠诲姟鏈畬鎴� + //宸ヤ綔1锛氱粺璁″綋鍓嶆鍦ㄥ崌绾х殑RTU鏁伴噺锛屼负鍙楅檺鍚屾椂鍗囩骇鏁伴噺鍋氬噯澶� + this.task.statisticsRunningRtuCount() ; + + //宸ヤ綔2锛氱粺璁¢渶瑕佸崌绾т絾褰撳墠绂荤嚎RTU鐨勬儏鍐� + this.task.statisticsOffRtuCountAndSet() ; + + //宸ヤ綔3锛氱粺璁℃槸鍚﹀叏閮ㄥ崌绾у畬鎴� + this.task.taskIsOver = this.task.statisticsIsAllOver() ; + + if(this.task.taskIsOver){ + if(!this.task.taskOverType.equals(UpgradeTask.TaskOverType_Force)){ + //浠诲姟涓嶆槸寮哄埗缁撴潫鐨� + this.task.taskOverType = UpgradeTask.TaskOverType_Natural ;//浠诲姟瀹屾垚鏂瑰紡锛堣嚜鐒讹紝寮哄埗锛� + this.task.taskOverDt = DateTime.yyyy_MM_dd_HH_mm_ss() ;//浠诲姟瀹屾垚鏃堕棿(yyyy-mm-dd HH:MM:SS) + } + //浠诲姟瀹屾垚锛屾墽琛屾渶鍚庝竴娆″崌绾х姸鎬侀�氱煡 + //宸ヤ綔4锛氬崌绾х姸鎬侀�氱煡 + if(!first){ + this.notifyUpgradeStatus() ; + } + }else{ + //浠诲姟鏈畬鎴愶紝缁х画鎵ц鍗囩骇鐘舵�侀�氱煡 + //宸ヤ綔4锛� 鍗囩骇鐘舵�侀�氱煡 + if(!first){ + this.notifyUpgradeStatus() ; + } + } + }else{ + //浠诲姟宸茬粡瀹屾垚 + this.stop(); + } + } + if(first){ + first = false ; + } + } + return true ; + } + + /** + * 鍗囩骇鐘舵�侀�氱煡 + */ + private void notifyUpgradeStatus(){ + if(this.task.taskVo.callbackWebUrl != null && this.task.taskVo.callbackWebUrl.length() > 0){ + UpgradeInfo info = new UpgradeInfo() ; + info.ugTaskId = this.task.taskVo.id ;//浠诲姟ID + info.ugOverallState = this.currentUpgradeState() ; + info.ugRtuStateList = this.upgradeRtuInfoAll() ; + WebRequestDeal deal = SpringContextUtil.getBean(WebRequestDeal.class) ; + deal.deal(this.task.taskVo.callbackWebUrl, info); + } + } + + //////////////////////////////////////////////////// + // + // 鍗囩骇鐘舵�侀�氱煡宸ヤ綔绾跨▼鎵ц瀹屾垚鍚庡洖璋冪殑鏂规硶锛� + // 涔熷氨鏄笂闈xecute鏂规硶鎵ц瀹屾垚杩斿洖鎴栨姏鍑哄紓甯稿悗锛屾墽琛屼笅闈笁涓柟娉� + // + //////////////////////////////////////////////////// + @Override + public void call(Object obj) { + //绾跨▼宸ヤ綔鎵ц瀹屼簡锛宱bj = Boolean(true) + this.thread = null ;//璧嬪�间负null锛屼娇绾跨▼瀵硅薄琚瀮鍦惧洖鏀跺櫒鍥炴敹 + } + @Override + public void call(Object... objs) { + } + @Override + public void exception(Exception e) { + log.error("杩滅▼鍗囩骇浼烘湇绾跨▼鍙戠敓寮傚父", e); + } + } -- Gitblit v1.8.0