qushaowei
2024-03-14 63d50da13d256f7df075f37054a239740bf172ac
Merge branch 'master' of http://117.34.109.166:18448/r/mdc_430 into develop
已添加4个文件
已修改10个文件
591 ■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentLogMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcHomeMapper.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentLogMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentLogService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcHomeService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentLogServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/IMdcHomeServiceImpl.java 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcCommonVo.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java
@@ -11,6 +11,7 @@
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.mdc.constant.MdcConstant;
import org.jeecg.modules.mdc.service.IMdcEquipmentService;
import org.jeecg.modules.mdc.service.IMdcHomeService;
import org.jeecg.modules.mdc.vo.MdcCommonVo;
import org.jeecg.modules.system.entity.MdcProduction;
import org.jeecg.modules.system.service.IMdcProductionService;
@@ -20,6 +21,7 @@
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
 * @author Lius
@@ -37,6 +39,9 @@
    @Resource
    private IMdcProductionService mdcProductionService;
    @Resource
    private IMdcHomeService mdcHomeService;
    @ApiOperation(value = "MDC首页接口-设备运行状态统计", notes = "MDC首页接口-设备运行状态统计")
    @GetMapping("/equipmentStatusStatistics")
@@ -60,7 +65,85 @@
                key = mdcProductionService.findFirstProduction(userId, mdcProduction.getId());
            }
        }
        List<MdcCommonVo> resultMap = mdcEquipmentService.getEquipmentStatusStatistics(userId, key);
        List<MdcCommonVo> resultMap = mdcHomeService.getEquipmentStatusStatistics(userId, key);
        return Result.OK(resultMap);
    }
    @ApiOperation(value = "MDC首页接口-设备利用率统计(昨日)", notes = "MDC首页接口-设备运行状态统计(昨日)")
    @GetMapping("/equipmentUtilizationStatistics")
    public Result<?> equipmentUtilizationStatistics(String productionCode) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        Integer userType = user.getUserType();
        String userId = user.getId();
        String key = "";
        if (StringUtils.isNotBlank(productionCode)) {
            //厂区
            MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()));
            key = mdcProduction.getId();
        } else {
            //判断是公司级还是厂区
            MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, ""));
            if (userType.equals(MdcConstant.USER_TYPE_4)) {
                //公司
                key = mdcProduction.getId();
            } else if (userType.equals(MdcConstant.USER_TYPE_3)) {
                //厂区
                key = mdcProductionService.findFirstProduction(userId, mdcProduction.getId());
            }
        }
        List<MdcCommonVo> result = mdcHomeService.getEquipmentUtilizationStatistics(userId, key);
        return Result.OK(result);
    }
    @ApiOperation(value = "MDC首页接口-设备OEE统计(上月)", notes = "MDC首页接口-设备OEE统计(上月)")
    @GetMapping("/equipmentOEEStatistics")
    public Result<?> equipmentOEEStatistics(String productionCode) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        Integer userType = user.getUserType();
        String userId = user.getId();
        String key = "";
        if (StringUtils.isNotBlank(productionCode)) {
            //厂区
            MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()));
            key = mdcProduction.getId();
        } else {
            //判断是公司级还是厂区
            MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, ""));
            if (userType.equals(MdcConstant.USER_TYPE_4)) {
                //公司
                key = mdcProduction.getId();
            } else if (userType.equals(MdcConstant.USER_TYPE_3)) {
                //厂区
                key = mdcProductionService.findFirstProduction(userId, mdcProduction.getId());
            }
        }
        List<MdcCommonVo> result = mdcHomeService.getEquipmentOeeStatistics(userId, key);
        return Result.OK(result);
    }
    @ApiOperation(value = "MDC首页接口-设备OEE和利用率统计柱状图", notes = "MDC首页接口-设备OEE和利用率统计柱状图")
    @GetMapping("/equipmentMonthStatistics")
    public Result<?> equipmentMonthStatistics(String productionCode) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        Integer userType = user.getUserType();
        String userId = user.getId();
        String key = "";
        if (StringUtils.isNotBlank(productionCode)) {
            //厂区
            MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()));
            key = mdcProduction.getId();
        } else {
            //判断是公司级还是厂区
            MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, ""));
            if (userType.equals(MdcConstant.USER_TYPE_4)) {
                //公司
                key = mdcProduction.getId();
            } else if (userType.equals(MdcConstant.USER_TYPE_3)) {
                //厂区
                key = mdcProductionService.findFirstProduction(userId, mdcProduction.getId());
            }
        }
        Map<String, Object> result = mdcHomeService.getEquipmentMonthStatistics(userId, key);
        return Result.OK(result);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentLogMapper.java
