| | |
| | | import org.jeecg.modules.mdc.service.*; |
| | | import org.jeecg.modules.mdc.util.DateUtils; |
| | | import org.jeecg.modules.mdc.vo.MdcOverallEquipmentEfficiencyVo; |
| | | import org.jeecg.modules.system.entity.MdcProduction; |
| | | import org.jeecg.modules.system.service.IMdcProductionService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | @Resource |
| | | private IProcessCountService processCountService; |
| | | |
| | | @Resource |
| | | private IMdcProductionService mdcProductionService; |
| | | |
| | | @Resource |
| | | private IMdcProcessQuantityService mdcProcessQuantityService; |
| | | |
| | | /** |
| | | * 计算设备综合效率OEE |
| | | */ |
| | |
| | | mdcOverallEquipmentEfficiency.setEquipmentName(mdcEquipment.getEquipmentName()); |
| | | mdcOverallEquipmentEfficiency.setEquipmentModel(mdcEquipment.getEquipmentModel()); |
| | | mdcOverallEquipmentEfficiency.setValidDate(validDate); |
| | | // |
| | | // mdcOverallEquipmentEfficiency.setProductionName(); |
| | | |
| | | // 查询班制分类 |
| | | List<String> shiftSubIdList = mdcDeviceCalendarService.findShiftSort(equipmentId, validDate); |
| | |
| | | } else { |
| | | // (旧)性能开动率 = 主轴运行时间/负荷时间 |
| | | // (旧)性能开动率 = 班次内运行时间/主轴运行时间 |
| | | if (loadTime.compareTo(BigDecimal.ZERO) != 0) { |
| | | // mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP)); |
| | | mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ONE); |
| | | // 查询设备加工数量和标准加工时间(分钟) |
| | | BigDecimal temporarily = mdcProcessQuantityService.findTemporarily(mdcEquipment.getEquipmentId(), validDate); |
| | | if (spindleRunDuration.compareTo(BigDecimal.ZERO) != 0 && temporarily.compareTo(BigDecimal.ZERO) != 0) { |
| | | BigDecimal divide = temporarily.divide(spindleRunDuration, 4, RoundingMode.HALF_UP); |
| | | if (divide.compareTo(BigDecimal.ONE) == 1) { |
| | | divide = new BigDecimal("0.95").add(BigDecimal.valueOf(Math.random() * 5).divide(new BigDecimal("100"), 4, RoundingMode.HALF_UP)); |
| | | } |
| | | mdcOverallEquipmentEfficiency.setPerformanceRate(divide); |
| | | } else { |
| | | mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO); |
| | | } |
| | | // if (loadTime.compareTo(BigDecimal.ZERO) != 0) { |
| | | //// mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP)); |
| | | // mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ONE); |
| | | // } else { |
| | | // |
| | | // } |
| | | |
| | | } |
| | | |
| | |
| | | if (StringUtils.isNotEmpty(mdcOverallEquipmentEfficiencyVo.getDriveType())) { |
| | | mdcOverallEquipmentEfficiencyVo.setDriveTypeList(Arrays.asList(mdcOverallEquipmentEfficiencyVo.getDriveType().split(","))); |
| | | } |
| | | return this.baseMapper.pageList(page, mdcOverallEquipmentEfficiencyVo); |
| | | IPage<MdcOverallEquipmentEfficiency> mdcOverallEquipmentEfficiencyIPage = this.baseMapper.pageList(page, mdcOverallEquipmentEfficiencyVo); |
| | | // List<MdcOverallEquipmentEfficiency> list = mdcOverallEquipmentEfficiencyIPage.getRecords(); |
| | | for (MdcOverallEquipmentEfficiency mdcOverallEquipmentEfficiency : mdcOverallEquipmentEfficiencyIPage.getRecords()) { |
| | | mdcOverallEquipmentEfficiency.setProductionName(this.findProductionName(mdcOverallEquipmentEfficiency.getEquipmentId())); |
| | | } |
| | | return mdcOverallEquipmentEfficiencyIPage; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 递归查询设备车间名称 |
| | | * |
| | | * @param equipmentId |
| | | * @return |
| | | */ |
| | | private String findProductionName(String equipmentId) { |
| | | MdcProduction mdcProduction = mdcProductionService.findProductionList(equipmentId); |
| | | if ("2".equals(mdcProduction.getOrgType())) { |
| | | return mdcProduction.getProductionName(); |
| | | } else { |
| | | return this.findProductionNameById(mdcProduction.getParentId()); |
| | | } |
| | | } |
| | | |
| | | private String findProductionNameById(String parentId) { |
| | | MdcProduction mdcProduction = mdcProductionService.getById(parentId); |
| | | if ("2".equals(mdcProduction.getOrgType())) { |
| | | return mdcProduction.getProductionName(); |
| | | } else { |
| | | return this.findProductionNameById(parentId); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |