| | |
| | | import org.jeecg.modules.mdc.service.IMdcEquipmentService; |
| | | import org.jeecg.modules.mdc.service.IMdcHomeService; |
| | | import org.jeecg.modules.mdc.util.DateUtils; |
| | | import org.jeecg.modules.mdc.vo.EquipmentDayUtilizationVo; |
| | | import org.jeecg.modules.mdc.vo.MdcCommonVo; |
| | | import org.jeecg.modules.mdc.vo.MdcEquipmentStatusVo; |
| | | import org.jeecg.modules.mdc.vo.MdcHomeEfficiencyVo; |
| | | import org.jeecg.modules.mdc.vo.*; |
| | | import org.jeecg.modules.system.entity.MdcProduction; |
| | | import org.jeecg.modules.system.service.IMdcProductionService; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 设å¤çº§æçç»è®¡ |
| | | */ |
| | | @Override |
| | | public MdcHomeEfficiencyVo getEquipmentLevelEfficiencyStatistics(String equipmentId) { |
| | | MdcHomeEfficiencyVo result = new MdcHomeEfficiencyVo(); |
| | | String date = DateUtils.format(DateUtils.toDate(LocalDate.now().plusDays(-1).toString(), DateUtils.STR_DATE), DateUtils.STRDATE); |
| | | MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo = mdcHomeMapper.getUtilizationByDay(Arrays.asList(equipmentId.split(",")), date); |
| | | if (mdcEquipmentStatisticalInfo != null) { |
| | | result.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP)); |
| | | if (BigDecimal.ZERO.compareTo(mdcEquipmentStatisticalInfo.getOpenLong()) == -1) { |
| | | result.setOpenRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(mdcEquipmentStatisticalInfo.getOpenLong(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); |
| | | result.setStartRate(mdcEquipmentStatisticalInfo.getOpenLong().divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP)); |
| | | } |
| | | } |
| | | //è·åOEEæ°æ® |
| | | String month = DateUtils.format(DateUtils.toDate(LocalDate.now().plusMonths(-1).toString(), DateUtils.STR_DATE), DateUtils.STR_YEAR_MONTH); |
| | | BigDecimal oee = mdcHomeMapper.getOeeByDate(Arrays.asList(equipmentId.split(",")), month); |
| | | if (oee == null || oee.compareTo(BigDecimal.ZERO) == 0) { |
| | | result.setOverallEquipmentEfficiency(BigDecimal.ZERO); |
| | | } else { |
| | | result.setOverallEquipmentEfficiency(oee.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 设å¤çº§æ´å¹´åº¦å©ç¨ç |
| | | */ |
| | | @Override |
| | | public Map<String, Object> getEquipmentAnnualEfficiencyStatistics(String equipmentId) { |
| | | Map<String, Object> result = new HashMap<>(); |
| | | Date end = DateUtils.toDate(LocalDate.now().plusMonths(-1).toString(), DateUtils.STR_DATE); |
| | | Date start = DateUtils.toDate(LocalDate.now().plusMonths(-12).toString(), DateUtils.STR_DATE); |
| | | List<String> monthBetween = DateUtils.getMonthBetween(start, end); |
| | | List<String> dateList = new ArrayList<>(); |
| | | List<MdcHomeEquipmentVo> dataList = new ArrayList<>(); |
| | | for (String month : monthBetween) { |
| | | String name = month.substring(month.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "æ"; |
| | | dateList.add(name); |
| | | //å©ç¨çåoee |
| | | MdcHomeEquipmentVo mdcHomeEquipmentVo = new MdcHomeEquipmentVo(); |
| | | mdcHomeEquipmentVo.setMonth(name); |
| | | //å©ç¨ç |
| | | Map<String, Object> resultMap = mdcHomeMapper.getUtilizationByMonth(Arrays.asList(equipmentId.split(",")), month.replace("-", "")); |
| | | if (resultMap != null && resultMap.get("processLong") != null) { |
| | | BigDecimal processLong = BigDecimal.valueOf((Double) resultMap.get("processLong")); |
| | | BigDecimal openLong = BigDecimal.valueOf((Double) resultMap.get("openLong")); |
| | | BigDecimal processDay = new BigDecimal((Integer) resultMap.get("processDay")); |
| | | if (BigDecimal.ZERO.compareTo(processLong) == -1) { |
| | | mdcHomeEquipmentVo.setUtilizationRate(processLong.divide(processDay.multiply(new BigDecimal("86400")), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); |
| | | if (BigDecimal.ZERO.compareTo(openLong) == -1) { |
| | | mdcHomeEquipmentVo.setStartRate(openLong.divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP)); |
| | | mdcHomeEquipmentVo.setOpenRate(processDay.divide(openLong, 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //OEE |
| | | BigDecimal oee = mdcHomeMapper.getOeeByDate(Arrays.asList(equipmentId.split(",")), month); |
| | | if (oee != null && !(oee.compareTo(BigDecimal.ZERO) == 0)) { |
| | | mdcHomeEquipmentVo.setOverallEquipmentEfficiency(oee.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); |
| | | } |
| | | dataList.add(mdcHomeEquipmentVo); |
| | | } |
| | | result.put("dateList", dateList); |
| | | result.put("dataList", dataList); |
| | | return result; |
| | | } |
| | | } |