Lius
2025-05-08 80cabc1fec87b8f8cf8026ae1a5c14aa2cab4527
update
已修改11个文件
199 ■■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcBoardController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcBoardRateVo.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcBoardController.java
@@ -72,6 +72,13 @@
        return Result.OK(result);
    }
    @ApiOperation(value = "MDC看板接口-设备运行状态及运行参数信息", notes = "MDC看板接口-设备运行状态及运行参数信息")
    @GetMapping("/equipmentRealTimeDetail")
    public Result<?> equipmentRealTimeDetail(@RequestParam(name = "equipmentId", required = true) String equipmentId) {
        Map<String, Object> result = mdcBoardService.rateAnalysisTrendMonth(equipmentId);
        return Result.OK(result);
    }
//    @ApiOperation(value = "MDC首页接口-设备产品合格率", notes = "MDC首页接口-设备产品合格率")
//    @GetMapping("/passRate")
//    public Result<?> passRate(@RequestParam(name = "equipmentId", required = true) String equipmentId) {
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java
@@ -31,9 +31,9 @@
    MdcEquipmentStatisticalDto findByEquipmentAndMonth(@Param("equipmentId") String equipmentId, @Param("date") String date);
    MdcEquipmentStatisticalInfo findByEquipmentAndDate(@Param("equipmentList") List<String> equipmentList, @Param("date") String date);
    List<MdcEquipmentStatisticalInfo> findByEquipmentAndDate(@Param("equipmentList") List<String> equipmentList, @Param("start") String start, @Param("end") String end);
    MdcEquipmentStatisticalInfo findByEquIdAndDate(@Param("equipmentId") String equipmentId, @Param("date") String date);
    List<MdcEquipmentStatisticalInfo> findByEquIdAndDate(@Param("equipmentId") String equipmentId, @Param("start") String start, @Param("end") String end);
    MdcEquipmentStatisticalInfo findByEquIdAndMonth(@Param("equipmentId") String equipmentId, @Param("month") String month);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java
@@ -26,9 +26,9 @@
     */
    IPage<MdcOeeInfo> pageList(Page<MdcOeeInfo> page, @Param("mdcOeeInfoVo") MdcOeeInfoVo mdcOeeInfoVo);
    BigDecimal findByEquIdsAndDate(@Param("equipmentIdList") List<String> equipmentIdList, @Param("date") String date);
    List<MdcOeeInfo> findByEquIdsAndDate(@Param("equipmentIdList") List<String> equipmentIdList, @Param("start") String start, @Param("end") String end);
    BigDecimal findByEquIdAndDate(@Param("equipmentId") String equipmentId, @Param("date") String date);
    List<MdcOeeInfo> findByEquIdAndDate(@Param("equipmentId") String equipmentId, @Param("start") String start, @Param("end") String end);
    BigDecimal findByEquIdAndMonth(@Param("equipmentId") String equipmentId, @Param("month") String month);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml
@@ -38,7 +38,7 @@
        FROM
            mdc_equipment_statistical_info
        <where>
            the_date = #{date}
            the_date BETWEEN #{start} AND #{end}
            AND equipment_id IN
            <foreach collection="equipmentList" index="index" item="id" open="(" separator="," close=")">
                #{id}
@@ -49,7 +49,7 @@
    </select>
    <select id="findByEquIdAndDate" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo">
        SELECT TOP 1 * FROM mdc_equipment_statistical_info WHERE equipment_id = #{equipmentId} AND the_date = #{date}
        SELECT * FROM mdc_equipment_statistical_info WHERE equipment_id = #{equipmentId} AND the_date BETWEEN #{start} AND #{end} ORDER BY the_date
    </select>
    <select id="findByEquIdAndMonth" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo">
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml
@@ -28,22 +28,27 @@
        ORDER BY the_date DESC, equipment_id ASC
    </select>
    <select id="findByEquIdsAndDate" resultType="java.math.BigDecimal">
    <select id="findByEquIdsAndDate" resultType="org.jeecg.modules.mdc.entity.MdcOeeInfo">
        SELECT
            AVG ( oee )
            the_date,
            AVG ( oee ) oee
        FROM
            mdc_oee_info
        <where>
            the_date = #{date}
            the_date BETWEEN #{start} AND #{end}
            AND equipment_id IN
            <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                #{ id }
            </foreach>
        </where>
        GROUP BY
            the_date
        ORDER BY
            the_date
    </select>
    <select id="findByEquIdAndDate" resultType="java.math.BigDecimal">
        SELECT oee FROM mdc_oee_info WHERE the_date = #{date} AND equipment_id = #{equipmentId}
    <select id="findByEquIdAndDate" resultType="org.jeecg.modules.mdc.entity.MdcOeeInfo">
        SELECT * FROM mdc_oee_info WHERE the_date BETWEEN #{start} AND #{end} AND equipment_id = #{equipmentId} ORDER BY the_date
    </select>
    <select id="findByEquIdAndMonth" resultType="java.math.BigDecimal">
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java
@@ -33,9 +33,9 @@
    MdcEquipmentStatisticalDto findByEquipmentAndMonth(String equipmentId, String date);
    MdcEquipmentStatisticalInfo findByEquipmentAndDate(List<String> equipmentList, String date);
    List<MdcEquipmentStatisticalInfo> findByEquipmentAndDate(List<String> equipmentList, String start, String end);
    MdcEquipmentStatisticalInfo findByEquIdAndDate(String equipmentId, String date);
    List<MdcEquipmentStatisticalInfo> findByEquIdAndDate(String equipmentId, String start, String end);
    MdcEquipmentStatisticalInfo findByEquIdAndMonth(String equipmentId, String month);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java
