From 6fcddb84e44167d16554ebe68cc84512f9a36c44 Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期二, 17 六月 2025 15:25:22 +0800
Subject: [PATCH] 预警分析管理-电池告警部分

---
 src/main/java/com/whyc/service/BattalarmDataService.java  |   11 +++
 src/main/resources/mapper/BattalarmDataMapper.xml         |   45 +++++++++++++++
 src/main/java/com/whyc/mapper/BattalarmDataMapper.java    |    4 +
 src/main/java/com/whyc/controller/AlmParamController.java |   27 ++++++++-
 src/main/java/com/whyc/dto/Param/AlmAnalyseDto.java       |   20 ++++++
 src/main/java/com/whyc/service/BattRealdataIdService.java |   38 ++++++++++++
 6 files changed, 141 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/whyc/controller/AlmParamController.java b/src/main/java/com/whyc/controller/AlmParamController.java
index dc35473..5d4095c 100644
--- a/src/main/java/com/whyc/controller/AlmParamController.java
+++ b/src/main/java/com/whyc/controller/AlmParamController.java
@@ -2,6 +2,7 @@
 
 import com.whyc.constant.*;
 import com.whyc.dto.AlarmParam;
+import com.whyc.dto.Param.AlmAnalyseDto;
 import com.whyc.dto.Param.ParamAlmDto;
 import com.whyc.dto.Real.AlmDto;
 import com.whyc.dto.Response;
@@ -9,16 +10,16 @@
 import com.whyc.pojo.db_param.BattAlmparam;
 import com.whyc.pojo.db_param.DevAlmparam;
 import com.whyc.pojo.db_pwrdev_alarm.PwrdevAlarmParam;
-import com.whyc.service.BattAlmparamService;
-import com.whyc.service.DevAlmparamService;
-import com.whyc.service.PwrdevAlarmParamService;
+import com.whyc.service.*;
 import com.whyc.util.ActionUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.text.ParseException;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 @RestController
@@ -33,6 +34,12 @@
 
     @Autowired
     private PwrdevAlarmParamService pwrAlmparamService;
