Lius
2024-04-11 db0cd1d60268811918f38a165052f94911f18e1e
更新
已添加1个文件
已修改6个文件
179 ■■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcHomeMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcHomeService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/IMdcHomeServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/EquipmentDayUtilizationVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcHomeEfficiencyVo.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java
@@ -14,6 +14,7 @@
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.mdc.vo.MdcHomeEfficiencyVo;
import org.jeecg.modules.system.entity.MdcProduction;
import org.jeecg.modules.system.service.IMdcProductionService;
import org.springframework.web.bind.annotation.GetMapping;
@@ -73,7 +74,7 @@
        List<MdcCommonVo> resultMap = mdcHomeService.getEquipmentStatusStatistics(userId, key);
        Map<String, Object> map = new HashMap<>();
        map.put("list", resultMap);
        map.put("producitonId", key);
        map.put("productionId", key);
        return Result.OK(map);
    }
@@ -191,5 +192,23 @@
        return Result.OK(result);
    }
    @ApiOperation(value = "MDC首页接口-工段级设备效率统计", notes = "MDC首页接口-工段级设备效率统计")
    @GetMapping("/equipmentEfficiencyStatistics")
    public Result<?> equipmentEfficiencyStatistics(String productionCode) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        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 {
            //工段 æŸ¥è¯¢ç”¨æˆ·æ‹¥æœ‰çš„工段权限
            key = mdcProductionService.findThreeProductionId(userId);
        }
        MdcHomeEfficiencyVo result = mdcHomeService.getEquipmentEfficiencyStatistics(userId, key);
        return Result.OK(result);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcHomeMapper.java
@@ -73,4 +73,18 @@
     */
    List<MdcOverallEquipmentEfficiency> getEquipmentOEEMonthStatistics(@Param("validDate") String validDate, @Param("equipmentIdList") List<String> equipmentIdList);
    /**
     * èŽ·å–æ˜¨å¤©çš„åˆ©ç”¨çŽ‡
     *
     * @param equipmentIdList
     * @param date
     * @return
     */
    MdcEquipmentStatisticalInfo getUtilizationByDay(@Param("equipmentIdList") List<String> equipmentIdList, @Param("date") String date);
    /**
     * æŸ¥è¯¢å‰ä¸ƒå¤©åˆ©ç”¨çއ
     */
    List<MdcEquipmentStatisticalInfo> getEquipmentSevenUtilizationStatistics(@Param("equipmentIdList") List<String> equipmentIdList, @Param("start") String start, @Param("end") String end);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml
@@ -102,4 +102,45 @@
        </where>
    </select>
    <select id="getUtilizationByDay" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo">
        SELECT
            the_date,
            SUM ( process_long ) processLong,
            SUM ( open_long ) openLong
        FROM
            mdc_equipment_statistical_info
        <where>
            AND the_date = #{date}
            <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>
        </where>
        GROUP BY
            the_date
    </select>
    <select id="getEquipmentSevenUtilizationStatistics" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo">
        SELECT
            equipment_id,
            SUM ( process_long ) processLong,
            SUM ( open_long ) openLong
        FROM
            mdc_equipment_statistical_info
        <where>
            AND the_date BETWEEN #{start} AND #{end}
            <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>
        </where>
        GROUP BY
            equipment_id
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcHomeService.java
@@ -2,6 +2,7 @@
import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency;
import org.jeecg.modules.mdc.vo.MdcCommonVo;
import org.jeecg.modules.mdc.vo.MdcHomeEfficiencyVo;
import java.util.List;
import java.util.Map;
@@ -41,4 +42,9 @@
     * æŸ¥è¯¢è®¾å¤‡ä¸ŠæœˆOEE
     */
    List<MdcOverallEquipmentEfficiency> getEquipmentOEEMonthStatistics(String userId, String key);
    /**
     * å·¥æ®µçº§è®¾å¤‡æ•ˆçއ
     */
    MdcHomeEfficiencyVo getEquipmentEfficiencyStatistics(String userId, String key);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/IMdcHomeServiceImpl.java
