From 940bdec33a4c2a6b52d1497e6eeffddb1b6b4585 Mon Sep 17 00:00:00 2001 From: DYL0109 <dn18191638832@163.com> Date: 星期五, 18 四月 2025 19:17:25 +0800 Subject: [PATCH] Merge pull request #73 from zhitan-cloud/develop1.0 --- zhitan-system/src/main/java/com/zhitan/alarm/services/IHistoryAlarmService.java | 7 zhitan-system/src/main/java/com/zhitan/model/mapper/ModelNodeMapper.java | 5 zhitan-framework/src/main/java/com/zhitan/framework/web/service/SysLoginService.java | 2 zhitan-system/src/main/resources/mapper/model/ModelNodeMapper.xml | 18 zhitan-system/src/main/java/com/zhitan/alarm/mapper/HistoryAlarmMapper.java | 45 + zhitan-system/src/main/java/com/zhitan/basicdata/domain/vo/MeterImplementModel.java | 22 zhitan-system/src/main/resources/mapper/alarm/HistoryAlarmMapper.xml | 82 ++ zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalysisController.java | 21 zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsVO.java | 5 zhitan-system/src/main/java/com/zhitan/alarm/services/impl/HistoryAlarmServiceImpl.java | 180 ++++-- zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/HistoryAlarmController.java | 17 zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java | 3 zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml | 793 +++++++++++++++-------------- zhitan-vue/src/views/alarmmanage/measuremen/measuremen.vue | 32 zhitan-vue/src/views/alarmmanage/alarmrecord/alarmRecord.vue | 2 zhitan-system/src/main/java/com/zhitan/alarm/domain/dto/AlarmAnalysisDTO.java | 15 zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalysisService.java | 15 zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java | 255 +++++--- 18 files changed, 891 insertions(+), 628 deletions(-) diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalyisisController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalysisController.java similarity index 61% rename from zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalyisisController.java rename to zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalysisController.java index 8766e28..7b55dae 100644 --- a/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalyisisController.java +++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalysisController.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); } } diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/HistoryAlarmController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/HistoryAlarmController.java index 181e1ff..4d2c776 100644 --- a/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/HistoryAlarmController.java +++ b/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); } } diff --git a/zhitan-framework/src/main/java/com/zhitan/framework/web/service/SysLoginService.java b/zhitan-framework/src/main/java/com/zhitan/framework/web/service/SysLoginService.java index be2716a..89ddfce 100644 --- a/zhitan-framework/src/main/java/com/zhitan/framework/web/service/SysLoginService.java +++ b/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); // 鐢ㄦ埛楠岃瘉 diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/domain/dto/AlarmAnalysisDTO.java b/zhitan-system/src/main/java/com/zhitan/alarm/domain/dto/AlarmAnalysisDTO.java index 5ca1ddf..507f1c0 100644 --- a/zhitan-system/src/main/java/com/zhitan/alarm/domain/dto/AlarmAnalysisDTO.java +++ b/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; } diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/mapper/HistoryAlarmMapper.java b/zhitan-system/src/main/java/com/zhitan/alarm/mapper/HistoryAlarmMapper.java index ab16fbd..719be0b 100644 --- a/zhitan-system/src/main/java/com/zhitan/alarm/mapper/HistoryAlarmMapper.java +++ b/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); } diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalyisisService.java b/zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalysisService.java similarity index 61% rename from zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalyisisService.java rename to zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalysisService.java index 2c54007..cd694b8 100644 --- a/zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalyisisService.java +++ b/zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalysisService.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); } diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/services/IHistoryAlarmService.java b/zhitan-system/src/main/java/com/zhitan/alarm/services/IHistoryAlarmService.java index b3dcc7c..78e58ec 100644 --- a/zhitan-system/src/main/java/com/zhitan/alarm/services/IHistoryAlarmService.java +++ b/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); } 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 3545c7d..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 @@ -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鍜宨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); @@ -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; + } } diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/HistoryAlarmServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/HistoryAlarmServiceImpl.java index 9b16045..da5e081 100644 --- a/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/HistoryAlarmServiceImpl.java +++ b/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鍜宨ndexId 鍘绘煡璇㈣閲忓櫒鍏� - 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); + } + } 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/java/com/zhitan/model/mapper/ModelNodeMapper.java b/zhitan-system/src/main/java/com/zhitan/model/mapper/ModelNodeMapper.java index 56b41e1..6af717b 100644 --- a/zhitan-system/src/main/java/com/zhitan/model/mapper/ModelNodeMapper.java +++ b/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); } diff --git a/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsVO.java b/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsVO.java index a0bf88e..60e2e9c 100644 --- a/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsVO.java +++ b/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() { diff --git a/zhitan-system/src/main/resources/mapper/alarm/HistoryAlarmMapper.xml b/zhitan-system/src/main/resources/mapper/alarm/HistoryAlarmMapper.xml index d7d6f6e..49eab74 100644 --- a/zhitan-system/src/main/resources/mapper/alarm/HistoryAlarmMapper.xml +++ b/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> diff --git a/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml b/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml index 3e16008..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="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> diff --git a/zhitan-system/src/main/resources/mapper/model/ModelNodeMapper.xml b/zhitan-system/src/main/resources/mapper/model/ModelNodeMapper.xml index eb7fbde..d8486ec 100644 --- a/zhitan-system/src/main/resources/mapper/model/ModelNodeMapper.xml +++ b/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> diff --git a/zhitan-vue/src/views/alarmmanage/alarmrecord/alarmRecord.vue b/zhitan-vue/src/views/alarmmanage/alarmrecord/alarmRecord.vue index 1ff3b79..57a7400 100644 --- a/zhitan-vue/src/views/alarmmanage/alarmrecord/alarmRecord.vue +++ b/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> diff --git a/zhitan-vue/src/views/alarmmanage/measuremen/measuremen.vue b/zhitan-vue/src/views/alarmmanage/measuremen/measuremen.vue index cbd3852..d831208 100644 --- a/zhitan-vue/src/views/alarmmanage/measuremen/measuremen.vue +++ b/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, -- Gitblit v1.9.3