From 632a346f1fd07ab659bfc68e70bd6e254b0e8c51 Mon Sep 17 00:00:00 2001 From: lius <Lius2225@163.com> Date: 星期三, 19 七月 2023 16:10:55 +0800 Subject: [PATCH] 统计分析接口 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/StatisticalAnalysisVo.java | 54 ++++++++++++++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java | 80 +++++++++++++++++++++++++- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java | 15 +++- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportQueryVo.java | 4 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java | 15 +++- 6 files changed, 158 insertions(+), 14 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java index 874b959..b597903 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java @@ -8,10 +8,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.mdc.service.MdcEfficiencyReportService; -import org.jeecg.modules.mdc.vo.MdcEfficiencyReportQueryVo; -import org.jeecg.modules.mdc.vo.MdcEfficiencyReportShiftQueryVo; -import org.jeecg.modules.mdc.vo.MdcEfficiencyShiftVo; -import org.jeecg.modules.mdc.vo.MdcEfficiencyVo; +import org.jeecg.modules.mdc.vo.*; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -61,4 +58,14 @@ return Result.OK(result); } + @AutoLog(value = "璁惧鏁堢巼鎶ヨ〃-缁熻鍒嗘瀽鍒楄〃") + @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-缁熻鍒嗘瀽鍒楄〃", notes = "璁惧鏁堢巼鎶ヨ〃-缁熻鍒嗘瀽鍒楄〃") + @GetMapping("/dayStatisticalRate") + public Result dayStatisticalRate(MdcEfficiencyReportQueryVo vo) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + StatisticalAnalysisVo result = mdcEfficiencyReportService.dayStatisticalRate(userId, vo); + return Result.OK(result); + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml index f930d30..d5d3516 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml @@ -8,7 +8,7 @@ t2.equipment_id equipmentId, t2.equipment_name equipmentName, t2.equipment_type equipmentType, - t1.the_date, + t1.the_date theDate, t1.process_long processLong, t1.process_long / 86400 utilizationRate, CASE @@ -40,7 +40,7 @@ t2.equipment_id equipmentId, t2.equipment_name equipmentName, t2.equipment_type equipmentType, - t1.the_date, + t1.the_date theDate, t1.process_long processLong, CASE WHEN t1.open_long > 0 THEN diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java index 068b6f5..3c3f982 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java @@ -1,9 +1,6 @@ package org.jeecg.modules.mdc.service; -import org.jeecg.modules.mdc.vo.MdcEfficiencyReportQueryVo; -import org.jeecg.modules.mdc.vo.MdcEfficiencyReportShiftQueryVo; -import org.jeecg.modules.mdc.vo.MdcEfficiencyShiftVo; -import org.jeecg.modules.mdc.vo.MdcEfficiencyVo; +import org.jeecg.modules.mdc.vo.*; /** * @author: LiuS @@ -37,4 +34,14 @@ * @return */ MdcEfficiencyShiftVo efficiencyShiftList(String userId, MdcEfficiencyReportShiftQueryVo vo); + + /** + * 缁熻鍒嗘瀽鍒楄〃 + * + * @param userId + * @param vo + * @return + */ + StatisticalAnalysisVo dayStatisticalRate(String userId, MdcEfficiencyReportQueryVo vo); + } 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 2e732c1..f7c0b2d 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 @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.mdc.dto.*; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcUtilizationRate; @@ -11,10 +12,7 @@ import org.jeecg.modules.mdc.service.IMdcUtilizationRateService; import org.jeecg.modules.mdc.service.MdcEfficiencyReportService; import org.jeecg.modules.mdc.util.DateUtils; -import org.jeecg.modules.mdc.vo.MdcEfficiencyReportQueryVo; -import org.jeecg.modules.mdc.vo.MdcEfficiencyReportShiftQueryVo; -import org.jeecg.modules.mdc.vo.MdcEfficiencyShiftVo; -import org.jeecg.modules.mdc.vo.MdcEfficiencyVo; +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; @@ -458,6 +456,80 @@ return result; } + /** + * 缁熻鍒嗘瀽鍒楄〃 + * + * @param userId + * @param vo + * @return + */ + @Override + public StatisticalAnalysisVo dayStatisticalRate(String userId, MdcEfficiencyReportQueryVo vo) { + StatisticalAnalysisVo result = new StatisticalAnalysisVo(); + 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); + } + if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { + return result; + } + + if (!StringUtils.isNotEmpty(vo.getDateTime())) { + throw new JeecgBootException("璇疯緭鍏ユ煡璇㈡潯浠舵椂闂�"); + } + vo.setStartTime(vo.getDateTime()); + vo.setEndTime(vo.getDateTime()); + List<MdcEfficiencyDto> efficiencyList = mdcEfficiencyReportMapper.efficiencyList(vo); + if (efficiencyList == null || efficiencyList.isEmpty()) { + return result; + } + 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)); + } + 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)); + } + 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))); + } + return result; + } + + private StatisticalAnalysisVo efficiencyStatisticalRate(List<MdcEfficiencyDto> efficiencyList) { + StatisticalAnalysisVo vo = new StatisticalAnalysisVo(); + for (MdcEfficiencyDto mdcEfficiencyDto : efficiencyList) { + vo.setUtilizationRate(vo.getUtilizationRate().add(mdcEfficiencyDto.getUtilizationRate())); + vo.setOpenRate(vo.getOpenRate().add(mdcEfficiencyDto.getOpenRate())); + vo.setOpenLong(vo.getOpenLong().add(mdcEfficiencyDto.getOpenLong())); + vo.setProcessLong(vo.getProcessLong().add(mdcEfficiencyDto.getProcessLong())); + vo.setWaitLong(vo.getWaitLong().add(mdcEfficiencyDto.getWaitLong())); + vo.setCloseLong(vo.getCloseLong().add(mdcEfficiencyDto.getCloseLong())); + } + return vo; + } + private MdcEfficiencyResultDto efficiencyRate(List<MdcEfficiencyDto> efficiencyList, String date, String equipmentId, List<MdcUtilizationRate> mdcUtilizationRateList) { MdcEfficiencyResultDto mdcEfficiencyResultDto = new MdcEfficiencyResultDto(); if (efficiencyList != null && !efficiencyList.isEmpty()) { diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportQueryVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportQueryVo.java index 6af5883..0a0cc3f 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportQueryVo.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportQueryVo.java @@ -12,6 +12,10 @@ public class MdcEfficiencyReportQueryVo { /** + * 鏃ユ湡 + */ + private String dateTime; + /** * 寮�濮嬫椂闂� -> 20220101 */ private String startTime; diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/StatisticalAnalysisVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/StatisticalAnalysisVo.java new file mode 100644 index 0000000..caad82b --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/StatisticalAnalysisVo.java @@ -0,0 +1,54 @@ +package org.jeecg.modules.mdc.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author: LiuS + * @create: 2023-07-19 14:33 + */ +@Data +public class StatisticalAnalysisVo { + + /** + * 寮�鏈烘椂闀� UPT + */ + private BigDecimal openLong = new BigDecimal("0"); + /** + * 寰呮満鏃堕暱 + */ + private BigDecimal waitLong = new BigDecimal("0"); + /** + * 鍔犲伐鏃堕暱 EMT + */ + private BigDecimal processLong = new BigDecimal("0"); + /** + * 鎶ヨ + */ + private BigDecimal errorLong = new BigDecimal("0"); + /** + * 鍏虫満鏃堕暱 + */ + private BigDecimal closeLong = new BigDecimal("0"); + /** + * 鏃ユ湡 + */ + private String theDate; + /** + * 鎬绘椂闀� MT + */ + private BigDecimal totalLong = new BigDecimal("0"); + /** + * 寮�鏈虹巼 + */ + private BigDecimal openRate = new BigDecimal("0"); + /** + * 鍒╃敤鐜� + */ + private BigDecimal utilizationRate = new BigDecimal("0"); + /** + * 杩愯鐜� + */ + private BigDecimal usedOpenRate = new BigDecimal("0"); +} -- Gitblit v1.9.3