From 057d3af95ae0346b98e394bdbbaa2c5a7c34f4af Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期二, 19 八月 2025 13:57:04 +0800 Subject: [PATCH] mdc算法公式自定义 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java | 386 +++++++++++++++++-------------------------------------- 1 files changed, 119 insertions(+), 267 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java index cddc90d..441d1ec 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java @@ -9,12 +9,14 @@ import org.jeecg.modules.mdc.mapper.MdcEfficiencyReportMapper; import org.jeecg.modules.mdc.service.*; import org.jeecg.modules.mdc.util.DateUtils; +import org.jeecg.modules.mdc.util.JexlFormulaCalculator; import org.jeecg.modules.mdc.vo.MdcUtilizationRateDto; import org.jeecg.modules.mdc.vo.*; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.service.IMdcProductionService; import org.jeecg.modules.system.service.ISysDepartService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -53,6 +55,12 @@ @Resource private IMdcEquipmentRunningSectionService mdcEquipmentRunningSectionService; + + @Resource + private IMdcParameterService mdcParameterService; + + @Resource + private JexlFormulaCalculator formulaCalculator; /** * 鍒╃敤鐜囨姤琛� @@ -115,56 +123,22 @@ if ("2".equals(vo.getTypeTree())) { // 閮ㄩ棬灞傜骇 List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList()); - // 鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭� - List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(SysDepart::getDepartOrder)); for (MdcEquDepDto mdcEquDepDto : equipmentList) { MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto(); mdcEfficiencyListDto.setEquipmentId(mdcEquDepDto.getEquipmentId()); mdcEfficiencyListDto.setEquipmentName(mdcEquDepDto.getEquipmentName()); mdcEfficiencyListDto.setEquipmentType(mdcEquDepDto.getEquipmentType()); - switch (mdcEquDepDto.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(mdcEquDepDto.getDepartName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(mdcEquDepDto.getDepartName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(mdcEquDepDto.getDepartName()); - break; - default: - } - - SysDepart sysDepart = departList.stream().filter(depart -> depart.getId().equals(mdcEquDepDto.getParentId())).findAny().orElse(null); - if (sysDepart != null) { - switch (sysDepart.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(sysDepart.getDepartName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(sysDepart.getDepartName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(sysDepart.getDepartName()); - break; - default: + String orgCode = mdcEquDepDto.getOrgCode(); + if (orgCode != null) { + if (orgCode.length() >= 3) { + mdcEfficiencyListDto.setLevel1(sysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(SysDepart::getOrgCode, orgCode.substring(0, 3))).getDepartName()); } - if (StringUtils.isNotEmpty(sysDepart.getParentId())) { - departList.stream().filter(depart -> depart.getId().equals(sysDepart.getParentId())).findAny().ifPresent(depart1 -> { - switch (depart1.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(depart1.getDepartName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(depart1.getDepartName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(depart1.getDepartName()); - break; - default: - } - }); + if (orgCode.length() >= 6) { + mdcEfficiencyListDto.setLevel2(sysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(SysDepart::getOrgCode, orgCode.substring(0, 6))).getDepartName()); + } + if (orgCode.length() >= 9) { + mdcEfficiencyListDto.setLevel3(sysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(SysDepart::getOrgCode, orgCode.substring(0, 9))).getDepartName()); } } List<MdcEfficiencyResultDto> list = new ArrayList<>(); @@ -204,55 +178,22 @@ } else { // 浜х嚎灞傜骇 List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); - // 鏌ヨ鎵�鏈変骇绾夸俊鎭� - List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(MdcProduction::getProductionOrder)); for (MdcEquProDto mdcEquProDto : equipmentList) { MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto(); mdcEfficiencyListDto.setEquipmentId(mdcEquProDto.getEquipmentId()); mdcEfficiencyListDto.setEquipmentName(mdcEquProDto.getEquipmentName()); mdcEfficiencyListDto.setEquipmentType(mdcEquProDto.getEquipmentType()); - switch (mdcEquProDto.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(mdcEquProDto.getProductionName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(mdcEquProDto.getProductionName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(mdcEquProDto.getProductionName()); - break; - default: - } - MdcProduction mdcProduction = productionList.stream().filter(production -> production.getId().equals(mdcEquProDto.getParentId())).findAny().orElse(null); - if (mdcProduction != null) { - switch (mdcProduction.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(mdcProduction.getProductionName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(mdcProduction.getProductionName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(mdcProduction.getProductionName()); - break; - default: + String orgCode = mdcEquProDto.getOrgCode(); + if (orgCode != null) { + if (orgCode.length() >= 3) { + mdcEfficiencyListDto.setLevel1(mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(MdcProduction::getOrgCode, orgCode.substring(0, 3))).getProductionName()); } - if (StringUtils.isNotEmpty(mdcProduction.getParentId())) { - productionList.stream().filter(production -> production.getId().equals(mdcProduction.getParentId())).findAny().ifPresent(production1 -> { - switch (production1.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(production1.getProductionName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(production1.getProductionName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(production1.getProductionName()); - break; - default: - } - }); + if (orgCode.length() >= 6) { + mdcEfficiencyListDto.setLevel2(mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(MdcProduction::getOrgCode, orgCode.substring(0, 6))).getProductionName()); + } + if (orgCode.length() >= 9) { + mdcEfficiencyListDto.setLevel3(mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(MdcProduction::getOrgCode, orgCode.substring(0, 9))).getProductionName()); } } List<MdcEfficiencyResultDto> list = new ArrayList<>(); @@ -448,7 +389,7 @@ if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { result.setMdcEfficiencyList(listDtos); } else { - + List<String> equipmentIdList = mdcEquipmentService.listEquipmentId(vo); if (equipmentIdList != null && !equipmentIdList.isEmpty()) { vo.setEquipmentIdList(equipmentIdList); @@ -463,56 +404,22 @@ if ("2".equals(vo.getTypeTree())) { // 閮ㄩ棬灞傜骇 List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList()); - // 鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭� - List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(SysDepart::getDepartOrder)); for (MdcEquDepDto mdcEquDepDto : equipmentList) { MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto(); mdcEfficiencyListDto.setEquipmentId(mdcEquDepDto.getEquipmentId()); mdcEfficiencyListDto.setEquipmentName(mdcEquDepDto.getEquipmentName()); mdcEfficiencyListDto.setEquipmentType(mdcEquDepDto.getEquipmentType()); - switch (mdcEquDepDto.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(mdcEquDepDto.getDepartName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(mdcEquDepDto.getDepartName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(mdcEquDepDto.getDepartName()); - break; - default: - } - - SysDepart sysDepart = departList.stream().filter(depart -> depart.getId().equals(mdcEquDepDto.getParentId())).findAny().orElse(null); - if (sysDepart != null) { - switch (sysDepart.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(sysDepart.getDepartName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(sysDepart.getDepartName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(sysDepart.getDepartName()); - break; - default: + String orgCode = mdcEquDepDto.getOrgCode(); + if (orgCode != null) { + if (orgCode.length() >= 3) { + mdcEfficiencyListDto.setLevel1(sysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(SysDepart::getOrgCode, orgCode.substring(0, 3))).getDepartName()); } - if (StringUtils.isNotEmpty(sysDepart.getParentId())) { - departList.stream().filter(depart -> depart.getId().equals(sysDepart.getParentId())).findAny().ifPresent(depart1 -> { - switch (depart1.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(depart1.getDepartName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(depart1.getDepartName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(depart1.getDepartName()); - break; - default: - } - }); + if (orgCode.length() >= 6) { + mdcEfficiencyListDto.setLevel2(sysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(SysDepart::getOrgCode, orgCode.substring(0, 6))).getDepartName()); + } + if (orgCode.length() >= 9) { + mdcEfficiencyListDto.setLevel3(sysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(SysDepart::getOrgCode, orgCode.substring(0, 9))).getDepartName()); } } List<MdcEfficiencyResultDto> list = new ArrayList<>(); @@ -552,55 +459,22 @@ } else { // 浜х嚎灞傜骇 List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); - // 鏌ヨ鎵�鏈変骇绾夸俊鎭� - List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(MdcProduction::getProductionOrder)); for (MdcEquProDto mdcEquProDto : equipmentList) { MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto(); mdcEfficiencyListDto.setEquipmentId(mdcEquProDto.getEquipmentId()); mdcEfficiencyListDto.setEquipmentName(mdcEquProDto.getEquipmentName()); mdcEfficiencyListDto.setEquipmentType(mdcEquProDto.getEquipmentType()); - switch (mdcEquProDto.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(mdcEquProDto.getProductionName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(mdcEquProDto.getProductionName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(mdcEquProDto.getProductionName()); - break; - default: - } - MdcProduction mdcProduction = productionList.stream().filter(production -> production.getId().equals(mdcEquProDto.getParentId())).findAny().orElse(null); - if (mdcProduction != null) { - switch (mdcProduction.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(mdcProduction.getProductionName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(mdcProduction.getProductionName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(mdcProduction.getProductionName()); - break; - default: + String orgCode = mdcEquProDto.getOrgCode(); + if (orgCode != null) { + if (orgCode.length() >= 3) { + mdcEfficiencyListDto.setLevel1(mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(MdcProduction::getOrgCode, orgCode.substring(0, 3))).getProductionName()); } - if (StringUtils.isNotEmpty(mdcProduction.getParentId())) { - productionList.stream().filter(production -> production.getId().equals(mdcProduction.getParentId())).findAny().ifPresent(production1 -> { - switch (production1.getOrgType()) { - case "1": - mdcEfficiencyListDto.setLevel1(production1.getProductionName()); - break; - case "2": - mdcEfficiencyListDto.setLevel2(production1.getProductionName()); - break; - case "3": - mdcEfficiencyListDto.setLevel3(production1.getProductionName()); - break; - default: - } - }); + if (orgCode.length() >= 6) { + mdcEfficiencyListDto.setLevel2(mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(MdcProduction::getOrgCode, orgCode.substring(0, 6))).getProductionName()); + } + if (orgCode.length() >= 9) { + mdcEfficiencyListDto.setLevel3(mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(MdcProduction::getOrgCode, orgCode.substring(0, 9))).getProductionName()); } } List<MdcEfficiencyResultDto> list = new ArrayList<>(); @@ -813,8 +687,6 @@ if ("2".equals(vo.getTypeTree())) { // 閮ㄩ棬灞傜骇 List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList()); - // 鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭� - List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(SysDepart::getDepartOrder)); // 鐝鍚嶇О鏄剧ず澶勭悊 String shiftSubName = ""; if (StringUtils.isBlank(vo.getShiftId())) { @@ -842,48 +714,16 @@ mdcEfficiencyShiftListDto.setEquipmentName(mdcEquDepDto.getEquipmentName()); mdcEfficiencyShiftListDto.setEquipmentType(mdcEquDepDto.getEquipmentType()); mdcEfficiencyShiftListDto.setShiftSubName(shiftSubName); - switch (mdcEquDepDto.getOrgType()) { - case "1": - mdcEfficiencyShiftListDto.setLevel1(mdcEquDepDto.getDepartName()); - break; - case "2": - mdcEfficiencyShiftListDto.setLevel2(mdcEquDepDto.getDepartName()); - break; - case "3": - mdcEfficiencyShiftListDto.setLevel3(mdcEquDepDto.getDepartName()); - break; - default: - } - - SysDepart sysDepart = departList.stream().filter(depart -> depart.getId().equals(mdcEquDepDto.getParentId())).findAny().orElse(null); - if (sysDepart != null) { - switch (sysDepart.getOrgType()) { - case "1": - mdcEfficiencyShiftListDto.setLevel1(sysDepart.getDepartName()); - break; - case "2": - mdcEfficiencyShiftListDto.setLevel2(sysDepart.getDepartName()); - break; - case "3": - mdcEfficiencyShiftListDto.setLevel3(sysDepart.getDepartName()); - break; - default: + String orgCode = mdcEquDepDto.getOrgCode(); + if (orgCode != null) { + if (orgCode.length() >= 3) { + mdcEfficiencyShiftListDto.setLevel1(sysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(SysDepart::getOrgCode, orgCode.substring(0, 3))).getDepartName()); } - if (StringUtils.isNotEmpty(sysDepart.getParentId())) { - departList.stream().filter(depart -> depart.getId().equals(sysDepart.getParentId())).findAny().ifPresent(depart1 -> { - switch (depart1.getOrgType()) { - case "1": - mdcEfficiencyShiftListDto.setLevel1(depart1.getDepartName()); - break; - case "2": - mdcEfficiencyShiftListDto.setLevel2(depart1.getDepartName()); - break; - case "3": - mdcEfficiencyShiftListDto.setLevel3(depart1.getDepartName()); - break; - default: - } - }); + if (orgCode.length() >= 6) { + mdcEfficiencyShiftListDto.setLevel2(sysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(SysDepart::getOrgCode, orgCode.substring(0, 6))).getDepartName()); + } + if (orgCode.length() >= 9) { + mdcEfficiencyShiftListDto.setLevel3(sysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(SysDepart::getOrgCode, orgCode.substring(0, 9))).getDepartName()); } } List<MdcEfficiencyShiftResultDto> list = new ArrayList<>(); @@ -923,8 +763,6 @@ } else { // 浜х嚎灞傜骇 List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); - // 鏌ヨ鎵�鏈変骇绾夸俊鎭� - List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(MdcProduction::getProductionOrder)); // 鐝鍚嶇О鏄剧ず澶勭悊 String shiftSubName = ""; @@ -953,47 +791,16 @@ mdcEfficiencyShiftListDto.setEquipmentName(mdcEquProDto.getEquipmentName()); mdcEfficiencyShiftListDto.setEquipmentType(mdcEquProDto.getEquipmentType()); mdcEfficiencyShiftListDto.setShiftSubName(shiftSubName); - switch (mdcEquProDto.getOrgType()) { - case "1": - mdcEfficiencyShiftListDto.setLevel1(mdcEquProDto.getProductionName()); - break; - case "2": - mdcEfficiencyShiftListDto.setLevel2(mdcEquProDto.getProductionName()); - break; - case "3": - mdcEfficiencyShiftListDto.setLevel3(mdcEquProDto.getProductionName()); - break; - default: - } - MdcProduction mdcProduction = productionList.stream().filter(production -> production.getId().equals(mdcEquProDto.getParentId())).findAny().orElse(null); - if (mdcProduction != null) { - switch (mdcProduction.getOrgType()) { - case "1": - mdcEfficiencyShiftListDto.setLevel1(mdcProduction.getProductionName()); - break; - case "2": - mdcEfficiencyShiftListDto.setLevel2(mdcProduction.getProductionName()); - break; - case "3": - mdcEfficiencyShiftListDto.setLevel3(mdcProduction.getProductionName()); - break; - default: + String orgCode = mdcEquProDto.getOrgCode(); + if (orgCode != null) { + if (orgCode.length() >= 3) { + mdcEfficiencyShiftListDto.setLevel1(mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(MdcProduction::getOrgCode, orgCode.substring(0, 3))).getProductionName()); } - if (StringUtils.isNotEmpty(mdcProduction.getParentId())) { - productionList.stream().filter(production -> production.getId().equals(mdcProduction.getParentId())).findAny().ifPresent(production1 -> { - switch (production1.getOrgType()) { - case "1": - mdcEfficiencyShiftListDto.setLevel1(production1.getProductionName()); - break; - case "2": - mdcEfficiencyShiftListDto.setLevel2(production1.getProductionName()); - break; - case "3": - mdcEfficiencyShiftListDto.setLevel3(production1.getProductionName()); - break; - default: - } - }); + if (orgCode.length() >= 6) { + mdcEfficiencyShiftListDto.setLevel2(mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(MdcProduction::getOrgCode, orgCode.substring(0, 6))).getProductionName()); + } + if (orgCode.length() >= 9) { + mdcEfficiencyShiftListDto.setLevel3(mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).eq(MdcProduction::getOrgCode, orgCode.substring(0, 9))).getProductionName()); } } List<MdcEfficiencyShiftResultDto> list = new ArrayList<>(); @@ -1151,19 +958,45 @@ if (date.equals(equipmentStatisticalShiftInfo.getTheDate()) && equipmentStatisticalShiftInfo.getEquipmentId().equals(equipmentId)) { mdcEfficiencyShiftResultDto.setTheDate(equipmentStatisticalShiftInfo.getTheDate()); mdcEfficiencyShiftResultDto.setProcessLong(equipmentStatisticalShiftInfo.getProcessLong()); - if (equipmentStatisticalShiftInfo.getTotalLong().compareTo(BigDecimal.ZERO) == 0) { - mdcEfficiencyShiftResultDto.setUtilizationRate(BigDecimal.ZERO); - } else { - mdcEfficiencyShiftResultDto.setUtilizationRate(equipmentStatisticalShiftInfo.getProcessLong().divide(equipmentStatisticalShiftInfo.getTotalLong(), 6, RoundingMode.HALF_UP)); - } mdcEfficiencyShiftResultDto.setCloseLong(equipmentStatisticalShiftInfo.getCloseLong()); mdcEfficiencyShiftResultDto.setOpenLong(equipmentStatisticalShiftInfo.getOpenLong()); mdcEfficiencyShiftResultDto.setWaitLong(equipmentStatisticalShiftInfo.getWaitLong()); - if (equipmentStatisticalShiftInfo.getTotalLong().compareTo(BigDecimal.ZERO) == 0) { - mdcEfficiencyShiftResultDto.setOpenRate(BigDecimal.ZERO); + + Map<String, Object> variables = new HashMap<>(); + variables.put("processLong", equipmentStatisticalShiftInfo.getProcessLong()); + variables.put("openLong", equipmentStatisticalShiftInfo.getOpenLong()); + variables.put("totalLong", equipmentStatisticalShiftInfo.getTotalLong()); + MdcParameter shiftUtilizationRate = mdcParameterService.getOne(new LambdaQueryWrapper<MdcParameter>().eq(MdcParameter::getCode, "shiftUtilizationRate")); + if (shiftUtilizationRate != null) { + mdcEfficiencyShiftResultDto.setUtilizationRate(formulaCalculator.calculate(shiftUtilizationRate.getValue(), variables)); } else { - mdcEfficiencyShiftResultDto.setOpenRate(equipmentStatisticalShiftInfo.getOpenLong().divide(equipmentStatisticalShiftInfo.getTotalLong(), 6, RoundingMode.HALF_UP)); + if (equipmentStatisticalShiftInfo.getTotalLong().compareTo(BigDecimal.ZERO) == 0) { + mdcEfficiencyShiftResultDto.setUtilizationRate(BigDecimal.ZERO); + } else { + mdcEfficiencyShiftResultDto.setUtilizationRate(equipmentStatisticalShiftInfo.getProcessLong().divide(equipmentStatisticalShiftInfo.getTotalLong(), 6, RoundingMode.HALF_UP)); + } } + MdcParameter shiftOpenRate = mdcParameterService.getOne(new LambdaQueryWrapper<MdcParameter>().eq(MdcParameter::getCode, "shiftOpenRate")); + if (shiftOpenRate != null) { + mdcEfficiencyShiftResultDto.setOpenRate(formulaCalculator.calculate(shiftOpenRate.getValue(), variables)); + } else { + if (equipmentStatisticalShiftInfo.getTotalLong().compareTo(BigDecimal.ZERO) == 0) { + mdcEfficiencyShiftResultDto.setOpenRate(BigDecimal.ZERO); + } else { + mdcEfficiencyShiftResultDto.setOpenRate(equipmentStatisticalShiftInfo.getOpenLong().divide(equipmentStatisticalShiftInfo.getTotalLong(), 6, RoundingMode.HALF_UP)); + } + } + MdcParameter startRate = mdcParameterService.getOne(new LambdaQueryWrapper<MdcParameter>().eq(MdcParameter::getCode, "startRate")); + if (startRate != null) { + mdcEfficiencyShiftResultDto.setStartRate(formulaCalculator.calculate(startRate.getValue(), variables)); + } else { + if (equipmentStatisticalShiftInfo.getOpenLong().compareTo(BigDecimal.ZERO) == 0) { + mdcEfficiencyShiftResultDto.setStartRate(BigDecimal.ZERO); + } else { + mdcEfficiencyShiftResultDto.setStartRate(equipmentStatisticalShiftInfo.getProcessLong().divide(equipmentStatisticalShiftInfo.getOpenLong(), 6, RoundingMode.HALF_UP)); + } + } + long rate = mdcEfficiencyShiftResultDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { @@ -1792,12 +1625,31 @@ if (date.equals(efficiencyDto.getTheDate()) && efficiencyDto.getEquipmentId().equals(equipmentId)) { mdcEfficiencyResultDto.setTheDate(efficiencyDto.getTheDate()); mdcEfficiencyResultDto.setProcessLong(efficiencyDto.getProcessLong()); - mdcEfficiencyResultDto.setUtilizationRate(efficiencyDto.getUtilizationRate()); - mdcEfficiencyResultDto.setStartRate(efficiencyDto.getStartRate()); - mdcEfficiencyResultDto.setOpenRate(efficiencyDto.getOpenRate()); mdcEfficiencyResultDto.setOpenLong(efficiencyDto.getOpenLong()); mdcEfficiencyResultDto.setWaitLong(efficiencyDto.getWaitLong()); mdcEfficiencyResultDto.setCloseLong(efficiencyDto.getCloseLong()); + Map<String, Object> variables = new HashMap<>(); + variables.put("processLong", efficiencyDto.getProcessLong()); + variables.put("openLong", efficiencyDto.getOpenLong()); + variables.put("measureTime", new BigDecimal("86400")); + MdcParameter utilizationRate = mdcParameterService.getOne(new LambdaQueryWrapper<MdcParameter>().eq(MdcParameter::getCode, "utilizationRate")); + if (utilizationRate != null) { + mdcEfficiencyResultDto.setUtilizationRate(formulaCalculator.calculate(utilizationRate.getValue(), variables)); + } else { + mdcEfficiencyResultDto.setUtilizationRate(efficiencyDto.getUtilizationRate()); + } + MdcParameter openRate = mdcParameterService.getOne(new LambdaQueryWrapper<MdcParameter>().eq(MdcParameter::getCode, "openRate")); + if (openRate != null) { + mdcEfficiencyResultDto.setOpenRate(formulaCalculator.calculate(openRate.getValue(), variables)); + } else { + mdcEfficiencyResultDto.setOpenRate(efficiencyDto.getOpenRate()); + } + MdcParameter startRate = mdcParameterService.getOne(new LambdaQueryWrapper<MdcParameter>().eq(MdcParameter::getCode, "startRate")); + if (startRate != null) { + mdcEfficiencyResultDto.setStartRate(formulaCalculator.calculate(startRate.getValue(), variables)); + } else { + mdcEfficiencyResultDto.setStartRate(efficiencyDto.getStartRate()); + } long rate = efficiencyDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { -- Gitblit v1.9.3