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 |  129 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 129 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 d91513b..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
@@ -12,11 +12,14 @@
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.constant.DataBaseConstant;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
 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;
@@ -36,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;
 
@@ -65,6 +70,8 @@
     private ISysBusinessCodeRuleService businessCodeRuleService;
     @Autowired
     private IEamReportThreeNoSpareService eamReportThreeNoSpareService;
+    @Autowired
+    private IEamBaseHFCodeService hfCodeService;
     /**
      * 鍒嗛〉鍒楄〃
      *
@@ -201,6 +208,11 @@
             eamReportProductHazards.setReportId(eamReportRepair.getId());
             eamReportProductHazards.setDelFlag(Integer.valueOf(CommonConstant.DEFAULT_0));
             eamReportProductHazards.setConfirmStatus(EamReportProductHazardsEnum.PENDING_SUBMIT.name());
+            EamBaseHFCode eamBaseHFCode = hfCodeService.selectByCategory(HfTemplateCategoryEnum.REPORT_PRODUCT_HAZARDS.name());
+            if (eamBaseHFCode == null) {
+                throw new JeecgBootException("鏈厤缃骇鍝佸畨鍏ㄩ殣鎮g‘璁ょ殑HF缂栫爜锛屾坊鍔犲け璐ワ紒");
+            }
+            eamReportProductHazards.setHfCode(eamBaseHFCode.getHfCode());
             iEamReportProductHazardsService.save(eamReportProductHazards);
         }
         if (StrUtil.isNotEmpty(eamReportRepair.getIsAccidentsRegister())&&("1").equals(eamReportRepair.getIsAccidentsRegister())) {
@@ -211,6 +223,11 @@
             eamReportAccidentsRegister.setReportId(eamReportRepair.getId());
             eamReportAccidentsRegister.setDelFlag(Integer.valueOf(CommonConstant.DEFAULT_0));
             eamReportAccidentsRegister.setRegisterStatus(EamReportAccidentsRegisterEnum.PENDING_SUBMIT.name());
+            EamBaseHFCode eamBaseHFCode = hfCodeService.selectByCategory(HfTemplateCategoryEnum.REPORT_ACCIDENTS_REGISTER.name());
+            if (eamBaseHFCode == null) {
+                throw new JeecgBootException("鏈厤缃澶囦簨鏁呯櫥璁拌〃鐨凥F缂栫爜锛屾坊鍔犲け璐ワ紒");
+            }
+            eamReportAccidentsRegister.setHfCode(eamBaseHFCode.getHfCode());
             iEamReportAccidentsRegisterService.save(eamReportAccidentsRegister);
             //鐢熸垚涓変笉鍘熷垯
             EamReportThreeNoSpare eamReportThreeNoSpare = new EamReportThreeNoSpare();
@@ -220,6 +237,11 @@
             eamReportThreeNoSpare.setPreventionMeasures(eamReportAccidentsRegister.getTakeSteps());
             eamReportThreeNoSpare.setSubmitStatus(EamReportThreeNoSpareEnum.PENDING_SUBMIT.name());
             eamReportThreeNoSpare.setDelFlag(Integer.valueOf(CommonConstant.DEFAULT_0));
+            EamBaseHFCode threeHfCode = hfCodeService.selectByCategory(HfTemplateCategoryEnum.REPORT_THREE_NO_SPARE.name());
+            if (threeHfCode == null) {
+                throw new JeecgBootException("鏈厤缃笁涓嶆斁杩囧師鍒欒〃鐨凥F缂栫爜锛屾坊鍔犲け璐ワ紒");
+            }
+            eamReportThreeNoSpare.setHfCode(threeHfCode.getHfCode());
             eamReportThreeNoSpareService.save(eamReportThreeNoSpare);
         }
         //鐢熸垚缁翠慨宸ュ崟
@@ -232,6 +254,8 @@
         eamRepairOrder.setReportId(eamReportRepair.getId());
         eamRepairOrder.setReportPerson(eamReportRepair.getCreateBy());
         eamRepairOrder.setFaultPhenomenon(eamReportRepair.getFaultDescription());
+        eamRepairOrder.setFaultStartTime(eamReportRepair.getFaultStartTime());
+        eamRepairOrder.setClaimStatus("0");
         eamRepairOrder.setRepairStatus(EamRepairOrderRepairStatusEnum.PENDING_REPAIR.name());
         iEamRepairOrderService.save(eamRepairOrder);
         //鏇存柊璁惧缁翠慨鐘舵��
@@ -282,6 +306,12 @@
         }
         updateWrapper.eq(EamReportRepair::getId,eamReportRepairDto.getId());
         this.update(eamReportRepair,updateWrapper);
+        //淇敼缁翠慨宸ュ崟
+        EamRepairOrder eamRepairOrder=iEamRepairOrderService.
+                getOne(new QueryWrapper<EamRepairOrder>().eq("report_id",eamReportRepairDto.getId()));
+        eamRepairOrder.setFaultStartTime(eamReportRepairDto.getFaultStartTime());
+        eamRepairOrder.setFaultPhenomenon(eamReportRepairDto.getFaultDescription());
+        iEamRepairOrderService.updateById(eamRepairOrder);
         return true;
     }
 
@@ -328,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