whycxzp
2025-04-07 a3367e61475623c00035b1a08754fea4d88a82d6
abe活化测试相关接口
4个文件已修改
2个文件已添加
222 ■■■■ 已修改文件
src/main/java/com/whyc/controller/AbeTestDataController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/AbeTestDataInfController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestDataInf.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/AbeTestDataInfService.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/AbeTestDataService.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/AbeTestDataSocket.java 100 ●●●●● 补丁 | 查看 | 原始文档 | 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());
    }
}