src/main/java/com/whyc/controller/RealTimeController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/dto/paramter/RealTimePar.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/mapper/BattRtdataMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/mapper/BattRtstateMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/BattRtdataService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/BattRtstateService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/webSocket/RealTimeWebsocket.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/webSocket/Satation3DWebsocket.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/BattRtdataMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/BattRtstateMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/controller/RealTimeController.java
@@ -61,4 +61,8 @@ @ApiOperation(value = "放电计划管理",notes = "请求链接:ws://localhost:8089/fg/battDischargePlan 传参:BattdischargePlan实体类") @GetMapping("getBattDischargePlan") public Response getBattDischargePlan(@RequestBody BattdischargePlan battdischargePlan){return new Response();} @ApiOperation(value = "3D机房管理",notes = "请求链接:ws://localhost:8090/fg/Satation3D 传参:{\"stationId\":\"42010021\"}") @GetMapping("getStation3D") public Response getStation3D(){return new Response();} } src/main/java/com/whyc/dto/paramter/RealTimePar.java
@@ -14,6 +14,8 @@ @ToString @ApiModel(value="实时页面websockt传参", description="") public class RealTimePar implements Serializable { @ApiModelProperty(value = "机房id") private String stationId; @ApiModelProperty(value = "电池组id") private int battGroupId; @ApiModelProperty(value = "设备id") src/main/java/com/whyc/mapper/BattRtdataMapper.java
@@ -3,6 +3,8 @@ import com.whyc.pojo.BattRtdata; import com.whyc.pojo.BattRtstate; import java.util.List; public interface BattRtdataMapper extends CustomMapper<BattRtdata>{ int deleteByPrimaryKey(Long num); @@ -15,4 +17,6 @@ int updateByPrimaryKeySelective(BattRtdata record); int updateByPrimaryKey(BattRtdata record); //3D查询机房下电池组单体信息 List<BattRtdata> getStation3D(String stationId); } src/main/java/com/whyc/mapper/BattRtstateMapper.java
@@ -31,5 +31,6 @@ //作业管理-创建计划-创建计划 BattRtstate getCurrentSate(int battGroupId); ////3D查询机房下电池组端信息 List<BattRtstate> getStation3D(String stationId); } src/main/java/com/whyc/service/BattRtdataService.java
@@ -4,6 +4,8 @@ import com.github.pagehelper.PageInfo; import com.whyc.dto.Response; import com.whyc.mapper.BattRtdataMapper; import com.whyc.pojo.BattRtdata; import com.whyc.pojo.BattRtstate; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -33,4 +35,10 @@ PageInfo pageInfo=new PageInfo(list); return new Response().set(1,pageInfo); } //3D查询机房下电池组单体信息 public Response getStation3D(String stationId) { List<BattRtdata> list=mapper.getStation3D(stationId); PageInfo pageInfo=new PageInfo(list); return new Response().setII(1,list.size()>0?true:false,pageInfo,""); } } src/main/java/com/whyc/service/BattRtstateService.java
@@ -49,4 +49,10 @@ BattRtstate brt=battRtstateMapper.selectOne(wrapper); return new Response().setII(1,brt==null?false:true,brt,""); } //3D查询机房下电池组端信息 public Response getStation3D(String stationId) { List<BattRtstate> list=battRtstateMapper.getStation3D(stationId); PageInfo pageInfo=new PageInfo(list); return new Response().setII(1,list.size()>0?true:false,pageInfo,""); } } src/main/java/com/whyc/webSocket/RealTimeWebsocket.java
@@ -11,7 +11,6 @@ import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; @@ -57,7 +56,6 @@ private static Fbs9100InsulatstateService f9100Insulatstateservice;//Fbs9100Insulatstate private static Fbs9100ChargerstateService f9100Chargerstateservice;//Fbs9100Chargerstate private Session session; src/main/java/com/whyc/webSocket/Satation3DWebsocket.java
New file @@ -0,0 +1,108 @@ package com.whyc.webSocket; import com.whyc.dto.Response; import com.whyc.dto.paramter.RealTimePar; import com.whyc.service.BattRtdataService; import com.whyc.service.BattRtstateService; 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.io.IOException; import java.util.HashMap; import java.util.Map; @Component @ServerEndpoint(value = "/Satation3D",encoders = WebSocketEncoder.class) public class Satation3DWebsocket { private volatile Thread thread; private static final int executeTime = 5000; private static boolean exit=false; private static Map<String,Thread> threadMap = new HashMap<>(); private static BattRtstateService rtstateservice; //组端 private static BattRtdataService rtdataservice; //单体 private Session session; @Autowired public void setService(BattRtstateService rtstateservice) { Satation3DWebsocket.rtstateservice = rtstateservice; } @Autowired public void setService(BattRtdataService rtdataservice) { Satation3DWebsocket.rtdataservice = rtdataservice; } @OnOpen public void onOpen(Session session){ this.session=session; } @OnMessage public void onMessage(Session session, String message){ //停止当前socket的线程 Thread threadBefore = threadMap.get(session.getId()); if(threadBefore !=null && threadBefore.isAlive()){ threadBefore.interrupt(); exit=true; } RealTimePar realTimePar= ActionUtil.getGson().fromJson(message,RealTimePar.class); thread = new Thread("Thread_RealTime") { public void run() { exit=false; while ( !this.isInterrupted()&&!exit) { try { if (session.isOpen()) { Response res=new Response(); res=getStation3D(realTimePar.getStationId()); //推送信息 session.getBasicRemote().sendObject(res); } sleep(executeTime); } catch ( IOException | InterruptedException | EncodeException e ) { interrupt(); } } } }; thread.start(); //将线程存储,便于调用定位 threadMap.put(session.getId(), this.thread); } @OnClose public void onClose(){ 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()); } //标准的实时页面信息 public Response getStation3D(String stationId){ Map<String,Response> res=new HashMap<>(); //3D查询机房下电池组端信息 Response rtstateRes=rtstateservice.getStation3D(stationId); res.put("rtstate3D",rtstateRes); //3D查询机房下电池组单体信息 Response rtdataRes=rtdataservice.getStation3D(stationId); res.put("rtdata3D",rtdataRes); return new Response().set(1,res); } } src/main/resources/mapper/BattRtdataMapper.xml
@@ -25,6 +25,12 @@ from tb_batt_rtdata where num = #{num,jdbcType=BIGINT} </select> <select id="getStation3D" resultType="com.whyc.pojo.BattRtdata"> select db_ram_db.tb_batt_rtdata.* from db_ram_db.tb_batt_rtdata LEFT outer JOIN db_battinf.tb_battinf on db_battinf.tb_battinf.BattGroupId=db_ram_db.tb_batt_rtdata.BattGroupId where db_battinf.tb_battinf.StationId=#{stationId} </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> delete from tb_batt_rtdata where num = #{num,jdbcType=BIGINT} src/main/resources/mapper/BattRtstateMapper.xml
@@ -359,8 +359,11 @@ <select id="getCurrentSate" resultType="com.whyc.pojo.BattRtstate"> select batt_state,rec_datetime from db_ram_db.tb_batt_rtstate where BattGroupId=#{battGroupId} limit 1 </select> <select id="getStation3D" resultType="com.whyc.pojo.BattRtstate"> select db_ram_db.tb_batt_rtstate.* from db_ram_db.tb_batt_rtstate LEFT OUTER JOIN db_battinf.tb_battinf on db_battinf.tb_battinf.BattGroupId=db_ram_db.tb_batt_rtstate.BattGroupId where db_battinf.tb_battinf.StationId=#{stationId} </select> </mapper>