| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 查询主轴运行时间 |
| | | * |
| | | * @param equipmentId |
| | | * @param validDate |
| | | * @return |
| | | */ |
| | | @Override |
| | | public BigDecimal findSpindleRunDuration(String equipmentId, String validDate) { |
| | | validDate = validDate.replaceAll("-", ""); |
| | | BigDecimal duration = this.baseMapper.findSpindleRunDuration(equipmentId, validDate); |
| | | if (duration != null && duration.compareTo(BigDecimal.ZERO) != 0) { |
| | | return duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP); |
| | | } else { |
| | | return new BigDecimal("0"); |
| | | } |
| | | } |
| | | |
| | | @Transactional(readOnly = true) |
| | | List<MdcEquipmentStatisticalShiftInfo> equipmentShiftStatisticalProcess(Equipment equipment, String dateTime) { |
| | | Date initDate = null; |
| | |
| | | } |
| | | //查询班制班次信息 |
| | | Map<String, List<MdcDeviceCalendarVo>> listMap = this.mdcDeviceCalendarMap(equipment.getEquipmentid(), stringDates); |
| | | if (listMap.isEmpty()) { |
| | | if (listMap == null || listMap.isEmpty()) { |
| | | listMap = new HashMap<>(); |
| | | } |
| | | List<MdcEquipmentStatisticalShiftInfo> resultList = new ArrayList<>(); |
| | |
| | | equipmentStatisticalShiftInfo.setCloseLong(equipmentStatisticalShiftInfo.getCloseLong().add(shiftInfo.getCloseLong())); |
| | | equipmentStatisticalShiftInfo.setOpenLong(equipmentStatisticalShiftInfo.getOpenLong().add(shiftInfo.getOpenLong())); |
| | | equipmentStatisticalShiftInfo.setErrorLong(equipmentStatisticalShiftInfo.getErrorLong().add(shiftInfo.getErrorLong())); |
| | | equipmentStatisticalShiftInfo.setTotalLong(equipmentStatisticalShiftInfo.getTotalLong().add(shiftInfo.getTotalLong())); |
| | | } |
| | | resultList.add(equipmentStatisticalShiftInfo); |
| | | } |
| | |
| | | MdcEquipmentStatisticalShiftInfo shiftInfo = mdcRateEquipment(equipmentid, dates.getStartDate(), dates.getEndDate()); |
| | | return shiftInfo; |
| | | } else { |
| | | if (repairList.size() == 1 ) { |
| | | if (repairList.size() == 1) { |
| | | long start = repairList.get(0).getStartTime().getTime(); |
| | | long end = repairList.get(0).getEndTime().getTime(); |
| | | if ( start > dates.getStart() && end < dates.getEnd() ) { |
| | | if (start > dates.getStart() && end < dates.getEnd()) { |
| | | MdcDateVo d1 = new MdcDateVo(); |
| | | d1.setStartTime(dates.getStartDate()); |
| | | d1.setEndTime(repairList.get(0).getStartTime()); |
| | |
| | | d2.setStartTime(repairList.get(0).getEndTime()); |
| | | d2.setEndTime(dates.getEndDate()); |
| | | dateList.add(d2); |
| | | } else if (start == dates.getStart() && end < dates.getEnd()){ |
| | | } else if (start == dates.getStart() && end < dates.getEnd()) { |
| | | MdcDateVo d2 = new MdcDateVo(); |
| | | d2.setStartTime(repairList.get(0).getEndTime()); |
| | | d2.setEndTime(dates.getEndDate()); |
| | |
| | | } |
| | | } else { |
| | | long s = dates.getStartDate().getTime(); |
| | | for (int i = 0 ; i < repairList.size(); i ++) { |
| | | for (int i = 0; i < repairList.size(); i++) { |
| | | long start = repairList.get(i).getStartTime().getTime(); |
| | | long end = repairList.get(i).getEndTime().getTime(); |
| | | |
| | | if (start > s ) { |
| | | if (start > s) { |
| | | MdcDateVo d = new MdcDateVo(); |
| | | d.setStartTime(dates.getStartDate()); |
| | | d.setEndTime(repairList.get(i).getStartTime()); |
| | |
| | | } else if (start == s) { |
| | | dates.setStartDate(repairList.get(i).getEndTime()); |
| | | } |
| | | if(i == repairList.size() -1 ) { |
| | | if(dates.getStartDate().getTime() >= end) { |
| | | if (i == repairList.size() - 1) { |
| | | if (dates.getStartDate().getTime() >= end) { |
| | | MdcDateVo d = new MdcDateVo(); |
| | | d.setStartTime(repairList.get(i).getEndTime()); |
| | | d.setEndTime(dates.getEndDate()); |
| | |
| | | if (runningSections == null || runningSections.isEmpty()) { |
| | | runningSections = mdcEquipmentRunningSectionService.listRunningSectionFromLog(equipmentid, startDate.getTime(), endDate.getTime()); |
| | | } |
| | | if(runningSections == null || runningSections.isEmpty()) { |
| | | if (runningSections == null || runningSections.isEmpty()) { |
| | | runningSections = new ArrayList<>(); |
| | | } |
| | | List<MdcEquipmentRunningSection> sectionErrors = mdcEquipmentRunningSectionService.listEquipmentRunningSectionError(equipmentid, startDate.getTime(), endDate.getTime()); |
| | |
| | | |
| | | /*故障时间 errs => 关机数据 + 报警数据 */ |
| | | BigDecimal faultLong = new BigDecimal("0"); |
| | | faultLong = faultLongInfo(errs); |
| | | faultLong = faultLongInfo(errs); |
| | | |
| | | //报警数据 |
| | | List<MdcEquipmentRunningSection> alarms = errs.stream().filter(section -> section.getStatus() == 22).collect(Collectors.toList()); |
| | |
| | | //TODO |
| | | return null; |
| | | } |
| | | Long startMdc = mdcDate.getStartTime().getTime(); |
| | | Long endMdc = mdcDate.getEndTime().getTime(); |
| | | Long startMdc = mdcDate.getStartTime().getTime(); |
| | | Long endMdc = mdcDate.getEndTime().getTime(); |
| | | if (sRun != null && !sRun.isEmpty()) { |
| | | for (int i = 0 ; i < sRun.size() ; i ++) { |
| | | for (int i = 0; i < sRun.size(); i++) { |
| | | Long start = sRun.get(i).getStartTime().getTime(); |
| | | Long end = sRun.get(i).getEndTime().getTime(); |
| | | if (startMdc <= start ) { |
| | | sRun.get(i).setStartTime( sRun.get(i).getStartTime()); |
| | | Long end = sRun.get(i).getEndTime().getTime(); |
| | | if (startMdc <= start) { |
| | | sRun.get(i).setStartTime(sRun.get(i).getStartTime()); |
| | | } else { |
| | | sRun.get(i).setStartTime(mdcDate.getStartTime()); |
| | | } |
| | | if (endMdc >= end) { |
| | | sRun.get(i).setEndTime( sRun.get(i).getEndTime()); |
| | | sRun.get(i).setEndTime(sRun.get(i).getEndTime()); |
| | | } else { |
| | | sRun.get(i).setEndTime(mdcDate.getEndTime()); |
| | | } |
| | | Long sen = DateUtils.differentSecond( sRun.get(i).getStartTime(), |
| | | Long sen = DateUtils.differentSecond(sRun.get(i).getStartTime(), |
| | | sRun.get(i).getEndTime()); |
| | | if (sen <= 0) { |
| | | sRun.remove(i); |
| | | i--; |
| | | } else { |
| | | sRun.get(i).setDuration(sen); |
| | | sRun.get(i).setStartLong( sRun.get(i).getStartTime().getTime()); |
| | | sRun.get(i).setEndLong( sRun.get(i).getEndTime().getTime()); |
| | | sRun.get(i).setStartLong(sRun.get(i).getStartTime().getTime()); |
| | | sRun.get(i).setEndLong(sRun.get(i).getEndTime().getTime()); |
| | | } |
| | | } |
| | | } |
| | | //部分数据是维修 1、运行状态下报警情况 |
| | | List<MdcEquipmentRunningSection> faultRun = new ArrayList<>(); |
| | | //制度时间段内报警数据 |
| | | if (errors != null && !errors.isEmpty() ) { |
| | | for (int i = 0 ; i < errors.size() ; i ++) { |
| | | if (errors != null && !errors.isEmpty()) { |
| | | for (int i = 0; i < errors.size(); i++) { |
| | | Long start = errors.get(i).getStartTime().getTime(); |
| | | Long end = errors.get(i).getEndTime().getTime(); |
| | | if (startMdc <= start ) { |
| | | errors.get(i).setStartTime( errors.get(i).getStartTime()); |
| | | Long end = errors.get(i).getEndTime().getTime(); |
| | | if (startMdc <= start) { |
| | | errors.get(i).setStartTime(errors.get(i).getStartTime()); |
| | | } else { |
| | | errors.get(i).setStartTime(mdcDate.getStartTime()); |
| | | } |
| | | if (endMdc >= end) { |
| | | errors.get(i).setEndTime( errors.get(i).getEndTime()); |
| | | errors.get(i).setEndTime(errors.get(i).getEndTime()); |
| | | } else { |
| | | errors.get(i).setEndTime(mdcDate.getEndTime()); |
| | | } |
| | | Long sen = DateUtils.differentSecond( errors.get(i).getStartTime(), |
| | | Long sen = DateUtils.differentSecond(errors.get(i).getStartTime(), |
| | | errors.get(i).getEndTime()); |
| | | if (sen <= 0) { |
| | | errors.remove(i); |
| | | i--; |
| | | } else { |
| | | errors.get(i).setDuration(sen); |
| | | errors.get(i).setStartLong( errors.get(i).getStartTime().getTime()); |
| | | errors.get(i).setEndLong( errors.get(i).getEndTime().getTime()); |
| | | errors.get(i).setStartLong(errors.get(i).getStartTime().getTime()); |
| | | errors.get(i).setEndLong(errors.get(i).getEndTime().getTime()); |
| | | } |
| | | } |
| | | |
| | | //把运行中存在的报警剔除掉 |
| | | for (MdcEquipmentRunningSection se : sRun) { |
| | | long runStart = se.getStartTime().getTime(); |
| | | long runEnd = se.getEndTime().getTime(); |
| | | long runEnd = se.getEndTime().getTime(); |
| | | if (se.getStatus() == 3) { |
| | | if (errors != null && !errors.isEmpty() ) { |
| | | if (errors != null && !errors.isEmpty()) { |
| | | //处理报警数据 |
| | | for (int i = 0 ; i < errors.size(); i ++ ) { |
| | | for (int i = 0; i < errors.size(); i++) { |
| | | long errStart = errors.get(i).getStartTime().getTime(); |
| | | long errEnd = errors.get(i).getEndTime().getTime(); |
| | | // 报警开始 小于 运行开始 报警结束 小于运行结束 报警结束 大于 运行开始 |
| | | if ( errStart < runStart && errEnd <= runEnd && errEnd > runStart ) { |
| | | if (errStart < runStart && errEnd <= runEnd && errEnd > runStart) { |
| | | errors.get(i).setEndTime(se.getStartTime()); |
| | | Long sen = DateUtils.differentSecond(errors.get(i).getStartTime(), |
| | | errors.get(i).getEndTime()); |
| | |
| | | errors.get(i).setEndLong(errors.get(i).getEndTime().getTime()); |
| | | } |
| | | // 报警开始 大于 运行开始 , 报警开始 小于 运行结束 ,报警结束 大于 运行结束 |
| | | else if (errStart >= runStart && errStart < runEnd && errEnd > runEnd ) { |
| | | else if (errStart >= runStart && errStart < runEnd && errEnd > runEnd) { |
| | | errors.get(i).setStartTime(se.getEndTime()); |
| | | Long sen = DateUtils.differentSecond(errors.get(i).getStartTime(), |
| | | errors.get(i).getEndTime()); |
| | |
| | | } |
| | | // 报警开始 大于 运行开始 , 报警开始 小于 运行结束 ,报警结束 大于 运行开始,报警结束 小于 运行结束 |
| | | else if (errStart >= runStart && errStart < runEnd && |
| | | errEnd > runStart && errEnd <= runEnd ){ |
| | | errEnd > runStart && errEnd <= runEnd) { |
| | | errors.remove(i); |
| | | i--; |
| | | } |
| | | //如果超出范围 |
| | | else if (errStart <= runStart && errStart < runEnd && |
| | | errEnd > runStart && errEnd >= runEnd ) { |
| | | errEnd > runStart && errEnd >= runEnd) { |
| | | MdcEquipmentRunningSection errOne = new MdcEquipmentRunningSection(); |
| | | errOne.setEndTime(errors.get(i).getEndTime()); |
| | | |
| | |
| | | errOne.setEndLong(errOne.getEndTime().getTime()); |
| | | if (sen <= 0) { |
| | | errors.remove(i); |
| | | errors.add(i,errOne); |
| | | errors.add(i, errOne); |
| | | } else { |
| | | errors.add(i+1,errOne); |
| | | errors.add(i + 1, errOne); |
| | | i++; |
| | | } |
| | | } else { |
| | |
| | | */ |
| | | private Map<String, List<MdcDeviceCalendarVo>> mdcDeviceCalendarMap(String equipmentid, List<String> stringDates) { |
| | | List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = mdcDeviceCalendarService.listByEquipmentAndDate(equipmentid, stringDates); |
| | | if (mdcDeviceCalendarVos.isEmpty()) { |
| | | if (mdcDeviceCalendarVos == null || mdcDeviceCalendarVos.isEmpty()) { |
| | | return null; |
| | | } |
| | | Map<String, List<MdcDeviceCalendarVo>> map = new HashMap<>(); |