yangbin
2025-02-19 efdecc7019261f8fdc875505281f54ef7a3bfbce
大屏看板
已添加8个文件
已修改16个文件
771 ■■■■■ 文件已修改
lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentLogMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentStatisticalInfoMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentLogMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentStatisticalInfoMapper.xml 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentLogService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentStatisticalInfoService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentLogServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentStatisticalInfoServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/api/MdcBigScreenController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/service/MdcBigScreenService.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/service/impl/MdcBigScreenServiceImpl.java 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/AllEquipmentLogVo.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/LastWeekDataRankingVo.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/LastWeekDataVo.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/MdcEquipmentAndTypeVo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/MdcEquipmentOpVo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
@@ -94,6 +94,9 @@
        filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览
        filterChainDefinitionMap.put("/generic/**", "anon");//pdf预览需要文件
        filterChainDefinitionMap.put("/sys/user/updatePassword", "anon");//首页用户修改密码
        filterChainDefinitionMap.put("/outer/bigScreen/**", "anon");//看板
        filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //登录二维码
        filterChainDefinitionMap.put("/sys/getQrcodeToken/**", "anon"); //监听扫码
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentLogMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.mdc.entity.EquipmentLog;
import org.jeecg.modules.mdc.subcontrol.vo.AllEquipmentLogVo;
import java.util.Date;
import java.util.List;
@@ -13,10 +14,13 @@
 */
