src/main/java/com/whyc/mapper/DevStateMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/DevState.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/FgcdFiledownload.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/DevStateService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/websocket/DevSocket.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/websocket/WebSocketEncoder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/DevStateMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/mapper/DevStateMapper.java
New file @@ -0,0 +1,6 @@ package com.whyc.mapper; import com.whyc.pojo.DevState; public interface DevStateMapper extends CustomMapper<DevState>{ } src/main/java/com/whyc/pojo/DevState.java
New file @@ -0,0 +1,78 @@ package com.whyc.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.*; import lombok.experimental.Accessors; import java.io.Serializable; /** * <p> * * </p> * * @author lxw * @since 2023-11-09 */ @Data @AllArgsConstructor @NoArgsConstructor @ToString @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName(schema = "db_ram_db",value = "tb_dev_state") @ApiModel(value="DevState对象", description="") public class DevState implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "num", type = IdType.AUTO) private Long num; private String devIp; @ApiModelProperty(value = "设备版本号") private String devVersion; @ApiModelProperty(value = "设备id") private Long devId; @ApiModelProperty(value = "更新时间") private String recordDatetime; private String devDatetime; private Integer devTesttype; private Integer devTestgroupnum; private Integer devWorkstate; private Integer devEachgroupBattsum; private Float devCaptestOnlinevol; private Float devCaptestGroupvol; private Float devCaptestCurr; private Float devCaptestCap; private Integer devCaptestTimelong; @ApiModelProperty(value = "设备通信计数") private Integer devCommcount; @ApiModelProperty(value = "设备通信错误计数") private Integer devErrcommcount; private Integer devRxnullerrcount; private Float devTemp; } src/main/java/com/whyc/pojo/FgcdFiledownload.java
New file @@ -0,0 +1,220 @@ package com.whyc.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.*; import lombok.experimental.Accessors; import java.io.Serializable; /** * <p> * 远程数据文件下载表 * </p> * * @author lxw * @since 2023-11-09 */ @Data @AllArgsConstructor @NoArgsConstructor @ToString @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName(schema = "db_ram_db",value = "tb_fgcd_filedownload") @ApiModel(value="FgcdFiledownload对象", description="远程数据文件下载表") public class FgcdFiledownload implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "num", type = IdType.AUTO) private Long num; @ApiModelProperty(value = "设备id") private Integer devId; @ApiModelProperty(value = "命令") private Integer opCmd; @ApiModelProperty(value = "总的文件数目") private Integer fileTotal; @ApiModelProperty(value = "当前页数据文件数") private Integer fileCount; @ApiModelProperty(value = "需要下载文件索引") private Integer fileIndex; @ApiModelProperty(value = "文件名1") private String fileName1; @ApiModelProperty(value = "文件索引1") private Integer fileIndex1; @ApiModelProperty(value = "下载标识1") private Integer downloadFlag1; @ApiModelProperty(value = "下载状态1") private Integer downloadState1; @ApiModelProperty(value = "文件名2") private String fileName2; @ApiModelProperty(value = "文件索引2") private Integer fileIndex2; @ApiModelProperty(value = "下载标识2") private Integer downloadFlag2; @ApiModelProperty(value = "下载状态2") private Integer downloadState2; @ApiModelProperty(value = "文件名3") private String fileName3; @ApiModelProperty(value = "文件索引3") private Integer fileIndex3; @ApiModelProperty(value = "下载标识3") private Integer downloadFlag3; @ApiModelProperty(value = "下载状态3") private Integer downloadState3; @ApiModelProperty(value = "文件名4") private String fileName4; @ApiModelProperty(value = "文件索引4") private Integer fileIndex4; @ApiModelProperty(value = "下载标识4") private Integer downloadFlag4; @ApiModelProperty(value = "下载状态4") private Integer downloadState4; @ApiModelProperty(value = "停止原因4") private Integer stopType4; @ApiModelProperty(value = "文件名5") private String fileName5; @ApiModelProperty(value = "文件索引5") private Integer fileIndex5; @ApiModelProperty(value = "下载标识5") private Integer downloadFlag5; @ApiModelProperty(value = "下载状态5") private Integer downloadState5; @ApiModelProperty(value = "文件名6") private String fileName6; @ApiModelProperty(value = "文件索引6") private Integer fileIndex6; @ApiModelProperty(value = "下载标识6") private Integer downloadFlag6; @ApiModelProperty(value = "下载状态6") private Integer downloadState6; @ApiModelProperty(value = "文件名7") private String fileName7; @ApiModelProperty(value = "文件索引7") private Integer fileIndex7; @ApiModelProperty(value = "下载状态7") private Integer downloadFlag7; @ApiModelProperty(value = "下载状态7") private Integer downloadState7; @ApiModelProperty(value = "文件名8") private String fileName8; @ApiModelProperty(value = "文件索引8") private Integer fileIndex8; @ApiModelProperty(value = "下载标识8") private Integer downloadFlag8; @ApiModelProperty(value = "下载状态8") private Integer downloadState8; @ApiModelProperty(value = "异常停止原因") private Integer stopReason; @ApiModelProperty(value = "下载状态[1:下载文件;2:生成文件;3:解析数据;4:导入完成]") private Integer downloadState; @ApiModelProperty(value = "当前下载进度") private Integer nowDataBlock; @ApiModelProperty(value = "总的数据块数") private Integer totalDataBlock; @ApiModelProperty(value = "文件1当前下载进度") private Integer nowDataBlock1; @ApiModelProperty(value = "文件1总的数据块数") private Integer totalDataBlock1; @ApiModelProperty(value = "文件2当前下载进度") private Integer nowDataBlock2; @ApiModelProperty(value = "文件2总的数据块数") private Integer totalDataBlock2; @ApiModelProperty(value = "文件3当前下载进度") private Integer nowDataBlock3; @ApiModelProperty(value = "文件3总的数据块数") private Integer totalDataBlock3; @ApiModelProperty(value = "文件4当前下载进度") private Integer nowDataBlock4; @ApiModelProperty(value = "文件4总的数据块数") private Integer totalDataBlock4; @ApiModelProperty(value = "文件5当前下载进度") private Integer nowDataBlock5; @ApiModelProperty(value = "文件5总的数据块数") private Integer totalDataBlock5; @ApiModelProperty(value = "文件6当前下载进度") private Integer nowDataBlock6; @ApiModelProperty(value = "文件6总的数据块数") private Integer totalDataBlock6; @ApiModelProperty(value = "文件7当前下载进度") private Integer nowDataBlock7; @ApiModelProperty(value = "文件7总的数据块数") private Integer totalDataBlock7; @ApiModelProperty(value = "文件8当前下载进度") private Integer nowDataBlock8; @ApiModelProperty(value = "文件8总的数据块数") private Integer totalDataBlock8; @ApiModelProperty(value = "读取的电池组个数") private Integer readbattcount; @ApiModelProperty(value = "电池组总组数") private Integer batttotalcount; @ApiModelProperty(value = "电池组列表名称,分割") private String battnamelist; } src/main/java/com/whyc/service/DevStateService.java
New file @@ -0,0 +1,21 @@ package com.whyc.service; import com.whyc.mapper.DevStateMapper; import com.whyc.pojo.Response; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class DevStateService { @Autowired(required = false) private DevStateMapper mapper; //查询所有的记录 public Response getAllDev(){ List list=mapper.selectList(null); return new Response().setII(1,list!=null,list,"查询所有的记录"); } } src/main/java/com/whyc/websocket/DevSocket.java
New file @@ -0,0 +1,82 @@ package com.whyc.websocket; import com.whyc.config.WebSocketConfig; import com.whyc.pojo.DevState; import com.whyc.pojo.Response; import com.whyc.service.DevStateService; 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 = "/dev",encoders = WebSocketEncoder.class,configurator = WebSocketConfig.class) public class DevSocket { private Session session; private static final int executeTime = 2000; private Thread thread; private volatile boolean runFlag=true; private volatile Map<String,Thread> threadMap = new HashMap<>(); private volatile Map<Long,Boolean> threadFlagMap = new HashMap<>(); private static DevStateService devService; @Autowired public void setHistoryService(DevStateService devService){ DevSocket.devService=devService; } @OnOpen public void onOpen(Session session){ this.session=session; Thread thread = new Thread() { @Override public void run() { try { while (!currentThread().isInterrupted()) { Response res = devService.getAllDev(); session.getBasicRemote().sendObject(res); sleep(4000); } } catch (Exception e) { this.interrupt(); } } }; thread.start(); this.thread = thread; } @OnMessage public void onMessage(Session session, String message){ this.session=session; } @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/java/com/whyc/websocket/WebSocketEncoder.java
New file @@ -0,0 +1,30 @@ package com.whyc.websocket; import com.google.gson.GsonBuilder; import com.whyc.pojo.Response; import javax.websocket.EncodeException; import javax.websocket.Encoder; import javax.websocket.EndpointConfig; /** * 编译器 */ public class WebSocketEncoder implements Encoder.Text<Response> { @Override public String encode(Response o) throws EncodeException { return new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create().toJson(o); } @Override public void init(EndpointConfig endpointConfig) { } @Override public void destroy() { } } src/main/resources/mapper/DevStateMapper.xml
New file @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.whyc.mapper.DevStateMapper"> </mapper>