@@ -5,6 +5,7 @@
import org.jeecg.modules.mdc.entity.EquipmentLog;
import java.util.Date;
import java.util.List;
/**
 * @author: LiuS
@@ -16,4 +17,6 @@
    EquipmentLog getRow(@Param("equipmentid") String equipmentid, @Param("startTime") Date startTime);
    EquipmentLog selectEquipmentOporation(@Param("equipmentId") String equipmentId);
    List<EquipmentLog> getEquipmentStatusList(@Param("equipmentIdList") List<String> equipmentIdList);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
@@ -9,7 +9,6 @@
import org.jeecg.modules.mdc.dto.MdcEquDepDto;
import org.jeecg.modules.mdc.dto.MdcEquProDto;
import org.jeecg.modules.mdc.dto.MdcEquipmentDto;
import org.jeecg.modules.mdc.entity.EquipmentLog;
import org.jeecg.modules.mdc.entity.MdcEquipment;
import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor;
import org.jeecg.modules.mdc.vo.MdcEquipmentDepVo;
@@ -118,5 +117,4 @@
    @InterceptorIgnore(tenantLine = "1")
    MdcEquipmentDto findWorkLineLast(@Param("tableName") String tableName);
    List<EquipmentLog> getEquipmentStatusList(@Param("equipmentIdList") List<String> equipmentIdList);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcHomeMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package org.jeecg.modules.mdc.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.system.entity.MdcProduction;
import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
 * @author Lius
 * @date 2024/3/14 10:27
 */
