From 61bd1f27cb0f83890bfcd9aec6257eda13c0fc4d Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期二, 04 三月 2025 10:43:32 +0800 Subject: [PATCH] 看板周利用率,日利用率 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java | 124 ++++++++++++++++++++++++++++++++++++----- 1 files changed, 108 insertions(+), 16 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java index b33f90f..89c26e7 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java @@ -8,8 +8,9 @@ import org.jeecg.modules.mdc.service.IMdcEquipmentStatisticalInfoService; import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.screen.dto.EquipmentStatusOverview; -import org.jeecg.modules.screen.dto.UtilizationMonth; -import org.jeecg.modules.screen.dto.UtilizationMonthDto; +import org.jeecg.modules.screen.dto.UtilizationDayDto; +import org.jeecg.modules.screen.dto.UtilizationRate; +import org.jeecg.modules.screen.dto.UtilizationRateDto; import org.jeecg.modules.screen.service.MdcLargeScreenService; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.service.IMdcProductionService; @@ -18,6 +19,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -115,12 +117,12 @@ result.put("dateList", dateList); // 璁$畻姣忎釜瀛愮敓浜х殑鏈堝害鍒╃敤鐜� - List<UtilizationMonthDto> utilizationMonthDtoList = mdcProductionList.stream() + List<UtilizationRateDto> utilizationMonthDtoList = mdcProductionList.stream() .map(mdcProduction -> createUtilizationMonthDto(mdcProduction, dateLists)) .collect(Collectors.toList()); // 璁$畻鎬诲巶鐨勬湀搴﹀埄鐢ㄧ巼 - UtilizationMonthDto totalUtilizationMonthDto = createTotalUtilizationMonthDto(productionId, dateLists); + UtilizationRateDto totalUtilizationMonthDto = createTotalUtilizationMonthDto(productionId, dateLists); utilizationMonthDtoList.add(totalUtilizationMonthDto); result.put("dataList", utilizationMonthDtoList); @@ -128,14 +130,104 @@ } /** + * 璁惧鍛ㄥ埄鐢ㄧ巼瓒嬪娍 + * + * @param productionId + * @return + */ + @Override + public Map<String, Object> weekUtilizationTendency(String productionId) { + Map<String, Object> result = new HashMap<>(); + + // 鑾峰彇瀛愮敓浜у垪琛� + List<MdcProduction> mdcProductionList = mdcProductionService.list( + new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, productionId) + ); + + if (mdcProductionList == null || mdcProductionList.isEmpty()) { + return result; + } + // 鐢熸垚鍛ㄨ寖鍥� + List<String> dateList = DateUtils.getNearWeek(); + result.put("dateList", dateList); + // 璁$畻姣忎釜宸ユ鐨勫埄鐢ㄧ巼 + List<UtilizationRateDto> utilizationMonthDtoList = new ArrayList<>(); + for (MdcProduction mdcProduction : mdcProductionList) { + UtilizationRateDto utilizationRateDto = new UtilizationRateDto(); + utilizationRateDto.setProductionId(mdcProduction.getId()); + utilizationRateDto.setProductionName(mdcProduction.getProductionName()); + List<UtilizationRate> utilizationRates = dateList.stream() + .map(date -> { + UtilizationRate utilizationMonth = new UtilizationRate(); + utilizationMonth.setDate(date); + BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeek(productionId, date.replaceAll("-", "")); + utilizationMonth.setUtilizationRate(utilizationRate); + return utilizationMonth; + }) + .collect(Collectors.toList()); + utilizationRateDto.setUtilizationMonthList(utilizationRates); + utilizationMonthDtoList.add(utilizationRateDto); + } + //璁$畻鎬诲巶鐨勫埄鐢ㄧ巼 + UtilizationRateDto utilizationRateDto = new UtilizationRateDto(); + utilizationRateDto.setProductionName("鎬诲巶"); + List<UtilizationRate> utilizationRates = dateList.stream() + .map(date -> { + UtilizationRate utilizationMonth = new UtilizationRate(); + utilizationMonth.setDate(date); + BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeekTotal(productionId, date.replaceAll("-", "")); + utilizationMonth.setUtilizationRate(utilizationRate); + return utilizationMonth; + }) + .collect(Collectors.toList()); + utilizationRateDto.setUtilizationMonthList(utilizationRates); + utilizationMonthDtoList.add(utilizationRateDto); + result.put("dataList", utilizationMonthDtoList); + return result; + } + + /** + * 璁惧鏃ュ埄鐢ㄧ巼 + * + * @param productionId + * @return + */ + @Override + public Map<String, Object> dayUtilizationTendency(String productionId) { + Map<String, Object> result = new HashMap<>(); + // 鑾峰彇瀛愮敓浜у垪琛� + List<MdcProduction> mdcProductionList = mdcProductionService.list( + new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, productionId) + ); + + if (mdcProductionList == null || mdcProductionList.isEmpty()) { + return result; + } + List<String> productionList = mdcProductionList.stream().map(MdcProduction::getProductionName).collect(Collectors.toList()); + result.put("productionList", productionList); + + String date = LocalDate.now().minusDays(1).toString().replaceAll("-", ""); + List<UtilizationDayDto> utilizationDayDtos = new ArrayList<>(); + for (MdcProduction mdcProduction : mdcProductionList) { + UtilizationDayDto utilizationDayDto = new UtilizationDayDto(); + utilizationDayDto.setProductionName(mdcProduction.getProductionName()); + BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeekTotal(mdcProduction.getId(), date); + utilizationDayDto.setUtilizationRate(utilizationRate); + utilizationDayDtos.add(utilizationDayDto); + } + result.put("dataList", utilizationDayDtos); + return result; + } + + /** * 鍒涘缓瀛愮敓浜х殑鏈堝害鍒╃敤鐜� DTO */ - private UtilizationMonthDto createUtilizationMonthDto(MdcProduction mdcProduction, List<String[]> dateLists) { - UtilizationMonthDto utilizationMonthDto = new UtilizationMonthDto(); + private UtilizationRateDto createUtilizationMonthDto(MdcProduction mdcProduction, List<String[]> dateLists) { + UtilizationRateDto utilizationMonthDto = new UtilizationRateDto(); utilizationMonthDto.setProductionId(mdcProduction.getId()); utilizationMonthDto.setProductionName(mdcProduction.getProductionName()); - List<UtilizationMonth> utilizationMonthList = calculateUtilizationRates(mdcProduction.getId(), dateLists); + List<UtilizationRate> utilizationMonthList = calculateUtilizationRates(mdcProduction.getId(), dateLists); utilizationMonthDto.setUtilizationMonthList(utilizationMonthList); return utilizationMonthDto; @@ -144,11 +236,11 @@ /** * 鍒涘缓鎬诲巶鐨勬湀搴﹀埄鐢ㄧ巼 DTO */ - private UtilizationMonthDto createTotalUtilizationMonthDto(String productionId, List<String[]> dateLists) { - UtilizationMonthDto utilizationMonthDto = new UtilizationMonthDto(); + private UtilizationRateDto createTotalUtilizationMonthDto(String productionId, List<String[]> dateLists) { + UtilizationRateDto utilizationMonthDto = new UtilizationRateDto(); utilizationMonthDto.setProductionName("鎬诲巶"); - List<UtilizationMonth> utilizationMonthList = calculateUtilizationRatesTotal(productionId, dateLists); + List<UtilizationRate> utilizationMonthList = calculateUtilizationRatesTotal(productionId, dateLists); utilizationMonthDto.setUtilizationMonthList(utilizationMonthList); return utilizationMonthDto; @@ -157,11 +249,11 @@ /** * 璁$畻瀛愮敓浜х殑鏈堝害鍒╃敤鐜� */ - private List<UtilizationMonth> calculateUtilizationRates(String productionId, List<String[]> dateLists) { + private List<UtilizationRate> calculateUtilizationRates(String productionId, List<String[]> dateLists) { return dateLists.stream() .map(dates -> { - UtilizationMonth utilizationMonth = new UtilizationMonth(); - utilizationMonth.setMonth(dates[2]); + UtilizationRate utilizationMonth = new UtilizationRate(); + utilizationMonth.setDate(dates[2]); BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationMonth(productionId, dates[0], dates[1]); utilizationMonth.setUtilizationRate(utilizationRate); return utilizationMonth; @@ -172,11 +264,11 @@ /** * 璁$畻鎬诲巶鐨勬湀搴﹀埄鐢ㄧ巼 */ - private List<UtilizationMonth> calculateUtilizationRatesTotal(String productionId, List<String[]> dateLists) { + private List<UtilizationRate> calculateUtilizationRatesTotal(String productionId, List<String[]> dateLists) { return dateLists.stream() .map(dates -> { - UtilizationMonth utilizationMonth = new UtilizationMonth(); - utilizationMonth.setMonth(dates[2]); + UtilizationRate utilizationMonth = new UtilizationRate(); + utilizationMonth.setDate(dates[2]); BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationMonthTotal(productionId, dates[0], dates[1]); utilizationMonth.setUtilizationRate(utilizationRate); return utilizationMonth; -- Gitblit v1.9.3