From 0d3e5cefe51ab44f28097839405c1a4c31466650 Mon Sep 17 00:00:00 2001 From: lius <Lius2225@163.com> Date: 星期四, 07 九月 2023 14:40:49 +0800 Subject: [PATCH] 报警分析走势 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcAlarmAnalyzeQueryVo.java | 42 ++++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcAlarmDto.java | 18 +++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcAlarmTrendDto.java | 21 ++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java | 14 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java | 14 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml | 33 ++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEquipmentAlarmAnalyzeService.java | 14 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentAlarmAnalyzeServiceImpl.java | 72 +++++++++++++- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentAlarmAnalyzeController.java | 15 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java | 14 ++ 10 files changed, 242 insertions(+), 15 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentAlarmAnalyzeController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentAlarmAnalyzeController.java index ee6b397..e18ce6f 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentAlarmAnalyzeController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentAlarmAnalyzeController.java @@ -8,8 +8,9 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.mdc.dto.MdcAlarmAnalyzeDto; +import org.jeecg.modules.mdc.dto.MdcAlarmTrendDto; import org.jeecg.modules.mdc.service.MdcEquipmentAlarmAnalyzeService; -import org.jeecg.modules.mdc.vo.DayUtilizationRateContrastQueryVo; +import org.jeecg.modules.mdc.vo.MdcAlarmAnalyzeQueryVo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -33,11 +34,21 @@ @AutoLog(value = "鎶ヨ鍒嗘瀽-鍒楄〃鏌ヨ") @ApiOperation(value = "鎶ヨ鍒嗘瀽-鍒楄〃鏌ヨ", notes = "鎶ヨ鍒嗘瀽-鍒楄〃鏌ヨ") @GetMapping("/alarmList") - public Result alarmList(DayUtilizationRateContrastQueryVo vo) { + public Result alarmList(MdcAlarmAnalyzeQueryVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); List<MdcAlarmAnalyzeDto> result = mdcEquipmentAlarmAnalyzeService.alarmList(userId, vo); return Result.OK(result); } + @AutoLog(value = "鎶ヨ鍒嗘瀽-璧板娍鏌ヨ") + @ApiOperation(value = "鎶ヨ鍒嗘瀽-璧板娍鏌ヨ", notes = "鎶ヨ鍒嗘瀽-璧板娍鏌ヨ") + @GetMapping("/alarmTrend") + public Result alarmTrend(MdcAlarmAnalyzeQueryVo vo) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + MdcAlarmTrendDto result = mdcEquipmentAlarmAnalyzeService.alarmTrend(userId, vo); + return Result.OK(result); + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcAlarmDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcAlarmDto.java new file mode 100644 index 0000000..970cb70 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcAlarmDto.java @@ -0,0 +1,18 @@ +package org.jeecg.modules.mdc.dto; + +import lombok.Data; + +/** + * @author: LiuS + * @create: 2023-09-07 13:55 + */ +@Data +public class MdcAlarmDto { + + private String key; + + /** + * 鍑虹幇娆℃暟 + */ + private Integer count; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcAlarmTrendDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcAlarmTrendDto.java new file mode 100644 index 0000000..94bf344 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcAlarmTrendDto.java @@ -0,0 +1,21 @@ +package org.jeecg.modules.mdc.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @author: LiuS + * @create: 2023-09-07 13:47 + */ +@Data +public class MdcAlarmTrendDto { + + List<String> dateList; + + List<String> equipmentList; + + List<MdcAlarmDto> dateCountList; + + List<MdcAlarmDto> equipmentCountList; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java index c99aa79..d152085 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java @@ -3,7 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection; -import org.jeecg.modules.mdc.vo.DayUtilizationRateContrastQueryVo; +import org.jeecg.modules.mdc.vo.MdcAlarmAnalyzeQueryVo; import java.util.Date; import java.util.List; @@ -54,5 +54,15 @@ /** * 鏌ヨ涓�娈垫椂闂村唴鐨勬姤璀︽暟鎹� */ - List<MdcEquipmentRunningSection> findAlarmList(@Param("vo") DayUtilizationRateContrastQueryVo vo); + List<MdcEquipmentRunningSection> findAlarmList(@Param("vo") MdcAlarmAnalyzeQueryVo vo); + + /** + * 鏌ヨ鏁伴噺 + */ + Integer findAlarmCount(@Param("equipmentId") String equipmentId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("alarmCode") String alarmCode); + + /** + * 鏍规嵁鏃ユ湡鏌ヨ鏁伴噺 + */ + Integer findAlarmCountByDate(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("vo") MdcAlarmAnalyzeQueryVo vo); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml index ad4fba3..4cfc2d6 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml @@ -91,5 +91,38 @@ start_time </select> + <!--鏌ヨ鏁伴噺--> + <select id="findAlarmCount" resultType="java.lang.Integer"> + SELECT + COUNT(*) + FROM + mdc_equipment_running_section + <where> + AND status = '22' + AND alarm = #{ alarmCode } + AND (start_time <= #{ vo.endDate } AND end_time >= #{ vo.startDate }) + AND equipment_id = #{ equipmentId } + </where> + </select> + + <!--鏍规嵁鏃ユ湡鏌ヨ鏁伴噺--> + <select id="findAlarmCountByDate" resultType="java.lang.Integer"> + SELECT + COUNT(*) + FROM + mdc_equipment_running_section + <where> + AND status = '22' + AND alarm = #{ vo.alarmCode } + AND (start_time <= #{ vo.endDate } AND end_time >= #{ vo.startDate }) + <if test="vo.equipmentIdList != null and vo.equipmentIdList.size() > 0 "> + AND equipment_id IN + <foreach collection="vo.equipmentIdList" item="id" index="index" open="(" close=")" separator=","> + #{ id } + </foreach> + </if> + </where> + </select> + </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java index 1eed2ff..bcdb8fd 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java @@ -3,7 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.mdc.dto.MdcEquipmentRunningSectionDto; import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection; -import org.jeecg.modules.mdc.vo.DayUtilizationRateContrastQueryVo; +import org.jeecg.modules.mdc.vo.MdcAlarmAnalyzeQueryVo; import org.jeecg.modules.mdc.vo.MdcEquipmentRunningSectionVo; import java.util.Date; @@ -66,5 +66,15 @@ /** * 鏌ヨ鎶ヨ鏁版嵁 */ - List<MdcEquipmentRunningSection> findAlarmList(DayUtilizationRateContrastQueryVo vo); + List<MdcEquipmentRunningSection> findAlarmList(MdcAlarmAnalyzeQueryVo vo); + + /** + * 鏌ヨ娆℃暟 + */ + Integer findAlarmCount(String equipmentId, String startDate, String endDate, String alarmCode); + + /** + * 鏍规嵁鏃ユ湡鏌ヨ娆℃暟 + */ + Integer findAlarmCountByDate(String startDate, String endDate, MdcAlarmAnalyzeQueryVo vo); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEquipmentAlarmAnalyzeService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEquipmentAlarmAnalyzeService.java index b3d2f39..f1272e2 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEquipmentAlarmAnalyzeService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEquipmentAlarmAnalyzeService.java @@ -1,7 +1,8 @@ package org.jeecg.modules.mdc.service; import org.jeecg.modules.mdc.dto.MdcAlarmAnalyzeDto; -import org.jeecg.modules.mdc.vo.DayUtilizationRateContrastQueryVo; +import org.jeecg.modules.mdc.dto.MdcAlarmTrendDto; +import org.jeecg.modules.mdc.vo.MdcAlarmAnalyzeQueryVo; import java.util.List; @@ -17,5 +18,14 @@ * @param vo * @return */ - List<MdcAlarmAnalyzeDto> alarmList(String userId, DayUtilizationRateContrastQueryVo vo); + List<MdcAlarmAnalyzeDto> alarmList(String userId, MdcAlarmAnalyzeQueryVo vo); + + /** + * 鍒嗘瀽 + * + * @param userId + * @param vo + * @return + */ + MdcAlarmTrendDto alarmTrend(String userId, MdcAlarmAnalyzeQueryVo vo); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentAlarmAnalyzeServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentAlarmAnalyzeServiceImpl.java index 5c4e534..5631976 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentAlarmAnalyzeServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentAlarmAnalyzeServiceImpl.java @@ -1,21 +1,20 @@ package org.jeecg.modules.mdc.service.impl; -import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; -import org.checkerframework.checker.units.qual.A; import org.jeecg.modules.mdc.dto.MdcAlarmAnalyzeDto; +import org.jeecg.modules.mdc.dto.MdcAlarmDto; +import org.jeecg.modules.mdc.dto.MdcAlarmTrendDto; import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection; import org.jeecg.modules.mdc.service.IMdcEquipmentRunningSectionService; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.service.MdcEquipmentAlarmAnalyzeService; import org.jeecg.modules.mdc.util.DateUtils; -import org.jeecg.modules.mdc.vo.DayUtilizationRateContrastQueryVo; +import org.jeecg.modules.mdc.vo.MdcAlarmAnalyzeQueryVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; -import java.util.logging.Handler; /** * @author: LiuS @@ -31,7 +30,7 @@ private IMdcEquipmentService mdcEquipmentService; @Override - public List<MdcAlarmAnalyzeDto> alarmList(String userId, DayUtilizationRateContrastQueryVo vo) { + public List<MdcAlarmAnalyzeDto> alarmList(String userId, MdcAlarmAnalyzeQueryVo vo) { List<MdcAlarmAnalyzeDto> result = new ArrayList<>(); List<String> equipmentIds = new ArrayList<>(); if (StringUtils.isNotEmpty(vo.getParentId()) && StringUtils.isEmpty(vo.getEquipmentId())) { @@ -86,4 +85,67 @@ } return result; } + + + @Override + public MdcAlarmTrendDto alarmTrend(String userId, MdcAlarmAnalyzeQueryVo vo) { + MdcAlarmTrendDto result = new MdcAlarmTrendDto(); + List<String> equipmentIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(vo.getParentId()) && StringUtils.isEmpty(vo.getEquipmentId())) { + if ("2".equals(vo.getTypeTree())) { + // 閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, vo.getParentId()); + } else { + // 浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, vo.getParentId()); + } + } else if (StringUtils.isNotEmpty(vo.getEquipmentId())) { + // 鍗曞彴璁惧淇℃伅 + vo.setEquipmentIdList(Collections.singletonList(vo.getEquipmentId())); + } else { + // 鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭� + if ("2".equals(vo.getTypeTree())) { + // 閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null); + } else { + // 浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null); + } + } + if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { + vo.setEquipmentIdList(equipmentIds); + } + if (vo.getEquipmentIdList() != null && !vo.getEquipmentIdList().isEmpty()) { + result.setEquipmentList(vo.getEquipmentIdList()); + List<MdcAlarmDto> equipmentCountList = new ArrayList<>(); + String startDate = DateUtils.format(DateUtils.toDate(vo.getStartDate(), DateUtils.STRDATE), DateUtils.STR_DATE) + " 00:00:00"; + String endDate = DateUtils.format(DateUtils.addDays(DateUtils.toDate(vo.getEndDate(), DateUtils.STRDATE), 1), DateUtils.STR_DATE) + " 00:00:00"; + for (String equipmentId : result.getEquipmentList()) { + MdcAlarmDto mdcAlarmDto = new MdcAlarmDto(); + mdcAlarmDto.setKey(equipmentId); + Integer count = mdcEquipmentRunningSectionService.findAlarmCount(equipmentId, startDate, endDate, vo.getAlarmCode()); + mdcAlarmDto.setCount(count); + equipmentCountList.add(mdcAlarmDto); + } + result.setEquipmentCountList(equipmentCountList); + } + + Date start = DateUtils.toDate(vo.getStartDate(), DateUtils.STRDATE); + Date end = DateUtils.toDate(vo.getEndDate(), DateUtils.STRDATE); + List<String> dateList = DateUtils.getDatesStringLists(start, end); + result.setDateList(dateList); + List<String> datesStringList = DateUtils.getDatesStringList(start, end); + List<MdcAlarmDto> dateCountList = new ArrayList<>(); + for (String date : datesStringList) { + MdcAlarmDto mdcAlarmDto = new MdcAlarmDto(); + mdcAlarmDto.setKey(DateUtils.format(DateUtils.toDate(date, DateUtils.STR_DATE), DateUtils.STR_MMDD)); + String startDate = DateUtils.format(DateUtils.toDate(date, DateUtils.STRDATE), DateUtils.STR_DATE) + " 00:00:00"; + String endDate = DateUtils.format(DateUtils.addDays(DateUtils.toDate(date, DateUtils.STRDATE), 1), DateUtils.STR_DATE) + " 00:00:00"; + Integer count = mdcEquipmentRunningSectionService.findAlarmCountByDate(startDate, endDate, vo); + mdcAlarmDto.setCount(count); + dateCountList.add(mdcAlarmDto); + } + result.setDateCountList(dateCountList); + return result; + } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java index c140bd4..2fa8719 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java @@ -10,7 +10,7 @@ import org.jeecg.modules.mdc.service.*; import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.util.TimeFieldUtils; -import org.jeecg.modules.mdc.vo.DayUtilizationRateContrastQueryVo; +import org.jeecg.modules.mdc.vo.MdcAlarmAnalyzeQueryVo; import org.jeecg.modules.mdc.vo.MdcEquipmentRunningSectionVo; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -590,10 +590,20 @@ } @Override - public List<MdcEquipmentRunningSection> findAlarmList(DayUtilizationRateContrastQueryVo vo) { + public List<MdcEquipmentRunningSection> findAlarmList(MdcAlarmAnalyzeQueryVo vo) { return this.baseMapper.findAlarmList(vo); } + @Override + public Integer findAlarmCount(String equipmentId, String startDate, String endDate, String alarmCode) { + return this.baseMapper.findAlarmCount(equipmentId, startDate, endDate, alarmCode); + } + + @Override + public Integer findAlarmCountByDate(String startDate, String endDate, MdcAlarmAnalyzeQueryVo vo) { + return this.baseMapper.findAlarmCountByDate(startDate, endDate, vo); + } + private Map<String, List<MdcEquipmentRunningSectionDto>> logCharts(MdcEquipmentRunningSectionVo equipmentRunningSectionVo, String date) { Map<String, List<MdcEquipmentRunningSectionDto>> map = new HashMap<>(); List<MdcEquipmentRunningSectionDto> normal = new ArrayList<>(); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcAlarmAnalyzeQueryVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcAlarmAnalyzeQueryVo.java new file mode 100644 index 0000000..f6bc979 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcAlarmAnalyzeQueryVo.java @@ -0,0 +1,42 @@ +package org.jeecg.modules.mdc.vo; + +import lombok.Data; + +import java.util.List; + +/** + * @author: LiuS + * @create: 2023-09-07 11:17 + */ +@Data +public class MdcAlarmAnalyzeQueryVo { + + /** + * 鏃ユ湡 -> 20220101 + */ + private String startDate; + /** + * 鏃ユ湡 -> 20220101 + */ + private String endDate; + /** + * 璁惧Id + */ + private String equipmentId; + /** + * 鏍戠被鍨� -> 1:杞﹂棿灞傜骇 2:閮ㄩ棬灞傜骇 + */ + private String typeTree; + /** + * 灞傜骇ID + */ + private String parentId; + /** + * 璁惧ids + */ + private List<String> equipmentIdList; + /** + * 鎶ヨ鍙� + */ + private String alarmCode; +} -- Gitblit v1.9.3