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