@@ -12,6 +12,7 @@
import org.jeecg.modules.mdc.vo.EquipmentDayUtilizationVo;
import org.jeecg.modules.mdc.vo.MdcCommonVo;
import org.jeecg.modules.mdc.vo.MdcEquipmentStatusVo;
import org.jeecg.modules.mdc.vo.MdcHomeEfficiencyVo;
import org.jeecg.modules.system.entity.MdcProduction;
import org.springframework.stereotype.Service;
@@ -241,9 +242,27 @@
        Map<String, Object> result = new HashMap<>();
        List<String> equipmentIdList = mdcEquipmentService.getEquipmentIdsProduction(userId, key);
        //获取前七天日期集合
        Date start = DateUtils.toDate(LocalDate.now().plusDays(-7).toString(), DateUtils.STR_DATE);
        Date end = DateUtils.toDate(LocalDate.now().plusDays(-1).toString(), DateUtils.STR_DATE);
        List<String> dayBetween = DateUtils.getDatesStringList2(start, end);
        String start = DateUtils.format(DateUtils.toDate(LocalDate.now().plusDays(-7).toString(), DateUtils.STR_DATE), DateUtils.STRDATE);
        String end = DateUtils.format(DateUtils.toDate(LocalDate.now().plusDays(-1).toString(), DateUtils.STR_DATE), DateUtils.STRDATE);
        if (equipmentIdList != null && !equipmentIdList.isEmpty()) {
            result.put("equipmentIdList", equipmentIdList);
            List<MdcEquipmentStatisticalInfo> mdcEquipmentStatisticalInfoList = mdcHomeMapper.getEquipmentSevenUtilizationStatistics(equipmentIdList, start, end);
            List<EquipmentDayUtilizationVo> dataList = new ArrayList<>();
            if (mdcEquipmentStatisticalInfoList != null && !mdcEquipmentStatisticalInfoList.isEmpty()) {
                for (MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo : mdcEquipmentStatisticalInfoList) {
                    EquipmentDayUtilizationVo equipmentDayUtilizationVo = new EquipmentDayUtilizationVo();
                    equipmentDayUtilizationVo.setEquipmentId(mdcEquipmentStatisticalInfo.getEquipmentId());
                    equipmentDayUtilizationVo.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).divide(new BigDecimal(mdcEquipmentStatisticalInfoList.size()), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
                    if (BigDecimal.ZERO.compareTo(mdcEquipmentStatisticalInfo.getOpenLong()) == -1) {
                        equipmentDayUtilizationVo.setOpenRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(mdcEquipmentStatisticalInfo.getOpenLong(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP));
                        equipmentDayUtilizationVo.setStartRate(mdcEquipmentStatisticalInfo.getOpenLong().divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).divide(new BigDecimal(mdcEquipmentStatisticalInfoList.size()), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
                    }
                    dataList.add(equipmentDayUtilizationVo);
                }
            }
            result.put("dataList", dataList);
        }
        /*List<String> dayBetween = DateUtils.getDatesStringList2(start, end);
        List<String> dateList = new ArrayList<>();
        List<EquipmentDayUtilizationVo> dataList = new ArrayList<>();
        for (String date : dayBetween) {
@@ -260,9 +279,9 @@
            } else {
                String sub = item.substring(2);
                if (sub.startsWith("0")) {
                    item = item.substring(0, 2) +  "月" + sub.substring(2) + "日";
                    item = item.substring(0, 2) + "月" + sub.substring(2) + "日";
                } else {
                    item = item.substring(0, 2) +  "月" + item.substring(2) + "日";
                    item = item.substring(0, 2) + "月" + item.substring(2) + "日";
                }
            }
            dateList.add(item);
@@ -288,7 +307,7 @@
            }
        }
        result.put("dateList", dateList);
        result.put("dataList", dataList);
        result.put("dataList", dataList);*/
        return result;
    }
@@ -305,4 +324,34 @@
        }
        return result;
    }
    /**
     * å·¥æ®µçº§è®¾å¤‡æ•ˆçއ
     */
    @Override
    public MdcHomeEfficiencyVo getEquipmentEfficiencyStatistics(String userId, String key) {
        MdcHomeEfficiencyVo result = new MdcHomeEfficiencyVo();
        List<String> equipmentIdList = mdcEquipmentService.getEquipmentIdsProduction(userId, key);
        if (equipmentIdList != null && !equipmentIdList.isEmpty()) {
            // èŽ·å–åˆ©ç”¨çŽ‡æ•°æ®
            String date = DateUtils.format(DateUtils.toDate(LocalDate.now().plusDays(-1).toString(), DateUtils.STR_DATE), DateUtils.STRDATE);
            MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo = mdcHomeMapper.getUtilizationByDay(equipmentIdList, date);
            if (mdcEquipmentStatisticalInfo != null) {
                result.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).divide(new BigDecimal(equipmentIdList.size()), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
                if (BigDecimal.ZERO.compareTo(mdcEquipmentStatisticalInfo.getOpenLong()) == -1) {
                    result.setOpenRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(mdcEquipmentStatisticalInfo.getOpenLong(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP));
                    result.setStartRate(mdcEquipmentStatisticalInfo.getOpenLong().divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).divide(new BigDecimal(equipmentIdList.size()), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
                }
            }
            //获取OEE数据
            String month = DateUtils.format(DateUtils.toDate(LocalDate.now().plusMonths(-1).toString(), DateUtils.STR_DATE), DateUtils.STR_YEAR_MONTH);
            BigDecimal oee = mdcHomeMapper.getOeeByDate(equipmentIdList, month);
            if (oee == null || oee.compareTo(BigDecimal.ZERO) == 0) {
                result.setOverallEquipmentEfficiency(BigDecimal.ZERO);
            } else {
                result.setOverallEquipmentEfficiency(oee.divide(new BigDecimal(equipmentIdList.size()), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP));
            }
        }
        return result;
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/EquipmentDayUtilizationVo.java
@@ -11,9 +11,9 @@
@Data
public class EquipmentDayUtilizationVo {
    /**
     * æ—¥æœŸ
     * è®¾å¤‡ç¼–号
     */
    private String date;
    private String equipmentId;
    /**
     * åˆ©ç”¨çއ
     */
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcHomeEfficiencyVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package org.jeecg.modules.mdc.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @author Lius
 * @date 2024/4/11 9:29
 */
@Data
public class MdcHomeEfficiencyVo {
    /**
     * åˆ©ç”¨çއ
     */
    private BigDecimal utilizationRate = BigDecimal.ZERO;
    /**
     * å¼€åŠ¨çŽ‡
     */
    private BigDecimal startRate = BigDecimal.ZERO;
    /**
     * å¼€æœºçއ
     */
    private BigDecimal openRate = BigDecimal.ZERO;
    /**
     * OEE
     */
    private BigDecimal overallEquipmentEfficiency = BigDecimal.ZERO;
}