From 4337640b7ab86136baed2fd6aa959e4828a75cea Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期四, 07 十二月 2023 17:33:51 +0800 Subject: [PATCH] 计算加工工件个数算法和密码安全策略 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java | 338 +++++++++++++++++++++++++++++++------------------------- 1 files changed, 186 insertions(+), 152 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 49346ae..94e7a96 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 @@ -1,9 +1,7 @@ package org.jeecg.modules.mdc.service.impl; -import com.alipay.api.domain.NewsfeedMediaGiftInfo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.apache.commons.lang3.StringUtils; -import org.checkerframework.checker.units.qual.A; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.mdc.dto.*; @@ -11,6 +9,7 @@ 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.vo.MdcUtilizationRateDto; import org.jeecg.modules.mdc.vo.*; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.entity.SysDepart; @@ -20,8 +19,6 @@ import javax.annotation.Resource; import java.math.BigDecimal; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; @@ -99,6 +96,15 @@ if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { result.setMdcEfficiencyList(listDtos); } else { + if (StringUtils.isNotEmpty(vo.getEquipmentType())) { + List<String> equipmentList = mdcEquipmentService.listEquipmentId(vo.getEquipmentType(), vo.getEquipmentIdList()); + if (equipmentList != null && !equipmentList.isEmpty()) { + vo.setEquipmentIdList(equipmentList); + } else { + result.setMdcEfficiencyList(listDtos); + return result; + } + } // 鏌ヨ鍒╃敤鐜囨暟鎹� List<MdcEfficiencyDto> efficiencyList = mdcEfficiencyReportMapper.efficiencyList(vo); // 鍒╃敤鐜囩瓑绾� @@ -109,7 +115,7 @@ // 閮ㄩ棬灞傜骇 List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭� - List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); + 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(); @@ -171,7 +177,7 @@ // 浜х嚎灞傜骇 List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈変骇绾夸俊鎭� - List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); + 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(); @@ -229,7 +235,7 @@ listDtos.add(mdcEfficiencyListDto); } } - + //listDtos.sort(((o1, o2) -> Collator.getInstance(Locale.TRADITIONAL_CHINESE).compare(o1.getLevel3(), o2.getLevel3()))); result.setMdcEfficiencyList(listDtos); } @@ -279,6 +285,15 @@ if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { result.setMdcEfficiencyList(listDtos); } else { + if (StringUtils.isNotEmpty(vo.getEquipmentType())) { + List<String> equipmentList = mdcEquipmentService.listEquipmentId(vo.getEquipmentType(), vo.getEquipmentIdList()); + if (equipmentList != null && !equipmentList.isEmpty()) { + vo.setEquipmentIdList(equipmentList); + } else { + result.setMdcEfficiencyList(listDtos); + return result; + } + } // 鏌ヨ鍒╃敤鐜囨暟鎹� List<MdcEfficiencyDto> efficiencyList = mdcEfficiencyReportMapper.efficiencyPOList(vo); // 鍒╃敤鐜囩瓑绾� @@ -289,7 +304,7 @@ // 閮ㄩ棬灞傜骇 List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭� - List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); + 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(); @@ -351,7 +366,7 @@ // 浜х嚎灞傜骇 List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈変骇绾夸俊鎭� - List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); + 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(); @@ -409,7 +424,7 @@ listDtos.add(mdcEfficiencyListDto); } } - +// listDtos.sort(((o1, o2) -> Collator.getInstance(Locale.TRADITIONAL_CHINESE).compare(o1.getLevel3(), o2.getLevel3()))); result.setMdcEfficiencyList(listDtos); } @@ -459,6 +474,15 @@ if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { result.setMdcEfficiencyList(listDtos); } else { + if (StringUtils.isNotEmpty(vo.getEquipmentType())) { + List<String> equipmentList = mdcEquipmentService.listEquipmentId(vo.getEquipmentType(), vo.getEquipmentIdList()); + if (equipmentList != null && !equipmentList.isEmpty()) { + vo.setEquipmentIdList(equipmentList); + } else { + result.setMdcEfficiencyList(listDtos); + return result; + } + } // 鐝鍒╃敤鐜囩瓑绾� List<MdcUtilizationRate> mdcUtilizationRateList = mdcUtilizationRateService.listByType("bclyl"); // 鐝鍒╃敤鐜囨暟鎹� @@ -469,7 +493,7 @@ // 閮ㄩ棬灞傜骇 List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭� - List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); + 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())) { @@ -552,7 +576,7 @@ // 浜х嚎灞傜骇 List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈変骇绾夸俊鎭� - List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); + List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(MdcProduction::getProductionOrder)); // 鐝鍚嶇О鏄剧ず澶勭悊 String shiftSubName = ""; @@ -632,6 +656,7 @@ listDtos.add(mdcEfficiencyShiftListDto); } } +// listDtos.sort(((o1, o2) -> Collator.getInstance(Locale.TRADITIONAL_CHINESE).compare(o1.getLevel3(), o2.getLevel3()))); result.setMdcEfficiencyList(listDtos); } return result; @@ -656,23 +681,24 @@ mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); } } - } else { - mdcEfficiencyShiftResultDto.setTheDate(date); - mdcEfficiencyShiftResultDto.setProcessLong(new BigDecimal("0")); - mdcEfficiencyShiftResultDto.setUtilizationRate(new BigDecimal("0")); - mdcEfficiencyShiftResultDto.setStartRate(new BigDecimal("0")); - mdcEfficiencyShiftResultDto.setOpenRate(new BigDecimal("0")); - mdcEfficiencyShiftResultDto.setOpenLong(new BigDecimal("0")); - mdcEfficiencyShiftResultDto.setWaitLong(new BigDecimal("0")); - mdcEfficiencyShiftResultDto.setCloseLong(new BigDecimal("0")); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); - } - } } } } else { + mdcEfficiencyShiftResultDto.setTheDate(date); + mdcEfficiencyShiftResultDto.setProcessLong(new BigDecimal("0")); + mdcEfficiencyShiftResultDto.setUtilizationRate(new BigDecimal("0")); + mdcEfficiencyShiftResultDto.setStartRate(new BigDecimal("0")); + mdcEfficiencyShiftResultDto.setOpenRate(new BigDecimal("0")); + mdcEfficiencyShiftResultDto.setOpenLong(new BigDecimal("0")); + mdcEfficiencyShiftResultDto.setWaitLong(new BigDecimal("0")); + mdcEfficiencyShiftResultDto.setCloseLong(new BigDecimal("0")); + for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { + if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) { + mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + } + } + } + if (StringUtils.isBlank(mdcEfficiencyShiftResultDto.getColor())) { mdcEfficiencyShiftResultDto.setTheDate(date); mdcEfficiencyShiftResultDto.setProcessLong(new BigDecimal("0")); mdcEfficiencyShiftResultDto.setUtilizationRate(new BigDecimal("0")); @@ -767,10 +793,10 @@ } result = this.efficiencyStatisticalRate(efficiencyList); if (result.getOpenRate().compareTo(new BigDecimal("0")) > 0) { - result.setOpenRate(result.getOpenRate().multiply(new BigDecimal("100")).divide(new BigDecimal(equipmentIds.size()), 2, BigDecimal.ROUND_HALF_UP)); + result.setOpenRate(result.getOpenRate().multiply(new BigDecimal("100")).divide(new BigDecimal(vo.getEquipmentIdList().size()), 2, BigDecimal.ROUND_HALF_UP)); } if (result.getUtilizationRate().compareTo(new BigDecimal("0")) > 0) { - result.setUtilizationRate(result.getUtilizationRate().multiply(new BigDecimal(100)).divide(new BigDecimal(equipmentIds.size()), 2, BigDecimal.ROUND_HALF_UP)); + result.setUtilizationRate(result.getUtilizationRate().multiply(new BigDecimal(100)).divide(new BigDecimal(vo.getEquipmentIdList().size()), 2, BigDecimal.ROUND_HALF_UP)); } if (result.getOpenLong().compareTo(new BigDecimal(0)) > 0 && result.getProcessLong().compareTo(new BigDecimal(0)) > 0) { result.setUsedOpenRate(result.getProcessLong().divide(result.getOpenLong(), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100))); @@ -795,7 +821,7 @@ } } else if (StringUtils.isNotEmpty(vo.getEquipmentId())) { // 鍗曞彴璁惧淇℃伅 - vo.setEquipmentIdList(Collections.singletonList(vo.getEquipmentId())); + vo.setEquipmentIdList(Arrays.asList(vo.getEquipmentId().split(","))); } else { // 鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭� if ("2".equals(vo.getTypeTree())) { @@ -1030,9 +1056,9 @@ * @return */ @Override - public MdcEfficiencyVo utilizationRateSectionAnalyze(String userId, DayUtilizationRateContrastQueryVo vo) { - MdcEfficiencyVo result = new MdcEfficiencyVo(); - List<MdcEfficiencyListDto> listDtos = new ArrayList<>(); + public MdcUtilizationRateDto utilizationRateSectionAnalyze(String userId, DayUtilizationRateContrastQueryVo vo) { + MdcUtilizationRateDto result = new MdcUtilizationRateDto(); + List<MdcUtilizationRateListDto> listDtos = new ArrayList<>(); List<String> equipmentIds = new ArrayList<>(); if (StringUtils.isNotEmpty(vo.getParentId()) && StringUtils.isEmpty(vo.getEquipmentId())) { if ("2".equals(vo.getTypeTree())) { @@ -1074,129 +1100,38 @@ 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())); 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: - } - 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: - } - }); - } - } + MdcUtilizationRateListDto mdcUtilizationRateListDto = new MdcUtilizationRateListDto(); + mdcUtilizationRateListDto.setEquipmentId(mdcEquDepDto.getEquipmentId()); + mdcUtilizationRateListDto.setEquipmentName(mdcEquDepDto.getEquipmentName()); + mdcUtilizationRateListDto.setEquipmentType(mdcEquDepDto.getEquipmentType()); // - List<MdcEfficiencyResultDto> list = new ArrayList<>(); + List<MdcUtilizationResultDto> list = new ArrayList<>(); for (String date : dateList) { Date startTime = DateUtils.toDate(date + " " + startString + ":00", DateUtils.STR_DATE_TIME_SMALL); Date endTime = DateUtils.toDate(date + " " + endString + ":00", DateUtils.STR_DATE_TIME_SMALL); - list.add(this.utilizationRate(mdcEquDepDto.getEquipmentId(), startTime, endTime, date, mdcUtilizationRateList)); + list.add(this.utilizationRate(mdcEquDepDto.getEquipmentId(), mdcEquDepDto.getEquipmentName(), mdcEquDepDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList)); } - mdcEfficiencyListDto.setDataList(list); - listDtos.add(mdcEfficiencyListDto); + mdcUtilizationRateListDto.setDataList(list); + listDtos.add(mdcUtilizationRateListDto); } } else { // 浜х嚎灞傜骇 List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); - // 鏌ヨ鎵�鏈変骇绾夸俊鎭� - List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); for (MdcEquProDto mdcEquProDto : equipmentList) { - MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto(); + MdcUtilizationRateListDto mdcEfficiencyListDto = new MdcUtilizationRateListDto(); 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: - } - 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: - } - }); - } - } // - List<MdcEfficiencyResultDto> list = new ArrayList<>(); + List<MdcUtilizationResultDto> list = new ArrayList<>(); for (String date : dateList) { Date startTime = DateUtils.toDate(date + " " + startString + ":00", DateUtils.STR_DATE_TIME_SMALL); Date endTime = DateUtils.toDate(date + " " + endString + ":00", DateUtils.STR_DATE_TIME_SMALL); - list.add(this.utilizationRate(mdcEquProDto.getEquipmentId(), startTime, endTime, date, mdcUtilizationRateList)); + list.add(this.utilizationRate(mdcEquProDto.getEquipmentId(), mdcEquProDto.getEquipmentName(), mdcEquProDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList)); } mdcEfficiencyListDto.setDataList(list); listDtos.add(mdcEfficiencyListDto); @@ -1207,9 +1142,105 @@ return result; } - private MdcEfficiencyResultDto utilizationRate(String equipmentId, Date startTime, Date endTime, String date, List<MdcUtilizationRate> mdcUtilizationRateList) { - MdcEfficiencyResultDto dto = new MdcEfficiencyResultDto(); - dto.setTheDate(DateUtils.format(DateUtils.toDate(date, DateUtils.STR_DATE), DateUtils.STRDATE)); + /** + * 璁惧鍒╃敤鐜囪蛋鍔垮垎鏋� + * + * @param userId + * @param vo + * @return + */ + @Override + public MdcUtilizationRateDto utilizationRateTrendAnalyze(String userId, DayUtilizationRateContrastQueryVo vo) { + MdcUtilizationRateDto result = new MdcUtilizationRateDto(); + List<MdcUtilizationRateListDto> listDtos = new ArrayList<>(); + List<String> equipmentIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(vo.getParentId()) && StringUtils.isEmpty(vo.getEquipmentId())) { + if ("2".equals(vo.getTypeTree())) { + // 閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, vo.getParentId()); + } else { + // 浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, vo.getParentId()); + } + } else if (StringUtils.isNotEmpty(vo.getEquipmentId())) { + // 鍗曞彴璁惧淇℃伅 + vo.setEquipmentIdList(Collections.singletonList(vo.getEquipmentId())); + } else { + // 鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭� + if ("2".equals(vo.getTypeTree())) { + // 閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null); + } else { + // 浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null); + } + } + + if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { + vo.setEquipmentIdList(equipmentIds); + } + + List<String> dateList = DateUtils.getDatesStringList(DateUtils.getShortDate2(vo.getStartDate()), DateUtils.getShortDate2(vo.getEndDate())); + result.setDates(dateList); + + if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { + result.setMdcEfficiencyList(listDtos); + } else { + // 鍒╃敤鐜囩瓑绾� + List<MdcUtilizationRate> mdcUtilizationRateList = mdcUtilizationRateService.listByType("lyl"); + if ("2".equals(vo.getTypeTree())) { + // 閮ㄩ棬灞傜骇 + List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList()); + + for (MdcEquDepDto mdcEquDepDto : equipmentList) { + MdcUtilizationRateListDto mdcEfficiencyListDto = new MdcUtilizationRateListDto(); + mdcEfficiencyListDto.setEquipmentId(mdcEquDepDto.getEquipmentId()); + mdcEfficiencyListDto.setEquipmentName(mdcEquDepDto.getEquipmentName()); + mdcEfficiencyListDto.setEquipmentType(mdcEquDepDto.getEquipmentType()); + + List<MdcUtilizationResultDto> list = new ArrayList<>(); + for (String date : dateList) { + Date startTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL); + Date endTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL); + endTime = DateUtils.addDays(endTime, 1); + list.add(this.utilizationRate(mdcEquDepDto.getEquipmentId(), mdcEquDepDto.getEquipmentName(), mdcEquDepDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList)); + } + mdcEfficiencyListDto.setDataList(list); + listDtos.add(mdcEfficiencyListDto); + } + + } else { + // 浜х嚎灞傜骇 + List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); + + for (MdcEquProDto mdcEquProDto : equipmentList) { + MdcUtilizationRateListDto mdcEfficiencyListDto = new MdcUtilizationRateListDto(); + mdcEfficiencyListDto.setEquipmentId(mdcEquProDto.getEquipmentId()); + mdcEfficiencyListDto.setEquipmentName(mdcEquProDto.getEquipmentName()); + mdcEfficiencyListDto.setEquipmentType(mdcEquProDto.getEquipmentType()); + List<MdcUtilizationResultDto> list = new ArrayList<>(); + for (String date : dateList) { + Date startTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL); + Date endTime = DateUtils.toDate(date + " 00:00:00", DateUtils.STR_DATE_TIME_SMALL); + endTime = DateUtils.addDays(endTime, 1); + list.add(this.utilizationRate(mdcEquProDto.getEquipmentId(), mdcEquProDto.getEquipmentName(), mdcEquProDto.getEquipmentType(), startTime, endTime, date, mdcUtilizationRateList)); + } + mdcEfficiencyListDto.setDataList(list); + listDtos.add(mdcEfficiencyListDto); + } + } + result.setMdcEfficiencyList(listDtos); + } + + return result; + } + + private MdcUtilizationResultDto utilizationRate(String equipmentId, String equipmentName, String equipmentType, Date startTime, Date endTime, String date, List<MdcUtilizationRate> mdcUtilizationRateList) { + MdcUtilizationResultDto dto = new MdcUtilizationResultDto(); + dto.setEquipmentId(equipmentId); + dto.setEquipmentName(equipmentName); + dto.setEquipmentType(equipmentType); + dto.setTheDate(date); List<MdcEquipmentRunningSection> runningSections = mdcEquipmentRunningSectionService.listEquipmentRunningSection(equipmentId, startTime.getTime(), endTime.getTime()); if (runningSections != null && !runningSections.isEmpty()) { // 鏃堕棿淇 @@ -1238,6 +1269,9 @@ if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { dto.setColor(mdcUtilizationRate.getRateParameterColor()); } + } + if (StringUtils.isBlank(dto.getColor())) { + dto.setColor(mdcUtilizationRateList.get(mdcUtilizationRateList.size() - 1).getRateParameterColor()); } return dto; } @@ -1274,20 +1308,6 @@ mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); } } - } else { - mdcEfficiencyResultDto.setTheDate(date); - mdcEfficiencyResultDto.setProcessLong(new BigDecimal("0")); - mdcEfficiencyResultDto.setUtilizationRate(new BigDecimal("0")); - mdcEfficiencyResultDto.setStartRate(new BigDecimal("0")); - mdcEfficiencyResultDto.setOpenRate(new BigDecimal("0")); - mdcEfficiencyResultDto.setOpenLong(new BigDecimal("0")); - mdcEfficiencyResultDto.setWaitLong(new BigDecimal("0")); - mdcEfficiencyResultDto.setCloseLong(new BigDecimal("0")); - for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { - if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) { - mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); - } - } } } } else { @@ -1305,7 +1325,21 @@ } } } - + if (StringUtils.isBlank(mdcEfficiencyResultDto.getColor())) { + mdcEfficiencyResultDto.setTheDate(date); + mdcEfficiencyResultDto.setProcessLong(new BigDecimal("0")); + mdcEfficiencyResultDto.setUtilizationRate(new BigDecimal("0")); + mdcEfficiencyResultDto.setStartRate(new BigDecimal("0")); + mdcEfficiencyResultDto.setOpenRate(new BigDecimal("0")); + mdcEfficiencyResultDto.setOpenLong(new BigDecimal("0")); + mdcEfficiencyResultDto.setWaitLong(new BigDecimal("0")); + mdcEfficiencyResultDto.setCloseLong(new BigDecimal("0")); + for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { + if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) { + mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); + } + } + } return mdcEfficiencyResultDto; } -- Gitblit v1.9.3