From 582bb2627712f66157b5608c8f5798775fc38266 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期五, 22 八月 2025 15:20:31 +0800
Subject: [PATCH] 设备管理首页

---
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java |  103 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 103 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java
index 331183b..a3e0161 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java
@@ -17,7 +17,9 @@
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog;
 import org.jeecg.modules.eam.constant.*;
+import org.jeecg.modules.eam.dto.EamRepairOrderDto;
 import org.jeecg.modules.eam.dto.EamReportRepairDto;
+import org.jeecg.modules.eam.dto.EchartsDto;
 import org.jeecg.modules.eam.entity.*;
 import org.jeecg.modules.eam.mapper.EamReportRepairMapper;
 import org.jeecg.modules.eam.request.EamReportRepairQuery;
@@ -37,6 +39,8 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -354,4 +358,103 @@
         eamEquipmentExtendService.updateEquipmentRepairStatus(entity.getEquipmentId(), EquipmentRepairStatus.WAIT_REPAIR.name());
         return entity;
     }
+
+    public List<EchartsDto> reportRepairList() {
+        List<EchartsDto> echartsDtoList = new ArrayList<>();
+
+        // 鐢ㄦ埛鏁版嵁鏉冮檺妫�鏌�
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (sysUser == null) {
+            return echartsDtoList; // 杩斿洖绌哄垪琛ㄨ�岄潪null
+        }
+
+        QueryWrapper<EamReportRepairDto> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("wmo.del_flag", CommonConstant.DEL_FLAG_0);
+
+        // 璁惧杩囨护閫昏緫
+        if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
+            List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(","));
+            queryWrapper.in("e.equipment_code", equipArr);
+        } else {
+            List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService
+                    .list(new LambdaQueryWrapper<BaseFactoryUser>()
+                            .eq(BaseFactoryUser::getUserId, sysUser.getId()));
+
+            if (CollectionUtils.isEmpty(baseFactoryUserList)) {
+                return echartsDtoList; // 杩斿洖绌哄垪琛ㄨ�岄潪null
+            }
+
+            Set<String> factoryIds = baseFactoryUserList.stream()
+                    .map(BaseFactoryUser::getFactoryId)
+                    .collect(Collectors.toSet());
+
+            Set<String> factoryCodes = baseFactoryService.listByIds(factoryIds)
+                    .stream()
+                    .map(BaseFactory::getOrgCode)
+                    .collect(Collectors.toSet());
+
+            queryWrapper.in("e.factory_org_code", factoryCodes);
+        }
+
+        // 鑾峰彇鍩虹鏁版嵁
+        List<EamReportRepairDto> baseList = this.baseMapper.queryList(queryWrapper);
+        int totalCount = baseList.size();
+
+        // 鑾峰彇鍋滄満鏁伴噺
+        int shutdownCount = this.baseMapper.queryList(
+                queryWrapper.clone().eq("breakdown_flag", "1")
+        ).size();
+
+        // 璁$畻杩愯鏁伴噺
+        int runningCount = totalCount - shutdownCount;
+
+        // 澶勭悊闆跺�兼儏鍐�
+        if (totalCount == 0) {
+            // 娣诲姞鎵�鏈夐浂鍊兼暟鎹」
+            addZeroValueData(echartsDtoList, "鎶ヤ慨鎬绘暟", "bx");
+            addZeroValueData(echartsDtoList, "鍋滄満鎬绘暟", "stop");
+            addZeroValueData(echartsDtoList, "杩愯鎬绘暟", "run");
+            return echartsDtoList;
+        }
+
+        // 璁$畻鐧惧垎姣�
+        BigDecimal total = new BigDecimal(totalCount);
+        String bxPercentage = calculatePercentage(totalCount, BigDecimal.valueOf(totalCount));
+        String stopPercentage = calculatePercentage(shutdownCount, BigDecimal.valueOf(totalCount));
+        String runPercentage = calculatePercentage(runningCount, BigDecimal.valueOf(totalCount));
+
+        // 鏋勫缓杩斿洖鏁版嵁
+        echartsDtoList.add(createEchartsDto("鎶ヤ慨鎬绘暟", "bx", totalCount, bxPercentage));
+        echartsDtoList.add(createEchartsDto("鍋滄満鎬绘暟", "stop", shutdownCount, stopPercentage));
+        echartsDtoList.add(createEchartsDto("杩愯鎬绘暟", "run", runningCount, runPercentage));
+
+        return echartsDtoList;
+    }
+
+    // 杈呭姪鏂规硶锛氭坊鍔犻浂鍊兼暟鎹�
+    private void addZeroValueData(List<EchartsDto> list, String name, String code) {
+        EchartsDto dto = new EchartsDto();
+        dto.setName(name);
+        dto.setCode(code);
+        dto.setValue("0");
+        dto.setPercentage("0.00%");
+        list.add(dto);
+    }
+
+    // 杈呭姪鏂规硶锛氳绠楃櫨鍒嗘瘮
+    private String calculatePercentage(int value, BigDecimal total) {
+        return new BigDecimal(value)
+                .multiply(new BigDecimal(100))
+                .divide(total, 2, RoundingMode.HALF_UP) + "%";
+    }
+
+    // 杈呭姪鏂规硶锛氬垱寤篍chartsDto瀵硅薄
+    private EchartsDto createEchartsDto(String name, String code, int value, String percentage) {
+        EchartsDto dto = new EchartsDto();
+        dto.setName(name);
+        dto.setCode(code);
+        dto.setValue(String.valueOf(value));
+        dto.setPercentage(percentage);
+        return dto;
+    }
 }

--
Gitblit v1.9.3