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