From b36d66e090487d54d6664199ca9a807c13fb074b Mon Sep 17 00:00:00 2001 From: DYL0109 <dn18191638832@163.com> Date: 星期五, 18 四月 2025 19:12:05 +0800 Subject: [PATCH] 报警分析优化 --- zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java | 3 zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml | 791 +++++++++++++++++++++++---------------------- zhitan-system/src/main/java/com/zhitan/basicdata/domain/vo/MeterImplementModel.java | 22 + zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java | 184 ++++++---- 4 files changed, 536 insertions(+), 464 deletions(-) diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java index b416f28..f18bbc5 100644 --- a/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java +++ b/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java @@ -8,8 +8,8 @@ import com.zhitan.alarm.domain.vo.AlarmAnalysisVO; import com.zhitan.alarm.mapper.HistoryAlarmMapper; import com.zhitan.alarm.services.IAlarmAnalysisService; -import com.zhitan.basicdata.domain.MeterImplement; import com.zhitan.basicdata.domain.SysEnergy; +import com.zhitan.basicdata.domain.vo.MeterImplementModel; import com.zhitan.basicdata.mapper.MeterImplementMapper; import com.zhitan.basicdata.mapper.SysEnergyMapper; import com.zhitan.common.enums.IndexType; @@ -17,7 +17,6 @@ import com.zhitan.common.utils.StringUtils; import com.zhitan.consumptionanalysis.domain.vo.ChartData; import com.zhitan.consumptionanalysis.domain.vo.EnergyProportion; -import com.zhitan.model.domain.EnergyIndex; import com.zhitan.model.domain.ModelNode; import com.zhitan.model.domain.vo.ModelNodeIndexInfo; import com.zhitan.model.mapper.EnergyIndexMapper; @@ -27,10 +26,7 @@ import org.springframework.stereotype.Service; import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -62,19 +58,12 @@ @Override public AlarmAnalysisVO getByNodeId(AlarmAnalysisDTO alarmAnalysisDTO) { AlarmAnalysisVO alarmAnalysisVO = new AlarmAnalysisVO(); - List<EnergyProportion> alarmProportionList = new ArrayList<>(); - for(IndexType indexType : IndexType.values()){ - EnergyProportion proportion = new EnergyProportion(); - proportion.setEnergyName(indexType.name()); - proportion.setCount(0D); - proportion.setPercentage(0D); - alarmProportionList.add(proportion); - } - - + // 鍒濆鍖栨姤璀︽瘮渚嬪垪琛� + List<EnergyProportion> alarmProportionList = initializeProportionList(IndexType.values()); + // 鍒濆鍖栬兘婧愭瘮渚嬪垪琛� List<EnergyProportion> energyProportionList = new ArrayList<>(); - final List<SysEnergy> sysEnergies = sysEnergyMapper.selectSysEnergyList(new SysEnergy()); - sysEnergies.forEach(sysEnergy -> { + + sysEnergyMapper.selectSysEnergyList(new SysEnergy()).forEach(sysEnergy -> { EnergyProportion proportion = new EnergyProportion(); proportion.setEnergyName(sysEnergy.getEnersno()); proportion.setCount(0D); @@ -112,67 +101,21 @@ query.setNodeId(nodeId); final List<JkHistoryAlarm> jkHistoryAlarms = historyAlarmMapper.selectJkHistoryAlarmList(query); if(CollectionUtils.isNotEmpty(jkHistoryAlarms)) { - jkHistoryAlarms.forEach(alarm -> { - final String indexType = alarm.getIndexType(); - final String indexId = alarm.getIndexId(); - final String alarmNodeId = alarm.getNodeId(); - if ("COLLECT".equals(indexType) && StringUtils.isEmpty(alarm.getEnergyId())) { - //鏍规嵁nodeId鍜宨ndexId 鍘绘煡璇㈣閲忓櫒鍏� - EnergyIndex energyIndex = energyIndexMapper.selectEnergyIndexById(indexId); - final MeterImplement meterImplement = meterImplementMapper.selectMeterImplementById(energyIndex.getMeterId()); - alarm.setEnergyId(meterImplement.getEnergyType()); - } - }); - final Map<String, List<JkHistoryAlarm>> alarmTypeMap = jkHistoryAlarms.stream().collect(Collectors.groupingBy(JkHistoryAlarm::getIndexType)); - alarmTypeMap.forEach((key, value) -> { - alarmProportionList.forEach(alarm->{ - if(alarm.getEnergyName().equals(key)){ - alarm.setEnergyName(key); - alarm.setCount(format2Double(value.size())); - double percentage = value.size() / jkHistoryAlarms.size() * 100; - alarm.setPercentage(format2Double(percentage)); - } - }); - }); - final Map<String, List<JkHistoryAlarm>> energyTypeMap = jkHistoryAlarms.stream().collect(Collectors.groupingBy(JkHistoryAlarm::getEnergyId)); - energyTypeMap.forEach((key, value) -> { - energyProportionList.forEach(en->{ - if(en.getEnergyName().equals(key)){ - en.setEnergyName(key); - en.setCount(format2Double(value.size())); - double percentage = value.size() / jkHistoryAlarms.size() * 100; - en.setPercentage(format2Double(percentage)); - } - }); - - }); + // 璁剧疆鑳芥簮绫诲瀷 + processEnergyType(jkHistoryAlarms); - jkHistoryAlarms.forEach(jkHistoryAlarm -> { - final String alarmBeginTime = DateUtil.format(jkHistoryAlarm.getAlarmBeginTime(), timeFormat); - jkHistoryAlarm.setAlarmTime(alarmBeginTime); - }); - final Map<String, List<JkHistoryAlarm>> timeMap = jkHistoryAlarms.stream().collect(Collectors.groupingBy(JkHistoryAlarm::getAlarmTime)); - while (!beginTime.after(endTime)) { - final String currentTime = DateUtil.format(beginTime, timeFormat); - final List<JkHistoryAlarm> value = timeMap.get(currentTime); - ChartData chartData = new ChartData(); - chartData.setXData(currentTime); - chartData.setYValue(null == value?0:(double)value.size()); - chartDataList.add(chartData); + // 璁$畻鎶ヨ绫诲瀷姣斾緥 + calculateProportions(jkHistoryAlarms, alarmProportionList, JkHistoryAlarm::getIndexType); + // 璁$畻鑳芥簮绫诲瀷姣斾緥 + calculateProportions(jkHistoryAlarms, energyProportionList, JkHistoryAlarm::getEnergyId); - switch (TimeType.valueOf(queryTimeType)) { - case DAY: - beginTime = DateUtil.offsetHour(beginTime, 1); - break; - case MONTH: - beginTime = DateUtil.offsetDay(beginTime, 1); - break; - default: - beginTime = DateUtil.offsetMonth(beginTime, 1); - break; - } - } + // 澶勭悊鎶ヨ鏃堕棿 + processAlarmTimes(jkHistoryAlarms, timeFormat); + + // 鐢熸垚鍥捐〃鏁版嵁 + generateChartData(chartDataList, jkHistoryAlarms, beginTime, endTime, timeFormat, queryTimeType); + } alarmAnalysisVO.setAlarmProportion(alarmProportionList); alarmAnalysisVO.setEnergyProportion(energyProportionList); @@ -180,6 +123,95 @@ return alarmAnalysisVO; } + /** + * 璁剧疆鑳芥簮绫诲瀷 + */ + private void processEnergyType(List<JkHistoryAlarm> jkHistoryAlarms) { + List<String> indexIds = jkHistoryAlarms.stream().map(JkHistoryAlarm::getIndexId).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(indexIds)) { + List<MeterImplementModel> modelList = energyIndexMapper.selectEnergyTypeByIndex(indexIds); + if (CollectionUtils.isNotEmpty(modelList)){ + Map<String, String> energyMap = modelList.stream().collect(Collectors.toMap(MeterImplementModel::getIndexId, MeterImplementModel::getEnergyType)); + + jkHistoryAlarms.forEach(alarm -> { + if (IndexType.COLLECT.getDescription().equals(alarm.getIndexType()) && StringUtils.isEmpty(alarm.getEnergyId())){ + alarm.setEnergyId(energyMap.get(alarm.getIndexId())); + } + }); + } + } + } + + /** + * 璁$畻鍗犳瘮 + */ + private void calculateProportions(List<JkHistoryAlarm> jkHistoryAlarms, List<EnergyProportion> proportionList, java.util.function.Function<JkHistoryAlarm, String> keyExtractor) { + Map<String, List<JkHistoryAlarm>> typeMap = jkHistoryAlarms.stream() + .collect(Collectors.groupingBy(keyExtractor)); + typeMap.forEach((key, value) -> { + proportionList.forEach(alarm -> { + if (alarm.getEnergyName().equals(key)) { + alarm.setCount(format2Double(value.size())); + double percentage = (double) value.size() / jkHistoryAlarms.size() * 100; + alarm.setPercentage(format2Double(percentage)); + } + }); + }); + } + + /** + * 澶勭悊鎶ヨ鏃堕棿 + */ + private void processAlarmTimes(List<JkHistoryAlarm> jkHistoryAlarms, String timeFormat) { + jkHistoryAlarms.forEach(jkHistoryAlarm -> { + String alarmBeginTime = DateUtil.format(jkHistoryAlarm.getAlarmBeginTime(), timeFormat); + jkHistoryAlarm.setAlarmTime(alarmBeginTime); + }); + } + + /** + * 鐢熸垚鍥捐〃鏁版嵁 + */ + private void generateChartData(List<ChartData> chartDataList, List<JkHistoryAlarm> jkHistoryAlarms, Date beginTime, Date endTime, String timeFormat, String queryTimeType) { + Map<String, List<JkHistoryAlarm>> timeMap = jkHistoryAlarms.stream() + .collect(Collectors.groupingBy(JkHistoryAlarm::getAlarmTime)); + while (!beginTime.after(endTime)) { + String currentTime = DateUtil.format(beginTime, timeFormat); + List<JkHistoryAlarm> value = timeMap.get(currentTime); + ChartData chartData = new ChartData(); + chartData.setXData(currentTime); + chartData.setYValue(value == null ? 0 : (double) value.size()); + chartDataList.add(chartData); + + switch (TimeType.valueOf(queryTimeType)) { + case DAY: + beginTime = DateUtil.offsetHour(beginTime, 1); + break; + case MONTH: + beginTime = DateUtil.offsetDay(beginTime, 1); + break; + default: + beginTime = DateUtil.offsetMonth(beginTime, 1); + break; + } + } + } + + /** + * 鍒濆鍖栧崰姣斿垪琛� + */ + private List<EnergyProportion> initializeProportionList(Object[] items) { + List<EnergyProportion> proportionList = new ArrayList<>(); + for (Object item : items) { + EnergyProportion proportion = new EnergyProportion(); + proportion.setEnergyName(item.toString()); + proportion.setCount(0D); + proportion.setPercentage(0D); + proportionList.add(proportion); + } + return proportionList; + } + private double format2Double(double averageEnergy) { // 鍒涘缓DecimalFormat瀵硅薄锛岃缃繚鐣欎袱浣嶅皬鏁� DecimalFormat df = new DecimalFormat("#.00"); diff --git a/zhitan-system/src/main/java/com/zhitan/basicdata/domain/vo/MeterImplementModel.java b/zhitan-system/src/main/java/com/zhitan/basicdata/domain/vo/MeterImplementModel.java new file mode 100644 index 0000000..af09843 --- /dev/null +++ b/zhitan-system/src/main/java/com/zhitan/basicdata/domain/vo/MeterImplementModel.java @@ -0,0 +1,22 @@ +package com.zhitan.basicdata.domain.vo; + +import lombok.Data; + +@Data +public class MeterImplementModel { + + /** + * indexId + */ + private String indexId; + + /** + * meterId + */ + private String meterId; + + /** + * 鑳芥簮绫诲瀷 + */ + private String energyType; +} diff --git a/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java b/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java index c757ace..63a326d 100644 --- a/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java +++ b/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhitan.basicdata.domain.vo.MeterImplementModel; import com.zhitan.model.domain.EnergyIndex; import com.zhitan.model.domain.EnergyIndexQuery; import com.zhitan.model.domain.vo.ModelNodeIndexInfo; @@ -105,4 +106,6 @@ List<EnergyIndex> getIndexByMeterIdIndexCode(@Param("meterId") String meterId, @Param("indexCode") String indexCode, @Param("nodeId") String nodeId); List<ModelNodeIndexInfo> getModelNodeIndexInfoListByIndexIds(@Param("indexIds") String[] indexIds); + + List<MeterImplementModel> selectEnergyTypeByIndex(@Param("indexIds") List<String> indexIds); } diff --git a/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml b/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml index 1145863..3534519 100644 --- a/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml +++ b/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml @@ -1,317 +1,319 @@ <?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"> + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zhitan.model.mapper.EnergyIndexMapper"> - <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="orderNum" column="order_num"/> - <result property="equipment" column="equipment"/> - <result property="energyId" column="energy_id"/> - <result property="meterName" column="meter_name"/> - </resultMap> + <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="orderNum" column="order_num"/> + <result property="equipment" column="equipment"/> + <result property="energyId" column="energy_id"/> + <result property="meterName" column="meter_name"/> + </resultMap> - <sql id="selectEnergyIndexVo"> - select index_id, - name, - code, - index_type, - index_category, - remark, - unit_id, - meter_id, - order_num, - equipment, - energy_id - from energy_index - </sql> + <sql id="selectEnergyIndexVo"> + select index_id, + name, + code, + index_type, + index_category, + remark, + unit_id, + meter_id, + order_num, + equipment, + energy_id + from energy_index + </sql> - <select id="selectEnergyIndexList" parameterType="com.zhitan.model.domain.EnergyIndex" resultMap="EnergyIndexResult"> - select ni.index_id, name, code, index_type, remark, unit_id, index_category - from energy_index ei left join node_index ni on ei.index_id = ni.index_id - <where> - <if test="name != null and name != ''">and name like concat('%', #{name}, '%')</if> - <if test="code != null and code != ''">and code like concat('%', #{code}, '%')</if> - <if test="indexType != null">and index_type = #{indexType}</if> - <if test="nodeId != null and nodeId != ''">and node_id = #{nodeId}</if> - <if test="indexCategory != null and indexCategory != ''">and index_category = - #{indexCategory} - </if> - </where> - order by ei.order_num - </select> + <select id="selectEnergyIndexList" parameterType="com.zhitan.model.domain.EnergyIndex" + resultMap="EnergyIndexResult"> + select ni.index_id, name, code, index_type, remark, unit_id, index_category + from energy_index ei left join node_index ni on ei.index_id = ni.index_id + <where> + <if test="name != null and name != ''">and name like concat('%', #{name}, '%')</if> + <if test="code != null and code != ''">and code like concat('%', #{code}, '%')</if> + <if test="indexType != null">and index_type = #{indexType}</if> + <if test="nodeId != null and nodeId != ''">and node_id = #{nodeId}</if> + <if test="indexCategory != null and indexCategory != ''">and index_category = + #{indexCategory} + </if> + </where> + order by ei.order_num + </select> - <select id="selectEnergyIndexById" parameterType="String" resultMap="EnergyIndexResult"> - <include refid="selectEnergyIndexVo"/> - where index_id = #{indexId} - order by order_num - </select> + <select id="selectEnergyIndexById" parameterType="String" resultMap="EnergyIndexResult"> + <include refid="selectEnergyIndexVo"/> + where index_id = #{indexId} + order by order_num + </select> - <select id="selectEnergyIndexByIds" resultType="com.zhitan.model.domain.EnergyIndex"> - <include refid="selectEnergyIndexVo"/> - where + <select id="selectEnergyIndexByIds" resultType="com.zhitan.model.domain.EnergyIndex"> + <include refid="selectEnergyIndexVo"/> + where index_id IN <foreach collection="indexIds" item="indexId" open="(" separator="," close=")"> - #{indexId} + #{indexId} </foreach> - </select> + </select> - <select id="energyIndexHasExist" resultType="java.lang.Integer"> - select count(*) - from energy_index - where code = #{code}; - </select> - <select id="energyIndexHasExistWhenUpdate" resultType="java.lang.Integer"> - select count(*) - from energy_index - where code = #{code} - AND index_id != #{indexId}; - </select> - <select id="getMeterIndex" resultMap="EnergyIndexResult"> - <include refid="selectEnergyIndexVo"/> - where meter_id = #{meterId} - order by order_num - </select> - <select id="modelHasConfig" resultType="java.lang.Integer"> - select count(*) - from model_node - where model_code = #{modelCode}; - </select> - <select id="selectCollectIndex" resultMap="EnergyIndexResult"> - <include refid="selectEnergyIndexVo"/> - where meter_id = #{deviceId} - order by order_num - </select> - <select id="getEnergyIndexByIds" resultMap="EnergyIndexResult"> - <include refid="selectEnergyIndexVo"/> - where index_id in - <foreach item="indexId" collection="list" open="(" separator="," close=")"> - #{indexId} - </foreach> - order by order_num - </select> - <select id="getEnergyIndexByCodes" resultMap="EnergyIndexResult"> - <include refid="selectEnergyIndexVo"/> - where code in - <foreach item="indexCode" collection="list" open="(" separator="," close=")"> - #{indexCode} - </foreach> - order by order_num - </select> - <select id="getIndexByNodeAndChildrenNode" resultMap="EnergyIndexResult"> - select ei.* - from energy_index ei - left join node_index ni on ei.index_id = ni.index_id - where ni.node_id in (select node_id - from model_node - where address like (select address - from model_node - where node_id = #{nodeId}) || '%') - order by ei.order_num - </select> - <select id="searchIndexByNodeAndChildrenNode" resultMap="EnergyIndexResult"> - select ei.* - from energy_index ei - left join node_index ni on ei.index_id = ni.index_id - where ni.node_id in (select node_id - from model_node - where address like (select address - from model_node - where node_id = #{nodeId}) || '%') - and (ei.code like concat('%', #{filter}, '%') or ei.name like concat('%', #{filter}, '%')) - order by ei.order_num - </select> - <select id="selectEnergyIndex" resultMap="EnergyIndexResult"> - select ni.index_id, name, code, index_type, remark, unit_id, index_category - from energy_index ei left join node_index ni on ei.index_id = ni.index_id - <where> - <if test="codeOrName != null and codeOrName != ''">and (name like concat('%', #{codeOrName}, - '%') or code like concat('%', #{codeOrName}, '%')) - </if> - <if test="nodeId != null and nodeId != ''">and node_id = #{nodeId}</if> - <if test="indexType != null">and index_type = #{indexType}</if> - <if test="indexCategory != null and indexCategory != ''">and index_category = - #{indexCategory} - </if> - </where> - order by ei.order_num - </select> + <select id="energyIndexHasExist" resultType="java.lang.Integer"> + select count(*) + from energy_index + where code = #{code}; + </select> + <select id="energyIndexHasExistWhenUpdate" resultType="java.lang.Integer"> + select count(*) + from energy_index + where code = #{code} + AND index_id != #{indexId}; + </select> + <select id="getMeterIndex" resultMap="EnergyIndexResult"> + <include refid="selectEnergyIndexVo"/> + where meter_id = #{meterId} + order by order_num + </select> + <select id="modelHasConfig" resultType="java.lang.Integer"> + select count(*) + from model_node + where model_code = #{modelCode}; + </select> + <select id="selectCollectIndex" resultMap="EnergyIndexResult"> + <include refid="selectEnergyIndexVo"/> + where meter_id = #{deviceId} + order by order_num + </select> + <select id="getEnergyIndexByIds" resultMap="EnergyIndexResult"> + <include refid="selectEnergyIndexVo"/> + where index_id in + <foreach item="indexId" collection="list" open="(" separator="," close=")"> + #{indexId} + </foreach> + order by order_num + </select> + <select id="getEnergyIndexByCodes" resultMap="EnergyIndexResult"> + <include refid="selectEnergyIndexVo"/> + where code in + <foreach item="indexCode" collection="list" open="(" separator="," close=")"> + #{indexCode} + </foreach> + order by order_num + </select> + <select id="getIndexByNodeAndChildrenNode" resultMap="EnergyIndexResult"> + select ei.* + from energy_index ei + left join node_index ni on ei.index_id = ni.index_id + where ni.node_id in (select node_id + from model_node + where address like (select address + from model_node + where node_id = #{nodeId}) || '%') + order by ei.order_num + </select> + <select id="searchIndexByNodeAndChildrenNode" resultMap="EnergyIndexResult"> + select ei.* + from energy_index ei + left join node_index ni on ei.index_id = ni.index_id + where ni.node_id in (select node_id + from model_node + where address like (select address + from model_node + where node_id = #{nodeId}) || '%') + and (ei.code like concat('%', #{filter}, '%') or ei.name like concat('%', #{filter}, '%')) + order by ei.order_num + </select> + <select id="selectEnergyIndex" resultMap="EnergyIndexResult"> + select ni.index_id, name, code, index_type, remark, unit_id, index_category + from energy_index ei left join node_index ni on ei.index_id = ni.index_id + <where> + <if test="codeOrName != null and codeOrName != ''">and (name like concat('%', #{codeOrName}, + '%') or code like concat('%', #{codeOrName}, '%')) + </if> + <if test="nodeId != null and nodeId != ''">and node_id = #{nodeId}</if> + <if test="indexType != null">and index_type = #{indexType}</if> + <if test="indexCategory != null and indexCategory != ''">and index_category = + #{indexCategory} + </if> + </where> + order by ei.order_num + </select> - <insert id="insertEnergyIndex" parameterType="com.zhitan.model.domain.EnergyIndex"> - insert into energy_index - <trim prefix="(" suffix=")" suffixOverrides=","> - <if test="indexId != null and indexId != ''">index_id,</if> - <if test="name != null and name != ''">name,</if> - <if test="code != null and code != ''">code,</if> - <if test="indexType != null">index_type,</if> - <if test="indexCategory != null and indexCategory != ''"> - index_category, - </if> - <if test="remark != null and remark != ''">remark,</if> - <if test="unitId != null and unitId != ''">unit_id,</if> - <if test="orderNum != null">order_num,</if> - <if test="equipment != null">equipment,</if> - <if test="energyId != null">energy_id,</if> - </trim> - <trim prefix="values (" suffix=");" suffixOverrides=","> - <if test="indexId != null and indexId != ''"> - #{indexId}, - </if> - <if test="name != null and name != ''">#{name},</if> - <if test="code != null and code != ''">#{code},</if> - <if test="indexType != null"> - #{indexType}, - </if> - <if test="indexCategory != null and indexCategory != ''"> - #{indexCategory}, - </if> - <if test="remark != null and remark != ''">#{remark}, - </if> - <if test="unitId != null and unitId != ''">#{unitId}, - </if> - <if test="orderNum != null">#{orderNum}, - </if> - <if test="equipment != null">#{equipment}, - </if> - <if test="energyId != null">#{energyId}, - </if> - </trim> + <insert id="insertEnergyIndex" parameterType="com.zhitan.model.domain.EnergyIndex"> + insert into energy_index + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="indexId != null and indexId != ''">index_id,</if> + <if test="name != null and name != ''">name,</if> + <if test="code != null and code != ''">code,</if> + <if test="indexType != null">index_type,</if> + <if test="indexCategory != null and indexCategory != ''"> + index_category, + </if> + <if test="remark != null and remark != ''">remark,</if> + <if test="unitId != null and unitId != ''">unit_id,</if> + <if test="orderNum != null">order_num,</if> + <if test="equipment != null">equipment,</if> + <if test="energyId != null">energy_id,</if> + </trim> + <trim prefix="values (" suffix=");" suffixOverrides=","> + <if test="indexId != null and indexId != ''"> + #{indexId}, + </if> + <if test="name != null and name != ''">#{name},</if> + <if test="code != null and code != ''">#{code},</if> + <if test="indexType != null"> + #{indexType}, + </if> + <if test="indexCategory != null and indexCategory != ''"> + #{indexCategory}, + </if> + <if test="remark != null and remark != ''">#{remark}, + </if> + <if test="unitId != null and unitId != ''">#{unitId}, + </if> + <if test="orderNum != null">#{orderNum}, + </if> + <if test="equipment != null">#{equipment}, + </if> + <if test="energyId != null">#{energyId}, + </if> + </trim> - </insert> - <insert id="insertNodeIndex"> - insert into node_index (node_id, index_id) values (#{nodeId}, #{indexId}); - </insert> - <insert id="insertEnergyIndices"> - <foreach collection="energyIndices" item="energyIndex" separator=";"> - insert into energy_index - <trim prefix="(" suffix=")" suffixOverrides=","> - <if test="energyIndex.indexId != null and energyIndex.indexId != ''">index_id,</if> - <if test="energyIndex.name != null and energyIndex.name != ''">name,</if> - <if test="energyIndex.code != null and energyIndex.code != ''">code,</if> - <if test="energyIndex.indexType != null">index_type,</if> - <if test="energyIndex.indexCategory != null and energyIndex.indexCategory != ''"> - index_category, - </if> - <if test="energyIndex.remark != null and energyIndex.remark != ''">remark,</if> - <if test="energyIndex.unitId != null and energyIndex.unitId != ''">unit_id,</if> - <if test="energyIndex.meterId != null and energyIndex.meterId != ''">meter_id,</if> - <if test="energyIndex.orderNum != null">order_num,</if> - </trim> - <trim prefix="values (" suffix=")" suffixOverrides=","> - <if test="energyIndex.indexId != null and energyIndex.indexId != ''"> - #{energyIndex.indexId}, - </if> - <if test="energyIndex.name != null and energyIndex.name != ''">#{energyIndex.name},</if> - <if test="energyIndex.code != null and energyIndex.code != ''">#{energyIndex.code},</if> - <if test="energyIndex.indexType != null"> - #{energyIndex.indexType}, - </if> - <if test="energyIndex.indexCategory != null and energyIndex.indexCategory != ''"> - #{energyIndex.indexCategory}, - </if> - <if test="energyIndex.remark != null and energyIndex.remark != ''">#{energyIndex.remark}, - </if> - <if test="energyIndex.unitId != null and energyIndex.unitId != ''">#{energyIndex.unitId}, - </if> - <if test="energyIndex.meterId != null and energyIndex.meterId != ''"> - #{energyIndex.meterId}, - </if> - <if test="energyIndex.orderNum != null">#{energyIndex.orderNum},</if> - </trim> - </foreach> - </insert> - <insert id="saveEnergyIndex"> - <foreach collection="list" item="energyIndex" separator=";"> - insert into energy_index - <trim prefix="(" suffix=")" suffixOverrides=","> - <if test="energyIndex.indexId != null and energyIndex.indexId != ''">index_id,</if> - <if test="energyIndex.name != null and energyIndex.name != ''">name,</if> - <if test="energyIndex.code != null and energyIndex.code != ''">code,</if> - <if test="energyIndex.indexType != null">index_type,</if> - <if test="energyIndex.indexCategory != null and energyIndex.indexCategory != ''"> - index_category, - </if> - <if test="energyIndex.remark != null and energyIndex.remark != ''">remark,</if> - <if test="energyIndex.unitId != null and energyIndex.unitId != ''">unit_id,</if> - <if test="energyIndex.meterId != null and energyIndex.meterId != ''">meter_id,</if> - <if test="energyIndex.orderNum != null">order_num,</if> - </trim> - <trim prefix="values (" suffix=")" suffixOverrides=","> - <if test="energyIndex.indexId != null and energyIndex.indexId != ''"> - #{energyIndex.indexId}, - </if> - <if test="energyIndex.name != null and energyIndex.name != ''">#{energyIndex.name},</if> - <if test="energyIndex.code != null and energyIndex.code != ''">#{energyIndex.code},</if> - <if test="energyIndex.indexType != null"> - #{energyIndex.indexType}, - </if> - <if test="energyIndex.indexCategory != null and energyIndex.indexCategory != ''"> - #{energyIndex.indexCategory}, - </if> - <if test="energyIndex.remark != null and energyIndex.remark != ''">#{energyIndex.remark}, - </if> - <if test="energyIndex.unitId != null and energyIndex.unitId != ''">#{energyIndex.unitId}, - </if> - <if test="energyIndex.meterId != null and energyIndex.meterId != ''"> - #{energyIndex.meterId}, - </if> - <if test="energyIndex.orderNum != null">#{energyIndex.orderNum},</if> - </trim> - ; - insert into node_index (node_id, index_id) values (#{energyIndex.nodeId}, - #{energyIndex.indexId}); - </foreach> - </insert> + </insert> + <insert id="insertNodeIndex"> + insert into node_index (node_id, index_id) + values (#{nodeId}, #{indexId}); + </insert> + <insert id="insertEnergyIndices"> + <foreach collection="energyIndices" item="energyIndex" separator=";"> + insert into energy_index + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="energyIndex.indexId != null and energyIndex.indexId != ''">index_id,</if> + <if test="energyIndex.name != null and energyIndex.name != ''">name,</if> + <if test="energyIndex.code != null and energyIndex.code != ''">code,</if> + <if test="energyIndex.indexType != null">index_type,</if> + <if test="energyIndex.indexCategory != null and energyIndex.indexCategory != ''"> + index_category, + </if> + <if test="energyIndex.remark != null and energyIndex.remark != ''">remark,</if> + <if test="energyIndex.unitId != null and energyIndex.unitId != ''">unit_id,</if> + <if test="energyIndex.meterId != null and energyIndex.meterId != ''">meter_id,</if> + <if test="energyIndex.orderNum != null">order_num,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="energyIndex.indexId != null and energyIndex.indexId != ''"> + #{energyIndex.indexId}, + </if> + <if test="energyIndex.name != null and energyIndex.name != ''">#{energyIndex.name},</if> + <if test="energyIndex.code != null and energyIndex.code != ''">#{energyIndex.code},</if> + <if test="energyIndex.indexType != null"> + #{energyIndex.indexType}, + </if> + <if test="energyIndex.indexCategory != null and energyIndex.indexCategory != ''"> + #{energyIndex.indexCategory}, + </if> + <if test="energyIndex.remark != null and energyIndex.remark != ''">#{energyIndex.remark}, + </if> + <if test="energyIndex.unitId != null and energyIndex.unitId != ''">#{energyIndex.unitId}, + </if> + <if test="energyIndex.meterId != null and energyIndex.meterId != ''"> + #{energyIndex.meterId}, + </if> + <if test="energyIndex.orderNum != null">#{energyIndex.orderNum},</if> + </trim> + </foreach> + </insert> + <insert id="saveEnergyIndex"> + <foreach collection="list" item="energyIndex" separator=";"> + insert into energy_index + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="energyIndex.indexId != null and energyIndex.indexId != ''">index_id,</if> + <if test="energyIndex.name != null and energyIndex.name != ''">name,</if> + <if test="energyIndex.code != null and energyIndex.code != ''">code,</if> + <if test="energyIndex.indexType != null">index_type,</if> + <if test="energyIndex.indexCategory != null and energyIndex.indexCategory != ''"> + index_category, + </if> + <if test="energyIndex.remark != null and energyIndex.remark != ''">remark,</if> + <if test="energyIndex.unitId != null and energyIndex.unitId != ''">unit_id,</if> + <if test="energyIndex.meterId != null and energyIndex.meterId != ''">meter_id,</if> + <if test="energyIndex.orderNum != null">order_num,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="energyIndex.indexId != null and energyIndex.indexId != ''"> + #{energyIndex.indexId}, + </if> + <if test="energyIndex.name != null and energyIndex.name != ''">#{energyIndex.name},</if> + <if test="energyIndex.code != null and energyIndex.code != ''">#{energyIndex.code},</if> + <if test="energyIndex.indexType != null"> + #{energyIndex.indexType}, + </if> + <if test="energyIndex.indexCategory != null and energyIndex.indexCategory != ''"> + #{energyIndex.indexCategory}, + </if> + <if test="energyIndex.remark != null and energyIndex.remark != ''">#{energyIndex.remark}, + </if> + <if test="energyIndex.unitId != null and energyIndex.unitId != ''">#{energyIndex.unitId}, + </if> + <if test="energyIndex.meterId != null and energyIndex.meterId != ''"> + #{energyIndex.meterId}, + </if> + <if test="energyIndex.orderNum != null">#{energyIndex.orderNum},</if> + </trim> + ; + insert into node_index (node_id, index_id) values (#{energyIndex.nodeId}, + #{energyIndex.indexId}); + </foreach> + </insert> - <update id="updateEnergyIndex" parameterType="com.zhitan.model.domain.EnergyIndex"> - update energy_index - <trim prefix="SET" suffixOverrides=","> - <if test="name != null and name != ''">name = #{name},</if> - <if test="code != null and code != ''">code = #{code},</if> - <if test="indexType != null">index_type = #{indexType},</if> - <if test="indexCategory != null and indexCategory != ''">index_category = #{indexCategory}, - </if> - <if test="remark != null and remark != ''">remark = #{remark},</if> - <if test="unitId != null and unitId != ''">unit_id = #{unitId},</if> - <if test="orderNum != null">order_num = #{orderNum},</if> - <if test="equipment != null">equipment = #{equipment},</if> - <if test="energyId != null">energy_id=#{energyId},</if> - </trim> - where index_id = #{indexId} - </update> + <update id="updateEnergyIndex" parameterType="com.zhitan.model.domain.EnergyIndex"> + update energy_index + <trim prefix="SET" suffixOverrides=","> + <if test="name != null and name != ''">name = #{name},</if> + <if test="code != null and code != ''">code = #{code},</if> + <if test="indexType != null">index_type = #{indexType},</if> + <if test="indexCategory != null and indexCategory != ''">index_category = #{indexCategory}, + </if> + <if test="remark != null and remark != ''">remark = #{remark},</if> + <if test="unitId != null and unitId != ''">unit_id = #{unitId},</if> + <if test="orderNum != null">order_num = #{orderNum},</if> + <if test="equipment != null">equipment = #{equipment},</if> + <if test="energyId != null">energy_id=#{energyId},</if> + </trim> + where index_id = #{indexId} + </update> - <delete id="deleteEnergyIndexByIds" parameterType="String"> - delete from energy_index where index_id in - <foreach item="indexId" collection="indexIds" open="(" separator="," close=")"> - #{indexId} - </foreach>; - delete from node_index where node_id = #{nodeId} and index_id in - <foreach item="indexId" collection="indexIds" open="(" separator="," close=")"> - #{indexId} - </foreach>; - </delete> - <delete id="deleteIndexByMeterId"> - delete - from energy_index - where meter_id = #{meterId} - </delete> - <delete id="removeEnergyIndex"> - delete from energy_index where index_id in - <foreach collection="indexIds" item="indexId" open="(" separator="," close=")"> - #{indexId} - </foreach> - </delete> + <delete id="deleteEnergyIndexByIds" parameterType="String"> + delete from energy_index where index_id in + <foreach item="indexId" collection="indexIds" open="(" separator="," close=")"> + #{indexId} + </foreach>; + delete from node_index where node_id = #{nodeId} and index_id in + <foreach item="indexId" collection="indexIds" open="(" separator="," close=")"> + #{indexId} + </foreach>; + </delete> + <delete id="deleteIndexByMeterId"> + delete + from energy_index + where meter_id = #{meterId} + </delete> + <delete id="removeEnergyIndex"> + delete from energy_index where index_id in + <foreach collection="indexIds" item="indexId" open="(" separator="," close=")"> + #{indexId} + </foreach> + </delete> - <select id="getEnergyIndexMeterByCodes" resultMap="EnergyIndexResult"> - select ei.index_id, + <select id="getEnergyIndexMeterByCodes" resultMap="EnergyIndexResult"> + select ei.index_id, ei.name, ei.code, ei.index_type, @@ -324,100 +326,101 @@ ei.energy_id, meter_name from energy_index as ei,meter_implement as me - where ei.code in - <foreach item="indexCode" collection="list" open="(" separator="," close=")"> - #{indexCode} - </foreach> - and ei.meter_id = me.id - order by ei.order_num - </select> - - <select id="selectEnergyIndexPage" resultMap="EnergyIndexResult"> - select ni.index_id, name, code, index_type, remark, unit_id, index_category - from energy_index ei left join node_index ni on ei.index_id = ni.index_id - <where> - <if test="query.codeOrName != null and query.codeOrName != ''">and (name like concat('%', #{query.codeOrName}, - '%') or code like concat('%', #{query.codeOrName}, '%')) - </if> - <if test="query.indexType != null">and index_type = #{query.indexType}</if> - <if test="query.nodeId != null and query.nodeId != ''">and ni.node_id = #{query.nodeId}</if> - <if test="query.indexCategory != null and query.indexCategory != ''">and index_category = - #{query.indexCategory} - </if> - </where> - order by ei.order_num - - </select> - <select id="listIndexByMeterIds" resultType="com.zhitan.model.domain.EnergyIndex"> - select ei.index_id, - name, - code, - index_type, - index_category, - remark, - unit_id, - meter_id, - order_num, - equipment, - energy_id - from energy_index ei - left join node_index ni on ei.index_id = ni.index_id - <where> - - <if test="nodeId != null and nodeId != ''">and ni.node_id = #{nodeId}</if> - <if test="meterIds != null"> - and ei.meter_id in - <foreach collection="meterIds" item="meterId" open="(" separator="," close=")"> - #{meterId} - </foreach> - </if> - </where> + where ei.code in + <foreach item="indexCode" collection="list" open="(" separator="," close=")"> + #{indexCode} + </foreach> + and ei.meter_id = me.id + order by ei.order_num </select> - <select id="getiEnergyIndexByCode" resultType="com.zhitan.model.domain.EnergyIndex"> - <include refid="selectEnergyIndexVo"/> - where code = #{cdoe} - </select> - <select id="getIndexByCode" resultType="com.zhitan.model.domain.EnergyIndex"> - SELECT ei.code,mi.meter_name||'_'||ei.name as name from energy_index ei - LEFT JOIN node_device nd on ei.meter_id = nd.device_id - LEFT JOIN meter_implement mi on mi."id" = nd.device_id - <where> - <if test="nodeId != null and nodeId != ''">and nd.node_id = #{nodeId}</if> - <if test="code != null and code != ''"> - and (mi.meter_name like concat('%', #{code}, '%') - or ei.code like concat('%', #{code}, '%') - or ei.name like concat('%', #{code}, '%') - ) - </if> - </where> - </select> - <select id="getIndexByMeterIdIndexCode" resultType="com.zhitan.model.domain.EnergyIndex"> - SELECT ei.code,mi.meter_name||'_'||ei.name as name from energy_index ei - LEFT JOIN node_device nd on ei.meter_id = nd.device_id - LEFT JOIN meter_implement mi on mi."id" = nd.device_id - <where> - <if test="nodeId != null and nodeId != ''">and nd.node_id = #{nodeId}</if> - <if test="indexCode != null and indexCode != ''"> - and (mi.meter_name like concat('%', #{indexCode}, '%') - or ei.code like concat('%', #{indexCode}, '%') - or ei.name like concat('%', #{indexCode}, '%') - ) - </if> - <if test="meterId != null and meterId != ''"> - and ei.meter_id = #{meterId} - </if> - </where> - </select> + + <select id="selectEnergyIndexPage" resultMap="EnergyIndexResult"> + select ni.index_id, name, code, index_type, remark, unit_id, index_category + from energy_index ei left join node_index ni on ei.index_id = ni.index_id + <where> + <if test="query.codeOrName != null and query.codeOrName != ''">and (name like concat('%', + #{query.codeOrName}, + '%') or code like concat('%', #{query.codeOrName}, '%')) + </if> + <if test="query.indexType != null">and index_type = #{query.indexType}</if> + <if test="query.nodeId != null and query.nodeId != ''">and ni.node_id = #{query.nodeId}</if> + <if test="query.indexCategory != null and query.indexCategory != ''">and index_category = + #{query.indexCategory} + </if> + </where> + order by ei.order_num + + </select> + <select id="listIndexByMeterIds" resultType="com.zhitan.model.domain.EnergyIndex"> + select ei.index_id, + name, + code, + index_type, + index_category, + remark, + unit_id, + meter_id, + order_num, + equipment, + energy_id + from energy_index ei + left join node_index ni on ei.index_id = ni.index_id + <where> + + <if test="nodeId != null and nodeId != ''">and ni.node_id = #{nodeId}</if> + <if test="meterIds != null"> + and ei.meter_id in + <foreach collection="meterIds" item="meterId" open="(" separator="," close=")"> + #{meterId} + </foreach> + </if> + </where> + </select> + <select id="getiEnergyIndexByCode" resultType="com.zhitan.model.domain.EnergyIndex"> + <include refid="selectEnergyIndexVo"/> + where code = #{cdoe} + </select> + <select id="getIndexByCode" resultType="com.zhitan.model.domain.EnergyIndex"> + SELECT ei.code,mi.meter_name||'_'||ei.name as name from energy_index ei + LEFT JOIN node_device nd on ei.meter_id = nd.device_id + LEFT JOIN meter_implement mi on mi."id" = nd.device_id + <where> + <if test="nodeId != null and nodeId != ''">and nd.node_id = #{nodeId}</if> + <if test="code != null and code != ''"> + and (mi.meter_name like concat('%', #{code}, '%') + or ei.code like concat('%', #{code}, '%') + or ei.name like concat('%', #{code}, '%') + ) + </if> + </where> + </select> + <select id="getIndexByMeterIdIndexCode" resultType="com.zhitan.model.domain.EnergyIndex"> + SELECT ei.code,mi.meter_name||'_'||ei.name as name from energy_index ei + LEFT JOIN node_device nd on ei.meter_id = nd.device_id + LEFT JOIN meter_implement mi on mi."id" = nd.device_id + <where> + <if test="nodeId != null and nodeId != ''">and nd.node_id = #{nodeId}</if> + <if test="indexCode != null and indexCode != ''"> + and (mi.meter_name like concat('%', #{indexCode}, '%') + or ei.code like concat('%', #{indexCode}, '%') + or ei.name like concat('%', #{indexCode}, '%') + ) + </if> + <if test="meterId != null and meterId != ''"> + and ei.meter_id = #{meterId} + </if> + </where> + </select> <select id="getModelNodeIndexInfoListByIndexIds" resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfo"> - SELECT mi.model_name modelName, - mi.model_code, - mn."name" "name", - ei.index_id, - ei.code indexCode, - ei."name" indexName, - ei.energy_id, - ei.energy_id + SELECT mi.model_name modelName, + mi.model_code, + mn."name" "name", + ei.index_id, + ei.code indexCode, + ei."name" indexName, + ei.energy_id, + ei.energy_id FROM node_index ni INNER JOIN energy_index ei ON ni.index_id = ei.index_id LEFT JOIN model_node mn ON ni.node_id = mn.node_id @@ -427,4 +430,16 @@ #{indexId} </foreach> </select> + + <select id="selectEnergyTypeByIndex" resultType="com.zhitan.basicdata.domain.vo.MeterImplementModel"> + select ex.index_id indexId, + mi.id meterId, + mi.energy_type energyType + from energy_index ex + left join meter_implement mi on ex.meter_id = mi.id + where ex.index_id in + <foreach collection="indexIds" item="indexId" open="(" separator="," close=")"> + #{indexId} + </foreach> + </select> </mapper> -- Gitblit v1.9.3