From 0143867c6907619385752e14214f622e3cba1196 Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期一, 31 三月 2025 23:10:32 +0800
Subject: [PATCH] abe活化接口

---
 src/main/java/com/whyc/mapper/AbeStateMapper.java               |    6 
 src/main/java/com/whyc/pojo/db_abe_ram/AbeInf.java              |   18 +
 src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestData.java    |   50 +++++
 src/main/java/com/whyc/service/AbeStateService.java             |   24 ++
 src/main/java/com/whyc/controller/AbeTestDataInfController.java |   30 +++
 src/main/java/com/whyc/pojo/db_abe_ram/AbeRam.java              |   48 ++++
 src/main/java/com/whyc/webSocket/AbeStateSocket.java            |  111 +++++++++++
 src/main/java/com/whyc/mapper/AbeRamMapper.java                 |    6 
 src/main/java/com/whyc/service/AbeTestDataInfService.java       |   83 ++++++++
 src/main/java/com/whyc/pojo/db_abe_ram/AbeState.java            |   69 ++++++
 src/main/java/com/whyc/mapper/AbeTestDataInfMapper.java         |    6 
 src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestDataInf.java |   54 +++++
 src/main/java/com/whyc/controller/AbeTestDataController.java    |   22 ++
 src/main/java/com/whyc/service/AbeRamService.java               |   24 ++
 14 files changed, 551 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/whyc/controller/AbeTestDataController.java b/src/main/java/com/whyc/controller/AbeTestDataController.java
