src/main/java/com/whyc/controller/AbeTestDataController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/controller/AbeTestDataInfController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestDataInf.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/AbeTestDataInfService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/AbeTestDataService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/webSocket/AbeTestDataSocket.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/controller/AbeTestDataController.java
@@ -2,14 +2,19 @@ import com.github.pagehelper.PageInfo; import com.whyc.dto.Response; import com.whyc.pojo.db_abe_testdata.AbeTestData; import com.whyc.pojo.db_abe_testdata.AbeTestDataInf; import com.whyc.service.AbeTestDataInfService; import com.whyc.service.AbeTestDataService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; @Api(tags = "活化测试单体记录") @RestController @@ -17,6 +22,13 @@ public class AbeTestDataController { @Autowired private AbeTestDataInfService service; private AbeTestDataService service; @ApiOperation("查询列表-根据单体id和testRecordCount") @GetMapping("getList") public Response<List<AbeTestData>> getList(@RequestParam int monId, @RequestParam int testRecordCount) { List<AbeTestData> list = service.getList(monId, testRecordCount); return new Response<List<AbeTestData>>().set(1, list); } } src/main/java/com/whyc/controller/AbeTestDataInfController.java
@@ -26,5 +26,11 @@ return service.getPage(pageNum,pageSize); } @ApiOperation("查询指定任务编号的活化测试数据") @GetMapping("getByTaskNo") public Response<AbeTestDataInf> getByTaskNo(@RequestParam String taskNo){ return service.getByTaskNo(taskNo); } } src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestDataInf.java
@@ -7,6 +7,7 @@ import lombok.ToString; import java.util.Date; import java.util.List; /** * 测试信息表 @@ -45,10 +46,6 @@ private Float testCap; @TableField(exist = false) private Float monVol; @TableField(exist = false) private Float monTmp; @TableField(exist = false) private Float monRes; private List<AbeTestData> dataList; } src/main/java/com/whyc/service/AbeTestDataInfService.java
@@ -7,6 +7,7 @@ import com.whyc.dto.Response; import com.whyc.mapper.AbeTestDataInfMapper; import com.whyc.mapper.CallBack; import com.whyc.pojo.db_abe_ram.AbeInf; import com.whyc.pojo.db_abe_testdata.AbeTestData; import com.whyc.pojo.db_abe_testdata.AbeTestDataInf; import org.springframework.beans.factory.annotation.Autowired; @@ -27,38 +28,22 @@ private AbeTestDataInfMapper mapper; @Autowired private JdbcSqlExecuteService jdbcSqlExecuteService; private AbeTestDataService abeTestDataService; @Autowired private AbeInfService abeInfService; public Response<PageInfo<AbeTestDataInf>> getPage(int pageNum, int pageSize) { PageHelper.startPage(pageNum,pageSize); QueryWrapper<AbeTestDataInf> query = Wrappers.query(); query.orderByDesc("record_time"); List<AbeTestDataInf> list = mapper.selectList(query); //对list进行monId分类,来进行单体表查询 Map<Integer, List<AbeTestDataInf>> monIdMap = list.stream().collect(Collectors.groupingBy(AbeTestDataInf::getMonId)); for (Integer monId : monIdMap.keySet()) { List<AbeTestDataInf> dataList = monIdMap.get(monId); List<Integer> testRecordCountList = dataList.stream().map(AbeTestDataInf::getTestRecordCount).collect(Collectors.toList()); List<AbeTestData> monDataList = getList(monId, testRecordCountList); for (AbeTestDataInf data : dataList) { for (AbeTestData monData : monDataList) { if (data.getTestRecordCount().equals(monData.getTestRecordCount())) { data.setMonVol(monData.getMonVol()); data.setMonTmp(monData.getMonTmp()); data.setMonRes(monData.getMonRes()); } } } } //分页 PageInfo<AbeTestDataInf> pageInfo = new PageInfo(list); return new Response<PageInfo<AbeTestDataInf>>().set(1,pageInfo); } private List<AbeTestData> getList(int monId,List<Integer> testRecordCountList) { /*private List<AbeTestData> getList(int monId,List<Integer> testRecordCountList) { String testRecordCount = testRecordCountList.stream().map(String::valueOf).collect(Collectors.joining(",","(",")")); String sql = "select test_record_count,mon_vol,mon_tmp,mon_res from db_abe_testdata.tb_abe_testdata_"+monId +" where test_record_count in "+testRecordCount; List<AbeTestData> monDatalist = jdbcSqlExecuteService.executeQuery_call(sql, new CallBack<AbeTestData>() { @@ -79,5 +64,23 @@ }); return monDatalist; }*/ public Response<AbeTestDataInf> getByTaskNo(String taskNo) { QueryWrapper<AbeTestDataInf> query = Wrappers.query(); query.eq("task_no",taskNo); query.last(" limit 1"); AbeTestDataInf abeTestDataInf = mapper.selectOne(query); Integer monId = abeTestDataInf.getMonId(); Integer testRecordCount = abeTestDataInf.getTestRecordCount(); List<AbeTestData> dataList = abeTestDataService.getList(monId, testRecordCount); abeTestDataInf.setDataList(dataList); return new Response<AbeTestDataInf>().set(1,abeTestDataInf); } public Response<AbeTestDataInf> getAbeOngoing() { AbeInf abeInf = abeInfService.get(); String taskNo = abeInf.getTaskNo(); return getByTaskNo(taskNo); } } src/main/java/com/whyc/service/AbeTestDataService.java
New file @@ -0,0 +1,50 @@ package com.whyc.service; import com.whyc.dto.Response; import com.whyc.mapper.CallBack; import com.whyc.pojo.db_abe_testdata.AbeTestData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.sql.ResultSet; import java.sql.SQLException; import java.util.LinkedList; import java.util.List; @Service public class AbeTestDataService { @Autowired private JdbcSqlExecuteService jdbcSqlExecuteService; public List<AbeTestData> getList(int monId, int testRecordCount) { String sql = "select mon_id,test_record_count,record_time,test_starttime,test_type,record_num,test_timelong,group_vol,test_curr,test_cap,mon_vol,mon_tmp,mon_res from db_abe_testdata.tb_abe_testdata_"+monId +" where test_record_count = "+testRecordCount; List<AbeTestData> monDatalist = jdbcSqlExecuteService.executeQuery_call(sql, new CallBack<AbeTestData>() { @Override public List<AbeTestData> getResults(ResultSet rs) throws SQLException { LinkedList<AbeTestData> temp = new LinkedList<>(); while (rs.next()) { AbeTestData abeTestData = new AbeTestData(); abeTestData.setMonId(rs.getInt("mon_id")); abeTestData.setTestRecordCount(rs.getInt("test_record_count")); abeTestData.setRecordTime(rs.getTimestamp("record_time")); abeTestData.setTestStartTime(rs.getTimestamp("test_starttime")); abeTestData.setTestType(rs.getInt("test_type")); abeTestData.setRecordNum(rs.getInt("record_num")); abeTestData.setTestTimeLong(rs.getInt("test_timelong")); abeTestData.setGroupVol(rs.getFloat("group_vol")); abeTestData.setTestCurr(rs.getFloat("test_curr")); abeTestData.setTestCap(rs.getFloat("test_cap")); abeTestData.setMonVol(rs.getFloat("mon_vol")); abeTestData.setMonTmp(rs.getFloat("mon_tmp")); abeTestData.setMonRes(rs.getFloat("mon_res")); temp.add(abeTestData); } return temp; } }); return monDatalist; } } src/main/java/com/whyc/webSocket/AbeTestDataSocket.java
New file @@ -0,0 +1,100 @@ package com.whyc.webSocket; import com.whyc.config.WebSocketConfig; import com.whyc.dto.Response; import com.whyc.pojo.db_abe_ram.AbeInf; import com.whyc.pojo.db_abe_ram.AbeRam; import com.whyc.pojo.db_abe_ram.AbeState; import com.whyc.pojo.db_abe_testdata.AbeTestDataInf; import com.whyc.service.AbeInfService; import com.whyc.service.AbeRamService; import com.whyc.service.AbeStateService; import com.whyc.service.AbeTestDataInfService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.util.HashMap; import java.util.Map; /** * 活化测试数据 */ @Component @ServerEndpoint(value = "/abeTestData",encoders = WebSocketEncoder.class,configurator = WebSocketConfig.class) public class AbeTestDataSocket { private Session session; private Thread thread; private static AbeTestDataInfService infService; private volatile boolean runFlag = true; private volatile Map<String, Thread> threadMap = new HashMap<>(); private volatile Map<Long,Boolean> threadFlagMap = new HashMap<>(); @Autowired public void setInfService(AbeTestDataInfService infService) { AbeTestDataSocket.infService = infService; } @OnOpen public void onOpen(Session session, EndpointConfig config) { this.session = session; thread = new Thread("Thread_AbeTestDataSocket") { @Override public void run() { while (runFlag && !isInterrupted()) { Thread thread = currentThread(); threadFlagMap.put(thread.getId(), true); try { if (session.isOpen()) { //推送信息 synchronized (session) { session.getBasicRemote().sendObject(infService.getAbeOngoing()); } threadFlagMap.put(thread.getId(), false); } sleep(4000); } catch (Exception e) { interrupt(); } } } }; thread.start(); threadFlagMap.put(thread.getId(),true); //停止老的socket线程 Thread threadBefore = threadMap.get(session.getId()); if(threadBefore !=null && threadBefore.isAlive()){ while (threadFlagMap.get(threadBefore.getId())){ } threadBefore.interrupt(); } //将线程存储,便于调用定位 threadMap.put(session.getId(), this.thread); } @OnClose public void onClose(CloseReason closeReason){ System.err.println("closeReason = " + closeReason); runFlag = false; if (thread != null && thread.isAlive()) { thread.interrupt(); } threadMap.remove(session.getId()); } @OnError public void onError(Throwable error) { error.printStackTrace(); if (thread != null && thread.isAlive()) { thread.interrupt(); } threadMap.remove(session.getId()); } }