From 3df5c71cbae95f5d76177edb119a1cbfcf7dd7c4 Mon Sep 17 00:00:00 2001 From: DYL <Dn1332079466> Date: 星期六, 08 二月 2025 14:59:01 +0800 Subject: [PATCH] 获取模型节点关联采集指标 --- zhitan-system/src/main/java/com/zhitan/realtimedata/domain/vo/EquipmentMeasuringPointParameters.java | 30 +++++++ zhitan-system/src/main/resources/mapper/realtimedata/SvgTrendMapper.xml | 37 +++++++++ zhitan-admin/src/main/java/com/zhitan/web/controller/realtimedata/RealtimeTrendController.java | 73 +++++++++++++++-- zhitan-system/src/main/java/com/zhitan/realtimedata/mapper/SvgTrendMapper.java | 16 ++++ zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/SvgTrendServicelmpl.java | 26 ++++++ zhitan-system/src/main/java/com/zhitan/realtimedata/service/ISvgTrendService.java | 15 +++ 6 files changed, 187 insertions(+), 10 deletions(-) diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/realtimedata/RealtimeTrendController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/realtimedata/RealtimeTrendController.java index 9acf65f..43cb400 100644 --- a/zhitan-admin/src/main/java/com/zhitan/web/controller/realtimedata/RealtimeTrendController.java +++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/realtimedata/RealtimeTrendController.java @@ -5,9 +5,14 @@ import com.zhitan.common.core.domain.AjaxResult; import com.zhitan.common.enums.BusinessType; import com.zhitan.common.utils.poi.ExcelUtil; +import com.zhitan.model.domain.EnergyIndex; +import com.zhitan.realtimedata.domain.TagValue; import com.zhitan.realtimedata.domain.dto.EnergyIndexMonitorDTO; +import com.zhitan.realtimedata.domain.vo.EquipmentMeasuringPointParameters; import com.zhitan.realtimedata.domain.vo.EquipmentPointParametersExcel; import com.zhitan.realtimedata.domain.vo.ExportrealtimeTrendVO; +import com.zhitan.realtimedata.service.ISvgTrendService; +import com.zhitan.realtimedata.service.RealtimeDatabaseService; import com.zhitan.realtimedata.service.RealtimeTrendService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -15,14 +20,18 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; /** - * @Description 瀹炴椂鐩戞祴鎺у埗绫� - * - * @Author zhoubg - * @date 2024-10-15 + * 瀹炴椂鐩戞祴鎺у埗绫� **/ @RestController @RequestMapping("rtdb/realtimeTrend") @@ -31,11 +40,13 @@ @Autowired private RealtimeTrendService realtimeTrendService; + @Resource + private ISvgTrendService svgTrendService; + @Resource + private RealtimeDatabaseService realtimeDatabaseService; /** * 鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣 - * - * @return */ @GetMapping("/list") @ApiOperation(value = "鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣") @@ -45,9 +56,6 @@ /** * 鑾峰彇鍘嗗彶妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣鏁版嵁 - * @param tagCode - * @param dataTime - * @return */ @Log(title = "鑾峰彇鍘嗗彶妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣鏁版嵁", businessType = BusinessType.UPDATE) @GetMapping("/chartByDay") @@ -58,7 +66,6 @@ /** * 瀵煎嚭瀹炴椂鐩戞祴Excel淇℃伅 - * @return */ @Log(title = "瀵煎嚭瀹炴椂鐩戞祴Excel淇℃伅", businessType = BusinessType.EXPORT) @PostMapping("/export") @@ -69,4 +76,50 @@ util.exportExcel(response,list, "瀹炴椂鐩戞祴"); } + /** + * 鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣 + */ + @Log(title = "鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣", businessType = BusinessType.UPDATE) + @GetMapping("/svgTrendView/energyIndex/list") + @ApiOperation(value = "鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣") + public AjaxResult getSvgTrendViewSettingIndex(EnergyIndex energyIndex) { + try { + List<EnergyIndex> infoList = svgTrendService.selectSvgList(energyIndex); + if (infoList == null || infoList.isEmpty()){ + return AjaxResult.success(Collections.emptyList()); + } + List<String> codeList = infoList.stream().map(EnergyIndex::getCode).collect(Collectors.toList()); + + List<TagValue> valList = realtimeDatabaseService.retrieve(codeList); + if (valList == null || valList.isEmpty()) { + return AjaxResult.success(Collections.emptyList()); + } + + Map<String, List<TagValue>> tagValueMap = valList.stream().collect(Collectors.groupingBy(TagValue::getTagCode)); + + List<EquipmentMeasuringPointParameters> resultList = infoList.stream().map(index -> { + EquipmentMeasuringPointParameters item = new EquipmentMeasuringPointParameters(); + item.setCode(index.getCode()); + item.setIndexName(index.getName()); + item.setIndexUnit(index.getUnitId()); + item.setMeteName(index.getMeterName()); + item.setyValue("y0"); + + List<TagValue> tagValueList = tagValueMap.getOrDefault(index.getCode(), Collections.emptyList()); + if (!tagValueList.isEmpty()){ + Optional<Double> sumOptional = tagValueList.stream() + .map(TagValue::getValue) + .reduce(Double::sum); + sumOptional.ifPresent(sum -> item.setValue(BigDecimal.valueOf(sum) + .setScale(2, RoundingMode.HALF_UP).doubleValue())); + } + return item; + }).collect(Collectors.toList()); + + return AjaxResult.success(resultList); + } catch (Exception ex) { + logger.error("鑾峰彇鍏宠仈閲囬泦鎸囨爣鍑洪敊锛�", ex); + return AjaxResult.error("鑾峰彇鍏宠仈鎸囨爣鍑洪敊!"); + } + } } diff --git a/zhitan-system/src/main/java/com/zhitan/realtimedata/domain/vo/EquipmentMeasuringPointParameters.java b/zhitan-system/src/main/java/com/zhitan/realtimedata/domain/vo/EquipmentMeasuringPointParameters.java new file mode 100644 index 0000000..c899288 --- /dev/null +++ b/zhitan-system/src/main/java/com/zhitan/realtimedata/domain/vo/EquipmentMeasuringPointParameters.java @@ -0,0 +1,30 @@ +package com.zhitan.realtimedata.domain.vo; + +import lombok.Data; + +/** + * 璁惧鐩戞祴鍙傛暟鍒楄〃瀵硅薄 + */ +@Data +public class EquipmentMeasuringPointParameters { + + private String code; + + private String indexName; + + private String indexUnit; + + private Double value; + + private String yValue; + + private String meteName; + + public String getyValue() { + return yValue; + } + + public void setyValue(String yValue) { + this.yValue = yValue; + } +} diff --git a/zhitan-system/src/main/java/com/zhitan/realtimedata/mapper/SvgTrendMapper.java b/zhitan-system/src/main/java/com/zhitan/realtimedata/mapper/SvgTrendMapper.java new file mode 100644 index 0000000..e3fc7b8 --- /dev/null +++ b/zhitan-system/src/main/java/com/zhitan/realtimedata/mapper/SvgTrendMapper.java @@ -0,0 +1,16 @@ +package com.zhitan.realtimedata.mapper; + + +import com.zhitan.model.domain.EnergyIndex; + +import java.util.List; + +public interface SvgTrendMapper { + /** + * 瀹炴椂妫�娴� 鍔熻兘 鐨勫 sheet椤� 灞曠ず 缁勬�佸浘 娴嬬偣 鎶ヨ淇℃伅 + * + * @param energyIndex + * @return + */ + List<EnergyIndex> selectSvgTrendList(EnergyIndex energyIndex); +} diff --git a/zhitan-system/src/main/java/com/zhitan/realtimedata/service/ISvgTrendService.java b/zhitan-system/src/main/java/com/zhitan/realtimedata/service/ISvgTrendService.java new file mode 100644 index 0000000..cb34eda --- /dev/null +++ b/zhitan-system/src/main/java/com/zhitan/realtimedata/service/ISvgTrendService.java @@ -0,0 +1,15 @@ +package com.zhitan.realtimedata.service; + +import com.zhitan.model.domain.EnergyIndex; + +import java.util.List; + +public interface ISvgTrendService { + + /** + * 瀹炴椂妫�娴� 鍔熻兘 鐨勫 sheet椤� 灞曠ず瓒嬪娍鍥� + * @param energyIndex + * @return + */ + List<EnergyIndex> selectSvgList(EnergyIndex energyIndex); +} diff --git a/zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/SvgTrendServicelmpl.java b/zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/SvgTrendServicelmpl.java new file mode 100644 index 0000000..2c848ba --- /dev/null +++ b/zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/SvgTrendServicelmpl.java @@ -0,0 +1,26 @@ +package com.zhitan.realtimedata.service.impl; + +import com.zhitan.model.domain.EnergyIndex; +import com.zhitan.realtimedata.mapper.SvgTrendMapper; +import com.zhitan.realtimedata.service.ISvgTrendService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class SvgTrendServicelmpl implements ISvgTrendService { + + @Autowired + private SvgTrendMapper svgTrendMapper; + /** + * 鏌ヨ鎸囨爣淇℃伅 + * + * @param energyIndex 鎸囨爣淇℃伅ID + * @return 鎸囨爣淇℃伅 + */ + @Override + public List<EnergyIndex> selectSvgList(EnergyIndex energyIndex) { + return svgTrendMapper.selectSvgTrendList(energyIndex); + } +} diff --git a/zhitan-system/src/main/resources/mapper/realtimedata/SvgTrendMapper.xml b/zhitan-system/src/main/resources/mapper/realtimedata/SvgTrendMapper.xml new file mode 100644 index 0000000..699f573 --- /dev/null +++ b/zhitan-system/src/main/resources/mapper/realtimedata/SvgTrendMapper.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.zhitan.realtimedata.mapper.SvgTrendMapper"> + <resultMap type="com.zhitan.model.domain.EnergyIndex" id="EnergyIndexResult"> + <result property="indexId" column="index_id"/> + <result property="name" column="name"/> + <result property="code" column="code"/> + <result property="indexType" column="index_type"/> + <result property="indexCategory" column="index_category"/> + <result property="remark" column="remark"/> + <result property="unitId" column="unit_id"/> + <result property="meterId" column="meter_id"/> + <result property="meterName" column="meter_name"/> + </resultMap> + + <select id="selectSvgTrendList" parameterType="com.zhitan.model.domain.EnergyIndex" resultMap="EnergyIndexResult"> + select ei.index_id, name, ei.code, index_type, ei.remark, ei.unit_id, index_category,meter_name + from + energy_index ei, + sys_svg_info svg, + meter_implement as me + <where> + ei.code = svg.tag + and ei.meter_id = me.id + <if test="name != null and name != ''">and name like concat('%', #{name}, '%')</if> + <if test="code != null and code != ''">and ei.code like concat('%', #{code}, '%')</if> + <if test="indexType != null">and index_type = #{indexType}</if> + <if test="nodeId != null and nodeId != ''">and svg.node_id = #{nodeId}</if> + <if test="indexCategory != null and indexCategory != ''">and index_category = + #{indexCategory} + </if> + </where> + </select> + +</mapper> -- Gitblit v1.9.3