From 078e94627c72eb6cada22a6e5478b003cff57f4c Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期二, 31 十二月 2024 11:11:24 +0800 Subject: [PATCH] update --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java | 217 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 186 insertions(+), 31 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java index 1d529cf..30a29d3 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java @@ -3,14 +3,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; +import org.jeecg.common.system.vo.DictModel; import org.jeecg.modules.mdc.dto.EquipmentMachingDto; +import org.jeecg.modules.mdc.dto.MdcAlarmListDto; import org.jeecg.modules.mdc.dto.MdcEquipmentRunningSectionDto; import org.jeecg.modules.mdc.entity.*; import org.jeecg.modules.mdc.mapper.MdcEquipmentRunningSectionMapper; 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.MdcAlarmAnalyzeQueryVo; import org.jeecg.modules.mdc.vo.MdcEquipmentRunningSectionVo; +import org.jeecg.modules.system.service.ISysDictService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -39,6 +43,15 @@ @Resource private IEquipmentWorkLineService equipmentWorkLineService; + @Resource + private ISysDictService sysDictService; + + @Resource + private IEquipmentRunningTraceService equipmentRunningTraceService; + + @Resource + private IMdcAlarmInfoService mdcAlarmInfoService; + @Override public List<MdcEquipmentRunningSectionDto> logList(MdcEquipmentRunningSectionVo equipmentRunningSectionVo) { @@ -50,25 +63,24 @@ List<MdcEquipmentRunningSection> running = loadEquipmentRunningTrace(equipmentRunningSectionVo.getEquipmentId(), equipmentRunningSectionVo.getCollectTimeStr()); //鏌ヨ鎶ヨ鏁版嵁 List<MdcEquipmentRunningSection> errs = loadEquipmentErrorTrace(equipmentRunningSectionVo.getEquipmentId(), equipmentRunningSectionVo.getCollectTimeStr()); + Equipment equip = equipmentService.getOne(new LambdaQueryWrapper<Equipment>().eq(Equipment::getEquipmentid, equipmentRunningSectionVo.getEquipmentId())); if (!running.isEmpty()) { MdcEquipmentRunningSectionDto dto; + String tableName = ""; + Boolean isTableExist = false; + if (equip != null) { + if (StringUtils.isNotBlank(equip.getDrivetype())) { + tableName = equip.getDrivetype() + "_" + equip.getEquipmentid(); + isTableExist = equipmentWorkLineService.isTableExist(tableName); + } + } for (MdcEquipmentRunningSection entity : running) { dto = new MdcEquipmentRunningSectionDto(); BeanUtils.copyProperties(entity, dto); - if (entity.getStatus() == 3 && StringUtils.isBlank(entity.getSequenceNumber())) { - Equipment equip = equipmentService.getOne(new LambdaQueryWrapper<Equipment>().eq(Equipment::getEquipmentid, entity.getEquipmentId())); - if (equip != null) { - if (StringUtils.isNotBlank(equip.getDrivetype())) { - try { - List<EquipmentMachingDto> esList = equipmentWorkLineService.getEquipmentSequencenumber(equip.getDrivetype(), equip.getEquipmentid(), entity.getStartTime(), entity.getEndTime()); - if (esList != null && esList.size() > 1) { - dto.setSequenceNumber(esList.get(0).getSequencenumber()); - } - } catch (Exception e) { - continue; - } - - } + if (entity.getStatus() == 3 && StringUtils.isBlank(entity.getSequenceNumber()) && isTableExist && !"ZUOLAN".equals(equip.getDrivetype())) { + List<EquipmentMachingDto> esList = equipmentWorkLineService.getEquipmentSequencenumber(tableName, entity.getStartTime(), entity.getEndTime()); + if (esList != null && esList.size() > 1) { + dto.setSequenceNumber(esList.get(0).getSequencenumber()); } } dtos.add(dto); @@ -79,21 +91,56 @@ for (MdcEquipmentRunningSection entity : errs) { dto = new MdcEquipmentRunningSectionDto(); BeanUtils.copyProperties(entity, dto); - Set<TmpEquipmentAlarm> set = entity.getTmpEquipmentAlarmSet(); - if (entity.getStatus() == 22 && set != null && !set.isEmpty()) { - Iterator<TmpEquipmentAlarm> iterator = entity.getTmpEquipmentAlarmSet().iterator(); - //鑾峰彇鎶ヨ缂栧彿鐩稿悓鐨勬姤璀︿俊鎭� - while (iterator.hasNext()) { - TmpEquipmentAlarm next = iterator.next(); - if (StringUtils.isNotBlank(next.getAlarmNo()) && next.getAlarmNo().equals(entity.getStatus())) { - dto.setAlarmContent(next.getAlarmContent()); + if (entity.getStatus() == 22) { + if (equip != null) { + List<MdcAlarmInfo> mdcAlarmInfo = mdcAlarmInfoService.list(new LambdaQueryWrapper<MdcAlarmInfo>().eq(MdcAlarmInfo::getDriveType, equip.getDrivetype()).eq(MdcAlarmInfo::getAlarmCode, entity.getAlarm()).eq(MdcAlarmInfo::getIsUse, 0)); + if (mdcAlarmInfo != null && !mdcAlarmInfo.isEmpty()) { + dto.setAlarmContent(mdcAlarmInfo.get(0).getAlarmContent()); } } } +// Set<TmpEquipmentAlarm> set = entity.getTmpEquipmentAlarmSet(); +// if (entity.getStatus() == 22 && set != null && !set.isEmpty()) { +// Iterator<TmpEquipmentAlarm> iterator = entity.getTmpEquipmentAlarmSet().iterator(); +// //鑾峰彇鎶ヨ缂栧彿鐩稿悓鐨勬姤璀︿俊鎭� +// while (iterator.hasNext()) { +// TmpEquipmentAlarm next = iterator.next(); +// if (StringUtils.isNotBlank(next.getAlarmNo()) && next.getAlarmNo().equals(entity.getStatus())) { +// dto.setAlarmContent(next.getAlarmContent()); +// } +// } +// } dtos.add(dto); } } - return dtos; + + List<MdcEquipmentRunningSectionDto> result = new ArrayList<>(); + //鍚堝苟鐩稿悓鐘舵�佹暟鎹� + for (int i = 0; i < dtos.size() - 1; i++) { + MdcEquipmentRunningSectionDto mdcEquipmentRunningSectionDto = dtos.get(i); + MdcEquipmentRunningSectionDto next = dtos.get(i + 1); + if (mdcEquipmentRunningSectionDto.getStatus().equals(next.getStatus()) && mdcEquipmentRunningSectionDto.getEndTime().equals(next.getStartTime())) { + MdcEquipmentRunningSectionDto equipmentRunningSectionDto = new MdcEquipmentRunningSectionDto(); + BeanUtils.copyProperties(mdcEquipmentRunningSectionDto, equipmentRunningSectionDto); + equipmentRunningSectionDto.setEndTime(next.getEndTime()); + equipmentRunningSectionDto.setDuration(mdcEquipmentRunningSectionDto.getDuration() + next.getDuration()); + result.add(equipmentRunningSectionDto); + i++; + } else { + result.add(mdcEquipmentRunningSectionDto); + } + } + if (dtos.size() > 1) { + MdcEquipmentRunningSectionDto a = dtos.get(dtos.size() - 2); + MdcEquipmentRunningSectionDto b = dtos.get(dtos.size() - 1); + if (!a.getStatus().equals(b.getStatus()) && a.getEndTime().equals(b.getStartTime())) { + result.add(dtos.get(dtos.size() - 1)); + } + } else if (dtos.size() == 1){ + result.addAll(dtos); + } + + return result; } /** @@ -464,7 +511,7 @@ * 璁惧杩愯鐘舵�佺偣鏃堕棿杞负娈垫椂闂� */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void runningAllEquipmentTraceProcess() { //鑾峰彇鎵�鏈夎澶� List<Equipment> equipmentList = equipmentService.list(); @@ -472,9 +519,13 @@ //鑾峰彇running杩愯鐨勬棩蹇楄褰� List<MdcEquipmentRunningSection> list = this.equipmentRunningTracesLog(equipment.getEquipmentid()); if (list != null && !list.isEmpty()) { - //List<MdcEquipmentRunningSection> equipList = addSequenceNumber(list); //娣诲姞绋嬪簭鍙� - this.ergodicTrim(list); - super.saveBatch(list); + try { + List<MdcEquipmentRunningSection> equipList = addSequenceNumber(list); //娣诲姞绋嬪簭鍙� + this.ergodicTrim(equipList); + super.saveBatch(equipList); + } catch (Exception e) { + log.error("娣诲姞绋嬪簭鍙峰嚭鐜板紓甯�:", e); + } } //鑾峰彇鎶ヨ鐨勬棩蹇楄褰� List<MdcEquipmentRunningSection> errorList = this.equipmentRunningTracesErrorLog(equipment.getEquipmentid()); @@ -483,7 +534,81 @@ //save errorList super.saveBatch(errorList); } + List<DictModel> dictList = sysDictService.queryDictItemsByCode("data_synchronization_flag"); + if (dictList != null && !dictList.isEmpty() && "0".equals(dictList.get(0).getValue())) { + this.dataSynchronizationHandler(list, errorList); + } } + } + + /** + * 璁惧杩愯鏃ュ織娣诲姞绋嬪簭鍙� + * + * @param list + * @return + */ + public List<MdcEquipmentRunningSection> addSequenceNumber(List<MdcEquipmentRunningSection> list) { + if (list == null || list.size() < 1) { + return Collections.emptyList(); + } + Equipment equip = null; + for (MdcEquipmentRunningSection e : list) { + if (e.getStatus() == 3) { + equip = equipmentService.getOne(new LambdaQueryWrapper<Equipment>().eq(Equipment::getEquipmentid, e.getEquipmentId())); + if (StringUtils.isNotBlank(equip.getDrivetype()) && equip.getDrivetype().startsWith("FANUC")) { + List<EquipmentMachingDto> esList = equipmentWorkLineService.getEquipProgramNum(equip.getDrivetype(), equip.getEquipmentid(), + e.getStartTime(), e.getEndTime()); + if (esList != null && esList.size() > 1) { + e.setSequenceNumber(esList.get(0).getProgramnumber()); + } + } else if (StringUtils.isNotBlank(equip.getDrivetype()) && equip.getDrivetype().startsWith("SIEMENS")) { + List<EquipmentMachingDto> esList = equipmentWorkLineService.getEquipmentSequencenumber(equip.getDrivetype() + "_" + equip.getEquipmentid(), e.getStartTime(), e.getEndTime()); + if (esList != null && esList.size() > 1) { + e.setSequenceNumber(esList.get(0).getSequencenumber()); + } + } + } + } + return list; + } + + /** + * 鏁版嵁鍚屾澶勭悊 + * @param list + * @param errorList + */ + private void dataSynchronizationHandler(List<MdcEquipmentRunningSection> list, List<MdcEquipmentRunningSection> errorList) { + // 鏁版嵁杞崲 + List<EquipmentRunningTrace> equipList = new ArrayList<>(); + if (list != null && !list.isEmpty()) { + list.forEach(item -> { + EquipmentRunningTrace equipmentRunningSection = new EquipmentRunningTrace(); + equipmentRunningSection.setEquipment(item.getEquipmentId()); + equipmentRunningSection.setAlarm(item.getAlarm()); + equipmentRunningSection.setCreateTime(item.getCreateTime()); + equipmentRunningSection.setDuration(item.getDuration()); + equipmentRunningSection.setEndTime(item.getEndTime()); + equipmentRunningSection.setStartTime(item.getStartTime()); + equipmentRunningSection.setStatus(item.getStatus()); + equipmentRunningSection.setSequencenumber(item.getSequenceNumber()); + equipList.add(equipmentRunningSection); + }); + } + if (errorList != null && !errorList.isEmpty()) { + errorList.forEach(item -> { + EquipmentRunningTrace equipmentRunningSection = new EquipmentRunningTrace(); + equipmentRunningSection.setEquipment(item.getEquipmentId()); + equipmentRunningSection.setAlarm(item.getAlarm()); + equipmentRunningSection.setCreateTime(item.getCreateTime()); + equipmentRunningSection.setDuration(item.getDuration()); + equipmentRunningSection.setEndTime(item.getEndTime()); + equipmentRunningSection.setStartTime(item.getStartTime()); + equipmentRunningSection.setStatus(item.getStatus()); + equipmentRunningSection.setSequencenumber(item.getSequenceNumber()); + equipList.add(equipmentRunningSection); + }); + } + equipmentRunningTraceService.saveBatch(equipList); } /** @@ -573,7 +698,7 @@ //鏁村悎鍔犲伐鍜屽緟鏈烘椂闂村皬浜巒绉掔殑鏁版嵁 erts = mergeLessMinTimeRecords(erts, null); List<MdcEquipmentRunningSection> running = mergeRunningTrace(erts); - if (running != null || !running.isEmpty()) { + if (running != null && !running.isEmpty()) { this.ergodicTrim(running); } return running; @@ -587,6 +712,36 @@ @Override public List<MdcEquipmentRunningSection> listEquipmentRunningSectionError(String equipmentid, long start, long end) { return this.baseMapper.listEquipmentRunningSectionError(equipmentid, start, end); + } + + @Override + public List<MdcEquipmentRunningSection> findAlarmList(MdcAlarmAnalyzeQueryVo vo) { + return this.baseMapper.findAlarmList(vo); + } + + @Override + public Integer findAlarmCount(String equipmentId, String startDate, String endDate, String alarmCode) { + return this.baseMapper.findAlarmCount(equipmentId, startDate, endDate, alarmCode); + } + + @Override + public Integer findAlarmCountByDate(String startDate, String endDate, MdcAlarmAnalyzeQueryVo vo) { + return this.baseMapper.findAlarmCountByDate(startDate, endDate, vo); + } + + @Override + public List<MdcEquipmentRunningSection> selectRunningData(String equipmentId, Date startDate, Date endDate) { + return this.baseMapper.selectRunningData(equipmentId, startDate, endDate); + } + + @Override + public List<MdcAlarmListDto> selectAlarmList(MdcAlarmAnalyzeQueryVo mdcAlarmAnalyzeQueryVo, String startDate, String endDate) { + return this.baseMapper.selectAlarmList(mdcAlarmAnalyzeQueryVo, startDate, endDate); + } + + @Override + public List<Integer> getDataList(String equipmentId, Date date) { + return this.baseMapper.getDataList(equipmentId, date); } private Map<String, List<MdcEquipmentRunningSectionDto>> logCharts(MdcEquipmentRunningSectionVo equipmentRunningSectionVo, String date) { @@ -813,9 +968,9 @@ ert.setStartTime(logList.get(i).getCollectTime()); ert.setEndTime(logList.get(i + 1).getCollectTime()); ert.setDuration(DateUtils.differentSecond(ert.getStartTime(), ert.getEndTime())); - if (ert.getDuration() > 0) { - erts.add(ert); - } + + erts.add(ert); + } else { long count = differentSecond / 86400; if (count % 86400 > 0) { -- Gitblit v1.9.3