whyclxw
2022-02-24 bee7271e1d8d3bab4ae9b6d2b253c9c61adb573a
3D机房
1个文件已添加
9个文件已修改
150 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/RealTimeController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/paramter/RealTimePar.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattRtdataMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattRtstateMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattRtdataService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattRtstateService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/RealTimeWebsocket.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/Satation3DWebsocket.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattRtdataMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattRtstateMapper.xml 7 ●●●● 补丁 | 查看 | 原始文档 | 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>