whyczh
2022-04-30 7c8a1e57265b645a6431d5077dba8b42f537a2c4
更新AIOUpdateSocket接口
2个文件已添加
4个文件已修改
142 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/Fbs9100sDfuStateController.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/paramter/AIOUpdatePar.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/Fbs9100sDfuStateMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/Fbs9100sDfuStateService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/AIOUpdateSocket.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/Fbs9100sDfuStateMapper.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/Fbs9100sDfuStateController.java
@@ -1,7 +1,9 @@
package com.whyc.controller;
import com.whyc.dto.Response;
import com.whyc.pojo.UserInf;
import com.whyc.service.Fbs9100sDfuStateService;
import com.whyc.util.ActionUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,7 +31,8 @@
    @ApiOperation("查询A059设备升级")
    @GetMapping("searchA059")
    public Response searchA059(@RequestParam int pageNum,@RequestParam int pageSize,@RequestParam(required = false) String stationName1,@RequestParam(required = false) String stationName2,@RequestParam(required = false) String stationName5){
        return service.searchA059(pageNum,pageSize,stationName1,stationName2,stationName5);
        UserInf userInf = ActionUtil.getUser();
        return service.searchA059(pageNum,pageSize,stationName1,stationName2,stationName5,userInf.getUId().intValue());
    }
    @ApiOperation("添加")
src/main/java/com/whyc/dto/paramter/AIOUpdatePar.java
New file
@@ -0,0 +1,19 @@
package com.whyc.dto.paramter;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class AIOUpdatePar {
    private Integer pageNum;
    private Integer pageSize;
    private String stationName1;
    private String stationName2;
    private String stationName5;
    private Integer uId;
}
src/main/java/com/whyc/mapper/Fbs9100sDfuStateMapper.java
@@ -10,7 +10,7 @@
    //查询正在升级的设备
    List searchAll();
    List searchA059(@Param("stationName1") String stationName1,@Param("stationName2") String stationName2,@Param("stationName5") String stationName5);
    List searchA059(@Param("stationName1") String stationName1,@Param("stationName2") String stationName2,@Param("stationName5") String stationName5,@Param("uId") int uId);
    //添加
    int addPro(String stationName,int num);
src/main/java/com/whyc/service/Fbs9100sDfuStateService.java
@@ -23,9 +23,9 @@
        return new Response().set(1,pageInfo);
    }
    public Response searchA059(int pageNum,int pageSize,String stationName1,String stationName2,String stationName5){
    public Response searchA059(int pageNum,int pageSize,String stationName1,String stationName2,String stationName5,int uId){
        PageHelper.startPage(pageNum,pageSize);
        List list = mapper.searchA059(stationName1,stationName2,stationName5);
        List list = mapper.searchA059(stationName1,stationName2,stationName5,uId);
        PageInfo<Fbs9100sDfuState> pageInfo = new PageInfo<>(list);
        return new Response().set(1,pageInfo,"查询成功");
    }
src/main/java/com/whyc/webSocket/AIOUpdateSocket.java
New file
@@ -0,0 +1,100 @@
package com.whyc.webSocket;
import com.whyc.dto.Response;
import com.whyc.dto.paramter.AIOUpdatePar;
import com.whyc.dto.paramter.AlarmPar;
import com.whyc.service.Fbs9100sDfuStateService;
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 = "/aioUpdateSearch",encoders = WebSocketEncoder.class)
public class AIOUpdateSocket {
    private volatile Thread thread;
    private static final int executeTime = 5000;
    private volatile boolean runFlag=true;
    private volatile Map<String,Thread> threadMap = new HashMap<>();
    private volatile Map<Long,Boolean> threadFlagMap = new HashMap<>();
    private static Fbs9100sDfuStateService service;
    private Session session;
    @Autowired
    public void setService(Fbs9100sDfuStateService service){
        AIOUpdateSocket.service = service;
    }
    @OnOpen
    public void onOpen(Session session){
        this.session=session;
    }
    @OnMessage
    public synchronized void onMessage(Session session, String message){
        AIOUpdatePar aioUpdatePar = ActionUtil.getGson().fromJson(message, AIOUpdatePar.class);
        thread = new Thread("Thread_aioUpdateSearch") {
            public void run() {
                while (runFlag&&!isInterrupted()) {
                    Thread thread = currentThread();
                    threadFlagMap.put(thread.getId(),true);
                    try {
                        Map<String, Response> res=new HashMap<>();
                        //查询已确认信息
                        Response a059=service.searchA059(aioUpdatePar.getPageNum(),aioUpdatePar.getPageSize(),aioUpdatePar.getStationName1(),aioUpdatePar.getStationName2(),aioUpdatePar.getStationName5(),aioUpdatePar.getUId());
                        res.put("searchA059",a059);
                        if (session.isOpen()) {
                            //推送信息
                            synchronized (session) {
                                session.getBasicRemote().sendObject(new Response().set(1, res));
                            }
                            threadFlagMap.put(thread.getId(),false);
                        }
                        sleep(executeTime);
                        //} catch (IOException | InterruptedException | EncodeException e) {
                    } 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());
    }
}
src/main/resources/mapper/Fbs9100sDfuStateMapper.xml
@@ -17,15 +17,21 @@
        from  db_ram_db.tb_fbs9100s_dfu_state,db_battinf.tb_battinf
        where db_ram_db.tb_fbs9100s_dfu_state.dev_id=db_battinf.tb_battinf.fBSDeviceId
        and db_ram_db.tb_fbs9100s_dfu_state.dev_id like '8059%'
        <if test="stationName1 != null and stationName1!=''">
        <if test="stationName1 != null and stationName1!='' and stationName1!='null'">
            and db_battinf.tb_battinf.stationName1=#{stationName1}
        </if>
        <if test="stationName2 != null and stationName2!=''">
        <if test="stationName2 != null and stationName2!='' and stationName2!='null'">
            and db_battinf.tb_battinf.stationName2=#{stationName2}
        </if>
        <if test="stationName5 != null and stationName5!=''">
        <if test="stationName5 != null and stationName5!='' and stationName5!='null'">
            and db_battinf.tb_battinf.stationName5=#{stationName5}
        </if>
        and b.StationId in (
        select distinct db_user.tb_user_battgroup_baojigroup_battgroup.StationId
        from db_user.tb_user_battgroup_baojigroup_battgroup,db_user.tb_user_battgroup_baojigroup_usr
        where db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id=db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id
        and db_user.tb_user_battgroup_baojigroup_usr.uId=#{uId}
        )
    </select>