| | |
| | | List<GraphicsDto> graphicsDtos = new ArrayList<>(); |
| | | // 获取天数 |
| | | long days = ChronoUnit.DAYS.between(LocalDate.parse(vo.getStartTime(), DateTimeFormatter.ofPattern("yyyyMMdd")), LocalDate.parse(vo.getEndTime(), DateTimeFormatter.ofPattern("yyyyMMdd"))) + 1; |
| | | BigDecimal time = new BigDecimal("24").multiply(new BigDecimal(days)); |
| | | BigDecimal time = new BigDecimal("24").multiply(new BigDecimal(days)).multiply(new BigDecimal("60")).multiply(new BigDecimal("60")); |
| | | for (MdcComAnaDto mdcComAnaDto : resultDtos) { |
| | | GraphicsDto graphicsDto = new GraphicsDto(); |
| | | graphicsDto.setEquipmentId(mdcComAnaDto.getEquipmentId()); |
| | |
| | | DayRateDto dayRateDto = new DayRateDto(); |
| | | dayRateDto.setDateTime(dateList.get(i + 1)); |
| | | String dateTime = DateUtils.dateConvertion(vo.getDateTime()); |
| | | Date startTime = DateUtils.toDate(dateTime + " " + dateList.get(i), DateUtils.STR_DATE_TIME_MIN); |
| | | Date endTime = DateUtils.toDate(dateTime + " " + dateList.get(i + 1), DateUtils.STR_DATE_TIME_MIN); |
| | | Date startTime = DateUtils.toDate(dateTime + " " + dateList.get(i) + ":00", DateUtils.STR_DATE_TIME_SMALL); |
| | | Date endTime = DateUtils.toDate(dateTime + " " + dateList.get(i + 1) + ":00", DateUtils.STR_DATE_TIME_SMALL); |
| | | List<MdcEquipmentRunningSection> runningSections = mdcEquipmentRunningSectionService.listEquipmentRunningSection(vo.getEquipmentId(), startTime.getTime(), endTime.getTime()); |
| | | if (runningSections != null && !runningSections.isEmpty()) { |
| | | // 时间修正 |
| | |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 设备日利用率对比分析 |
| | | * |
| | | * @param userId |
| | | * @param vo |
| | | * @return |
| | | */ |
| | | @Override |
| | | public DayUtilizationRateDto dayUtilizationRateContrast(String userId, DayUtilizationRateContrastQueryVo vo) { |
| | | DayUtilizationRateDto result = new DayUtilizationRateDto(); |
| | | if (StringUtils.isBlank(vo.getEquipmentId())) { |
| | | List<String> equipmentIds; |
| | | // 获取用户拥有设备权限 |
| | | if ("2".equals(vo.getTypeTree())) { |
| | | // 部门层级 |
| | | equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null); |
| | | } else { |
| | | // 产线层级 |
| | | equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null); |
| | | } |
| | | if (equipmentIds != null && !equipmentIds.isEmpty()) { |
| | | vo.setEquipmentId(equipmentIds.get(0)); |
| | | } |
| | | } |
| | | result.setEquipmentId(vo.getEquipmentId()); |
| | | MdcEquipment mdcEquipment = mdcEquipmentService.getOne(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, vo.getEquipmentId())); |
| | | result.setEquipmentName(mdcEquipment.getEquipmentName()); |
| | | Date start = DateUtils.toDate(vo.getStartDate(), DateUtils.STRDATE); |
| | | Date end = DateUtils.toDate(vo.getEndDate(), DateUtils.STRDATE); |
| | | List<String> dateList = DateUtils.getDatesStringLists(start, end); |
| | | result.setDateList(dateList); |
| | | List<String> datesStringList = DateUtils.getDatesStringList(start, end); |
| | | List<DayRateDto> dayRateDtoList = new ArrayList<>(); |
| | | for (String date : datesStringList) { |
| | | DayRateDto dayRateDto = new DayRateDto(); |
| | | String format = DateUtils.format(DateUtils.toDate(date, DateUtils.STR_DATE), DateUtils.STR_MMDD); |
| | | dayRateDto.setDateTime(format); |
| | | Date startTime = DateUtils.toDate(date + " " + vo.getStartTime() + ":00", DateUtils.STR_DATE_TIME_SMALL); |
| | | Date endTime = DateUtils.toDate(date + " " + vo.getEndTime() + ":00", DateUtils.STR_DATE_TIME_SMALL); |
| | | List<MdcEquipmentRunningSection> runningSections = mdcEquipmentRunningSectionService.listEquipmentRunningSection(vo.getEquipmentId(), startTime.getTime(), endTime.getTime()); |
| | | if (runningSections != null && !runningSections.isEmpty()) { |
| | | //时间修正 |
| | | runningSections.get(0).setStartTime(startTime); |
| | | if (runningSections.size() > 1) { |
| | | runningSections.get(runningSections.size() - 1).setEndTime(endTime); |
| | | } else { |
| | | runningSections.get(0).setEndTime(endTime); |
| | | } |
| | | // 利用率计算 |
| | | BigDecimal processLong = new BigDecimal("0"); |
| | | for (MdcEquipmentRunningSection runningSection : runningSections) { |
| | | if (runningSection.getStatus() == 3) { |
| | | long duration = DateUtils.differentSecond(runningSection.getStartTime(), runningSection.getEndTime()); |
| | | processLong = processLong.add(new BigDecimal(duration)); |
| | | } |
| | | } |
| | | BigDecimal totalLong = new BigDecimal(DateUtils.differentSecond(startTime, endTime)); |
| | | BigDecimal utilizationRate = processLong.divide(totalLong, 6, BigDecimal.ROUND_HALF_UP); |
| | | dayRateDto.setUtilizationRate(utilizationRate); |
| | | } else { |
| | | dayRateDto.setUtilizationRate(new BigDecimal("0")); |
| | | } |
| | | dayRateDtoList.add(dayRateDto); |
| | | } |
| | | result.setDayRateDto(dayRateDtoList); |
| | | return result; |
| | | } |
| | | |
| | | private StatisticalAnalysisVo efficiencyStatisticalRate(List<MdcEfficiencyDto> efficiencyList) { |
| | | StatisticalAnalysisVo vo = new StatisticalAnalysisVo(); |
| | | for (MdcEfficiencyDto mdcEfficiencyDto : efficiencyList) { |