Lius
2025-05-15 388d87d5534a056268777cd37d877075bc79929c
lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java
@@ -3,8 +3,10 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.modules.mdc.entity.MdcEquipmentDaySummary;
import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor;
import org.jeecg.modules.mdc.service.IEquipmentAlarmService;
import org.jeecg.modules.mdc.service.IMdcEquipmentDaySummaryService;
import org.jeecg.modules.mdc.service.IMdcEquipmentService;
import org.jeecg.modules.mdc.service.IMdcEquipmentStatisticalInfoService;
import org.jeecg.modules.mdc.util.DateUtils;
@@ -44,6 +46,9 @@
    @Resource
    private IEquipmentAlarmService equipmentAlarmService;
    @Resource
    private IMdcEquipmentDaySummaryService mdcEquipmentDaySummaryService;
    /**
     * 设备状态情况
     *
@@ -53,6 +58,7 @@
    @Override
    public EquipmentStatusOverview equipmentStatusOverview(String productionId) {
        EquipmentStatusOverview equipmentStatusOverview = new EquipmentStatusOverview();
        // 设备状态
        List<MdcEquipmentMonitor> equipmentMonitorList = mdcEquipmentService.getEquipmentMonitorList(productionId);
        if (equipmentMonitorList != null && !equipmentMonitorList.isEmpty()) {
            equipmentStatusOverview.setEquipmentCount(equipmentMonitorList.size());
@@ -65,7 +71,7 @@
                                equipmentStatusOverview.setWaitCount(equipmentStatusOverview.getWaitCount() + 1);
                                break;
                            case 3:
                                equipmentStatusOverview.setRunCount(equipmentStatusOverview.getRunCount());
                                equipmentStatusOverview.setRunCount(equipmentStatusOverview.getRunCount() + 1);
                                break;
                            case 22:
                                equipmentStatusOverview.setErrorCount(equipmentStatusOverview.getErrorCount() + 1);
@@ -87,6 +93,12 @@
                    }
                }
            }
        }
        // mes产量
        MdcEquipmentDaySummary mdcEquipmentDaySummary = mdcEquipmentDaySummaryService.statisticsQty(productionId);
        if (mdcEquipmentDaySummary != null) {
            equipmentStatusOverview.setQualifiedQty(mdcEquipmentDaySummary.getQualifiedQty());
            equipmentStatusOverview.setPlanQty(mdcEquipmentDaySummary.getPlanQty());
        }
        return equipmentStatusOverview;
    }
@@ -141,9 +153,7 @@
        Map<String, Object> result = new HashMap<>();
        // 获取子生产列表
        List<MdcProduction> mdcProductionList = mdcProductionService.list(
                new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, productionId)
        );
        List<MdcProduction> mdcProductionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, productionId));
        if (mdcProductionList == null || mdcProductionList.isEmpty()) {
            return result;
@@ -152,8 +162,7 @@
        List<String> dateList = DateUtils.getNearWeek();
        result.put("dateList", dateList);
        // 计算每个工段的利用率
        List<UtilizationRateDto> utilizationMonthDtoList = new ArrayList<>();
        for (MdcProduction mdcProduction : mdcProductionList) {
        List<UtilizationRateDto> utilizationMonthDtoList = mdcProductionList.stream().map(mdcProduction -> {
            UtilizationRateDto utilizationRateDto = new UtilizationRateDto();
            utilizationRateDto.setProductionId(mdcProduction.getId());
            utilizationRateDto.setProductionName(mdcProduction.getProductionName());
@@ -161,14 +170,13 @@
                    .map(date -> {
                        UtilizationRate utilizationMonth = new UtilizationRate();
                        utilizationMonth.setDate(date);
                        BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeek(productionId, date.replaceAll("-", ""));
                        BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeek(mdcProduction.getId(), date.replaceAll("-", ""));
                        utilizationMonth.setUtilizationRate(utilizationRate);
                        return utilizationMonth;
                    })
                    .collect(Collectors.toList());
                    }).collect(Collectors.toList());
            utilizationRateDto.setUtilizationRateList(utilizationRates);
            utilizationMonthDtoList.add(utilizationRateDto);
        }
            return utilizationRateDto;
        }).collect(Collectors.toList());
        //计算总厂的利用率
        UtilizationRateDto utilizationRateDto = new UtilizationRateDto();
        utilizationRateDto.setProductionName("总厂");
@@ -208,14 +216,13 @@
        result.put("productionList", productionList);
        String date = LocalDate.now().minusDays(1).toString().replaceAll("-", "");
        List<UtilizationDayDto> utilizationDayDtos = new ArrayList<>();
        for (MdcProduction mdcProduction : mdcProductionList) {
        List<UtilizationDayDto> utilizationDayDtos = mdcProductionList.stream().map(mdcProduction -> {
            UtilizationDayDto utilizationDayDto = new UtilizationDayDto();
            utilizationDayDto.setProductionName(mdcProduction.getProductionName());
            BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeekTotal(mdcProduction.getId(), date);
            BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeek(mdcProduction.getId(), date);
            utilizationDayDto.setUtilizationRate(utilizationRate);
            utilizationDayDtos.add(utilizationDayDto);
        }
            return utilizationDayDto;
        }).collect(Collectors.toList());
        result.put("dataList", utilizationDayDtos);
        return result;
    }
@@ -232,6 +239,16 @@
    }
    /**
     * 工段列表
     * @param productionId
     * @return
     */
    @Override
    public List<MdcProduction> productionList(String productionId) {
        return mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, productionId).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0));
    }
    /**
     * 创建子生产的月度利用率 DTO
     */
    private UtilizationRateDto createUtilizationMonthDto(MdcProduction mdcProduction, List<String[]> dateLists) {