@Mapper
@Repository
public interface MdcHomeMapper {
    /**
     * æ ¹æ®ç”¨æˆ·id和上级产线id获取产线信息
     *
     * @param userId
     * @param productionId
     * @return
     */
    List<MdcProduction> getProductionByPid(@Param("userId") String userId, @Param("productionId") String productionId);
    /**
     * æ ¹æ®è®¾å¤‡é›†åˆå’Œæ—¥æœŸèŽ·å–åŠ å·¥æ—¶é—´
     *
     * @param equipmentIdList
     * @param date
     * @return
     */
    BigDecimal getProcessCount(@Param("equipmentIdList") List<String> equipmentIdList, @Param("date") String date);
    /**
     * æ ¹æ®è®¾å¤‡é›†åˆå’Œæ—¥æœŸèŽ·å–oee
     *
     * @param equipmentIdList
     * @param date
     * @return
     */
    BigDecimal getOeeByDate(@Param("equipmentIdList") List<String> equipmentIdList, @Param("date") String date);
    /**
     * æ ¹æ®è®¾å¤‡id集合和月份获取利用率数据
     *
     * @param equipmentIdList
     * @param date
     * @return
     */
    Map<String, Object> getUtilizationByMonth(@Param("equipmentIdList") List<String> equipmentIdList, @Param("date") String date);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentLogMapper.xml
@@ -9,4 +9,20 @@
    <select id="selectEquipmentOporation" resultType="org.jeecg.modules.mdc.entity.EquipmentLog">
        SELECT TOP 1 * FROM EquipmentLog WHERE EquipmentID = #{ equipmentId } ORDER BY CollectTime DESC
    </select>
    <!--查询设备最新一条数据-->
    <select id="getEquipmentStatusList" resultType="org.jeecg.modules.mdc.entity.EquipmentLog">
        SELECT
        t1.*
        FROM
        EquipmentLog t1
        INNER JOIN ( SELECT MAX ( CollectTime ) AS CollectTime, EquipmentID FROM EquipmentLog GROUP BY EquipmentID ) t2 ON t1.CollectTime= t2.CollectTime
        AND t1.EquipmentID= t2.EquipmentID
        <if test="equipmentIdList != null and equipmentIdList.size() > 0">
            AND t1.EquipmentID IN
            <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
@@ -286,20 +286,4 @@
        select top 1 spindlespeed, actualspindlespeed from [${tableName}] order by CollectTime  desc
    </select>
    <!--查询设备最新一条数据-->
    <select id="getEquipmentStatusList" resultType="org.jeecg.modules.mdc.entity.EquipmentLog">
        SELECT
            t1.*
        FROM
            EquipmentLog t1
            INNER JOIN ( SELECT MAX ( CollectTime ) AS CollectTime, EquipmentID FROM EquipmentLog GROUP BY EquipmentID ) t2 ON t1.CollectTime= t2.CollectTime
            AND t1.EquipmentID= t2.EquipmentID
        <if test="equipmentIdList != null and equipmentIdList.size() > 0">
            AND t1.EquipmentID IN
            <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.mdc.mapper.MdcHomeMapper">
    <select id="getProductionByPid" resultType="org.jeecg.modules.system.entity.MdcProduction">
        SELECT
            t1.*
        FROM
            mdc_production t1
                LEFT JOIN mdc_user_production t2 ON t1.id = t2.pro_id
        WHERE
            t1.parent_id = #{ productionId } AND t2.user_id = #{ userId }
    </select>
    <select id="getProcessCount" resultType="java.math.BigDecimal">
        SELECT
            SUM(process_long)
        FROM
            mdc_equipment_statistical_info
        <where>
            <if test="equipmentIdList != null and equipmentIdList.size() > 0 ">
                AND equipment_id IN
                <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
            AND the_date = #{ date }
        </where>
    </select>
    <select id="getOeeByDate" resultType="java.math.BigDecimal">
        SELECT
            SUM(overall_equipment_efficiency)
        FROM
            mdc_overall_equipment_efficiency
        <where>
            <if test="equipmentIdList != null and equipmentIdList.size() > 0 ">
                AND equipment_id IN
                <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
            AND valid_date = #{ date }
        </where>
    </select>
    <select id="getUtilizationByMonth" resultType="java.util.Map">
        SELECT
            SUM(process_long) processLong,
            COUNT(*) processDay
        FROM
            mdc_equipment_statistical_info
        <where>
            <if test="equipmentIdList != null and equipmentIdList.size() > 0 ">
                AND equipment_id IN
                <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
            AND the_date LIKE CONCAT('%', #{ date } ,'%')
        </where>
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentLogService.java
@@ -28,4 +28,6 @@
    EquipmentLog getRow(String equipmentid, Date startTime);
    EquipmentLog selectEquipmentOporation(String equipmentId);
    List<EquipmentLog> getEquipmentStatusList(List<String> equipmentIdList);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
@@ -9,7 +9,6 @@
import org.jeecg.modules.mdc.entity.MdcEquipment;
import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor;
import org.jeecg.modules.mdc.model.MdcEquipmentTree;
import org.jeecg.modules.mdc.vo.MdcCommonVo;
import org.jeecg.modules.mdc.vo.MdcEquipmentVo;
import org.jeecg.modules.mdc.vo.WorkshopEquipmentVo;
@@ -204,8 +203,4 @@
     */
    MdcEquipmentDto getWorkLineLast(String tableName);
    /**
     * è®¾å¤‡è¿è¡ŒçŠ¶æ€ç»Ÿè®¡
     */
    List<MdcCommonVo> getEquipmentStatusStatistics(String userId, String key);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcHomeService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package org.jeecg.modules.mdc.service;
import org.jeecg.modules.mdc.vo.MdcCommonVo;
import java.util.List;
import java.util.Map;
/**
 * @author Lius
 * @date 2024/3/14 9:51
 */
public interface IMdcHomeService {
    /**
     * è®¾å¤‡è¿è¡ŒçŠ¶æ€ç»Ÿè®¡
     */
    List<MdcCommonVo> getEquipmentStatusStatistics(String userId, String key);
    /**
     * è®¾å¤‡åˆ©ç”¨çŽ‡ç»Ÿè®¡
     */
    List<MdcCommonVo> getEquipmentUtilizationStatistics(String userId, String key);
    /**
     * è®¾å¤‡OEE统计
     */
    List<MdcCommonVo> getEquipmentOeeStatistics(String userId, String key);
    /**
     * è®¾å¤‡OEE和利用率统计柱状图
     */
    Map<String, Object> getEquipmentMonthStatistics(String userId, String key);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentLogServiceImpl.java
@@ -53,4 +53,9 @@
    public EquipmentLog selectEquipmentOporation(String equipmentId) {
        return this.baseMapper.selectEquipmentOporation(equipmentId);
    }
    @Override
    public List<EquipmentLog> getEquipmentStatusList(List<String> equipmentIdList) {
        return this.baseMapper.getEquipmentStatusList(equipmentIdList);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/IMdcHomeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,231 @@
package org.jeecg.modules.mdc.service.impl;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.jeecg.modules.mdc.entity.EquipmentLog;
import org.jeecg.modules.mdc.mapper.MdcHomeMapper;
import org.jeecg.modules.mdc.service.IEquipmentLogService;
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.MdcCommonVo;
import org.jeecg.modules.mdc.vo.MdcEquipmentStatusVo;
import org.jeecg.modules.system.entity.MdcProduction;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.*;
/**
 * @author Lius
 * @date 2024/3/14 9:52
 */
@Service
public class IMdcHomeServiceImpl implements IMdcHomeService {
    @Resource
    private IMdcEquipmentService mdcEquipmentService;
    @Resource
    private IEquipmentLogService equipmentLogService;
    @Resource
    private MdcHomeMapper mdcHomeMapper;
    /**
     * è®¾å¤‡è¿è¡ŒçŠ¶æ€ç»Ÿè®¡
     */
    @Override
    public List<MdcCommonVo> getEquipmentStatusStatistics(String userId, String key) {
        List<MdcCommonVo> result = new ArrayList<>();
        MdcCommonVo mdcCommonVo1 = new MdcCommonVo();
        mdcCommonVo1.setName("关机");
        mdcCommonVo1.setValue("0");
        result.add(mdcCommonVo1);
        MdcCommonVo mdcCommonVo2 = new MdcCommonVo();
        mdcCommonVo2.setName("报警");
        mdcCommonVo2.setValue("0");
        result.add(mdcCommonVo2);
        MdcCommonVo mdcCommonVo3 = new MdcCommonVo();
        mdcCommonVo3.setName("待机");
        mdcCommonVo3.setValue("0");
        result.add(mdcCommonVo3);
        MdcCommonVo mdcCommonVo4 = new MdcCommonVo();
        mdcCommonVo4.setName("运行");
        mdcCommonVo4.setValue("0");
        result.add(mdcCommonVo4);
        MdcEquipmentStatusVo mdcEquipmentStatusVo = new MdcEquipmentStatusVo();
        if (StringUtils.isBlank(key)) {
            return result;
        }
        List<String> equipmentIdList = mdcEquipmentService.getEquipmentIdsProduction(userId, key);
        if (equipmentIdList == null || equipmentIdList.isEmpty()) {
            return result;
        }
        List<EquipmentLog> logList = equipmentLogService.getEquipmentStatusList(equipmentIdList);
        if (logList != null && !logList.isEmpty()) {
            for (EquipmentLog equipmentLog : logList) {
                if (equipmentLog.getOporation() != null) {
                    switch (equipmentLog.getOporation()) {
                        case 1:
                        case 2:
                            mdcEquipmentStatusVo.setWaitCount(mdcEquipmentStatusVo.getWaitCount() + 1);
                            break;
                        case 3:
                            mdcEquipmentStatusVo.setRunCount(mdcEquipmentStatusVo.getRunCount() + 1);
                            break;
                        case 22:
                            mdcEquipmentStatusVo.setAlarmCount(mdcEquipmentStatusVo.getAlarmCount() + 1);
                            break;
                        default:
                            mdcEquipmentStatusVo.setCloseCount(mdcEquipmentStatusVo.getCloseCount() + 1);
                            break;
                    }
                } else {
                    mdcEquipmentStatusVo.setCloseCount(mdcEquipmentStatusVo.getCloseCount() + 1);
                }
            }
        }
        result.clear();
        MdcCommonVo mdcCommonVo5 = new MdcCommonVo();
        mdcCommonVo5.setName("关机");
        mdcCommonVo5.setValue(mdcEquipmentStatusVo.getCloseCount().toString());
        result.add(mdcCommonVo5);
        MdcCommonVo mdcCommonVo6 = new MdcCommonVo();
        mdcCommonVo6.setName("报警");
        mdcCommonVo6.setValue(mdcEquipmentStatusVo.getAlarmCount().toString());
        result.add(mdcCommonVo6);
        MdcCommonVo mdcCommonVo7 = new MdcCommonVo();
        mdcCommonVo7.setName("待机");
        mdcCommonVo7.setValue(mdcEquipmentStatusVo.getWaitCount().toString());
        result.add(mdcCommonVo7);
        MdcCommonVo mdcCommonVo8 = new MdcCommonVo();
        mdcCommonVo8.setName("运行");
        mdcCommonVo8.setValue(mdcEquipmentStatusVo.getRunCount().toString());
        result.add(mdcCommonVo8);
        return result;
    }
    /**
     * è®¾å¤‡åˆ©ç”¨çŽ‡ç»Ÿè®¡
     */
    @Override
    public List<MdcCommonVo> getEquipmentUtilizationStatistics(String userId, String key) {
        List<MdcCommonVo> result = new ArrayList<>();
        //获取公司或厂区二级信息
        List<MdcProduction> mdcProductionList = mdcHomeMapper.getProductionByPid(userId, key);
        if (mdcProductionList != null && !mdcProductionList.isEmpty()) {
            for (MdcProduction mdcProduction : mdcProductionList) {
                MdcCommonVo mdcCommonVo = new MdcCommonVo();
                mdcCommonVo.setName(mdcProduction.getProductionName());
                mdcCommonVo.setProductionCode(mdcProduction.getProductionCode());
                //获取此层级下设备
                List<String> equipmentIdList = mdcEquipmentService.getEquipmentIdsProduction(userId, mdcProduction.getId());
                if (equipmentIdList == null || equipmentIdList.isEmpty()) {
                    mdcCommonVo.setValue("0");
                } else {
                    String date = DateUtils.format(DateUtils.toDate(LocalDate.now().plusDays(-1).toString(), DateUtils.STR_DATE), DateUtils.STRDATE);
                    BigDecimal processCount = mdcHomeMapper.getProcessCount(equipmentIdList, date);
                    if (processCount == null || processCount.compareTo(BigDecimal.ZERO) == 0) {
                        mdcCommonVo.setValue("0");
                    } else {
                        mdcCommonVo.setValue(processCount.divide(new BigDecimal(86400).multiply(new BigDecimal(equipmentIdList.size())), 4, RoundingMode.HALF_UP).toString());
                    }
                }
                result.add(mdcCommonVo);
            }
        }
        return result;
    }
    /**
     * è®¾å¤‡OEE统计
     */
    @Override
    public List<MdcCommonVo> getEquipmentOeeStatistics(String userId, String key) {
        List<MdcCommonVo> result = new ArrayList<>();
        //获取公司或厂区二级信息
        List<MdcProduction> mdcProductionList = mdcHomeMapper.getProductionByPid(userId, key);
        if (mdcProductionList != null && !mdcProductionList.isEmpty()) {
            for (MdcProduction mdcProduction : mdcProductionList) {
                MdcCommonVo mdcCommonVo = new MdcCommonVo();
                mdcCommonVo.setName(mdcProduction.getProductionName());
                mdcCommonVo.setProductionCode(mdcProduction.getProductionCode());
                //获取此层级下设备
                List<String> equipmentIdList = mdcEquipmentService.getEquipmentIdsProduction(userId, mdcProduction.getId());
                if (equipmentIdList == null || equipmentIdList.isEmpty()) {
                    mdcCommonVo.setValue("0");
                } else {
                    String date = DateUtils.format(DateUtils.toDate(LocalDate.now().plusMonths(-1).toString(), DateUtils.STR_DATE), DateUtils.STR_YEAR_MONTH);
                    BigDecimal oee = mdcHomeMapper.getOeeByDate(equipmentIdList, date);
                    if (oee == null || oee.compareTo(BigDecimal.ZERO) == 0) {
                        mdcCommonVo.setValue("0");
                    } else {
                        mdcCommonVo.setValue(oee.divide(new BigDecimal(equipmentIdList.size()), 4, RoundingMode.HALF_UP).toString());
                    }
                }
                result.add(mdcCommonVo);
            }
        }
        return result;
    }
    /**
     * è®¾å¤‡OEE和利用率统计柱状图
     */
    @Override
    public Map<String, Object> getEquipmentMonthStatistics(String userId, String key) {
        List<String> equipmentIdList = mdcEquipmentService.getEquipmentIdsProduction(userId, key);
        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<MdcCommonVo> utilizationList = new ArrayList<>();
        List<MdcCommonVo> oeeList = new ArrayList<>();
        for (String month : monthBetween) {
            //日期集合
            String name = month.substring(month.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "月";
            dateList.add(name);
            //利用率和oee
            MdcCommonVo mdcCommonUtilizationVo = new MdcCommonVo();
            mdcCommonUtilizationVo.setName(name);
            MdcCommonVo mdcCommonOeeVo = new MdcCommonVo();
            mdcCommonOeeVo.setName(name);
            if (equipmentIdList == null || equipmentIdList.isEmpty()) {
                mdcCommonUtilizationVo.setValue("0");
                mdcCommonOeeVo.setValue("0");
            } else {
                //利用率
                Map<String, Object> resultMap = mdcHomeMapper.getUtilizationByMonth(equipmentIdList, month.replace("-", ""));
                if (resultMap != null && resultMap.get("processLong") != null) {
                    BigDecimal processLong = BigDecimal.valueOf((Double) resultMap.get("processLong"));
                    BigDecimal processDay = new BigDecimal((Integer) resultMap.get("processDay"));
                    if (processLong.compareTo(BigDecimal.ZERO) == 0) {
                        mdcCommonUtilizationVo.setValue("0");
                    } else {
                        mdcCommonUtilizationVo.setValue(processLong.divide(processDay, 4, RoundingMode.HALF_UP).divide(new BigDecimal(equipmentIdList.size()), 4, RoundingMode.HALF_UP).toString());
                    }
                } else {
                    mdcCommonUtilizationVo.setValue("0");
                }
                //OEE
                BigDecimal oee = mdcHomeMapper.getOeeByDate(equipmentIdList, month);
                if (oee == null || oee.compareTo(BigDecimal.ZERO) == 0) {
                    mdcCommonOeeVo.setValue("0");
                } else {
                    mdcCommonOeeVo.setValue(oee.divide(new BigDecimal(equipmentIdList.size()), 4, RoundingMode.HALF_UP).toString());
                }
            }
            utilizationList.add(mdcCommonUtilizationVo);
            oeeList.add(mdcCommonOeeVo);
        }
        result.put("dateList", dateList);
        result.put("utilizationList", utilizationList);
        result.put("oeeList", oeeList);
        return result;
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -849,75 +849,4 @@
        return this.baseMapper.findWorkLineLast(tableName);
    }
    /**
     * è®¾å¤‡è¿è¡ŒçŠ¶æ€ç»Ÿè®¡
     */
    @Override
    public List<MdcCommonVo> getEquipmentStatusStatistics(String userId, String key) {
        List<MdcCommonVo> result = new ArrayList<>();
        MdcCommonVo mdcCommonVo1 = new MdcCommonVo();
        mdcCommonVo1.setName("关机");
        mdcCommonVo1.setValue(0);
        result.add(mdcCommonVo1);
        MdcCommonVo mdcCommonVo2 = new MdcCommonVo();
        mdcCommonVo2.setName("报警");
        mdcCommonVo2.setValue(0);
        result.add(mdcCommonVo2);
        MdcCommonVo mdcCommonVo3 = new MdcCommonVo();
        mdcCommonVo3.setName("待机");
        mdcCommonVo3.setValue(0);
        result.add(mdcCommonVo3);
        MdcCommonVo mdcCommonVo4 = new MdcCommonVo();
        mdcCommonVo4.setName("运行");
        mdcCommonVo4.setValue(0);
        result.add(mdcCommonVo4);
        MdcEquipmentStatusVo mdcEquipmentStatusVo = new MdcEquipmentStatusVo();
        List<String> equipmentIdList = this.getEquipmentIdsProduction(userId, key);
        if (equipmentIdList == null || equipmentIdList.isEmpty()) {
            return result;
        }
        List<EquipmentLog> logList = this.baseMapper.getEquipmentStatusList(equipmentIdList);
        if (logList != null && !logList.isEmpty()) {
            for (EquipmentLog equipmentLog : logList) {
                if (equipmentLog.getOporation() != null) {
                    switch (equipmentLog.getOporation()) {
                        case 1:
                        case 2:
                            mdcEquipmentStatusVo.setWaitCount(mdcEquipmentStatusVo.getWaitCount() + 1);
                            break;
                        case 3:
                            mdcEquipmentStatusVo.setRunCount(mdcEquipmentStatusVo.getRunCount() + 1);
                            break;
                        case 22:
                            mdcEquipmentStatusVo.setAlarmCount(mdcEquipmentStatusVo.getAlarmCount() + 1);
                            break;
                        default:
                            mdcEquipmentStatusVo.setCloseCount(mdcEquipmentStatusVo.getCloseCount() + 1);
                            break;
                    }
                } else {
                    mdcEquipmentStatusVo.setCloseCount(mdcEquipmentStatusVo.getCloseCount() + 1);
                }
            }
        }
        result.clear();
        MdcCommonVo mdcCommonVo5 = new MdcCommonVo();
        mdcCommonVo5.setName("关机");
        mdcCommonVo5.setValue(mdcEquipmentStatusVo.getCloseCount());
        result.add(mdcCommonVo5);
        MdcCommonVo mdcCommonVo6 = new MdcCommonVo();
        mdcCommonVo6.setName("报警");
        mdcCommonVo6.setValue(mdcEquipmentStatusVo.getAlarmCount());
        result.add(mdcCommonVo6);
        MdcCommonVo mdcCommonVo7 = new MdcCommonVo();
        mdcCommonVo7.setName("待机");
        mdcCommonVo7.setValue(mdcEquipmentStatusVo.getWaitCount());
        result.add(mdcCommonVo7);
        MdcCommonVo mdcCommonVo8 = new MdcCommonVo();
        mdcCommonVo8.setName("运行");
        mdcCommonVo8.setValue(mdcEquipmentStatusVo.getRunCount());
        result.add(mdcCommonVo8);
        return result;
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcCommonVo.java
@@ -8,6 +8,7 @@
 */
@Data
public class MdcCommonVo {
    private Integer value;
    private String value;
    private String name;
    private String productionCode;
}