lxw
2023-10-09 51cecfd8e31ffd797be6c7be0c738d5575948265
天一电厂获取用户管理的电池组实时数据
1个文件已添加
4个文件已修改
139 ■■■■■ 已修改文件
src/main/java/com/whyc/mapper/BattInfMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/Battinf.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattInfService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/Tydc3DSocket.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattInfMapper.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | 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>