@@ -46,9 +46,9 @@
     */
    void computeOee(MdcOeeComputeVo mdcOeeComputeVo);
    BigDecimal findByEquIdsAndDate(List<String> equipmentIdList, String date);
    List<MdcOeeInfo> findByEquIdsAndDate(List<String> equipmentIdList, String start, String end);
    BigDecimal findByEquIdAndDate(String equipmentId, String date);
    List<MdcOeeInfo> findByEquIdAndDate(String equipmentId, String start, String end);
    BigDecimal findByEquIdAndMonth(String equipmentId, String month);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java
@@ -2,11 +2,13 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.sun.org.apache.bcel.internal.generic.NEW;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.mdc.constant.MdcConstant;
import org.jeecg.modules.mdc.entity.Equipment;
import org.jeecg.modules.mdc.entity.MdcEquipment;
import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo;
import org.jeecg.modules.mdc.entity.MdcOeeInfo;
import org.jeecg.modules.mdc.service.*;
import org.jeecg.modules.mdc.util.DateUtils;
import org.jeecg.modules.mdc.vo.MdcBoardRateVo;
@@ -58,10 +60,6 @@
        if (StringUtils.isBlank(productionId)) {
            MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, ""));
            productionId = mdcProduction.getId();
            result.put("productionName", mdcProduction.getProductionName());
        } else {
            MdcProduction mdcProduction = mdcProductionService.getById(productionId);
            result.put("productionName", mdcProduction.getProductionName());
        }
        List<String> proIds = mdcProductionService.findChildByProId(productionId);
        if (proIds == null || proIds.isEmpty()) {
@@ -132,29 +130,50 @@
        LocalDate now = LocalDate.now();
        Date startDate = DateUtils.toDate(now.plusDays(-15).toString(), DateUtils.STR_DATE);
        Date endDate = DateUtils.toDate(now.plusDays(-1).toString(), DateUtils.STR_DATE);
        String start = DateUtils.format(startDate, DateUtils.STR_DATE);
        String end = DateUtils.format(endDate, DateUtils.STR_DATE);
        List<String> dateList = DateUtils.getDatesStringList(startDate, endDate);
        List<String> dates = new ArrayList<>();
        List<MdcBoardRateVo> dataList = new ArrayList<>();
        for (String date : dateList) {
            MdcBoardRateVo mdcBoardRateVo = new MdcBoardRateVo();
            String s = date.substring(5, 10);
            dates.add(s);
            mdcBoardRateVo.setDate(s);
        List<String> dates = dateList.stream().map(date -> date.substring(5, 10)).collect(Collectors.toList());
        result.put("dateList", dates);
        Map<String, MdcBoardRateVo> statisticsMap = new LinkedHashMap<>();
        dateList.forEach(date -> {
            statisticsMap.put(date, new MdcBoardRateVo(date.substring(5, 10)));
        });
            // TEEP 开机率 开动率
            MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findByEquipmentAndDate(equipmentIdList, date.replaceAll("-", ""));
            mdcBoardRateVo.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP));
            mdcBoardRateVo.setOpenRate(mdcEquipmentStatisticalInfo.getOpenLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP));
            if (mdcEquipmentStatisticalInfo.getOpenLong().compareTo(BigDecimal.ZERO) > 0) {
                mdcBoardRateVo.setStartRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(mdcEquipmentStatisticalInfo.getOpenLong(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
        List<MdcEquipmentStatisticalInfo> mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findByEquipmentAndDate(equipmentIdList, start.replaceAll("-", ""), end.replaceAll("-", ""));
        if (mdcEquipmentStatisticalInfo != null && !mdcEquipmentStatisticalInfo.isEmpty()) {
            mdcEquipmentStatisticalInfo.forEach(equipmentStatisticalInfo -> {
                String date = DateUtils.format(DateUtils.toDate(equipmentStatisticalInfo.getTheDate(), DateUtils.STRDATE), DateUtils.STR_DATE);
                if (statisticsMap.containsKey(date)) {
                    MdcBoardRateVo mdcBoardRateVo = statisticsMap.get(date);
                    if (equipmentStatisticalInfo.getProcessLong().compareTo(BigDecimal.ZERO) > 0) {
                        mdcBoardRateVo.setUtilizationRate(equipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP));
                    }
                    if (equipmentStatisticalInfo.getOpenLong().compareTo(BigDecimal.ZERO) > 0) {
                        mdcBoardRateVo.setOpenRate(equipmentStatisticalInfo.getOpenLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP));
                    }
                    if (equipmentStatisticalInfo.getOpenLong().compareTo(BigDecimal.ZERO) > 0) {
                        mdcBoardRateVo.setStartRate(equipmentStatisticalInfo.getProcessLong().multiply(new BigDecimal("100").divide(equipmentStatisticalInfo.getOpenLong(), 2, RoundingMode.HALF_UP)));
                    }
                    statisticsMap.put(date, mdcBoardRateVo);
                }
            });
            }
            // OEE
            BigDecimal oee = mdcOeeInfoService.findByEquIdsAndDate(equipmentIdList, date);
            if (oee != null) {
                mdcBoardRateVo.setOee(oee.setScale(2, RoundingMode.HALF_UP));
        List<MdcOeeInfo> oeeInfo = mdcOeeInfoService.findByEquIdsAndDate(equipmentIdList, start, end);
        if (oeeInfo != null && !oeeInfo.isEmpty()) {
            oeeInfo.forEach(mdcOeeInfo -> {
                if (statisticsMap.containsKey(mdcOeeInfo.getTheDate())) {
                    MdcBoardRateVo mdcBoardRateVo = statisticsMap.get(mdcOeeInfo.getTheDate());
                    if (mdcOeeInfo.getOee().compareTo(BigDecimal.ZERO) > 0) {
                        mdcBoardRateVo.setOee(mdcOeeInfo.getOee().setScale(2, RoundingMode.HALF_UP));
            }
            dataList.add(mdcBoardRateVo);
                    statisticsMap.put(mdcOeeInfo.getTheDate(), mdcBoardRateVo);
        }
        result.put("dateList", dates);
            });
        }
        List<MdcBoardRateVo> dataList = new ArrayList<>(statisticsMap.values());
        result.put("dataList", dataList);
        return result;
    }
@@ -180,25 +199,44 @@
        LocalDate now = LocalDate.now();
        Date startDate = DateUtils.toDate(now.plusDays(-7).toString(), DateUtils.STR_DATE);
        Date endDate = DateUtils.toDate(now.plusDays(-1).toString(), DateUtils.STR_DATE);
        String start = DateUtils.format(startDate, DateUtils.STR_DATE);
        String end = DateUtils.format(endDate, DateUtils.STR_DATE);
        List<String> dayBetween = DateUtils.getDatesStringList(startDate, endDate);
        List<String> dateList = new ArrayList<>();
        List<MdcBoardRateVo> dataList = new ArrayList<>();
        for (String date : dayBetween) {
            MdcBoardRateVo mdcBoardRateVo = new MdcBoardRateVo();
            String s = date.substring(5, 10);
            dateList.add(s);
            mdcBoardRateVo.setDate(s);
            // TEEP
            MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findByEquIdAndDate(equipmentId, date.replaceAll("-", ""));
            mdcBoardRateVo.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP));
            // OEE
            BigDecimal oee = mdcOeeInfoService.findByEquIdAndDate(equipmentId, date);
            if (oee != null) {
                mdcBoardRateVo.setOee(oee.setScale(2, RoundingMode.HALF_UP));
            }
            dataList.add(mdcBoardRateVo);
        }
        List<String> dateList = dayBetween.stream().map(date -> date.substring(5, 10)).collect(Collectors.toList());
        result.put("dateList", dateList);
        Map<String, MdcBoardRateVo> statisticsMap = new LinkedHashMap<>();
        dayBetween.forEach(date -> {
            statisticsMap.put(date, new MdcBoardRateVo(date.substring(5, 10)));
        });
        // TEEP
        List<MdcEquipmentStatisticalInfo> mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findByEquIdAndDate(equipmentId, start.replaceAll("-", ""), end.replaceAll("-", ""));
        if (mdcEquipmentStatisticalInfo != null && !mdcEquipmentStatisticalInfo.isEmpty()) {
            mdcEquipmentStatisticalInfo.forEach(equipmentStatisticalInfo -> {
                String date = DateUtils.format(DateUtils.toDate(equipmentStatisticalInfo.getTheDate(), DateUtils.STRDATE), DateUtils.STR_DATE);
                if (statisticsMap.containsKey(date)) {
                    MdcBoardRateVo mdcBoardRateVo = statisticsMap.get(date);
                    if (equipmentStatisticalInfo.getProcessLong().compareTo(BigDecimal.ZERO) > 0) {
                        mdcBoardRateVo.setUtilizationRate(equipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP));
                    }
                    statisticsMap.put(date, mdcBoardRateVo);
                }
            });
        }
        // OEE
        List<MdcOeeInfo> oeeInfo = mdcOeeInfoService.findByEquIdAndDate(equipmentId, start, end);
        if (oeeInfo != null && !oeeInfo.isEmpty()) {
            oeeInfo.forEach(mdcOeeInfo -> {
                if (statisticsMap.containsKey(mdcOeeInfo.getTheDate())) {
                    MdcBoardRateVo mdcBoardRateVo = statisticsMap.get(mdcOeeInfo.getTheDate());
                    if (mdcOeeInfo.getOee().compareTo(BigDecimal.ZERO) > 0) {
                        mdcBoardRateVo.setOee(mdcOeeInfo.getOee().setScale(2, RoundingMode.HALF_UP));
                    }
                    statisticsMap.put(mdcOeeInfo.getTheDate(), mdcBoardRateVo);
                }
            });
        }
        List<MdcBoardRateVo> dataList = new ArrayList<>(statisticsMap.values());
        result.put("dataList", dataList);
        return result;
    }
