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