lius
2023-07-19 632a346f1fd07ab659bfc68e70bd6e254b0e8c51
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.modules.mdc.dto.*;
import org.jeecg.modules.mdc.entity.MdcEquipment;
import org.jeecg.modules.mdc.entity.MdcUtilizationRate;
@@ -11,9 +12,7 @@
import org.jeecg.modules.mdc.service.IMdcUtilizationRateService;
import org.jeecg.modules.mdc.service.MdcEfficiencyReportService;
import org.jeecg.modules.mdc.util.DateUtils;
import org.jeecg.modules.mdc.vo.MdcEfficiencyReportQueryVo;
import org.jeecg.modules.mdc.vo.MdcEfficiencyReportShiftQueryVo;
import org.jeecg.modules.mdc.vo.MdcEfficiencyVo;
import org.jeecg.modules.mdc.vo.*;
import org.jeecg.modules.system.entity.MdcProduction;
import org.jeecg.modules.system.entity.SysDepart;
import org.jeecg.modules.system.service.IMdcProductionService;
@@ -414,8 +413,121 @@
     * @return
     */
    @Override
    public MdcEfficiencyVo efficiencyShiftList(String userId, MdcEfficiencyReportShiftQueryVo vo) {
        return null;
    public MdcEfficiencyShiftVo efficiencyShiftList(String userId, MdcEfficiencyReportShiftQueryVo vo) {
        MdcEfficiencyShiftVo result = new MdcEfficiencyShiftVo();
        List<MdcEfficiencyShiftListDto> listDtos = new ArrayList<>();
        List<String> equipmentIds = new ArrayList<>();
        if (StringUtils.isNotEmpty(vo.getParentId()) && StringUtils.isEmpty(vo.getEquipmentId())) {
            if ("2".equals(vo.getTypeTree())) {
                // 部门层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, vo.getParentId());
            } else {
                // 产线层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, vo.getParentId());
            }
        } else if (StringUtils.isNotEmpty(vo.getEquipmentId())) {
            // 单台设备信息
            vo.setEquipmentIdList(Collections.singletonList(vo.getEquipmentId()));
        } else {
            // 查询用户拥有的所有设备信息
            if ("2".equals(vo.getTypeTree())) {
                // 部门层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null);
            } else {
                // 产线层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null);
            }
        }
        if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) {
            vo.setEquipmentIdList(equipmentIds);
        }
        List<String> dates = DateUtils.getDatesStringList2(DateUtils.getShortDate2(vo.getStartTime()), DateUtils.getShortDate2(vo.getEndTime()));
        result.setDates(dates);
        if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) {
            result.setMdcEfficiencyList(listDtos);
        } else {
            // 班次利用率等级
            List<MdcUtilizationRate> mdcUtilizationRateList = mdcUtilizationRateService.listByType("kdl");
        }
        return result;
    }
    /**
     * 统计分析列表
     *
     * @param userId
     * @param vo
     * @return
     */
    @Override
    public StatisticalAnalysisVo dayStatisticalRate(String userId, MdcEfficiencyReportQueryVo vo) {
        StatisticalAnalysisVo result = new StatisticalAnalysisVo();
        List<String> equipmentIds = new ArrayList<>();
        if (StringUtils.isNotEmpty(vo.getParentId()) && StringUtils.isEmpty(vo.getEquipmentId())) {
            if ("2".equals(vo.getTypeTree())) {
                // 部门层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, vo.getParentId());
            } else {
                // 产线层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, vo.getParentId());
            }
        } else if (StringUtils.isNotEmpty(vo.getEquipmentId())) {
            // 单台设备信息
            vo.setEquipmentIdList(Collections.singletonList(vo.getEquipmentId()));
        } else {
            // 查询用户拥有的所有设备信息
            if ("2".equals(vo.getTypeTree())) {
                // 部门层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null);
            } else {
                // 产线层级
                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null);
            }
        }
        if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) {
            vo.setEquipmentIdList(equipmentIds);
        }
        if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) {
            return result;
        }
        if (!StringUtils.isNotEmpty(vo.getDateTime())) {
            throw new JeecgBootException("请输入查询条件时间");
        }
        vo.setStartTime(vo.getDateTime());
        vo.setEndTime(vo.getDateTime());
        List<MdcEfficiencyDto> efficiencyList = mdcEfficiencyReportMapper.efficiencyList(vo);
        if (efficiencyList == null || efficiencyList.isEmpty()) {
            return result;
        }
        result = this.efficiencyStatisticalRate(efficiencyList);
        if (result.getOpenRate().compareTo(new BigDecimal("0")) > 0) {
            result.setOpenRate(result.getOpenRate().multiply(new BigDecimal("100")).divide(new BigDecimal(equipmentIds.size()), 2, BigDecimal.ROUND_HALF_UP));
        }
        if (result.getUtilizationRate().compareTo(new BigDecimal("0")) > 0) {
            result.setUtilizationRate(result.getUtilizationRate().multiply(new BigDecimal(100)).divide(new BigDecimal(equipmentIds.size()), 2, BigDecimal.ROUND_HALF_UP));
        }
        if (result.getOpenLong().compareTo(new BigDecimal(0)) > 0 && result.getProcessLong().compareTo(new BigDecimal(0)) > 0) {
            result.setUsedOpenRate(result.getProcessLong().divide(result.getOpenLong(), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)));
        }
        return result;
    }
    private StatisticalAnalysisVo efficiencyStatisticalRate(List<MdcEfficiencyDto> efficiencyList) {
        StatisticalAnalysisVo vo = new StatisticalAnalysisVo();
        for (MdcEfficiencyDto mdcEfficiencyDto : efficiencyList) {
            vo.setUtilizationRate(vo.getUtilizationRate().add(mdcEfficiencyDto.getUtilizationRate()));
            vo.setOpenRate(vo.getOpenRate().add(mdcEfficiencyDto.getOpenRate()));
            vo.setOpenLong(vo.getOpenLong().add(mdcEfficiencyDto.getOpenLong()));
            vo.setProcessLong(vo.getProcessLong().add(mdcEfficiencyDto.getProcessLong()));
            vo.setWaitLong(vo.getWaitLong().add(mdcEfficiencyDto.getWaitLong()));
            vo.setCloseLong(vo.getCloseLong().add(mdcEfficiencyDto.getCloseLong()));
        }
        return vo;
    }
    private MdcEfficiencyResultDto efficiencyRate(List<MdcEfficiencyDto> efficiencyList, String date, String equipmentId, List<MdcUtilizationRate> mdcUtilizationRateList) {