@@ -242,24 +280,4 @@
        return result;
    }
//    /**
//     * 设备产品合格率
//     */
//    @Override
//    public Map<String, Object> passRate(String equipmentId) {
//        Map<String, Object> result = new HashMap<>();
//        LocalDate now = LocalDate.now();
//        Date start = DateUtils.toDate(now.plusMonths(-6).toString(), DateUtils.STR_DATE);
//        Date end = DateUtils.toDate(now.plusMonths(-1).toString(), DateUtils.STR_DATE);
//        List<String> monthBetween = DateUtils.getMonthBetween(start, end);
//        List<String> dateList = new ArrayList<>();
//        for (String month : monthBetween) {
//            String name = month.substring(month.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "月";
//            dateList.add(name);
//            MdcBoardRateVo mdcBoardRateVo = new MdcBoardRateVo();
//            // 合格率
//
//        }
//        return result;
//    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java
@@ -325,13 +325,13 @@
    }
    @Override
    public MdcEquipmentStatisticalInfo findByEquipmentAndDate(List<String> equipmentList, String date) {
        return this.baseMapper.findByEquipmentAndDate(equipmentList, date);
    public List<MdcEquipmentStatisticalInfo> findByEquipmentAndDate(List<String> equipmentList, String start, String end) {
        return this.baseMapper.findByEquipmentAndDate(equipmentList, start, end);
    }
    @Override
    public MdcEquipmentStatisticalInfo findByEquIdAndDate(String equipmentId, String date) {
        return this.baseMapper.findByEquIdAndDate(equipmentId, date);
    public List<MdcEquipmentStatisticalInfo> findByEquIdAndDate(String equipmentId, String start, String end) {
        return this.baseMapper.findByEquIdAndDate(equipmentId, start, end);
    }
    @Override
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java
@@ -263,13 +263,13 @@
    }
    @Override
    public BigDecimal findByEquIdsAndDate(List<String> equipmentIdList, String date) {
        return this.baseMapper.findByEquIdsAndDate(equipmentIdList, date);
    public List<MdcOeeInfo> findByEquIdsAndDate(List<String> equipmentIdList, String start, String end) {
        return this.baseMapper.findByEquIdsAndDate(equipmentIdList, start, end);
    }
    @Override
    public BigDecimal findByEquIdAndDate(String equipmentId, String date) {
        return this.baseMapper.findByEquIdAndDate(equipmentId, date);
    public List<MdcOeeInfo> findByEquIdAndDate(String equipmentId, String start, String end) {
        return this.baseMapper.findByEquIdAndDate(equipmentId, start, end);
    }
    @Override
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcBoardRateVo.java
@@ -37,4 +37,11 @@
     * 合格率
     */
    private BigDecimal passRate = BigDecimal.ZERO;
    public MdcBoardRateVo() {
    }
    public MdcBoardRateVo(String date) {
        this.date = date;
    }
}