| | |
| | | package org.jeecg.modules.mdc.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | |
| | | 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; |
| | | import org.jeecg.modules.mdc.dto.MdcEquipmentDetailedDto; |
| | | import org.jeecg.modules.mdc.dto.MdcEquipmentDto; |
| | | import org.jeecg.modules.mdc.entity.*; |
| | | import org.jeecg.modules.mdc.mapper.MdcEquipmentMapper; |
| | |
| | | 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.IMdcProductionService; |
| | | import org.jeecg.modules.system.service.IMdcUserProductionService; |
| | | import org.jeecg.modules.system.service.ISysDepartService; |
| | | import org.jeecg.modules.system.service.ISysUserDepartService; |
| | | import org.jeecg.modules.system.service.*; |
| | | import org.springframework.cache.annotation.CacheEvict; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | @Resource |
| | | private IMdcProductionService mdcProductionService; |
| | | @Resource |
| | | private IControlSystemService controlSystemService; |
| | | @Resource |
| | | private IEquipmentWorkLineService equipmentWorkLineService; |
| | | @Resource |
| | | private IMdcDriveTypeParamConfigService mdcDriveTypeParamConfigService; |
| | |
| | | |
| | | @Resource |
| | | private IEquipmentLogService equipmentLogService; |
| | | |
| | | @Resource |
| | | private IEquipmentBaseInfoService equipmentBaseInfoService; |
| | | |
| | | @Resource |
| | | private ISysBaseAPI sysBaseApi; |
| | |
| | | @Resource |
| | | private IMdcOverrunAlarmService mdcOverrunAlarmService; |
| | | |
| | | @Resource |
| | | private IEquipmentXYZService equipmentXYZService; |
| | | |
| | | @Resource |
| | | private ISysDictService sysDictService; |
| | | |
| | | @Override |
| | | public Map<String, String> getDepNamesByEquipmentIds(List<String> equipmentIds) { |
| | |
| | | List<MdcEquipmentMonitor> result = this.baseMapper.checkStatusFromEquipmentIds(equipmentIds); |
| | | if (result != null && !result.isEmpty()) { |
| | | for (MdcEquipmentMonitor mdcEquipmentMonitor : result) { |
| | | if (mdcEquipmentMonitor.getOporation() != null) { |
| | | switch (mdcEquipmentMonitor.getOporation()) { |
| | | case 1: |
| | | case 2: |
| | | mdcEquipmentMonitor.setOporationDict("待机"); |
| | | break; |
| | | case 3: |
| | | mdcEquipmentMonitor.setOporationDict("运行"); |
| | | break; |
| | | case 22: |
| | | mdcEquipmentMonitor.setOporationDict("报警"); |
| | | break; |
| | | default: |
| | | mdcEquipmentMonitor.setOporationDict("关机"); |
| | | break; |
| | | if (mdcEquipmentMonitor.getEquipmentStatus() == 0) { |
| | | if (mdcEquipmentMonitor.getOporation() != null) { |
| | | switch (mdcEquipmentMonitor.getOporation()) { |
| | | case 1: |
| | | case 2: |
| | | mdcEquipmentMonitor.setOporationDict("待机"); |
| | | break; |
| | | case 3: |
| | | mdcEquipmentMonitor.setOporationDict("运行"); |
| | | break; |
| | | case 22: |
| | | mdcEquipmentMonitor.setOporationDict("报警"); |
| | | break; |
| | | default: |
| | | mdcEquipmentMonitor.setOporationDict("关机"); |
| | | break; |
| | | } |
| | | } else { |
| | | mdcEquipmentMonitor.setOporationDict("关机"); |
| | | mdcEquipmentMonitor.setOporation(0); |
| | | } |
| | | } else { |
| | | mdcEquipmentMonitor.setOporationDict("关机"); |
| | | mdcEquipmentMonitor.setOporation(0); |
| | | List<DictModel> dictList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_EQUIPMENT_STATUS); |
| | | for (DictModel dictModel : dictList) { |
| | | if (Integer.valueOf(dictModel.getValue()).equals(mdcEquipmentMonitor.getEquipmentStatus())) { |
| | | mdcEquipmentMonitor.setOporationDict(dictModel.getLabel()); |
| | | mdcEquipmentMonitor.setOporation(88); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | * 设备监控 - 设备详细信息 |
| | | */ |
| | | @Override |
| | | public MdcEquipmentDto mdcEquipmentDetailedInfo(String id) { |
| | | MdcEquipmentDto mdcEquipmentDto = new MdcEquipmentDto(); |
| | | MdcEquipment mdcEquipment = this.baseMapper.selectById(id); |
| | | //封装基础信息 |
| | | mdcEquipmentDto.setSystemVersion(mdcEquipment.getSystemVersion()); |
| | | mdcEquipmentDto.setSystemType(mdcEquipment.getControlSystem()); |
| | | mdcEquipmentDto.setDevicePower(mdcEquipment.getDevicePower()); |
| | | mdcEquipmentDto.setDeviceType(mdcEquipment.getDriveType()); |
| | | mdcEquipmentDto.setRemark(mdcEquipment.getRemark()); |
| | | //设备编号 |
| | | mdcEquipmentDto.setEquipmentID(mdcEquipment.getEquipmentId()); |
| | | mdcEquipmentDto.setEquipmentName(mdcEquipment.getEquipmentName()); |
| | | mdcEquipmentDto.setEquipmentIP(mdcEquipment.getEquipmentIp()); |
| | | //设备型号 |
| | | mdcEquipmentDto.setEquipmentModel(mdcEquipment.getEquipmentModel()); |
| | | mdcEquipmentDto.setDriveType(mdcEquipment.getDriveType()); |
| | | mdcEquipmentDto.setDataPort(mdcEquipment.getDataPort()); |
| | | mdcEquipmentDto.setDataFlag(Integer.parseInt(CommonConstant.STATUS_1)); |
| | | ControlSystem controlSystem = controlSystemService.getByDriveType(mdcEquipmentDto.getDriveType()); |
| | | public Map<String, Object> mdcEquipmentDetailedInfo(String id) { |
| | | Map<String, Object> result = new HashMap<>(); |
| | | MdcEquipmentDetailedDto mdcEquipmentDetailedDto = this.baseMapper.findById(id); |
| | | result.put("equipment", mdcEquipmentDetailedDto); |
| | | // 查询设备状态 |
| | | EquipmentLog equipmentLog = equipmentLogService.selectEquipmentOporation(mdcEquipment.getEquipmentId()); |
| | | EquipmentLog equipmentLog = equipmentLogService.selectEquipmentOporation(mdcEquipmentDetailedDto.getEquipmentId()); |
| | | if (equipmentLog == null) { |
| | | return mdcEquipmentDto; |
| | | return result; |
| | | } |
| | | Integer oporation = equipmentLog.getOporation(); |
| | | |
| | | if (controlSystem != null) { |
| | | //获取工作数据并初始化 |
| | | String saveTableName = mdcEquipment.getSaveTableName(); |
| | | MdcEquipmentDto dto = equipmentWorkLineService.getMacingDataList(saveTableName); |
| | | if (dto != null) { |
| | | mdcEquipmentDto.setCollectTime(dto.getCollectTime()); |
| | | mdcEquipmentDto.setSpindlespeed(dto.getSpindlespeed()); |
| | | mdcEquipmentDto.setSpindleload(dto.getSpindleload()); |
| | | mdcEquipmentDto.setSpindlebeilv(dto.getSpindlebeilv()); |
| | | mdcEquipmentDto.setFeedrate(dto.getFeedrate()); |
| | | mdcEquipmentDto.setFeedbeilv(dto.getFeedbeilv()); |
| | | mdcEquipmentDto.setProgramnumber(dto.getProgramnumber()); |
| | | mdcEquipmentDto.setSequencenumber(dto.getSequencenumber()); |
| | | mdcEquipmentDto.setExecutingcode(dto.getExecutingcode()); |
| | | mdcEquipmentDto.setProductName(dto.getProductName()); |
| | | if ("LSV2".equals(mdcEquipment.getDriveType())) { |
| | | mdcEquipmentDto.setSpindlebeilv(dto.getSFeed()); |
| | | mdcEquipmentDto.setFeedbeilv(dto.getFFeed()); |
| | | mdcEquipmentDto.setRapidfeed(dto.getRapidfeed()); |
| | | mdcEquipmentDto.setNCVersion(dto.getNCVersion()); |
| | | mdcEquipmentDto.setTNCVersion(dto.getTNCVersion()); |
| | | mdcEquipmentDto.setOPTVersion(dto.getOPTVersion()); |
| | | mdcEquipmentDto.setPLCVersion(dto.getPLCVersion()); |
| | | } |
| | | |
| | | //获取 MDC 驱动对应的展示参数 并根据key 拼装从 workData 查询的数据 |
| | | List<MdcDriveTypeParamConfig> mdcDriveTypeParamList = mdcDriveTypeParamConfigService.getShowDriveParam(mdcEquipment.getDriveType()); |
| | | if (mdcDriveTypeParamList != null && !mdcDriveTypeParamList.isEmpty()) { |
| | | for (MdcDriveTypeParamConfig mdcDriveTypeParamConfig : mdcDriveTypeParamList) { |
| | | String englishName = mdcDriveTypeParamConfig.getEnglishName(); |
| | | JSONObject jsonObject = (JSONObject) JSONObject.toJSON(dto); |
| | | Object result = jsonObject.get(englishName); |
| | | //获取工作数据并初始化 |
| | | String saveTableName = mdcEquipmentDetailedDto.getSaveTableName(); |
| | | Map<String, Object> mapData = equipmentWorkLineService.getDataList(saveTableName); |
| | | if (mapData != null) { |
| | | // Map<String, Object> runData = new LinkedHashMap<>(); |
| | | List<Map<String, Object>> runData = new ArrayList<>(); |
| | | //获取 MDC 驱动对应的展示参数 并根据key 拼装从 workData 查询的数据 |
| | | List<MdcDriveTypeParamConfig> mdcDriveTypeParamList = mdcDriveTypeParamConfigService.getShowDriveParam(mdcEquipmentDetailedDto.getDriveType()); |
| | | if (mdcDriveTypeParamList != null && !mdcDriveTypeParamList.isEmpty()) { |
| | | for (MdcDriveTypeParamConfig mdcDriveTypeParamConfig : mdcDriveTypeParamList) { |
| | | Map<String, Object> map = new LinkedHashMap<>(); |
| | | String englishName = mdcDriveTypeParamConfig.getEnglishName(); |
| | | String chineseName = mdcDriveTypeParamConfig.getChineseName(); |
| | | map.put("key", chineseName); |
| | | if (mapData.containsKey(englishName)) { |
| | | Object object = mapData.get(englishName); |
| | | String value = ""; |
| | | if ("CollectTime".equals(englishName)) { |
| | | Date date = result == null ? null : (Date) result; |
| | | Date date = object == null ? null : (Date) object; |
| | | value = DateUtils.format(date, DateUtils.STR_DATE_TIME_SMALL); |
| | | } else if ("ZUOLAN".equals(mdcEquipment.getDriveType()) && "AI01".equals(englishName) && oporation == 3) { |
| | | } else if ("ZUOLAN".equals(mdcEquipmentDetailedDto.getDriveType()) && "AI01".equals(englishName) && oporation == 3) { |
| | | // ZUOLAN设备电流字段AI01 |
| | | value = BigDecimal.valueOf(Math.random() * 15 + 0).setScale(1, RoundingMode.HALF_UP).toString(); |
| | | } else if ("ZUOLAN".equals(mdcEquipment.getDriveType()) && "spindlespeed".equals(englishName) && oporation == 3) { |
| | | } else if ("ZUOLAN".equals(mdcEquipmentDetailedDto.getDriveType()) && "spindlespeed".equals(englishName) && oporation == 3) { |
| | | // ZUOLAN设备主轴转速字段spindlespeed |
| | | value = String.valueOf(((new Random().nextInt(35)) + 1) * 100); |
| | | } else if ("ZUOLAN".equals(mdcEquipment.getDriveType()) && "spindleload".equals(englishName) && oporation == 3) { |
| | | } else if ("ZUOLAN".equals(mdcEquipmentDetailedDto.getDriveType()) && "spindleload".equals(englishName) && oporation == 3) { |
| | | // ZUOLAN设备主轴负荷字段spindleload |
| | | value = String.valueOf(Integer.valueOf(new Random().nextInt(21))); |
| | | } else if ("ZUOLAN".equals(mdcEquipment.getDriveType()) && "spindlebeilv".equals(englishName) && oporation == 3) { |
| | | } else if ("ZUOLAN".equals(mdcEquipmentDetailedDto.getDriveType()) && "spindlebeilv".equals(englishName) && oporation == 3) { |
| | | // ZUOLAN设备主轴倍率字段spindlebeilv |
| | | value = String.valueOf((new Random().nextInt(13)) * 10); |
| | | } else if ("ZUOLAN".equals(mdcEquipment.getDriveType()) && "feedbeilv".equals(englishName) && oporation == 3) { |
| | | } else if ("ZUOLAN".equals(mdcEquipmentDetailedDto.getDriveType()) && "feedbeilv".equals(englishName) && oporation == 3) { |
| | | // ZUOLAN设备进给倍率字段feedbeilv |
| | | value = String.valueOf((new Random().nextInt(13)) * 10); |
| | | } else if ("spindle_current".equals(englishName)) { |
| | | // 其他设备电流字段 |
| | | String devicePower = mdcEquipment.getDevicePower(); |
| | | Object spindleload = jsonObject.get("spindleload"); |
| | | String devicePower = mdcEquipmentDetailedDto.getDevicePower(); |
| | | Object spindleload = mapData.get("spindleload"); |
| | | BigDecimal load = spindleload == null ? BigDecimal.ZERO : new BigDecimal(spindleload.toString()); |
| | | if (StringUtils.isNotEmpty(devicePower) && oporation == 3) { |
| | | value = new BigDecimal(devicePower).divide(new BigDecimal("380"), 2, BigDecimal.ROUND_HALF_UP).add(load).toString(); |
| | |
| | | } |
| | | } else if ("torque".equals(englishName)) { |
| | | // 扭矩字段 |
| | | MdcTorqueConfig mdcTorqueConfig = mdcTorqueConfigMapper.findLast(mdcEquipment.getEquipmentId()); |
| | | MdcTorqueConfig mdcTorqueConfig = mdcTorqueConfigMapper.findLast(mdcEquipmentDetailedDto.getEquipmentId()); |
| | | if (mdcTorqueConfig != null) { |
| | | value = String.valueOf(mdcTorqueConfig.getTorqueValue()); |
| | | } else { |
| | |
| | | } |
| | | } else if ("alarmContent".equals(englishName)) { |
| | | if (oporation == 22) { |
| | | List<MdcAlarmInfo> mdcAlarmInfo = mdcAlarmInfoService.list(new LambdaQueryWrapper<MdcAlarmInfo>().eq(MdcAlarmInfo::getDriveType, mdcEquipment.getDriveType()).eq(MdcAlarmInfo::getAlarmCode, equipmentLog.getAlarm()).eq(MdcAlarmInfo::getIsUse, 0)); |
| | | List<MdcAlarmInfo> mdcAlarmInfo = mdcAlarmInfoService.list(new LambdaQueryWrapper<MdcAlarmInfo>().eq(MdcAlarmInfo::getDriveType, mdcEquipmentDetailedDto.getDriveType()).eq(MdcAlarmInfo::getAlarmCode, equipmentLog.getAlarm()).eq(MdcAlarmInfo::getIsUse, 0)); |
| | | if (mdcAlarmInfo != null && !mdcAlarmInfo.isEmpty()) { |
| | | value = mdcAlarmInfo.get(0).getAlarmContent(); |
| | | } |
| | |
| | | value = "无"; |
| | | } |
| | | } else { |
| | | value = result == null ? null : result.toString(); |
| | | value = object == null ? "" : object.toString(); |
| | | } |
| | | mdcDriveTypeParamConfig.setValue(value); |
| | | map.put("value", value); |
| | | runData.add(map); |
| | | if ("spindlebeilv".equals(englishName) && !"".equals(value)) { |
| | | result.put("spindlebeilv", value); |
| | | } |
| | | if ("feedbeilv".equals(englishName) && !"".equals(value)) { |
| | | result.put("feedbeilv", value); |
| | | } |
| | | if ("spindleload".equals(englishName) && !"".equals(value)) { |
| | | result.put("spindleload", value); |
| | | } |
| | | if ("rapidfeed".equals(englishName) && !"".equals(value)) { |
| | | result.put("rapidfeed", value); |
| | | } |
| | | } |
| | | mdcEquipmentDto.setMdcDriveTypeParamConfigList(mdcDriveTypeParamList); |
| | | } |
| | | EquipmentBaseInfo equipmentBaseInfo = equipmentBaseInfoService.getByEquipmentId(mdcEquipment.getEquipmentId()); |
| | | if (equipmentBaseInfo != null) { |
| | | mdcEquipmentDto.setMaxAxis(equipmentBaseInfo.getMaxAxis()); |
| | | mdcEquipmentDto.setValidAxis(equipmentBaseInfo.getValidAxis()); |
| | | } |
| | | } |
| | | result.put("runData", runData); |
| | | |
| | | // 查询坐标信息 |
| | | if (!"ZUOLAN".equals(mdcEquipmentDetailedDto.getDriveType()) && !"CurrentState".equals(mdcEquipmentDetailedDto.getDriveType())) { |
| | | EquipmentXYZ equipmentXYZ = equipmentXYZService.getByEquipmentId(mdcEquipmentDetailedDto.getEquipmentId()); |
| | | if (equipmentXYZ != null) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("xmachine", equipmentXYZ.getXMachine()); |
| | | map.put("ymachine", equipmentXYZ.getYMachine()); |
| | | map.put("zmachine", equipmentXYZ.getZMachine()); |
| | | map.put("amachine", equipmentXYZ.getAMachine()); |
| | | map.put("bmachine", equipmentXYZ.getBMachine()); |
| | | |
| | | map.put("xabsolute", equipmentXYZ.getXAbsolute()); |
| | | map.put("yabsolute", equipmentXYZ.getYAbsolute()); |
| | | map.put("zabsolute", equipmentXYZ.getZAbsolute()); |
| | | map.put("aabsolute", equipmentXYZ.getAAbsolute()); |
| | | map.put("babsolute", equipmentXYZ.getBAbsolute()); |
| | | result.put("xyzList", map); |
| | | } |
| | | } |
| | | |
| | | } |
| | | return mdcEquipmentDto; |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | if (StringUtils.isNotEmpty(mdcEquipment.getEquipmentName())) { |
| | | queryWrapper.like(MdcEquipment::getEquipmentName, mdcEquipment.getEquipmentName()); |
| | | } |
| | | if (mdcEquipment.getEquipmentStatus() != null) { |
| | | queryWrapper.eq(MdcEquipment::getEquipmentStatus, mdcEquipment.getEquipmentStatus()); |
| | | } |
| | | if (!allEquipments.isEmpty()) { |
| | | queryWrapper.in(MdcEquipment::getEquipmentId, allEquipments); |
| | |
| | | |
| | | /** |
| | | * 查询单表数据 |
| | | * |
| | | * @param tableName |
| | | * @return |
| | | */ |
| | |
| | | return list.stream().map(MdcEquipment::getEquipmentId).collect(Collectors.toList()); |
| | | } |
| | | |
| | | /** |
| | | * 根据产线id获取设备状态列表 |
| | | * |
| | | * @param productionId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<MdcEquipmentMonitor> getEquipmentMonitorList(String productionId) { |
| | | return this.baseMapper.getEquipmentMonitorList(productionId); |
| | | } |
| | | |
| | | } |