public interface EquipmentLogMapper extends BaseMapper<EquipmentLog> {
    List<AllEquipmentLogVo> findAllEquipmentLog(@Param("yesterday") Date yesterday);
    EquipmentLog getRow(@Param("equipmentid") String equipmentid, @Param("startTime") Date startTime);
    EquipmentLog selectEquipmentOporation(@Param("equipmentId") String equipmentId);
    List<EquipmentLog> getEquipmentStatusList(@Param("equipmentIdList") List<String> equipmentIdList);
    EquipmentLog getOne(@Param("equipmentId") String equipmentId);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentStatisticalInfoMapper.java
@@ -1,11 +1,20 @@
package org.jeecg.modules.mdc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.mdc.entity.EquipmentStatisticalInfo;
import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo;
import java.util.List;
/**
 * @author Lius
 * @date 2023/10/24 14:05
 */
public interface EquipmentStatisticalInfoMapper extends BaseMapper<EquipmentStatisticalInfo> {
    List<LastWeekDataVo> findDataRankingForBigScreen(@Param("equipmentIdList") List<String> equipmentIdList, @Param("monday") String monday, @Param("saturday") String saturday);
    List<String> findEquipmentId(@Param("equipmentIdList") List<String> equipmentIdList, @Param("date") String date);
    List<LastWeekDataVo> findDataForBigScreen(@Param("equipmentIdList") List<String> equipmentIdList, @Param("monday") String monday, @Param("saturday") String saturday);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
@@ -124,4 +124,5 @@
     * @return
     */
    MdcEquipmentDetailedDto findById(@Param("id") String id);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java
@@ -3,8 +3,10 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo;
import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo;
import java.math.BigDecimal;
import java.util.List;
/**
 * @author: LiuS
@@ -21,4 +23,8 @@
    MdcEquipmentStatisticalShiftInfo getMaxStaticsData(@Param("equipmentId") String equipmentid);
    BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
    List<LastWeekDataVo> findDataForBigScreen(@Param("equipmentIdList") List<String> equipmentIdList,
                                              @Param("monday") String monday, @Param("saturday") String saturday);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentLogMapper.xml
@@ -2,6 +2,18 @@
<!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.EquipmentLogMapper">
    <select id="findAllEquipmentLog" resultType="org.jeecg.modules.mdc.subcontrol.vo.AllEquipmentLogVo">
        SELECT
            *
        FROM
            EQUIPMENTLOG
        WHERE
            COLLECTTIME &gt;= #{ yesterday }
            AND ALARM IS NOT NULL and ALARM != ''
        ORDER BY
            COLLECTTIME DESC;
    </select>
    <select id="getRow" resultType="org.jeecg.modules.mdc.entity.EquipmentLog">
        SELECT top 1 * FROM EquipmentLog WHERE EquipmentID = #{ equipmentid } AND CollectTime &lt;= #{ startTime } AND Oporation in ('0','1','2','3') ORDER BY CollectTime ASC
    </select>
@@ -25,4 +37,13 @@
            </foreach>
        </if>
    </select>
    <select id="getOne" resultType="org.jeecg.modules.mdc.entity.EquipmentLog">
        SELECT
            top 1 *
        FROM
            ( SELECT * FROM EQUIPMENTLOG WHERE EQUIPMENTID = #{ equipmentId } ORDER BY COLLECTTIME DESC )
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentStatisticalInfoMapper.xml
@@ -1,5 +1,71 @@
<?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.EquipmentStatisticalInfoMapper">
    <select id="findDataRankingForBigScreen" resultType="org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo">
        SELECT
        EQUIPMENT,
        SUM( CLOSEDLONG ) CLOSEDLONG,
        SUM( ERRORINGLONG ) ERRORINGLONG,
        SUM( OPENINGLONG ) OPENINGLONG,
        SUM( PROCESSINGLONG ) PROCESSINGLONG,
        SUM( WAITINGLONG ) WAITINGLONG
        FROM
        EQUIPMENTSTATISTICALINFO
        <where>
            <if test="equipmentIdList != null and equipmentIdList.size() > 0">
                AND EQUIPMENT IN
                <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                    #{ id }
                </foreach>
            </if>
            AND THEDATE &gt;= #{ monday }
            AND THEDATE &lt;= #{ saturday }
        </where>
        GROUP BY
        EQUIPMENT;
    </select>
    <select id="findDataForBigScreen" resultType="org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo">
        SELECT
        THEDATE,
        SUM( OPENINGLONG ) OPENINGLONG,
        SUM(CLOSEDLONG) CLOSEDLONG,
        SUM(PROCESSINGLONG) PROCESSINGLONG,
        SUM(WAITINGLONG) WAITINGLONG
        FROM
        EQUIPMENTSTATISTICALINFO
        <where>
            <if test="equipmentIdList != null and equipmentIdList.size() > 0">
                AND EQUIPMENT IN
                <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                    #{ id }
                </foreach>
            </if>
            AND THEDATE &gt;= #{ monday }
            AND THEDATE &lt;= #{ saturday }
        </where>
        GROUP BY
        THEDATE
        ORDER BY
        THEDATE ASC;
    </select>
    <select id="findEquipmentId" resultType="java.lang.String">
        SELECT DISTINCT
        EQUIPMENT
        FROM
        EQUIPMENTSTATISTICALINFO
        <where>
            <if test="equipmentIdList != null and equipmentIdList.size() > 0">
                AND EQUIPMENT IN
                <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                    #{ id }
                </foreach>
            </if>
            <if test="date != null and date != ''">
                AND THEDATE = #{ date }
            </if>
        </where>
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
@@ -17,4 +17,32 @@
            equipment_id = #{ equipmentId }
            AND the_date LIKE CONCAT(#{ validDate },'%')
    </select>
    <select id="findDataForBigScreen" resultType="org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo">
        SELECT
        THE_DATE,
        SUM( close_long ) close_long,
        SUM( open_long ) open_long,
        SUM( error_long ) error_long,
        SUM( wait_long ) wait_long,
        SUM( process_long ) process_long,
        SUM( total_long ) total_long
        FROM
        mdc_equipment_statistical_shift_info
        <where>
            <if test="equipmentIdList != null and equipmentIdList.size() > 0">
                AND EQUIPMENT_ID IN
                <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                    #{ id }
                </foreach>
            </if>
            AND THE_DATE &gt;= #{ monday }
            AND THE_DATE &lt;= #{ saturday }
        </where>
        GROUP BY
        THE_DATE
        ORDER BY
        THE_DATE ASC;
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentLogService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.mdc.entity.EquipmentLog;
import org.jeecg.modules.mdc.subcontrol.vo.AllEquipmentLogVo;
import java.util.Date;
import java.util.List;
@@ -30,4 +31,12 @@
    EquipmentLog selectEquipmentOporation(String equipmentId);
    List<EquipmentLog> getEquipmentStatusList(List<String> equipmentIdList);
    /**
     * å…¨é•¿è®¾å¤‡æŠ¥è­¦æ•°æ®
     * @return
     */
    List<AllEquipmentLogVo> getALLEquipmentLog();
    EquipmentLog findEquipmentLog(String equipmentId);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentStatisticalInfoService.java
@@ -2,10 +2,28 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.mdc.entity.EquipmentStatisticalInfo;
import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo;
import java.util.List;
/**
 * @author Lius
 * @date 2023/10/24 14:04
 */
public interface IEquipmentStatisticalInfoService extends IService<EquipmentStatisticalInfo> {
    /**
     * æŸ¥è¯¢æ®µæ—¶é—´å†…的数据
     *
     * @return
     */
    List<LastWeekDataVo> findDataForBigScreen(List<String> equipmentIdList, String monday, String saturday);
    Integer findEquipmentId(List<String> equipmentIdList, String date);
    /**
     * æŸ¥è¯¢æ®µæ—¶é—´å†…的数据(设备维度)
     */
    List<LastWeekDataVo> findDataRankingForBigScreen(List<String> equipmentIdList, String monday, String saturday);
    Long selectSize(String equipmentId, String monday, String saturday);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
@@ -210,4 +210,5 @@
    List<String> listEquipmentIdShift(MdcEfficiencyReportShiftQueryVo vo);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java
@@ -2,8 +2,10 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo;
import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo;
import java.math.BigDecimal;
import java.util.List;
/**
 * @Description: è®¾å¤‡å•日班次运行数据表
@@ -28,4 +30,10 @@
     */
    BigDecimal findSpindleRunDuration(String equipmentId, String validDate);
    /**
     * èŽ·å–å‰7班次利用率数据
     */
    List<LastWeekDataVo> findDataForBigScreen(List<String> equipmentIdList, String monday, String saturday);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentLogServiceImpl.java
@@ -5,6 +5,11 @@
import org.jeecg.modules.mdc.entity.EquipmentLog;
import org.jeecg.modules.mdc.mapper.EquipmentLogMapper;
import org.jeecg.modules.mdc.service.IEquipmentLogService;
import org.jeecg.modules.mdc.service.IMdcAlarmInfoService;
import org.jeecg.modules.mdc.service.IMdcEquipmentService;
import org.jeecg.modules.mdc.subcontrol.vo.AllEquipmentLogVo;
import org.jeecg.modules.mdc.util.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
@@ -17,8 +22,6 @@
 */
@Service
public class EquipmentLogServiceImpl extends ServiceImpl<EquipmentLogMapper, EquipmentLog> implements IEquipmentLogService {
    @Override
    public List<EquipmentLog> findEquipmentLogByEndTime(String equipmentId, Date maxDate) {
        LambdaQueryChainWrapper<EquipmentLog> lambdaQuery = this.lambdaQuery();
@@ -58,4 +61,17 @@
    public List<EquipmentLog> getEquipmentStatusList(List<String> equipmentIdList) {
        return this.baseMapper.getEquipmentStatusList(equipmentIdList);
    }
    @Override
    public List<AllEquipmentLogVo> getALLEquipmentLog() {
        //获取当前时间24小时之前的设备报警数据
        Date yesterday = DateUtils.getPreviousDay(DateUtils.getNow());
        List<AllEquipmentLogVo> list = this.baseMapper.findAllEquipmentLog(yesterday);
        return list;
    }
    @Override
    public EquipmentLog findEquipmentLog(String equipmentId) {
        return this.baseMapper.getOne(equipmentId);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentStatisticalInfoServiceImpl.java
@@ -1,10 +1,14 @@
package org.jeecg.modules.mdc.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.mdc.entity.EquipmentStatisticalInfo;
import org.jeecg.modules.mdc.mapper.EquipmentStatisticalInfoMapper;
import org.jeecg.modules.mdc.service.IEquipmentStatisticalInfoService;
import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * @author Lius
@@ -12,4 +16,26 @@
 */
@Service
public class EquipmentStatisticalInfoServiceImpl extends ServiceImpl<EquipmentStatisticalInfoMapper, EquipmentStatisticalInfo> implements IEquipmentStatisticalInfoService {
    @Override
    public List<LastWeekDataVo> findDataForBigScreen(List<String> equipmentIdList, String monday, String saturday) {
        return this.baseMapper.findDataForBigScreen(equipmentIdList, monday, saturday);
    }
    @Override
    public Integer findEquipmentId(List<String> equipmentIdList, String date) {
        List<String> list = this.baseMapper.findEquipmentId(equipmentIdList, date);
        return list.size();
    }
    @Override
    public List<LastWeekDataVo> findDataRankingForBigScreen(List<String> equipmentIdList, String monday, String saturday) {
        return this.baseMapper.findDataRankingForBigScreen(equipmentIdList, monday, saturday);
    }
    @Override
    public Long selectSize(String equipmentId, String monday, String saturday) {
        return this.baseMapper.selectCount(new LambdaQueryWrapper<EquipmentStatisticalInfo>().
                eq(EquipmentStatisticalInfo::getEquipment, equipmentId).ge(EquipmentStatisticalInfo::getTheDate, monday).le(EquipmentStatisticalInfo::getTheDate, saturday));
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -703,23 +703,24 @@
    @Override
    public List<String> listEquipmentId(MdcEfficiencyReportQueryVo vo) {
        LambdaQueryWrapper<MdcEquipment> queryWrapper = new LambdaQueryWrapper<>();
        if (vo.getEquipmentIdList() != null && !vo.getEquipmentIdList().isEmpty()) {
            queryWrapper.in(MdcEquipment::getEquipmentId, vo.getEquipmentIdList());
        }
        if (StringUtils.isNotEmpty(vo.getEquipmentType())) {
            queryWrapper.in(MdcEquipment::getEquipmentType, Arrays.asList(vo.getEquipmentType().split(",")));
        }
        if (StringUtils.isNotEmpty(vo.getDeviceLevel())) {
            queryWrapper.in(MdcEquipment::getDeviceLevel, Arrays.asList(vo.getDeviceLevel().split(",")));
        }
        if (StringUtils.isNotEmpty(vo.getDriveType())) {
            queryWrapper.in(MdcEquipment::getDriveType, Arrays.asList(vo.getDriveType().split(",")));
        }
        if (StringUtils.isNotEmpty(vo.getDeviceCategory())) {
            queryWrapper.in(MdcEquipment::getDeviceCategory, Arrays.asList(vo.getDeviceCategory().split(",")));
        if (vo != null) {
            if (vo.getEquipmentIdList() != null && !vo.getEquipmentIdList().isEmpty()) {
                queryWrapper.in(MdcEquipment::getEquipmentId, vo.getEquipmentIdList());
            }
            if (StringUtils.isNotEmpty(vo.getEquipmentType())) {
                queryWrapper.in(MdcEquipment::getEquipmentType, Arrays.asList(vo.getEquipmentType().split(",")));
            }
            if (StringUtils.isNotEmpty(vo.getDeviceLevel())) {
                queryWrapper.in(MdcEquipment::getDeviceLevel, Arrays.asList(vo.getDeviceLevel().split(",")));
            }
            if (StringUtils.isNotEmpty(vo.getDriveType())) {
                queryWrapper.in(MdcEquipment::getDriveType, Arrays.asList(vo.getDriveType().split(",")));
            }
            if (StringUtils.isNotEmpty(vo.getDeviceCategory())) {
                queryWrapper.in(MdcEquipment::getDeviceCategory, Arrays.asList(vo.getDeviceCategory().split(",")));
            }
        }
        List<MdcEquipment> list = super.list(queryWrapper);
//        List<MdcEquipment> list = super.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentType, equipmentType).in(MdcEquipment::getEquipmentId, equipmentIdList));
        return list.stream().map(MdcEquipment::getEquipmentId).collect(Collectors.toList());
    }
@@ -873,5 +874,4 @@
//        List<MdcEquipment> list = super.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentType, equipmentType).in(MdcEquipment::getEquipmentId, equipmentIdList));
        return list.stream().map(MdcEquipment::getEquipmentId).collect(Collectors.toList());
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
@@ -9,6 +9,7 @@
import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo;
import org.jeecg.modules.mdc.mapper.MdcEquipmentStatisticalShiftInfoMapper;
import org.jeecg.modules.mdc.service.*;
import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo;
import org.jeecg.modules.mdc.util.DateUtils;
import org.jeecg.modules.mdc.vo.MdcDateVo;
import org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo;
@@ -44,6 +45,12 @@
    @Resource
    private IMdcEquipmentRepairService mdcEquipmentRepairService;
    @Override
    public List<LastWeekDataVo> findDataForBigScreen(List<String> equipmentIdList, String monday, String saturday) {
        return this.baseMapper.findDataForBigScreen(equipmentIdList, monday, saturday);
    }
    /**
     * è®¡ç®—设备单日班次运行数据
     *
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/api/MdcBigScreenController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package org.jeecg.modules.mdc.subcontrol.api;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.mdc.service.IEquipmentLogService;
import org.jeecg.modules.mdc.subcontrol.service.MdcBigScreenService;
import org.jeecg.modules.mdc.subcontrol.vo.AllEquipmentLogVo;
import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataRankingVo;
import org.jeecg.modules.mdc.subcontrol.vo.MdcEquipmentOpVo;
import org.jeecg.modules.mdc.vo.MdcEquipmentVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @author: LiuS
 * @create: 2022-12-28 10:43
 */
@Slf4j
@RestController
@RequestMapping("/outer/bigScreen")
@Api(tags = "大屏接口")
public class MdcBigScreenController {
    @Resource
    private MdcBigScreenService mdcBigScreenService;
    @Autowired
    private IEquipmentLogService equipmentLogService;
    @ApiOperation("全厂报警信息")
    @GetMapping("/findAlarmInfo")
    public Result findAlarmInfo() {
        List<AllEquipmentLogVo> result = equipmentLogService.getALLEquipmentLog();
        return Result.OK(result);
    }
    @ApiOperation("获取前7数据")
    @GetMapping("/findDataByLastWeek")
    public Result findDataByLastWeek() {
        Map<String, Object> result = mdcBigScreenService.findDataByLastWeek();
        return Result.OK(result);
    }
    @ApiOperation("获取前7数据排名")
    @GetMapping("/findDataRankingByLastWeek")
    public Result findDataRankingByLastWeek() {
        List<LastWeekDataRankingVo> rankingByLastWeek = mdcBigScreenService.findDataRankingByLastWeek();
        return Result.OK(rankingByLastWeek);
    }
    @ApiOperation("获取当前设备状态信息")
    @GetMapping("/findEquipmentStatus")
    public Result findEquipmentStatus() {
        Map<String, Object> result = new HashMap<>();
        List<MdcEquipmentOpVo> list = mdcBigScreenService.findEquipmentStatus();
        result.put("equipmentStatusList", list);
        return Result.OK(result);
    }
    @ApiOperation("获取全厂当前设备状态信息")
    @GetMapping("/findAllEquipmentStatus")
    public Result findAllEquipmentStatus() {
        Map<String, Object> result = mdcBigScreenService.findAllEquipmentStatus();
        return Result.OK(result);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/service/MdcBigScreenService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package org.jeecg.modules.mdc.subcontrol.service;
import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataRankingVo;
import org.jeecg.modules.mdc.subcontrol.vo.MdcEquipmentOpVo;
import org.jeecg.modules.mdc.vo.MdcEquipmentVo;
import java.util.List;
import java.util.Map;
/**
 * @author: LiuS
 * @create: 2023-01-05 11:41
 */
public interface MdcBigScreenService {
    /**
     * æ ¹æ®åŽ‚åŒºid获取上周数据
     */
    Map<String, Object> findDataByLastWeek();
    /**
     * æ ¹æ®åŽ‚åŒºid获取上周运行效率排名
     */
    List<LastWeekDataRankingVo> findDataRankingByLastWeek();
    /**
     * èŽ·å–è®¾å¤‡å½“å‰çŠ¶æ€
     */
    List<MdcEquipmentOpVo> findEquipmentStatus();
    /**
     * èŽ·å–å…¨åŽ‚å½“å‰è®¾å¤‡çŠ¶æ€ä¿¡æ¯
     */
    Map<String, Object> findAllEquipmentStatus();
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/service/impl/MdcBigScreenServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,288 @@
package org.jeecg.modules.mdc.subcontrol.service.impl;
import org.apache.commons.lang.StringUtils;
import org.jeecg.modules.mdc.entity.EquipmentLog;
import org.jeecg.modules.mdc.service.*;
import org.jeecg.modules.mdc.subcontrol.service.MdcBigScreenService;
import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataRankingVo;
import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo;
import org.jeecg.modules.mdc.subcontrol.vo.MdcEquipmentOpVo;
import org.jeecg.modules.mdc.vo.MdcEquipmentVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @author: LiuS
 * @create: 2023-01-05 11:42
 */
@Service
public class MdcBigScreenServiceImpl implements MdcBigScreenService {
    @Resource
    private IMdcEquipmentService mdcEquipmentService;
    @Resource
    private IEquipmentStatisticalInfoService equipmentStatisticalInfoService;
    @Autowired
    private IMdcEquipmentStatisticalShiftInfoService mdcEquipmentStatisticalShiftInfoService;
    @Resource
    private IEquipmentLogService equipmentLogService;
    /**
     * æ ¹æ®åŽ‚åŒºid获取上周数据
     */
    @Override
    public Map<String, Object> findDataByLastWeek() {
        Map<String, Object> result = new HashMap<>();
        List<BigDecimal> openingRateList = new ArrayList<>();
        List<BigDecimal> processingRateList = new ArrayList<>();
        List<BigDecimal> shiftRateList = new ArrayList<>();
        //获取上周周一日期和周六日期
        LocalDate today = LocalDate.now();
        LocalDate monday = today.minusDays(7);
        LocalDate saturday = today.minusDays(1);
        List<String> dates = getMiddleDate(monday, saturday);
        List<String> equipmentIdList = new ArrayList<>();
        //根据厂区id获取厂区设备信息
        equipmentIdList = mdcEquipmentService.listEquipmentId(null);
        //上周利用率和开机率数据
        List<LastWeekDataVo> lastWeekDataVos = equipmentStatisticalInfoService.findDataForBigScreen(equipmentIdList, monday.format(DateTimeFormatter.BASIC_ISO_DATE), saturday.format(DateTimeFormatter.BASIC_ISO_DATE));
        if (lastWeekDataVos.isEmpty()) {
            for (int i = 0; i < dates.size(); i++) {
                openingRateList.add(new BigDecimal("0"));
                processingRateList.add(new BigDecimal("0"));
            }
        } else {
            for (int i = 0; i < dates.size(); i++) {
                Integer size = equipmentStatisticalInfoService.findEquipmentId(equipmentIdList, dates.get(i));
                if (dates.get(i).equals(lastWeekDataVos.get(i).getTheDate())) {
                    openingRateList.add(new BigDecimal(String.format("%.2f", (Float.parseFloat(lastWeekDataVos.get(i).getOpeningLong()) / (86400 * size) * 100))));
                    processingRateList.add(new BigDecimal(String.format("%.2f", (Float.parseFloat(lastWeekDataVos.get(i).getProcessingLong()) / (86400 * size) * 100))));
                } else {
                    openingRateList.add(new BigDecimal("0"));
                    processingRateList.add(new BigDecimal("0"));
                }
            }
        }
        //上周班次利用率数据
        List<LastWeekDataVo> lastWeekDataList = mdcEquipmentStatisticalShiftInfoService.findDataForBigScreen(equipmentIdList, monday.toString(), saturday.toString());
        List<String> middleDates = getMiddleDates(monday, saturday);
        if (lastWeekDataList.isEmpty()) {
            for (int i = 0; i < middleDates.size(); i++) {
                shiftRateList.add(new BigDecimal("0"));
            }
        } else {
            for (int i = 0; i < middleDates.size(); i++) {
                if (i < lastWeekDataList.size()) {
                    if (middleDates.get(i).equals(lastWeekDataList.get(i).getTheDate())
                            && !"0".equals(lastWeekDataList.get(i).getTotalLong())) {
                        shiftRateList.add(new BigDecimal(lastWeekDataList.get(i).getProcessingLong()).
                                divide(new BigDecimal(lastWeekDataList.get(i).getTotalLong()),
                                        6, BigDecimal.ROUND_HALF_UP)
                                .setScale(6, BigDecimal.ROUND_HALF_UP));
                    } else {
                        shiftRateList.add(new BigDecimal("0"));
                    }
                }
                 else {
                    shiftRateList.add(new BigDecimal("0"));
                }
            }
        }
        result.put("openingRateList", openingRateList);
        result.put("processingRateList", processingRateList);
        result.put("shiftRateList", shiftRateList);
        return result;
    }
    /**
     * æ ¹æ®åŽ‚åŒºid获取上周运行效率排名
     */
    @Override
    public List<LastWeekDataRankingVo> findDataRankingByLastWeek() {
        List<LastWeekDataRankingVo> voList = new ArrayList<>();
        //获取上周周一日期和周六日期
        LocalDate today = LocalDate.now();
        String monday = today.minusDays(7).format(DateTimeFormatter.BASIC_ISO_DATE);
        String saturday = today.minusDays(1).format(DateTimeFormatter.BASIC_ISO_DATE);
        //根据id获取设备id集合
        List<String> equipmentIdList = mdcEquipmentService.listEquipmentId(null);
        if (!equipmentIdList.isEmpty()) {
            List<LastWeekDataVo> lastWeekDataVos = equipmentStatisticalInfoService.findDataRankingForBigScreen(equipmentIdList, monday, saturday);
            if (!lastWeekDataVos.isEmpty()) {
                for (LastWeekDataVo lastWeekDataVo : lastWeekDataVos) {
                    Long size = equipmentStatisticalInfoService.selectSize(lastWeekDataVo.getEquipment(), monday, saturday);
                    lastWeekDataVo.setUtilization(new BigDecimal(String.format("%.2f", (Float.parseFloat(lastWeekDataVo.getProcessingLong()) / (86400 * size) * 100))));
                }
                List<LastWeekDataVo> collect = lastWeekDataVos.stream().sorted(Comparator.comparing(LastWeekDataVo::getUtilization).reversed()).collect(Collectors.toList());
                if (collect.size() > 3) {
                    List<LastWeekDataVo> topList = collect.subList(0, 6);
                    for (LastWeekDataVo vo : topList) {
                        LastWeekDataRankingVo rankingVo = new LastWeekDataRankingVo();
                        rankingVo.setTopName(vo.getEquipment());
                        rankingVo.setTopRate(vo.getUtilization().toString());
                        voList.add(rankingVo);
                    }
                }
            }
        }
        return voList;
    }
    /**
     * èŽ·å–è®¾å¤‡å½“å‰çŠ¶æ€
     */
    @Override
    public List<MdcEquipmentOpVo> findEquipmentStatus() {
        List<MdcEquipmentOpVo> result = new ArrayList<>();
        //根据id获取设备id集合
        List<String> equipmentIdList = mdcEquipmentService.listEquipmentId(null);
        if (!equipmentIdList.isEmpty()) {
            List<EquipmentLog> logs = equipmentLogService.getEquipmentStatusList(equipmentIdList);
            //根据设备id集合查询设备实时状态
            for (EquipmentLog equipmentId : logs) {
                if (equipmentId != null) {
                    MdcEquipmentOpVo vo = new MdcEquipmentOpVo();
                    vo.setEquipmentId(equipmentId.getEquipmentId());
                    if (equipmentId.getOporation() != null) {
                        switch (equipmentId.getOporation()) {
                            case 1:
                                vo.setOporation(1);
                                vo.setOporationDict("待机");
                                break;
                            case 2:
                                vo.setOporationDict("待机");
                                vo.setOporation(2);
                                break;
                            case 3:
                                vo.setOporationDict("运行");
                                vo.setOporation(3);
                                break;
                            case 22:
                                vo.setOporationDict("报警");
                                vo.setOporation(22);
                                break;
                            default:
                                vo.setOporationDict("关机");
                                vo.setOporation(0);
                                break;
                        }
                    } else {
                        vo.setOporation(0);
                        vo.setOporationDict("关机");
                    }
                    result.add(vo);
                } else {
                    MdcEquipmentOpVo vo = new MdcEquipmentOpVo();
                    vo.setOporation(0);
                    vo.setOporationDict("关机");
                    result.add(vo);
                }
            }
        }
        return result;
    }
    /**
     * èŽ·å–å…¨åŽ‚å½“å‰è®¾å¤‡çŠ¶æ€ä¿¡æ¯
     */
    @Override
    public Map<String, Object> findAllEquipmentStatus() {
        int runCount = 0;
        int standbyCount = 0;
        int alarmCount = 0;
        int offCount = 0;
        List<String> equipmentIdList = mdcEquipmentService.listEquipmentId(null);
        List<EquipmentLog> equipmentLogs = new ArrayList<>();
        for (String equipmentId : equipmentIdList) {
            EquipmentLog equipmentLog = equipmentLogService.selectEquipmentOporation(equipmentId);
            if (equipmentLog != null) {
                equipmentLogs.add(equipmentLog);
            } else {
                offCount += 1;
            }
        }
        if (!equipmentLogs.isEmpty()) {
            for (EquipmentLog equipmentLog : equipmentLogs) {
                if (equipmentLog.getOporation() != null) {
                    switch (equipmentLog.getOporation()) {
                        case 1:
                        case 2:
                            standbyCount += 1;
                            break;
                        case 3:
                            runCount += 1;
                            break;
                        case 22:
                            alarmCount += 1;
                            break;
                        default:
                            offCount += 1;
                            break;
                    }
                } else {
                    offCount += 1;
                }
            }
        }
        Map<String, Object> result = new HashMap<>();
        result.put("runCount", runCount);
        result.put("standbyCount", standbyCount);
        result.put("alarmCount", alarmCount);
        result.put("offCount", offCount);
        return result;
    }
    /**
     * 20230101
     *
     * @param begin å¼€å§‹æ—¥æœŸ
     * @param end   ç»“束日期
     * @return å¼€å§‹ä¸Žç»“束之间的所有日期,包括起止
     */
    public static List<String> getMiddleDate(LocalDate begin, LocalDate end) {
        List<String> localDateList = new ArrayList<>();
        long length = end.toEpochDay() - begin.toEpochDay();
        for (long i = length; i >= 0; i--) {
            localDateList.add(end.minusDays(i).format(DateTimeFormatter.BASIC_ISO_DATE));
        }
        return localDateList;
    }
    /**
     * 2023-01-01
     *
     * @param begin å¼€å§‹æ—¥æœŸ
     * @param end   ç»“束日期
     * @return å¼€å§‹ä¸Žç»“束之间的所有日期,包括起止
     */
    public static List<String> getMiddleDates(LocalDate begin, LocalDate end) {
        List<String> localDateList = new ArrayList<>();
        long length = end.toEpochDay() - begin.toEpochDay();
        for (long i = length; i >= 0; i--) {
            localDateList.add(end.minusDays(i).toString());
        }
        return localDateList;
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/AllEquipmentLogVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package org.jeecg.modules.mdc.subcontrol.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.util.Date;
/**
 * @author: LiuS
 * @create: 2022-12-28 11:04
 */
@Data
public class AllEquipmentLogVo {
    //车间名称
    @TableField(exist = false)
    private String parentName;
    //设备编号
    private String equipmentId;
    //设备名称
    private String equipmentName;
    //时间
    private Date collectTime;
    //
    private Integer oporation;
    //报警号
    private String alarm;
    //报警描述(故障类型)
    private String alarmDescription;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/LastWeekDataRankingVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package org.jeecg.modules.mdc.subcontrol.vo;
import lombok.Data;
/**
 * @author: LiuS
 * @create: 2023-01-09 10:58
 */
@Data
public class LastWeekDataRankingVo {
    private String topName;
    private String topRate;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/LastWeekDataVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package org.jeecg.modules.mdc.subcontrol.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @author: LiuS
 * @create: 2023-01-05 17:35
 */
@Data
public class LastWeekDataVo {
    //设备id
    private String equipment;
    //日期
    private String theDate;
    //开机时长
    private String openingLong;
    //关机时长
    private String closedLong;
    //工作时长
    private String processingLong;
    //报警时长
    private String waitingLong;
    //故障时间
    private String faultLong;
    //总时长
    private String totalLong;
    //闲置时长
    private String idleLong;
    //利用率
    private BigDecimal utilization;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/MdcEquipmentAndTypeVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.mdc.subcontrol.vo;
import lombok.Data;
/**
 * @author clown
 * * @date 2022/7/19
 */
@Data
public class MdcEquipmentAndTypeVo {
    private String parentId; //列表ID
    private Integer mdcType; //默认1
    private Integer dayOrMonth; // 1 å¤© 2 æœˆ
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/MdcEquipmentOpVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.modules.mdc.subcontrol.vo;
import lombok.Data;
import org.jeecg.modules.mdc.entity.MdcEquipment;
/**
 * @author clown
 * * @date 2025/2/19
 */
@Data
public class MdcEquipmentOpVo  extends MdcEquipment {
    private static final long serialVersionUID = -8341212703599621003L;
    private String status;
    private String oporationDict;
}