src/main/java/com/whyc/mapper/BattInfMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/Battinf.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/BattInfService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/webSocket/Tydc3DSocket.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/BattInfMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/mapper/BattInfMapper.java
@@ -114,5 +114,7 @@ //根据设备id查询电池组id(取第一个) String searchBattGroupIdByDevId(int devId); //天一电厂获取用户管理的电池组实时数据 List<Battinf> selectTydc3DRealTimeInfo(Long userId); } src/main/java/com/whyc/pojo/Battinf.java
@@ -16,6 +16,7 @@ import java.io.Serializable; import java.util.Date; import java.util.List; /** * <p> @@ -325,4 +326,12 @@ @TableField(exist = false) @ApiModelProperty("电池信息更改原因") private String updateReason; @TableField(exist = false) @ApiModelProperty("电池组端实时数据") private BattRtstate rtstate; @TableField(exist = false) @ApiModelProperty("电池单体实时数据") private List monNumList; } src/main/java/com/whyc/service/BattInfService.java
@@ -831,4 +831,9 @@ query.eq("FBSDeviceId",deviceId).last(" limit 1"); return battInfMapper.selectOne(query).getStationId(); } //天一电厂获取用户管理的电池组实时数据 public Response selectTydc3DRealTimeInfo(Long uId) { List<Battinf> list=battInfMapper.selectTydc3DRealTimeInfo(uId); return new Response().setII(1,list!=null,list,"用户管理的电池组实时数据"); } } src/main/java/com/whyc/webSocket/Tydc3DSocket.java
New file @@ -0,0 +1,74 @@ package com.whyc.webSocket; import com.whyc.config.WebSocketConfig; import com.whyc.dto.Response; import com.whyc.pojo.UserInf; import com.whyc.service.BattInfService; import com.whyc.service.LoginService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.servlet.http.HttpSession; import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.util.HashMap; import java.util.Map; @Component @ServerEndpoint(value = "/tydc3D",encoders = WebSocketEncoder.class,configurator = WebSocketConfig.class) public class Tydc3DSocket { private Session session; private Thread thread; private static BattInfService battInfService; @Autowired public void setBattInfService(BattInfService battInfService) { Tydc3DSocket.battInfService = battInfService; } @OnOpen public void onOpen(Session session, EndpointConfig config){ this.session = session; HttpSession httpSession = (HttpSession) config.getUserProperties().get("httpSession"); UserInf user = (UserInf) httpSession.getAttribute("user"); Thread thread = new Thread() { @Override public void run() { try { Map<String, Response> res = new HashMap<>(); while (!currentThread().isInterrupted()) { Response response = battInfService.selectTydc3DRealTimeInfo(user.getUId()); session.getBasicRemote().sendObject(response); sleep(4000); } } catch (Exception e) { this.interrupt(); } } }; thread.start(); this.thread = thread; } @OnClose public void onClose(CloseReason closeReason) throws IOException { System.err.println("closeReason = " + closeReason); if(session.isOpen()){ session.close(); } } @OnError public void onError(Throwable error) throws IOException { error.printStackTrace(); thread.isInterrupted(); if(session.isOpen()){ session.close(); } } } src/main/resources/mapper/BattInfMapper.xml
@@ -654,4 +654,51 @@ where FBSDeviceId = #{devId} ORDER by GroupIndexInFBSDevice limit 1 </select> <resultMap id="Tydc3DInf" type="com.whyc.pojo.Battinf"> <result column="battgroupid" property="battGroupId"></result> <result column="stationid" property="stationId"></result> <result column="stationName" property="stationName"></result> <result column="stationName1" property="stationName1"></result> <result column="stationIp" property="stationIP"></result> <result column="battGroupName" property="battGroupName"></result> <result column="battGroupName1" property="battGroupName1"></result> <result column="battgroupnum" property="battGroupNum"></result> <result column="monCount" property="monCount"></result> <result column="monCapStd" property="monCapStd"></result> <result column="monVolStd" property="monVolStd"></result> <result column="battProducer" property="battProducer"></result> <result column="battProductDate" property="battProductDate"></result> <result column="battInUseDate" property="battInUseDate"></result> <result column="groupIndexInFBSDevice" property="groupIndexInFBSDevice"></result> <result column="load_curr" property="loadCurr"></result> <result column="fBSDeviceId" property="fBSDeviceId"></result> <association property="rtstate" column="battgroupid" select="selectRtstate"> </association> <collection property="monNumList" javaType="java.util.ArrayList" ofType="com.whyc.pojo.BattRtdata" column="{battGroupId=battgroupid}" select="selectBattRtdata"> </collection> </resultMap> <select id="selectTydc3DRealTimeInfo" resultMap="Tydc3DInf"> select distinct * from db_battinf.tb_battinf where StationId in (select distinct db_battinf.tb_battinf.StationId from db_battinf.tb_battinf, db_user.tb_user_battgroup_baojigroup_battgroup, db_user.tb_user_battgroup_baojigroup_usr, db_user.tb_user_inf where db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId = db_battinf.tb_battinf.BattGroupId and db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id = db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id and db_user.tb_user_inf.uid = db_user.tb_user_battgroup_baojigroup_usr.uid and db_user.tb_user_inf.uid = #{userId}) </select> <select id="selectBattRtdata" resultType="com.whyc.pojo.BattRtdata"> select DISTINCT * FROM db_ram_db.tb_batt_rtdata where BattGroupId=#{battGroupId} </select> <select id="selectRtstate" resultType="com.whyc.pojo.BattRtstate"> select DISTINCT * FROM db_ram_db.tb_batt_rtstate where BattGroupId=#{battGroupId} </select> </mapper>