From 5d5675fd6b6521c3d3e5887017a090c60897f6cd Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期四, 15 五月 2025 14:18:40 +0800
Subject: [PATCH] bug修复

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java |  273 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 208 insertions(+), 65 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java
index a3bb917..b3513a9 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java
@@ -2,24 +2,34 @@
 
 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.api.CommonAPI;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.util.TranslateDictTextUtils;
+import org.jeecg.modules.eam.constant.EquipmentMaintenanceStatus;
+import org.jeecg.modules.eam.constant.EquipmentOperationTagEnum;
+import org.jeecg.modules.eam.constant.EquipmentRepairStatus;
+import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum;
 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.dto.EamEquipmentExtendDto;
+import org.jeecg.modules.mdc.entity.*;
+import org.jeecg.modules.mdc.mapper.MdcBoardMapper;
 import org.jeecg.modules.mdc.service.*;
 import org.jeecg.modules.mdc.util.DateUtils;
+import org.jeecg.modules.mdc.vo.MdcBoardEquRealTImeVo;
 import org.jeecg.modules.mdc.vo.MdcBoardRateVo;
 import org.jeecg.modules.mdc.vo.MdcEquipmentStatusVo;
 import org.jeecg.modules.mdcJc.service.IMdcJcRcJobreportService;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.service.IMdcProductionService;
+import org.joda.time.LocalDateTime;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -49,6 +59,21 @@
     @Resource
     private IMdcJcRcJobreportService mdcJcRcJobreportService;
 
+    @Resource
+    private CommonAPI commonAPI;
+
+    @Resource
+    private IEquipmentLogService equipmentLogService;
+
+    @Resource
+    private IEquipmentWorkLineService equipmentWorkLineService;
+
+    @Resource
+    private MdcBoardMapper mdcBoardMapper;
+
+    @Resource
+    private IMdcDeviceCalendarService mdcDeviceCalendarService;
+
     /**
      * 璁惧鐘舵��
      */
@@ -58,10 +83,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 +153,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);
-            // 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")));
-            }
-            // OEE
-            BigDecimal oee = mdcOeeInfoService.findByEquIdsAndDate(equipmentIdList, date);
-            if (oee != null) {
-                mdcBoardRateVo.setOee(oee.setScale(2, RoundingMode.HALF_UP));
-            }
-            dataList.add(mdcBoardRateVo);
-        }
+        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 寮�鏈虹巼 寮�鍔ㄧ巼
+        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
+        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));
+                    }
+                    statisticsMap.put(mdcOeeInfo.getTheDate(), mdcBoardRateVo);
+                }
+            });
+        }
+        List<MdcBoardRateVo> dataList = new ArrayList<>(statisticsMap.values());
         result.put("dataList", dataList);
         return result;
     }
@@ -180,25 +222,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 +303,106 @@
         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;
