From a3367e61475623c00035b1a08754fea4d88a82d6 Mon Sep 17 00:00:00 2001 From: whycxzp <glperry@163.com> Date: 星期一, 07 四月 2025 14:01:42 +0800 Subject: [PATCH] abe活化测试相关接口 --- src/main/java/com/whyc/webSocket/AbeTestDataSocket.java | 100 +++++++++++++++++++++++++ src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestDataInf.java | 7 - src/main/java/com/whyc/controller/AbeTestDataInfController.java | 6 + src/main/java/com/whyc/service/AbeTestDataInfService.java | 45 ++++++----- src/main/java/com/whyc/service/AbeTestDataService.java | 50 ++++++++++++ src/main/java/com/whyc/controller/AbeTestDataController.java | 14 +++ 6 files changed, 195 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/whyc/controller/AbeTestDataController.java b/src/main/java/com/whyc/controller/AbeTestDataController.java index bb99284..1ce88cd 100644 --- a/src/main/java/com/whyc/controller/AbeTestDataController.java +++ b/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鍜宼estRecordCount") + @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); + } } diff --git a/src/main/java/com/whyc/controller/AbeTestDataInfController.java b/src/main/java/com/whyc/controller/AbeTestDataInfController.java index 1ad489a..a28fd4b 100644 --- a/src/main/java/com/whyc/controller/AbeTestDataInfController.java +++ b/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); + } + } diff --git a/src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestDataInf.java b/src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestDataInf.java index d63dfb7..7d5cc9b 100644 --- a/src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestDataInf.java +++ b/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; } diff --git a/src/main/java/com/whyc/service/AbeTestDataInfService.java b/src/main/java/com/whyc/service/AbeTestDataInfService.java index 92f8372..e655f42 100644 --- a/src/main/java/com/whyc/service/AbeTestDataInfService.java +++ b/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); - //瀵筶ist杩涜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); } } diff --git a/src/main/java/com/whyc/service/AbeTestDataService.java b/src/main/java/com/whyc/service/AbeTestDataService.java new file mode 100644 index 0000000..dd13033 --- /dev/null +++ b/src/main/java/com/whyc/service/AbeTestDataService.java @@ -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; + } +} diff --git a/src/main/java/com/whyc/webSocket/AbeTestDataSocket.java b/src/main/java/com/whyc/webSocket/AbeTestDataSocket.java new file mode 100644 index 0000000..46f1d5b --- /dev/null +++ b/src/main/java/com/whyc/webSocket/AbeTestDataSocket.java @@ -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()); + } +} \ No newline at end of file -- Gitblit v1.9.1