zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalysisController.java
ÎļþÃû´Ó zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalyisisController.java ÐÞ¸Ä @@ -2,36 +2,41 @@ import com.zhitan.alarm.domain.dto.AlarmAnalysisDTO; import com.zhitan.alarm.domain.vo.AlarmAnalysisVO; import com.zhitan.alarm.services.IAlarmAnalyisisService; import com.zhitan.alarm.services.IAlarmAnalysisService; import com.zhitan.common.core.controller.BaseController; import com.zhitan.common.core.domain.AjaxResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** geng * description æ¥è¦åæç¸å ³åè½ * description æ¥è¦åæç¸å ³åè½ * * @author hmj * @date 2024-10-26 17:31 * @author zhitan * @date */ @RestController @RequestMapping("/alarmAnalysis") public class AlarmAnalyisisController extends BaseController { public class AlarmAnalysisController extends BaseController { @Autowired private IAlarmAnalyisisService alarmAnalyisisService; private IAlarmAnalysisService alarmAnalysisService; @GetMapping("/getByNodeId") public AjaxResult getByNodeId(@Validated AlarmAnalysisDTO alarmAnalysisDTO){ AlarmAnalysisVO alarmAnalysisVO = alarmAnalyisisService.getByNodeId(alarmAnalysisDTO); AlarmAnalysisVO alarmAnalysisVO = alarmAnalysisService.getByNodeId(alarmAnalysisDTO); return AjaxResult.success(alarmAnalysisVO); } @GetMapping("/getCountInfo") public AjaxResult getCountInfo(@Validated AlarmAnalysisDTO alarmAnalysisDTO){ AlarmAnalysisVO alarmAnalysisVO = alarmAnalyisisService.getCountInfo(alarmAnalysisDTO); if(ObjectUtils.isEmpty(alarmAnalysisDTO.getModelCode())){ return AjaxResult.error("模åç¼ç ä¸è½ä¸ºç©º"); } AlarmAnalysisVO alarmAnalysisVO = alarmAnalysisService.getCountInfo(alarmAnalysisDTO); return AjaxResult.success(alarmAnalysisVO); } } zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/HistoryAlarmController.java
@@ -12,6 +12,7 @@ import com.zhitan.common.enums.BusinessType; import com.zhitan.common.utils.poi.ExcelUtil; import com.zhitan.framework.web.service.TokenService; import com.zhitan.model.domain.ModelNode; import com.zhitan.realtimedata.domain.TagValue; import com.zhitan.realtimedata.service.RealtimeDatabaseService; import io.swagger.annotations.Api; @@ -43,10 +44,7 @@ public class HistoryAlarmController extends BaseController { @Autowired private IHistoryAlarmService iHistoryAlarmService; @Autowired private TokenService tokenService; private IHistoryAlarmService historyAlarmService; @Autowired private RealtimeDatabaseService realtimeDatabaseService; @@ -55,12 +53,11 @@ * å岿¥è¦ é¡µé¢ æ ¹æ® èç¹ç®å½å æ¡ä»¶æ¥è¯¢ */ @ApiOperation("å岿¥è¦æ¥è¯¢") // @PreAuthorize("@ss.hasPermi('energyAlarm:historicalAlarm:list')") @PreAuthorize("@ss.hasPermi('energyAlarm:historicalAlarm:list')") @GetMapping("/list") public TableDataInfo list(JkHistoryAlarm jkHistoryAlarm,Long pageNum,Long pageSize) public TableDataInfo list(JkHistoryAlarm jkHistoryAlarm) { Page<JkHistoryAlarm> list = iHistoryAlarmService.selectJkHistoryAlarmPage(jkHistoryAlarm,pageNum,pageSize); return getDataTable(list); return getDataTable(historyAlarmService.selectHistoryAlarmPageList(jkHistoryAlarm)); } /** * 导åºå岿¥è¦çæ§å表 @@ -70,7 +67,7 @@ @GetMapping("/export") public AjaxResult export(JkHistoryAlarm jkHistoryAlarm) { List<JkHistoryAlarm> list = iHistoryAlarmService.selectJkHistoryAlarmListExcel(jkHistoryAlarm); List<JkHistoryAlarm> list = historyAlarmService.selectJkHistoryAlarmListExcel(jkHistoryAlarm); ExcelUtil<JkHistoryAlarm> util = new ExcelUtil<JkHistoryAlarm>(JkHistoryAlarm.class); return util.exportExcel(list, "alarm"); } @@ -165,7 +162,7 @@ public TableDataInfo listNote(JkHistoryAlarm jkHistoryAlarm) { startPage(); List<JkHistoryAlarm> list = iHistoryAlarmService.selectHistoryAlarmNoteList(jkHistoryAlarm); List<JkHistoryAlarm> list = historyAlarmService.selectHistoryAlarmNoteList(jkHistoryAlarm); return getDataTable(list); } } zhitan-framework/src/main/java/com/zhitan/framework/web/service/SysLoginService.java
@@ -61,7 +61,7 @@ public String login(String username, String password, String code, String uuid) { // éªè¯ç æ ¡éª validateCaptcha(username, code, uuid); // validateCaptcha(username, code, uuid); // ç»å½åç½®æ ¡éª loginPreCheck(username, password); // ç¨æ·éªè¯ zhitan-system/src/main/java/com/zhitan/alarm/domain/dto/AlarmAnalysisDTO.java
@@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.zhitan.common.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -13,8 +14,7 @@ * @author hmj * @date 2024-10-16 17:55 */ @Getter @Setter @Data public class AlarmAnalysisDTO { @ApiModelProperty(value = "èç¹id") private String nodeId; @@ -28,18 +28,23 @@ /** * ç»è®¡å¼å§æ¶é´ */ @ApiModelProperty(value = "ç»è®¡å¼å§æ¶é´") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") @Excel(name = "æ¥è¦å¼å§æ¶é´", dateFormat = "yyyy-MM-dd HH:mm:ss") private Date beginTime; /** * ç»è®¡å¼å§æ¶é´ * ç»è®¡ç»ææ¶é´ */ @ApiModelProperty(value = "ç»è®¡ç»ææ¶é´") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") @Excel(name = "æ¥è¦å¼å§æ¶é´", dateFormat = "yyyy-MM-dd HH:mm:ss") @Excel(name = "æ¥è¦ç»ææ¶é´", dateFormat = "yyyy-MM-dd HH:mm:ss") private Date endTime; /** 模åç¼ç */ /** * 模åç¼ç */ @ApiModelProperty(value = "模åç¼ç ") @Excel(name = "模åç¼ç ") private String modelCode; } zhitan-system/src/main/java/com/zhitan/alarm/mapper/HistoryAlarmMapper.java
@@ -7,6 +7,7 @@ import com.zhitan.alarm.domain.JkHistoryAlarm; import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; /** @@ -17,28 +18,34 @@ */ public interface HistoryAlarmMapper { /** * è·åå岿¥è¦éå * * @param jkHistoryAlarm æ¥è¦åæ° * @return 颿¥è¦è®¾ç½®éå */ List<JkHistoryAlarm> selectJkHistoryAlarmList(JkHistoryAlarm jkHistoryAlarm); /** * è·åå岿¥è¦éå * * @param jkHistoryAlarm æ¥è¦åæ° * @return 颿¥è¦è®¾ç½®éå */ List<JkHistoryAlarm> selectJkHistoryAlarmList(JkHistoryAlarm jkHistoryAlarm); List<JkHistoryAlarm> selectJkHistoryAlarmListExcel(JkHistoryAlarm jkHistoryAlarm); List<JkHistoryAlarm> selectJkHistoryAlarmListExcel(JkHistoryAlarm jkHistoryAlarm); /** * 宿¶æ£æµ åè½ çå¤ sheet页 å±ç¤º ç»æå¾ æµç¹ æ¥è¦ä¿¡æ¯ * * @param jkHistoryAlarm * @return */ List<JkHistoryAlarm> selectHistoryAlarmNoteList(JkHistoryAlarm jkHistoryAlarm); /** * 宿¶æ£æµ åè½ çå¤ sheet页 å±ç¤º ç»æå¾ æµç¹ æ¥è¦ä¿¡æ¯ * * @param jkHistoryAlarm * @return */ List<JkHistoryAlarm> selectHistoryAlarmNoteList(JkHistoryAlarm jkHistoryAlarm); void updateHistoryAlarm(@Param("alarmCode") String alarmCode, @Param("historyAlarm") HistoryAlarm historyAlarm); void updateHistoryAlarm(@Param("alarmCode") String alarmCode, @Param("historyAlarm") HistoryAlarm historyAlarm); Page<JkHistoryAlarm> selectJkHistoryAlarmPage(@Param("jkHistoryAlarm") JkHistoryAlarm jkHistoryAlarm,@Param("page")Page<?> page); Page<JkHistoryAlarm> selectJkHistoryAlarmPage(@Param("jkHistoryAlarm") JkHistoryAlarm jkHistoryAlarm, @Param("page") Page<?> page); Integer selectCountByTime(@Param("beginTime") DateTime beginTime, @Param("endTime") DateTime endTime); Integer selectCountByTime(@Param("beginTime") DateTime beginTime, @Param("endTime") DateTime endTime, @Param("indexIdList") List<String> indexIdList); Page<JkHistoryAlarm> getHistoryAlarmList(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime, @Param("indexIdList") List<String> indexIdList, Page<JkHistoryAlarm> pageInfo); } zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalysisService.java
ÎļþÃû´Ó zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalyisisService.java ÐÞ¸Ä @@ -4,13 +4,20 @@ import com.zhitan.alarm.domain.vo.AlarmAnalysisVO; /** * description todu * æ¥è¦åææ¥å£ * * @author hmj * @date 2024-10-26 17:33 * @author zhitan * @date */ public interface IAlarmAnalyisisService { public interface IAlarmAnalysisService { AlarmAnalysisVO getByNodeId(AlarmAnalysisDTO alarmAnalysisDTO); /** * æ¥è¦åæç»è®¡ * * @param alarmAnalysisDTO * @return */ AlarmAnalysisVO getCountInfo(AlarmAnalysisDTO alarmAnalysisDTO); } zhitan-system/src/main/java/com/zhitan/alarm/services/IHistoryAlarmService.java
@@ -32,5 +32,10 @@ void updateHistoryAlarm(String alarmCode, HistoryAlarm historyAlarm); Page<JkHistoryAlarm> selectJkHistoryAlarmPage(JkHistoryAlarm jkHistoryAlarm, Long pageNum, Long pageSize); /** * å岿¥è¦å页æ¥è¯¢ * @param jkHistoryAlarm * @return */ Page<JkHistoryAlarm> selectHistoryAlarmPageList(JkHistoryAlarm jkHistoryAlarm); } zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java
@@ -2,13 +2,14 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.zhitan.alarm.domain.JkHistoryAlarm; import com.zhitan.alarm.domain.dto.AlarmAnalysisDTO; import com.zhitan.alarm.domain.vo.AlarmAnalysisVO; import com.zhitan.alarm.mapper.HistoryAlarmMapper; import com.zhitan.alarm.services.IAlarmAnalyisisService; import com.zhitan.basicdata.domain.MeterImplement; import com.zhitan.alarm.services.IAlarmAnalysisService; 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; @@ -16,7 +17,7 @@ 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; import com.zhitan.model.mapper.ModelNodeMapper; @@ -25,21 +26,18 @@ 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; /** * description todu * æ¥è¦åæå®ç° * * @author hmj * @date 2024-10-26 17:34 * @author * @date */ @Service @AllArgsConstructor public class AlarmAnalyisisServiceImpl implements IAlarmAnalyisisService { public class AlarmAnalyisisServiceImpl implements IAlarmAnalysisService { private final ModelNodeMapper modelNodeMapper; @@ -50,22 +48,22 @@ private final EnergyIndexMapper energyIndexMapper; private final SysEnergyMapper sysEnergyMapper; /** * æ ¹æ®èç¹idè·åæ¥è¦åæä¿¡æ¯ * * @param alarmAnalysisDTO * @return */ @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); @@ -103,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åindexId 廿¥è¯¢è®¡éå¨å · 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); @@ -171,29 +123,93 @@ 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)); @Override public AlarmAnalysisVO getCountInfo(AlarmAnalysisDTO alarmAnalysisDTO) { AlarmAnalysisVO alarmAnalysisVO = new AlarmAnalysisVO(); final String nodeId = alarmAnalysisDTO.getNodeId(); final DateTime beginOfMonth = DateUtil.beginOfMonth(new Date()); final DateTime endOfMonth = DateUtil.endOfMonth(new Date()); final DateTime beginOfYear = DateUtil.beginOfYear(new Date()); final DateTime endOfYear = DateUtil.endOfYear(new Date()); jkHistoryAlarms.forEach(alarm -> { if (IndexType.COLLECT.getDescription().equals(alarm.getIndexType()) && StringUtils.isEmpty(alarm.getEnergyId())){ alarm.setEnergyId(energyMap.get(alarm.getIndexId())); } }); } } } /** * æ¥è¯¢ç¹ä½ä¸ç¨è½åå ä¿¡æ¯ */ List<ModelNodeIndexInfo> nodeIndexInforList = modelNodeMapper.getModelNodeIndexIdByNodeId(nodeId,null); List<String> indexIds = nodeIndexInforList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toList()); /** * 计ç®å æ¯ */ 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)); } }); }); } Integer monthCount = historyAlarmMapper.selectCountByTime(beginOfMonth,endOfMonth); Integer yearCount = historyAlarmMapper.selectCountByTime(beginOfYear,endOfYear); alarmAnalysisVO.setIndexCount(indexIds.size()); alarmAnalysisVO.setMonthCount(monthCount); alarmAnalysisVO.setYearCount(yearCount); return alarmAnalysisVO; /** * å¤çæ¥è¦æ¶é´ */ 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) { @@ -204,4 +220,41 @@ String formattedResult = df.format(averageEnergy); return Double.valueOf(formattedResult); } /** * è·åæ¥è¦åæç»è®¡ä¿¡æ¯ * @param alarmAnalysisDTO * @return */ @Override public AlarmAnalysisVO getCountInfo(AlarmAnalysisDTO alarmAnalysisDTO) { AlarmAnalysisVO alarmAnalysisVO = new AlarmAnalysisVO(); ModelNode parentNode = modelNodeMapper.selectModelNodeById(alarmAnalysisDTO.getNodeId()); if(ObjectUtils.isEmpty(parentNode)){ return alarmAnalysisVO; } // æ¥è¯¢æ¨¡åä¸çç¹ä½æ°æ® List<ModelNodeIndexInfo> nodeIndexInfoList = modelNodeMapper.getAllModelNodeIndexByAddress(parentNode.getModelCode(), parentNode.getAddress()); alarmAnalysisVO.setIndexCount(nodeIndexInfoList.size()); if (CollectionUtils.isEmpty(nodeIndexInfoList)) { return alarmAnalysisVO; } // è·åææ¥è¦æ°ãå¹´æ¥è¦æ° List<String> indexIdList = nodeIndexInfoList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toList()); DateTime beginOfMonth = DateUtil.beginOfMonth(new Date()); DateTime endOfMonth = DateUtil.endOfMonth(new Date()); DateTime beginOfYear = DateUtil.beginOfYear(new Date()); DateTime endOfYear = DateUtil.endOfYear(new Date()); Integer monthCount = historyAlarmMapper.selectCountByTime(beginOfMonth,endOfMonth, indexIdList); Integer yearCount = historyAlarmMapper.selectCountByTime(beginOfYear,endOfYear, indexIdList); alarmAnalysisVO.setMonthCount(monthCount); alarmAnalysisVO.setYearCount(yearCount); return alarmAnalysisVO; } } zhitan-system/src/main/java/com/zhitan/alarm/services/impl/HistoryAlarmServiceImpl.java
@@ -1,5 +1,9 @@ package com.zhitan.alarm.services.impl; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhitan.alarm.domain.HistoryAlarm; import com.zhitan.alarm.domain.JkHistoryAlarm; @@ -8,83 +12,147 @@ import com.zhitan.basicdata.domain.MeterImplement; import com.zhitan.basicdata.mapper.MeterImplementMapper; import com.zhitan.common.enums.TimeType; import com.zhitan.common.utils.DateUtils; import com.zhitan.common.utils.PageUtils; import com.zhitan.common.utils.StringUtils; import com.zhitan.model.domain.EnergyIndex; import com.zhitan.model.domain.ModelNode; import com.zhitan.model.domain.NodeIndex; import com.zhitan.model.domain.vo.ModelNodeIndexInfo; import com.zhitan.model.mapper.EnergyIndexMapper; import com.zhitan.model.mapper.ModelNodeMapper; import com.zhitan.model.mapper.NodeIndexMapper; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @AllArgsConstructor @Service public class HistoryAlarmServiceImpl implements IHistoryAlarmService { @Autowired private HistoryAlarmMapper historyAlarmMapper; @Resource private HistoryAlarmMapper historyAlarmMapper; @Autowired private MeterImplementMapper meterImplementMapper; @Resource private MeterImplementMapper meterImplementMapper; @Autowired private EnergyIndexMapper energyIndexMapper; @Resource private ModelNodeMapper modelNodeMapper; @Resource private NodeIndexMapper nodeIndexMapper; @Resource private EnergyIndexMapper energyIndexMapper; @Override public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime) { return null; } @Override public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime) { return null; } @Override public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime, TimeType timeType) { return null; } @Override public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime, TimeType timeType) { return null; } @Override public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime, String alarmType) { return null; } @Override public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime, String alarmType) { return null; } @Override public List<JkHistoryAlarm> selectJkHistoryAlarmList(JkHistoryAlarm jkHistoryAlarm) { return historyAlarmMapper.selectJkHistoryAlarmList(jkHistoryAlarm); } @Override public List<JkHistoryAlarm> selectJkHistoryAlarmList(JkHistoryAlarm jkHistoryAlarm) { return historyAlarmMapper.selectJkHistoryAlarmList(jkHistoryAlarm); } @Override public List<JkHistoryAlarm> selectJkHistoryAlarmListExcel(JkHistoryAlarm jkHistoryAlarm) { return historyAlarmMapper.selectJkHistoryAlarmListExcel(jkHistoryAlarm); } @Override public List<JkHistoryAlarm> selectJkHistoryAlarmListExcel(JkHistoryAlarm jkHistoryAlarm) { return historyAlarmMapper.selectJkHistoryAlarmListExcel(jkHistoryAlarm); } /** * 宿¶æ£æµ åè½ çå¤ sheet页 å±ç¤º ç»æå¾ æµç¹ æ¥è¦ä¿¡æ¯ * * @param jkHistoryAlarm * @return */ @Override public List<JkHistoryAlarm> selectHistoryAlarmNoteList(JkHistoryAlarm jkHistoryAlarm) { return historyAlarmMapper.selectHistoryAlarmNoteList(jkHistoryAlarm); } /** * 宿¶æ£æµ åè½ çå¤ sheet页 å±ç¤º ç»æå¾ æµç¹ æ¥è¦ä¿¡æ¯ * * @param jkHistoryAlarm * @return */ @Override public List<JkHistoryAlarm> selectHistoryAlarmNoteList(JkHistoryAlarm jkHistoryAlarm) { return historyAlarmMapper.selectHistoryAlarmNoteList(jkHistoryAlarm); } @Override public void updateHistoryAlarm(String alarmCode, HistoryAlarm historyAlarm) { historyAlarmMapper.updateHistoryAlarm(alarmCode, historyAlarm); } @Override public void updateHistoryAlarm(String alarmCode, HistoryAlarm historyAlarm) { historyAlarmMapper.updateHistoryAlarm(alarmCode, historyAlarm); } @Override public Page<JkHistoryAlarm> selectJkHistoryAlarmPage(JkHistoryAlarm jkHistoryAlarm, Long pageNum, Long pageSize) { final Page<JkHistoryAlarm> jkHistoryAlarmPage = historyAlarmMapper.selectJkHistoryAlarmPage(jkHistoryAlarm, new Page<>(pageNum, pageSize)); jkHistoryAlarmPage.getRecords().forEach(alarm->{ final String indexType = alarm.getIndexType(); final String indexId = alarm.getIndexId(); if("COLLECT".equals(indexType) && StringUtils.isEmpty(alarm.getEnergyId())){ //æ ¹æ®nodeIdåindexId 廿¥è¯¢è®¡éå¨å · EnergyIndex energyIndex = energyIndexMapper.selectEnergyIndexById(indexId); final MeterImplement meterImplement = meterImplementMapper.selectMeterImplementById(energyIndex.getMeterId()); alarm.setEnergyId(meterImplement.getEnergyType()); } }); return jkHistoryAlarmPage; } /** * è·åå岿¥è¦åé¡µæ°æ® * * @param historyAlarm * @return */ @Override public Page<JkHistoryAlarm> selectHistoryAlarmPageList(JkHistoryAlarm historyAlarm) { Page<JkHistoryAlarm> pageInfo = PageUtils.getPageInfo(JkHistoryAlarm.class); List<String> indexIdList = new ArrayList<>(); if ("ALL".equals(historyAlarm.getEierarchyFlag())) { ModelNode modelNode = modelNodeMapper.selectModelNodeById(historyAlarm.getNodeId()); List<ModelNodeIndexInfo> modelNodeIndexInfoList = modelNodeMapper.getAllModelNodeIndexByAddress(modelNode.getModelCode(), modelNode.getAddress()); if (StringUtils.isNotEmpty(historyAlarm.getIndexName())) { modelNodeIndexInfoList = modelNodeIndexInfoList.stream() .filter(modelNodeIndexInfo -> modelNodeIndexInfo.getIndexName().contains(historyAlarm.getIndexName())) .collect(Collectors.toList()); } if (ObjectUtils.isNotEmpty(historyAlarm.getIndexType())) { modelNodeIndexInfoList = modelNodeIndexInfoList.stream() .filter(modelNodeIndexInfo -> historyAlarm.getIndexType().equals(modelNodeIndexInfo.getIndexType())) .collect(Collectors.toList()); } indexIdList = modelNodeIndexInfoList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toList()); } else { LambdaQueryWrapper<NodeIndex> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(NodeIndex::getNodeId, historyAlarm.getNodeId()); List<NodeIndex> nodeIndexList = nodeIndexMapper.selectList(queryWrapper); List<String> allIndexIdList = nodeIndexList.stream().map(NodeIndex::getIndexId).collect(Collectors.toList()); if (ObjectUtils.isNotEmpty(allIndexIdList)) { List<EnergyIndex> indexList = energyIndexMapper.selectEnergyIndexByIds(allIndexIdList); if (ObjectUtils.isNotEmpty(historyAlarm.getIndexName())) { indexList = indexList.stream().filter(energyIndex -> energyIndex.getName().contains(historyAlarm.getIndexName())).collect(Collectors.toList()); } if (ObjectUtils.isNotEmpty(historyAlarm.getIndexType())) { indexList = indexList.stream().filter(energyIndex -> historyAlarm.getIndexType().equals(energyIndex.getIndexTypeCode())).collect(Collectors.toList()); } indexIdList = indexList.stream().map(EnergyIndex::getIndexId).collect(Collectors.toList()); } } if (ObjectUtils.isEmpty(indexIdList)) { return pageInfo; } //æ¶é´å¤ç 妿ä¸ä¼ æ¶é´é»è®¤æ¥è¯¢å½å¤©çæ°æ® Date endTime = DateUtils.parseDate(historyAlarm.getEndTime()); if (ObjectUtils.isEmpty(endTime)) { endTime = DateUtil.endOfDay(DateUtils.getNowDate()); } Date beginTime = DateUtils.parseDate(historyAlarm.getBeginTime()); if (ObjectUtils.isEmpty(beginTime)) { beginTime = DateUtil.beginOfDay(DateUtils.getNowDate()); } return historyAlarmMapper.getHistoryAlarmList(beginTime, endTime,indexIdList, pageInfo); } } 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; } 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); } zhitan-system/src/main/java/com/zhitan/model/mapper/ModelNodeMapper.java
@@ -215,4 +215,9 @@ @Param("energyType") String energyType, @Param("timeType") TimeType timeType, @Param("dateTimeMap") Map<String, LocalDateTime> dateTimeMap); /** * éè¿èç¹å°åæ¥è¯¢èç¹ä¸ååèç¹ä¸çææç¹ä½ä¿¡æ¯ */ List<ModelNodeIndexInfo> getAllModelNodeIndexByAddress(@Param("modelCode") String modelCode, @Param("address") String address); } zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsVO.java
@@ -52,10 +52,11 @@ public BigDecimal getEnergyLossRatio() { if (BigDecimal.ZERO.compareTo(totalAccumulatedAmount) == 0 || BigDecimal.ZERO.compareTo(difference) == 0){ || BigDecimal.ZERO.compareTo(difference) == 0) { return BigDecimal.ZERO; } return energyLossRatio = difference.divide(totalAccumulatedAmount, 2, RoundingMode.HALF_UP); // å è®¡ç®æ¯ä¾ï¼åä¹ä»¥ 100 转æ¢ä¸ºç¾åæ° return energyLossRatio = difference.divide(totalAccumulatedAmount, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP); } public FlowChartsVO() { zhitan-system/src/main/resources/mapper/alarm/HistoryAlarmMapper.xml
@@ -4,7 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zhitan.alarm.mapper.HistoryAlarmMapper"> <resultMap type="HistoryAlarm" id="HistoryAlarmResult"> <resultMap type="com.zhitan.alarm.domain.HistoryAlarm" id="HistoryAlarmResult"> <result property="id" column="id"/> <result property="endTime" column="end_time"/> <result property="indexId" column="index_id"/> @@ -18,7 +18,7 @@ <result property="content" column="content"/> </resultMap> <resultMap type="JkHistoryAlarm" id="JkHistoryAlarmResult"> <resultMap type="com.zhitan.alarm.domain.JkHistoryAlarm" id="JkHistoryAlarmResult"> <result property="modelName" column="modelname"/> <result property="code" column="code"/> <result property="indexName" column="indexname"/> @@ -50,7 +50,7 @@ from history_alarm </sql> <select id="selectHistoryAlarmList" parameterType="HistoryAlarm" resultMap="HistoryAlarmResult"> <select id="selectHistoryAlarmList" parameterType="com.zhitan.alarm.domain.HistoryAlarm" resultMap="HistoryAlarmResult"> <include refid="selectHistoryAlarmVo"/> <where> <if test="indexName != null and indexName != ''">and index_name like concat('%', @@ -77,7 +77,7 @@ </select> <update id="updateHistoryAlarm" parameterType="HistoryAlarm"> <update id="updateHistoryAlarm" parameterType="com.zhitan.alarm.domain.HistoryAlarm"> delete from realtime_alarm where alarm_code = #{alarmCode}; insert into history_alarm <trim prefix="(" suffix=")" suffixOverrides=","> @@ -127,7 +127,7 @@ </delete> <!--åå² æ¥è¦åè¡¨é¡µé¢ ééç¹ ä¸»é¡µé¢å表æ¥è¯¢--> <select id="selectJkHistoryAlarmList" parameterType="JkHistoryAlarm" <select id="selectJkHistoryAlarmList" parameterType="com.zhitan.alarm.domain.JkHistoryAlarm" resultMap="JkHistoryAlarmResult"> SELECT mo."name" AS modelname, @@ -180,7 +180,7 @@ order by alarm_level,mo.node_id,limit_type asc </select> <select id="selectJkHistoryAlarmListExcel" parameterType="JkHistoryAlarm" <select id="selectJkHistoryAlarmListExcel" parameterType="com.zhitan.alarm.domain.JkHistoryAlarm" resultMap="JkHistoryAlarmResult"> SELECT mo."name" AS modelname, @@ -232,7 +232,7 @@ order by alarm_level,mo.node_id,limit_type asc </select> <select id="selectHistoryAlarmNoteList" parameterType="JkHistoryAlarm" <select id="selectHistoryAlarmNoteList" parameterType="com.zhitan.alarm.domain.JkHistoryAlarm" resultMap="JkHistoryAlarmResult"> SELECT ei.code, @@ -273,7 +273,7 @@ </if> order by alarm_level,limit_type asc </select> <select id="selectJkHistoryAlarmPage" resultType="JkHistoryAlarm"> <select id="selectJkHistoryAlarmPage" resultType="com.zhitan.alarm.domain.JkHistoryAlarm"> SELECT mo."name" AS modelname, ei.code, @@ -294,7 +294,7 @@ energy_index ei, node_index ni, model_node mo, history_alarm bj , history_alarm bj, alarm_item alit WHERE ni.node_id IN ( @@ -310,30 +310,74 @@ AND alit.alarm_code = bj.alarm_code AND alit.time_slot='LIVE' AND ei.index_type=#{jkHistoryAlarm.indexType} <if test="jkHistoryAlarm.indexName != null and jkHistoryAlarm.indexName != ''">and ei.name like concat('%', #{jkHistoryAlarm.indexName}, '%') <if test="jkHistoryAlarm.indexName != null and jkHistoryAlarm.indexName != ''"> and ei.name like concat('%', #{jkHistoryAlarm.indexName}, '%') </if> <if test="jkHistoryAlarm.limitType != null and jkHistoryAlarm.limitType != ''">and alit.limit_type=#{jkHistoryAlarm.limitType}</if> <if test="jkHistoryAlarm.alarmLevel != null and jkHistoryAlarm.alarmLevel != ''">and alit.alarm_level=#{jkHistoryAlarm.alarmLevel}</if> <if test="jkHistoryAlarm.beginTime != null and jkHistoryAlarm.beginTime != ''">and begin_time >= to_timestamp(#{jkHistoryAlarm.beginTime},'yyyy-mm-dd hh24:mi:ss') <if test="jkHistoryAlarm.limitType != null and jkHistoryAlarm.limitType != ''"> and alit.limit_type=#{jkHistoryAlarm.limitType} </if> <if test="jkHistoryAlarm.alarmLevel != null and jkHistoryAlarm.alarmLevel != ''"> and alit.alarm_level=#{jkHistoryAlarm.alarmLevel} </if> <if test="jkHistoryAlarm.beginTime != null and jkHistoryAlarm.beginTime != ''"> and begin_time >= to_timestamp(#{jkHistoryAlarm.beginTime}, 'yyyy-mm-dd hh24:mi:ss') </if> <if test="jkHistoryAlarm.endTime != null and jkHistoryAlarm.endTime != ''">and begin_time <= to_timestamp(#{jkHistoryAlarm.endTime},'yyyy-mm-dd hh24:mi:ss') <if test="jkHistoryAlarm.endTime != null and jkHistoryAlarm.endTime != ''"> and begin_time <= to_timestamp(#{jkHistoryAlarm.endTime},'yyyy-mm-dd hh24:mi:ss') </if> order by alarm_level,mo.node_id,limit_type asc </select> <select id="selectCountByTime" resultType="java.lang.Integer"> select count(0) from history_alarm <where> <if test="beginTime != null "> and begin_time >= #{beginTime} and begin_time >= #{beginTime} </if> <if test="endTime != null "> and begin_time <= #{endTime} and begin_time <= #{endTime} </if> <if test="indexIdList != null and indexIdList.size() > 0"> and index_id in <foreach collection="indexIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </where> </select> <select id="getHistoryAlarmList" resultType="com.zhitan.alarm.domain.JkHistoryAlarm"> SELECT mn.node_id nodeId, mn."name" modelName, mi.meter_name meterName, mi.energy_type energyId, his.index_id indexId, ei."name" indexName, ei.index_type indexType, ei.code code, ei.unit_id unitId, ai.alarm_level alarmLevel, ai.limit_type limitType, his.limiting_value limitingValue, his.alarm_value alarmValue, his.begin_time alarmBeginTime, his.end_time alarmEndTime, his.duration duration FROM history_alarm his LEFT JOIN alarm_item ai ON his.item_id = ai."id" LEFT JOIN energy_index ei ON his.index_id = ei.index_id LEFT JOIN meter_implement mi ON ei.meter_id = mi."id" LEFT JOIN model_node mn ON mn.node_id = ai.node_id WHERE his.begin_time BETWEEN #{beginTime} AND #{endTime} <if test="indexIdList != null and indexIdList.size() > 0"> AND his.index_id IN <foreach collection="indexIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </select> </mapper> 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="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="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="list" item="indexId" open="(" separator="," close=")"> #{indexId} <foreach collection="indexIds" item="indexId" open="(" separator="," close=")"> #{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="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="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> zhitan-system/src/main/resources/mapper/model/ModelNodeMapper.xml
@@ -466,4 +466,22 @@ AND di.data_time >= #{dateTimeMap.startTime} AND di.data_time <= #{dateTimeMap.endTime} </select> <select id="getAllModelNodeIndexByAddress" resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfo"> SELECT mn.node_id nodeId, mn.code nodeCode, mn."name" nodeName, ni.index_id indexId, ei."name" indexName, ei.index_type indexType, mi.energy_type FROM "model_node" mn LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id LEFT JOIN energy_index ei ON ni.index_id = ei.index_id LEFT JOIN meter_implement mi ON mi."id" = ei.meter_id WHERE mn.model_code = #{modelCode} AND mn.address LIKE concat( #{address} , '%' ) </select> </mapper> zhitan-vue/src/views/alarmmanage/alarmrecord/alarmRecord.vue
@@ -70,7 +70,7 @@ show-overflow-tooltip :formatter="(row, column) => formatterLabel(energyTypeList, row.energyId)" /> <el-table-column label="é¢è®¾å¼" prop="energyType" align="center" show-overflow-tooltip /> <el-table-column label="é¢è®¾å¼" prop="limitingValue" align="center" show-overflow-tooltip /> <el-table-column label="æ¥è¦å¼" prop="alarmValue" align="center" show-overflow-tooltip /> <el-table-column label="æ¥è¦æ¶é´" prop="alarmBeginTime" align="center" show-overflow-tooltip /> </el-table> zhitan-vue/src/views/alarmmanage/measuremen/measuremen.vue
@@ -97,10 +97,13 @@ timeType: null, dataTime: null, nodeId: null, modelCode: '' }) import { getByNodeId, getCountInfo } from "@/api/alarmManage/alarmManage" import { el } from "element-plus/es/locales.mjs" import { useRoute } from "vue-router" const route = useRoute() let form = ref({}) let currentNode = ref() @@ -114,6 +117,7 @@ handleTimeType(period.value[0].value) getByNodeIdFun() getCountInfoFun() } function getByNodeIdFun() { @@ -155,10 +159,12 @@ // getByNodeIdFun() function handleQuery() { getByNodeIdFun() getCountInfoFun() } function resetQuery() { handleTimeType("YEAR") getByNodeIdFun() getCountInfoFun() } let dataArray = ref({ indexCount: 0, @@ -166,14 +172,16 @@ monthCount: 0, }) function getCountInfoFun() { getCountInfo(queryParams.value).then((res) => { getCountInfo({ ...queryParams.value, modelCode: route.query.modelCode, }).then((res) => { if (res.code == 200) { dataArray.value = res.data } }) } getCountInfoFun() function pieChart(Id, data, name) { console.log(data) let total = 0 @@ -274,11 +282,11 @@ axisPointer: { type: "shadow", }, axisTick: { show: false, alignWithLabel: true, length: 5, }, // axisTick: { // show: false, // alignWithLabel: true, // length: 5, // }, // åæ è½´å»åº¦çº¿æ ·å¼ axisTick: { show: false, @@ -313,11 +321,11 @@ padding: [0, 0, 5, 0], }, // åæ è½´å»åº¦ axisTick: { show: false, alignWithLabel: true, length: 5, }, // axisTick: { // show: false, // alignWithLabel: true, // length: 5, // }, // åæ è½´å»åº¦çº¿æ ·å¼ axisTick: { show: false,