Lius
2025-03-31 5cd4558fb1a7178653d77e1a982e6f26d06b5db5
中心综合利用率趋势接口
已添加4个文件
已修改18个文件
已删除1个文件
439 ■■■■■ 文件已修改
lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComRateDto.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftChildDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftRateDto.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/UtilizationRateAvg.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/EquEffVo.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
@@ -615,4 +615,7 @@
    String ORG_TYPE = "3";
    Integer SHIFT_TYPE_1 = 1;
    Integer SHIFT_TYPE_2 = 2;
}
lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
@@ -134,4 +134,5 @@
    List<MdcEquipment> findByProIdsAndTeamCode(@Param("mdcProductionIds") List<String> mdcProductionIds, @Param("teamCodeList") List<String> teamCodeList);
    List<MdcEquipment> findByProIdsAndType(@Param("mdcProductionIds") List<String> mdcProductionIds, @Param("typeList") List<String> typeList);
}
lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
@@ -324,4 +324,20 @@
        </foreach>
    </select>
    <select id="findByProIdsAndType" resultType="org.jeecg.modules.mdc.entity.MdcEquipment">
        SELECT
            t1.*
        FROM
            mdc_equipment t1
                LEFT JOIN mdc_production_equipment t2 ON t1.id = t2.equipment_id
        WHERE t2.production_id IN
        <foreach collection="mdcProductionIds" item = "productionId" index = "index" open = "(" close= ")" separator = ",">
            #{productionId}
        </foreach>
        AND t1.equipment_type IN
        <foreach collection="typeList" item = "equipmentType" index = "index" open = "(" close= ")" separator = ",">
            #{equipmentType}
        </foreach>
    </select>
