From 9312cee2191aabf6043356e2927ca692a57921ec Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期三, 13 十一月 2024 16:34:29 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
---
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/UgRtuController.java | 42 ++++
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/CurUpgradeStateVo.java | 24 ++
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java | 35 +++
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoUpgradeDetail.java | 36 +++
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/UgRtuTaskMapper.java | 15 +
pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuTaskMapper.xml | 37 ++
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeSv.java | 51 +++++
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeStateReceiverCtrl.java | 245 +++++++++++++++++++++++
pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuControllerMapper.xml | 53 ++++
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java | 14
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeRtu.java | 2
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/UgRtuControllerMapper.java | 8
12 files changed, 530 insertions(+), 32 deletions(-)
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeRtu.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeRtu.java
index e7ee7f7..09b02b9 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeRtu.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeRtu.java
@@ -37,7 +37,7 @@
public int currentRamAddr ;// 褰撳墠涓嬪彂鍗囩骇鍖匯TU瀛樺偍鍦板潃
public String lastDownDt ;// 鏈�鍚庝笅鍙戝崌绾ф暟鎹寘鏃堕棿锛坹yyy-mm-dd HH:HH:SS锛�
public int reTryTimes ;//鍗囩骇涓嶆垚鍔燂紝閲嶈瘯娆℃暟
- public boolean isOver ;
+ public boolean isOver ;//鏄惁鍗囩骇杩囩▼缁撴潫锛�1锛氱粨鏉燂紝0锛氭湭缁撴潫
public String toString(){
StringBuilder sb = new StringBuilder();
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/UgRtuControllerMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/UgRtuControllerMapper.java
index a40bec4..a71e642 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/UgRtuControllerMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/UgRtuControllerMapper.java
@@ -1,7 +1,6 @@
package com.dy.pipIrrGlobal.daoRm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.dy.pipIrrGlobal.pojoRm.RmWorkReportHistory;
import com.dy.pipIrrGlobal.pojoRm.UgRtuController;
import com.dy.pipIrrGlobal.voPr.VoController;
import org.apache.ibatis.annotations.Mapper;
@@ -111,4 +110,11 @@
* @return update count
*/
int updateByPrimaryKey(UgRtuController record);
+
+ /**
+ * 鏇存柊鍗囩骇RTU鐨勫崌绾у畬鎴愮姸鎬�
+ * @param params
+ * @return
+ */
+ int updateRtuUpgradeState(Map<?, ?> params) ;
}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/UgRtuTaskMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/UgRtuTaskMapper.java
index fc74ad8..e3f4419 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/UgRtuTaskMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/UgRtuTaskMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.UgRtuProgram;
import com.dy.pipIrrGlobal.pojoRm.UgRtuTask;
+import com.dy.pipIrrGlobal.voRm.VoUpgradeDetail;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@@ -64,12 +65,24 @@
* */
List<UgRtuTask> selectSome(Map<?,?> params) ;
-
/**
* 寰楀埌鎵�鏈夊崌绾х▼搴忚褰旾D鍜屾枃浠跺悕绉�
* @return 瀹炰綋闆嗗悎
* */
List<UgRtuTask> selectAll() ;
+
+ /**
+ * 鏌ヨ涓�涓崌绾т换鍔℃墍鏈夋帶鍒跺櫒鍦板潃
+ * @return 涓�浜涗竴浜涙帶鍒跺櫒鍦板潃
+ */
+ List<VoUpgradeDetail> selectTaskDetail(Long taskId) ;
+
+ /**
+ * 鏌ヨ鏈�鏂颁竴鏉′换鍔�
+ * @return
+ */
+ UgRtuTask selectLastTask() ;
+
/**
* update record selective
* @param record the updated record
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/UgRtuController.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/UgRtuController.java
index 60d0287..6656e9f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/UgRtuController.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/UgRtuController.java
@@ -3,9 +3,11 @@
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -19,7 +21,6 @@
@Data
@Builder
@ToString
-@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "RTU杩滅▼鍗囩骇鎵�鍏宠仈鐨勬祴鎺т竴浣撻榾 ")
public class UgRtuController implements BaseEntity {
@@ -53,5 +54,44 @@
@Schema(description = "鎺у埗鍣ㄥ湴鍧�", requiredMode = Schema.RequiredMode.REQUIRED)
public String rtuAddr;
+ /**
+ * 鍗囩骇鏄惁缁撴潫
+ */
+ @Schema(description = "鍗囩骇鏄惁缁撴潫", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ public Byte isOver;
+
+ /**
+ * 鍗囩骇鏄惁缁撴潫
+ */
+ @Schema(description = "鍗囩骇鏄惁缁撴潫", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @TableField(exist = false)
+ public String isOverStr;
+
+ /**
+ * 鍗囩骇鐘舵��
+ */
+ @Schema(description = "鍗囩骇鐘舵��", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ public Integer ugState;
+
+ /**
+ * 鍗囩骇鐘舵��
+ */
+ @Schema(description = "鍗囩骇鐘舵��", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ public String ugStateStr;
+
+ /**
+ * 鍗囩骇缁撴潫鏃堕棿
+ */
+ @Schema(description = "鍗囩骇缁撴潫鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:SS")
+ public Integer overDt;
+
+ /**
+ * 鏃犲弬鏁版嵁鏋勯�犳柟娉�
+ */
+ public UgRtuController(){
+ this.isOver = 0;
+ }
+
}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoUpgradeDetail.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoUpgradeDetail.java
new file mode 100644
index 0000000..fdc0cd2
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoUpgradeDetail.java
@@ -0,0 +1,36 @@
+package com.dy.pipIrrGlobal.voRm;
+
+import com.dy.common.softUpgrade.state.UpgradeRtu;
+import com.dy.common.softUpgrade.state.UpgradeState;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/11/13 13:47
+ * @Description
+ */
+@Data
+public class VoUpgradeDetail {
+ //鍗囩骇浠诲姟ID
+ public String taskId;
+
+ //浠诲姟鍒涘缓浜�
+ public String taskCreator;
+
+ //浠诲姟鍒涘缓鏃堕棿
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:SS")
+ public Date taskDt;
+
+ //绋嬪簭鏂囦欢鍚�
+ public String hexFileName;
+
+ //鍗囩骇浠诲姟鎬讳綋鐘舵��
+ public UpgradeState ugOverallState;
+
+ //鍗囩骇浠诲姟RTU鐘舵�佸垪琛�
+ public List<UpgradeRtu> ugRtuStateList;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuControllerMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuControllerMapper.xml
index 4f7c663..a0015a4 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuControllerMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuControllerMapper.xml
@@ -8,10 +8,13 @@
<result column="task_id" jdbcType="BIGINT" property="taskId" />
<result column="controller_id" jdbcType="BIGINT" property="controllerId" />
<result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr" />
+ <result column="is_over" jdbcType="TINYINT" property="isOver" />
+ <result column="ug_state" jdbcType="INTEGER" property="ugState" />
+ <result column="over_dt" jdbcType="TIMESTAMP" property="overDt" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
- id, task_id, controller_id, rtu_addr
+ id, task_id, controller_id, rtu_addr, is_over, ug_state, over_dt
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
<!--@mbg.generated-->
@@ -131,8 +134,10 @@
<!--@mbg.generated-->
insert into ug_rtu_controller (id, task_id, controller_id,
rtu_addr)
- values (#{id,jdbcType=BIGINT}, #{taskId,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT},
- #{rtuAddr,jdbcType=VARCHAR})
+ values (#{id,jdbcType=BIGINT}, #{taskId,jdbcType=BIGINT},
+ #{controllerId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR},
+ #{isOver,jdbcType=TINYINT}, #{ugState,jdbcType=INTEGER},
+ #{overDt,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.UgRtuController">
<!--@mbg.generated-->
@@ -150,6 +155,15 @@
<if test="rtuAddr != null">
rtu_addr,
</if>
+ <if test="isOver != null">
+ is_over,
+ </if>
+ <if test="ugState != null">
+ ug_state,
+ </if>
+ <if test="overDt != null">
+ over_dt,
+ </if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@@ -163,6 +177,15 @@
</if>
<if test="rtuAddr != null">
#{rtuAddr,jdbcType=VARCHAR},
+ </if>
+ <if test="isOver != null">
+ #{isOver,jdbcType=TINYINT},
+ </if>
+ <if test="ugState != null">
+ #{ugState,jdbcType=INTEGER},
+ </if>
+ <if test="overDt != null">
+ #{overDt,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
@@ -179,6 +202,15 @@
<if test="rtuAddr != null">
rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
</if>
+ <if test="isOver != null">
+ is_over = #{isOver,jdbcType=TINYINT},
+ </if>
+ <if test="ugState != null">
+ ug_state = #{isOver,jdbcType=INTEGER},
+ </if>
+ <if test="overDt != null">
+ over_dt = #{isOver,jdbcType=TIMESTAMP},
+ </if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
@@ -187,7 +219,20 @@
update ug_rtu_controller
set task_id = #{taskId,jdbcType=BIGINT},
controller_id = #{controllerId,jdbcType=BIGINT},
- rtu_addr = #{rtuAddr,jdbcType=VARCHAR}
+ rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
+ is_over = #{isOver,jdbcType=TINYINT},
+ ug_state = #{ugState,jdbcType=INTEGER},
+ over_dt = #{overDt,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=BIGINT}
</update>
+ <update id="updateRtuUpgradeState" >
+ <!--@mbg.generated-->
+ update ug_rtu_controller
+ set is_over = #{isOver,jdbcType=TINYINT},
+ ug_state = #{state,jdbcType=INTEGER},
+ over_dt = #{overDt,jdbcType=TIMESTAMP}
+ where task_id = #{taskId,jdbcType=BIGINT}
+ and rtu_addr = #{rtuAddr,jdbcType=VARCHAR}
+ </update>
+
</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuTaskMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuTaskMapper.xml
index a8d38c4..e91d8e6 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuTaskMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuTaskMapper.xml
@@ -17,15 +17,6 @@
<!--@mbg.generated-->
id, program_id, creator, remark, dt, is_execute, is_over, deleted
</sql>
- <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
- <!--@mbg.generated-->
- select
- <include refid="Base_Column_List" />,
- (CASE WHEN is_execute = 1 THEN '鏄�' ELSE '鍚�' END) AS isExecuteStr,
- (CASE WHEN is_over = 1 THEN '鏄�' ELSE '鍚�' END) AS isOverStr
- from ug_rtu_task
- where id = #{id,jdbcType=BIGINT}
- </select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
<!--@mbg.generated-->
delete from ug_rtu_task
@@ -37,6 +28,23 @@
where id = #{id,jdbcType=BIGINT}
</delete>
+ <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+ <!--@mbg.generated-->
+ select
+ <include refid="Base_Column_List" />,
+ (CASE WHEN is_execute = 1 THEN '鏄�' ELSE '鍚�' END) AS isExecuteStr,
+ (CASE WHEN is_over = 1 THEN '鏄�' ELSE '鍚�' END) AS isOverStr
+ from ug_rtu_task
+ where id = #{id,jdbcType=BIGINT}
+ </select>
+
+ <select id="selectLastTask" parameterType="java.lang.Long" resultMap="BaseResultMap">
+ <!--@mbg.generated-->
+ select
+ <include refid="Base_Column_List" />
+ from ug_rtu_task
+ order by id desc limit 0, 1
+ </select>
<select id="selectTotal" parameterType="java.util.Map" resultType="java.lang.Long">
<!--@mbg.generated-->
@@ -87,6 +95,17 @@
order by bd.id DESC
</select>
+ <select id="selectTaskDetail" parameterType="java.lang.Long" resultType="com.dy.pipIrrGlobal.voRm.VoUpgradeDetail">
+ <!--@mbg.generated-->
+ select
+ ttb.id as taskId,
+ ttb.creator as taskCreator,
+ ttb.dt as taskDt,
+ ptb.hex_file_name as hexFileName
+ from ug_rtu_task ttb
+ inner join ug_rtu_program ptb on ttb.program_id = ptb.id
+ where ttb.id = #{taskId,jdbcType=BIGINT}
+ </select>
<insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.UgRtuTask">
<!--@mbg.generated-->
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java
index e0b3d13..a8a05fc 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java
@@ -101,7 +101,7 @@
this.softFileDataGrp = listBytes.toArray(new byte[0][]);
for(String rtuAddr : this.taskVo.rtuAddrList){
//姝ゆ椂鐘舵�佽缃垚绂荤嚎鐘舵��
- UpgradeRtuDev ugRtu = new UpgradeRtuDev(this, rtuAddr, this.taskVo.softFileData.length, UpgradeRtuDev.STATE_OFFLINE) ;
+ UpgradeRtuDev ugRtu = new UpgradeRtuDev(this, rtuAddr, this.softFileDataGrp.length, UpgradeRtuDev.STATE_OFFLINE) ;
this.upgradeRtus.put(rtuAddr, ugRtu) ;
}
}
@@ -192,18 +192,18 @@
if(this.upgradeRtus != null && this.upgradeRtus.size() > 0){
Collection<UpgradeRtu> col = this.upgradeRtus.values() ;
for(UpgradeRtu info : col){
- if(info.state == UpgradeRtuDev.STATE_OFFLINE){
+ if(info.state == UpgradeRtu.STATE_OFFLINE){
state.offLineTotal ++ ;
- }else if(info.state == UpgradeRtuDev.STATE_UNSTART){
+ }else if(info.state == UpgradeRtu.STATE_UNSTART){
state.unStartTotal ++ ;
- }else if(info.state == UpgradeRtuDev.STATE_RUNNING){
+ }else if(info.state == UpgradeRtu.STATE_RUNNING){
state.runningTotal ++ ;
- }else if(info.state == UpgradeRtuDev.STATE_SUCCESS) {
+ }else if(info.state == UpgradeRtu.STATE_SUCCESS) {
state.successTotal++;
- }else if(info.state == UpgradeRtuDev.STATE_FAILONE) {
+ }else if(info.state == UpgradeRtu.STATE_FAILONE) {
state.failOneTotal++;
state.failTotal++;
- }else if(info.state == UpgradeRtuDev.STATE_FAIL) {
+ }else if(info.state == UpgradeRtu.STATE_FAIL) {
state.failTotal++;
}
if(info.isOver){
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/CurUpgradeStateVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/CurUpgradeStateVo.java
new file mode 100644
index 0000000..1f094e8
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/CurUpgradeStateVo.java
@@ -0,0 +1,24 @@
+package com.dy.pipIrrRemote.rtuUpgrage;
+
+import com.dy.common.softUpgrade.state.UpgradeRtu;
+import com.dy.common.softUpgrade.state.UpgradeState;
+import com.dy.pipIrrGlobal.voRm.VoUpgradeDetail;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/11/13 15:58
+ * @Description
+ */
+@Data
+public class CurUpgradeStateVo {
+ //鍗囩骇浠诲姟ID
+ public VoUpgradeDetail upgrade ;
+ //鍗囩骇浠诲姟鎬讳綋鐘舵��
+ public UpgradeState ugOverallState;
+ //鍗囩骇浠诲姟RTU鐘舵�佸垪琛�
+ public List<UpgradeRtu> ugRtuStateList;
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java
index c8436a0..8b53bb0 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java
@@ -2,13 +2,16 @@
import com.dy.common.aop.SsoAop;
import com.dy.common.multiDataSource.DataSourceContext;
+import com.dy.common.softUpgrade.state.UpgradeInfo;
import com.dy.common.softUpgrade.state.UpgradeTaskVo;
+import com.dy.common.springUtil.SpringContextUtil;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.ResultCodeMsg;
import com.dy.pipIrrGlobal.pojoRm.UgRtuProgram;
import com.dy.pipIrrGlobal.pojoRm.UgRtuTask;
import com.dy.pipIrrGlobal.rtuMw.ToRtuMwCom;
+import com.dy.pipIrrGlobal.voRm.VoUpgradeDetail;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -95,6 +98,7 @@
BaseResponse res = sendUpgradeTask2Mw(restTemplate, ugSendUrl, vo) ;
if(res != null){
if(res.isSuccess()){
+ this.sv.setUpgradeTaskExecuted(id);
return BaseResponseUtils.buildSuccess(true) ;
}else{
log.error("閫氫俊涓棿浠舵墽琛屼笅鍙戝崌绾т换鍔″け璐�" + (res.getMsg() == null? "" : ("锛�" + res.getMsg()))) ;
@@ -116,4 +120,35 @@
vo.softByteSrc16 = ppo.programCrc16 ;
}
+ /**
+ * 褰撳墠rtu杩滅▼鍗囩骇浠诲姟鎵ц鐘舵��
+ * @return 鎿嶄綔缁撴灉
+ */
+ @Operation(summary = "褰撳墠rtu杩滅▼鍗囩骇浠诲姟鎵ц鐘舵��", description = "褰撳墠rtu杩滅▼鍗囩骇浠诲姟鎵ц鐘舵��")
+ @ApiResponses(value = {
+ @ApiResponse(
+ responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+ description = "杩斿洖鎿嶄綔鎴愬姛涓庡惁鏁版嵁锛圔aseResponse.content:Boolean锛�",
+ content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+ schema = @Schema(implementation = Boolean.class))}
+ )
+ })
+ @GetMapping(path = "/curUpgradeState")
+ @SsoAop()
+ public BaseResponse<UpgradeInfo> curUpgradeState(){
+ if(RtuUpgradeStateReceiverCtrl.cache == null){
+ //return BaseResponseUtils.buildError("褰撳墠娌℃湁鍗囩骇浠诲姟") ;
+ //姝e紡杩愯鏃讹紝涓嬮潰涓よ鍘绘帀锛屼笂闈竴琛屾墦寮�
+ RtuUpgradeStateReceiverCtrl ctrl = SpringContextUtil.getBean(RtuUpgradeStateReceiverCtrl.class);
+ ctrl.demo();
+ }
+ CurUpgradeStateVo vo = new CurUpgradeStateVo() ;
+ List<VoUpgradeDetail> list = this.sv.selectTaskDetail(RtuUpgradeStateReceiverCtrl.cache.ugTaskId);
+ if(list != null && list.size() > 0){
+ vo.upgrade = list.get(0) ;
+ }
+ vo.ugOverallState = RtuUpgradeStateReceiverCtrl.cache.ugOverallState ;
+ vo.ugRtuStateList = RtuUpgradeStateReceiverCtrl.cache.ugRtuStateList ;
+ return BaseResponseUtils.buildSuccess(vo) ;
+ }
}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeStateReceiverCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeStateReceiverCtrl.java
index 8032651..3c7ffa2 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeStateReceiverCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeStateReceiverCtrl.java
@@ -2,11 +2,23 @@
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.util.Callback;
+import com.dy.common.util.CreateRandom;
+import com.dy.common.util.DateTime;
+import com.dy.common.util.ThreadJob;
import com.dy.common.webUtil.BaseResponse;
+import com.dy.pipIrrGlobal.pojoRm.UgRtuProgram;
+import com.dy.pipIrrGlobal.pojoRm.UgRtuTask;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
/**
* @Author: liurunyu
@@ -18,22 +30,241 @@
@RestController
@RequestMapping(path = "rtuUpgradeStateReceiver")
public class RtuUpgradeStateReceiverCtrl {
+
+ protected static UpgradeInfo cache ;
+
+ @Autowired
+ private RtuUpgradeSv sv ;
+
/**
* rtu杩滅▼鍗囩骇浠诲姟閫氫俊涓棿浠舵墽琛屾儏鍐电粺璁″洖鏀�
- * @param vo 鏁版嵁
+ * @param info 鏁版嵁
* @return 鎿嶄綔缁撴灉
*/
@Hidden //涓嶅叕寮�鎺ュ彛锛屽叾鍙湁閫氫俊涓棿浠惰皟鐢�
@PostMapping(path = "/receive")
- public BaseResponse<Boolean> receive(@RequestBody UpgradeInfo vo){
- log.info("鎺ユ敹鍒扮殑RTU杩滅▼鍗囩骇鐘舵�佹暟鎹负锛歿}",vo.toString());
- if(vo.ugRtuStateList != null && vo.ugRtuStateList.size() > 0){
- if(vo.ugRtuStateList.size() < 10){
- for (UpgradeRtu upgradeRtu : vo.ugRtuStateList) {
- log.info(upgradeRtu.toString());
+ public BaseResponse<Boolean> receive(@RequestBody UpgradeInfo info){
+ log.info("鎺ユ敹鍒扮殑RTU杩滅▼鍗囩骇鐘舵�佹暟鎹负锛歿}", info.toString());
+ //杩涜鎺掑簭
+ //Comparator<UpgradeRtu> comparator = Comparator.comparing(UpgradeRtu::getRtuAddr, Comparator.naturalOrder());
+ //info.ugRtuStateList = info.ugRtuStateList.stream().sorted(comparator).collect(Collectors.toList());
+
+ if(info.ugRtuStateList != null && info.ugRtuStateList.size() > 0){
+ if(info.ugRtuStateList.size() < 10){
+ for (UpgradeRtu rtuVo : info.ugRtuStateList) {
+ log.info(rtuVo.toString());
}
}
}
+ if(cache == null){
+ //姝ゆ椂涓嶅仛浠诲姟鎿嶄綔锛屽彧淇濋殰cache涓嶄负绌猴紝 绛夊緟涓嬫鍙戞潵鏁版嵁
+ if(info.ugRtuStateList != null && info.ugRtuStateList.size() > 0){
+ List<UpgradeRtu> overList = info.ugRtuStateList.stream().filter(itemVo -> itemVo.isOver).collect(Collectors.toList()) ;
+ if(overList != null && overList.size() > 0){
+ cache = info;
+ this.save2Db(info.ugTaskId, overList);
+ }
+ }
+ }else{
+ //褰揷ache涓湁鍊兼椂锛岃繘琛屾瘮瀵瑰瓨鍌紝瀵规瘮鐩殑鏄槻姝㈤噸澶嶆搷浣滄暟鎹簱
+ if(info.ugRtuStateList != null && info.ugRtuStateList.size() > 0){
+ //姝ゆ椂淇濊瘉涓や釜闆嗗悎閮戒笉涓簄ull
+ this.save2Db(info.ugTaskId, info.ugRtuStateList, cache.ugRtuStateList);
+ cache = info;
+ }
+ }
return null;
}
+ /**
+ * 姣斿骞舵暟鎹簱瀛樺偍
+ * @param taskId
+ * @param list
+ */
+ private void save2Db(String taskId, List<UpgradeRtu> list){
+ list.stream().forEach(vo -> {
+ if(vo != null) {
+ this.sv.saveRtuUpgradeState(Long.parseLong(taskId), vo);
+ }
+ });
+ }
+
+ /**
+ * 姣斿骞舵暟鎹簱瀛樺偍
+ * @param newList
+ * @param oldList
+ */
+ private void save2Db(String taskId, List<UpgradeRtu> newList, List<UpgradeRtu> oldList){
+ List<UpgradeRtu> newOverList = newList.stream().filter(vo -> vo.isOver).collect(Collectors.toList()) ;
+ for(UpgradeRtu nvo : newOverList){
+ if(nvo != null) {
+ if(oldList.stream().anyMatch(vo -> vo.rtuAddr.equals(nvo.rtuAddr) && vo.isOver == false)){
+ //涓婃娌℃湁鍗囩骇缁撴潫锛岃�屽綋鍓嶅崌绾х粨鏉熶簡
+ this.sv.saveRtuUpgradeState(Long.parseLong(taskId), nvo);
+ }
+ }
+ }
+ }
+ /////////////////////////////////////////////////////
+ //
+ // 浠ヤ笅妯℃嫙鏁版嵁
+ //
+ /////////////////////////////////////////////////////
+
+ private static ThreadJob threadJob ;
+
+ protected void demo(){
+ if(cache == null){
+ UgRtuTask tpo = this.sv.selectLastTask() ;
+ if(tpo != null) {
+ UgRtuProgram ppo = this.sv.selectProgramById(tpo.programId);
+ if (ppo == null) {
+ List<String> taskRtuAddrs = this.sv.selectAllRtuAddrByTask("" + tpo.id);
+ if (taskRtuAddrs != null && taskRtuAddrs.size() > 0) {
+ cache = new UpgradeInfo();
+ cache.ugTaskId = "" + tpo.id;
+ cache.ugOverallState = new UpgradeState() ;
+ cache.ugOverallState.rtuTotal = taskRtuAddrs.size() ;
+ cache.ugRtuStateList = new ArrayList<>() ;
+ for (String addr : taskRtuAddrs) {
+ UpgradeRtu rtu = new UpgradeRtu() ;
+ rtu.rtuAddr = addr ;
+ rtu.state = UpgradeRtu.STATE_UNSTART ;
+ rtu.totalPackage = (ppo.programBytes.length / 512) + ((ppo.programBytes.length % 512)>0?1:0) ;
+ rtu.isOver = false ;
+ cache.ugRtuStateList.add(rtu) ;
+ }
+ if(threadJob == null){
+ threadJob = new ThreadJob() {
+ @Override
+ public Object execute() throws Exception {
+ runDemo() ;
+ return null;
+ }
+ };
+ try{
+ threadJob.start(new Callback() {
+ @Override
+ public void call(Object obj) {
+ }
+ @Override
+ public void call(Object... objs) {
+ }
+ @Override
+ public void exception(Exception e) {
+ }
+ });
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ private void runDemo(){
+ boolean hasRunning = true ;
+ while (true){
+ for(UpgradeRtu rtu : cache.ugRtuStateList){
+ this.rtuUpgrade(rtu) ;
+ hasRunning = this.statisticsNowUpgradeState() ;
+ if(!hasRunning){
+ break ;
+ }
+ }
+ if(!hasRunning){
+ break ;
+ }
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ private void rtuUpgrade(UpgradeRtu rtu){
+ if(rtu.lastDownDt == null){
+ //绗竴娆�
+ this.dealUpgradeFirstTime(rtu);
+ }else{
+ this.dealUpgrade(rtu);
+ }
+
+ }
+ private void dealUpgradeFirstTime(UpgradeRtu rtu){
+ int n = Integer.parseInt(new CreateRandom().create(1)) ;
+ if(n == 0){
+ rtu.state = UpgradeRtu.STATE_OFFLINE ;
+ rtu.currentPackage = 0 ;
+ rtu.currentRamAddr = 0x00 ;
+ rtu.lastDownDt = "" ;
+ rtu.reTryTimes = 0 ;
+ rtu.isOver = false ;
+ }else{
+ rtu.state = UpgradeRtu.STATE_RUNNING ;
+ rtu.currentPackage = 1 ;
+ rtu.currentRamAddr = 0x00 ;
+ rtu.lastDownDt = DateTime.yyyy_MM_dd_HH_mm_ss() ;
+ rtu.reTryTimes = 0 ;
+ rtu.isOver = false ;
+ }
+ }
+ private void dealUpgrade(UpgradeRtu rtu){
+ if(rtu.state == UpgradeRtu.STATE_OFFLINE){
+ //绂荤嚎鐨勶紝涓嶅鐞�
+ return ;
+ }
+ int n = Integer.parseInt(new CreateRandom().create(2)) ;
+ if(n == 44 || n == 45 || n == 54){
+ if(rtu.currentPackage == 1){
+ //1鍖呮
+ rtu.state = UpgradeRtu.STATE_FAILONE ;
+ return ;
+ }
+ }
+ if(rtu.currentPackage == rtu.totalPackage){
+ //鍗囩骇缁撴潫
+ rtu.state = UpgradeRtu.STATE_SUCCESS ;
+ rtu.isOver = true ;
+ return ;
+ }
+
+ rtu.state = UpgradeRtu.STATE_RUNNING ;
+ rtu.currentPackage += 1 ;
+ rtu.currentRamAddr = 0x00 + UpgradeRtu.RAMADDRADD ;
+ rtu.lastDownDt = DateTime.yyyy_MM_dd_HH_mm_ss() ;
+ rtu.reTryTimes = 0 ;
+ rtu.isOver = false ;
+ }
+
+ /**
+ * 褰撳墠鍗囩骇鐘舵��
+ * @return
+ */
+ public boolean statisticsNowUpgradeState() {
+ boolean hasRunning = false ;
+ if(cache.ugRtuStateList != null && cache.ugRtuStateList.size() > 0){
+ for(UpgradeRtu rtu : cache.ugRtuStateList){
+ if(rtu.state == UpgradeRtu.STATE_OFFLINE){
+ cache.ugOverallState.offLineTotal ++ ;
+ }else if(rtu.state == UpgradeRtu.STATE_UNSTART){
+ cache.ugOverallState.unStartTotal ++ ;
+ }else if(rtu.state == UpgradeRtu.STATE_RUNNING){
+ cache.ugOverallState.runningTotal ++ ;
+ hasRunning = true ;
+ }else if(rtu.state == UpgradeRtu.STATE_SUCCESS) {
+ cache.ugOverallState.successTotal++;
+ }else if(rtu.state == UpgradeRtu.STATE_FAILONE) {
+ cache.ugOverallState.failOneTotal++;
+ cache.ugOverallState.failTotal++;
+ }else if(rtu.state == UpgradeRtu.STATE_FAIL) {
+ cache.ugOverallState.failTotal++;
+ }
+ if(rtu.isOver){
+ cache.ugOverallState.overTotal++;
+ }
+ }
+ }
+ return hasRunning ;
+ }
}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeSv.java
index 59aa42f..626af0e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeSv.java
@@ -1,15 +1,20 @@
package com.dy.pipIrrRemote.rtuUpgrage;
+import com.dy.common.softUpgrade.state.UpgradeRtu;
import com.dy.pipIrrGlobal.daoRm.UgRtuControllerMapper;
import com.dy.pipIrrGlobal.daoRm.UgRtuProgramMapper;
import com.dy.pipIrrGlobal.daoRm.UgRtuTaskMapper;
import com.dy.pipIrrGlobal.pojoRm.UgRtuProgram;
import com.dy.pipIrrGlobal.pojoRm.UgRtuTask;
+import com.dy.pipIrrGlobal.voRm.VoUpgradeDetail;
import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.Date;
import java.util.List;
+import java.util.Map;
/**
* @Author: liurunyu
@@ -28,7 +33,7 @@
/**
* 閫氫俊涓婚敭鏌ヨ涓�涓崌绾т换鍔�
- * @param id 涓婚敭
+ * @param taskId 涓婚敭
* @return
*/
public UgRtuTask selectTaskById(String taskId){
@@ -51,4 +56,48 @@
public List<String> selectAllRtuAddrByTask(String taskId){
return this.cdao.selectAllRtuAddrByTask(Long.valueOf(taskId)) ;
}
+
+ /**
+ * 鏌ヨ涓�涓崌绾т换鍔℃湁鍏充俊鎭�
+ * @return 鍗囩骇浠诲姟鏈夊叧淇℃伅
+ */
+ public List<VoUpgradeDetail> selectTaskDetail(String taskId){
+ return this.tdao.selectTaskDetail(Long.valueOf(taskId)) ;
+ }
+
+
+ /**
+ * 淇濆瓨鍗囩骇浠诲姟涓烘墽琛岀姸鎬�
+ * @param taskId 浠诲姟ID
+ */
+ public void setUpgradeTaskExecuted(String taskId){
+ this.tdao.executeById(Long.valueOf(taskId)) ;
+ }
+
+
+ /**
+ * 淇濆瓨RTU鍗囩骇缁撴潫鐘舵��
+ * @param taskId
+ * @param rtu
+ */
+ public void saveRtuUpgradeState(Long taskId, UpgradeRtu rtu){
+ Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(rtu) ;
+ params.put("taskId", taskId) ;
+ params.put("overDt", new Date()) ;
+ cdao.updateRtuUpgradeState(params) ;
+ }
+
+ /////////////////////////////////////////////////////
+ //
+ // 浠ヤ笅妯℃嫙鏁版嵁
+ //
+ /////////////////////////////////////////////////////
+ /**
+ * 閫氫俊涓婚敭鏌ヨ涓�涓崌绾т换鍔�
+ * @return
+ */
+ public UgRtuTask selectLastTask(){
+ return tdao.selectLastTask();
+ }
+
}
--
Gitblit v1.8.0