qzyReal пре 2 година
родитељ
комит
7dff2eca55

+ 79 - 0
business-system/venues-system/src/main/java/com/pj/biz/TbCommandLogController.java

@@ -0,0 +1,79 @@
+package com.pj.biz;
+
+import java.util.List;
+
+import com.pj.project.tb_command_log.TbCommandLog;
+import com.pj.project.tb_command_log.TbCommandLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import com.pj.utils.sg.*;
+import com.pj.utils.so.*;
+import com.pj.project4sp.SP;
+
+import com.pj.current.satoken.StpUserUtil;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+
+/**
+ * Controller: tb_command_log --
+ *
+ * @author qzyReal
+ */
+@RestController
+@RequestMapping("/TbCommandLog/")
+public class TbCommandLogController {
+
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    TbCommandLogService tbCommandLogService;
+
+
+
+    /**
+     * 删
+     */
+    @RequestMapping("delete")
+    @SaCheckPermission(TbCommandLog.PERMISSION_CODE_DEL)
+    public AjaxJson delete(Long id) {
+        tbCommandLogService.delete(id);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 删 - 根据id列表
+     */
+    @RequestMapping("deleteByIds")
+    @SaCheckPermission(TbCommandLog.PERMISSION_CODE_DEL)
+    public AjaxJson deleteByIds() {
+        List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class);
+        int line = SP.publicMapper.deleteByIds(TbCommandLog.TABLE_NAME, ids);
+        return AjaxJson.getByLine(line);
+    }
+
+
+
+    /**
+     * 查 - 根据id
+     */
+    @RequestMapping("getById")
+    public AjaxJson getById(Long id) {
+        TbCommandLog t = tbCommandLogService.getById(id);
+        return AjaxJson.getSuccessData(t);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    @RequestMapping("getList")
+    public AjaxJson getList() {
+        SoMap so = SoMap.getRequestSoMap();
+        List<TbCommandLog> list = tbCommandLogService.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+
+}

+ 7 - 0
business-system/venues-system/src/main/java/com/pj/biz/TbTerminalController.java

@@ -117,5 +117,12 @@ public class TbTerminalController {
         return AjaxJson.getSuccess();
     }
 
+    @RequestMapping("sync-time")
+    @SaCheckPermission(TbTerminal.PERMISSION_CODE_SYNC_TIME)
+    public AjaxJson syncTime(Long id) {
+        tbTerminalService.asyncTime(id);
+        return AjaxJson.getSuccess();
+    }
+
 
 }

+ 1 - 1
sp-core/src/main/java/com/pj/current/netty/command/handler/impl/UploadCommandHandler.java

@@ -40,7 +40,7 @@ public class UploadCommandHandler implements IHandler {
         String key = myConfig.getCommandPrefix() + sn;
         String commandListStr = RedisUtil.get(key);
         List<String> list = JSONUtil.toList(commandListStr, String.class);
-        long delay = Long.parseLong(RandomUtil.randomNumbers(4));
+        long delay = Long.parseLong(RandomUtil.randomNumbers(3));
         for (String command : list) {
             RequestPackageDTO requestPackageDTO = JSONUtil.toBean(command, RequestPackageDTO.class);
             String taskId=RandomUtil.randomNumbers(16);

+ 2 - 23
sp-core/src/main/java/com/pj/current/netty/heart/HeartBeatHandler.java

@@ -41,15 +41,8 @@ public class HeartBeatHandler extends ChannelInboundHandlerAdapter {
     @Override
     public void channelActive(ChannelHandlerContext ctx) {
         //上线时同步时间===========
-        log.info("心跳设备上线,同步时间");
-        RequestPackageDTO dto = new RequestPackageDTO();
-        RequestPackageDTO.PayloadBean payloadBean = new RequestPackageDTO.PayloadBean();
-        JSONObject params = new JSONObject();
-        params.set("time", System.currentTimeMillis() / 1000);
-        payloadBean.setParams(params);
-        dto.setPayload(payloadBean);
-        ctx.write(dto);
-        ctx.flush();
+
+
     }
 
     /**
@@ -60,20 +53,6 @@ public class HeartBeatHandler extends ChannelInboundHandlerAdapter {
     @Override
     public void channelInactive(ChannelHandlerContext ctx) {
 
-        InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress();
-
-        String clientIp = insocket.getAddress().getHostAddress();
-
-        ChannelId channelId = ctx.channel().id();
-
-        //包含此客户端才去删除
-        if (CHANNEL_MAP.containsKey(channelId)) {
-            //删除连接
-            CHANNEL_MAP.remove(channelId);
-            System.out.println();
-            log.info("客户端【" + channelId + "】退出netty服务器[IP:" + clientIp + "--->PORT:" + insocket.getPort() + "]");
-            log.info("连接通道数量: " + CHANNEL_MAP.size());
-        }
     }
 
     /**

+ 105 - 0
sp-core/src/main/java/com/pj/project/tb_command_log/TbCommandLog.java

@@ -0,0 +1,105 @@
+package com.pj.project.tb_command_log;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.EqualsAndHashCode;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * Model: tb_command_log -- 
+ * @author qzyReal 
+ */
+@Data
+@Accessors(chain = true)
+@TableName(TbCommandLog.TABLE_NAME)
+@EqualsAndHashCode(callSuper = false)
+public class TbCommandLog extends Model<TbCommandLog> implements Serializable {
+
+	// ---------- 模块常量 ----------
+	/**
+	 * 序列化版本id 
+	 */
+	private static final long serialVersionUID = 1L;	
+	/**
+	 * 此模块对应的表名 
+	 */
+	public static final String TABLE_NAME = "tb_command_log";	
+	/**
+	 * 此模块对应的权限码 
+	 */
+	public static final String PERMISSION_CODE = "tb-command-log";	
+	public static final String PERMISSION_CODE_DEL = "tb-command-log-del";
+
+
+	// ---------- 表中字段 ----------
+	/**
+	 * 主键 
+	 */
+	@TableId(type = IdType.AUTO)
+	private Long id;	
+
+	/**
+	 * 部门ID 
+	 */
+	private Long deptId;	
+
+	/**
+	 * 命令 
+	 */
+	private String command;	
+
+	/**
+	 * 设备SN 
+	 */
+	private String sn;	
+
+	/**
+	 * 设备名 
+	 */
+	private String terminalName;	
+
+	/**
+	 * 通道 
+	 */
+	private String channelName;	
+
+	/**
+	 * 下发时间 
+	 */
+	private Date createTime;
+
+	/**
+	 * 回复时间 
+	 */
+	private Date responseTime;
+
+	/**
+	 * 消息ID 
+	 */
+	private String msgId;	
+
+	/**
+	 * 回复内容 
+	 */
+	private String responseContent;
+
+	private String createBy;
+
+	/**
+	 * 回复code 
+	 */
+	private Integer responseCode;	
+
+
+
+
+
+	
+
+
+}

+ 28 - 0
sp-core/src/main/java/com/pj/project/tb_command_log/TbCommandLogMapper.java

@@ -0,0 +1,28 @@
+package com.pj.project.tb_command_log;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+
+import com.pj.utils.so.*;
+	import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+* Mapper: tb_command_log -- 
+* @author qzyReal
+*/
+
+@Mapper
+@Repository
+public interface TbCommandLogMapper extends BaseMapper <TbCommandLog> {
+
+/**
+* 查集合 - 根据条件(参数为空时代表忽略指定条件)
+* @param so 参数集合
+* @return 数据列表
+*/
+List<TbCommandLog> getList(SoMap so);
+
+
+}

+ 1 - 0
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminal.java

@@ -41,6 +41,7 @@ public class TbTerminal extends Model<TbTerminal> implements Serializable {
 	public static final String PERMISSION_CODE_REBOOT = "tb-terminal-reboot";
 	public static final String PERMISSION_CODE_CLEAR = "tb-terminal-clear";
 	public static final String PERMISSION_CODE_OPEN= "tb-terminal-open";
+	public static final String PERMISSION_CODE_SYNC_TIME= "tb-terminal-sync-time";
 
 
 	// ---------- 表中字段 ----------

+ 37 - 0
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalService.java

@@ -200,6 +200,23 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
     }
 
     /**
+     * 查看设备属性,不记录日志
+     * @param funcId
+     * @param sn
+     */
+    public void checkOptions(String funcId, String sn) {
+        String msgId = RandomUtil.randomNumbers(8);
+        String key = myConfig.getCommandPrefix() + sn;
+        String commandStr = RedisUtil.get(key);
+        List<RequestPackageDTO> commandList = JSONUtil.toList(commandStr, RequestPackageDTO.class);
+        RequestPackageDTO commandDTO = new RequestPackageDTO();
+        commandDTO.setFuncId(funcId)
+                .setMsgId(msgId);
+        commandList.add(commandDTO);
+        RedisUtil.set(myConfig.getCommandPrefix() + sn, JSONUtil.toJsonStr(commandList));
+    }
+
+    /**
      * 设置心跳command=1,设备开始请求命令服务器接口
      *
      * @param sn sn码
@@ -270,6 +287,10 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         startHeartCommand(tbTerminal.getSn());
     }
 
+    /**
+     * 远程开门
+     * @param id
+     */
     public void open(Long id) {
         TbTerminal tbTerminal = this.getById(id);
         if (StrUtil.equals(tbTerminal.getState(),TbTerminal.StateType.OFFLINE.getState())){
@@ -278,4 +299,20 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         setCommand(CommandType.ISSUED_NORMALOPEN_COMMAND.getFuncId(), null, tbTerminal);
         startHeartCommand(tbTerminal.getSn());
     }
+
+    /**
+     * 同步时间
+     * @param id
+     */
+    public void asyncTime(Long id){
+        TbTerminal tbTerminal = this.getById(id);
+        if (StrUtil.equals(tbTerminal.getState(),TbTerminal.StateType.OFFLINE.getState())){
+            throw new BusinessException("设备已离线");
+        }
+        JSONObject params=new JSONObject();
+        params.set("time",System.currentTimeMillis()/1000);
+        setCommand(CommandType.SYNC_TIME_COMMAND.getFuncId(), params, tbTerminal);
+        startHeartCommand(tbTerminal.getSn());
+
+    }
 }

+ 6 - 3
sp-core/src/main/java/com/pj/project/tb_terminal/task/CheckTask.java

@@ -5,6 +5,7 @@ import com.pj.current.netty.command.constants.CommandType;
 import com.pj.project.tb_terminal.TbTerminal;
 import com.pj.project.tb_terminal.TbTerminalService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -21,12 +22,14 @@ public class CheckTask {
     @Resource
     private TbTerminalService tbTerminalService;
 
-    @Scheduled(fixedDelay = 300000)
+    @Scheduled(fixedDelay = 1800000)
+    @Async
     public void check() {
         List<TbTerminal> tbTerminalList = tbTerminalService.list(new QueryWrapper<>());
         tbTerminalList.forEach(tbTerminal -> {
-            tbTerminalService.setCommand(CommandType.ISSUED_OPTION_COMMAND.getFuncId(),null,tbTerminal);
-            tbTerminalService.startHeartCommand(tbTerminal.getSn());
+            String sn=tbTerminal.getSn();
+            tbTerminalService.checkOptions(CommandType.ISSUED_OPTION_COMMAND.getFuncId(),sn);
+            tbTerminalService.startHeartCommand(sn);
         });
 
     }

+ 1 - 1
sp-core/src/main/java/com/pj/project/tb_terminal/task/CommandDelayTask.java

@@ -29,7 +29,7 @@ public class CommandDelayTask extends Task {
     public void run() {
         log.info("延迟发送命令:{}",content);
         String channelId = cx.channel().id().asShortText();
-        RedisUtil.setBySecond(channelId, msgId, 10);
+        RedisUtil.setBySecond(channelId, msgId, 20);
         cx.write(content);
         cx.flush();
     }

+ 0 - 1
sp-core/src/main/java/com/pj/project/tb_terminal/task/StateTask.java

@@ -22,6 +22,5 @@ public class StateTask {
         List<String>snList=new ArrayList<>();
          HeartBeatHandler.STATE_CACHE.forEach(k->snList.add(HeartBeatHandler.STATE_CACHE.get(k,false)));
         tbTerminalService.offlineTerminal(snList);
-
     }
 }