+
+    @Autowired
+    private BattalarmDataService battalarmDataService;
+
+    @Autowired
+    private BattRealdataIdService battRealdataIdService;
 
 
     /*@PostMapping("getBattAlmParam")
@@ -111,4 +118,18 @@
         return new Response<List<AlarmParam>>().set(1,list);
     }
 
+    @PostMapping("getBattAlmAnalyse")
+    @ApiOperation("棰勮鍒嗘瀽绠$悊-鐢垫睜鍛婅")
+    public Response getBattAlmAnalyse(@RequestBody AlmAnalyseDto dto){
+        Integer uid=ActionUtil.getUser().getId();
+        dto.setUid(uid);
+        return battalarmDataService.getBattAlmAnalyse(dto);
+    }
+
+    @GetMapping("getBattHisRealInAlm")
+    @ApiOperation("鐢垫睜鍛婅鐐瑰嚮鍏蜂綋鍛婅淇℃伅鏌ョ湅浠庡憡璀﹀紑濮嬫椂闂村埌鐜板湪鐨勫巻鍙插疄鏃舵暟鎹�")
+    public Response getBattHisRealInAlm(@RequestParam Integer battgroupId,@RequestParam String startTime,@RequestParam(required = false) Integer monNum) throws ParseException, InterruptedException {
+        return battRealdataIdService.getBattHisRealInAlm(battgroupId,startTime,monNum);
+    }
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/dto/Param/AlmAnalyseDto.java b/src/main/java/com/whyc/dto/Param/AlmAnalyseDto.java
new file mode 100644
index 0000000..c1c3466
--- /dev/null
+++ b/src/main/java/com/whyc/dto/Param/AlmAnalyseDto.java
@@ -0,0 +1,20 @@
+package com.whyc.dto.Param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AlmAnalyseDto {
+    private String provice;
+    private String city;
+    private String country;
+    private Integer stationId;
+    private Integer powerId;
+    private Integer battgroupId;
+    private List<Integer> almIdList;
+    private Integer uid;
+    private Integer pageNum;
+    private Integer pageSize;
+    private Integer almLevel;
+}
\ No newline at end of file
diff --git a/src/main/java/com/whyc/mapper/BattalarmDataMapper.java b/src/main/java/com/whyc/mapper/BattalarmDataMapper.java
index 02ae734..cc1f2f3 100644
--- a/src/main/java/com/whyc/mapper/BattalarmDataMapper.java
+++ b/src/main/java/com/whyc/mapper/BattalarmDataMapper.java
@@ -1,6 +1,7 @@
 package com.whyc.mapper;
 
 import com.whyc.dto.AlarmDto;
+import com.whyc.dto.Param.AlmAnalyseDto;
 import com.whyc.dto.Real.AlmDto;
 import com.whyc.pojo.db_alarm.BattalarmData;
 import com.whyc.pojo.web_site.AlarmInspection;
@@ -14,5 +15,6 @@
     List<AlarmInspection> getListGreatThan(Long battAlarmId);
 
     List<AlarmDto> getListByUserId(Integer userId);
-
+    //棰勮鍒嗘瀽绠$悊
+    List<BattalarmData> getBattAlmAnalyse(AlmAnalyseDto dto);
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/service/BattRealdataIdService.java b/src/main/java/com/whyc/service/BattRealdataIdService.java
index f237c32..3b55cb9 100644
--- a/src/main/java/com/whyc/service/BattRealdataIdService.java
+++ b/src/main/java/com/whyc/service/BattRealdataIdService.java
@@ -217,6 +217,44 @@
         latch.await(10, TimeUnit.MINUTES);
         List dataListSorted = dataList.stream().sorted(Comparator.comparing(RealDateDTO::getRecordTime)).collect(Collectors.toList());
         return new Response().set(1, dataListSorted);
+    }
+    //鐢垫睜鍛婅鐐瑰嚮鍏蜂綋鍛婅淇℃伅鏌ョ湅浠庡憡璀﹀紑濮嬫椂闂村埌鐜板湪鐨勫巻鍙插疄鏃舵暟鎹�
+    public Response getBattHisRealInAlm(Integer battgroupId, String startTime, Integer monNum) throws ParseException, InterruptedException {
+        List<RealDateDTO> dataList = new LinkedList<>();
+        List<List<Date>> monthTimeList = DateUtil.getMonthTime(ThreadLocalUtil.parse(startTime,1),new Date());
+        ThreadPoolExecutor pool = ThreadPoolExecutorFactory.getPoolExecutor();
+        CountDownLatch latch = new CountDownLatch(monthTimeList.size());
+        for (int i = 0; i < monthTimeList.size(); i++) {
+            int finalI = i;
+            pool.execute(() -> {
+                int finalII = finalI;
+                BattRealdataId realdata = new BattRealdataId();
+                realdata.setRecordTime(monthTimeList.get(finalII).get(0));
+                realdata.setRecordTime1(monthTimeList.get(finalII).get(1));
+                String table = battgroupId + "_" + ThreadLocalUtil.format(realdata.getRecordTime(),2);
+                realdata.setTableName(table);//琛ㄥ悕鏃堕棿鏍煎紡閮ㄥ垎
+                //鍒ゆ柇琛ㄦ槸鍚﹀瓨鍦�
+                int tableNum = subTablePageInfoService.judgeTable_realdata(table);
+                List<RealDateDTO> list = new ArrayList();
+                if (tableNum > 0) {
+                    //鑾峰彇鎸囧畾鏃堕棿娈靛唴鏈�澶ф渶灏弐ecordNum纭繚鏁版嵁鐨勫畬鏁�
+                    List recordNums= subTablePageInfoService.getMaxAndMinRecordNum(realdata);
+                    Integer maxRecordNum= 0;
+                    Integer minRecordNum= 0;
+                    if(recordNums.size()>0){
+                        maxRecordNum=(Integer)recordNums.get(0);
+                        minRecordNum=(Integer)recordNums.get(1);
+                    }
+                    list = subTablePageInfoService.getBattRealDataHis(realdata,1,maxRecordNum,minRecordNum);
+                }
+                dataList.addAll(list);
+                latch.countDown();
+            });
+            sleep(200);
+        }
+        latch.await(10, TimeUnit.MINUTES);
+        List dataListSorted = dataList.stream().sorted(Comparator.comparing(RealDateDTO::getRecordTime)).collect(Collectors.toList());
+        return new Response().set(1, dataListSorted);
 
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/service/BattalarmDataService.java b/src/main/java/com/whyc/service/BattalarmDataService.java
index 98bd97f..e07f562 100644
--- a/src/main/java/com/whyc/service/BattalarmDataService.java
+++ b/src/main/java/com/whyc/service/BattalarmDataService.java
@@ -9,6 +9,7 @@
 import com.whyc.constant.BattSingalIdEnum;
 import com.whyc.constant.DevAlarmEnum;
 import com.whyc.dto.AlarmDto;
+import com.whyc.dto.Param.AlmAnalyseDto;
 import com.whyc.dto.Real.AlmDto;
 import com.whyc.dto.Response;
 import com.whyc.mapper.BattalarmDataMapper;
@@ -84,4 +85,14 @@
         query.in("num",battAlarmNumList);
         return mapper.selectList(query).stream().map(BattalarmData::getNum).collect(Collectors.toList());
     }
+    //棰勮鍒嗘瀽绠$悊
+    public Response getBattAlmAnalyse(AlmAnalyseDto dto) {
+        PageHelper .startPage(dto.getPageNum(),dto.getPageSize());
+        List<BattalarmData> list=mapper.getBattAlmAnalyse(dto);
+        list.forEach(data->{
+            data.setAlmName(BattSingalIdEnum.getValue(data.getAlmSignalId()));
+        });
+        PageInfo pageInfo=new PageInfo(list);
+        return new Response().setII(1,list!=null,pageInfo,"鐢垫睜鍛婅鍒嗘瀽");
+    }
 }
\ No newline at end of file
diff --git a/src/main/resources/mapper/BattalarmDataMapper.xml b/src/main/resources/mapper/BattalarmDataMapper.xml
index 425591b..5f77042 100644
--- a/src/main/resources/mapper/BattalarmDataMapper.xml
+++ b/src/main/resources/mapper/BattalarmDataMapper.xml
@@ -63,4 +63,49 @@
             and bu.uid = #{userId}
         )
     </select>
+    <select id="getBattAlmAnalyse" resultType="com.whyc.pojo.db_alarm.BattalarmData">
+        select tb_battalarm_data.*,tb_batt_inf.battgroup_name,tb_station_inf.station_name,tb_station_inf.provice,tb_station_inf.city,tb_station_inf.country,tb_station_inf.full_name
+        from db_alarm.tb_battalarm_data,db_station.tb_batt_inf,db_station.tb_station_inf
+        <where>
+            tb_battalarm_data.battgroup_id=tb_batt_inf.battgroup_id
+            and tb_batt_inf.station_id=tb_station_inf.station_id
+            <if test="provice!=null">
+                and tb_station_inf.provice=#{provice}
+            </if>
+            <if test="city!=null">
+                and tb_station_inf.city=#{city}
+            </if>
+            <if test="country!=null">
+                and tb_station_inf.country=#{country}
+            </if>
+            <if test="stationId!=null">
+                and tb_station_inf.station_id=#{stationId}
+            </if>
+            <if test="stationId!=null">
+                and tb_station_inf.station_id=#{stationId}
+            </if>
+            <if test="battgroupId!=null">
+                and tb_battalarm_data.battgroup_id=#{battgroupId}
+            </if>
+            <!--<if test="almIds!=null">
+                <if test="almIds.size==0">
+                    and tb_battalarm_data.alm_id =0
+                </if>
+                <if test="almIds.size>0">
+                    and tb_battalarm_data.alm_id in
+                    <foreach collection="almIds" item="almId" open="(" separator="," close=")">
+                        #{almId}
+                    </foreach>
+                </if>
+            </if>-->
+            <if test="uid>100">
+                and tb_batt_inf.station_id in(
+                select distinct station_id from db_user.tb_baojigroup_power,db_user.tb_baojigroup_usr
+                where   tb_baojigroup_power.baoji_group_id=tb_baojigroup_usr.baoji_group_id
+                and tb_baojigroup_usr.uid=#{uid}
+                )
+            </if>
+
+        </where>
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1