new file mode 100644
index 0000000..bb99284
--- /dev/null
+++ b/src/main/java/com/whyc/controller/AbeTestDataController.java
@@ -0,0 +1,22 @@
+package com.whyc.controller;
+
+import com.github.pagehelper.PageInfo;
+import com.whyc.dto.Response;
+import com.whyc.pojo.db_abe_testdata.AbeTestDataInf;
+import com.whyc.service.AbeTestDataInfService;
+import io.swagger.annotations.Api;
+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;
+
+@Api(tags = "娲诲寲娴嬭瘯鍗曚綋璁板綍")
+@RestController
+@RequestMapping("abeTestData")
+public class AbeTestDataController {
+
+    @Autowired
+    private AbeTestDataInfService service;
+
+}
diff --git a/src/main/java/com/whyc/controller/AbeTestDataInfController.java b/src/main/java/com/whyc/controller/AbeTestDataInfController.java
new file mode 100644
index 0000000..1ad489a
--- /dev/null
+++ b/src/main/java/com/whyc/controller/AbeTestDataInfController.java
@@ -0,0 +1,30 @@
+package com.whyc.controller;
+
+import com.github.pagehelper.PageInfo;
+import com.whyc.dto.Response;
+import com.whyc.pojo.db_abe_testdata.AbeTestDataInf;
+import com.whyc.service.AbeTestDataInfService;
+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;
+
+@Api(tags = "娲诲寲娴嬭瘯鏁版嵁")
+@RestController
+@RequestMapping("abeTestDataInf")
+public class AbeTestDataInfController {
+
+    @Autowired
+    private AbeTestDataInfService service;
+
+    @ApiOperation("鏌ヨ鍒嗛〉")
+    @GetMapping("getPage")
+    public Response<PageInfo<AbeTestDataInf>> getPage(@RequestParam int pageNum, @RequestParam int pageSize){
+        return service.getPage(pageNum,pageSize);
+    }
+
+
+}
diff --git a/src/main/java/com/whyc/mapper/AbeRamMapper.java b/src/main/java/com/whyc/mapper/AbeRamMapper.java
new file mode 100644
index 0000000..dc4117d
--- /dev/null
+++ b/src/main/java/com/whyc/mapper/AbeRamMapper.java
@@ -0,0 +1,6 @@
+package com.whyc.mapper;
+
+import com.whyc.pojo.db_abe_ram.AbeRam;
+
+public interface AbeRamMapper extends CustomMapper<AbeRam>{
+}
diff --git a/src/main/java/com/whyc/mapper/AbeStateMapper.java b/src/main/java/com/whyc/mapper/AbeStateMapper.java
new file mode 100644
index 0000000..a87d860
--- /dev/null
+++ b/src/main/java/com/whyc/mapper/AbeStateMapper.java
@@ -0,0 +1,6 @@
+package com.whyc.mapper;
+
+import com.whyc.pojo.db_abe_ram.AbeState;
+
+public interface AbeStateMapper extends CustomMapper<AbeState>{
+}
diff --git a/src/main/java/com/whyc/mapper/AbeTestDataInfMapper.java b/src/main/java/com/whyc/mapper/AbeTestDataInfMapper.java
new file mode 100644
index 0000000..e77b6e8
--- /dev/null
+++ b/src/main/java/com/whyc/mapper/AbeTestDataInfMapper.java
@@ -0,0 +1,6 @@
+package com.whyc.mapper;
+
+import com.whyc.pojo.db_abe_testdata.AbeTestDataInf;
+
+public interface AbeTestDataInfMapper extends CustomMapper<AbeTestDataInf>{
+}
diff --git a/src/main/java/com/whyc/pojo/db_abe_ram/AbeInf.java b/src/main/java/com/whyc/pojo/db_abe_ram/AbeInf.java
new file mode 100644
index 0000000..413a9c4
--- /dev/null
+++ b/src/main/java/com/whyc/pojo/db_abe_ram/AbeInf.java
@@ -0,0 +1,18 @@
+package com.whyc.pojo.db_abe_ram;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+@TableName(schema = "db_abe_ram",value = "tb_abe_inf")
+@ToString
+@Data
+public class AbeInf {
+
+    private Integer id;
+    private String abeIp;
+    private String abeName;
+    @ApiModelProperty("abe璁惧瀵瑰簲鐨勫崟浣撶紪鍙�")
+    private Integer abeMonId;
+}
diff --git a/src/main/java/com/whyc/pojo/db_abe_ram/AbeRam.java b/src/main/java/com/whyc/pojo/db_abe_ram/AbeRam.java
new file mode 100644
index 0000000..647056c
--- /dev/null
+++ b/src/main/java/com/whyc/pojo/db_abe_ram/AbeRam.java
@@ -0,0 +1,48 @@
+package com.whyc.pojo.db_abe_ram;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.Date;
+
+/**
+ * 娲诲寲鐘舵�佽〃
+ */
+@TableName(schema = "db_abe_ram",value = "tb_abe_ram")
+@ToString
+@Data
+public class AbeRam {
+
+    @ApiModelProperty("鑷涓婚敭")
+    private Integer num;
+    @ApiModelProperty("鍗曚綋缂栧彿")
+    private Integer monId;
+    @ApiModelProperty("璁板綍鏃堕棿")
+    private Date recordTime;
+    @ApiModelProperty("鍗曚綋鐢靛帇")
+    private Float monVol;
+    @ApiModelProperty("鍗曚綋娓╁害")
+    private Float monTmp;
+    @ApiModelProperty("鍗曚綋鍐呴樆")
+    private Float monRes;
+    @ApiModelProperty("琚祴鍗曚綋缂栧彿")
+    private Integer testMonNum;
+    @ApiModelProperty("娴嬭瘯鐘舵��")
+    private Integer testState;
+    @ApiModelProperty("鐢垫睜鐢靛帇")
+    private Float groupVol;
+    @ApiModelProperty("鐢垫睜鐢垫祦")
+    private Float groupCurr;
+    @ApiModelProperty("娴嬭瘯鏃堕暱")
+    private Integer testTimeLong;
+    @ApiModelProperty("娴嬭瘯瀹归噺")
+    private Float testCap;
+    @ApiModelProperty("闈欑疆鏃堕棿")
+    private Integer waitTime;
+    @ApiModelProperty("娲诲寲娆℃暟")
+    private Integer cycCount;
+    @ApiModelProperty("宸ヤ綔鐘舵�乕0-鏃犳祴璇� 253-鏀剧數娴嬭瘯  252-鍏呯數娴嬭瘯  249-娲诲寲娴嬭瘯]")
+    private Integer nowTestState;
+}
diff --git a/src/main/java/com/whyc/pojo/db_abe_ram/AbeState.java b/src/main/java/com/whyc/pojo/db_abe_ram/AbeState.java
new file mode 100644
index 0000000..37e1e80
--- /dev/null
+++ b/src/main/java/com/whyc/pojo/db_abe_ram/AbeState.java
@@ -0,0 +1,69 @@
+package com.whyc.pojo.db_abe_ram;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.Date;
+
+/**
+ * 娲诲寲鐘舵�佽〃
+ * CREATE TABLE db_abe_ram.tb_abe_state(
+ * 	num bigint NOT NULL DEFAULT nextval('db_abe_ram.tb_abe_state_auto'::regclass),
+ * 	abe_id bigint NOT NULL DEFAULT 1,
+ * 	record_time timestamp without time zone NOT NULL DEFAULT '2000-01-01 00:00:00'::timestamp without time zone,
+ * 	now_mon_id integer NOT NULL DEFAULT 1,
+ * 	cnn_state integer NOT NULL DEFAULT 0,
+ * 	comm_errcount integer NOT NULL DEFAULT 0,
+ * 	comm_totalcount integer NOT NULL DEFAULT 0,
+ * 	 PRIMARY KEY (num),
+ * 	 CONSTRAINT idx_abe_id UNIQUE (	abe_id)
+ * )
+ *
+ * ;
+ *
+ * ALTER    TABLE db_abe_ram.tb_abe_state
+ * 	OWNER TO sysdba;
+ *
+ * COMMENT ON COLUMN db_abe_ram.tb_abe_state.num IS '鑷涓婚敭';
+ *
+ * COMMENT ON COLUMN db_abe_ram.tb_abe_state.abe_id IS 'ABE鐨刬d鍙�';
+ *
+ * COMMENT ON COLUMN db_abe_ram.tb_abe_state.record_time IS '鏇存柊涓嬫椂闂�';
+ *
+ * COMMENT ON COLUMN db_abe_ram.tb_abe_state.now_mon_id IS '褰撳墠鎺ュ叆鍗曚綋缂栧彿';
+ *
+ * COMMENT ON COLUMN db_abe_ram.tb_abe_state.cnn_state IS '杩炴帴鐘舵�侊紙0-鏈繛鎺�  1-宸茶繛鎺ワ級';
+ *
+ * COMMENT ON COLUMN db_abe_ram.tb_abe_state.comm_errcount IS '閫氫俊閿欒璁℃暟';
+ *
+ * COMMENT ON COLUMN db_abe_ram.tb_abe_state.comm_totalcount IS '閫氫俊璁℃暟';
+ *
+ * COMMENT ON CONSTRAINT idx_abe_id ON db_abe_ram.tb_abe_state IS '璁惧ID';
+ */
+@TableName(schema = "db_abe_ram",value = "tb_abe_state")
+@ToString
+@Data
+public class AbeState {
+
+    @ApiModelProperty("鑷涓婚敭")
+    private Integer num;
+    @ApiModelProperty("ABE鐨刬d鍙�")
+    private Integer abeId;
+    @ApiModelProperty("鏇存柊涓嬫椂闂�")
+    private Date recordTime;
+    @ApiModelProperty("褰撳墠鎺ュ叆鍗曚綋缂栧彿")
+    private Integer nowMonId;
+    @ApiModelProperty("杩炴帴鐘舵�侊紙0-鏈繛鎺�  1-宸茶繛鎺ワ級")
+    private Integer cnnState;
+    @ApiModelProperty("閫氫俊閿欒璁℃暟")
+    @TableField("comm_errcount")
+    private Integer commErrCount;
+    @ApiModelProperty("閫氫俊璁℃暟")
+    @TableField("comm_totalcount")
+    private Integer commTotalCount;
+
+
+}
diff --git a/src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestData.java b/src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestData.java
new file mode 100644
index 0000000..89370a1
--- /dev/null
+++ b/src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestData.java
@@ -0,0 +1,50 @@
+package com.whyc.pojo.db_abe_testdata;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.Date;
+
+/**
+ *
+ */
+@TableName(schema = "db_abe_testdata",value = "tb_abe_testdata")
+@ToString
+@Data
+public class AbeTestData {
+
+    @ApiModelProperty("鑷涓婚敭")
+    private Integer num;
+    @ApiModelProperty("鍗曚綋ID")
+    private Integer monId;
+    @ApiModelProperty("娴嬭瘯娆℃暟")
+    private Integer testRecordCount;
+    @ApiModelProperty("璁板綍鏃堕棿")
+    private Date recordTime;
+    @ApiModelProperty("娴嬭瘯寮�濮嬫椂闂�")
+    @TableField("test_starttime")
+    private Date testStartTime;
+    @ApiModelProperty("娴嬭瘯绫诲瀷")
+    private Integer testType;
+    @ApiModelProperty("璁板綍绗旀暟")
+    private Integer recordNum;
+    @ApiModelProperty("娴嬭瘯鏃堕暱")
+    @TableField("test_timelong")
+    private Integer testTimeLong;
+    @ApiModelProperty("鐢垫睜鐢靛帇")
+    private Float groupVol;
+    @ApiModelProperty("娴嬭瘯鐢垫祦")
+    private Float testCurr;
+    @ApiModelProperty("娴嬭瘯瀹归噺")
+    private Float testCap;
+    @ApiModelProperty("鍗曚綋鐢靛帇")
+    private Float monVol;
+    @ApiModelProperty("鍗曚綋娓╁害")
+    private Float monTmp;
+    @ApiModelProperty("鍗曚綋鍐呴樆")
+    private Float monRes;
+
+}
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
new file mode 100644
index 0000000..d63dfb7
--- /dev/null
+++ b/src/main/java/com/whyc/pojo/db_abe_testdata/AbeTestDataInf.java
@@ -0,0 +1,54 @@
+package com.whyc.pojo.db_abe_testdata;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.Date;
+
+/**
+ * 娴嬭瘯淇℃伅琛�
+ */
+@TableName(schema = "db_abe_testdata",value = "tb_abe_testdata_inf")
+@ToString
+@Data
+public class AbeTestDataInf {
+
+    @ApiModelProperty("鑷涓婚敭")
+    private Integer num;
+    @ApiModelProperty("鍗曚綋ID")
+    private Integer monId;
+    @ApiModelProperty("娴嬭瘯绗旀暟")
+    private Integer testRecordCount;
+    @ApiModelProperty("璁板綍鏃堕棿")
+    private Date recordTime;
+    @ApiModelProperty("璁板綍绗旀暟")
+    private Integer recordNum;
+    @ApiModelProperty("娴嬭瘯寮�濮嬫椂闂�")
+    @TableField("test_starttime")
+    private Date testStartTime;
+    @ApiModelProperty("娴嬭瘯绫诲瀷[2-鍏呯數  3-鏀剧數  4-娲诲寲]")
+    private Integer testType;
+    @ApiModelProperty(" 娴嬭瘯鏃堕暱")
+    @TableField("test_timelong")
+    private Integer testTimeLong;
+    @ApiModelProperty("鍋滄鍘熷洜")
+    @TableField("test_stoptype")
+    private Integer testStopType;
+    @ApiModelProperty("缁勭鐢靛帇")
+    private Float groupVol;
+    @ApiModelProperty("娴嬭瘯鐢垫祦")
+    private Float testCurr;
+    @ApiModelProperty("娴嬭瘯瀹归噺")
+    private Float testCap;
+
+    @TableField(exist = false)
+    private Float monVol;
+    @TableField(exist = false)
+    private Float monTmp;
+    @TableField(exist = false)
+    private Float monRes;
+
+}
diff --git a/src/main/java/com/whyc/service/AbeRamService.java b/src/main/java/com/whyc/service/AbeRamService.java
new file mode 100644
index 0000000..abe8177
--- /dev/null
+++ b/src/main/java/com/whyc/service/AbeRamService.java
@@ -0,0 +1,24 @@
+package com.whyc.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.whyc.dto.Response;
+import com.whyc.mapper.AbeRamMapper;
+import com.whyc.pojo.db_abe_ram.AbeRam;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class AbeRamService {
+
+    @Resource
+    private AbeRamMapper mapper;
+
+    public Response<AbeRam> get() {
+        QueryWrapper<AbeRam> query = Wrappers.query();
+        query.last(" limit 1");
+        AbeRam abeRam = mapper.selectOne(query);
+        return new Response<AbeRam>().set(1,abeRam);
+    }
+}
diff --git a/src/main/java/com/whyc/service/AbeStateService.java b/src/main/java/com/whyc/service/AbeStateService.java
new file mode 100644
index 0000000..9fa1b70
--- /dev/null
+++ b/src/main/java/com/whyc/service/AbeStateService.java
@@ -0,0 +1,24 @@
+package com.whyc.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.whyc.dto.Response;
+import com.whyc.mapper.AbeStateMapper;
+import com.whyc.pojo.db_abe_ram.AbeState;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class AbeStateService {
+
+    @Resource
+    private AbeStateMapper mapper;
+
+    public Response<AbeState> get() {
+        QueryWrapper<AbeState> query = Wrappers.query();
+        query.last(" limit 1");
+        AbeState abeState = mapper.selectOne(query);
+        return new Response<AbeState>().set(1,abeState);
+    }
+}
diff --git a/src/main/java/com/whyc/service/AbeTestDataInfService.java b/src/main/java/com/whyc/service/AbeTestDataInfService.java
new file mode 100644
index 0000000..92f8372
--- /dev/null
+++ b/src/main/java/com/whyc/service/AbeTestDataInfService.java
@@ -0,0 +1,83 @@
+package com.whyc.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.whyc.dto.Response;
+import com.whyc.mapper.AbeTestDataInfMapper;
+import com.whyc.mapper.CallBack;
+import com.whyc.pojo.db_abe_testdata.AbeTestData;
+import com.whyc.pojo.db_abe_testdata.AbeTestDataInf;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class AbeTestDataInfService {
+
+    @Resource
+    private AbeTestDataInfMapper mapper;
+
+    @Autowired
+    private JdbcSqlExecuteService jdbcSqlExecuteService;
+
+    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) {
+        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>() {
+
+            @Override
+            public List<AbeTestData> getResults(ResultSet rs) throws SQLException {
+                LinkedList<AbeTestData> temp = new LinkedList<>();
+                while (rs.next()) {
+                    AbeTestData abeTestData = new AbeTestData();
+                    abeTestData.setTestRecordCount(rs.getInt("test_record_count"));
+                    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/AbeStateSocket.java b/src/main/java/com/whyc/webSocket/AbeStateSocket.java
new file mode 100644
index 0000000..3dd9326
--- /dev/null
+++ b/src/main/java/com/whyc/webSocket/AbeStateSocket.java
@@ -0,0 +1,111 @@
+package com.whyc.webSocket;
+
+import com.whyc.config.WebSocketConfig;
+import com.whyc.dto.PageAlarm;
+import com.whyc.dto.Response;
+import com.whyc.pojo.db_abe_ram.AbeRam;
+import com.whyc.pojo.db_abe_ram.AbeState;
+import com.whyc.service.AbeRamService;
+import com.whyc.service.AbeStateService;
+import com.whyc.service.BattStationTempAlarmService;
+import com.whyc.util.ActionUtil;
+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 = "/abeState",encoders = WebSocketEncoder.class,configurator = WebSocketConfig.class)
+public class AbeStateSocket {
+    private Session session;
+
+    private Thread thread;
+
+    private static AbeRamService ramService;
+
+    private static AbeStateService stateService;
+
+    private volatile boolean runFlag = true;
+
+    private volatile Map<String, Thread> threadMap = new HashMap<>();
+
+    private volatile Map<Long,Boolean> threadFlagMap = new HashMap<>();
+
+    @Autowired
+    public void setRamService(AbeRamService ramService) {
+        AbeStateSocket.ramService = ramService;
+    }
+
+    @Autowired
+    public void setStateService(AbeStateService stateService) {
+        AbeStateSocket.stateService = stateService;
+    }
+
+    @OnOpen
+    public void onOpen(Session session, EndpointConfig config) {
+        this.session = session;
+        thread = new Thread("Thread_AbeStateSocket") {
+            @Override
+            public void run() {
+                while (runFlag && !isInterrupted()) {
+                    Thread thread = currentThread();
+                    threadFlagMap.put(thread.getId(), true);
+                    try {
+                        if (session.isOpen()) {
+                            //鎺ㄩ�佷俊鎭�
+                            synchronized (session) {
+                                Response<AbeState> state = stateService.get();
+                                Response<AbeRam> ram = ramService.get();
+                                Map<String, Response> resMap = new HashMap<>();
+                                resMap.put("state",state);
+                                resMap.put("ram",ram);
+                                session.getBasicRemote().sendObject(new Response<>().set(1, resMap));
+                            }
+                            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