lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentAlarmAnalyzeController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ package org.jeecg.modules.mdc.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; 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.service.MdcEquipmentAlarmAnalyzeService; import org.jeecg.modules.mdc.vo.DayUtilizationRateContrastQueryVo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; /** * @author: LiuS * @create: 2023-09-06 17:15 */ @Slf4j @Api(tags = "æ¥è¦åæ") @RestController @RequestMapping("/mdc/alarmAnalyze") public class MdcEquipmentAlarmAnalyzeController { @Resource private MdcEquipmentAlarmAnalyzeService mdcEquipmentAlarmAnalyzeService; @AutoLog(value = "æ¥è¦åæ-å表æ¥è¯¢") @ApiOperation(value = "æ¥è¦åæ-å表æ¥è¯¢", notes = "æ¥è¦åæ-å表æ¥è¯¢") @GetMapping("/alarmList") public Result alarmList(DayUtilizationRateContrastQueryVo vo) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); List<MdcAlarmAnalyzeDto> result = mdcEquipmentAlarmAnalyzeService.alarmList(userId, vo); return Result.OK(result); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcAlarmAnalyzeDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package org.jeecg.modules.mdc.dto; import lombok.Data; import java.math.BigDecimal; /** * @author: LiuS * @create: 2023-09-06 17:25 */ @Data public class MdcAlarmAnalyzeDto { /** * æ¥è¦å· */ private String alarmCode; /** * åºç°æ¬¡æ° */ private Integer count; /** * å计æç»æ¶é´ï¼ç§ï¼ */ private BigDecimal timeCount; /** * æ¥è¦ä¿¡æ¯ */ private String alarmContent; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java
@@ -3,6 +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 java.util.Date; import java.util.List; @@ -49,4 +50,9 @@ * 计ç®ä¸æ®µæ¶é´å çæ éæ°æ® */ List<MdcEquipmentRunningSection> listEquipmentRunningSectionError(@Param("equipmentId") String equipmentid, @Param("startLong") long start, @Param("endLong") long end); /** * æ¥è¯¢ä¸æ®µæ¶é´å çæ¥è¦æ°æ® */ List<MdcEquipmentRunningSection> findAlarmList(@Param("vo") DayUtilizationRateContrastQueryVo vo); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml
@@ -71,5 +71,25 @@ start_time </select> <!--æ¥è¯¢ä¸æ®µæ¶é´å çæ¥è¦æ°æ®--> <select id="findAlarmList" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection"> SELECT * FROM mdc_equipment_running_section <where> <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> AND (start_time <= #{ vo.endDate } AND end_time >= #{ vo.startDate }) AND status = '22' </where> ORDER BY start_time </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java
@@ -3,6 +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.MdcEquipmentRunningSectionVo; import java.util.Date; @@ -61,4 +62,9 @@ * æ¥è¯¢æ¸ä¸ªè®¾å¤ä¸æ®µæ¶é´å çæ éæ°æ® */ List<MdcEquipmentRunningSection> listEquipmentRunningSectionError(String equipmentid, long start, long end); /** * æ¥è¯¢æ¥è¦æ°æ® */ List<MdcEquipmentRunningSection> findAlarmList(DayUtilizationRateContrastQueryVo vo); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEquipmentAlarmAnalyzeService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package org.jeecg.modules.mdc.service; import org.jeecg.modules.mdc.dto.MdcAlarmAnalyzeDto; import org.jeecg.modules.mdc.vo.DayUtilizationRateContrastQueryVo; import java.util.List; /** * @author: LiuS * @create: 2023-09-06 17:29 */ public interface MdcEquipmentAlarmAnalyzeService { /** * å表 * * @param userId * @param vo * @return */ List<MdcAlarmAnalyzeDto> alarmList(String userId, DayUtilizationRateContrastQueryVo vo); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentAlarmAnalyzeServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,89 @@ 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.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.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; import java.util.logging.Handler; /** * @author: LiuS * @create: 2023-09-06 17:31 */ @Service public class MdcEquipmentAlarmAnalyzeServiceImpl implements MdcEquipmentAlarmAnalyzeService { @Resource private IMdcEquipmentRunningSectionService mdcEquipmentRunningSectionService; @Resource private IMdcEquipmentService mdcEquipmentService; @Override public List<MdcAlarmAnalyzeDto> alarmList(String userId, DayUtilizationRateContrastQueryVo vo) { List<MdcAlarmAnalyzeDto> result = new ArrayList<>(); 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()) { return result; } else { vo.setStartDate(DateUtils.format(DateUtils.toDate(vo.getStartDate(), DateUtils.STRDATE), DateUtils.STR_DATE) + " 00:00:00"); vo.setEndDate(DateUtils.format(DateUtils.addDays(DateUtils.toDate(vo.getEndDate(), DateUtils.STRDATE), 1), DateUtils.STR_DATE) + " 00:00:00"); // æ¥è¯¢ List<MdcEquipmentRunningSection> mdcEquipmentRunningSections = mdcEquipmentRunningSectionService.findAlarmList(vo); Map<String, MdcAlarmAnalyzeDto> map = new HashMap<>(); for (MdcEquipmentRunningSection mdcEquipmentRunningSection : mdcEquipmentRunningSections) { if (map.containsKey(mdcEquipmentRunningSection.getAlarm())) { MdcAlarmAnalyzeDto mdcAlarmAnalyzeDto = map.get(mdcEquipmentRunningSection.getAlarm()); mdcAlarmAnalyzeDto.setCount(mdcAlarmAnalyzeDto.getCount() + 1); mdcAlarmAnalyzeDto.setTimeCount(mdcAlarmAnalyzeDto.getTimeCount().add(new BigDecimal(mdcEquipmentRunningSection.getDuration()))); map.put(mdcEquipmentRunningSection.getAlarm(), mdcAlarmAnalyzeDto); } else { MdcAlarmAnalyzeDto mdcAlarmAnalyzeDto = new MdcAlarmAnalyzeDto(); mdcAlarmAnalyzeDto.setAlarmCode(mdcEquipmentRunningSection.getAlarm()); mdcAlarmAnalyzeDto.setCount(1); mdcAlarmAnalyzeDto.setTimeCount(new BigDecimal(mdcEquipmentRunningSection.getDuration())); map.put(mdcEquipmentRunningSection.getAlarm(), mdcAlarmAnalyzeDto); } } if (!map.isEmpty()) { result = new ArrayList<>(map.values()); } } return result; } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java
@@ -10,6 +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.MdcEquipmentRunningSectionVo; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -588,6 +589,11 @@ return this.baseMapper.listEquipmentRunningSectionError(equipmentid, start, end); } @Override public List<MdcEquipmentRunningSection> findAlarmList(DayUtilizationRateContrastQueryVo vo) { return this.baseMapper.findAlarmList(vo); } private Map<String, List<MdcEquipmentRunningSectionDto>> logCharts(MdcEquipmentRunningSectionVo equipmentRunningSectionVo, String date) { Map<String, List<MdcEquipmentRunningSectionDto>> map = new HashMap<>(); List<MdcEquipmentRunningSectionDto> normal = new ArrayList<>();