Lius
2024-04-15 93042b5fc739ee2cf38fb5be3380107c9a3f001a
设备级效率接口
已添加1个文件
已修改4个文件
135 ■■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcHomeService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/IMdcHomeServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcHomeEquipmentVo.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}
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
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);
}
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;
    }
}
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;
}