From 22e80b64405b03d39305134dacbe821b8d5a23ad Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期二, 27 五月 2025 14:16:44 +0800 Subject: [PATCH] 电池,设备,电源历史告警 --- src/main/java/com/whyc/dto/AlmHis/BattAlarmRes.java | 25 src/main/java/com/whyc/mapper/CommonMapper.java | 2 src/main/java/com/whyc/pojo/db_alarm/DevalarmDataHistory.java | 11 src/main/java/com/whyc/factory/ThreadPoolExecutorFactory.java | 2 /dev/null | 352 ------------ src/main/java/com/whyc/controller/AlarmHistoryController.java | 43 + src/main/java/com/whyc/util/SubTablePageInfoUtils.java | 322 +++++++++++ src/main/java/com/whyc/dto/Real/AlmDto.java | 10 src/main/java/com/whyc/service/SubTablePageInfoService.java | 730 +++++++++++++++---------- src/main/resources/mapper/CommonMapper.xml | 2 src/main/java/com/whyc/service/AlarmHisService.java | 80 ++ src/main/java/com/whyc/dto/AlmHis/BattAlmPar.java | 28 + src/main/java/com/whyc/pojo/db_pwrdev_alarm/PwrdevAlarmHistory.java | 14 src/main/java/com/whyc/dto/AlmHis/DevAlmPar.java | 29 + src/main/java/com/whyc/dto/AlmHis/PwrAlmPar.java | 28 + 15 files changed, 1,031 insertions(+), 647 deletions(-) diff --git a/src/main/java/com/whyc/controller/AlarmHistoryController.java b/src/main/java/com/whyc/controller/AlarmHistoryController.java new file mode 100644 index 0000000..fbd00b5 --- /dev/null +++ b/src/main/java/com/whyc/controller/AlarmHistoryController.java @@ -0,0 +1,43 @@ +package com.whyc.controller; + +import com.whyc.dto.AlmHis.BattAlmPar; +import com.whyc.dto.AlmHis.DevAlmPar; +import com.whyc.dto.AlmHis.PwrAlmPar; +import com.whyc.dto.Real.AlmDto; +import com.whyc.dto.Response; +import com.whyc.service.AlarmHisService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.ParseException; + +@RestController +@Api(tags = "鍛婅鍘嗗彶绠$悊") +@RequestMapping("almHis") +public class AlarmHistoryController { + @Autowired + private AlarmHisService service; + + @PostMapping("getBattAlmHis") + @ApiOperation(value = "鐢垫睜鍛婅鍘嗗彶璁板綍鏌ヨ") + public Response serchByInfo(@RequestBody BattAlmPar almDto) throws ParseException, InterruptedException { + return service.getBattAlmHis(almDto); + } + + @PostMapping("getDevAlmHis") + @ApiOperation(value = "璁惧鍛婅鍘嗗彶璁板綍鏌ヨ") + public Response getDevAlmHis(@RequestBody DevAlmPar almDto) throws ParseException, InterruptedException { + return service.getDevAlmHis(almDto); + } + + @PostMapping("getPwrAlmHis") + @ApiOperation(value = "鐢垫簮鍛婅鍘嗗彶璁板綍鏌ヨ") + public Response getPwrAlmHis(@RequestBody PwrAlmPar almDto) throws ParseException, InterruptedException { + return service.getPwrAlmHis(almDto); + } +} \ No newline at end of file diff --git a/src/main/java/com/whyc/dto/AlmHis/BattAlarmRes.java b/src/main/java/com/whyc/dto/AlmHis/BattAlarmRes.java new file mode 100644 index 0000000..52fa40a --- /dev/null +++ b/src/main/java/com/whyc/dto/AlmHis/BattAlarmRes.java @@ -0,0 +1,25 @@ +package com.whyc.dto.AlmHis; + +import com.whyc.pojo.db_alarm.BattalarmDataHistory; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.io.Serializable; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class BattAlarmRes implements Serializable { + private int battgroupId;//鐢垫睜缁刬d + private String stationName;//鏈烘埧鍚嶇О + private String provice;//鏈烘埧鍚嶇О + private String city;//鏈烘埧鍚嶇О + private String country;//鏈烘埧鍚嶇О + private String stationId;//鏈烘埧id + private String battGroupName;//鐢垫睜缁勫悕绉� + private List<BattalarmDataHistory> adataHs;//鍘嗗彶鍛婅淇℃伅 +} diff --git a/src/main/java/com/whyc/dto/AlmHis/BattAlmPar.java b/src/main/java/com/whyc/dto/AlmHis/BattAlmPar.java new file mode 100644 index 0000000..99e812d --- /dev/null +++ b/src/main/java/com/whyc/dto/AlmHis/BattAlmPar.java @@ -0,0 +1,28 @@ +package com.whyc.dto.AlmHis; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; +@Data +public class BattAlmPar { + private String provice; + private String city; + private String country; + private String stationName; + private List<Integer> almIds; + private Integer almLevel; + private Integer pageNum; + private Integer pageSize; + private Integer uid; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date almStartTime;//寮�濮嬫椂闂� + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date almEndTime;//缁撴潫鏃堕棿 + + private String recordYear; + private Integer limitStart; + private Integer limitEnd; +} \ No newline at end of file diff --git a/src/main/java/com/whyc/dto/AlmHis/DevAlmPar.java b/src/main/java/com/whyc/dto/AlmHis/DevAlmPar.java new file mode 100644 index 0000000..0ca9529 --- /dev/null +++ b/src/main/java/com/whyc/dto/AlmHis/DevAlmPar.java @@ -0,0 +1,29 @@ +package com.whyc.dto.AlmHis; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class DevAlmPar { + private String provice; + private String city; + private String country; + private String stationName; + private List<Integer> almIds; + private Integer almLevel; + private Integer pageNum; + private Integer pageSize; + private Integer uid; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date almStartTime;//寮�濮嬫椂闂� + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date almEndTime;//缁撴潫鏃堕棿 + + private String recordYear; + private Integer limitStart; + private Integer limitEnd; +} \ No newline at end of file diff --git a/src/main/java/com/whyc/dto/AlmHis/PwrAlmPar.java b/src/main/java/com/whyc/dto/AlmHis/PwrAlmPar.java new file mode 100644 index 0000000..a27ffbc --- /dev/null +++ b/src/main/java/com/whyc/dto/AlmHis/PwrAlmPar.java @@ -0,0 +1,28 @@ +package com.whyc.dto.AlmHis; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; +@Data +public class PwrAlmPar { + private String provice; + private String city; + private String country; + private String stationName; + private List<Integer> almIds; + private Integer almLevel; + private Integer pageNum; + private Integer pageSize; + private Integer uid; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date almStartTime;//寮�濮嬫椂闂� + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date almEndTime;//缁撴潫鏃堕棿 + + private String recordYear; + private Integer limitStart; + private Integer limitEnd; +} \ No newline at end of file diff --git a/src/main/java/com/whyc/dto/Real/AlmDto.java b/src/main/java/com/whyc/dto/Real/AlmDto.java index 59d47b4..283d164 100644 --- a/src/main/java/com/whyc/dto/Real/AlmDto.java +++ b/src/main/java/com/whyc/dto/Real/AlmDto.java @@ -1,7 +1,10 @@ package com.whyc.dto.Real; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; import java.util.List; @Data @@ -11,8 +14,13 @@ private String country; private String stationName; private List<Integer> almIds; - private String almLevel; + private Integer almLevel; private Integer pageNum; private Integer pageSize; private Integer uid; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date almStartTime;//寮�濮嬫椂闂� + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date almEndTime;//缁撴潫鏃堕棿 } \ No newline at end of file diff --git a/src/main/java/com/whyc/factory/ThreadPoolExecutorFactory.java b/src/main/java/com/whyc/factory/ThreadPoolExecutorFactory.java index 7645737..57bcd20 100644 --- a/src/main/java/com/whyc/factory/ThreadPoolExecutorFactory.java +++ b/src/main/java/com/whyc/factory/ThreadPoolExecutorFactory.java @@ -11,7 +11,7 @@ private static ThreadPoolExecutor init() { //绾跨▼姹犲垵濮嬪寲,鎷掔粷绛栫暐涓轰涪寮� UserThreadFactory userThreadFactory = new UserThreadFactory("br"); - ThreadPoolExecutor pool = new ThreadPoolExecutor(8, 48, 10, TimeUnit.SECONDS, new LinkedBlockingDeque<>(16), userThreadFactory,new ThreadPoolExecutor.AbortPolicy()); + ThreadPoolExecutor pool = new ThreadPoolExecutor(10, 48, 10, TimeUnit.SECONDS, new LinkedBlockingDeque<>(16), userThreadFactory,new ThreadPoolExecutor.AbortPolicy()); poolExecutor = pool; return pool; } diff --git a/src/main/java/com/whyc/mapper/CommonMapper.java b/src/main/java/com/whyc/mapper/CommonMapper.java index 0ecd11a..9c7724c 100644 --- a/src/main/java/com/whyc/mapper/CommonMapper.java +++ b/src/main/java/com/whyc/mapper/CommonMapper.java @@ -19,7 +19,7 @@ //Object getMaxValue(String schema,String table,String field,String valuePrefix); Object getMaxValue(@Param("schema") String schema,@Param("table") String table,@Param("field") String field); - boolean existTable(String dbName, String tableName); + String existTable(String dbName, String tableName); //void truncate(String dbName, String tableName); diff --git a/src/main/java/com/whyc/pojo/db_alarm/DevalarmDataHistory.java b/src/main/java/com/whyc/pojo/db_alarm/DevalarmDataHistory.java index 703b2f9..a96765f 100644 --- a/src/main/java/com/whyc/pojo/db_alarm/DevalarmDataHistory.java +++ b/src/main/java/com/whyc/pojo/db_alarm/DevalarmDataHistory.java @@ -1,6 +1,7 @@ package com.whyc.pojo.db_alarm; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -73,5 +74,15 @@ @ApiModelProperty(value = "鍛婅閲嶈绛夌骇[0:閲嶈锛�1:绱ф�") private Integer almSeverity; + @TableField(exist = false) + private String stationName; + @TableField(exist = false) + private String provice; + @TableField(exist = false) + private String city; + @TableField(exist = false) + private String country; + @TableField(exist = false) + private String devName; } diff --git a/src/main/java/com/whyc/pojo/db_pwrdev_alarm/PwrdevAlarmHistory.java b/src/main/java/com/whyc/pojo/db_pwrdev_alarm/PwrdevAlarmHistory.java index 8869e19..5d1abb3 100644 --- a/src/main/java/com/whyc/pojo/db_pwrdev_alarm/PwrdevAlarmHistory.java +++ b/src/main/java/com/whyc/pojo/db_pwrdev_alarm/PwrdevAlarmHistory.java @@ -1,6 +1,7 @@ package com.whyc.pojo.db_pwrdev_alarm; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -32,7 +33,7 @@ private Long num; @ApiModelProperty(value = "鐢垫簮ID") - private Long powerId; + private Integer powerId; @ApiModelProperty(value = "鍛婅ID") private Integer almId; @@ -67,5 +68,16 @@ @ApiModelProperty(value = "鍛婅閲嶈绛夌骇[0:閲嶈锛�1:绱ф�") private Integer almSeverity; + @TableField(exist = false) + private String stationName; + @TableField(exist = false) + private String provice; + @TableField(exist = false) + private String city; + @TableField(exist = false) + private String country; + @TableField(exist = false) + private String powerName; + } diff --git a/src/main/java/com/whyc/service/AlarmHisService.java b/src/main/java/com/whyc/service/AlarmHisService.java new file mode 100644 index 0000000..80b3964 --- /dev/null +++ b/src/main/java/com/whyc/service/AlarmHisService.java @@ -0,0 +1,80 @@ +package com.whyc.service; + +import com.github.pagehelper.PageInfo; +import com.whyc.dto.AlmHis.BattAlmPar; +import com.whyc.dto.AlmHis.DevAlmPar; +import com.whyc.dto.AlmHis.PwrAlmPar; +import com.whyc.dto.Real.AlmDto; +import com.whyc.dto.Response; +import com.whyc.pojo.db_user.User; +import com.whyc.util.ActionUtil; +import com.whyc.util.MessageUtils; +import com.whyc.util.SubTablePageInfoUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.util.Date; +import java.util.List; + +@Service +public class AlarmHisService { + @Resource + private SubTablePageInfoUtils subTablePageInfoUtils; + //鐢垫睜鍛婅鍘嗗彶璁板綍鏌ヨ + public Response getBattAlmHis(BattAlmPar almDto) throws ParseException, InterruptedException { + //鍒嗛〉淇℃伅 + Integer pageNum = almDto.getPageNum(); + Integer pageSize = almDto.getPageSize(); + User uinf = ActionUtil.getUser(); + int uid = uinf.getId(); + almDto.setUid(uid); + Date almStartTime = almDto.getAlmStartTime(); + Date almEndTime = almDto.getAlmEndTime(); + PageInfo<Object> pageInfo = subTablePageInfoUtils.getPageInfoByMonthTable(pageNum, pageSize, almStartTime, almEndTime, + "db_alarm", "tb_battalarm_data_history", almDto); + List<Object> list = pageInfo.getList(); + /*for (Object data : list) { + AlarmRes a = (AlarmRes) data; + List<BattalarmDataHistory> l = a.getAdataHs(); + for (BattalarmDataHistory adataH : l) { + adataH.setAlmSignalIdName(AlarmDaoFactory.getAlarmName(adataH.getAlmSignalId())); + adataH.setAlmLevelName(AlarmDaoFactory.getAlarmType(adataH.getAlmLevel())); + } + }*/ + return new Response().setII(1, list!=null, pageInfo, "鐢垫睜鍛婅鍘嗗彶璁板綍鏌ヨ"); + } + //璁惧鍛婅鍘嗗彶璁板綍鏌ヨ + public Response getDevAlmHis(DevAlmPar almDto) throws ParseException, InterruptedException { + Integer pageNum = almDto.getPageNum(); + Integer pageSize = almDto.getPageSize(); + Date almStartTime = almDto.getAlmStartTime(); + Date almEndTime = almDto.getAlmEndTime(); + User uinf = ActionUtil.getUser(); + int uid = uinf.getId(); + almDto.setUid(uid); + PageInfo<Object> pageInfo = subTablePageInfoUtils.getPageInfoByMonthTable(pageNum, pageSize, almStartTime, almEndTime, + "db_alarm", "tb_devalarm_data_history", almDto); + return new Response().setII(1, pageInfo.getList()!=null, pageInfo, "杩斿洖缁撴灉"); + } + //鐢垫簮鍛婅鍘嗗彶璁板綍鏌ヨ + public Response getPwrAlmHis(PwrAlmPar almDto) throws ParseException { + Integer pageNum = almDto.getPageNum(); + Integer pageSize = almDto.getPageSize(); + Date almStartTime = almDto.getAlmStartTime(); + Date almEndTime = almDto.getAlmEndTime(); + //recordId = 1 鏅�氱數婧� + //param.setRecordId(1L); + User uinf = ActionUtil.getUser(); + int uid = uinf.getId(); + almDto.setUid(uid); + PageInfo<Object> pageInfo = subTablePageInfoUtils.getPageInfo(pageNum, pageSize, almStartTime, almEndTime, + "db_pwrdev_alarm", "tb_pwrdev_alarm_history", almDto); + List<Object> list = pageInfo.getList(); + /*for (Object temp : list) { + PwrdevAlarmHistory p = (PwrdevAlarmHistory) temp; + p.setAlarmName(AlarmDaoFactory.getAllAlarmName(p.getAlmType())); + }*/ + return new Response<>().setII(1, pageInfo, null, "鐢垫簮鍛婅鍘嗗彶璁板綍鏌ヨ"); + } +} \ No newline at end of file diff --git a/src/main/java/com/whyc/service/SubTablePageInfoService.java b/src/main/java/com/whyc/service/SubTablePageInfoService.java index 40fba41..46fb3dd 100644 --- a/src/main/java/com/whyc/service/SubTablePageInfoService.java +++ b/src/main/java/com/whyc/service/SubTablePageInfoService.java @@ -1,290 +1,440 @@ -//package com.whyc.service; -// -//import com.whyc.dto.DevA200AlarmDto; -//import com.whyc.mapper.CallBack; -//import com.whyc.pojo.db_alarm.DevLithiumAlarmDataYear; -//import com.whyc.pojo.db_lithium_testdata.BattLithiumTestData; -//import com.whyc.util.ThreadLocalUtil; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Service; -// -//import java.sql.ResultSet; -//import java.sql.SQLException; -//import java.util.ArrayList; -//import java.util.LinkedList; -//import java.util.List; -// -//@Service -//public class SubTablePageInfoService { -// @Autowired -// private MybatisSqlExecuteService sqlExecuteService; -// //鑾峰彇璁惧鏌愭璁板綍璇︾粏鐨勫崟浣撴斁鐢佃繃绋� -// public List<BattLithiumTestData> getTdataById(Integer devId, Integer testRecordCount) { -// String sql="select * from db_batt_testdata.tb_batttestdata_" +devId -// +" where need_test=1 and test_record_count="+testRecordCount+" "; -// sql+=" ORDER BY record_num asc "; -// List list = sqlExecuteService.executeQuery_call(sql, new CallBack() { -// @Override -// public List getResults(ResultSet rs) throws SQLException { -// List<BattLithiumTestData> list=new ArrayList<>(); -// while (rs.next()){ -// BattLithiumTestData tdata=new BattLithiumTestData(); -// tdata.setNum(rs.getInt("num")); -// tdata.setDevId(rs.getInt("dev_id")); -// tdata.setBattIdx(rs.getInt("batt_idx")); -// tdata.setTestRecordCount(rs.getInt("test_record_count")); -// tdata.setTestType(rs.getInt("test_type")); -// tdata.setRecordNum(rs.getInt("record_num")); -// tdata.setTestStarttime(rs.getTimestamp("test_starttime")); -// tdata.setRecordTime(rs.getTimestamp("record_time")); -// tdata.setTestTimelong(rs.getInt("test_timelong")); -// tdata.setGroupVol(rs.getDouble("group_vol")); -// tdata.setTestCurr(rs.getDouble("test_curr")); -// tdata.setTestCap(rs.getDouble("test_cap")); -// tdata.setMonNum(rs.getInt("mon_num")); -// tdata.setMonVol(rs.getDouble("mon_vol")); -// tdata.setMonTmp(rs.getDouble("mon_tmp")); -// tdata.setMonCurr(rs.getDouble("mon_curr")); -// tdata.setMonCap(rs.getDouble("mon_cap")); -// tdata.setMonWh(rs.getDouble("mon_wh")); -// tdata.setMonState(rs.getString("mon_state")); -// tdata.setMonFault(rs.getString("mon_fault")); -// tdata.setNeedTest(rs.getInt("need_test")); -// list.add(tdata); -// } -// return list; -// } -// }); -// return list; -// } -// -// //鑾峰彇璁惧鏌愭璁板綍璇︾粏鐨勫崟浣撴斁鐢佃繃绋� -// public List<BattLithiumTestData> getTdataByIdWithListA200(Integer devId, Integer testRecordCount) { -// String sql="select * from db_lithium_testdata.tb_batttestdata_" +devId -// +" where need_test=1 and test_record_count="+testRecordCount+" "; -// sql+=" ORDER BY record_num asc "; -// List list = sqlExecuteService.executeQuery_call(sql, new CallBack() { -// @Override -// public List getResults(ResultSet rs) throws SQLException { -// List list=new ArrayList<>(); -// List<Float> monVols=null; -// List<Integer> monNums=null; -// BattLithiumTestData tdata=null; -// int num=0; -// try { -// while (rs.next()){ -// int monNum=rs.getInt("mon_num"); -// float monvol=rs.getFloat("mon_vol"); -// int recordNum=rs.getInt("record_num"); -// if(num!=recordNum){ -// if(num!=0){ -// tdata.setMonVols(monVols); -// tdata.setMonNums(monNums); -// list.add(tdata); -// } -// tdata=new BattLithiumTestData(); -// monVols=new ArrayList<>(); -// monNums=new ArrayList<>(); -// tdata.setDevId(rs.getInt("dev_id")); -// tdata.setBattIdx(rs.getInt("batt_idx")); -// tdata.setTestRecordCount(rs.getInt("test_record_count")); -// tdata.setTestType(rs.getInt("test_type")); -// tdata.setRecordNum(recordNum); -// tdata.setTestStarttime(rs.getTimestamp("test_starttime")); -// tdata.setRecordTime(rs.getTimestamp("record_time")); -// tdata.setTestTimelong(rs.getInt("test_timelong")); -// tdata.setGroupVol(rs.getDouble("group_vol")); -// tdata.setTestCurr(rs.getDouble("test_curr")); -// tdata.setTestCap(rs.getDouble("test_cap")); -// tdata.setNeedTest(rs.getInt("need_test")); -// tdata.setMaxTemp(rs.getFloat("max_temp")); -// tdata.setMinTemp(rs.getFloat("min_temp")); -// num=recordNum; -// } -// monVols.add(monvol); -// monNums.add(monNum); -// } -// tdata.setMonVols(monVols); -// tdata.setMonNums(monNums); -// list.add(tdata); -// } catch (SQLException e) { -// e.printStackTrace(); -// } -// return list; -// } -// }); -// return list; -// } -// //鏌ヨDevAlm鍘嗗彶鍛婅鏁伴噺 -// public int getCountForDevAlm(DevA200AlarmDto dto) { -// String sql="select count(distinct num) as number from db_alarm." +dto.getTableName() -// +" where 1=1 "; -// -// if(dto.getStartTime()!=null){ -// sql+=" and alm_starttime >='"+ ThreadLocalUtil.format(dto.getStartTime(),1)+"' "; -// } -// if(dto.getEndTime()!=null){ -// sql+=" and alm_endtime <='"+ThreadLocalUtil.format(dto.getEndTime(),1)+"' "; -// } -// if(dto.getDevType()!=null){ -// sql+=" and FLOOR(dev_id/100000000)="+dto.getDevType(); -// } -// if(dto.getDevId()!=null){ -// sql+=" and dev_id="+dto.getDevId(); -// } -// if(dto.getAlmId()!=null){ -// sql+=" and alm_id="+dto.getAlmId(); -// } -// sql+=" and dev_id in (" + -// " SELECT distinct dev_id from db_user.tb_battgroup_baojigroup,db_user.tb_battgroup_usr" + -// " where tb_battgroup_baojigroup.baoji_group_id=tb_battgroup_usr.baoji_group_id" + -// " and uid="+dto.getUid()+ -// ")"; -// sql+=" order by alm_starttime desc "; -// List list = sqlExecuteService.executeQuery_call(sql, new CallBack() { -// @Override -// public List getResults(ResultSet rs) throws SQLException { -// LinkedList<Object> temp = new LinkedList<>(); -// try { -// while (rs.next()) -// temp.add(rs.getInt("number")); -// } catch (SQLException e) { -// e.printStackTrace(); -// } -// return temp; -// } -// }); -// int num =0; -// if(list!=null){ -// num= (int) list.get(0); -// } -// return num; -// } -// //鏌ヨdevalm鍘嗗彶鍛婅 -// public List getListDevAlm(DevA200AlarmDto dto){ -// String sql="select * from db_alarm." +dto.getTableName() -// +" where 1=1 "; -// -// if(dto.getStartTime()!=null){ -// sql+=" and alm_starttime >='"+ ThreadLocalUtil.format(dto.getStartTime(),1)+"' "; -// } -// if(dto.getEndTime()!=null){ -// sql+=" and alm_endtime <='"+ThreadLocalUtil.format(dto.getEndTime(),1)+"' "; -// } -// if(dto.getDevType()!=null){ -// sql+=" and FLOOR(dev_id/100000000)="+dto.getDevType(); -// } -// if(dto.getDevId()!=null){ -// sql+=" and dev_id="+dto.getDevId(); -// } -// if(dto.getAlmId()!=null){ -// sql+=" and alm_id="+dto.getAlmId(); -// } -// sql+=" and dev_id in (" + -// " SELECT distinct dev_id from db_user.tb_battgroup_baojigroup,db_user.tb_battgroup_usr" + -// " where tb_battgroup_baojigroup.baoji_group_id=tb_battgroup_usr.baoji_group_id" + -// " and uid="+dto.getUid()+ -// ")"; -// sql+=" ORDER BY alm_starttime desc limit "+dto.getLimitStart()+","+dto.getLimitEnd()+" "; -// List list = sqlExecuteService.executeQuery_call(sql, new CallBack() { -// @Override -// public List getResults(ResultSet rs) throws SQLException { -// List<DevLithiumAlarmDataYear> list=new ArrayList<>(); -// while (rs.next()){ -// DevLithiumAlarmDataYear dataYear=new DevLithiumAlarmDataYear(); -// dataYear.setNum(rs.getInt("num")); -// dataYear.setDevId(rs.getInt("dev_id")); -// dataYear.setAlmId(rs.getInt("alm_id")); -// dataYear.setAlmSignalId(rs.getInt("alm_signal_id")); -// dataYear.setAlmStarttime(rs.getTimestamp("alm_starttime")); -// dataYear.setAlmValue(rs.getFloat("alm_value")); -// dataYear.setAlmIsConfirmed(rs.getInt("alm_is_confirmed")); -// dataYear.setConfirmedUid(rs.getInt("confirmed_uid")); -// dataYear.setConfirmedTime(rs.getTimestamp("confirmed_time")); -// dataYear.setAlmEndtime(rs.getTimestamp("alm_endtime")); -// dataYear.setAlmClearedType(rs.getInt("alm_cleared_type")); -// list.add(dataYear); -// } -// return list; -// } -// }); -// return list; -// } -// -// -// public List<BattLithiumTestData> getTdataByIdWithListActm(Integer devId, Integer testRecordCount) { -// String sql="select * from db_batt_testdata.tb_batttestdata_" +devId -// +" where need_test=1 and test_record_count="+testRecordCount+" "; -// sql+=" ORDER BY record_num asc "; -// List list = sqlExecuteService.executeQuery_call(sql, new CallBack() { -// @Override -// public List getResults(ResultSet rs) throws SQLException { -// List list=new ArrayList<>(); -// List<Float> monVols=null; -// List<Float> monCurrs=null; -// List<Float> monCaps=null; -// List<Float> monWhs=null; -// List<Integer> monNums=null; -// BattLithiumTestData tdata=null; -// int num=0; -// try { -// while (rs.next()){ -// int monNum=rs.getInt("mon_num"); -// float monvol=rs.getFloat("mon_vol"); -// float monCurr=rs.getFloat("mon_curr"); -// float monCap=rs.getFloat("mon_cap"); -// float monWh=rs.getFloat("mon_wh"); -// int recordNum=rs.getInt("record_num"); -// -// if(num!=recordNum){ -// if(num!=0){ -// tdata.setMonVols(monVols); -// tdata.setMonNums(monNums); -// tdata.setMonCurrs(monCurrs); -// tdata.setMonCaps(monCaps); -// tdata.setMonWhs(monWhs); -// list.add(tdata); -// } -// tdata=new BattLithiumTestData(); -// monVols=new ArrayList<>(); -// monNums=new ArrayList<>(); -// monCurrs=new ArrayList<>(); -// monCaps=new ArrayList<>(); -// monWhs=new ArrayList<>(); -// tdata.setDevId(rs.getInt("dev_id")); -// tdata.setBattIdx(rs.getInt("batt_idx")); -// tdata.setTestRecordCount(rs.getInt("test_record_count")); -// tdata.setTestType(rs.getInt("test_type")); -// tdata.setRecordNum(recordNum); -// tdata.setTestStarttime(rs.getTimestamp("test_starttime")); -// tdata.setRecordTime(rs.getTimestamp("record_time")); -// tdata.setTestTimelong(rs.getInt("test_timelong")); -// tdata.setGroupVol(rs.getDouble("group_vol")); -// tdata.setTestCurr(rs.getDouble("test_curr")); -// tdata.setTestCap(rs.getDouble("test_cap")); -// tdata.setNeedTest(rs.getInt("need_test")); -// tdata.setMonTmp(rs.getDouble("mon_tmp")); -// num=recordNum; -// } -// monVols.add(monvol); -// monNums.add(monNum); -// monCurrs.add(monCurr); -// monCaps.add(monCap); -// monWhs.add(monWh); -// } -// -// tdata.setMonVols(monVols); -// tdata.setMonNums(monNums); -// tdata.setMonCurrs(monCurrs); -// tdata.setMonCaps(monCaps); -// tdata.setMonWhs(monWhs); -// list.add(tdata); -// } catch (SQLException e) { -// e.printStackTrace(); -// } -// return list; -// } -// }); -// return list; -// } -//} +package com.whyc.service; + +import com.whyc.dto.AlmHis.BattAlarmRes; +import com.whyc.dto.AlmHis.BattAlmPar; +import com.whyc.dto.AlmHis.DevAlmPar; +import com.whyc.dto.AlmHis.PwrAlmPar; +import com.whyc.mapper.CallBack; +import com.whyc.pojo.db_alarm.BattalarmDataHistory; +import com.whyc.pojo.db_alarm.DevalarmDataHistory; +import com.whyc.pojo.db_pwrdev_alarm.PwrdevAlarmHistory; +import com.whyc.util.ThreadLocalUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.*; + +@Service +public class SubTablePageInfoService { + @Autowired + private MybatisSqlExecuteService sqlExecuteService; + + + + //鑾峰彇鐢垫睜缁勫巻鍙插憡璀︽暟閲� + public int getBattAlmHisCount(BattAlmPar param){ + String sql="select count(distinct history.num) as number " + + " from db_alarm."+param.getRecordYear()+" history,db_station.tb_station_inf,db_station.tb_batt_inf " + + " where history.battgroup_id=tb_battinf.battgroup_id " + + " and tb_batt_inf.station_id=tb_station_inf.station_id " + + " and alm_start_time>='"+ThreadLocalUtil.format(param.getAlmStartTime(),1)+"' and alm_start_time <='"+ThreadLocalUtil.format(param.getAlmEndTime(),1)+"' " ; + if(param.getProvice()!=null){ + sql+=" and tb_station_inf.province='"+param.getProvice()+"' "; + } + if(param.getCity()!=null){ + sql+=" and tb_station_inf.city='"+param.getCity()+"' "; + } + if(param.getCountry()!=null){ + sql+=" and tb_station_inf.country='"+param.getCountry()+"' "; + } + if(param.getStationName()!=null){ + sql+=" and tb_station_inf.station_name like '%"+param.getStationName()+"%' "; + } + if(param.getAlmLevel()!=null){ + sql+=" and history.alm_level="+param.getAlmLevel()+" "; + } + List<Integer> almIds=param.getAlmIds(); + if(almIds!=null&&almIds.size()>0){ + sql+=" and history.alm_id in ( "; + for (int i=0;i<almIds.size();i++) { + sql+=almIds.get(i); + if(i!=(almIds.size()-1)){ + sql+=","; + } + } + sql+=")"; + } + if(param.getUid()>100){ + sql+=" 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="+param.getUid()+ + " )"; + } + List list = sqlExecuteService.executeQuery_call(sql, new CallBack() { + @Override + public List getResults(ResultSet rs) throws SQLException { + LinkedList<Object> temp = new LinkedList<>(); + try { + while (rs.next()) + temp.add(rs.getInt("number")); + } catch (SQLException e) { + e.printStackTrace(); + } + return temp; + } + }); + int num =0; + if(list!=null){ + num= (int) list.get(0); + } + return num; + } + //鑾峰彇鐢垫睜缁勫巻鍙插憡璀﹂泦鍚� + public List<BattAlarmRes> getBattAlmHisList(BattAlmPar param){ + String sql="select history.battgroup_id,history.num,alm_signal_id,history.mon_num,alm_value,alm_level,alm_is_confirmed,alm_confirmed_time,alm_start_time,alm_end_time,alm_severity " + + " ,tb_station_inf.station_name,tb_station_inf.provice,tb_station_inf.city,tb_station_inf.country,tb_batt_inf.battgroup_name " + + " from db_alarm."+param.getRecordYear()+" history,db_station.tb_station_inf,db_station.tb_batt_inf " + + " where history.battgroup_id=tb_battinf.battgroup_id " + + " and tb_batt_inf.station_id=tb_station_inf.station_id " + + " and alm_start_time>='"+ThreadLocalUtil.format(param.getAlmStartTime(),1)+"' and alm_start_time <='"+ThreadLocalUtil.format(param.getAlmEndTime(),1)+"' " ; + if(param.getProvice()!=null){ + sql+=" and tb_station_inf.province='"+param.getProvice()+"' "; + } + if(param.getCity()!=null){ + sql+=" and tb_station_inf.city='"+param.getCity()+"' "; + } + if(param.getCountry()!=null){ + sql+=" and tb_station_inf.country='"+param.getCountry()+"' "; + } + if(param.getStationName()!=null){ + sql+=" and tb_station_inf.station_name like '%"+param.getStationName()+"%' "; + } + if(param.getAlmLevel()!=null){ + sql+=" and history.alm_level="+param.getAlmLevel()+" "; + } + List<Integer> almIds=param.getAlmIds(); + if(almIds!=null&&almIds.size()>0){ + sql+=" and history.alm_id in ( "; + for (int i=0;i<almIds.size();i++) { + sql+=almIds.get(i); + if(i!=(almIds.size()-1)){ + sql+=","; + } + } + sql+=")"; + } + if(param.getUid()>100){ + sql+=" 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="+param.getUid()+ + " )"; + } + sql+=" order by history.alm_start_time desc,history.battgroup_id asc,history.mon_num asc limit "+param.getLimitStart()+","+param.getLimitEnd()+" "; + + List<BattAlarmRes> list = sqlExecuteService.executeQuery_call(sql, new CallBack() { + @Override + public List getResults(ResultSet rs) throws SQLException { + List<BattAlarmRes> list=new ArrayList<>(); + int id=0; + int i=0; + List dataList=new ArrayList(); + BattAlarmRes ph=new BattAlarmRes(); + while (rs.next()){ + int battGroupId=rs.getInt("battgroup_id"); + if(battGroupId!=id){ + ph.setAdataHs(dataList); + dataList=new ArrayList(); + } + BattalarmDataHistory data=new BattalarmDataHistory(); + data.setNum(rs.getLong("num")); + data.setBattgroupId(rs.getInt("battgroup_id")); + data.setAlmSignalId(rs.getInt("alm_signal_id")); + data.setMonNum(rs.getInt("mon_num")); + data.setAlmValue(rs.getFloat("alm_value")); + data.setAlmLevel(rs.getInt("alm_level")); + data.setAlmIsConfirmed(rs.getInt("alm_is_confirmed")); + data.setAlmConfirmedTime(rs.getTimestamp("alm_confirmed_time")); + data.setAlmStartTime(rs.getTimestamp("alm_start_time")); + data.setAlmEndTime(rs.getTimestamp("alm_end_time")); + data.setAlmSeverity(rs.getInt("alm_severity")); + dataList.add(data); + if(battGroupId!=id){ + if(i!=0){ + list.add(ph); + } + id=battGroupId; + ph=new BattAlarmRes(); + ph.setBattgroupId(battGroupId); + ph.setStationName(rs.getString("station_name")); + ph.setProvice(rs.getString("provice")); + ph.setCity(rs.getString("city")); + ph.setCountry(rs.getString("country")); + ph.setBattGroupName(rs.getString("battgroup_name")); + } + if(rs.isLast()){ + ph.setAdataHs(dataList); + list.add(ph); + } + i++; + } + return list; + } + }); + return list; + } + + //鑾峰彇璁惧鍘嗗彶鍛婅鏁伴噺 + public int getDevAlmHisCount(DevAlmPar param){ + String sql="SELECT count(distinct history.num) as number FROM db_alarm."+param.getRecordYear()+" history,db_station.tb_batt_inf,db_station.tb_station_inf " + + " where history.dev_id=tb_batt_inf.dev_id "+ + " and tb_batt_inf.station_id=tb_station_inf.station_id "+ + " and alm_start_time>='"+ThreadLocalUtil.format(param.getAlmStartTime(),1)+"' and alm_start_time <='"+ThreadLocalUtil.format(param.getAlmEndTime(),1)+"' " ; + if(param.getProvice()!=null){ + sql+=" and tb_station_inf.province='"+param.getProvice()+"' "; + } + if(param.getCity()!=null){ + sql+=" and tb_station_inf.city='"+param.getCity()+"' "; + } + if(param.getCountry()!=null){ + sql+=" and tb_station_inf.country='"+param.getCountry()+"' "; + } + if(param.getStationName()!=null){ + sql+=" and tb_station_inf.station_name like '%"+param.getStationName()+"%' "; + } + if(param.getAlmLevel()!=null){ + sql+=" and history.alm_level="+param.getAlmLevel()+" "; + } + List<Integer> almIds=param.getAlmIds(); + if(almIds!=null&&almIds.size()>0){ + sql+=" and history.alm_id in ( "; + for (int i=0;i<almIds.size();i++) { + sql+=almIds.get(i); + if(i!=(almIds.size()-1)){ + sql+=","; + } + } + sql+=")"; + } + if(param.getUid()>100){ + sql+=" 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="+param.getUid()+ + " )"; + } + List list = sqlExecuteService.executeQuery_call(sql, new CallBack() { + @Override + public List getResults(ResultSet rs) throws SQLException { + LinkedList<Object> temp = new LinkedList<>(); + try { + while (rs.next()) + temp.add(rs.getInt("number")); + } catch (SQLException e) { + e.printStackTrace(); + } + return temp; + } + }); + int num =0; + if(list!=null){ + num= (int) list.get(0); + } + return num; + } + //鑾峰彇璁惧鍘嗗彶鍛婅闆嗗悎 + public List getDevAlmHisList(DevAlmPar param){ + String sql="SELECT history.num,dev_id,dev_ip,alm_level,alm_start_time,alm_end_time,alm_is_confirmed,alm_confirmed_time,alm_cleared_type,alm_severity, " + + " tb_station_inf.station_name,tb_station_inf.provice,tb_station_inf.city,tb_station_inf.country,tb_batt_inf.dev_name " + + " FROM db_alarm."+param.getRecordYear()+" history,db_station.tb_batt_inf,db_station.tb_station_inf " + + " where history.dev_id=tb_batt_inf.dev_id "+ + " and tb_batt_inf.station_id=tb_station_inf.station_id "+ + " and alm_start_time>='"+ThreadLocalUtil.format(param.getAlmStartTime(),1)+"' and alm_start_time <='"+ThreadLocalUtil.format(param.getAlmEndTime(),1)+"' " ; + if(param.getProvice()!=null){ + sql+=" and tb_station_inf.province='"+param.getProvice()+"' "; + } + if(param.getCity()!=null){ + sql+=" and tb_station_inf.city='"+param.getCity()+"' "; + } + if(param.getCountry()!=null){ + sql+=" and tb_station_inf.country='"+param.getCountry()+"' "; + } + if(param.getStationName()!=null){ + sql+=" and tb_station_inf.station_name like '%"+param.getStationName()+"%' "; + } + if(param.getAlmLevel()!=null){ + sql+=" and history.alm_level="+param.getAlmLevel()+" "; + } + List<Integer> almIds=param.getAlmIds(); + if(almIds!=null&&almIds.size()>0){ + sql+=" and history.alm_id in ( "; + for (int i=0;i<almIds.size();i++) { + sql+=almIds.get(i); + if(i!=(almIds.size()-1)){ + sql+=","; + } + } + sql+=")"; + } + if(param.getUid()>100){ + sql+=" 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="+param.getUid()+ + " )"; + } + sql+=" order by history.alm_start_time desc,history.dev_id asc limit "+param.getLimitStart()+","+param.getLimitEnd()+" "; + List list = sqlExecuteService.executeQuery_call(sql, new CallBack() { + @Override + public List getResults(ResultSet rs) throws SQLException { + List<DevalarmDataHistory> list=new ArrayList<>(); + while (rs.next()){ + DevalarmDataHistory ph=new DevalarmDataHistory(); + ph.setNum(rs.getLong("num")); + ph.setDevId(rs.getInt("dev_id")); + ph.setDevIp(rs.getString("dev_ip")); + ph.setAlmLevel(rs.getInt("alm_level")); + ph.setAlmStartTime(rs.getTimestamp("alm_start_time")); + ph.setAlmEndTime(rs.getTimestamp("alm_end_time")); + ph.setAlmIsConfirmed(rs.getInt("alm_is_confirmed")); + ph.setAlmConfirmedTime(rs.getTimestamp("alm_confirmed_time")); + ph.setAlmClearedType(rs.getInt("alm_cleared_type")); + ph.setDevName(rs.getString("dev_name")); + ph.setStationName(rs.getString("station_name")); + ph.setProvice(rs.getString("provice")); + ph.setCity(rs.getString("city")); + ph.setCountry(rs.getString("country")); + list.add(ph); + } + return list; + } + }); + return list; + } + //鐢垫簮鍘嗗彶鍛婅鏁� + public int getPwrAlmHisCount(PwrAlmPar param){ + String sql="select count(distinct alarm.num) as number from db_pwrdev_alarm."+param.getRecordYear()+" alarm" + + ",db_station.tb_power_inf,db_station.tb_station_inf " + + " where alarm.power_id = tb_power_inf.power_id " + + " and tb_power_inf.station_id=tb_station_inf.station_id "+ + " and alm_start_time>='"+ThreadLocalUtil.format(param.getAlmStartTime(),1)+"' and alm_start_time <='"+ThreadLocalUtil.format(param.getAlmEndTime(),1)+"' " ; + if(param.getProvice()!=null){ + sql+=" and tb_station_inf.province='"+param.getProvice()+"' "; + } + if(param.getCity()!=null){ + sql+=" and tb_station_inf.city='"+param.getCity()+"' "; + } + if(param.getCountry()!=null){ + sql+=" and tb_station_inf.country='"+param.getCountry()+"' "; + } + if(param.getStationName()!=null){ + sql+=" and tb_station_inf.station_name like '%"+param.getStationName()+"%' "; + } + if(param.getAlmLevel()!=null){ + sql+=" and history.alm_level="+param.getAlmLevel()+" "; + } + List<Integer> almIds=param.getAlmIds(); + if(almIds!=null&&almIds.size()>0){ + sql+=" and history.alm_id in ( "; + for (int i=0;i<almIds.size();i++) { + sql+=almIds.get(i); + if(i!=(almIds.size()-1)){ + sql+=","; + } + } + sql+=")"; + } + if(param.getUid()>100){ + sql+=" and tb_power_inf.power_id in(" + + " select distinct power_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="+param.getUid()+ + " )"; + } + List list = sqlExecuteService.executeQuery_call(sql, new CallBack() { + @Override + public List getResults(ResultSet rs) throws SQLException { + LinkedList<Object> temp = new LinkedList<>(); + try { + while (rs.next()) + temp.add(rs.getInt("number")); + } catch (SQLException e) { + e.printStackTrace(); + } + return temp; + } + }); + int num =0; + if(list!=null){ + num= (int) list.get(0); + } + return num; + } + //鐢垫簮鍘嗗彶鍛婅闆嗗悎 + public List<PwrdevAlarmHistory> getPwrAlmHisList(PwrAlmPar param){ + String sql="select alarm.*," + + " tb_station_inf.station_name,tb_station_inf.provice,tb_station_inf.city,tb_station_inf.country,tb_power_inf.power_name " + + " from db_pwrdev_alarm."+param.getRecordYear()+" alarm" + + ",db_station.tb_power_inf,db_station.tb_station_inf " + + " where alarm.power_id = tb_power_inf.power_id " + + " and tb_power_inf.station_id=tb_station_inf.station_id "+ + " and alm_start_time>='"+ThreadLocalUtil.format(param.getAlmStartTime(),1)+"' and alm_start_time <='"+ThreadLocalUtil.format(param.getAlmEndTime(),1)+"' " ; + if(param.getProvice()!=null){ + sql+=" and tb_station_inf.province='"+param.getProvice()+"' "; + } + if(param.getCity()!=null){ + sql+=" and tb_station_inf.city='"+param.getCity()+"' "; + } + if(param.getCountry()!=null){ + sql+=" and tb_station_inf.country='"+param.getCountry()+"' "; + } + if(param.getStationName()!=null){ + sql+=" and tb_station_inf.station_name like '%"+param.getStationName()+"%' "; + } + if(param.getAlmLevel()!=null){ + sql+=" and history.alm_level="+param.getAlmLevel()+" "; + } + List<Integer> almIds=param.getAlmIds(); + if(almIds!=null&&almIds.size()>0){ + sql+=" and history.alm_id in ( "; + for (int i=0;i<almIds.size();i++) { + sql+=almIds.get(i); + if(i!=(almIds.size()-1)){ + sql+=","; + } + } + sql+=")"; + } + if(param.getUid()>100){ + sql+=" and tb_power_inf.power_id in(" + + " select distinct power_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="+param.getUid()+ + " )"; + } + sql+="order by alarm.alm_start_time desc limit "+param.getLimitStart()+","+param.getLimitEnd()+" "; + List<PwrdevAlarmHistory> list = sqlExecuteService.executeQuery_call(sql, new CallBack() { + @Override + public List getResults(ResultSet rs) throws SQLException { + List<PwrdevAlarmHistory> list=new ArrayList<>(); + while (rs.next()){ + PwrdevAlarmHistory ph=new PwrdevAlarmHistory(); + ph.setNum(rs.getLong("num")); + ph.setPowerId(rs.getInt("power_id")); + ph.setPowerName(rs.getString("power_name")); + ph.setAlmLevel(rs.getInt("alm_level")); + ph.setAlmStartTime(rs.getTimestamp("alm_start_time")); + ph.setAlmEndTime(rs.getTimestamp("alm_end_time")); + ph.setAlmValue(rs.getFloat("alm_value")); + ph.setAlmIsConfirmed(rs.getInt("alm_is_confirmed")); + ph.setAlmConfirmedTime(rs.getTimestamp("alm_confirmed_time")); + ph.setAlmClearedType(rs.getInt("alm_cleared_type")); + ph.setUsrId(rs.getInt("usr_Id")); + ph.setAlmTrigger(rs.getInt("alm_trigger")); + ph.setAlmSeverity(rs.getInt("alm_severity")); + ph.setStationName(rs.getString("station_name")); + ph.setProvice(rs.getString("provice")); + ph.setCity(rs.getString("city")); + ph.setCountry(rs.getString("country")); + list.add(ph); + } + return list; + } + }); + return list; + } + +} diff --git a/src/main/java/com/whyc/util/SubTablePageInfoUtil.java b/src/main/java/com/whyc/util/SubTablePageInfoUtil.java deleted file mode 100644 index 1b24f82..0000000 --- a/src/main/java/com/whyc/util/SubTablePageInfoUtil.java +++ /dev/null @@ -1,352 +0,0 @@ -//package com.whyc.util; -// -//import com.github.pagehelper.PageInfo; -//import com.whyc.constant.DevAlmEnum; -//import com.whyc.dto.DevA200AlarmDto; -//import com.whyc.factory.ThreadPoolExecutorFactory; -//import com.whyc.mapper.CommonMapper; -//import com.whyc.pojo.db_alarm.BattAlarmHistory; -//import com.whyc.pojo.db_alarm.DevLithiumAlarmDataYear; -//import com.whyc.pojo.db_lithium_ram_db.DevLithiumInf; -//import com.whyc.pojo.db_power_alarm.PowerAlarmHistory; -//import com.whyc.pojo.db_power_history.BattRealTimeDataHistory; -//import com.whyc.pojo.db_power_history.BattStationTempHistory; -//import com.whyc.pojo.db_power_history.PowerRealTimeDataHistory; -//import com.whyc.pojo.db_user.UserInf; -//import com.whyc.service.DevLithiumInfService; -//import com.whyc.service.SubTableService; -//import com.whyc.service.UserInfService; -//import org.springframework.beans.BeanUtils; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Component; -// -//import java.text.ParseException; -//import java.util.*; -//import java.util.concurrent.CountDownLatch; -//import java.util.concurrent.ThreadPoolExecutor; -//import java.util.regex.Pattern; -//import java.util.stream.Collectors; -// -///** -// * 鏁版嵁閲忔瀬澶х殑琛�,鎸夌収骞翠唤鍒嗚〃,鍒嗛〉鏌ヨ鏃惰幏鍙栨暟鎹� -// */ -//@Component -//public class SubTablePageInfoUtil { -// @Autowired(required = false) -// private CommonMapper commonMapper; -// -// @Autowired -// private SubTableService service; -// -// @Autowired -// private DevLithiumInfService devLithiumInfService; -// -// @Autowired -// private UserInfService userInfService; -// -// /**鎸夊勾浠借〃鍒嗛〉鏌ヨ*/ -// public PageInfo<Object> getPageInfo(int pageNum,int pageSize, -// Date startTime,Date endTime, -// String dbName,String tablePrefix, -// Object pojo) throws ParseException { -// Map<String, List<Date>> queryTimeForSubTables = DateUtil.getQueryTimeForSubTablesDescWithOutDefault(startTime, endTime); -// //鏌ヨ鍒嗚〃鏄惁瀛樺湪,瀛樺湪鍒欐煡璇㈢粨鏋� -// Map<String,Integer> queryCountMap = new LinkedHashMap<>(); -// Set<String> tableYearKeySet = queryTimeForSubTables.keySet(); -// for (String tableYear : tableYearKeySet) { -// List<Date> queryTime = queryTimeForSubTables.get(tableYear); -// -// //鏁板�� -// String tableName = tablePrefix+"_"+tableYear; -// boolean existTableName = commonMapper.existTable(dbName, tableName); -// if(!existTableName){ -// continue; -// } -// //====== 鏍规嵁涓嶅悓绫诲瀷绫诲瀷瀵硅薄瀵瑰簲璋冩暣 ====== -// if(pojo instanceof BattAlarmHistory) { -// BattAlarmHistory battAlarmHistory = new BattAlarmHistory(); -// BeanUtils.copyProperties(pojo, battAlarmHistory); -// battAlarmHistory.setAlmStartTime(queryTime.get(0)); -// battAlarmHistory.setAlmEndTime(queryTime.get(1)); -// battAlarmHistory.setRecordYear(tableName); -// int currentCount = service.getBattHisCount(battAlarmHistory); -// queryCountMap.put(tableYear, currentCount); -// } -// else if(pojo instanceof PowerAlarmHistory) { -// PowerAlarmHistory powerAlarmHistory = new PowerAlarmHistory(); -// BeanUtils.copyProperties(pojo, powerAlarmHistory); -// powerAlarmHistory.setAlmStartTime(queryTime.get(0)); -// powerAlarmHistory.setAlmEndTime(queryTime.get(1)); -// powerAlarmHistory.setRecordYear(tableName); -// int currentCount = service.getPowerHisCount(powerAlarmHistory); -// queryCountMap.put(tableYear, currentCount); -// } -// else if (pojo instanceof DevA200AlarmDto) { -// DevA200AlarmDto dto = (DevA200AlarmDto) pojo; -// dto.setStartTime(queryTime.get(0)); -// dto.setEndTime(queryTime.get(1)); -// dto.setTableName(tableName); -// int currentCount = service.getCountForDevAlm(dto); -// queryCountMap.put(tableYear, currentCount); -// } -// -// } -// -// //鍒嗛〉淇℃伅 -// //纭鎬婚〉鏁�,鎬昏褰曟暟 -// PageInfo<Object> pageInfo = new PageInfo<>(); -// -// int total = 0; -// Set<String> queryKeySet = queryCountMap.keySet(); -// for (String queryKey : queryKeySet) { -// int size = queryCountMap.get(queryKey); -// total+=size; -// } -// int pages = (int) Math.ceil(Float.parseFloat(String.valueOf(total))/pageSize); -// pageInfo.setTotal(total); -// pageInfo.setPages(pages); -// pageInfo.setPageNum(pageNum); -// pageInfo.setPageSize(pageSize); -// //鏍规嵁褰撳墠椤垫墍闇�璁板綍,鏌ヨ褰撳墠椤佃褰� -// int startNum = (pageNum-1)*pageSize+1; -// int endNum = pageNum*pageSize; -// -// //鏈�鍚庝竴涓畻娉�:涓婇潰涓嶅簲璇ュ厛鏌ヨ鎵�鏈夎褰�,搴旇鍙朿ount. 杩欏悗闈㈠畾浣嶅埌鍝釜琛ㄦ垨鍝嚑寮犺〃鍚�,閲囧彇limit鑾峰彇褰撳墠椤佃褰曟暟; -// //鏍煎紡:{琛ㄥ悕,[limit 2,20]} -// Map<String,List<Integer>> tableAndLimitMap = MathUtil.getQueryTableAndLimit(startNum,endNum,pageSize,queryCountMap); -// Set<String> keySet = tableAndLimitMap.keySet(); -// List<Object> dataList = new LinkedList<>(); -// for (String key : keySet) { -// List<Date> queryTime = queryTimeForSubTables.get(key); -// //====== 鏍规嵁涓嶅悓绫诲瀷绫诲瀷瀵硅薄瀵瑰簲璋冩暣 ====== -// String recordYear = tablePrefix + "_" + key; -// if(pojo instanceof BattAlarmHistory) { -// BattAlarmHistory battAlarmHistory = new BattAlarmHistory(); -// BeanUtils.copyProperties(pojo, battAlarmHistory); -// battAlarmHistory.setAlmStartTime(queryTime.get(0)); -// battAlarmHistory.setAlmEndTime(queryTime.get(1)); -// battAlarmHistory.setRecordYear(recordYear); -// List<Integer> limitList = tableAndLimitMap.get(key); -// battAlarmHistory.setLimitStart(limitList.get(0)); -// battAlarmHistory.setLimitEnd(limitList.get(1)); -// List<BattAlarmHistory> list = service.getBattHisList(battAlarmHistory); -// dataList.addAll(list); -// } -// else if(pojo instanceof PowerAlarmHistory) { -// PowerAlarmHistory powerAlarmHistory = new PowerAlarmHistory(); -// BeanUtils.copyProperties(pojo, powerAlarmHistory); -// powerAlarmHistory.setAlmStartTime(queryTime.get(0)); -// powerAlarmHistory.setAlmEndTime(queryTime.get(1)); -// powerAlarmHistory.setRecordYear(recordYear); -// List<Integer> limitList = tableAndLimitMap.get(key); -// powerAlarmHistory.setLimitStart(limitList.get(0)); -// powerAlarmHistory.setLimitEnd(limitList.get(1)); -// List<PowerAlarmHistory> list = service.getPowerHisList(powerAlarmHistory); -// dataList.addAll(list); -// } -// else if (pojo instanceof DevA200AlarmDto) { -// if(!key.equals("default")){ -// DevA200AlarmDto dto = (DevA200AlarmDto) pojo; -// dto.setStartTime(queryTime.get(0)); -// dto.setEndTime(queryTime.get(1)); -// List<Integer> limitList = tableAndLimitMap.get(key); -// dto.setLimitStart(limitList.get(0)); -// dto.setLimitEnd(limitList.get(1)); -// dto.setTableName(recordYear); -// List<DevLithiumAlarmDataYear> list = service.getListDevAlm(dto); -// for (DevLithiumAlarmDataYear year:list) { -// int devId=year.getDevId(); -// int uid=year.getConfirmedUid(); -// DevLithiumInf dinf=devLithiumInfService.getDinfByDevId(devId); -// UserInf uinf= userInfService.getUinfByUId(uid); -// int almId=year.getAlmId(); -// String almName= DevAlmEnum.getValue(almId); -// year.setAlmName(almName!=null?almName:""); -// year.setDevInf(dinf); -// year.setConfirmedUname(uinf!=null?uinf.getUname():""); -// } -// dataList.addAll(list); -// } -// } -// } -// pageInfo.setList(dataList); -// return pageInfo; -// } -// -// /**鎸夋湀鍒嗚〃,鍒嗛〉鏌ヨ*/ -// public PageInfo<Object> getPageInfoByMonthTable(int pageNum, int pageSize, -// Date startTime, Date endTime, -// String dbName, String tablePrefix, -// Object pojo) throws ParseException, InterruptedException { -// Map<String, List<Date>> queryTimeForSubTables = DateUtil.getQueryTimeForSubTablesByMonthDesc2(startTime, endTime); -// //鏌ヨ鍒嗚〃鏄惁瀛樺湪,瀛樺湪鍒欐煡璇㈢粨鏋� -// Map<String,Integer> queryCountMap = new LinkedHashMap<>(); -// Set<String> tableYearKeySet = queryTimeForSubTables.keySet(); -// //浼樺寲1-鏌ヨ鎵�鏈夌殑绗﹀悎鏈堜唤瑙勫垯鐨勮〃鍜屼富琛� -// List<String> tableNameListDB = getTableList(dbName, tablePrefix, tablePrefix + "(_[0-9]{4}_[0-9]{2})?"); -// List<String> tableYearListInDB = new LinkedList<>(); //鏌ヨ鏃堕棿娈靛唴鐨勫勾鏈堝垎琛ㄩ泦鍚堜笖鍦ㄦ暟鎹簱涓瓨鍦� -// //杩囨护鎺夋椂闂存鍐呮暟鎹簱涓笉瀛樺湪鐨勫勾鏈堝垎琛� -// for (String tableYear : tableYearKeySet) { -// String tableName; -// if(!tableYear.equals("default")){ -// //鏁板�� -// tableName = tablePrefix+"_"+tableYear; -// //String existTableName = commonMapper.existTable(dbName, tableName); -// if(!tableNameListDB.contains(tableName)){ //浼樺寲1-鏁版嵁搴撲腑涓嶅瓨鍦�,鍘婚櫎澶氭鏌ヨ〃,涓�娆℃煡鍑� -// continue; -// } -// } -// tableYearListInDB.add(tableYear); -// } -// //鏌ヨ骞存湀鍒嗚〃鐨勮褰曟暟 -// //浼樺寲2:澶氱嚎绋嬭鍙� -// ThreadPoolExecutor pool = ThreadPoolExecutorFactory.getPoolExecutor(); -// CountDownLatch latch = new CountDownLatch(tableYearListInDB.size()); -// for (String tableYear : tableYearListInDB) { -// List<Date> queryTime = queryTimeForSubTables.get(tableYear); -// -// String tableName; -// if(!tableYear.equals("default")){ -// //鏁板�� -// tableName = tablePrefix+"_"+tableYear; -// }else{ -// tableName = tablePrefix; -// } -// pool.execute(()-> { -// //====== 鏍规嵁涓嶅悓绫诲瀷绫诲瀷瀵硅薄瀵瑰簲璋冩暣 ====== -// if (pojo instanceof BattAlarmHistory) { -// BattAlarmHistory battAlarmHistory = new BattAlarmHistory(); -// BeanUtils.copyProperties(pojo, battAlarmHistory); -// battAlarmHistory.setAlmStartTime(queryTime.get(0)); -// battAlarmHistory.setAlmEndTime(queryTime.get(1)); -// battAlarmHistory.setRecordYear(tableName); -// int currentCount = service.getBattHisCount(battAlarmHistory); -// queryCountMap.put(tableYear, currentCount); -// } -// else if (pojo instanceof BattStationTempHistory) { -// BattStationTempHistory tempHistory = new BattStationTempHistory(); -// tempHistory.setStartTime(queryTime.get(0)); -// tempHistory.setEndTime(queryTime.get(1)); -// tempHistory.setRecordYearMonth(tableName); -// int currentCount = service.getBattStationTempHisCount(tempHistory); -// queryCountMap.put(tableYear, currentCount); -// } -// else if (pojo instanceof BattRealTimeDataHistory) { -// BattRealTimeDataHistory tempHistory = new BattRealTimeDataHistory(); -// tempHistory.setStartTime(queryTime.get(0)); -// tempHistory.setEndTime(queryTime.get(1)); -// tempHistory.setRecordYearMonth(tableName); -// int currentCount = service.getBattRealTimeDataHisCount(tempHistory); -// queryCountMap.put(tableYear, currentCount); -// } -// else if (pojo instanceof PowerRealTimeDataHistory) { -// PowerRealTimeDataHistory tempHistory = new PowerRealTimeDataHistory(); -// tempHistory.setStartTime(queryTime.get(0)); -// tempHistory.setEndTime(queryTime.get(1)); -// tempHistory.setRecordYearMonth(tableName); -// int currentCount = service.getPowerRealTimeDataHisCount(tempHistory); -// queryCountMap.put(tableYear, currentCount); -// } -// -// latch.countDown(); -// }); -// } -// latch.await(); -// //鍥犱负澶氱嚎绋嬪悗鏃犲簭,闇�瑕侀噸鎺掑簭 -// List<String> keySetDesc = queryCountMap.keySet().stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); -// Map<String,Integer> queryCountMapDesc = new LinkedHashMap<>(); -// for (String key : keySetDesc) { -// Integer count = queryCountMap.get(key); -// queryCountMapDesc.put(key,count); -// } -// //鍒嗛〉淇℃伅 -// //纭鎬婚〉鏁�,鎬昏褰曟暟 -// PageInfo<Object> pageInfo = new PageInfo<>(); -// int total = 0; -// Set<String> queryKeySet = queryCountMap.keySet(); -// for (String queryKey : queryKeySet) { -// int size = queryCountMap.get(queryKey); -// total+=size; -// } -// int pages = (int) Math.ceil(Float.parseFloat(String.valueOf(total))/pageSize); -// pageInfo.setTotal(total); -// pageInfo.setPages(pages); -// pageInfo.setPageNum(pageNum); -// pageInfo.setPageSize(pageSize); -// //鏍规嵁褰撳墠椤垫墍闇�璁板綍,鏌ヨ褰撳墠椤佃褰� -// int startNum = (pageNum-1)*pageSize+1; -// int endNum = pageNum*pageSize; -// -// //鏈�鍚庝竴涓畻娉�:涓婇潰涓嶅簲璇ュ厛鏌ヨ鎵�鏈夎褰�,搴旇鍙朿ount. 杩欏悗闈㈠畾浣嶅埌鍝釜琛ㄦ垨鍝嚑寮犺〃鍚�,閲囧彇limit鑾峰彇褰撳墠椤佃褰曟暟; -// //鏍煎紡:{琛ㄥ悕,[limit 2,20]} -// Map<String,List<Integer>> tableAndLimitMap = MathUtil.getQueryTableAndLimit(startNum,endNum,pageSize,queryCountMapDesc); -// Set<String> keySet = tableAndLimitMap.keySet(); -// List<Object> dataList = new LinkedList<>(); -// for (String key : keySet) { -// List<Date> queryTime = queryTimeForSubTables.get(key); -// //====== 鏍规嵁涓嶅悓绫诲瀷绫诲瀷瀵硅薄瀵瑰簲璋冩暣 ====== -// String recordYear = key.equals("default") ? tablePrefix : tablePrefix + "_" + key; -// if(pojo instanceof BattAlarmHistory) { -// BattAlarmHistory battAlarmHistory = new BattAlarmHistory(); -// BeanUtils.copyProperties(pojo, battAlarmHistory); -// battAlarmHistory.setAlmStartTime(queryTime.get(0)); -// battAlarmHistory.setAlmEndTime(queryTime.get(1)); -// battAlarmHistory.setRecordYear(recordYear); -// List<Integer> limitList = tableAndLimitMap.get(key); -// battAlarmHistory.setLimitStart(limitList.get(0)); -// battAlarmHistory.setLimitEnd(limitList.get(1)); -// List<BattAlarmHistory> list = service.getBattHisList(battAlarmHistory); -// dataList.addAll(list); -// } -// else if (pojo instanceof BattStationTempHistory){ -// BattStationTempHistory tempHistory = new BattStationTempHistory(); -// tempHistory.setStartTime(queryTime.get(0)); -// tempHistory.setEndTime(queryTime.get(1)); -// tempHistory.setRecordYearMonth(recordYear); -// List<Integer> limitList = tableAndLimitMap.get(key); -// tempHistory.setLimitStart(limitList.get(0)); -// tempHistory.setLimitEnd(limitList.get(1)); -// List<BattStationTempHistory> list = service.getBattStationTempHisList(tempHistory); -// dataList.addAll(list); -// } -// else if (pojo instanceof BattRealTimeDataHistory){ -// BattRealTimeDataHistory tempHistory = new BattRealTimeDataHistory(); -// tempHistory.setStartTime(queryTime.get(0)); -// tempHistory.setEndTime(queryTime.get(1)); -// tempHistory.setRecordYearMonth(recordYear); -// List<Integer> limitList = tableAndLimitMap.get(key); -// tempHistory.setLimitStart(limitList.get(0)); -// tempHistory.setLimitEnd(limitList.get(1)); -// List<BattRealTimeDataHistory> list = service.getBattRealTimeDataHisList(tempHistory); -// dataList.addAll(list); -// } -// else if (pojo instanceof PowerRealTimeDataHistory){ -// PowerRealTimeDataHistory tempHistory = new PowerRealTimeDataHistory(); -// tempHistory.setStartTime(queryTime.get(0)); -// tempHistory.setEndTime(queryTime.get(1)); -// tempHistory.setRecordYearMonth(recordYear); -// List<Integer> limitList = tableAndLimitMap.get(key); -// tempHistory.setLimitStart(limitList.get(0)); -// tempHistory.setLimitEnd(limitList.get(1)); -// List<PowerRealTimeDataHistory> list = service.getPowerRealTimeDataHisList(tempHistory); -// dataList.addAll(list); -// } -// } -// pageInfo.setList(dataList); -// return pageInfo; -// -// } -// -// /**鏌ヨ鏄惁鍖呭惈鐗瑰畾瑙勫垯鐨勮〃,瀛樺湪,鍒欒繑鍥炶〃鍚�*/ -// public List<String> getTableList(String dbName,String tableLike,String regex){ -// List<String> resultTableList = new LinkedList<>(); -// List<String> tableList = commonMapper.getTableListLike(dbName,tableLike); -// for (String tableName : tableList) { -// boolean matches = Pattern.matches(regex, tableName); -// if(matches){ -// resultTableList.add(tableName); -// } -// } -// return resultTableList; -// } -//} \ No newline at end of file diff --git a/src/main/java/com/whyc/util/SubTablePageInfoUtils.java b/src/main/java/com/whyc/util/SubTablePageInfoUtils.java new file mode 100644 index 0000000..2ec9399 --- /dev/null +++ b/src/main/java/com/whyc/util/SubTablePageInfoUtils.java @@ -0,0 +1,322 @@ +package com.whyc.util; + +import com.github.pagehelper.PageInfo; +import com.whyc.dto.AlmHis.BattAlarmRes; +import com.whyc.dto.AlmHis.BattAlmPar; +import com.whyc.dto.AlmHis.DevAlmPar; +import com.whyc.dto.AlmHis.PwrAlmPar; +import com.whyc.factory.ThreadPoolExecutorFactory; +import com.whyc.mapper.CommonMapper; +import com.whyc.pojo.db_alarm.BattalarmDataHistory; +import com.whyc.pojo.db_alarm.DevalarmDataHistory; +import com.whyc.pojo.db_pwrdev_alarm.PwrdevAlarmHistory; +import com.whyc.service.SubTablePageInfoService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.util.*; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +/** + * 鏁版嵁閲忔瀬澶х殑琛�,鎸夌収骞翠唤鍒嗚〃,鍒嗛〉鏌ヨ鏃惰幏鍙栨暟鎹� + */ +@Component +public class SubTablePageInfoUtils { + + @Resource + private CommonMapper commonMapper; + + @Autowired + private SubTablePageInfoService subService; + + /**鎸夊勾浠借〃鍒嗛〉鏌ヨ*/ + public PageInfo<Object> getPageInfo(int pageNum,int pageSize, + Date startTime,Date endTime, + String dbName,String tablePrefix, + Object pojo) throws ParseException { + Map<String, List<Date>> queryTimeForSubTables = DateUtil.getQueryTimeForSubTablesDesc(startTime, endTime); + //鏌ヨ鍒嗚〃鏄惁瀛樺湪,瀛樺湪鍒欐煡璇㈢粨鏋� + Map<String,Integer> queryCountMap = new LinkedHashMap<>(); + Set<String> tableYearKeySet = queryTimeForSubTables.keySet(); + for (String tableYear : tableYearKeySet) { + List<Date> queryTime = queryTimeForSubTables.get(tableYear); + + String tableName; + if(!tableYear.equals("default")){ + //鏁板�� + tableName = tablePrefix+"_"+tableYear; + String existTableName = commonMapper.existTable(dbName, tableName); + if(existTableName == null){ + continue; + } + }else{ + tableName = tablePrefix; + } + //====== 鏍规嵁涓嶅悓绫诲瀷绫诲瀷瀵硅薄瀵瑰簲璋冩暣 ====== + if(pojo instanceof PwrAlmPar) { + PwrAlmPar param = (PwrAlmPar) pojo; + param.setAlmStartTime(queryTime.get(0)); + param.setAlmEndTime(queryTime.get(1)); + param.setRecordYear(tableName); + int currentCount = subService.getPwrAlmHisCount(param); + queryCountMap.put(tableYear, currentCount); + } + } + + //鍒嗛〉淇℃伅 + //纭鎬婚〉鏁�,鎬昏褰曟暟 + PageInfo<Object> pageInfo = new PageInfo<>(); + + int total = 0; + Set<String> queryKeySet = queryCountMap.keySet(); + for (String queryKey : queryKeySet) { + int size = queryCountMap.get(queryKey); + total+=size; + } + int pages = (int) Math.ceil(Float.parseFloat(String.valueOf(total))/pageSize); + pageInfo.setTotal(total); + pageInfo.setPages(pages); + pageInfo.setPageNum(pageNum); + pageInfo.setPageSize(pageSize); + //鏍规嵁褰撳墠椤垫墍闇�璁板綍,鏌ヨ褰撳墠椤佃褰� + int startNum = (pageNum-1)*pageSize+1; + int endNum = pageNum*pageSize; + + //鏈�鍚庝竴涓畻娉�:涓婇潰涓嶅簲璇ュ厛鏌ヨ鎵�鏈夎褰�,搴旇鍙朿ount. 杩欏悗闈㈠畾浣嶅埌鍝釜琛ㄦ垨鍝嚑寮犺〃鍚�,閲囧彇limit鑾峰彇褰撳墠椤佃褰曟暟; + //鏍煎紡:{琛ㄥ悕,[limit 2,20]} + Map<String,List<Integer>> tableAndLimitMap = MathUtil.getQueryTableAndLimit(startNum,endNum,pageSize,queryCountMap); + Set<String> keySet = tableAndLimitMap.keySet(); + List<Object> dataList = new LinkedList<>(); + for (String key : keySet) { + List<Date> queryTime = queryTimeForSubTables.get(key); + //====== 鏍规嵁涓嶅悓绫诲瀷绫诲瀷瀵硅薄瀵瑰簲璋冩暣 ====== + String recordYear = key.equals("default") ? tablePrefix : tablePrefix + "_" + key; + + + if (pojo instanceof PwrAlmPar) { + PwrAlmPar data = (PwrAlmPar) pojo; + data.setAlmStartTime(queryTime.get(0)); + data.setAlmEndTime(queryTime.get(1)); + List<Integer> limitList = tableAndLimitMap.get(key); + data.setLimitStart(limitList.get(0)); + data.setLimitEnd(limitList.get(1)); + data.setRecordYear(recordYear); + List<PwrdevAlarmHistory> list= subService.getPwrAlmHisList(data); + dataList.addAll(list); + } + + } + pageInfo.setList(dataList); + return pageInfo; + } + /**鎸夋湀鍒嗚〃,鍒嗛〉鏌ヨ*/ + public PageInfo<Object> getPageInfoByMonthTable(int pageNum,int pageSize, + Date startTime,Date endTime, + String dbName,String tablePrefix, + Object pojo) throws ParseException, InterruptedException { + Map<String, List<Date>> queryTimeForSubTables = DateUtil.getQueryTimeForSubTablesByMonthDesc(startTime, endTime); + //鏌ヨ鍒嗚〃鏄惁瀛樺湪,瀛樺湪鍒欐煡璇㈢粨鏋� + Map<String,Integer> queryCountMap = new LinkedHashMap<>(); + Set<String> tableYearKeySet = queryTimeForSubTables.keySet(); + //浼樺寲1-鏌ヨ鎵�鏈夌殑绗﹀悎鏈堜唤瑙勫垯鐨勮〃鍜屼富琛� + List<String> tableNameListDB = getTableList(dbName, tablePrefix, tablePrefix + "(_[0-9]{4}_[0-9]{2})?"); + List<String> tableYearListInDB = new LinkedList<>(); //鏌ヨ鏃堕棿娈靛唴鐨勫勾鏈堝垎琛ㄩ泦鍚堜笖鍦ㄦ暟鎹簱涓瓨鍦� + //杩囨护鎺夋椂闂存鍐呮暟鎹簱涓笉瀛樺湪鐨勫勾鏈堝垎琛� + for (String tableYear : tableYearKeySet) { + + String tableName; + if(!tableYear.equals("default")){ + //鏁板�� + tableName = tablePrefix+"_"+tableYear; + //String existTableName = commonMapper.existTable(dbName, tableName); + if(!tableNameListDB.contains(tableName)){ //浼樺寲1-鏁版嵁搴撲腑涓嶅瓨鍦�,鍘婚櫎澶氭鏌ヨ〃,涓�娆℃煡鍑� + continue; + } + } + tableYearListInDB.add(tableYear); + } + //鏌ヨ骞存湀鍒嗚〃鐨勮褰曟暟 + //浼樺寲2:澶氱嚎绋嬭鍙� + ThreadPoolExecutor pool = ThreadPoolExecutorFactory.getPoolExecutor(); + CountDownLatch latch = new CountDownLatch(tableYearListInDB.size()); + for (String tableYear : tableYearListInDB) { + List<Date> queryTime = queryTimeForSubTables.get(tableYear); + + String tableName; + if(!tableYear.equals("default")){ + //鏁板�� + tableName = tablePrefix+"_"+tableYear; + }else{ + tableName = tablePrefix; + } + pool.execute(()-> { + + //====== 鏍规嵁涓嶅悓绫诲瀷绫诲瀷瀵硅薄瀵瑰簲璋冩暣 ====== + if (pojo instanceof BattAlmPar) { //鐢垫睜鍛婅鍘嗗彶 + BattAlmPar param = new BattAlmPar(); + BeanUtils.copyProperties(pojo,param); + param.setAlmStartTime(queryTime.get(0)); + param.setAlmEndTime(queryTime.get(1)); + param.setRecordYear(tableName); + int currentCount = subService.getBattAlmHisCount(param); + queryCountMap.put(tableYear, currentCount); + } + else if (pojo instanceof DevAlmPar) { + DevAlmPar param = new DevAlmPar(); + BeanUtils.copyProperties(pojo,param); + param.setAlmStartTime(queryTime.get(0)); + param.setAlmEndTime(queryTime.get(1)); + param.setRecordYear(tableName); + int currentCount = subService.getDevAlmHisCount(param); + queryCountMap.put(tableYear, currentCount); + + } + + latch.countDown(); + }); + } + latch.await(); + //鍥犱负澶氱嚎绋嬪悗鏃犲簭,闇�瑕侀噸鎺掑簭 + List<String> keySetDesc = queryCountMap.keySet().stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); + Map<String,Integer> queryCountMapDesc = new LinkedHashMap<>(); + for (String key : keySetDesc) { + Integer count = queryCountMap.get(key); + queryCountMapDesc.put(key,count); + } + //鍒嗛〉淇℃伅 + //纭鎬婚〉鏁�,鎬昏褰曟暟 + PageInfo<Object> pageInfo = new PageInfo<>(); + + int total = 0; + Set<String> queryKeySet = queryCountMap.keySet(); + for (String queryKey : queryKeySet) { + int size = queryCountMap.get(queryKey); + total+=size; + } + int pages = (int) Math.ceil(Float.parseFloat(String.valueOf(total))/pageSize); + pageInfo.setTotal(total); + pageInfo.setPages(pages); + pageInfo.setPageNum(pageNum); + pageInfo.setPageSize(pageSize); + //鏍规嵁褰撳墠椤垫墍闇�璁板綍,鏌ヨ褰撳墠椤佃褰� + int startNum = (pageNum-1)*pageSize+1; + int endNum = pageNum*pageSize; + + //鏈�鍚庝竴涓畻娉�:涓婇潰涓嶅簲璇ュ厛鏌ヨ鎵�鏈夎褰�,搴旇鍙朿ount. 杩欏悗闈㈠畾浣嶅埌鍝釜琛ㄦ垨鍝嚑寮犺〃鍚�,閲囧彇limit鑾峰彇褰撳墠椤佃褰曟暟; + //鏍煎紡:{琛ㄥ悕,[limit 2,20]} + Map<String,List<Integer>> tableAndLimitMap = MathUtil.getQueryTableAndLimit(startNum,endNum,pageSize,queryCountMapDesc); + Set<String> keySet = tableAndLimitMap.keySet(); + List<Object> dataList = new LinkedList<>(); + for (String key : keySet) { + List<Date> queryTime = queryTimeForSubTables.get(key); + //====== 鏍规嵁涓嶅悓绫诲瀷绫诲瀷瀵硅薄瀵瑰簲璋冩暣 ====== + String recordYear = key.equals("default") ? tablePrefix : tablePrefix + "_" + key; + if (pojo instanceof BattAlmPar) { + BattAlmPar data = (BattAlmPar) pojo; + data.setAlmStartTime(queryTime.get(0)); + data.setAlmEndTime(queryTime.get(1)); + + List<Integer> limitList = tableAndLimitMap.get(key); + data.setLimitStart(limitList.get(0)); + data.setLimitEnd(limitList.get(1)); + data.setRecordYear(recordYear); + List<BattAlarmRes> list = subService.getBattAlmHisList(data); + dataList.addAll(list); + } + else if (pojo instanceof DevAlmPar) { + DevAlmPar data = (DevAlmPar) pojo; + data.setAlmStartTime(queryTime.get(0)); + data.setAlmEndTime(queryTime.get(1)); + + List<Integer> limitList = tableAndLimitMap.get(key); + data.setLimitStart(limitList.get(0)); + data.setLimitEnd(limitList.get(1)); + data.setRecordYear(recordYear); + List<DevalarmDataHistory> list = subService.getDevAlmHisList(data); + dataList.addAll(list); + } + + + } + pageInfo.setList(dataList); + return pageInfo; + } + + /**鏌ヨ鏄惁鍖呭惈鐗瑰畾瑙勫垯鐨勮〃,瀛樺湪,鍒欒繑鍥炶〃鍚�*/ + public List<String> getTableList(String dbName,String tableLike,String regex){ + List<String> resultTableList = new LinkedList<>(); + List<String> tableList = commonMapper.getTableListLike(dbName,tableLike); + for (String tableName : tableList) { + boolean matches = Pattern.matches(regex, tableName); + if(matches){ + resultTableList.add(tableName); + } + } + return resultTableList; + } + + /* *//**鎵�鏈夎褰曞垎涓哄洓绾ф煡璇釜鏁�*//* + public List<Integer> getLevelList(int uId,String dbName,String tableLike,String regex,List<Integer> almTypes ){ + List<Integer> result = new LinkedList<>(); + List<String> tableList = getTableList(dbName, tableLike, regex); + List<Integer> levelList = new LinkedList(); + for (String tableName : tableList) { + List<BattalarmDataHistory> levelInfoSubList; + List<Integer> levelSubList; + if(tableLike.equals("tb_battalarm_data_history")) { + //levelInfoSubList = battAlarmDataHistoryMapper.getLevelSubList(uId, tableName); + levelInfoSubList = subService.getLevelSubList_batt(uId, tableName); + } + else if(tableLike.equals("tb_devalarm_data_history")){ + //levelInfoSubList = devAlarmDataHistoryMapper.getLevelSubList(uId, tableName); + levelInfoSubList = subService.getLevelSubList_dev(uId, tableName); + } + else{ + //levelInfoSubList = powerAlarmHistoryMapper.getLevelSubList(uId, tableName,almTypes); + levelInfoSubList = subService.getLevelSubList_pwr(uId, tableName,almTypes); + } + levelSubList = levelInfoSubList.stream().map(BattalarmDataHistory::getAlmLevel).collect(Collectors.toList()); + levelList.addAll(levelSubList); + } + //鍒嗕负鍥涚骇鏌ヨ涓暟 + Map<Integer, List<Integer>> levelMap = levelList.stream().collect(Collectors.groupingBy(Integer::intValue)); + Set<Integer> levelSet = levelMap.keySet(); + List<Integer> listOfLevelSet = new LinkedList(); + //琛ラ綈1,2,3,4鍥涚骇 + listOfLevelSet.add(1); + listOfLevelSet.add(2); + listOfLevelSet.add(3); + listOfLevelSet.add(4); + if(!levelSet.contains(1)){ + levelMap.put(1,new LinkedList<>()); + } + if(!levelSet.contains(2)){ + levelMap.put(2,new LinkedList<>()); + } + if(!levelSet.contains(3)){ + levelMap.put(3,new LinkedList<>()); + } + if(!levelSet.contains(4)){ + levelMap.put(4,new LinkedList<>()); + } + //寰呮祴璇� + for (Integer level : listOfLevelSet) { + result.add(levelMap.get(level).size()); + } + return result; + } +*/ + public static void main(String[] args) { + //String regex = "tb_battalarm_data_history_?[0-9]*"; + String regex = "tb_battalarm_data_history(_[0-9]{4}_[0-9]{2})?"; + //String table = "tb_battalarm_data_history"; + String table = "tb_battalarm_data_history_0222_04"; + System.out.println(Pattern.matches(regex,table)); + } +} diff --git a/src/main/resources/mapper/CommonMapper.xml b/src/main/resources/mapper/CommonMapper.xml index 1b5bc97..8a2a3b5 100644 --- a/src/main/resources/mapper/CommonMapper.xml +++ b/src/main/resources/mapper/CommonMapper.xml @@ -6,7 +6,7 @@ <select id="getMaxValue" resultType="java.lang.Object"> select max(${field}) from ${schema}.${table} </select> - <select id="existTable" resultType="java.lang.Boolean"> + <select id="existTable" resultType="java.lang.String"> select table_name from `INFORMATION_SCHEMA`.`TABLES` -- Gitblit v1.9.1