Lius
2024-03-01 faa87b7860247e7d748896367b487f7fb7952b94
mdc设备运行参数超限算法更新
已修改10个文件
217 ■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOverrunAlarmController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunMonitoringSpeedJob.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOverrunAlarmMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverrunAlarmMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverrunAlarmService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverrunAlarmServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}