From 1a2b07f01ba4616fd9e894dddf474b56d020158c Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期一, 07 四月 2025 15:18:51 +0800 Subject: [PATCH] 整理版本 --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeRtuDev.java | 248 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 248 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeRtuDev.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeRtuDev.java new file mode 100644 index 0000000..d9dda58 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeRtuDev.java @@ -0,0 +1,248 @@ +package com.dy.rtuMw.server.upgrade; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol.CommandType; +import com.dy.common.mw.protocol.MidResult; +import com.dy.common.mw.protocol.MidResultFromRtu; +import com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo; +import com.dy.common.softUpgrade.Com1601Vo; +import com.dy.common.softUpgrade.state.UpgradeRtu; +import com.dy.common.softUpgrade.state.UpgradeTaskVo; +import com.dy.common.util.Callback; +import com.dy.common.util.DateTime; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: liurunyu + * @Date: 2024/11/4 15:00 + * @Description + */ +@Data +@EqualsAndHashCode(callSuper=false) +public class UpgradeRtuDev extends UpgradeRtu { + + @JSONField(serialize = false) + private Integer failTryTimes ;//鍗囩骇澶辫触鍚庯紝閲嶆柊鍋胯瘯鍗囩骇娆℃暟锛�0琛ㄧず涓嶉噸鏂板伩璇曞崌绾� + + @JSONField(serialize = false) + public UpgradeTaskVo taskVo ;//鍗囩骇浠诲姟鍊煎璞� + + private UpgradeRtuDev(){ + } + + public UpgradeRtuDev(UpgradeTaskVo taskVo, Integer failTryTimes , String rtuAddr, int totalPackage) { + super(); + this.taskVo = taskVo ; + this.failTryTimes = failTryTimes ; + this.rtuAddr = rtuAddr ; + this.state = STATE_UNSTART ; + this.totalPackage = totalPackage ; + this.currentPackage = 0 ; + this.currentRamAddr = 0 ; + this.lastDownDt = "" ; + this.lastDownDtAt = 0L ; + this.reTryTimes = 0 ; + this.isOver = false ; + } + + public UpgradeRtuDev(UpgradeTaskVo taskVo, Integer failTryTimes, String rtuAddr, int totalPackage, int state) { + super(); + this.taskVo = taskVo ; + this.failTryTimes = failTryTimes ; + this.rtuAddr = rtuAddr ; + this.state = state ; + this.totalPackage = totalPackage ; + this.currentPackage = 0 ; + this.currentRamAddr = 0 ; + this.lastDownDt = "" ; + this.lastDownDtAt = 0L ; + this.reTryTimes = 0 ; + this.isOver = false ; + } + + /** + * 瑙﹀彂鍗囩骇 + * @param code + * @param softData + * @param callbackCom + * @param objects + */ + @Override + public void trigger(String code, String protocolName, Short protocolVersion, byte[][] softData, Callback callbackCom, Object ...objects){ + if(!this.isOver){ + //鍗囩骇鏈畬鎴� + if(this.state == STATE_OFFLINE || this.state == STATE_UNSTART){ + //褰撳墠鏈紑濮嬪崌绾ц繃绋嬶紝涓嬪彂鍗囩骇閰嶇疆鎸囦护 + this.setStateAtSendCom1601Time(); + callbackCom.call(createCommand1601(protocolName, protocolVersion)); + }else if(this.state == STATE_RUNNING){ + //褰撳墠鍗囩骇杩囩▼涓� + if(code.equals(UpgradeCode.cd_9601)){ + //涓嬪彂閰嶇疆杩斿洖 + this.lastDownDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; + this.lastDownDtAt = System.currentTimeMillis() ; + callbackCom.call(createCommand1602(protocolName, protocolVersion, currentPackage, currentRamAddr, softData));//涓嬪彂鏁版嵁鍖呮寚浠� + }else if(code.equals(UpgradeCode.cd_9602)){ + //涓嬪彂鏁版嵁鍖呰繑鍥� + currentPackage++ ; + currentRamAddr += RAMADDRADD ; + if(currentPackage < totalPackage){ + this.lastDownDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; + this.lastDownDtAt = System.currentTimeMillis() ; + callbackCom.call(createCommand1602(protocolName, protocolVersion, currentPackage, currentRamAddr, softData)); + }else{ + this.lastDownDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; + this.lastDownDtAt = System.currentTimeMillis() ; + callbackCom.call(createCommand1603(protocolName, protocolVersion));//涓嬪彂鏍¢獙鎸囦护 + } + }else if(code.equals(UpgradeCode.cd_9603)){ + //涓嬪彂鏍¢獙杩斿洖 + this.setStateAtReceiveRes9603Time(objects) ; + callbackCom.call(createCommand1600(protocolName, protocolVersion));//涓嬪彂澶嶄綅鎸囦护锛屾鎸囦护鏃犲簲绛� + }else{ + //褰撳墠鏄崌绾т腑鐘舵�侊紝骞朵笖鍗囩骇鏈畬鎴愶紝鏀跺埌浜嗛潪960X绯诲垪鍔熻兘鐮侊紝鍒欏崌绾уけ璐� + if(currentPackage == 0 || currentPackage == 1){ + //1鍖呮锛屽崌绾уけ璐� + this.state = STATE_FAILONE ; + }else{ + //闈�1鍖呮锛屽崌绾уけ璐� + this.state = STATE_FAIL ; + } + } + }else if(this.state == STATE_FAILONE || this.state == STATE_FAIL){ + //涓婃璁剧疆浜嗗け璐ョ姸鎬侊紝骞朵笖鍗囩骇鏈畬鎴愶紝鏀跺埌浜嗛潪960X绯诲垪鍔熻兘鐮侊紝鍒欏崌绾уけ璐� + if(this.reTryTimes < this.failTryTimes){ + //閲嶈瘯娆℃暟鏈揪鍒颁笂闄愶紝缁х画閲嶈瘯 + this.reTryTimes += 1 ; + this.setStateAtSendCom1601Time(); + callbackCom.call(createCommand1601(protocolName, protocolVersion));//涓嬪彂閰嶇疆鎸囦护 + }else{ + //鍗囩骇澶辫触锛屽苟涓旈噸璇曟鏁拌揪鍒颁笂闄愶紝寮哄埗璁剧疆鍗囩骇瀹屾垚 + this.isOver = true ; + } + }else if(this.state == STATE_SUCCESS){ + //鍗囩骇鎴愬姛鎬侊紝涓嶄細鍑虹幇姝ゆ儏鍐碉紝鍥犱负璁剧疆涓烘垚鍔熸�佹椂锛屽崌绾х粨鏉熷睘鎬sOver璁剧疆涓簍rue浜� + //涓哄畨鍏ㄨ锛岃繖閲屽啀璁剧疆涓虹粨鏉熸�� + this.isOver = true ; + }else if(this.state == STATE_FAILOFFLINE){ + //宸茬粡琚叾浠栭�昏緫妯″潡寮哄埗璁剧疆鎴愮绾垮け璐ユ�佷簡锛屼笉浼氬嚭鐜版鎯呭喌锛屽洜涓鸿缃负绂荤嚎澶辫触鎬佹椂锛屽崌绾х粨鏉熷睘鎬sOver璁剧疆涓簍rue浜� + //杩欓噷涓嶅啀鏈変綔涓� + //涓哄畨鍏ㄨ锛岃繖閲屽啀璁剧疆涓虹粨鏉熸�� + this.isOver = true ; + }else{ + //鍏朵粬鐘舵�侊紙娌℃湁鍏朵粬鎬佷簡锛岄櫎闈炲啀璁捐寮�鍙戞椂澧炲姞浜嗙姸鎬侊級 + //涓哄畨鍏ㄨ锛岃繖閲屽啀璁剧疆涓虹粨鏉熸�� + this.isOver = true ; + } + }else{ + //鍗囩骇瀹屾垚锛屾棤涓氬姟閫昏緫 + } + } + + /** + * 璁剧疆鍙戦�侀厤缃懡浠ゆ椂鍒荤殑鐘舵�� + */ + private void setStateAtSendCom1601Time(){ + this.state = STATE_RUNNING;//鍗囩骇杩涜涓� + this.currentPackage = 0 ; + this.currentRamAddr = 0 ; + this.isOver = false ; + this.lastDownDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; + this.lastDownDtAt = System.currentTimeMillis() ; + } + + /** + * 璁剧疆1603鎸囦护杩斿洖鏃跺埢鐨勭姸鎬� + */ + private void setStateAtReceiveRes9603Time(Object ...objects){ + this.isOver = true ;//鍗囩骇瀹屾垚 + this.state = STATE_SUCCESS ; + if(objects != null && objects.length > 0){ + if(objects[0] instanceof com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo){ + com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo vo = (com.dy.common.mw.protocol.p206V1.upVos.DataCd960XVo)objects[0] ; + if(vo != null && !vo.success){ + this.state = STATE_FAILRTU ; + } + } else if(objects[0] instanceof com.dy.common.mw.protocol.p206V2.upVos.DataCd960XVo){ + com.dy.common.mw.protocol.p206V2.upVos.DataCd960XVo vo = (com.dy.common.mw.protocol.p206V2.upVos.DataCd960XVo)objects[0] ; + if(vo != null && !vo.success){ + this.state = STATE_FAILRTU ; + } + } else if(objects[0] instanceof com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo){ + com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo vo = (com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo)objects[0] ; + if(vo != null && !vo.success){ + this.state = STATE_FAILRTU ; + } + } + } + this.lastDownDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; + this.lastDownDtAt = System.currentTimeMillis() ; + } + + @Override + public Command createCommand1601(String protocolName, Short protocolVersion){ + Command com = new Command() ; + com.id = Command.defaultId ; + com.type = CommandType.outerCommand ; + com.rtuAddr = this.rtuAddr ; + com.code = UpgradeCode.cd_1601 ; + com.protocol = protocolName ; + com.protocolVersion = protocolVersion ; + com.rtuResultSendWebUrl = Command.ignoreRtuResultSendWebUrl ; + + Com1601Vo vo = new Com1601Vo() ; + vo.softStoreAddr = this.taskVo.softStoreAddr ; + vo.softStartAddr = this.taskVo.softStartAddr ; + vo.totalByte = this.taskVo.softBytesCalculate ; + vo.softCrc = this.taskVo.softByteSrc16; + com.param = vo ; + return com ; + } + + @Override + public Command createCommand1602(String protocolName, Short protocolVersion, int currentPackage, Integer ramAddr, byte[][] softData){ + Command com = new Command() ; + com.id = Command.defaultId ; + com.type = CommandType.outerCommand ; + com.rtuAddr = this.rtuAddr ; + com.code = UpgradeCode.cd_1602 ; + com.protocol = protocolName ; + com.protocolVersion = protocolVersion ; + + com.param = ramAddr ; + + if(currentPackage < softData.length){ + com.attachment = softData[currentPackage] ; + } + com.rtuResultSendWebUrl = Command.ignoreRtuResultSendWebUrl ; + return com ; + } + + @Override + public Command createCommand1603(String protocolName, Short protocolVersion){ + Command com = new Command() ; + com.id = Command.defaultId ; + com.type = CommandType.outerCommand ; + com.rtuAddr = this.rtuAddr ; + com.code = UpgradeCode.cd_1603 ; + com.protocol = protocolName ; + com.protocolVersion = protocolVersion ; + com.rtuResultSendWebUrl = Command.ignoreRtuResultSendWebUrl ; + return com ; + } + + @Override + public Command createCommand1600(String protocolName, Short protocolVersion){ + Command com = new Command() ; + com.id = Command.defaultId ; + com.type = CommandType.outerCommand ; + com.rtuAddr = this.rtuAddr ; + com.code = UpgradeCode.cd_1600 ; + com.protocol = protocolName ; + com.protocolVersion = protocolVersion ; + com.rtuResultSendWebUrl = Command.ignoreRtuResultSendWebUrl ; + return com ; + } +} -- Gitblit v1.8.0