zhangherong
2025-03-06 30b79b62791127b3c432ab499bfda14b97703566
Merge remote-tracking branch 'origin/master'
已修改6个文件
99 ■■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/ComparativeAnalysisQueryVo.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
@@ -31,6 +31,7 @@
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -102,10 +103,12 @@
            if (dictModelList3 != null && !dictModelList3.isEmpty()) {
                equipmentStatusJudge = Integer.valueOf(dictModelList3.get(0).getValue());
            }
            Map<String, String> proNamesByEquipmentIds = mdcEquipmentService.getProNamesByEquipmentIds(equipmentList.stream().map(MdcEquipment::getId).collect(Collectors.toList()));
            for (MdcEquipment mdcEquipment : equipmentList) {
                String productionName = proNamesByEquipmentIds.get(mdcEquipment.getId());
                // 判断利用率
                // step.1 查询消息中此设备报警时间
                SysAnnouncement sysAnnouncement = sysAnnouncementService.findLastMessage("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备利用率低于正常值报警!");
                SysAnnouncement sysAnnouncement = sysAnnouncementService.findLastMessage("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备利用率低于正常值!");
                boolean flag1 = true;
                if (sysAnnouncement != null) {
                    Date createTime = sysAnnouncement.getCreateTime();
@@ -130,18 +133,18 @@
                        if (flag) {
                            // 上报
                            MessageDTO messageDTO = new MessageDTO();
                            messageDTO.setTitle("设备利用率报警!");
                            messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备利用率低于正常值!");
                            messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                            messageDTO.setFromUser("admin");
                            messageDTO.setToUser("admin");
                            messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备利用率低于正常值报警!");
                            messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备利用率低于正常值!");
                            sysBaseApi.sendSysAnnouncement(messageDTO);
                        }
                    }
                }
                // 判断设备状态长时间无变化审批人
                SysAnnouncement sysAnnouncement1 = sysAnnouncementService.findLastMessage("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化报警!");
                SysAnnouncement sysAnnouncement1 = sysAnnouncementService.findLastMessage("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化!");
                if (sysAnnouncement1 != null) {
                    Date createTime = sysAnnouncement1.getCreateTime();
                    Date msgDate = DateUtils.toDate(DateUtils.format(createTime, DateUtils.STR_DATE), DateUtils.STR_DATE);
@@ -170,28 +173,28 @@
                        if (adminList != null && !adminList.isEmpty()) {
                            for (SysUser sysUser : adminList) {
                                MessageDTO messageDTO = new MessageDTO();
                                messageDTO.setTitle("设备状态长期无变化报警!");
                                messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化!");
                                messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                                messageDTO.setFromUser("admin");
                                messageDTO.setToUser(sysUser.getUsername());
                                messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化报警!");
                                messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化!");
                                sysBaseApi.sendSysAnnouncement(messageDTO);
                            }
                        } else {
                            MessageDTO messageDTO = new MessageDTO();
                            messageDTO.setTitle("设备状态长期无变化报警!");
                            messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化!");
                            messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                            messageDTO.setFromUser("admin");
                            messageDTO.setToUser("admin");
                            messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化报警!");
                            messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化!");
                            sysBaseApi.sendSysAnnouncement(messageDTO);
                        }
                        if (adminList != null && !adminList.isEmpty() && superList != null && !superList.isEmpty()) {
                            MdcMessageApproval mdcMessageApproval = new MdcMessageApproval();
                            mdcMessageApproval.setEquipmentId(mdcEquipment.getEquipmentId());
                            mdcMessageApproval.setTitile("设备状态长期无变化报警!");
                            mdcMessageApproval.setMsgContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化报警!");
                            mdcMessageApproval.setTitile("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化!");
                            mdcMessageApproval.setMsgContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备状态长期无变化!");
                            List<String> senderIdList = adminList.stream().map(SysUser::getId).collect(Collectors.toList());
                            mdcMessageApproval.setSenderIds(String.join(",", senderIdList));
                            List<String> senderNameList = adminList.stream().map(SysUser::getRealname).collect(Collectors.toList());
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java
@@ -27,6 +27,8 @@
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @author Lius
@@ -77,7 +79,9 @@
                range = new BigDecimal(dictModelList.get(0).getValue());
            }
            Map<String, String> proNamesByEquipmentIds = mdcEquipmentService.getProNamesByEquipmentIds(mdcEquipmentList.stream().map(MdcEquipment::getId).collect(Collectors.toList()));
            for (MdcEquipment mdcEquipment : mdcEquipmentList) {
                String productionName = proNamesByEquipmentIds.get(mdcEquipment.getId());
                String saveTableName = mdcEquipment.getSaveTableName();
                MdcEquipmentDto mdcEquipmentDto = new MdcEquipmentDto();
@@ -86,7 +90,7 @@
                if (mdcEquipmentDto != null && StringUtils.isNotBlank(mdcEquipmentDto.getSpindlespeed()) && StringUtils.isNotBlank(mdcEquipmentDto.getActualspindlespeed())) {
                    MessageDTO messageDTO = new MessageDTO();
                    messageDTO.setTitle("设备运行转速报警!");
                    messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备 [" + mdcEquipment.getEquipmentId() + "] 运行转速!");
                    messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                    messageDTO.setFromUser("admin");
                    messageDTO.setToUser("admin");
@@ -102,15 +106,15 @@
                    if (range.equals(BigDecimal.ZERO)) {
                        if (spindlespeed.compareTo(actualspindlespeed) == 1) {
                            // 设定值大于实际值   低
                            messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低报警!");
                            messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低!");
                            sysBaseApi.sendSysAnnouncement(messageDTO);
                            mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低报警");
                            mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低");
                            mdcOverrunAlarmService.save(mdcOverrunAlarm);
                        } else if (spindlespeed.compareTo(actualspindlespeed) == -1) {
                            // 设定值小于实际值   高
                            messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高报警!");
                            messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高!");
                            sysBaseApi.sendSysAnnouncement(messageDTO);
                            mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高报警");
                            mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高");
                            mdcOverrunAlarmService.save(mdcOverrunAlarm);
                        }
                    } else {
@@ -120,15 +124,15 @@
                        if (actualspindlespeed.compareTo(max) == 1 || actualspindlespeed.compareTo(min) == -1) {
                            if (spindlespeed.compareTo(actualspindlespeed) == 1) {
                                // 设定值大于实际值   低
                                messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低报警!");
                                messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速低!");
                                sysBaseApi.sendSysAnnouncement(messageDTO);
                                mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低报警");
                                mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值低");
                                mdcOverrunAlarmService.save(mdcOverrunAlarm);
                            } else if (spindlespeed.compareTo(actualspindlespeed) == -1) {
                                // 设定值小于实际值   高
                                messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高报警!");
                                messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备运行转速高!");
                                sysBaseApi.sendSysAnnouncement(messageDTO);
                                mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高报警");
                                mdcOverrunAlarm.setAlarmContent("设备运行转速比NC代码设定值高");
                                mdcOverrunAlarmService.save(mdcOverrunAlarm);
                            }
                        }
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml
@@ -179,17 +179,29 @@
                    #{ id }
                </foreach>
            </if>
            <if test="vo.driveType != null and vo.driveType != null">
                AND me.drive_type = #{ vo.driveType }
            <if test="vo.driveTypeList != null and vo.driveTypeList .size() > 0 ">
                AND me.drive_type IN
                <foreach collection="vo.driveTypeList" item="driveType" index="index" open="(" close=")" separator=",">
                    #{ driveType }
                </foreach>
            </if>
            <if test="vo.equipmentType != null and vo.equipmentType != '' ">
                AND me.equipment_type = #{ vo.equipmentType }
            <if test="vo.equipmentTypeList != null and vo.equipmentTypeList.size() > 0 ">
                AND me.equipment_type IN
                <foreach collection="vo.equipmentTypeList" item="equipmentType" index="index" open="(" close=")" separator=",">
                    #{ equipmentType }
                </foreach>
            </if>
            <if test="vo.deviceLevel != null and vo.deviceLevel != '' ">
                AND me.device_level = #{vo.deviceLevel}
            <if test="vo.deviceLevelList != null and vo.deviceLevelList.size() > 0 ">
                AND me.device_level IN
                <foreach collection="vo.deviceLevelList" item="deviceLevel" index="index" open="(" close=")" separator=",">
                    #{ deviceLevel }
                </foreach>
            </if>
            <if test="vo.deviceCategory != null and vo.deviceCategory != '' ">
                AND me.device_category = #{vo.deviceCategory}
            <if test="vo.deviceCategoryList != null and vo.deviceCategoryList.size() > 0 ">
                AND me.device_category IN
                <foreach collection="vo.deviceCategoryList" item="deviceCategory" index="index" open="(" close=")" separator=",">
                    #{ deviceCategory }
                </foreach>
            </if>
            <if test="vo.deviceImportanceLevel != null and vo.deviceImportanceLevel != '' ">
                AND me.device_importance_level = #{vo.deviceImportanceLevel}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -1344,6 +1344,10 @@
        if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) {
            return result;
        }
        vo.setDeviceCategoryList(Arrays.asList(vo.getDeviceCategory().split(",")));
        vo.setDeviceLevelList(Arrays.asList(vo.getDeviceLevel().split(",")));
        vo.setDriveTypeList(Arrays.asList(vo.getDriveType().split(",")));
        vo.setEquipmentTypeList(Arrays.asList(vo.getEquipmentType().split(",")));
        // 查询原始数据
        List<MdcComAnaDto> resultDtos = mdcEfficiencyReportMapper.comparativeAnalysis(vo);
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -767,8 +767,9 @@
//        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"));
        Map<String, String> proNamesByEquipmentIds = this.getProNamesByEquipmentIds(equipmentList.stream().map(MdcEquipment::getId).collect(Collectors.toList()));
        for (MdcEquipment mdcEquipment : equipmentList) {
            String productionName = proNamesByEquipmentIds.get(mdcEquipment.getId());
            List<MdcEquipmentThreshold> mdcEquipmentThresholdList = mdcEquipmentThresholdService.list(new LambdaQueryWrapper<MdcEquipmentThreshold>().eq(MdcEquipmentThreshold::getControlSystemType, mdcEquipment.getDriveType()));
            if (mdcEquipmentThresholdList != null && !mdcEquipmentThresholdList.isEmpty()) {
                String saveTableName = mdcEquipment.getSaveTableName();
@@ -791,7 +792,7 @@
                        Integer max = mdcEquipmentThreshold.getMaxThreshold();
                        Integer min = mdcEquipmentThreshold.getMinThreshold();
                        MessageDTO messageDTO = new MessageDTO();
                        messageDTO.setTitle("设备" + mdcEquipmentThreshold.getChineseName() + "报警!");
                        messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "报警!");
                        messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                        messageDTO.setFromUser("admin");
                        messageDTO.setToUser("admin");
@@ -801,15 +802,15 @@
                        mdcOverrunAlarm.setRealValue(actualValue.toString());
                        if (actualValue > max) {
                            // 高
                            messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "高报警!");
                            messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "高报警!");
                            sysBaseApi.sendSysAnnouncement(messageDTO);
                            mdcOverrunAlarm.setAlarmContent(mdcEquipmentThreshold.getChineseName() + "高报警");
                            mdcOverrunAlarm.setAlarmContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "高报警!");
                            mdcOverrunAlarmService.save(mdcOverrunAlarm);
                        } else if (actualValue < min) {
                            // 低
                            messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "低报警!");
                            messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "低报警!");
                            sysBaseApi.sendSysAnnouncement(messageDTO);
                            mdcOverrunAlarm.setAlarmContent(mdcEquipmentThreshold.getChineseName() + "低报警");
                            mdcOverrunAlarm.setAlarmContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] 的设备" + mdcEquipmentThreshold.getChineseName() + "低报警!");
                            mdcOverrunAlarmService.save(mdcOverrunAlarm);
                        }
                    }
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/ComparativeAnalysisQueryVo.java
@@ -16,6 +16,8 @@
     */
    private String driveType;
    private List<String> driveTypeList;
    /**
     * 开始时间  ->  20220101
     */
@@ -45,16 +47,23 @@
     * 设备类型
     */
    private String equipmentType;
    private List<String> equipmentTypeList;
    /**
     * 设备级别
     */
    private String deviceLevel;
    private List<String> deviceLevelList;
    /**
     * 设备种类
     */
    private String deviceCategory;
    private List<String> deviceCategoryList;
    /**
     * 重要程度
     */
    private Integer deviceImportanceLevel;
}