From 8dd6db3f6fd9d92ba8c26dbd91f8764f4623e3e0 Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期五, 06 六月 2025 17:23:05 +0800 Subject: [PATCH] 历史实时测试数据 --- src/main/java/com/whyc/service/SubTablePageInfoService.java | 64 +++++++++++++++++++++ src/main/java/com/whyc/dto/Real/RealDateDTO.java | 30 ++++++++++ src/main/java/com/whyc/service/BattRealdataIdService.java | 52 +++++++++++++++-- src/main/java/com/whyc/controller/RealContoller.java | 10 +++ src/main/java/com/whyc/pojo/db_data_history/BattRealdataId.java | 9 +++ 5 files changed, 159 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/whyc/controller/RealContoller.java b/src/main/java/com/whyc/controller/RealContoller.java index b2e43f3..356358e 100644 --- a/src/main/java/com/whyc/controller/RealContoller.java +++ b/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); + } } \ No newline at end of file diff --git a/src/main/java/com/whyc/dto/Real/RealDateDTO.java b/src/main/java/com/whyc/dto/Real/RealDateDTO.java new file mode 100644 index 0000000..be0cb5a --- /dev/null +++ b/src/main/java/com/whyc/dto/Real/RealDateDTO.java @@ -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; +} diff --git a/src/main/java/com/whyc/pojo/db_data_history/BattRealdataId.java b/src/main/java/com/whyc/pojo/db_data_history/BattRealdataId.java index c91f050..adbcde9 100644 --- a/src/main/java/com/whyc/pojo/db_data_history/BattRealdataId.java +++ b/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; + } diff --git a/src/main/java/com/whyc/service/BattRealdataIdService.java b/src/main/java/com/whyc/service/BattRealdataIdService.java index dcf709e..cf13d1a 100644 --- a/src/main/java/com/whyc/service/BattRealdataIdService.java +++ b/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); + + } } \ 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 7249e34..1de6849 100644 --- a/src/main/java/com/whyc/service/SubTablePageInfoService.java +++ b/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; + } } -- Gitblit v1.9.1