-//    }
+    /**
+     * 璁惧瀹炴椂淇℃伅
+     */
+    @Override
+    public MdcBoardEquRealTImeVo equipmentRealTimeDetail(String equipmentId) {
+        MdcBoardEquRealTImeVo mdcBoardEquRealTImeVo = mdcEquipmentService.getByEquipmentId(equipmentId);
+        if (mdcBoardEquRealTImeVo == null) {
+            return new MdcBoardEquRealTImeVo();
+        }
+        //璁惧绠$悊鍛樼炕璇�
+        String realName = commonAPI.translateDictFromTable("sys_user", "realname", "username", mdcBoardEquRealTImeVo.getEquipmentManager());
+        mdcBoardEquRealTImeVo.setEquipmentManager(realName);
+        mdcBoardEquRealTImeVo.setAlarm("鏃�");
+        if (mdcBoardEquRealTImeVo.getOperation() != null) {
+            switch (mdcBoardEquRealTImeVo.getOperation()) {
+                case 1:
+                case 2:
+                    mdcBoardEquRealTImeVo.setOporationDict("寰呮満");
+                    break;
+                case 3:
+                    mdcBoardEquRealTImeVo.setOporationDict("杩愯");
+                    break;
+                case 22:
+                    mdcBoardEquRealTImeVo.setOporationDict("鎶ヨ");
+                    // 鏌ヨ鎶ヨ鍙�
+                    EquipmentLog equipmentLog = equipmentLogService.findAlarmByEquId(equipmentId);
+                    if (equipmentLog != null && StringUtils.isNotBlank(equipmentLog.getAlarm())) {
+                        mdcBoardEquRealTImeVo.setAlarm(equipmentLog.getAlarm());
+                    }
+                    break;
+                default:
+                    mdcBoardEquRealTImeVo.setOporationDict("鍏虫満");
+                    break;
+            }
+        } else {
+            mdcBoardEquRealTImeVo.setOporationDict("鍏虫満");
+            mdcBoardEquRealTImeVo.setOperation(0);
+        }
+        //璁惧杩愯鏁版嵁
+        Map<String, Object> mapData = equipmentWorkLineService.getDataList(mdcBoardEquRealTImeVo.getSaveTableName());
+        if (mapData != null) {
+            if (mapData.containsKey("Sequencenumber")) {
+                Object object = mapData.get("Sequencenumber");
+                mdcBoardEquRealTImeVo.setSequenceNumber(object == null ? "" : object.toString());
+            }
+            if (mapData.containsKey("spindlespeed")) {
+                Object object = mapData.get("spindlespeed");
+                mdcBoardEquRealTImeVo.setSpindleSpeed(object == null ? "" : object.toString());
+            }
+            if (mapData.containsKey("spindleload")) {
+                Object object = mapData.get("spindleload");
+                mdcBoardEquRealTImeVo.setSpindleLoad(object == null ? "" : object.toString());
+            }
+            if (mapData.containsKey("spindlebeilv")) {
+                Object object = mapData.get("spindlebeilv");
+                mdcBoardEquRealTImeVo.setSpindlebeilv(object == null ? "" : object.toString());
+            }
+            if (mapData.containsKey("feedbeilv")) {
+                Object object = mapData.get("feedbeilv");
+                mdcBoardEquRealTImeVo.setFeedbeilv(object == null ? "" : object.toString());
+            }
+        }
+        // 缁翠繚鐘舵��
+        EamEquipmentExtendDto eamEquipmentExtendDto = mdcBoardMapper.findEquExtend(equipmentId);
+        mdcBoardEquRealTImeVo.setMaintenanceStatus("姝e父");
+        mdcBoardEquRealTImeVo.setReportRepairStatus("鏃�");
+        if (eamEquipmentExtendDto != null) {
+            if (!EquipmentRepairStatus.NORMAL.name().equals(eamEquipmentExtendDto.getRepairStatus())) {
+                mdcBoardEquRealTImeVo.setMaintenanceStatus("缁翠慨");
+            } else {
+                if (EquipmentMaintenanceStatus.UNDER_INSPECTION.name().equals(eamEquipmentExtendDto.getMaintenanceStatus()) || EquipmentMaintenanceStatus.INSPECTION_CONFIRM.name().equals(eamEquipmentExtendDto.getMaintenanceStatus())) {
+                    mdcBoardEquRealTImeVo.setMaintenanceStatus("鐐规");
+                } else if (EquipmentMaintenanceStatus.UNDER_MAINTENANCE.name().equals(eamEquipmentExtendDto.getMaintenanceStatus()) || EquipmentMaintenanceStatus.WAIT_CONFIRM.name().equals(eamEquipmentExtendDto.getMaintenanceStatus())) {
+                    mdcBoardEquRealTImeVo.setMaintenanceStatus("鍛ㄦ姤");
+                }
+            }
+        }
+        // 鎶ヤ慨鎯呭喌
+        String repairStatus =  mdcBoardMapper.findReportRepairStatus(equipmentId);
+        if (repairStatus != null) {
+            String reportRepair = commonAPI.translateDict("report_repair_status", repairStatus);
+            mdcBoardEquRealTImeVo.setReportRepairStatus(reportRepair);
+        } else {
+            mdcBoardEquRealTImeVo.setReportRepairStatus("鏃�");
+        }
+        // 鐝
+        String shift = mdcDeviceCalendarService.findShiftByEquId(equipmentId);
+        if (StringUtils.isNotBlank(shift)) {
+            mdcBoardEquRealTImeVo.setShift(shift);
+        }
+        // 鐐规  淇濆吇
+        Date nextInspection = mdcBoardMapper.findInsOrMain(equipmentId, MaintenanceCategoryEnum.POINT_INSPECTION.name());
+        if (nextInspection != null) {
+            mdcBoardEquRealTImeVo.setNextInspection(nextInspection);
+        }
+        Date nextMaintenance = mdcBoardMapper.findInsOrMain(equipmentId, MaintenanceCategoryEnum.WEEK_MAINTENANCE.name());
+        if (nextMaintenance != null) {
+            mdcBoardEquRealTImeVo.setNextMaintenance(nextMaintenance);
+        }
+        return mdcBoardEquRealTImeVo;
+    }
+
 }

--
Gitblit v1.9.3