src/main/java/com/whyc/controller/RealContoller.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/dto/Real/RealDateDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/db_data_history/BattRealdataId.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/BattRealdataIdService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/SubTablePageInfoService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/controller/RealContoller.java
@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.text.ParseException; @RestController @Api(tags = "实时页面") @RequestMapping("real") @@ -52,10 +54,18 @@ public Response getBattTinf(@RequestParam Integer battgroupId){ return tinfService.getBattTinf(battgroupId); } @ApiOperation(value = "历史测试记录具体某一次放电数据详情") @GetMapping("getTinfDataWithTestRecordCount") public Response getTinfDataWithTestRecordCount(@RequestParam Integer battgroupId,@RequestParam Integer testRecordCount ,@RequestParam Integer recordNum,@RequestParam Integer granularity){ return tdataIdService.getTinfDataWithTestRecordCount(battgroupId,testRecordCount,recordNum,granularity); } @ApiOperation(value = "历史实时查询") @GetMapping("getBattRealDataHis") public Response getBattRealDataHis(@RequestParam Integer battgroupId,@RequestParam Integer granularity ,@RequestParam String startTime,@RequestParam String endTime) throws ParseException, InterruptedException { return battRealdataIdService.getBattRealDataHis(battgroupId,granularity,startTime,endTime); } } src/main/java/com/whyc/dto/Real/RealDateDTO.java
New file @@ -0,0 +1,30 @@ package com.whyc.dto.Real; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; @Data @AllArgsConstructor @NoArgsConstructor public class RealDateDTO { @ApiModelProperty(value = "记录时间") private Date recordTime; @ApiModelProperty(value = "组端电压") private Float groupVol; @ApiModelProperty(value = "在线电压") private Float onlineVol; @ApiModelProperty(value = "组端电流") private Float groupCurr; @ApiModelProperty(value = "单体电压") private Float monVol; @ApiModelProperty(value = "单体温度") private Float monTmp; @ApiModelProperty(value = "单体内阻") private Float monRes; @ApiModelProperty(value = "单体编号") private Integer monNum; } src/main/java/com/whyc/pojo/db_data_history/BattRealdataId.java
@@ -1,6 +1,7 @@ package com.whyc.pojo.db_data_history; 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 com.fasterxml.jackson.annotation.JsonFormat; @@ -38,6 +39,11 @@ @ApiModelProperty(value = "记录时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai") private Date recordTime; @ApiModelProperty(value = "记录时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai") @TableField(exist = false) private Date recordTime1; @ApiModelProperty(value = "组端电压") private Float groupVol; @@ -90,5 +96,8 @@ @ApiModelProperty(value = "备注") private String note; @TableField(exist = false) private String tableName; } src/main/java/com/whyc/service/BattRealdataIdService.java
@@ -3,20 +3,28 @@ import com.whyc.dto.Real.BattHisRealDto; import com.whyc.dto.Real.CompareDto; import com.whyc.dto.Real.QuarterDto; import com.whyc.dto.Real.RealDateDTO; import com.whyc.dto.Response; import com.whyc.factory.ThreadPoolExecutorFactory; import com.whyc.mapper.CommonMapper; import com.whyc.pojo.db_batt_testdata.BattresdataId; import com.whyc.pojo.db_batt_testdata.BattresdataInf; import com.whyc.pojo.db_data_history.BattRealdataId; import com.whyc.pojo.db_station.BattInf; import com.whyc.util.ActionUtil; import com.whyc.util.DateUtil; import com.whyc.util.ThreadLocalUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.HashMap; import java.util.List; import java.text.ParseException; import java.util.*; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import static java.lang.Thread.sleep; @Service public class BattRealdataIdService { @@ -163,4 +171,36 @@ List<BattHisRealDto> datalist=subTablePageInfoService.getHalfHourBattDevData(tableName,granularity); return new Response().setII(1,datalist.size()>0,datalist,"获取半小时内核容设备信息"); } //历史实时数据 public Response getBattRealDataHis(Integer battgroupId, Integer granularity,String startTime,String endTime) throws ParseException, InterruptedException { List<RealDateDTO> dataList = new LinkedList<>(); List<List<Date>> monthTimeList = DateUtil.getMonthTime(ThreadLocalUtil.parse(startTime,1), ThreadLocalUtil.parse(endTime,1)); 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) { list = subTablePageInfoService.serchByCondition2(realdata,granularity); } 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); } } src/main/java/com/whyc/service/SubTablePageInfoService.java
@@ -688,4 +688,68 @@ }); return list; } //判断历史实时表是否存在 public int judgeTable_realdata( String table){ String sql="select count(*) as tableNum " + " from INFORMATION_SCHEMA.TABLES " + " where TABLE_SCHEMA = 'db_data_history' " + " and TABLE_NAME = 'tb_batt_realdata_"+table+"'"; 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("tableNum")); } catch (SQLException e) { e.printStackTrace(); } return temp; } }); int tableNum =0; if(list!=null){ tableNum= (int) list.get(0); } return tableNum; } public List<RealDateDTO> serchByCondition2(BattRealdataId realdata, int granularity) { String sql=" select record_time, " + " group_vol, " + " online_vol, " + " group_curr, " + " mon_vol, " + " mon_tmp, " + " mon_res, " + " mon_num " + " from (select a.*, (@i:= @i+1) as number " + " from (select * " + " from db_data_history.tb_batt_realdata_"+realdata.getTableName()+" " + " where record_time >= '"+ThreadLocalUtil.format(realdata.getRecordTime(),1)+"' " + " and record_time <= '"+ThreadLocalUtil.format(realdata.getRecordTime1(),1)+"' ) a, " + " (select @i:=0) b) c " + " where c.number%"+granularity+"=0"; List<RealDateDTO> list = sqlExecuteService.executeQuery_call(sql, new CallBack() { @Override public List getResults(ResultSet rs) throws SQLException { List<RealDateDTO> list=new ArrayList<>(); while (rs.next()){ RealDateDTO ph=new RealDateDTO(); ph.setRecordTime(rs.getTimestamp("record_time")); ph.setGroupVol(rs.getFloat("group_vol")); ph.setOnlineVol(rs.getFloat("online_vol")); ph.setGroupCurr(rs.getFloat("group_curr")); ph.setMonVol(rs.getFloat("mon_vol")); ph.setMonTmp(rs.getFloat("mon_tmp")); ph.setMonRes(rs.getFloat("mon_res")); ph.setMonNum(rs.getInt("mon_num")); list.add(ph); } return list; } }); return list; } }