From 3e82bb3f97e95c90099070787da4455e64b95b3f Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期四, 28 十一月 2024 14:39:19 +0800
Subject: [PATCH] 1、监视升级过程RTU集合以地址排序; 2、实现升级结果查询与导出。
---
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voUg/VoUgResult.java | 38 ++++++++-
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/UgRtuResultCtrl.java | 56 ++++++++++++-
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/UgRtuResultSv.java | 24 +++++
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voUg/VoUgRtuResult.java | 2
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeStateReceiverCtrl.java | 8 +
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/QueryUgResultVo.java | 8 +
pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuControllerMapper.xml | 55 ++++++++++---
7 files changed, 165 insertions(+), 26 deletions(-)
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voUg/VoUgResult.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voUg/VoUgResult.java
index 05bb328..3b23cda 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voUg/VoUgResult.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voUg/VoUgResult.java
@@ -1,12 +1,21 @@
package com.dy.pipIrrGlobal.voUg;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
+import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
-import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
+
+import java.util.Date;
/**
* @Author: liurunyu
@@ -15,50 +24,68 @@
*/
@Data
-@JsonPropertyOrder({ "id", "rtuAddr", "intakeName", "isOver", "isOverStr", "ugState", "ugStateStr", "overDt"})
+@HeadRowHeight(26)
+@ContentRowHeight(22)
+@JsonPropertyOrder({ "id", "intakeNum", "rtuAddr", "isOverStr", "ugStateStr", "overDt"})
public class VoUgResult {
/**
* 涓婚敭
*/
@Schema(description = "涓婚敭" )
@JSONField(serializeUsing= ObjectWriterImplToString.class)
+ @ExcelIgnore()
public Long id;
/**
* 鎺у埗鍣ㄥ湴鍧�
*/
@Schema(description = "鎺у埗鍣ㄥ湴鍧�" )
+ @ExcelProperty("鎺у埗鍣ㄥ湴鍧�")
+ @ColumnWidth(20)
+ @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
public String rtuAddr;
/**
* 鍙栨按缂栧彿
*/
@Schema(description = "鍙栨按鍙g紪鍙�")
+ @ExcelProperty("鍙栨按缂栧彿")
+ @ColumnWidth(20)
+ @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
private String intakeNum;
/**
* 鍗囩骇鏄惁缁撴潫
*/
@Schema(description = "鍗囩骇鏄惁缁撴潫" )
+ @JSONField(serialize = false)
+ @ExcelIgnore()
public Byte isOver;
/**
* 鍗囩骇鏄惁缁撴潫
*/
@Schema(description = "鍗囩骇鏄惁缁撴潫" )
- @TableField(exist = false)
+ @ExcelProperty("鍗囩骇缁撴潫")
+ @ColumnWidth(10)
+ @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
public String isOverStr;
/**
* 鍗囩骇鐘舵��
*/
@Schema(description = "鍗囩骇鐘舵��" )
+ @JSONField(serialize = false)
+ @ExcelIgnore()
public Integer ugState;
/**
* 鍗囩骇鐘舵��
*/
@Schema(description = "鍗囩骇鐘舵��" )
+ @ExcelProperty("鍗囩骇缁撴灉")
+ @ColumnWidth(16)
+ @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
public String ugStateStr;
/**
@@ -66,7 +93,10 @@
*/
@Schema(description = "鍗囩骇缁撴潫鏃堕棿" )
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:SS")
- public Integer overDt;
+ @ExcelProperty("缁撴潫鏃堕棿")
+ @ColumnWidth(30)
+ @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
+ public Date overDt;
/**
* 鏃犲弬鏁版嵁鏋勯�犳柟娉�
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voUg/VoUgRtuResult.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voUg/VoUgRtuResult.java
index 2653252..0ee7201 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voUg/VoUgRtuResult.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voUg/VoUgRtuResult.java
@@ -25,6 +25,6 @@
@ExcelProperty("鍗囩骇缁撴灉")
@ColumnWidth(30)
- @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT, verticalAlignment = VerticalAlignmentEnum.CENTER)
+ @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
public String result;
}
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 b7aa29e..8b782c1 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuControllerMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/UgRtuControllerMapper.xml
@@ -125,10 +125,26 @@
<!--@mbg.generated-->
select
count(*)
- from ug_rtu_controller
+ from ug_rtu_controller ugCon
+ inner join pr_intake inta ON inta.id = ugCon.task_id
<where>
<if test="taskId != null">
- AND task_id = #{taskId,jdbcType=BIGINT}
+ AND ugCon.task_id = #{taskId,jdbcType=BIGINT}
+ </if>
+ <if test="intakeNum != null">
+ AND inta.name = #{intakeNum,jdbcType=VARCHAR}
+ </if>
+ <if test="rtuAddr != null">
+ AND ugCon.rtu_addr = #{rtuAddr,jdbcType=VARCHAR}
+ </if>
+ <if test="state != null and state == 1">
+ AND ugCon.ug_state = 1
+ </if>
+ <if test="state != null and state == 0">
+ AND ugCon.ug_state != 1
+ </if>
+ <if test="fail != null">
+ AND ugCon.ug_state = #{fail,jdbcType=INTEGER}
</if>
</where>
</select>
@@ -136,20 +152,35 @@
<select id="selectControllerUpgradeResults" resultType="com.dy.pipIrrGlobal.voUg.VoUgResult">
<!--@mbg.generated-->
select
- ctb.id as id,
- inTb.name as intakeNum,
- ctb.rtu_addr as rtuAddr,
- ctb.is_over as isOver,
- ctb.ug_state as ugState,
- ctb.over_dt as overDt
- from ug_rtu_controller ctb
- inner join pr_intake inTb on ctb.task_id = inTb.id
+ ugCon.id as id,
+ inta.name as intakeNum,
+ ugCon.rtu_addr as rtuAddr,
+ ugCon.is_over as isOver,
+ ugCon.ug_state as ugState,
+ ugCon.over_dt as overDt
+ from ug_rtu_controller ugCon
+ inner join pr_intake inta on ugCon.task_id = inta.id
<where>
<if test="taskId != null">
- AND ctb.task_id = #{taskId,jdbcType=BIGINT}
+ AND ugCon.task_id = #{taskId,jdbcType=BIGINT}
+ </if>
+ <if test="intakeNum != null">
+ AND inta.name = #{intakeNum,jdbcType=VARCHAR}
+ </if>
+ <if test="rtuAddr != null">
+ AND ugCon.rtu_addr = #{rtuAddr,jdbcType=VARCHAR}
+ </if>
+ <if test="state != null and state == 1">
+ AND ugCon.ug_state = 1
+ </if>
+ <if test="state != null and state == 0">
+ AND ugCon.ug_state != 1
+ </if>
+ <if test="fail != null">
+ AND ugCon.ug_state = #{fail,jdbcType=INTEGER}
</if>
</where>
- ORDER BY ctb.id ASC
+ ORDER BY ugCon.id ASC
<trim prefix="limit " >
<if test="start != null and count != null">
#{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/QueryUgResultVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/QueryUgResultVo.java
index 09e30af..fa79bb9 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/QueryUgResultVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/QueryUgResultVo.java
@@ -15,7 +15,7 @@
@NoArgsConstructor
@AllArgsConstructor
@Builder
-@Schema(name = "鏌ヨ鍗囩骇浠诲姟RTU鍗囩骇鎯呭喌鐨勬潯浠�")
+@Schema(name = "鏌ヨ鍗囩骇浠诲姟RTU鍗囩骇缁撴灉鐨勬潯浠�")
public class QueryUgResultVo extends QueryConditionVo {
@Schema(description = "鍗囩骇浠诲姟id")
@@ -27,4 +27,10 @@
@Schema(description = "鎺у埗鍣ㄥ湴鍧�")
public String rtuAddr;
+ @Schema(description = "鍗囩骇缁撴灉锛�1鍗囩骇鎴愬姛锛�0鍗囩骇澶辫触")
+ public Integer state;
+
+ @Schema(description = "澶辫触绫诲瀷锛�3涓�鍖呮澶辫触锛�4澶氬寘姝诲け璐ワ紝5绂荤嚎澶辫触")
+ public Integer fail;
+
}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/UgRtuResultCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/UgRtuResultCtrl.java
index a69188f..aa1a917 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/UgRtuResultCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/UgRtuResultCtrl.java
@@ -1,5 +1,7 @@
package com.dy.pipIrrBase.rtuUpgrade.task;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
import com.dy.common.aop.SsoAop;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
@@ -7,19 +9,24 @@
import com.dy.common.webUtil.ResultCodeMsg;
import com.dy.pipIrrGlobal.pojoUg.UgRtuTask;
import com.dy.pipIrrGlobal.voUg.VoUgResult;
+import com.dy.pipIrrGlobal.voUg.VoUgRtuResult;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
import java.util.List;
/**
@@ -59,12 +66,49 @@
if (vo.taskId == null) {
return BaseResponseUtils.buildErrorMsg("鍗囩骇浠诲姟id涓嶈兘涓虹┖");
}
- try {
- QueryResultVo<List<VoUgResult>> res = this.sv.selectSome(vo);
- return BaseResponseUtils.buildSuccess(res);
- } catch (Exception e) {
- log.error("鏌ヨRTU鍗囩骇浠诲姟寮傚父", e);
- return BaseResponseUtils.buildErrorMsg(e.getMessage());
+ if(vo.state != null && vo.state == 1){
+ //鏌ヨ鍗囩骇鎴愬姛鐨�
+ vo.fail = null ;
}
+ if(vo.state == null && vo.fail != null){
+ //鏌ヨ鍗囩骇澶辫触鐨�
+ vo.state = 0 ;
+ }
+ QueryResultVo<List<VoUgResult>> res = this.sv.selectSome(vo);
+ return BaseResponseUtils.buildSuccess(res);
+ }
+
+ /**
+ * 瀵煎嚭鍗囩骇缁撴灉RTU鍒楄〃
+ * @param response
+ */
+ @RequestMapping(value = "/exportAll", method = RequestMethod.GET)
+ public void exportUgFail(HttpServletResponse response, QueryUgResultVo vo) throws Exception {
+ if(vo.state != null && vo.state == 1){
+ //鏌ヨ鍗囩骇鎴愬姛鐨�
+ vo.fail = null ;
+ }
+ if(vo.state == null && vo.fail != null){
+ //鏌ヨ鍗囩骇澶辫触鐨�
+ vo.state = 0 ;
+ }
+ setExcelRespProp(response, "鍗囩骇缁撴灉鍒楄〃");
+ List<VoUgResult> rsList = this.sv.selectAll(vo);
+ EasyExcel.write(response.getOutputStream())
+ .head(VoUgRtuResult.class)
+ .excelType(ExcelTypeEnum.XLSX)
+ .sheet("鍗囩骇缁撴灉鍒楄〃")
+ .doWrite(rsList);
+ }
+
+
+ /**
+ * 璁剧疆excel涓嬭浇鍝嶅簲澶村睘鎬�
+ */
+ private void setExcelRespProp(HttpServletResponse response, String rawFileName) throws UnsupportedEncodingException {
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setCharacterEncoding("utf-8");
+ String fileName = URLEncoder.encode(rawFileName, "UTF-8").replaceAll("\\+", "%20");
+ response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
}
}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/UgRtuResultSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/UgRtuResultSv.java
index 0ccc142..bb5ee46 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/UgRtuResultSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/rtuUpgrade/task/UgRtuResultSv.java
@@ -25,7 +25,7 @@
private UgRtuControllerMapper dao ;
/**
- * 鍒嗛〉鏌ヨ涓�涓崌绾т换鍔′腑鎵�鏈夋帶鍒跺櫒鍗囩骇缁撴煡
+ * 鍒嗛〉鏌ヨ涓�涓崌绾т换鍔′腑涓�浜涙帶鍒跺櫒鍗囩骇缁撴煡
* @return 鎺у埗鍣ㄥ崌绾х粨鏌�
*/
public QueryResultVo<List<VoUgResult>> selectSome(QueryUgResultVo queryVo){
@@ -53,4 +53,26 @@
return rsVo ;
}
+
+ /**
+ * 鍒嗛〉鏌ヨ涓�涓崌绾т换鍔′腑鎵�鏈夋帶鍒跺櫒鍗囩骇缁撴煡
+ * @return 鎺у埗鍣ㄥ崌绾х粨鏌�
+ */
+ public List<VoUgResult> selectAll(QueryUgResultVo queryVo){
+ Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo) ;
+ List<VoUgResult> list = this.dao.selectControllerUpgradeResults(params) ;
+ if(list != null && list.size() > 0){
+ for(VoUgResult vo : list){
+ if(vo.isOver != null && vo.isOver.byteValue() == 1){
+ vo.isOverStr = "鏄�" ;
+ }else{
+ vo.isOverStr = "鍚�" ;
+ }
+ if(vo.ugState != null){
+ vo.ugStateStr = UpgradeRtu.getStateName(vo.ugState) ;
+ }
+ }
+ }
+ return list ;
+ }
}
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 22d6a5c..eb37c52 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
@@ -21,6 +21,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@@ -79,6 +80,10 @@
//姝ゆ椂淇濊瘉涓や釜闆嗗悎閮戒笉涓簄ull
this.save2Db(info.ugTaskId, info.ugRtuStateList, cache.ugRtuStateList);
}
+ if(info.ugRtuStateList != null && info.ugRtuStateList.size() > 0){
+ //姝ゆ椂淇濊瘉涓や釜闆嗗悎閮戒笉涓簄ull
+ info.ugRtuStateList.stream().sorted(Comparator.comparing(UpgradeRtu::getRtuAddr, Comparator.naturalOrder())).collect(Collectors.toList());
+ }
//cache璧嬪�煎繀椤绘斁鍦ㄤ笂闈㈠鐞嗙殑鍚庨潰锛屽惁鍒欎笂闈㈢殑姣旇緝涓嶆垚鍔�
cache = info;
}
@@ -104,9 +109,10 @@
*/
private void save2Db(String taskId, List<UpgradeRtu> newList, List<UpgradeRtu> oldList){
List<UpgradeRtu> newOverList = newList.stream().filter(vo -> vo.isOver).collect(Collectors.toList()) ;
+ List<UpgradeRtu> oldNoOverList = 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)){
+ if(oldNoOverList.stream().anyMatch(vo -> vo.rtuAddr.equals(nvo.rtuAddr))){
//涓婃娌℃湁鍗囩骇缁撴潫锛岃�屽綋鍓嶅崌绾х粨鏉熶簡
this.sv.saveRtuUpgradeState(Long.parseLong(taskId), nvo);
}
--
Gitblit v1.8.0