From 93042b5fc739ee2cf38fb5be3380107c9a3f001a Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期一, 15 四月 2024 15:41:45 +0800 Subject: [PATCH] 设备级效率接口 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcHomeEquipmentVo.java | 34 +++++++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/IMdcHomeServiceImpl.java | 75 +++++++++++++++++++++++- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java | 14 ++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcHomeService.java | 11 +++ 5 files changed, 131 insertions(+), 4 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java index 2b64c30..0c52d3c 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java @@ -19,6 +19,7 @@ import org.jeecg.modules.system.service.IMdcProductionService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -210,5 +211,18 @@ return Result.OK(result); } + @ApiOperation(value = "MDC棣栭〉鎺ュ彛-璁惧绾ц澶囨晥鐜囩粺璁�", notes = "MDC棣栭〉鎺ュ彛-璁惧绾ц澶囨晥鐜囩粺璁�") + @GetMapping("/equipmentLevelEfficiencyStatistics") + public Result<?> equipmentLevelEfficiencyStatistics(@RequestParam(name = "equipmentId", required = true) String equipmentId) { + MdcHomeEfficiencyVo result = mdcHomeService.getEquipmentLevelEfficiencyStatistics(equipmentId); + return Result.OK(result); + } + + @ApiOperation(value = "MDC棣栭〉鎺ュ彛-璁惧绾ф暣骞村害鍒╃敤鐜�", notes = "MDC棣栭〉鎺ュ彛-璁惧绾ф暣骞村害鍒╃敤鐜�") + @GetMapping("/equipmentAnnualEfficiencyStatistics") + public Result<?> equipmentAnnualEfficiencyStatistics(@RequestParam(name = "equipmentId", required = true) String equipmentId) { + Map<String, Object> result = mdcHomeService.getEquipmentAnnualEfficiencyStatistics(equipmentId); + return Result.OK(result); + } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml index 25e3308..6dd9f0c 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml @@ -47,6 +47,7 @@ <select id="getUtilizationByMonth" resultType="java.util.Map"> SELECT SUM(process_long) processLong, + SUM(open_long) openLong, COUNT(*) processDay FROM mdc_equipment_statistical_info diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcHomeService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcHomeService.java index 9b52a4c..236c42c 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcHomeService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcHomeService.java @@ -47,4 +47,15 @@ * 宸ユ绾ц澶囨晥鐜� */ MdcHomeEfficiencyVo getEquipmentEfficiencyStatistics(String userId, String key); + + /** + * 璁惧绾ф晥鐜囩粺璁� + */ + MdcHomeEfficiencyVo getEquipmentLevelEfficiencyStatistics(String equipmentId); + + /** + * 璁惧绾ф暣骞村害鍒╃敤鐜囧拰OEE + */ + Map<String, Object> getEquipmentAnnualEfficiencyStatistics(String equipmentId); + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/IMdcHomeServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/IMdcHomeServiceImpl.java index ac51b0e..e859470 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/IMdcHomeServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/IMdcHomeServiceImpl.java @@ -9,10 +9,7 @@ import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.service.IMdcHomeService; import org.jeecg.modules.mdc.util.DateUtils; -import org.jeecg.modules.mdc.vo.EquipmentDayUtilizationVo; -import org.jeecg.modules.mdc.vo.MdcCommonVo; -import org.jeecg.modules.mdc.vo.MdcEquipmentStatusVo; -import org.jeecg.modules.mdc.vo.MdcHomeEfficiencyVo; +import org.jeecg.modules.mdc.vo.*; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.service.IMdcProductionService; import org.springframework.stereotype.Service; @@ -362,4 +359,74 @@ } return result; } + + /** + * 璁惧绾ф晥鐜囩粺璁� + */ + @Override + public MdcHomeEfficiencyVo getEquipmentLevelEfficiencyStatistics(String equipmentId) { + MdcHomeEfficiencyVo result = new MdcHomeEfficiencyVo(); + String date = DateUtils.format(DateUtils.toDate(LocalDate.now().plusDays(-1).toString(), DateUtils.STR_DATE), DateUtils.STRDATE); + MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo = mdcHomeMapper.getUtilizationByDay(Arrays.asList(equipmentId.split(",")), date); + if (mdcEquipmentStatisticalInfo != null) { + result.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP)); + if (BigDecimal.ZERO.compareTo(mdcEquipmentStatisticalInfo.getOpenLong()) == -1) { + result.setOpenRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(mdcEquipmentStatisticalInfo.getOpenLong(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); + result.setStartRate(mdcEquipmentStatisticalInfo.getOpenLong().divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP)); + } + } + //鑾峰彇OEE鏁版嵁 + String month = DateUtils.format(DateUtils.toDate(LocalDate.now().plusMonths(-1).toString(), DateUtils.STR_DATE), DateUtils.STR_YEAR_MONTH); + BigDecimal oee = mdcHomeMapper.getOeeByDate(Arrays.asList(equipmentId.split(",")), month); + if (oee == null || oee.compareTo(BigDecimal.ZERO) == 0) { + result.setOverallEquipmentEfficiency(BigDecimal.ZERO); + } else { + result.setOverallEquipmentEfficiency(oee.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); + } + return result; + } + + /** + * 璁惧绾ф暣骞村害鍒╃敤鐜� + */ + @Override + public Map<String, Object> getEquipmentAnnualEfficiencyStatistics(String equipmentId) { + Map<String, Object> result = new HashMap<>(); + Date end = DateUtils.toDate(LocalDate.now().plusMonths(-1).toString(), DateUtils.STR_DATE); + Date start = DateUtils.toDate(LocalDate.now().plusMonths(-12).toString(), DateUtils.STR_DATE); + List<String> monthBetween = DateUtils.getMonthBetween(start, end); + List<String> dateList = new ArrayList<>(); + List<MdcHomeEquipmentVo> dataList = new ArrayList<>(); + for (String month : monthBetween) { + String name = month.substring(month.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "鏈�"; + dateList.add(name); + //鍒╃敤鐜囧拰oee + MdcHomeEquipmentVo mdcHomeEquipmentVo = new MdcHomeEquipmentVo(); + mdcHomeEquipmentVo.setMonth(name); + //鍒╃敤鐜� + Map<String, Object> resultMap = mdcHomeMapper.getUtilizationByMonth(Arrays.asList(equipmentId.split(",")), month.replace("-", "")); + if (resultMap != null && resultMap.get("processLong") != null) { + BigDecimal processLong = BigDecimal.valueOf((Double) resultMap.get("processLong")); + BigDecimal openLong = BigDecimal.valueOf((Double) resultMap.get("openLong")); + BigDecimal processDay = new BigDecimal((Integer) resultMap.get("processDay")); + if (BigDecimal.ZERO.compareTo(processLong) == -1) { + mdcHomeEquipmentVo.setUtilizationRate(processLong.divide(processDay.multiply(new BigDecimal("86400")), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); + if (BigDecimal.ZERO.compareTo(openLong) == -1) { + mdcHomeEquipmentVo.setStartRate(openLong.divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP)); + mdcHomeEquipmentVo.setOpenRate(processDay.divide(openLong, 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); + } + } + } + + //OEE + BigDecimal oee = mdcHomeMapper.getOeeByDate(Arrays.asList(equipmentId.split(",")), month); + if (oee != null && !(oee.compareTo(BigDecimal.ZERO) == 0)) { + mdcHomeEquipmentVo.setOverallEquipmentEfficiency(oee.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); + } + dataList.add(mdcHomeEquipmentVo); + } + result.put("dateList", dateList); + result.put("dataList", dataList); + return result; + } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcHomeEquipmentVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcHomeEquipmentVo.java new file mode 100644 index 0000000..d4e7250 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcHomeEquipmentVo.java @@ -0,0 +1,34 @@ +package org.jeecg.modules.mdc.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author Lius + * @date 2024/4/15 14:24 + */ +@Data +public class MdcHomeEquipmentVo { + /** + * 鏈堜唤 + */ + private String month; + /** + * 鍒╃敤鐜� + */ + private BigDecimal utilizationRate = BigDecimal.ZERO; + /** + * 寮�鍔ㄧ巼 + */ + private BigDecimal startRate = BigDecimal.ZERO; + /** + * 寮�鏈虹巼 + */ + private BigDecimal openRate = BigDecimal.ZERO; + /** + * OEE + */ + private BigDecimal overallEquipmentEfficiency = BigDecimal.ZERO; + +} -- Gitblit v1.9.3