</mapper>
lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
@@ -231,4 +231,12 @@
     * @return
     */
    List<MdcEquipment> findByProIdsAndTeamCode(List<String> allProductionIds, List<String> teamCodelist);
    /**
     * æ ¹æ®äº§çº¿id集合和设备类型查询设备列表
     * @param allProductionIds
     * @param typeList
     * @return
     */
    List<MdcEquipment> findByProIdsAndType(List<String> allProductionIds, List<String> typeList);
}
lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -1031,4 +1031,15 @@
        return this.baseMapper.findByProIdsAndTeamCode(mdcProductionIds, teamCodeList);
    }
    /**
     * æ ¹æ®äº§çº¿id集合和设备类型查询设备列表
     * @param allProductionIds
     * @param typeList
     * @return
     */
    @Override
    public List<MdcEquipment> findByProIdsAndType(List<String> allProductionIds, List<String> typeList) {
        return this.baseMapper.findByProIdsAndType(allProductionIds, typeList);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java
@@ -32,7 +32,7 @@
    @ApiOperation(value = "设备效率报表-利用率列表查询", notes = "设备效率报表-利用率列表查询")
    @GetMapping("/efficiencyList")
    public Result efficiencyList(MdcEfficiencyReportQueryVo vo) {
    public Result<?> efficiencyList(MdcEfficiencyReportQueryVo vo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        MdcEfficiencyVo result = mdcEfficiencyReportService.efficiencyList(userId, vo);
@@ -41,7 +41,7 @@
    @ApiOperation(value = "设备效率报表-开动率列表查询", notes = "设备效率报表-开动率列表查询")
    @GetMapping("/efficiencyPOList")
    public Result efficiencyPOList(MdcEfficiencyReportQueryVo vo) {
    public Result<?> efficiencyPOList(MdcEfficiencyReportQueryVo vo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        MdcEfficiencyVo result = mdcEfficiencyReportService.efficiencyPOList(userId, vo);
@@ -50,7 +50,7 @@
    @ApiOperation(value = "设备效率报表-班次利用率列表查询", notes = "设备效率报表-班次利用率列表查询")
    @GetMapping("/efficiencyShiftList")
    public Result efficiencyShiftList(MdcEfficiencyReportShiftQueryVo vo) {
    public Result<?> efficiencyShiftList(MdcEfficiencyReportShiftQueryVo vo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        MdcEfficiencyShiftVo result = mdcEfficiencyReportService.efficiencyShiftList(userId, vo);
@@ -59,7 +59,7 @@
    @ApiOperation(value = "设备效率报表-统计分析列表", notes = "设备效率报表-统计分析列表")
    @GetMapping("/dayStatisticalRate")
    public Result dayStatisticalRate(MdcEfficiencyReportQueryVo vo) {
    public Result<?> dayStatisticalRate(MdcEfficiencyReportQueryVo vo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        StatisticalAnalysisVo result = mdcEfficiencyReportService.dayStatisticalRate(userId, vo);
@@ -68,7 +68,7 @@
    @ApiOperation(value = "设备效率报表-对比分析", notes = "设备效率报表-对比分析")
    @GetMapping("/comparativeAnalysis")
    public Result comparativeAnalysis(ComparativeAnalysisQueryVo vo) {
    public Result<?> comparativeAnalysis(ComparativeAnalysisQueryVo vo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        ComparativeAnalysisDto result = mdcEfficiencyReportService.comparativeAnalysis(userId, vo);
@@ -77,7 +77,7 @@
    @ApiOperation(value = "设备效率报表-设备日利用率", notes = "设备效率报表-设备日利用率")
    @GetMapping("/dayUtilizationRate")
    public Result dayUtilizationRate(DayUtilizationRateQueryVo vo) {
    public Result<?> dayUtilizationRate(DayUtilizationRateQueryVo vo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        DayUtilizationRateDto result = mdcEfficiencyReportService.dayUtilizationRate(userId, vo);
@@ -86,7 +86,7 @@
    @ApiOperation(value = "设备效率报表-设备日利用率对比", notes = "设备效率报表-设备日利用率对比")
    @GetMapping("/dayUtilizationRateContrast")
    public Result dayUtilizationRateContrast(DayUtilizationRateContrastQueryVo vo) {
    public Result<?> dayUtilizationRateContrast(DayUtilizationRateContrastQueryVo vo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        DayUtilizationRateDto result = mdcEfficiencyReportService.dayUtilizationRateContrast(userId, vo);
@@ -95,7 +95,7 @@
    @ApiOperation(value = "设备效率报表-利用率走势分析列表", notes = "设备效率报表-利用率走势分析列表")
    @GetMapping("/utilizationRateTrendAnalyze")
    public Result utilizationRateTrendAnalyze(DayUtilizationRateContrastQueryVo vo) {
    public Result<?> utilizationRateTrendAnalyze(DayUtilizationRateContrastQueryVo vo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        MdcUtilizationRateDto result = mdcEfficiencyReportService.utilizationRateTrendAnalyze(userId, vo);
@@ -104,21 +104,21 @@
    @ApiOperation(value = "设备效率报表-利用率分段分析列表", notes = "设备效率报表-利用率分段分析列表")
    @GetMapping("/utilizationRateSectionAnalyze")
    public Result utilizationRateSectionAnalyze(DayUtilizationRateContrastQueryVo vo) {
    public Result<?> utilizationRateSectionAnalyze(DayUtilizationRateContrastQueryVo vo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        MdcUtilizationRateDto result = mdcEfficiencyReportService.utilizationRateSectionAnalyze(userId, vo);
        return Result.OK(result);
    }
//    @ApiOperation(value = "设备效率报表-综合利用率统计分析", notes = "设备效率报表-综合利用率统计分析")
//    @GetMapping("/comprehensiveRayeAnalyze")
//    public Result comprehensiveRayeAnalyze(DayUtilizationRateContrastQueryVo vo) {
//        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//        String userId = user.getId();
//        MdcUtilizationRateDto result = mdcEfficiencyReportService.comprehensiveRayeAnalyze(userId, vo);
//        return Result.OK(result);
//    }
    @ApiOperation(value = "设备效率报表-综合利用率统计分析", notes = "设备效率报表-综合利用率统计分析")
    @GetMapping("/comprehensiveRateAnalyze")
    public Result<?> comprehensiveRateAnalyze(EquEffVo vo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        Map<String, Object> result = mdcEfficiencyReportService.comprehensiveRateAnalyze(userId, vo);
        return Result.OK(result);
    }
    @ApiOperation(value = "设备效率报表-班组综合利用率统计分析", notes = "设备效率报表-综合利用率统计分析")
    @GetMapping("/teamEfficiencyAnalyzeByMonth")
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComRateDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package org.jeecg.modules.mdc.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @Author: Lius
 * @CreateTime: 2025-03-31
 * @Description:
 */
@Data
public class ComRateDto {
    private String theMonth;
    /**
     * åˆ©ç”¨çއ
     */
    private BigDecimal utilizationRate = BigDecimal.ZERO;
    /**
     * ç­æ¬¡åˆ©ç”¨çއ
     */
    private BigDecimal shiftUtilizationRate = BigDecimal.ZERO;
    /**
     * ä¿®æ­£åˆ©ç”¨çއ
     */
    private BigDecimal amendUtilizationRate = BigDecimal.ZERO;
    /**
     * ç´¯è®¡è¿è¡Œæ—¶é•¿
     */
    private BigDecimal processLong = BigDecimal.ZERO;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftChildDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package org.jeecg.modules.mdc.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @Author: Lius
 * @CreateTime: 2025-03-31
 * @Description:
 */
@Data
public class ComShiftChildDto {
    private String month;
    private BigDecimal utilizationRate = BigDecimal.ZERO;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package org.jeecg.modules.mdc.dto;
import lombok.Data;
import java.util.List;
/**
 * @Author: Lius
 * @CreateTime: 2025-03-31
 * @Description:
 */
@Data
public class ComShiftDto {
    private String shiftSubName;
    private List<ComShiftChildDto> dataList;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/ComShiftRateDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package org.jeecg.modules.mdc.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @Author: Lius
 * @CreateTime: 2025-03-31
 * @Description:
 */
@Data
public class ComShiftRateDto {
    /**
     * å½“月
     */
    private String theMonth;
    /**
     * ç­æ¬¡id
     */
    private String shiftSub;
    /**
     * ç­æ¬¡åç§°
     */
    private String shiftSubName;
    /**
     * åˆ©ç”¨çއ
     */
    private BigDecimal utilizationRate = BigDecimal.ZERO;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java
@@ -40,4 +40,8 @@
     * å¤©æ•°
     */
    private BigDecimal dayNum;
    /**
     * ç­æ¬¡id
     */
    private String shiftSubId;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/UtilizationRateAvg.java
ÎļþÒÑɾ³ý
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java
@@ -100,6 +100,18 @@
    @ApiModelProperty(value = "开机率")
    private BigDecimal openRate;
    /**
     * ç­æ¬¡id
     */
    @Excel(name = "班次id", width = 15)
    @ApiModelProperty(value = "班次id")
    private String shiftSubId;
    /**
     * ç»Ÿè®¡ç±»åž‹(1总 2分班次)
     */
    @Excel(name = "统计类型", width = 15)
    @ApiModelProperty(value = "统计类型")
    private Integer shiftType;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @ApiModelProperty(value = "创建时间")
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto;
import org.jeecg.modules.mdc.entity.MdcEquipment;
import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfoMonth;
@@ -113,6 +114,7 @@
                    MdcEquipmentStatisticalShiftInfoMonth mdcEquipmentShiftInfoMonth = new MdcEquipmentStatisticalShiftInfoMonth();
                    mdcEquipmentShiftInfoMonth.setEquipmentId(mdcEquipment.getEquipmentId());
                    mdcEquipmentShiftInfoMonth.setTheMonth(date);
                    mdcEquipmentShiftInfoMonth.setShiftType(CommonConstant.SHIFT_TYPE_1);
                    mdcEquipmentShiftInfoMonth.setCloseLong(mdcEquipmentShiftStatisticalDto.getCloseLong().intValue());
                    mdcEquipmentShiftInfoMonth.setTotalLong(mdcEquipmentShiftStatisticalDto.getTotalLong().intValue());
                    mdcEquipmentShiftInfoMonth.setOpenLong(mdcEquipmentShiftStatisticalDto.getOpenLong().intValue());
@@ -123,6 +125,26 @@
                    mdcEquipmentShiftInfoMonth.setStartRate(mdcEquipmentShiftStatisticalDto.getOpenLong().compareTo(BigDecimal.ZERO) > 0 ? mdcEquipmentShiftStatisticalDto.getProcessLong().divide(mdcEquipmentShiftStatisticalDto.getOpenLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO);
                    mdcEquipmentShiftInfoMonth.setOpenRate(mdcEquipmentShiftStatisticalDto.getTotalLong().compareTo(BigDecimal.ZERO) > 0 ? mdcEquipmentShiftStatisticalDto.getOpenLong().divide(mdcEquipmentShiftStatisticalDto.getTotalLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO);
                    mdcEquipmentStatisticalShiftInfoMonthList.add(mdcEquipmentShiftInfoMonth);
                    // step.4 æ±‡æ€»å„班次利用率数据
                    List<MdcEquipmentStatisticalDto> essdList = mdcEquipmentStatisticalShiftInfoService.findShiftByEquipmentAndMonth(mdcEquipment.getEquipmentId(), date);
                    if (essdList != null && !essdList.isEmpty()) {
                        for (MdcEquipmentStatisticalDto equipmentStatisticalDto : essdList) {
                            MdcEquipmentStatisticalShiftInfoMonth equipmentStatisticalShiftInfoMonth = new MdcEquipmentStatisticalShiftInfoMonth();
                            equipmentStatisticalShiftInfoMonth.setEquipmentId(mdcEquipment.getEquipmentId());
                            equipmentStatisticalShiftInfoMonth.setTheMonth(date);
                            equipmentStatisticalShiftInfoMonth.setShiftType(CommonConstant.SHIFT_TYPE_2);
                            equipmentStatisticalShiftInfoMonth.setCloseLong(equipmentStatisticalDto.getCloseLong().intValue());
                            equipmentStatisticalShiftInfoMonth.setTotalLong(equipmentStatisticalDto.getTotalLong().intValue());
                            equipmentStatisticalShiftInfoMonth.setOpenLong(equipmentStatisticalDto.getOpenLong().intValue());
                            equipmentStatisticalShiftInfoMonth.setErrorLong(equipmentStatisticalDto.getErrorLong().intValue());
                            equipmentStatisticalShiftInfoMonth.setWaitLong(equipmentStatisticalDto.getWaitLong().intValue());
                            equipmentStatisticalShiftInfoMonth.setProcessLong(equipmentStatisticalDto.getProcessLong().intValue());
                            equipmentStatisticalShiftInfoMonth.setUtilizationRate(equipmentStatisticalDto.getTotalLong().compareTo(BigDecimal.ZERO) > 0 ? equipmentStatisticalDto.getProcessLong().divide(equipmentStatisticalDto.getTotalLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO);
                            equipmentStatisticalShiftInfoMonth.setStartRate(equipmentStatisticalDto.getOpenLong().compareTo(BigDecimal.ZERO) > 0 ? equipmentStatisticalDto.getProcessLong().divide(equipmentStatisticalDto.getOpenLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO);
                            equipmentStatisticalShiftInfoMonth.setOpenRate(equipmentStatisticalDto.getTotalLong().compareTo(BigDecimal.ZERO) > 0 ? equipmentStatisticalDto.getOpenLong().divide(equipmentStatisticalDto.getTotalLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO);
                            mdcEquipmentStatisticalShiftInfoMonthList.add(equipmentStatisticalShiftInfoMonth);
                        }
                    }
                }
            }
            if (!mdcEquipmentStatisticalInfoMonthList.isEmpty()) {
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java
@@ -1,14 +1,11 @@
package org.jeecg.modules.mdc.mapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.mdc.dto.MdcComAnaDto;
import org.jeecg.modules.mdc.dto.MdcEfficiencyDto;
import org.jeecg.modules.mdc.dto.TeamEquEffDto;
import org.jeecg.modules.mdc.dto.*;
import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo;
import org.jeecg.modules.mdc.vo.ComparativeAnalysisQueryVo;
import org.jeecg.modules.mdc.vo.MdcEfficiencyReportQueryVo;
import org.jeecg.modules.mdc.vo.MdcEfficiencyReportShiftQueryVo;
import org.jeecg.modules.mdc.dto.EquipmentEfficiencyAnalyzeDto;
import java.math.BigDecimal;
import java.util.List;
@@ -56,4 +53,8 @@
    List<EquipmentEfficiencyAnalyzeDto> equipmentEfficiencyAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("month") String month);
    List<TeamEquEffDto> teamEquipmentEfficiencyAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("month") String month);
    List<ComRateDto> comprehensiveRateAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("start") String startStr, @Param("end") String endStr);
    List<ComShiftRateDto> comprehensiveShiftRateAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("start") String startStr, @Param("end") String endStr, @Param("shiftId") String shiftId);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java
@@ -6,6 +6,7 @@
import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo;
import java.math.BigDecimal;
import java.util.List;
/**
 * @author: LiuS
@@ -24,4 +25,6 @@
    BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate);
    MdcEquipmentStatisticalDto findByEquipmentAndMonth(@Param("equipmentId") String equipmentId, @Param("date") String date);
    List<MdcEquipmentStatisticalDto> findShiftByEquipmentAndMonth(@Param("equipmentId") String equipmentId, @Param("date") String date);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml
@@ -194,7 +194,7 @@
            t2.utilization_rate AS shiftUtilizationRate
        FROM
            mdc_equipment_statistical_info_month t1
                LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month
                LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month AND t2.shift_type = 1
                AND t1.equipment_id = t2.equipment_id
                LEFT JOIN mdc_equipment t3 ON t3.equipment_id = t1.equipment_id
        WHERE
@@ -214,7 +214,7 @@
            t2.utilization_rate AS shiftUtilizationRate
        FROM
            mdc_equipment_statistical_info_month t1
                LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month
                LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month AND t2.shift_type = 1
                AND t1.equipment_id = t2.equipment_id
                LEFT JOIN mdc_equipment t3 ON t3.equipment_id = t1.equipment_id
        WHERE
@@ -224,4 +224,51 @@
            </foreach>
            AND t1.the_month = #{month}
    </select>
    <select id="comprehensiveRateAnalyze" resultType="org.jeecg.modules.mdc.dto.ComRateDto">
        SELECT
            t1.the_month AS theMonth,
            AVG ( t1.utilization_rate ) AS utilizationRate,
            AVG ( t2.utilization_rate ) AS shiftUtilizationRate,
            SUM ( t1.process_long ) AS processLong
        FROM
            mdc_equipment_statistical_info_month t1
                LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month
                AND t1.equipment_id = t2.equipment_id
                AND t2.shift_type = 1
                LEFT JOIN mdc_equipment t3 ON t3.equipment_id = t1.equipment_id
        WHERE
            t1.equipment_id IN
            <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                #{id}
            </foreach>
            AND t1.the_month BETWEEN #{start} AND #{end}
        GROUP BY
            t1.the_month
        ORDER BY
            t1.the_month
    </select>
    <select id="comprehensiveShiftRateAnalyze" resultType="org.jeecg.modules.mdc.dto.ComShiftRateDto">
        SELECT
            t1.the_month AS theMonth,
            t1.shift_sub AS shiftSub,
            t2.shift_sub_name AS shiftSubName,
            AVG ( t1.utilization_rate ) AS utilizationRate
        FROM
            mdc_equipment_statistical_shift_info_month t1
                LEFT JOIN mdc_shift_sub t2 ON t1.shift_sub = t2.id
        WHERE
            t2.shift_id = #{shiftId}
            AND t1.equipment_id IN
            <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                #{id}
            </foreach>
            AND t1.the_month BETWEEN #{start} AND #{end}
            AND t1.shift_type = 2
        GROUP BY
            t1.the_month,
            t1.shift_sub,
            t2.shift_sub_name
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
@@ -30,5 +30,21 @@
            mdc_equipment_statistical_shift_info
        WHERE
            equipment_id = #{equipmentId} AND the_date LIKE CONCAT(#{date}, '%')
    </select>
    <select id="findShiftByEquipmentAndMonth" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto">
        SELECT
            shift_sub_id shiftSubId,
            SUM(open_long) openLong,
            SUM(close_long) closeLong,
            SUM(wait_long) waitLong,
            SUM(process_long) processLong,
            SUM(error_long) errorLong,
            SUM(total_long) totalLong
        FROM
            mdc_equipment_statistical_shift_info
        WHERE
            equipment_id = #{equipmentId} AND the_date LIKE CONCAT(#{date}, '%')
        GROUP BY shift_sub_id
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java
@@ -5,6 +5,7 @@
import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo;
import java.math.BigDecimal;
import java.util.List;
/**
 * @Description: è®¾å¤‡å•日班次运行数据表
@@ -30,4 +31,6 @@
    BigDecimal findSpindleRunDuration(String equipmentId, String validDate);
    MdcEquipmentStatisticalDto findByEquipmentAndMonth(String equipmentId, String date);
    List<MdcEquipmentStatisticalDto> findShiftByEquipmentAndMonth(String equipmentId, String date);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java
@@ -109,4 +109,6 @@
    Map<String, Object> teamEquipmentEfficiencyAnalyze(String userId, EquEffVo equEffVo);
    Map<String, Object> teamEfficiencyAnalyzeByMonth(String userId, EquEffVo equEffVo);
    Map<String, Object> comprehensiveRateAnalyze(String userId, EquEffVo vo);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -1931,6 +1931,129 @@
        return result;
    }
    @Override
    public Map<String, Object> comprehensiveRateAnalyze(String userId, EquEffVo vo) {
        Map<String, Object> result = new HashMap<>();
        // 1. æ—¥æœŸå¤„理
        LocalDate now = LocalDate.now();
        Date start = DateUtils.toDate(now.plusMonths(-12).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 = monthBetween.stream()
                .map(date -> date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "月")
                .collect(Collectors.toList());
        result.put("dateList", dateList);
        // 1. å¤„理生产ID
        List<String> mdcProductionIds = StringUtils.isBlank(vo.getProductionIds())
                ? Collections.singletonList(vo.getProductionId())
                : Arrays.asList(vo.getProductionIds().split(","));
        List<String> allProductionIds = mdcProductionService.findChildren(mdcProductionIds);
        if (allProductionIds.isEmpty()) {
            return result; // æå‰è¿”回空结果
        }
        //数据权限过滤
        allProductionIds = mdcProductionService.findProIdsByUId(userId, allProductionIds);
        // 2. èŽ·å–è®¾å¤‡åˆ—è¡¨
        List<MdcEquipment> equipmentList = StringUtils.isNotBlank(vo.getEquipmentType())
                ? mdcEquipmentService.findByProIdsAndType(allProductionIds, Arrays.asList(vo.getEquipmentType().split(",")))
                : mdcEquipmentService.findByProductionIds(allProductionIds);
        if (equipmentList.isEmpty()) {
            return result;
        }
        // 3. æ•°æ®å¤„理
        List<String> equipmentIdList = equipmentList.stream()
                .map(MdcEquipment::getEquipmentId)
                .collect(Collectors.toList());
        String startStr = monthBetween.get(0).replaceAll("-", "");
        String endStr = monthBetween.get(monthBetween.size() - 1).replaceAll("-", "");
        List<ComRateDto> comRateDtoList = mdcEfficiencyReportMapper.comprehensiveRateAnalyze(equipmentIdList, startStr, endStr);
        if (comRateDtoList.isEmpty()) {
            return result; // æå‰è¿”回空结果
        }
        List<ComRateDto> dataList = new ArrayList<>();
        Map<String, ComRateDto> map = comRateDtoList.stream().collect(Collectors.toMap(ComRateDto::getTheMonth, comRateDto -> comRateDto));
        monthBetween.forEach(date -> {
            String d = date.replaceAll("-", "");
            String month = date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "月";
            if (map.containsKey(d)) {
                ComRateDto comRateDto = map.get(d);
                comRateDto.setTheMonth(month);
                comRateDto.setUtilizationRate(comRateDto.getUtilizationRate().setScale(2, RoundingMode.HALF_UP));
                comRateDto.setShiftUtilizationRate(comRateDto.getShiftUtilizationRate() != null ? comRateDto.getShiftUtilizationRate().setScale(2, RoundingMode.HALF_UP) : BigDecimal.ZERO);
                comRateDto.setAmendUtilizationRate(comRateDto.getAmendUtilizationRate().setScale(2, RoundingMode.HALF_UP));
                comRateDto.setProcessLong(comRateDto.getProcessLong().divide(new BigDecimal("3600"), 2, RoundingMode.HALF_UP));
                dataList.add(comRateDto);
            } else {
                ComRateDto comRateDto = new ComRateDto();
                comRateDto.setTheMonth(month);
                dataList.add(comRateDto);
            }
        });
        result.put("dataList", dataList);
        if (StringUtils.isNotBlank(vo.getShiftId())) {
            List<MdcShiftSub> shiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper<MdcShiftSub>().eq(MdcShiftSub::getShiftId, vo.getShiftId()));
            if (shiftSubList == null || shiftSubList.isEmpty()) {
                return result;
            }
            List<String> shiftSubNameList = shiftSubList.stream().map(MdcShiftSub::getShiftSubName).collect(Collectors.toList());
            result.put("shiftSubList", shiftSubNameList);
            List<ComShiftRateDto> comShiftRateDtoList = mdcEfficiencyReportMapper.comprehensiveShiftRateAnalyze(equipmentIdList, startStr, endStr, vo.getShiftId());
            Map<String, List<ComShiftRateDto>> groupMap;
            if (comShiftRateDtoList != null && !comShiftRateDtoList.isEmpty()) {
                groupMap = comShiftRateDtoList.stream().collect(Collectors.groupingBy(ComShiftRateDto::getShiftSub));
            } else {
                groupMap = new HashMap<>();
            }
            List<ComShiftDto> shiftDataList = new ArrayList<>();
            shiftSubList.forEach(mdcShiftSub -> {
                ComShiftDto comShiftDto = new ComShiftDto();
                comShiftDto.setShiftSubName(mdcShiftSub.getShiftSubName());
                if (groupMap.containsKey(mdcShiftSub.getId())) {
                    List<ComShiftRateDto> csrd = groupMap.get(mdcShiftSub.getId());
                    Map<String, ComShiftRateDto> collect = csrd.stream().collect(Collectors.toMap(ComShiftRateDto::getTheMonth, comShiftRateDto -> comShiftRateDto));
                    List<ComShiftChildDto> comShiftChildDtoList = new ArrayList<>();
                    monthBetween.forEach(date -> {
                        String d = date.replaceAll("-", "");
                        String month = date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "月";
                        if (collect.containsKey(d)) {
                            ComShiftRateDto comShiftRateDto = collect.get(d);
                            ComShiftChildDto comShiftChildDto = new ComShiftChildDto();
                            comShiftChildDto.setMonth(month);
                            comShiftChildDto.setUtilizationRate(comShiftRateDto.getUtilizationRate().setScale(2, RoundingMode.HALF_UP));
                            comShiftChildDtoList.add(comShiftChildDto);
                        } else {
                            ComShiftChildDto comShiftChildDto = new ComShiftChildDto();
                            comShiftChildDto.setMonth(month);
                            comShiftChildDtoList.add(comShiftChildDto);
                        }
                    });
                    comShiftDto.setDataList(comShiftChildDtoList);
                } else {
                    List<ComShiftChildDto> comShiftChildDtoList = new ArrayList<>();
                    monthBetween.forEach(date -> {
                        String month = date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "月";
                        ComShiftChildDto comShiftChildDto = new ComShiftChildDto();
                        comShiftChildDto.setMonth(month);
                        comShiftChildDtoList.add(comShiftChildDto);
                    });
                    comShiftDto.setDataList(comShiftChildDtoList);
                }
                shiftDataList.add(comShiftDto);
            });
            result.put("shiftDataList", shiftDataList);
        }
        return result;
    }
    // æå–的平均值计算方法
    private TeamEquEffDto calculateAverages(List<TeamEquEffDto> items) {
        BigDecimal size = new BigDecimal(items.size());
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
@@ -99,6 +99,11 @@
        return this.baseMapper.findByEquipmentAndMonth(equipmentId, date);
    }
    @Override
    public List<MdcEquipmentStatisticalDto> findShiftByEquipmentAndMonth(String equipmentId, String date) {
        return this.baseMapper.findShiftByEquipmentAndMonth(equipmentId, date);
    }
    @Transactional(readOnly = true)
    public List<MdcEquipmentStatisticalShiftInfo> equipmentShiftStatisticalProcess(Equipment equipment, String dateTime) {
        Date initDate = null;
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/EquEffVo.java
@@ -23,6 +23,14 @@
     */
    private String teamCodes;
    /**
     * è®¾å¤‡ç±»åž‹
     */
    private String equipmentType;
    /**
     * ç­åˆ¶id
     */
    private String shiftId;
    /**
     * æœˆä»½
     */
    private String month;