lius
2023-07-19 632a346f1fd07ab659bfc68e70bd6e254b0e8c51
统计分析接口
已添加1个文件
已修改5个文件
172 ■■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportQueryVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/StatisticalAnalysisVo.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}
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
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);
}
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()) {
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;
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");
}