From bcf8c46e009d5d825a7bf07b9eac46fb7432418b Mon Sep 17 00:00:00 2001
From: liulin <lin.liu@88.com>
Date: 星期四, 17 七月 2025 08:42:13 +0800
Subject: [PATCH] 添加首页大屏数据统计

---
 src/main/java/com/fengdu/gas/service/WaterFacilityService.java |   54 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 53 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/fengdu/gas/service/WaterFacilityService.java b/src/main/java/com/fengdu/gas/service/WaterFacilityService.java
index 8b2b2fe..b01fe67 100644
--- a/src/main/java/com/fengdu/gas/service/WaterFacilityService.java
+++ b/src/main/java/com/fengdu/gas/service/WaterFacilityService.java
@@ -22,21 +22,27 @@
  */
 package com.fengdu.gas.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fengdu.gas.common.*;
 import com.fengdu.gas.common.enums.*;
 import com.fengdu.gas.common.model.Tuple;
 import com.fengdu.gas.common.util.*;
 import com.fengdu.gas.entity.response.facility.FacilityCount;
 import com.fengdu.gas.entity.response.facility.FacilityData;
+import com.fengdu.gas.entity.response.facility.FacilityPointCount;
+import com.fengdu.gas.entity.response.facility.FacilityStateData;
 import com.fengdu.gas.repository.impl.WaterFacilityParameterMapperImpl;
+import com.fengdu.gas.repository.impl.WaterFacilityTypeMapperImpl;
 import com.fengdu.gas.repository.impl.WaterMonitoryPointMapperImpl;
 import com.fengdu.gas.repository.po.WaterFacilityParameterPO;
+import com.fengdu.gas.repository.po.WaterFacilityTypePO;
 import com.fengdu.gas.repository.po.WaterMonitoryPointPO;
 import org.apache.commons.lang3.BooleanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -61,10 +67,18 @@
     private WaterFacilityParameterMapperImpl waterFacilityParameterMapper;
     @Autowired
     private WaterMonitoryPointMapperImpl waterMonitoryPointMapper;
+    @Autowired
+    private WaterFacilityTypeMapperImpl waterFacilityTypeMapper;
 
     public ExecutedResult<Long> create(ReqCreateWaterFacility request) {
+        WaterMonitoryPointPO pointPO = waterMonitoryPointMapper.getById(request.getPointId());
+        if(Objects.isNull(pointPO)){
+            return ExecutedResult.failed("监测点不存在");
+        }
         // 转换po
         WaterFacilityPO item = CopierUtil.mapTo(request, WaterFacilityPO.class);
+        item.setPointId(pointPO.getId());
+        item.setPointName(pointPO.getPointName());
         // 设置状态
         //item.setStatus(EState.NORMAL.getValue());
         // 设置记录创建时间
@@ -105,7 +119,37 @@
         }
         return ExecutedResult.success(result);
     }
-
+    public ExecutedResult<List<WaterFacilityPO>> getFacilityFan(Integer type){
+        List<WaterFacilityPO>result = new ArrayList<>();
+        if(type!=null){
+            LambdaQueryWrapper<WaterFacilityPO>wrapper=new LambdaQueryWrapper<>();
+            wrapper.eq(WaterFacilityPO::getFacilityFanState,type);
+            result= mapper.selectList(wrapper);
+        }else {
+            result= mapper.getList();
+        }
+        return ExecutedResult.success(result);
+    }
+    public ExecutedResult<List<FacilityStateData>> getFacilityState(){
+        List<FacilityStateData>result = new ArrayList<>();
+        List<WaterFacilityPO> facilityPOList = mapper.getList();
+        EFacilityState[] values = EFacilityState.values();
+        for(EFacilityState v:values){
+            FacilityStateData stateData=new FacilityStateData();
+            stateData.setTypeName(EFacilityState.getByValue(v.getValue()).getDesc());
+            List<WaterFacilityPO> collect = facilityPOList.stream().filter(item -> item.getFacilityState().equals(v.getValue())).collect(Collectors.toList());
+            if(ListUtil.isNotNullOrEmpty(collect)){
+                BigDecimal bigDecimal = new BigDecimal(collect.size()).divide(new BigDecimal(facilityPOList.size())).setScale(2, RoundingMode.DOWN);
+                BigDecimal bigDecimal1 = bigDecimal.multiply(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
+                stateData.setValue(bigDecimal1);
+            }
+            result.add(stateData);
+        }
+        return ExecutedResult.success(result);
+    }
+    public ExecutedResult<List<FacilityPointCount>> getFacilityPointCount(){
+        return ExecutedResult.success(mapper.getFacilityPointCount());
+    }
     public ExecutedResult<List<FacilityData>> getFacilityList() {
         List<FacilityData> result = new ArrayList<>();
         List<WaterMonitoryPointPO> pointPOList = waterMonitoryPointMapper.getList();
@@ -120,6 +164,7 @@
             data.setTop(pointPO.getTopMargin());
             data.setFacilityId(facilityPO.getId());
             data.setFacilityName(facilityPO.getFacilityName());
+            data.setBoxType(pointPO.getBoxType());
             data.setFacilityState(EFacilityState.getByValue(facilityPO.getFacilityState()).getDesc());
             data.setFacilityFanState(EFacilityState.getByValue(facilityPO.getFacilityFanState()).getDesc());
             List<WaterFacilityParameterPO> poList = parameterPOList.stream().filter(item -> item.getFacilityId().equals(facilityPO.getId())).collect(Collectors.toList());
@@ -191,7 +236,14 @@
         if (ListUtil.isNotNullOrEmpty(list)) {
             pageList.setLastId(list.get(list.size() - 1).getId());
             // 转换vo
+            List<WaterFacilityTypePO> typePOS = waterFacilityTypeMapper.getList();
             listVo = WaterFacilityConvert.INSTANCE.toVo(list);
+            for(WaterFacilityVO vo:listVo){
+                WaterFacilityTypePO facilityTypePO = typePOS.stream().filter(item -> item.getId().equals(vo.getFacilityType())).findFirst().orElse(null);
+                if(Objects.nonNull(facilityTypePO)){
+                    vo.setFacilityTypeName(facilityTypePO.getName());
+                }
+            }
         }
         PagerResult<WaterFacilityVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo);
         result.setLastId(pageList.getLastId());

--
Gitblit v1.9.3