lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOverrunAlarmController.java
@@ -11,6 +11,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcOverrunAlarm; import org.jeecg.modules.mdc.service.IMdcOverrunAlarmService; import org.springframework.web.bind.annotation.*; @@ -39,7 +40,7 @@ /** * 分页列表查询 * * @param mdcOverrunAlarm * @param mdcEquipment * @param pageNo * @param pageSize * @param req @@ -48,13 +49,13 @@ @AutoLog(value = "mdc超限报警-分页列表查询") @ApiOperation(value = "mdc超限报警-分页列表查询", notes = "mdc超限报警-分页列表查询") @GetMapping(value = "/list") public Result<?> queryPageList(MdcOverrunAlarm mdcOverrunAlarm, public Result<?> queryPageList(MdcEquipment mdcEquipment, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { QueryWrapper<MdcOverrunAlarm> queryWrapper = QueryGenerator.initQueryWrapper(mdcOverrunAlarm, req.getParameterMap()); //QueryWrapper<MdcOverrunAlarm> queryWrapper = QueryGenerator.initQueryWrapper(mdcOverrunAlarm, req.getParameterMap()); Page<MdcOverrunAlarm> page = new Page<MdcOverrunAlarm>(pageNo, pageSize); IPage<MdcOverrunAlarm> pageList = mdcOverrunAlarmService.page(page, queryWrapper); IPage<MdcOverrunAlarm> pageList = mdcOverrunAlarmService.pageList(page, mdcEquipment, req); return Result.OK(pageList); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunMonitoringSpeedJob.java
@@ -17,7 +17,7 @@ /** * @author Lius * @Description: 监控设备转速任务 * @Description: 监控设备运行参数任务 * @date 2024/1/16 17:36 */ @PersistJobDataAfterExecution @@ -45,7 +45,7 @@ if (byJobClassName != null && !byJobClassName.isEmpty()) { quartzLog.setJobId(byJobClassName.get(0).getId()); } log.info("监控设备转速任务 RunMonitoringSpeedJob start! 时间:" + DateUtils.now()); log.info("监控设备运行参数任务 RunMonitoringSpeedJob start! 时间:" + DateUtils.now()); long startTime = System.currentTimeMillis(); try { mdcEquipmentService.monitoringSpeedProcess(); @@ -54,7 +54,7 @@ quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); // 发送消息通知 sysAnnouncementService.jobSendMessage("监控设备转速任务失败!", quartzLog.getExceptionDetail()); sysAnnouncementService.jobSendMessage("监控设备运行参数任务!", quartzLog.getExceptionDetail()); } long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
@@ -5,9 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.jeecg.modules.mdc.dto.MdcEquDepDto; import org.jeecg.modules.mdc.dto.MdcEquProDto; import org.jeecg.modules.mdc.dto.MdcEquipmentDto; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor; import org.jeecg.modules.mdc.vo.MdcEquipmentDepVo; @@ -16,6 +16,7 @@ import org.jeecg.modules.mdc.vo.WorkshopEquipmentVo; import java.util.List; import java.util.Map; /** * @Description: 设备表 @@ -97,7 +98,8 @@ IPage<MdcEquipment> pageList(Page<MdcEquipment> page, @Param("mdcEquipment") MdcEquipmentVo mdcEquipment); @InterceptorIgnore(tenantLine = "1") MdcEquipmentDto getWorkLineLast(@Param("tableName") String saveTableName); @Select("select TOP 1 CollectTime ${columns} from [${tableName}] order by CollectTime desc") Map<String, Object> getWorkLineLast(Map<String, Object> param); /** * 导出list lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOverrunAlarmMapper.java
@@ -2,6 +2,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcOverrunAlarm; /** @@ -12,4 +16,12 @@ */ public interface MdcOverrunAlarmMapper extends BaseMapper<MdcOverrunAlarm> { /** * 分页查询 * * @param page * @param mdcEquipment * @return */ IPage<MdcOverrunAlarm> pageList(Page<MdcOverrunAlarm> page, @Param("mdcEquipment") MdcEquipment mdcEquipment); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
@@ -248,11 +248,6 @@ order by t1.sort_no </select> <select id="getWorkLineLast" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentDto"> select top 1 spindlespeed, actualspindlespeed from [${tableName}] order by CollectTime desc </select> <select id="exportXlsList" resultType="org.jeecg.modules.mdc.entity.MdcEquipment"> SELECT t1.* lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverrunAlarmMapper.xml
@@ -2,4 +2,24 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.mdc.mapper.MdcOverrunAlarmMapper"> <select id="pageList" resultType="org.jeecg.modules.mdc.entity.MdcOverrunAlarm"> SELECT t1.* FROM mdc_overrun_alarm t1 LEFT JOIN mdc_equipment t2 ON t1.equipment_id = t2.equipment_id <where> <if test="mdcEquipment.equipmentId != null and mdcEquipment.equipmentId != '' "> AND t1.equipment_id LIKE CONCAT(CONCAT('%',#{mdcEquipment.equipmentId}),'%') </if> <if test="mdcEquipment.equipmentType != null and mdcEquipment.equipmentType != '' "> AND t2.equipmentType = #{mdcEquipment.equipmentType} </if> <if test="mdcEquipment.driveType != null and mdcEquipment.driveType != '' "> AND t2.drive_type = #{mdcEquipment.driveType} </if> </where> ORDER BY create_time DESC </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
@@ -178,7 +178,7 @@ IPage<MdcEquipment> pageList(Page<MdcEquipment> page, MdcEquipmentVo mdcEquipment, HttpServletRequest req); /** * 监控设备转速任务 * 监控设备运行参数任务 */ void monitoringSpeedProcess(); lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverrunAlarmService.java
@@ -1,8 +1,13 @@ package org.jeecg.modules.mdc.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcOverrunAlarm; import javax.servlet.http.HttpServletRequest; /** * @Description: mdc超限报警 @@ -12,4 +17,14 @@ */ public interface IMdcOverrunAlarmService extends IService<MdcOverrunAlarm> { /** * 分页列表查询 * * @param page * @param mdcEquipment * @param req * @return */ IPage<MdcOverrunAlarm> pageList(Page<MdcOverrunAlarm> page, MdcEquipment mdcEquipment, HttpServletRequest req); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -9,7 +9,6 @@ import org.jeecg.common.api.dto.message.MessageDTO; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.vo.DictModel; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.mdc.dto.MdcEquDepDto; import org.jeecg.modules.mdc.dto.MdcEquProDto; @@ -32,7 +31,10 @@ import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.mapper.MdcEquipmentDepartMapper; import org.jeecg.modules.system.mapper.MdcProductionEquipmentMapper; import org.jeecg.modules.system.service.*; import org.jeecg.modules.system.service.IMdcProductionService; import org.jeecg.modules.system.service.IMdcUserProductionService; import org.jeecg.modules.system.service.ISysDepartService; import org.jeecg.modules.system.service.ISysUserDepartService; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -82,13 +84,16 @@ private IEquipmentBaseInfoService equipmentBaseInfoService; @Resource private ISysDictService sysDictService; @Resource private ISysBaseAPI sysBaseApi; @Resource private IMdcAlarmInfoService mdcAlarmInfoService; @Resource private IMdcEquipmentThresholdService mdcEquipmentThresholdService; @Resource private IMdcOverrunAlarmService mdcOverrunAlarmService; @Override @@ -735,57 +740,95 @@ } /** * 监控设备转速任务 * 监控设备运行参数任务 */ @Override public void monitoringSpeedProcess() { List<MdcEquipment> equipmentList = super.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getDriveType, "FANUC")); // List<MdcEquipment> equipmentList = super.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getDriveType, "FANUC")); List<MdcEquipment> equipmentList = super.list(); //List<MdcEquipment> equipmentList = super.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140198")); // 获取字典数据 List<DictModel> dictModelList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_OPERATING_SPEED_RANGE); Integer range = 0; if (dictModelList != null && !dictModelList.isEmpty()) { range = Integer.valueOf(dictModelList.get(0).getValue()); } for (MdcEquipment mdcEquipment : equipmentList) { String saveTableName = mdcEquipment.getSaveTableName(); //查询单表数据 MdcEquipmentDto mdcEquipmentDto = this.baseMapper.getWorkLineLast(saveTableName); if (mdcEquipmentDto != null) { MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设备运行转速报警!"); messageDTO.setCategory("预警消息"); messageDTO.setFromUser("admin"); messageDTO.setToUser("admin"); Integer spindlespeed = Integer.valueOf(mdcEquipmentDto.getSpindlespeed()); Integer actualspindlespeed = Integer.valueOf(mdcEquipmentDto.getActualspindlespeed()); if (range.equals(0)) { if (spindlespeed > actualspindlespeed) { // 实际值大于设定值 高 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高报警!"); sysBaseApi.sendSysAnnouncement(messageDTO); } else if (spindlespeed < actualspindlespeed) { // 实际值小于设定值 低 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低报警!"); sysBaseApi.sendSysAnnouncement(messageDTO); } } else { int max = actualspindlespeed + actualspindlespeed * (range / 100); int min = actualspindlespeed - actualspindlespeed * (range / 100); if (spindlespeed > max || spindlespeed < min) { if (spindlespeed > actualspindlespeed) { // 实际值大于设定值 高 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高报警!"); List<MdcEquipmentThreshold> mdcEquipmentThresholdList = mdcEquipmentThresholdService.list(new LambdaQueryWrapper<MdcEquipmentThreshold>().eq(MdcEquipmentThreshold::getControlSystemType, mdcEquipment.getDriveType())); if (mdcEquipmentThresholdList != null && !mdcEquipmentThresholdList.isEmpty()) { String saveTableName = mdcEquipment.getSaveTableName(); StringBuilder builder = new StringBuilder(); for (MdcEquipmentThreshold mdcEquipmentThreshold : mdcEquipmentThresholdList) { builder.append(",").append(mdcEquipmentThreshold.getEnglishName()).append(" as \"").append(mdcEquipmentThreshold.getEnglishName()).append("\" "); } Map<String, Object> param = new HashMap<>(); param.put("columns", builder.toString()); param.put("tableName", saveTableName); Map<String, Object> map = this.baseMapper.getWorkLineLast(param); if (map != null) { for (MdcEquipmentThreshold mdcEquipmentThreshold : mdcEquipmentThresholdList) { Integer actualValue = Integer.valueOf(map.get(mdcEquipmentThreshold.getEnglishName()).toString()); Integer max = mdcEquipmentThreshold.getMaxThreshold(); Integer min = mdcEquipmentThreshold.getMinThreshold(); MessageDTO messageDTO = new MessageDTO(); messageDTO.setTitle("设备" + mdcEquipmentThreshold.getChineseName() + "报警!"); messageDTO.setCategory("预警消息"); messageDTO.setFromUser("admin"); messageDTO.setToUser("admin"); MdcOverrunAlarm mdcOverrunAlarm = new MdcOverrunAlarm(); mdcOverrunAlarm.setEquipmentId(mdcEquipment.getEquipmentId()); mdcOverrunAlarm.setSetValue(min + "-" + max); mdcOverrunAlarm.setRealValue(actualValue.toString()); if (actualValue > max) { // 高 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "高报警!"); sysBaseApi.sendSysAnnouncement(messageDTO); } else if (spindlespeed < actualspindlespeed) { // 实际值小于设定值 低 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低报警!"); mdcOverrunAlarm.setAlarmContent(mdcEquipmentThreshold.getChineseName() + "高报警"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } else if (actualValue < min) { // 低 messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "低报警!"); sysBaseApi.sendSysAnnouncement(messageDTO); mdcOverrunAlarm.setAlarmContent(mdcEquipmentThreshold.getChineseName() + "低报警"); mdcOverrunAlarmService.save(mdcOverrunAlarm); } } } } // //查询单表数据 // MdcEquipmentDto mdcEquipmentDto = this.baseMapper.getWorkLineLast(saveTableName); // if (mdcEquipmentDto != null) { // MessageDTO messageDTO = new MessageDTO(); // messageDTO.setTitle("设备运行转速报警!"); // messageDTO.setCategory("预警消息"); // messageDTO.setFromUser("admin"); // messageDTO.setToUser("admin"); // Integer spindlespeed = Integer.valueOf(mdcEquipmentDto.getSpindlespeed()); // Integer actualspindlespeed = Integer.valueOf(mdcEquipmentDto.getActualspindlespeed()); // if (range.equals(0)) { // if (spindlespeed > actualspindlespeed) { // // 实际值大于设定值 高 // messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高报警!"); // sysBaseApi.sendSysAnnouncement(messageDTO); // } else if (spindlespeed < actualspindlespeed) { // // 实际值小于设定值 低 // messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低报警!"); // sysBaseApi.sendSysAnnouncement(messageDTO); // } // } else { // int max = actualspindlespeed + actualspindlespeed * (range / 100); // int min = actualspindlespeed - actualspindlespeed * (range / 100); // if (spindlespeed > max || spindlespeed < min) { // if (spindlespeed > actualspindlespeed) { // // 实际值大于设定值 高 // messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高报警!"); // sysBaseApi.sendSysAnnouncement(messageDTO); // } else if (spindlespeed < actualspindlespeed) { // // 实际值小于设定值 低 // messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低报警!"); // sysBaseApi.sendSysAnnouncement(messageDTO); // } // } // } // // } } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverrunAlarmServiceImpl.java
@@ -1,11 +1,16 @@ package org.jeecg.modules.mdc.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcOverrunAlarm; import org.jeecg.modules.mdc.mapper.MdcOverrunAlarmMapper; import org.jeecg.modules.mdc.service.IMdcOverrunAlarmService; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; /** * @Description: mdc超限报警 @@ -16,4 +21,8 @@ @Service public class MdcOverrunAlarmServiceImpl extends ServiceImpl<MdcOverrunAlarmMapper, MdcOverrunAlarm> implements IMdcOverrunAlarmService { @Override public IPage<MdcOverrunAlarm> pageList(Page<MdcOverrunAlarm> page, MdcEquipment mdcEquipment, HttpServletRequest req) { return this.baseMapper.pageList(page, mdcEquipment); } }