From 0c5c9bf067a931b3e8dc768ac4f6ed2ec05b96ed Mon Sep 17 00:00:00 2001
From: hzj <826100833@qq.com>
Date: Thu, 16 Apr 2026 13:47:30 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4MQTT=E7=9B=B8=E5=85=B3?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pqs-common/common-core/pom.xml | 10 +-
.../device/controller/DeviceController.java | 257 ++-
.../device/device/service/IDeviceService.java | 214 +-
.../service/impl/DeviceServiceImpl.java | 711 +++---
.../com/njcn/device/utils/SocketClient.java | 2012 ++++++++---------
5 files changed, 1595 insertions(+), 1609 deletions(-)
diff --git a/pqs-common/common-core/pom.xml b/pqs-common/common-core/pom.xml
index cfca7d7ac..a399d0c3e 100644
--- a/pqs-common/common-core/pom.xml
+++ b/pqs-common/common-core/pom.xml
@@ -97,11 +97,11 @@
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
-
-
- com.github.tocrhz
- mqtt-spring-boot-starter
-
+
+
+
+
+
diff --git a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/controller/DeviceController.java b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/controller/DeviceController.java
index 6e9629011..bdabfb8c4 100644
--- a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/controller/DeviceController.java
+++ b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/controller/DeviceController.java
@@ -3,9 +3,6 @@ package com.njcn.device.device.controller;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.StrUtil;
-import com.github.tocrhz.mqtt.annotation.MqttSubscribe;
-import com.github.tocrhz.mqtt.annotation.NamedValue;
-import com.github.tocrhz.mqtt.annotation.Payload;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.enums.common.LogEnum;
@@ -27,12 +24,10 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.beans.BeanUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
-import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -57,132 +52,132 @@ public class DeviceController extends BaseController {
private final GeneralDeviceService generalDeviceService;
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/socketLine")
- @ApiOperation("获取监测点定值信息")
- public HttpResult socketLine(@RequestBody @Validated ConstantValueParam.Constant param) {
- String methodDescribe = getMethodDescribe("socketLine");
- if(StrUtil.isBlank(param.getIp())){
- param.setIp(RequestUtil.getRealIp());
- }
- String s = iDeviceService.sentLine(param);
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
-
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/updateSocketLine")
- @ApiOperation("修改监测点定值信息")
- public HttpResult updateSocketLine(@RequestBody @Validated ConstantValueParam.ValueData param) {
- String methodDescribe = getMethodDescribe("updateSocketLine");
- if(StrUtil.isBlank(param.getIp())){
- param.setIp(RequestUtil.getRealIp());
- }
- String s = iDeviceService.sentLineData(param);
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
-
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/socketDev")
- @ApiOperation("获取终端定值信息")
- public HttpResult socketDev(@RequestBody @Validated ConstantValueParam.Constant param) {
- String methodDescribe = getMethodDescribe("socketDev");
- if(StrUtil.isBlank(param.getIp())){
- param.setIp(RequestUtil.getRealIp());
- }
- String s = iDeviceService.sentDev(param);
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/updateSocketDev")
- @ApiOperation("修改终端定值信息")
- public HttpResult updateSocketDev(@RequestBody @Validated ConstantValueParam.ValueData param) {
- String methodDescribe = getMethodDescribe("updateSocketDev");
- if(StrUtil.isBlank(param.getIp())){
- param.setIp(RequestUtil.getRealIp());
- }
- String s = iDeviceService.sentDevData(param);
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
-
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/socketDevProperty")
- @ApiOperation("获取终端性能信息")
- public HttpResult socketDevProperty(String devID) {
- String methodDescribe = getMethodDescribe("socketDevProperty");
- String s = iDeviceService.socketDevProperty(devID);
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
-
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/socketDevPropertyClose")
- @ApiOperation("终端性能关闭")
- public HttpResult socketDevPropertyClose(String devID) {
- String methodDescribe = getMethodDescribe("socketDevPropertyClose");
- String s = iDeviceService.socketDevPropertyClose(devID);
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
-
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/realTimeData")
- @ApiOperation("监测点实时数据查看")
- public HttpResult realTimeData(String lineID) {
- String methodDescribe = getMethodDescribe("realTimeData");
- String s = iDeviceService.realTimeData(lineID);
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
-
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/heartRealTimeData")
- @ApiOperation("监测实施数据心跳")
- public HttpResult heartRealTimeData(String lineID) {
- String methodDescribe = getMethodDescribe("heartRealTimeData");
- String s = iDeviceService.heartRealTimeData(lineID);
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
-
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/closeRealTimeData")
- @ApiOperation("监测点实施数据关闭")
- public HttpResult closeRealTimeData(String lineID) {
- String methodDescribe = getMethodDescribe("closeRealTimeData");
- String s = iDeviceService.closeRealTimeData(lineID);
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
-
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/getDevUpgrades")
- @ApiOperation("终端版本升级")
- public HttpResult getDevUpgrades(@RequestBody @Validated ConstantValueParam.Upgrades param) {
- String methodDescribe = getMethodDescribe("getDevUpgrades");
- String s = iDeviceService.getDevUpgrades(param.getList(),param.getEdIndex());
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
-
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/closeUpgrades")
- @ApiOperation("终端升级取消")
- public HttpResult closeUpgrades(@RequestBody List devList) {
- String methodDescribe = getMethodDescribe("closeUpgrades");
- String s = iDeviceService.closeUpgrades(devList);
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
-
- @OperateInfo(info = LogEnum.SYSTEM_COMMON)
- @PostMapping("/restartDev")
- @ApiOperation("重启装置命令")
- public HttpResult restartDev(@RequestBody List devList) {
- String methodDescribe = getMethodDescribe("restartDev");
- String s = iDeviceService.restartDev(devList);
- return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
- }
- @MqttSubscribe(value = "/zl/devData/{devID}",qos = 1)
- public void responseRtData(String topic, @NamedValue("devID") String pageId, MqttMessage message, @Payload String payload) {
- Console.log("receive from : {}", topic);
- Console.log("receive from : {}", pageId);
- Console.log("message : {}", message.getPayload());
- Console.log("message payload : {}", new String(message.getPayload(), StandardCharsets.UTF_8));
- Console.log("string payload : {}", payload);
- }
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/socketLine")
+// @ApiOperation("获取监测点定值信息")
+// public HttpResult socketLine(@RequestBody @Validated ConstantValueParam.Constant param) {
+// String methodDescribe = getMethodDescribe("socketLine");
+// if(StrUtil.isBlank(param.getIp())){
+// param.setIp(RequestUtil.getRealIp());
+// }
+// String s = iDeviceService.sentLine(param);
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+//
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/updateSocketLine")
+// @ApiOperation("修改监测点定值信息")
+// public HttpResult updateSocketLine(@RequestBody @Validated ConstantValueParam.ValueData param) {
+// String methodDescribe = getMethodDescribe("updateSocketLine");
+// if(StrUtil.isBlank(param.getIp())){
+// param.setIp(RequestUtil.getRealIp());
+// }
+// String s = iDeviceService.sentLineData(param);
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+//
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/socketDev")
+// @ApiOperation("获取终端定值信息")
+// public HttpResult socketDev(@RequestBody @Validated ConstantValueParam.Constant param) {
+// String methodDescribe = getMethodDescribe("socketDev");
+// if(StrUtil.isBlank(param.getIp())){
+// param.setIp(RequestUtil.getRealIp());
+// }
+// String s = iDeviceService.sentDev(param);
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/updateSocketDev")
+// @ApiOperation("修改终端定值信息")
+// public HttpResult updateSocketDev(@RequestBody @Validated ConstantValueParam.ValueData param) {
+// String methodDescribe = getMethodDescribe("updateSocketDev");
+// if(StrUtil.isBlank(param.getIp())){
+// param.setIp(RequestUtil.getRealIp());
+// }
+// String s = iDeviceService.sentDevData(param);
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+//
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/socketDevProperty")
+// @ApiOperation("获取终端性能信息")
+// public HttpResult socketDevProperty(String devID) {
+// String methodDescribe = getMethodDescribe("socketDevProperty");
+// String s = iDeviceService.socketDevProperty(devID);
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+//
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/socketDevPropertyClose")
+// @ApiOperation("终端性能关闭")
+// public HttpResult socketDevPropertyClose(String devID) {
+// String methodDescribe = getMethodDescribe("socketDevPropertyClose");
+// String s = iDeviceService.socketDevPropertyClose(devID);
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+//
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/realTimeData")
+// @ApiOperation("监测点实时数据查看")
+// public HttpResult realTimeData(String lineID) {
+// String methodDescribe = getMethodDescribe("realTimeData");
+// String s = iDeviceService.realTimeData(lineID);
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+//
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/heartRealTimeData")
+// @ApiOperation("监测实施数据心跳")
+// public HttpResult heartRealTimeData(String lineID) {
+// String methodDescribe = getMethodDescribe("heartRealTimeData");
+// String s = iDeviceService.heartRealTimeData(lineID);
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+//
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/closeRealTimeData")
+// @ApiOperation("监测点实施数据关闭")
+// public HttpResult closeRealTimeData(String lineID) {
+// String methodDescribe = getMethodDescribe("closeRealTimeData");
+// String s = iDeviceService.closeRealTimeData(lineID);
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+//
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/getDevUpgrades")
+// @ApiOperation("终端版本升级")
+// public HttpResult getDevUpgrades(@RequestBody @Validated ConstantValueParam.Upgrades param) {
+// String methodDescribe = getMethodDescribe("getDevUpgrades");
+// String s = iDeviceService.getDevUpgrades(param.getList(),param.getEdIndex());
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+//
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/closeUpgrades")
+// @ApiOperation("终端升级取消")
+// public HttpResult closeUpgrades(@RequestBody List devList) {
+// String methodDescribe = getMethodDescribe("closeUpgrades");
+// String s = iDeviceService.closeUpgrades(devList);
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+//
+// @OperateInfo(info = LogEnum.SYSTEM_COMMON)
+// @PostMapping("/restartDev")
+// @ApiOperation("重启装置命令")
+// public HttpResult restartDev(@RequestBody List devList) {
+// String methodDescribe = getMethodDescribe("restartDev");
+// String s = iDeviceService.restartDev(devList);
+// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, s, methodDescribe);
+// }
+// @MqttSubscribe(value = "/zl/devData/{devID}",qos = 1)
+// public void responseRtData(String topic, @NamedValue("devID") String pageId, MqttMessage message, @Payload String payload) {
+// Console.log("receive from : {}", topic);
+// Console.log("receive from : {}", pageId);
+// Console.log("message : {}", message.getPayload());
+// Console.log("message payload : {}", new String(message.getPayload(), StandardCharsets.UTF_8));
+// Console.log("string payload : {}", payload);
+// }
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/updateDevCheckTime")
diff --git a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/service/IDeviceService.java b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/service/IDeviceService.java
index 91af1aabb..41a7d4e4d 100644
--- a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/service/IDeviceService.java
+++ b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/service/IDeviceService.java
@@ -19,113 +19,113 @@ import java.util.List;
public interface IDeviceService extends IService {
- /***
- * @Description: mqtt获取外部定值
- * @param param
- * @return: java.lang.String
- * @Author: wr
- * @Date: 2023/8/14 10:17
- */
- String sentLine(ConstantValueParam.Constant param);
-
- /***
- * @Description: mqtt修改外部定值
- * @param param
- * @return: java.lang.String
- * @Author: wr
- * @Date: 2023/8/14 11:07
- */
- String sentLineData(ConstantValueParam.ValueData param);
-
- /**
- * @param param
- * @Description: mqtt获取内部定值
- * @return: java.lang.String
- * @Author: wr
- * @Date: 2023/8/14 14:51
- */
- String sentDev(ConstantValueParam.Constant param);
-
- /**
- * @param param
- * @Description: mqtt修改内部定值
- * @return: java.lang.String
- * @Author: wr
- * @Date: 2023/8/14 14:51
- */
- String sentDevData(ConstantValueParam.ValueData param);
-
- /**
- * @param devID
- * @Description: 终端性能查看
- * @return: java.lang.String
- * @Author: wr
- * @Date: 2023/8/15 11:27
- */
- String socketDevProperty(String devID);
-
- /**
- * @param devID
- * @Description: 终端性能关闭
- * @return: java.lang.String
- * @Author: wr
- * @Date: 2023/8/15 16:13
- */
- String socketDevPropertyClose(String devID);
-
- /**
- * @param lineIndex
- * @Description: 监测点实时数据查看
- * @return: java.lang.String
- * @Author: wr
- * @Date: 2023/8/15 16:13
- */
- String realTimeData(String lineIndex);
-
- /**
- * @param lineIndex
- * @Description: 监测实施数据心跳
- * @return: java.lang.String
- * @Author: wr
- * @Date: 2023/8/15 16:14
- */
- String heartRealTimeData(String lineIndex);
-
- /**
- * @param lineIndex
- * @Description: 监测点实施数据关闭
- * @return: java.lang.String
- * @Author: wr
- * @Date: 2023/8/15 16:14
- */
- String closeRealTimeData(String lineIndex);
-
- /**
- * 终端版本升级,批量升级条件必须是相同终端系列的终端才能升级
- *
- * @param list
- * @param edIndex
- * @return
- */
- String getDevUpgrades(List list, String edIndex);
-
- /**
- * @param devList
- * @Description: 终端升级取消
- * @return: java.lang.String
- * @Author: wr
- * @Date: 2023/8/17 9:24
- */
- String closeUpgrades(List devList);
-
- /**
- * @param devList
- * @Description: 重启装置命令
- * @return: java.lang.String
- * @Author: wr
- * @Date: 2023/8/17 9:24
- */
- String restartDev(List devList);
+// /***
+// * @Description: mqtt获取外部定值
+// * @param param
+// * @return: java.lang.String
+// * @Author: wr
+// * @Date: 2023/8/14 10:17
+// */
+// String sentLine(ConstantValueParam.Constant param);
+//
+// /***
+// * @Description: mqtt修改外部定值
+// * @param param
+// * @return: java.lang.String
+// * @Author: wr
+// * @Date: 2023/8/14 11:07
+// */
+// String sentLineData(ConstantValueParam.ValueData param);
+//
+// /**
+// * @param param
+// * @Description: mqtt获取内部定值
+// * @return: java.lang.String
+// * @Author: wr
+// * @Date: 2023/8/14 14:51
+// */
+// String sentDev(ConstantValueParam.Constant param);
+//
+// /**
+// * @param param
+// * @Description: mqtt修改内部定值
+// * @return: java.lang.String
+// * @Author: wr
+// * @Date: 2023/8/14 14:51
+// */
+// String sentDevData(ConstantValueParam.ValueData param);
+//
+// /**
+// * @param devID
+// * @Description: 终端性能查看
+// * @return: java.lang.String
+// * @Author: wr
+// * @Date: 2023/8/15 11:27
+// */
+// String socketDevProperty(String devID);
+//
+// /**
+// * @param devID
+// * @Description: 终端性能关闭
+// * @return: java.lang.String
+// * @Author: wr
+// * @Date: 2023/8/15 16:13
+// */
+// String socketDevPropertyClose(String devID);
+//
+// /**
+// * @param lineIndex
+// * @Description: 监测点实时数据查看
+// * @return: java.lang.String
+// * @Author: wr
+// * @Date: 2023/8/15 16:13
+// */
+// String realTimeData(String lineIndex);
+//
+// /**
+// * @param lineIndex
+// * @Description: 监测实施数据心跳
+// * @return: java.lang.String
+// * @Author: wr
+// * @Date: 2023/8/15 16:14
+// */
+// String heartRealTimeData(String lineIndex);
+//
+// /**
+// * @param lineIndex
+// * @Description: 监测点实施数据关闭
+// * @return: java.lang.String
+// * @Author: wr
+// * @Date: 2023/8/15 16:14
+// */
+// String closeRealTimeData(String lineIndex);
+//
+// /**
+// * 终端版本升级,批量升级条件必须是相同终端系列的终端才能升级
+// *
+// * @param list
+// * @param edIndex
+// * @return
+// */
+// String getDevUpgrades(List list, String edIndex);
+//
+// /**
+// * @param devList
+// * @Description: 终端升级取消
+// * @return: java.lang.String
+// * @Author: wr
+// * @Date: 2023/8/17 9:24
+// */
+// String closeUpgrades(List devList);
+//
+// /**
+// * @param devList
+// * @Description: 重启装置命令
+// * @return: java.lang.String
+// * @Author: wr
+// * @Date: 2023/8/17 9:24
+// */
+// String restartDev(List devList);
/**
* @param devId 装置id
diff --git a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/service/impl/DeviceServiceImpl.java b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/service/impl/DeviceServiceImpl.java
index 95e082553..eda2328d5 100644
--- a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/service/impl/DeviceServiceImpl.java
+++ b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/device/service/impl/DeviceServiceImpl.java
@@ -1,10 +1,6 @@
package com.njcn.device.device.service.impl;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -14,16 +10,11 @@ import com.njcn.device.device.mapper.DeviceMapper;
import com.njcn.device.device.service.IDeviceService;
import com.njcn.device.device.service.ProgramVersionService;
import com.njcn.device.line.mapper.LineMapper;
-import com.njcn.device.pq.pojo.advanced.*;
-import com.njcn.device.pq.pojo.param.ConstantValueParam;
-import com.njcn.device.pq.pojo.po.DevVersion;
+
import com.njcn.device.pq.pojo.po.Device;
-import com.njcn.device.pq.pojo.po.Line;
-import com.njcn.device.pq.pojo.po.Version;
+
import com.njcn.device.pq.pojo.vo.DevStatusNumVO;
-import com.njcn.device.pq.pojo.vo.DeviceIpRVO;
-import com.njcn.device.utils.SocketClient;
-import com.njcn.web.utils.RequestUtil;
+
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -45,360 +36,360 @@ import java.util.stream.Collectors;
public class DeviceServiceImpl extends ServiceImpl implements IDeviceService {
private final LineMapper lineMapper;
- private final SocketClient socketClient;
+// private final SocketClient socketClient;
private final DevVersionMapper devVersionMapper;
private final ProgramVersionService programVersionService;
@Value("${socket.port:60000}")
private Integer socketPort;
- @Override
- public String sentLine(ConstantValueParam.Constant param) {
- try {
- //获取根据监测点获取终端信息
- UpDevVO upDevVO = lineMapper.getDevInfo(param.getId());
- //查询前置ip
- String host = lineMapper.getNodeIp(upDevVO.getDevIndex(),0);
- //拼接属性
- ContValueRVO upParamVO = new ContValueRVO();
- ContValueVO valueVO = new ContValueVO();
- valueVO.setType(param.getType());
- valueVO.setLineid(param.getId());
- valueVO.setHander(param.getHander());
- JSONObject jsonStr = new JSONObject(valueVO);
- Integer len = jsonStr.toString().length();
- upParamVO.setLen(len.toString());
- upParamVO.setData(valueVO);
- JSONObject jsonObject = new JSONObject(upParamVO);
- String str = jsonObject.toString();
- List devList = new ArrayList<>();
- devList.add(upDevVO);
- return socketClient.sentLine(param.getIp(), str, host, socketPort, "wr", devList);
- } catch (Exception e) {
- return "获取定值失败";
- }
-
- }
-
- @Override
- public String sentLineData(ConstantValueParam.ValueData param) {
- try {
- //获取根据监测点获取终端信息
- UpDevVO upDevVO = lineMapper.getDevInfo(param.getId());
- //查询前置ip
- String host = lineMapper.getNodeIp(upDevVO.getDevIndex(),0);
- ContUpdateValueRVO upParamVO = new ContUpdateValueRVO();
- ContUpdateValueVO valueVO = new ContUpdateValueVO();
- valueVO.setType(param.getType());
- valueVO.setLineid(param.getId());
- valueVO.setHander(param.getHander());
- float[] intArr;
- if (StrUtil.isBlank(param.getInterValue())) {
- intArr = new float[0];
- } else {
- String[] valueArr = param.getInterValue().split(",");
- intArr = new float[valueArr.length];
- for (int i = 0; i < valueArr.length; i++) {
- intArr[i] = Float.parseFloat(valueArr[i]);
- }
- }
- valueVO.setValue(intArr);
- JSONObject jsonStr = new JSONObject(valueVO);
- Integer len = jsonStr.toString().length();
- upParamVO.setLen(len.toString());
- upParamVO.setData(valueVO);
- JSONObject jsonObject = new JSONObject(upParamVO);
- String str = jsonObject.toString();
- List devList = new ArrayList<>();
- devList.add(upDevVO);
- return socketClient.sentLine(param.getIp(), str, host, socketPort, "wr", devList);
- } catch (Exception e) {
- return "运行失败";
- }
- }
-
- @Override
- public String sentDev(ConstantValueParam.Constant param) {
- try {
- Line line = lineMapper.selectById(param.getId());
- UpDevVO upDevVO = new UpDevVO();
- upDevVO.setDevIndex(line.getId());
- upDevVO.setDevName(line.getName());
- String host = lineMapper.getNodeIp(line.getId(),1);
- ContValueRVO upParamVO = new ContValueRVO();
- ContValueVO valueVO = new ContValueVO();
- valueVO.setType(param.getType());
- valueVO.setIndex(param.getId());
- valueVO.setHander(param.getHander());
- JSONObject jsonStr = new JSONObject(valueVO);
- Integer len = jsonStr.toString().length();
- upParamVO.setLen(len.toString());
- upParamVO.setData(valueVO);
- JSONObject jsonObject = new JSONObject(upParamVO);
- String str = jsonObject.toString();
- List devList = new ArrayList<>();
- devList.add(upDevVO);
- return socketClient.sentDZDev(param.getIp(), str, host, socketPort, "wr", devList);
- } catch (Exception e) {
- return "获取定值失败";
- }
- }
-
- @Override
- public String sentDevData(ConstantValueParam.ValueData param) {
- try {
- Line line = lineMapper.selectById(param.getId());
- UpDevVO upDevVO = new UpDevVO();
- upDevVO.setDevIndex(line.getId());
- upDevVO.setDevName(line.getName());
- String host = lineMapper.getNodeIp(line.getId(),1);
- ContUpdateDevValueRVO upParamVO = new ContUpdateDevValueRVO();
- ContUpdateDevValueVO valueVO = new ContUpdateDevValueVO();
- valueVO.setType(param.getType());
- valueVO.setIndex(line.getId());
- valueVO.setHander(String.valueOf(param.getHander()));
- int[] intArr;
- if (StrUtil.isBlank(param.getInterValue())) {
- intArr = new int[0];
- } else {
- String[] valueArr = param.getInterValue().split(",");
- intArr = new int[valueArr.length];
- for (int i = 0; i < valueArr.length; i++) {
- intArr[i] = Integer.parseInt(valueArr[i]);
- }
- }
- valueVO.setInterValue(intArr);
- JSONObject jsonStr = new JSONObject(valueVO);
- Integer len = jsonStr.toString().length();
- upParamVO.setLen(len.toString());
- upParamVO.setData(valueVO);
- JSONObject jsonObject = new JSONObject(upParamVO);
- String str = jsonObject.toString();
-
- List devList = new ArrayList<>();
- devList.add(upDevVO);
- return socketClient.sentDZDev(param.getIp(), str, host, socketPort, "wr", devList);
- } catch (Exception e) {
- return "运行失败";
- }
- }
-
- @Override
- public String socketDevProperty(String devID) {
- String host = lineMapper.getNodeIp(devID,1);
- if(StrUtil.isBlank(host)){
- return "前置ip获取失败";
- }
- JSONObject jsonObject = new JSONObject();
- Map map = new HashMap<>();
- map.put("type","190");
- map.put("index",devID);
- map.put("hander","1");
- jsonObject.set("data", map);
- Integer len = jsonObject.get("data").toString().length();
- jsonObject.set("len", len.toString());
- socketClient.showProperty(jsonObject.toString(),host,socketPort,RequestUtil.getLoginName());
- return "终端性能获取成功";
- }
-
- @Override
- public String socketDevPropertyClose(String devID) {
- String host = lineMapper.getNodeIp(devID,1);
- try {
- JSONObject jsonObject = new JSONObject();
- Map map = new HashMap<>();
- map.put("type", "190");
- map.put("index", devID);
- map.put("hander", "0");
- jsonObject.set("data", map);
- Integer len = jsonObject.get("data").toString().length();
- jsonObject.set("len", len.toString());
- socketClient.closeDevSocket(jsonObject.toString(),host,socketPort,RequestUtil.getLoginName());
- return "执行成功";
- }catch (Exception e){
- return "执行失败";
- }
- }
-
- @Override
- public String realTimeData(String lineIndex) {
- //查询前置ip
- String host = lineMapper.getNodeIp(lineIndex,0);
- if(StrUtil.isBlank(host)){
- return "设备前置机服务器配置异常,请联系管理员";
- }else {
- JSONObject jsonObject = new JSONObject();
- jsonObject.set("LineId", lineIndex);
- jsonObject.set("type", 0);
- JSONObject jsonObject1 = new JSONObject();
- jsonObject1.set("len",0);
- jsonObject1.set("data",jsonObject);
- socketClient.realTimeData(jsonObject1.toString(),host,socketPort,lineIndex);
- }
- return "请求成功";
- }
-
- @Override
- public String heartRealTimeData(String lineIndex) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.set("LineId", lineIndex);
- jsonObject.set("type", 1);
- JSONObject jsonObject1 = new JSONObject();
- jsonObject1.set("len", 0);
- jsonObject1.set("data", jsonObject);
- String host = lineMapper.getNodeIp(lineIndex,0);
- socketClient.heartRealData(jsonObject1.toString(),host,socketPort,lineIndex);
- return "实时数据心跳请求成功";
- }
-
- @Override
- public String closeRealTimeData(String lineIndex) {
- socketClient.closeRealData(lineIndex);
- return "关闭实时数据请求成功";
- }
-
- @Override
- public String getDevUpgrades(List list, String edIndex) {
- List resTemlist = new ArrayList<>();
-
- List relist = lineMapper.getDevicesIp(list);
- //判断设备版本号
- Integer isExit = devVersionMapper.selectCount(new LambdaQueryWrapper()
- .eq(DevVersion::getVersionId,edIndex)
- .in(DevVersion::getLineId,list)
- .eq(DevVersion::getState,1)
- );
- if (isExit > 0) {
- return "请勿选择相同版本号升级";
- }
- if (!CollectionUtil.isEmpty(relist)) {
- Version version = programVersionService.getById(edIndex);
- String series = version.getDevType();
- //判断设备是否存在相同型号
- for (DeviceIpRVO deviceIpRVO : relist) {
- if (!series.equals(deviceIpRVO.getDevSeries())) {
- return "当前装置版本系列与目标版本系列不相同";
- }
- }
-
- //判断是否断开
- if (relist.stream().filter(w -> w.getComFlag() == 0).findAny().isPresent()) {
- return "存在通讯中断设备";
- }
-
-
- Set set = new HashSet<>();
- for (DeviceIpRVO d : relist) {
- set.add(d.getIp());
- }
- Iterator iterator = set.iterator();
- while (iterator.hasNext()) {
- List devIndex = new ArrayList<>();
- DeviceIpRVO deviceIpRVO = new DeviceIpRVO();
- String ip = iterator.next();
- for (DeviceIpRVO d : relist) {
- UpDevVO upDevVO = new UpDevVO();
- upDevVO.setDevIndex(d.getDevIndex());
- upDevVO.setDevName(d.getDevName());
- if (ip.equals(d.getIp())) {
- devIndex.add(upDevVO);
- }
- }
- deviceIpRVO.setIp(ip);
- deviceIpRVO.setDevlist(devIndex);
- resTemlist.add(deviceIpRVO);
- }
- } else {
- return "存在未知错误";
- }
- for (DeviceIpRVO deviceIpRVO : resTemlist) {
- String ip = deviceIpRVO.getIp();
- List devlist = deviceIpRVO.getDevlist();
- UpDataVO upDataVO = new UpDataVO();
- UpParamVO upParamVO = new UpParamVO();
- upDataVO.setTerminal(devlist);
- upDataVO.setType("180");
- upDataVO.setEdIndex(edIndex);
- upDataVO.setUserIndex(RequestUtil.getUserIndex());
- JSONObject jsonstr = new JSONObject(upDataVO);
- Integer len = jsonstr.toString().length();
- upParamVO.setData(upDataVO);
- upParamVO.setLen(len.toString());
- JSONObject jsonObject = new JSONObject(upParamVO);
- String str = jsonObject.toString();
- socketClient.sentUpgrades(str, ip, socketPort, RequestUtil.getLoginName(), edIndex, devlist);
- }
- return "运行成功";
- }
-
- @Override
- public String closeUpgrades(List devList) {
- List relist = lineMapper.getDevicesIp(devList);
- if(CollectionUtil.isEmpty(relist)){
- return "前置机为空";
- }else {
- List nodeIp = relist.stream().map(DeviceIpRVO::getIp).distinct().collect(Collectors.toList());
- for(String ip: nodeIp){
- List devLl= relist.stream().filter(item->item.getIp().equals(ip)).collect(Collectors.toList());
- if(CollectionUtil.isEmpty(devLl)){
- return "出错啦";
- }
-
- List list = new ArrayList<>();
- for(DeviceIpRVO devRVO:devLl){
- JSONObject dev = new JSONObject();
- dev.put("devIndex",devRVO.getDevIndex());
- dev.put("devName",devRVO.getDevName());
- list.add(dev);
- }
- JSONObject jsonObject = new JSONObject();
- jsonObject.set("terminal", list);
- jsonObject.set("type", 182);
- JSONObject jsonObject1 = new JSONObject();
- jsonObject1.set("len", 0);
- jsonObject1.set("data", jsonObject);
- socketClient.cancelUp(jsonObject1.toString(),ip,socketPort,devLl.size());
- }
- }
- return "取消命令发送成功";
- }
-
- @Override
- public String restartDev(List devList) {
- List relist = lineMapper.getDevicesIp(devList);
- if(CollUtil.isEmpty(relist)){
- return "前置机为空";
- }else {
- List nodeIp = relist.stream().map(DeviceIpRVO::getIp).distinct().collect(Collectors.toList());
- for(String ip: nodeIp){
- List devLl = relist.stream().filter(item->item.getIp().equals(ip)).collect(Collectors.toList());
- if(CollUtil.isEmpty(devLl)){
- return "出错啦";
- }
-
- List list = new ArrayList<>();
- List devIn = new ArrayList<>();
- for(DeviceIpRVO devRVO:devLl){
- devIn.add(devRVO.getDevIndex());
- JSONObject dev = new JSONObject();
- dev.set("devIndex", devRVO.getDevIndex());
- dev.set("devName", devRVO.getDevName());
- list.add(dev);
- }
-
- JSONObject jsonObject = new JSONObject();
- jsonObject.set("terminal", list);
- jsonObject.set("type", 181);
- jsonObject.set("userIndex", RequestUtil.getUserIndex());
- JSONObject jsonObject1 = new JSONObject();
- jsonObject1.set("len", 0);
- jsonObject1.set("data", jsonObject);
-
- socketClient.restartDev(jsonObject1.toString(),ip,socketPort,devIn);
- }
- }
- return "命令发送成功";
- }
+// @Override
+// public String sentLine(ConstantValueParam.Constant param) {
+// try {
+// //获取根据监测点获取终端信息
+// UpDevVO upDevVO = lineMapper.getDevInfo(param.getId());
+// //查询前置ip
+// String host = lineMapper.getNodeIp(upDevVO.getDevIndex(),0);
+// //拼接属性
+// ContValueRVO upParamVO = new ContValueRVO();
+// ContValueVO valueVO = new ContValueVO();
+// valueVO.setType(param.getType());
+// valueVO.setLineid(param.getId());
+// valueVO.setHander(param.getHander());
+// JSONObject jsonStr = new JSONObject(valueVO);
+// Integer len = jsonStr.toString().length();
+// upParamVO.setLen(len.toString());
+// upParamVO.setData(valueVO);
+// JSONObject jsonObject = new JSONObject(upParamVO);
+// String str = jsonObject.toString();
+// List devList = new ArrayList<>();
+// devList.add(upDevVO);
+// return socketClient.sentLine(param.getIp(), str, host, socketPort, "wr", devList);
+// } catch (Exception e) {
+// return "获取定值失败";
+// }
+//
+// }
+//
+// @Override
+// public String sentLineData(ConstantValueParam.ValueData param) {
+// try {
+// //获取根据监测点获取终端信息
+// UpDevVO upDevVO = lineMapper.getDevInfo(param.getId());
+// //查询前置ip
+// String host = lineMapper.getNodeIp(upDevVO.getDevIndex(),0);
+// ContUpdateValueRVO upParamVO = new ContUpdateValueRVO();
+// ContUpdateValueVO valueVO = new ContUpdateValueVO();
+// valueVO.setType(param.getType());
+// valueVO.setLineid(param.getId());
+// valueVO.setHander(param.getHander());
+// float[] intArr;
+// if (StrUtil.isBlank(param.getInterValue())) {
+// intArr = new float[0];
+// } else {
+// String[] valueArr = param.getInterValue().split(",");
+// intArr = new float[valueArr.length];
+// for (int i = 0; i < valueArr.length; i++) {
+// intArr[i] = Float.parseFloat(valueArr[i]);
+// }
+// }
+// valueVO.setValue(intArr);
+// JSONObject jsonStr = new JSONObject(valueVO);
+// Integer len = jsonStr.toString().length();
+// upParamVO.setLen(len.toString());
+// upParamVO.setData(valueVO);
+// JSONObject jsonObject = new JSONObject(upParamVO);
+// String str = jsonObject.toString();
+// List devList = new ArrayList<>();
+// devList.add(upDevVO);
+// return socketClient.sentLine(param.getIp(), str, host, socketPort, "wr", devList);
+// } catch (Exception e) {
+// return "运行失败";
+// }
+// }
+//
+// @Override
+// public String sentDev(ConstantValueParam.Constant param) {
+// try {
+// Line line = lineMapper.selectById(param.getId());
+// UpDevVO upDevVO = new UpDevVO();
+// upDevVO.setDevIndex(line.getId());
+// upDevVO.setDevName(line.getName());
+// String host = lineMapper.getNodeIp(line.getId(),1);
+// ContValueRVO upParamVO = new ContValueRVO();
+// ContValueVO valueVO = new ContValueVO();
+// valueVO.setType(param.getType());
+// valueVO.setIndex(param.getId());
+// valueVO.setHander(param.getHander());
+// JSONObject jsonStr = new JSONObject(valueVO);
+// Integer len = jsonStr.toString().length();
+// upParamVO.setLen(len.toString());
+// upParamVO.setData(valueVO);
+// JSONObject jsonObject = new JSONObject(upParamVO);
+// String str = jsonObject.toString();
+// List devList = new ArrayList<>();
+// devList.add(upDevVO);
+// return socketClient.sentDZDev(param.getIp(), str, host, socketPort, "wr", devList);
+// } catch (Exception e) {
+// return "获取定值失败";
+// }
+// }
+//
+// @Override
+// public String sentDevData(ConstantValueParam.ValueData param) {
+// try {
+// Line line = lineMapper.selectById(param.getId());
+// UpDevVO upDevVO = new UpDevVO();
+// upDevVO.setDevIndex(line.getId());
+// upDevVO.setDevName(line.getName());
+// String host = lineMapper.getNodeIp(line.getId(),1);
+// ContUpdateDevValueRVO upParamVO = new ContUpdateDevValueRVO();
+// ContUpdateDevValueVO valueVO = new ContUpdateDevValueVO();
+// valueVO.setType(param.getType());
+// valueVO.setIndex(line.getId());
+// valueVO.setHander(String.valueOf(param.getHander()));
+// int[] intArr;
+// if (StrUtil.isBlank(param.getInterValue())) {
+// intArr = new int[0];
+// } else {
+// String[] valueArr = param.getInterValue().split(",");
+// intArr = new int[valueArr.length];
+// for (int i = 0; i < valueArr.length; i++) {
+// intArr[i] = Integer.parseInt(valueArr[i]);
+// }
+// }
+// valueVO.setInterValue(intArr);
+// JSONObject jsonStr = new JSONObject(valueVO);
+// Integer len = jsonStr.toString().length();
+// upParamVO.setLen(len.toString());
+// upParamVO.setData(valueVO);
+// JSONObject jsonObject = new JSONObject(upParamVO);
+// String str = jsonObject.toString();
+//
+// List devList = new ArrayList<>();
+// devList.add(upDevVO);
+// return socketClient.sentDZDev(param.getIp(), str, host, socketPort, "wr", devList);
+// } catch (Exception e) {
+// return "运行失败";
+// }
+// }
+//
+// @Override
+// public String socketDevProperty(String devID) {
+// String host = lineMapper.getNodeIp(devID,1);
+// if(StrUtil.isBlank(host)){
+// return "前置ip获取失败";
+// }
+// JSONObject jsonObject = new JSONObject();
+// Map map = new HashMap<>();
+// map.put("type","190");
+// map.put("index",devID);
+// map.put("hander","1");
+// jsonObject.set("data", map);
+// Integer len = jsonObject.get("data").toString().length();
+// jsonObject.set("len", len.toString());
+// socketClient.showProperty(jsonObject.toString(),host,socketPort,RequestUtil.getLoginName());
+// return "终端性能获取成功";
+// }
+//
+// @Override
+// public String socketDevPropertyClose(String devID) {
+// String host = lineMapper.getNodeIp(devID,1);
+// try {
+// JSONObject jsonObject = new JSONObject();
+// Map map = new HashMap<>();
+// map.put("type", "190");
+// map.put("index", devID);
+// map.put("hander", "0");
+// jsonObject.set("data", map);
+// Integer len = jsonObject.get("data").toString().length();
+// jsonObject.set("len", len.toString());
+// socketClient.closeDevSocket(jsonObject.toString(),host,socketPort,RequestUtil.getLoginName());
+// return "执行成功";
+// }catch (Exception e){
+// return "执行失败";
+// }
+// }
+//
+// @Override
+// public String realTimeData(String lineIndex) {
+// //查询前置ip
+// String host = lineMapper.getNodeIp(lineIndex,0);
+// if(StrUtil.isBlank(host)){
+// return "设备前置机服务器配置异常,请联系管理员";
+// }else {
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.set("LineId", lineIndex);
+// jsonObject.set("type", 0);
+// JSONObject jsonObject1 = new JSONObject();
+// jsonObject1.set("len",0);
+// jsonObject1.set("data",jsonObject);
+// socketClient.realTimeData(jsonObject1.toString(),host,socketPort,lineIndex);
+// }
+// return "请求成功";
+// }
+//
+// @Override
+// public String heartRealTimeData(String lineIndex) {
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.set("LineId", lineIndex);
+// jsonObject.set("type", 1);
+// JSONObject jsonObject1 = new JSONObject();
+// jsonObject1.set("len", 0);
+// jsonObject1.set("data", jsonObject);
+// String host = lineMapper.getNodeIp(lineIndex,0);
+// socketClient.heartRealData(jsonObject1.toString(),host,socketPort,lineIndex);
+// return "实时数据心跳请求成功";
+// }
+//
+// @Override
+// public String closeRealTimeData(String lineIndex) {
+// socketClient.closeRealData(lineIndex);
+// return "关闭实时数据请求成功";
+// }
+//
+// @Override
+// public String getDevUpgrades(List list, String edIndex) {
+// List resTemlist = new ArrayList<>();
+//
+// List relist = lineMapper.getDevicesIp(list);
+// //判断设备版本号
+// Integer isExit = devVersionMapper.selectCount(new LambdaQueryWrapper()
+// .eq(DevVersion::getVersionId,edIndex)
+// .in(DevVersion::getLineId,list)
+// .eq(DevVersion::getState,1)
+// );
+// if (isExit > 0) {
+// return "请勿选择相同版本号升级";
+// }
+// if (!CollectionUtil.isEmpty(relist)) {
+// Version version = programVersionService.getById(edIndex);
+// String series = version.getDevType();
+// //判断设备是否存在相同型号
+// for (DeviceIpRVO deviceIpRVO : relist) {
+// if (!series.equals(deviceIpRVO.getDevSeries())) {
+// return "当前装置版本系列与目标版本系列不相同";
+// }
+// }
+//
+// //判断是否断开
+// if (relist.stream().filter(w -> w.getComFlag() == 0).findAny().isPresent()) {
+// return "存在通讯中断设备";
+// }
+//
+//
+// Set set = new HashSet<>();
+// for (DeviceIpRVO d : relist) {
+// set.add(d.getIp());
+// }
+// Iterator iterator = set.iterator();
+// while (iterator.hasNext()) {
+// List devIndex = new ArrayList<>();
+// DeviceIpRVO deviceIpRVO = new DeviceIpRVO();
+// String ip = iterator.next();
+// for (DeviceIpRVO d : relist) {
+// UpDevVO upDevVO = new UpDevVO();
+// upDevVO.setDevIndex(d.getDevIndex());
+// upDevVO.setDevName(d.getDevName());
+// if (ip.equals(d.getIp())) {
+// devIndex.add(upDevVO);
+// }
+// }
+// deviceIpRVO.setIp(ip);
+// deviceIpRVO.setDevlist(devIndex);
+// resTemlist.add(deviceIpRVO);
+// }
+// } else {
+// return "存在未知错误";
+// }
+// for (DeviceIpRVO deviceIpRVO : resTemlist) {
+// String ip = deviceIpRVO.getIp();
+// List devlist = deviceIpRVO.getDevlist();
+// UpDataVO upDataVO = new UpDataVO();
+// UpParamVO upParamVO = new UpParamVO();
+// upDataVO.setTerminal(devlist);
+// upDataVO.setType("180");
+// upDataVO.setEdIndex(edIndex);
+// upDataVO.setUserIndex(RequestUtil.getUserIndex());
+// JSONObject jsonstr = new JSONObject(upDataVO);
+// Integer len = jsonstr.toString().length();
+// upParamVO.setData(upDataVO);
+// upParamVO.setLen(len.toString());
+// JSONObject jsonObject = new JSONObject(upParamVO);
+// String str = jsonObject.toString();
+// socketClient.sentUpgrades(str, ip, socketPort, RequestUtil.getLoginName(), edIndex, devlist);
+// }
+// return "运行成功";
+// }
+//
+// @Override
+// public String closeUpgrades(List devList) {
+// List relist = lineMapper.getDevicesIp(devList);
+// if(CollectionUtil.isEmpty(relist)){
+// return "前置机为空";
+// }else {
+// List nodeIp = relist.stream().map(DeviceIpRVO::getIp).distinct().collect(Collectors.toList());
+// for(String ip: nodeIp){
+// List devLl= relist.stream().filter(item->item.getIp().equals(ip)).collect(Collectors.toList());
+// if(CollectionUtil.isEmpty(devLl)){
+// return "出错啦";
+// }
+//
+// List list = new ArrayList<>();
+// for(DeviceIpRVO devRVO:devLl){
+// JSONObject dev = new JSONObject();
+// dev.put("devIndex",devRVO.getDevIndex());
+// dev.put("devName",devRVO.getDevName());
+// list.add(dev);
+// }
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.set("terminal", list);
+// jsonObject.set("type", 182);
+// JSONObject jsonObject1 = new JSONObject();
+// jsonObject1.set("len", 0);
+// jsonObject1.set("data", jsonObject);
+// socketClient.cancelUp(jsonObject1.toString(),ip,socketPort,devLl.size());
+// }
+// }
+// return "取消命令发送成功";
+// }
+//
+// @Override
+// public String restartDev(List devList) {
+// List relist = lineMapper.getDevicesIp(devList);
+// if(CollUtil.isEmpty(relist)){
+// return "前置机为空";
+// }else {
+// List nodeIp = relist.stream().map(DeviceIpRVO::getIp).distinct().collect(Collectors.toList());
+// for(String ip: nodeIp){
+// List devLl = relist.stream().filter(item->item.getIp().equals(ip)).collect(Collectors.toList());
+// if(CollUtil.isEmpty(devLl)){
+// return "出错啦";
+// }
+//
+// List list = new ArrayList<>();
+// List devIn = new ArrayList<>();
+// for(DeviceIpRVO devRVO:devLl){
+// devIn.add(devRVO.getDevIndex());
+// JSONObject dev = new JSONObject();
+// dev.set("devIndex", devRVO.getDevIndex());
+// dev.set("devName", devRVO.getDevName());
+// list.add(dev);
+// }
+//
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.set("terminal", list);
+// jsonObject.set("type", 181);
+// jsonObject.set("userIndex", RequestUtil.getUserIndex());
+// JSONObject jsonObject1 = new JSONObject();
+// jsonObject1.set("len", 0);
+// jsonObject1.set("data", jsonObject);
+//
+// socketClient.restartDev(jsonObject1.toString(),ip,socketPort,devIn);
+// }
+// }
+// return "命令发送成功";
+// }
@Override
public void updateDevCheckTime(String devId, String thisTimeCheck, String nextTimeCheck) {
diff --git a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/utils/SocketClient.java b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/utils/SocketClient.java
index e3413ffc0..3394389e8 100644
--- a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/utils/SocketClient.java
+++ b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/utils/SocketClient.java
@@ -1,1006 +1,1006 @@
-package com.njcn.device.utils;
-
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-import com.github.tocrhz.mqtt.publisher.MqttPublisher;
-import com.njcn.common.pojo.dto.LogInfoDTO;
-import com.njcn.device.device.mapper.DevVersionMapper;
-import com.njcn.device.line.mapper.LineMapper;
-import com.njcn.device.pq.pojo.advanced.UpDevVO;
-import com.njcn.device.pq.pojo.po.DevVersion;
-import com.njcn.system.api.UserLogFeignClient;
-import com.njcn.web.utils.RequestUtil;
-import lombok.RequiredArgsConstructor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-
-@Component
-@RequiredArgsConstructor
-public class SocketClient {
- private static final Logger logger = LoggerFactory.getLogger(SocketClient.class);
-
- private final MqttPublisher mqttPublisher;
-
- private final UserLogFeignClient UserLogFeignClient;
- private final DevVersionMapper devVersionMapper;
-
- private final ExecutorService executorPool = Executors.newCachedThreadPool();
- //终端性能socket集合
- private final Map socketQuMap = new HashMap<>();
- private final ConcurrentHashMap sumDevMap = new ConcurrentHashMap<>();
-
- private final ConcurrentHashMap socketMap = new ConcurrentHashMap<>();
- //用于记录升级装置当前处理总数
- private final ConcurrentHashMap sumMap = new ConcurrentHashMap<>();
- //用于记录升级装置当前重启总数
- private final ConcurrentHashMap sumResMap = new ConcurrentHashMap<>();
- //用于记录升级装置当前取消总数
- private final ConcurrentHashMap sumCanMap = new ConcurrentHashMap<>();
-
- private Map> lineMap;
-
- private Map lineSocketMap;
- private final LineMapper lineMapper;
- private boolean finalFlag = true;
-
-
- //监测点
- public String sentLine(String ip, String message, String host, Integer port, String name, List list) {
- LogInfoDTO logInfoDTO = new LogInfoDTO();
- logInfoDTO.setLoginName(RequestUtil.getLoginName());
- logInfoDTO.setUserName(RequestUtil.getUserNickname());
- logInfoDTO.setIp(ip);
- logInfoDTO.setOperateType("查询");
- logInfoDTO.setType(1);
- logInfoDTO.setServiceName("device-boot");
-
-
- String msg = "";
- Boolean flag = true;
- String result = null;
- Socket socket = null;
- InputStream is = null;
- BufferedReader din = null;
- Integer allsum = list.size();
- Integer succees = 0;
- Integer fail = 0;
- try {
- socket = new Socket(host, port);
- socket.setSoTimeout(20000);//设置超时时间
- socket.getOutputStream().write(message.getBytes("UTF-8"));
- is = socket.getInputStream();
- din = new BufferedReader(new InputStreamReader(is, "UTF-8"));
- char[] buffer = new char[100240000];
- StringBuffer stringBuffer = new StringBuffer();
- while (true) {
- int len = din.read(buffer);
- if (len > -1) {
- result = new String(buffer, 0, len);
- stringBuffer.append(result);
- try {
- new JSONObject(stringBuffer);
- break;
- } catch (Exception e) {
- logger.error("未加载完全,持续加载中!");
- }
- }
- }
- //todo 先用json测试一下
- JSONObject jsonObject = new JSONObject(stringBuffer.toString());
- if (jsonObject != null) {
- if (jsonObject.get("resultcode").toString().equals("10000")) {
- JSONObject data = jsonObject.getJSONObject("data");
- if (data == null) {
- //表示刚连接成功
- flag = true;
- mqttPublisher.send("/dev/socketLine/" + name, stringBuffer, 1, false);
- msg = "无数据传输";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("外部定值无数据传输");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } else {
- flag = true;
- mqttPublisher.send("/dev/socketLine/" + name, stringBuffer, 1, false);
- msg = "请求成功!" + "请稍候......";
- logInfoDTO.setResult(1);
- logInfoDTO.setLevel(0);
- logInfoDTO.setOperate("外部定值获取成功");
- UserLogFeignClient.addUserLog(logInfoDTO);
- }
- } else if (jsonObject.get("resultcode").toString().equals("10010")) {
- flag = true;
- mqttPublisher.send("/dev/socketLine/" + name, stringBuffer, 1, false);
- msg = "";
- } else if (jsonObject.get("resultcode").toString().equals("10003")) {
- flag = true;
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":" + 10003 + ",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
- fail += list.size();
- msg = "JSON字符串解析出错";
-
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("外部定值获取json解析失败");
- logInfoDTO.setFailReason("json解析失败");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } else {
- fail++;
- flag = true;
- mqttPublisher.send("/dev/socketLine/" + name, jsonObject, 1, false);
- }
- if (succees + fail == allsum) {
- flag = false;
- }
- } else {
- msg = "接收json数据为空";
- }
- } catch (ConnectException e) {
- e.printStackTrace();
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":" + 100 + ",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
- msg = "socket连接失败!";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("socket连接失败");
- logInfoDTO.setFailReason("连接失败");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } catch (SocketException e) {
- e.printStackTrace();
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":" + 101 + ",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
- msg = "socket异常";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("socket发生异常");
- logInfoDTO.setFailReason("发生异常");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } catch (UnknownHostException e) {
- e.printStackTrace();
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":\"10011\",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
- msg = "DNS解析失败!";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("socketDNS解析失败");
- logInfoDTO.setFailReason("DNS解析失败");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":\"10012\",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
- msg = "转码异常!";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("socket转码异常");
- logInfoDTO.setFailReason("转码异常");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } catch (IOException e) {
- e.printStackTrace();
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":\"10013\",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
- msg = "连接超时导致读写异常!";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("socket连接超时导致读写异常");
- logInfoDTO.setFailReason("连接超时");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } finally {
- safeColse(socket, din, is, null);
- }
- return msg;
- }
-
- //终端校验内部定值
- public String sentDZDev(String ip, String message, String host, Integer port, String name, List list) {
- LogInfoDTO logInfoDTO = new LogInfoDTO();
- logInfoDTO.setLoginName(RequestUtil.getLoginName());
- logInfoDTO.setUserName(RequestUtil.getUserNickname());
- logInfoDTO.setIp(ip);
- logInfoDTO.setOperateType("查询");
- logInfoDTO.setType(1);
- logInfoDTO.setServiceName("终端定值管理");
-
- String msg = "";
- String result = null;
- Socket socket = null;
- InputStream is = null;
- BufferedReader din = null;
- try {
- socket = new Socket(host, port);
- socket.setSoTimeout(20000);//设置超时时间
- socket.getOutputStream().write(message.getBytes("UTF-8"));
- is = socket.getInputStream();
- din = new BufferedReader(new InputStreamReader(is, "UTF-8"));
- char[] buffer = new char[100240000];
- StringBuffer stringBuffer = new StringBuffer();
- while (true) {
- int len = din.read(buffer);
- if (len > -1) {
- result = new String(buffer, 0, len);
- stringBuffer.append(result);
- try {
- new JSONObject(stringBuffer);
- break;
- } catch (Exception e) {
- logger.error("未加载完全,持续加载中!");
- }
- }
- }
- JSONObject jsonObject = new JSONObject(stringBuffer.toString());
- if (jsonObject != null) {
- if (jsonObject.get("resultcode").toString().equals("10000")) {
- JSONObject data = jsonObject.getJSONObject("data");
- if (data == null) {
- //表示刚连接成功
- mqttPublisher.send("/dev/socketDev/" + name, stringBuffer, 1, false);
- msg = "无数据传输";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("内部定值无数据传输");
- UserLogFeignClient.addUserLog(logInfoDTO);
-
- } else {
- mqttPublisher.send("/dev/socketDev/" + name, stringBuffer, 1, false);
-
- msg = "请求成功!" + "请稍候......";
- logInfoDTO.setResult(1);
- logInfoDTO.setLevel(0);
- logInfoDTO.setOperate("内部定值获取成功");
- UserLogFeignClient.addUserLog(logInfoDTO);
- }
- } else if (jsonObject.get("resultcode").toString().equals("10010")) {
-
- mqttPublisher.send("/dev/socketDev/" + name, stringBuffer, 1, false);
- msg = "";
- } else if (jsonObject.get("resultcode").toString().equals("10003")) {
-
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":" + 10003 + ",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketDev/" + name, stringBuffer, 1, false);
-
- msg = "JSON字符串解析出错";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("JSON字符串解析失败");
- logInfoDTO.setFailReason("JSON字符串解析失败");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } else {
- mqttPublisher.send("/dev/socketDev/" + name, stringBuffer, 1, false);
- }
-
- } else {
- msg = "接收json数据为空";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("接收JSON数据失败");
- logInfoDTO.setFailReason("接收JSON数据失败");
- UserLogFeignClient.addUserLog(logInfoDTO);
- }
- } catch (ConnectException e) {
- e.printStackTrace();
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":" + 100 + ",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketDev/" + name, json, 1, false);
- msg = "socket连接失败!";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("socket连接失败");
- logInfoDTO.setFailReason("连接失败");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } catch (SocketException e) {
- e.printStackTrace();
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":" + 101 + ",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketDev/" + name, json, 1, false);
- msg = "socket异常";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("socket发生异常");
- logInfoDTO.setFailReason("发生异常");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } catch (UnknownHostException e) {
- e.printStackTrace();
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":\"10011\",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketDev/" + name, json, 1, false);
- msg = "DNS解析失败!";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("socketDNS解析失败");
- logInfoDTO.setFailReason("解析失败");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":\"10012\",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketDev/" + name, json, 1, false);
- msg = "转码异常!";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("socket转码异常");
- logInfoDTO.setFailReason("转码异常");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } catch (IOException e) {
- e.printStackTrace();
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":\"10013\",\"data\":" + jsonArray.toString() + "}";
- mqttPublisher.send("/dev/socketDev/" + name, json, 1, false);
- msg = "连接超时导致读写异常!";
- logInfoDTO.setResult(0);
- logInfoDTO.setLevel(1);
- logInfoDTO.setOperate("socket连接超时导致读写异常");
- logInfoDTO.setFailReason("连接超时");
- UserLogFeignClient.addUserLog(logInfoDTO);
- } finally {
- safeColse(socket, din, is, null);
- }
- return msg;
- }
-
- //关闭连接
- private void safeColse(Socket socket, BufferedReader bufferedReader, InputStream inputStream, OutputStream outputStream) {
- if (socket != null) {
- try {
- socket.close();
- } catch (IOException e) {
- logger.error("发生错误,错误信息" + e.getMessage());
- }
- }
- if (bufferedReader != null) {
- try {
- bufferedReader.close();
- } catch (IOException e) {
- logger.error("发生错误,错误信息" + e.getMessage());
- }
- }
- if (inputStream != null) {
- try {
- inputStream.close();
- } catch (IOException e) {
- logger.error("发生错误,错误信息" + e.getMessage());
- }
- }
- if (outputStream != null) {
- try {
- outputStream.close();
- } catch (IOException e) {
- logger.error("发生错误,错误信息" + e.getMessage());
- }
- }
- }
-
- //终端性能查看
-// @Async("asyncExecutor")
- public void showProperty(String message, String host, Integer port, String devID) {
- Runnable runnable = () -> {
- String result;
- OutputStream outputStream = null;
- BufferedReader din = null;
- Socket socket = null;
- try {
- socket = new Socket(host, port);
- socket.setSoTimeout(20000); //20s未接受到数据自动超时中断
- socketQuMap.put(devID, socket);
- outputStream = socket.getOutputStream();
- outputStream.write(message.getBytes("UTF-8"));
- din = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
- while ((result = din.readLine()) != null) {
- JSONObject jsonObject = new JSONObject(result);
- jsonObject.set("type", "190");
- if (jsonObject.get("resultcode").toString().equals("10000")) {
- mqttPublisher.send("/dev/showProperty/" + devID, jsonObject, 1, false);
- } else {
- mqttPublisher.send("/dev/showProperty/" + devID, jsonObject, 1, false);
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- logger.error("终端性能异常" + e.getMessage());
- JSONObject json = new JSONObject();
- json.set("type", "190").set("resultcode", "20000").set("resultmsg", "未知异常");
- mqttPublisher.send("/dev/showProperty/" + devID, json, 1, false);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- safeColse(socket, din, null, outputStream);
- if (socketQuMap.containsKey(devID)) {
- socketQuMap.remove(devID);
- }
- }
- };
- executorPool.execute(runnable);
- }
-
- //终端性能查看连接关闭
- public String closeDevSocket(String msg, String host, Integer port,String devID) throws Exception {
- if (socketQuMap.containsKey(devID)) {
- String result = null;
- Socket socket = null;
- OutputStream outputStream = null;
- BufferedReader bufferedReader = null;
- try {
- socket = new Socket(host, port);
- socket.setSoTimeout(5000);
- outputStream = socket.getOutputStream();
- outputStream.write(msg.getBytes("UTF-8"));
- bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- while ((result = bufferedReader.readLine()) != null) {
- JSONObject jsonObject = new JSONObject(result);
- if (jsonObject.getStr("resultcode").equals("10000")) {
- }
- break;
- }
- } catch (IOException e) {
- e.printStackTrace();
- logger.error(e.getMessage());
- } finally {
- socketQuMap.get(devID).shutdownOutput();
- safeColse(socket, null, null, outputStream);
- }
- }
- return "终端性能查看,关闭成功";
- }
-
- //监测点实时数据查看
- public void realTimeData(String message, String host, Integer port, String lineIndex) {
- String loginName = RequestUtil.getLoginName();
- Runnable real = () -> {
- if (Objects.isNull(lineMap)) {
- lineMap = new HashMap<>();
- }
- if (lineMap.containsKey(lineIndex)) {
- //存在监测点
- List lineL = lineMap.get(lineIndex);
- if (!lineL.contains(loginName)) {
- lineL.add(loginName);
- }
- } else {
- List userList = new ArrayList<>();
- userList.add(loginName);
- lineMap.put(lineIndex, userList);
- }
-
- Iterator>> iterator = lineMap.entrySet().iterator();
- while (iterator.hasNext()) {
- Map.Entry> en = iterator.next();
- if (!en.getKey().equals(lineIndex)) {
- List login = en.getValue();
- if (CollectionUtil.isNotEmpty(login)) {
- login.remove(loginName);
- }
- }
-
- }
-
- if (lineMap.size() > 1) {
- //判断是否查看的是同一台装置信息
- Set set = lineMap.keySet();
- Integer count = lineMapper.getDevIndexs(set);
- if (count < lineMap.size()) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.set("resultcode", 5557);
- jsonObject.set("resultmsg", "存在其他用户相同操作,请稍后尝试");
- if (Objects.nonNull(lineMap)) {
- mqttPublisher.send("/dev/realTimeData/" + loginName, jsonObject, 1, false);
- }
- lineMap.remove(lineIndex);
- return;
- }
- }
-
-
- if (lineSocketMap == null) {
- lineSocketMap = new HashMap<>();
- }
- if (!lineSocketMap.containsKey(lineIndex)) {
- Socket socket = null;
- BufferedReader bufferedReader = null;
- OutputStream outputStream = null;
- try {
- socket = new Socket();
- SocketAddress socketAddress = new InetSocketAddress(host, port);
- socket.connect(socketAddress, 7000);
- socket.setSoTimeout(20000);
- lineSocketMap.put(lineIndex, socket);
- outputStream = socket.getOutputStream();
- outputStream.write(message.getBytes("UTF-8"));
- bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
- String result;
- while ((result = bufferedReader.readLine()) != null) {
- net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(result);
- String code = jsonObject.getString("resultcode");
- if (code.equals("10000")) {
-
-
- String str = "";
- List nameList = lineMap.get(lineIndex);
- if (CollectionUtil.isNotEmpty(nameList)) {
- for (String s : nameList) {
- str += s + " ";
- }
- // System.out.println(str + " " + lineIndex);
- mqttPublisher.send("/dev/realTimeData/" + loginName, jsonObject, 1, false);
- }
- } else if (code.equals("10008")) {
- List nameList = lineMap.get(lineIndex);
- if (CollectionUtil.isNotEmpty(nameList)) {
- mqttPublisher.send("/dev/realTimeData/" + loginName, jsonObject, 1, false);
- }
- break;
- }
-
- }
- } catch (SocketTimeoutException e) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("resultcode", 5555);
- jsonObject.put("resultmsg", "请求超时");
- if (Objects.nonNull(lineMap)) {
- List name = lineMap.get(lineIndex);
- if (CollectionUtil.isNotEmpty(name)) {
- mqttPublisher.send("/dev/realTimeData/" + loginName, jsonObject, 1, false);
- }
- }
- e.printStackTrace();
- } catch (ConnectException e) {
- e.printStackTrace();
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("resultcode", 5556);
- jsonObject.put("resultmsg", "连接前置服务器失败");
- if (lineMap.get(lineIndex) != null) {
- mqttPublisher.send("/dev/realTimeData/" + loginName, jsonObject, 1, false);
- }
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- safeColse(socket, bufferedReader, null, outputStream);
- if (lineSocketMap != null) {
- lineSocketMap.remove(lineIndex);
- }
- if (lineMap != null) {
- lineMap.remove(lineIndex);
- }
- }
- }
- };
- executorPool.execute(real);
- }
-
- //监测点实时数据心跳
- public void heartRealData(String msg, String host, Integer port, String lineIndex) {
- if (lineMap != null) {
- if (lineMap.containsKey(lineIndex)) {
- String result = null;
- OutputStream outputStream = null;
- BufferedReader bufferedReader = null;
- Socket socket = null;
-
- try {
- socket = new Socket(host, port);
- socket.setSoTimeout(10000);
- outputStream = socket.getOutputStream();
- outputStream.write(msg.getBytes("UTF-8"));
- bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- while ((result = bufferedReader.readLine()) != null) {
- if (StrUtil.isNotBlank(result)) {
- net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(result);
- if (jsonObject.get("resultcode").equals("10000")) {
- break;
- }
- } else {
- logger.error("实时数据socket异常!");
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- safeColse(socket, bufferedReader, null, outputStream);
- }
- }
- }
- }
-
- //监测点实时数据连接关闭
- public void closeRealData(String lineIndex) {
- String loginName = RequestUtil.getLoginName();
- if (lineMap != null) {
- if (lineMap.containsKey(lineIndex)) {
- List user = lineMap.get(lineIndex);
- if (CollectionUtil.isNotEmpty(user)) {
- user.remove(loginName);
- if (user.size() == 0) {
- lineMap.remove(lineIndex);
- Socket socket = null;
- String result = null;
- OutputStream outputStream = null;
- BufferedReader bufferedReader = null;
- try {
- JSONObject jsonObject = new JSONObject();
- jsonObject.set("LineId", lineIndex);
- jsonObject.set("type", 2);
- JSONObject jsonObject1 = new JSONObject();
- jsonObject1.set("len", 0);
- jsonObject1.set("data", jsonObject);
-
- String host = lineMapper.getNodeIp(lineIndex,0);
- socket = new Socket(host, 60000);
- socket.setSoTimeout(10000);
- outputStream = socket.getOutputStream();
- outputStream.write(jsonObject1.toString().getBytes());
- InputStream inputStream = socket.getInputStream();
- bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
- while ((result = bufferedReader.readLine()) != null) {
- net.sf.json.JSONObject jj = net.sf.json.JSONObject.fromObject(result);
- //JSONObject jj = new JSONObject(result);
- if (jj.getString("resultcode").equals("10000")) {
- // System.out.println("已经告诉前置关闭实时数据" + lineIndex);
- lineSocketMap.get(lineIndex).shutdownOutput();
- break;
- }
- }
-
- // System.out.println(loginName + "前台请求关闭实时数据" + lineIndex);
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- safeColse(socket, bufferedReader, null, outputStream);
- }
- lineSocketMap.remove(lineIndex);
- }
- }
- }
- }
- }
-
-
- //升级终端
- public void sentUpgrades(String message, String host, Integer port, String loginName, String edIndex, List list) {
- String userId = RequestUtil.getUserIndex();
- sumMap.put(userId + host, 0);
- sumCanMap.put(userId + host, 0);
- sumResMap.put(userId + host, 0);
- sumDevMap.put(userId + host, list.size());
- System.out.println(message);
- logger.info("发起升级装置命令:"+message);
- Runnable myCallable = () -> {
-
- String result = null;
- Socket socket = null;
- InputStream is = null;
- BufferedReader din = null;
- OutputStream outputStream = null;
- JSONArray jsonArray = new JSONArray(list);
- String json = "{\"resultcode\":\"100\",\"type\":\"180\",\"data\":" + jsonArray + "}";
- DevVersion version;
- try {
- SocketAddress socketAddress = new InetSocketAddress(host, port);
- socket = new Socket();
- socket.connect(socketAddress, 7000);
- socket.setSoTimeout(60*1000*3);
- socketMap.put(userId + host, socket);
- outputStream = socket.getOutputStream();
- outputStream.write(message.getBytes("UTF-8"));
- is = socket.getInputStream();
- din = new BufferedReader(new InputStreamReader(is, "UTF-8"));
-
- while ((result = din.readLine()) != null) {
-
- System.out.println(result);
- logger.info("升级流程:"+message);
-
- JSONObject jsonObject = new JSONObject(result.trim());
-
- jsonObject.set("type", "180");
- if (jsonObject.get("resultcode").toString().equals("10000")) {
- JSONObject data = jsonObject.getJSONObject("data");
- if (data == null) {
- //表示刚连接成功
- mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
- } else {
- mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
- if (data.get("state").equals("2")) {
- Integer succeed = sumMap.get(userId + host);
- succeed++;
- sumMap.put(userId + host, succeed);
- } else if (data.get("state").equals("3")) {
- Integer fail = sumMap.get(userId + host);
- fail++;
- sumMap.put(userId + host, fail);
- }
- }
- } else if (jsonObject.get("resultcode").toString().equals("10010")) {
-
- mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
-
- } else if (jsonObject.get("resultcode").toString().equals("10003")) {
-
- mqttPublisher.send("/dev/upgrades/" + loginName, json, 1, false);
- Integer fail = sumMap.get(userId + host);
- for (UpDevVO dev : list) {
- fail++;
- version=new DevVersion();
- version.setLineId(dev.getDevIndex());
- version.setVersionId(edIndex);
- version.setFlag(0);
- version.setResult(0);
- version.setState(1);
- devVersionMapper.insert(version);
- }
- sumMap.put(userId + host, fail);
-
- } else if (jsonObject.get("resultcode").toString().equals("10008")) {
- mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
- } else {
- Integer fail = sumMap.get(userId + host);
- System.out.println(fail);
- fail++;
- sumMap.put(userId + host, fail);
- mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
- }
-
- Integer resSum = sumMap.get(userId + host);
-
- if (resSum == list.size()) {
- System.out.println("进入break跳出升级流程总装置数:" + resSum);
- break;
- }
-
-
- }
- } catch (SocketTimeoutException red) {
- red.printStackTrace();
- //全部取消升级操作 异常不处理
- logger.error("终端升级连接超时,联系管理员排查问题" + red.getMessage());
- JSONObject jj = new JSONObject();
- jj.set("resultcode", 77777);
- jj.set("type", 180);
- mqttPublisher.send("/dev/upgrades/" + loginName, jj, 1, false);
- } catch (ConnectException e) {
- e.printStackTrace();
- logger.error("发生错误,错误信息" + e.getMessage());
- for (UpDevVO dev : list) {
- version=new DevVersion();
- version.setLineId(dev.getDevIndex());
- version.setVersionId(edIndex);
- version.setFlag(0);
- version.setResult(0);
- version.setState(1);
- devVersionMapper.insert(version);
- }
- mqttPublisher.send("/dev/upgrades/" + loginName, json, 1, false);
- } catch (Exception e) {
- e.printStackTrace();
- logger.error("发生错误,错误信息" + e.getMessage());
- for (UpDevVO dev : list) {
- version=new DevVersion();
- version.setLineId(dev.getDevIndex());
- version.setVersionId(edIndex);
- version.setFlag(0);
- version.setResult(0);
- version.setState(1);
- devVersionMapper.insert(version);
- }
- mqttPublisher.send("/dev/upgrades/" + loginName, json, 1, false);
- } finally {
- //不管失败成功告诉前台页面升级程序结束
- JSONObject jsonObject = new JSONObject();
- jsonObject.set("type", 180);
- jsonObject.set("resultcode", -10000);
- jsonObject.set("data", list);
- mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
- safeColse(socket, din, is, outputStream);
- delMapData(userId + host);
- }
- };
- executorPool.execute(myCallable);
- }
-
- //取消升级终端
- public void cancelUp(String json, String host, Integer port, Integer devNum) {
- String loginName =RequestUtil.getLoginName();
- String userId = RequestUtil.getUserIndex();
- Runnable aaa = () -> {
- Socket socket = null;
- InputStream inputStream = null;
- BufferedReader bufferedReader = null;
- String result = "";
- try {
- Integer deflag = 0;
- socket = new Socket(host, port);
- socket.setSoTimeout(20000);
- socket.getOutputStream().write(json.getBytes());
- inputStream = socket.getInputStream();
- bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
-
- while ((result = bufferedReader.readLine()) != null) {
- System.out.println(result);
- JSONObject jsonObject = null;
- try {
- jsonObject = new JSONObject(result.trim());
- } catch (Exception json1) {
- json1.printStackTrace();
- }
- if ((jsonObject.get("resultcode").toString()).equals("10000")) {
- deflag++;
- Integer csum = sumCanMap.get(userId + host);
- csum++;
- sumCanMap.put(userId + host, csum);
-
- Integer sum = sumMap.get(userId + host);
- sum++;
- sumMap.put(userId + host, sum);
- }
- jsonObject.set("type", "182");
- mqttPublisher.send("/dev/cancelUp/" + loginName, json, 1, false);
- System.out.println(sumCanMap.get(userId + host));
- System.out.println(sumMap.get(userId + host));
-
- if (sumMap.get(userId + host).equals(sumDevMap.get(userId + host))) {
- Socket ss = socketMap.get(userId + host);
- System.out.println("进入关闭socket流程");
- if (ss != null) {
- ss.shutdownOutput();
- }
- }
-
- if (devNum.equals(deflag)) {
- break;
- }
- }
-
- } catch (IOException e) {
- logger.error("终端升级取消命令发送失败");
- e.printStackTrace();
- } finally {
- System.out.println("取消结束+++");
- safeColse(socket, bufferedReader, inputStream, null);
- }
-
- };
- executorPool.execute(aaa);
- }
-
- //重启升级成功的装置
- public void restartDev(String json, String host, Integer port, List devL) {
- System.out.println("重启装置" + host + "命令:" + json);
- Integer sum = devL.size();
- String loginName = RequestUtil.getLoginName();
- String userId = RequestUtil.getUserIndex();
- Runnable aaa = () -> {
- Socket socket = null;
- BufferedReader bufferedReader = null;
- OutputStream outputStream = null;
- JSONObject jsonObject = null;
- String result = null;
- List devIndexList = new ArrayList<>();
- try {
- socket = new Socket(host, port);
- socket.setSoTimeout(1000*60*6);
- outputStream = socket.getOutputStream();
- outputStream.write(json.getBytes());
- bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
-
- Socket socket1 = socket;
-
- Runnable heart = () -> {
- finalFlag = true;
- try {
- while (finalFlag){
- Thread.sleep(15000);
- if(socket1!=null) {
- if (socket1.isConnected() && !socket1.isClosed()) {
- socket1.getOutputStream().write(new JSONObject().put("heart", "666").toString().getBytes());
- System.out.println("心跳发送成功");
- }
- }
-
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- finalFlag = false;
- }
- System.out.println("是否发送心跳标识"+ finalFlag);
- };
- executorPool.execute(heart);
- while ((result = bufferedReader.readLine()) != null) {
- System.out.println(result);
-
- try {
- jsonObject = new JSONObject(result.trim());
- } catch (Exception json1) {
- json1.printStackTrace();
- logger.error("终端升级重启命令发送失败" + json1.getMessage());
- break;
- }
- if ((jsonObject.get("resultcode")).equals(10000)) {
- //处理成功进行入库记录日志
- // Integer succeed = sumResMap.get(userId + host);
- // succeed++;
- // sumResMap.put(userId + host, succeed);
- } else if ((jsonObject.get("resultcode")).equals(10008)) {
-
- } else if ((jsonObject.get("resultcode")).equals(10001)) {
- devIndexList.add(jsonObject.getJSONObject("data").getStr("devIndex"));
- Integer succeed = sumResMap.get(userId + host);
- succeed++;
- sumResMap.put(userId + host, succeed);
- } else {
- Integer succeed = sumResMap.get(userId + host);
- succeed++;
- sumResMap.put(userId + host, succeed);
- }
- jsonObject.set("type", "181");
- mqttPublisher.send("/dev/restartDev/" + loginName, jsonObject, 1, false);
- if (sum.equals(sumResMap.get(userId + host))) {
- System.out.println("重启总数量:"+sum+"-"+sumResMap.get(userId + host));
- finalFlag = false;
- break;
- }
- }
-
- } catch (SocketTimeoutException e) {
- e.printStackTrace();
- //超时处理
- JSONObject json1 = new JSONObject();
- json1.set("resultcode", 5555);
- json1.set("resultmsg", "超时");
- json1.set("type", 181);
- mqttPublisher.send("/dev/restartDev/" + loginName, json1, 1, false);
-
- } catch (IOException e) {
- e.printStackTrace();
- } catch (Exception ee) {
- ee.printStackTrace();
- } finally {
- finalFlag = false;
- System.out.println("重启socket结束+++");
- safeColse(socket, bufferedReader, null, outputStream);
- socketMap.remove(userId + host);
- }
-
- };
- executorPool.execute(aaa);
-
- }
-
- /**
- * @Description:清空全局变量释放内存
- * @param key
- * @Author: wr
- * @Date: 2023/8/16 16:15
- */
- public void delMapData(String key) {
- if (sumMap != null) {
- sumMap.remove(key);
- }
- if (sumCanMap != null) {
- sumCanMap.remove(key);
- }
- }
-}
-
-
-
-
-
+//package com.njcn.device.utils;
+//
+//import cn.hutool.core.collection.CollectionUtil;
+//import cn.hutool.core.util.StrUtil;
+//import cn.hutool.json.JSONArray;
+//import cn.hutool.json.JSONObject;
+//import com.github.tocrhz.mqtt.publisher.MqttPublisher;
+//import com.njcn.common.pojo.dto.LogInfoDTO;
+//import com.njcn.device.device.mapper.DevVersionMapper;
+//import com.njcn.device.line.mapper.LineMapper;
+//import com.njcn.device.pq.pojo.advanced.UpDevVO;
+//import com.njcn.device.pq.pojo.po.DevVersion;
+//import com.njcn.system.api.UserLogFeignClient;
+//import com.njcn.web.utils.RequestUtil;
+//import lombok.RequiredArgsConstructor;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.stereotype.Component;
+//
+//import java.io.*;
+//import java.net.*;
+//import java.util.*;
+//import java.util.concurrent.ConcurrentHashMap;
+//import java.util.concurrent.ExecutorService;
+//import java.util.concurrent.Executors;
+//
+//
+//@Component
+//@RequiredArgsConstructor
+//public class SocketClient {
+// private static final Logger logger = LoggerFactory.getLogger(SocketClient.class);
+//
+// private final MqttPublisher mqttPublisher;
+//
+// private final UserLogFeignClient UserLogFeignClient;
+// private final DevVersionMapper devVersionMapper;
+//
+// private final ExecutorService executorPool = Executors.newCachedThreadPool();
+// //终端性能socket集合
+// private final Map socketQuMap = new HashMap<>();
+// private final ConcurrentHashMap sumDevMap = new ConcurrentHashMap<>();
+//
+// private final ConcurrentHashMap socketMap = new ConcurrentHashMap<>();
+// //用于记录升级装置当前处理总数
+// private final ConcurrentHashMap sumMap = new ConcurrentHashMap<>();
+// //用于记录升级装置当前重启总数
+// private final ConcurrentHashMap sumResMap = new ConcurrentHashMap<>();
+// //用于记录升级装置当前取消总数
+// private final ConcurrentHashMap sumCanMap = new ConcurrentHashMap<>();
+//
+// private Map> lineMap;
+//
+// private Map lineSocketMap;
+// private final LineMapper lineMapper;
+// private boolean finalFlag = true;
+//
+//
+// //监测点
+// public String sentLine(String ip, String message, String host, Integer port, String name, List list) {
+// LogInfoDTO logInfoDTO = new LogInfoDTO();
+// logInfoDTO.setLoginName(RequestUtil.getLoginName());
+// logInfoDTO.setUserName(RequestUtil.getUserNickname());
+// logInfoDTO.setIp(ip);
+// logInfoDTO.setOperateType("查询");
+// logInfoDTO.setType(1);
+// logInfoDTO.setServiceName("device-boot");
+//
+//
+// String msg = "";
+// Boolean flag = true;
+// String result = null;
+// Socket socket = null;
+// InputStream is = null;
+// BufferedReader din = null;
+// Integer allsum = list.size();
+// Integer succees = 0;
+// Integer fail = 0;
+// try {
+// socket = new Socket(host, port);
+// socket.setSoTimeout(20000);//设置超时时间
+// socket.getOutputStream().write(message.getBytes("UTF-8"));
+// is = socket.getInputStream();
+// din = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+// char[] buffer = new char[100240000];
+// StringBuffer stringBuffer = new StringBuffer();
+// while (true) {
+// int len = din.read(buffer);
+// if (len > -1) {
+// result = new String(buffer, 0, len);
+// stringBuffer.append(result);
+// try {
+// new JSONObject(stringBuffer);
+// break;
+// } catch (Exception e) {
+// logger.error("未加载完全,持续加载中!");
+// }
+// }
+// }
+// //todo 先用json测试一下
+// JSONObject jsonObject = new JSONObject(stringBuffer.toString());
+// if (jsonObject != null) {
+// if (jsonObject.get("resultcode").toString().equals("10000")) {
+// JSONObject data = jsonObject.getJSONObject("data");
+// if (data == null) {
+// //表示刚连接成功
+// flag = true;
+// mqttPublisher.send("/dev/socketLine/" + name, stringBuffer, 1, false);
+// msg = "无数据传输";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("外部定值无数据传输");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } else {
+// flag = true;
+// mqttPublisher.send("/dev/socketLine/" + name, stringBuffer, 1, false);
+// msg = "请求成功!" + "请稍候......";
+// logInfoDTO.setResult(1);
+// logInfoDTO.setLevel(0);
+// logInfoDTO.setOperate("外部定值获取成功");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// }
+// } else if (jsonObject.get("resultcode").toString().equals("10010")) {
+// flag = true;
+// mqttPublisher.send("/dev/socketLine/" + name, stringBuffer, 1, false);
+// msg = "";
+// } else if (jsonObject.get("resultcode").toString().equals("10003")) {
+// flag = true;
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":" + 10003 + ",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
+// fail += list.size();
+// msg = "JSON字符串解析出错";
+//
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("外部定值获取json解析失败");
+// logInfoDTO.setFailReason("json解析失败");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } else {
+// fail++;
+// flag = true;
+// mqttPublisher.send("/dev/socketLine/" + name, jsonObject, 1, false);
+// }
+// if (succees + fail == allsum) {
+// flag = false;
+// }
+// } else {
+// msg = "接收json数据为空";
+// }
+// } catch (ConnectException e) {
+// e.printStackTrace();
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":" + 100 + ",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
+// msg = "socket连接失败!";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("socket连接失败");
+// logInfoDTO.setFailReason("连接失败");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } catch (SocketException e) {
+// e.printStackTrace();
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":" + 101 + ",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
+// msg = "socket异常";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("socket发生异常");
+// logInfoDTO.setFailReason("发生异常");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } catch (UnknownHostException e) {
+// e.printStackTrace();
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":\"10011\",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
+// msg = "DNS解析失败!";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("socketDNS解析失败");
+// logInfoDTO.setFailReason("DNS解析失败");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } catch (UnsupportedEncodingException e) {
+// e.printStackTrace();
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":\"10012\",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
+// msg = "转码异常!";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("socket转码异常");
+// logInfoDTO.setFailReason("转码异常");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } catch (IOException e) {
+// e.printStackTrace();
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":\"10013\",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketLine/" + name, json, 1, false);
+// msg = "连接超时导致读写异常!";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("socket连接超时导致读写异常");
+// logInfoDTO.setFailReason("连接超时");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } finally {
+// safeColse(socket, din, is, null);
+// }
+// return msg;
+// }
+//
+// //终端校验内部定值
+// public String sentDZDev(String ip, String message, String host, Integer port, String name, List list) {
+// LogInfoDTO logInfoDTO = new LogInfoDTO();
+// logInfoDTO.setLoginName(RequestUtil.getLoginName());
+// logInfoDTO.setUserName(RequestUtil.getUserNickname());
+// logInfoDTO.setIp(ip);
+// logInfoDTO.setOperateType("查询");
+// logInfoDTO.setType(1);
+// logInfoDTO.setServiceName("终端定值管理");
+//
+// String msg = "";
+// String result = null;
+// Socket socket = null;
+// InputStream is = null;
+// BufferedReader din = null;
+// try {
+// socket = new Socket(host, port);
+// socket.setSoTimeout(20000);//设置超时时间
+// socket.getOutputStream().write(message.getBytes("UTF-8"));
+// is = socket.getInputStream();
+// din = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+// char[] buffer = new char[100240000];
+// StringBuffer stringBuffer = new StringBuffer();
+// while (true) {
+// int len = din.read(buffer);
+// if (len > -1) {
+// result = new String(buffer, 0, len);
+// stringBuffer.append(result);
+// try {
+// new JSONObject(stringBuffer);
+// break;
+// } catch (Exception e) {
+// logger.error("未加载完全,持续加载中!");
+// }
+// }
+// }
+// JSONObject jsonObject = new JSONObject(stringBuffer.toString());
+// if (jsonObject != null) {
+// if (jsonObject.get("resultcode").toString().equals("10000")) {
+// JSONObject data = jsonObject.getJSONObject("data");
+// if (data == null) {
+// //表示刚连接成功
+// mqttPublisher.send("/dev/socketDev/" + name, stringBuffer, 1, false);
+// msg = "无数据传输";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("内部定值无数据传输");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+//
+// } else {
+// mqttPublisher.send("/dev/socketDev/" + name, stringBuffer, 1, false);
+//
+// msg = "请求成功!" + "请稍候......";
+// logInfoDTO.setResult(1);
+// logInfoDTO.setLevel(0);
+// logInfoDTO.setOperate("内部定值获取成功");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// }
+// } else if (jsonObject.get("resultcode").toString().equals("10010")) {
+//
+// mqttPublisher.send("/dev/socketDev/" + name, stringBuffer, 1, false);
+// msg = "";
+// } else if (jsonObject.get("resultcode").toString().equals("10003")) {
+//
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":" + 10003 + ",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketDev/" + name, stringBuffer, 1, false);
+//
+// msg = "JSON字符串解析出错";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("JSON字符串解析失败");
+// logInfoDTO.setFailReason("JSON字符串解析失败");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } else {
+// mqttPublisher.send("/dev/socketDev/" + name, stringBuffer, 1, false);
+// }
+//
+// } else {
+// msg = "接收json数据为空";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("接收JSON数据失败");
+// logInfoDTO.setFailReason("接收JSON数据失败");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// }
+// } catch (ConnectException e) {
+// e.printStackTrace();
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":" + 100 + ",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketDev/" + name, json, 1, false);
+// msg = "socket连接失败!";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("socket连接失败");
+// logInfoDTO.setFailReason("连接失败");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } catch (SocketException e) {
+// e.printStackTrace();
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":" + 101 + ",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketDev/" + name, json, 1, false);
+// msg = "socket异常";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("socket发生异常");
+// logInfoDTO.setFailReason("发生异常");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } catch (UnknownHostException e) {
+// e.printStackTrace();
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":\"10011\",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketDev/" + name, json, 1, false);
+// msg = "DNS解析失败!";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("socketDNS解析失败");
+// logInfoDTO.setFailReason("解析失败");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } catch (UnsupportedEncodingException e) {
+// e.printStackTrace();
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":\"10012\",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketDev/" + name, json, 1, false);
+// msg = "转码异常!";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("socket转码异常");
+// logInfoDTO.setFailReason("转码异常");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } catch (IOException e) {
+// e.printStackTrace();
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":\"10013\",\"data\":" + jsonArray.toString() + "}";
+// mqttPublisher.send("/dev/socketDev/" + name, json, 1, false);
+// msg = "连接超时导致读写异常!";
+// logInfoDTO.setResult(0);
+// logInfoDTO.setLevel(1);
+// logInfoDTO.setOperate("socket连接超时导致读写异常");
+// logInfoDTO.setFailReason("连接超时");
+// UserLogFeignClient.addUserLog(logInfoDTO);
+// } finally {
+// safeColse(socket, din, is, null);
+// }
+// return msg;
+// }
+//
+// //关闭连接
+// private void safeColse(Socket socket, BufferedReader bufferedReader, InputStream inputStream, OutputStream outputStream) {
+// if (socket != null) {
+// try {
+// socket.close();
+// } catch (IOException e) {
+// logger.error("发生错误,错误信息" + e.getMessage());
+// }
+// }
+// if (bufferedReader != null) {
+// try {
+// bufferedReader.close();
+// } catch (IOException e) {
+// logger.error("发生错误,错误信息" + e.getMessage());
+// }
+// }
+// if (inputStream != null) {
+// try {
+// inputStream.close();
+// } catch (IOException e) {
+// logger.error("发生错误,错误信息" + e.getMessage());
+// }
+// }
+// if (outputStream != null) {
+// try {
+// outputStream.close();
+// } catch (IOException e) {
+// logger.error("发生错误,错误信息" + e.getMessage());
+// }
+// }
+// }
+//
+// //终端性能查看
+//// @Async("asyncExecutor")
+// public void showProperty(String message, String host, Integer port, String devID) {
+// Runnable runnable = () -> {
+// String result;
+// OutputStream outputStream = null;
+// BufferedReader din = null;
+// Socket socket = null;
+// try {
+// socket = new Socket(host, port);
+// socket.setSoTimeout(20000); //20s未接受到数据自动超时中断
+// socketQuMap.put(devID, socket);
+// outputStream = socket.getOutputStream();
+// outputStream.write(message.getBytes("UTF-8"));
+// din = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
+// while ((result = din.readLine()) != null) {
+// JSONObject jsonObject = new JSONObject(result);
+// jsonObject.set("type", "190");
+// if (jsonObject.get("resultcode").toString().equals("10000")) {
+// mqttPublisher.send("/dev/showProperty/" + devID, jsonObject, 1, false);
+// } else {
+// mqttPublisher.send("/dev/showProperty/" + devID, jsonObject, 1, false);
+// }
+// }
+// } catch (IOException e) {
+// e.printStackTrace();
+// logger.error("终端性能异常" + e.getMessage());
+// JSONObject json = new JSONObject();
+// json.set("type", "190").set("resultcode", "20000").set("resultmsg", "未知异常");
+// mqttPublisher.send("/dev/showProperty/" + devID, json, 1, false);
+// } catch (Exception e) {
+// e.printStackTrace();
+// } finally {
+// safeColse(socket, din, null, outputStream);
+// if (socketQuMap.containsKey(devID)) {
+// socketQuMap.remove(devID);
+// }
+// }
+// };
+// executorPool.execute(runnable);
+// }
+//
+// //终端性能查看连接关闭
+// public String closeDevSocket(String msg, String host, Integer port,String devID) throws Exception {
+// if (socketQuMap.containsKey(devID)) {
+// String result = null;
+// Socket socket = null;
+// OutputStream outputStream = null;
+// BufferedReader bufferedReader = null;
+// try {
+// socket = new Socket(host, port);
+// socket.setSoTimeout(5000);
+// outputStream = socket.getOutputStream();
+// outputStream.write(msg.getBytes("UTF-8"));
+// bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
+// while ((result = bufferedReader.readLine()) != null) {
+// JSONObject jsonObject = new JSONObject(result);
+// if (jsonObject.getStr("resultcode").equals("10000")) {
+// }
+// break;
+// }
+// } catch (IOException e) {
+// e.printStackTrace();
+// logger.error(e.getMessage());
+// } finally {
+// socketQuMap.get(devID).shutdownOutput();
+// safeColse(socket, null, null, outputStream);
+// }
+// }
+// return "终端性能查看,关闭成功";
+// }
+//
+// //监测点实时数据查看
+// public void realTimeData(String message, String host, Integer port, String lineIndex) {
+// String loginName = RequestUtil.getLoginName();
+// Runnable real = () -> {
+// if (Objects.isNull(lineMap)) {
+// lineMap = new HashMap<>();
+// }
+// if (lineMap.containsKey(lineIndex)) {
+// //存在监测点
+// List lineL = lineMap.get(lineIndex);
+// if (!lineL.contains(loginName)) {
+// lineL.add(loginName);
+// }
+// } else {
+// List userList = new ArrayList<>();
+// userList.add(loginName);
+// lineMap.put(lineIndex, userList);
+// }
+//
+// Iterator>> iterator = lineMap.entrySet().iterator();
+// while (iterator.hasNext()) {
+// Map.Entry> en = iterator.next();
+// if (!en.getKey().equals(lineIndex)) {
+// List login = en.getValue();
+// if (CollectionUtil.isNotEmpty(login)) {
+// login.remove(loginName);
+// }
+// }
+//
+// }
+//
+// if (lineMap.size() > 1) {
+// //判断是否查看的是同一台装置信息
+// Set set = lineMap.keySet();
+// Integer count = lineMapper.getDevIndexs(set);
+// if (count < lineMap.size()) {
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.set("resultcode", 5557);
+// jsonObject.set("resultmsg", "存在其他用户相同操作,请稍后尝试");
+// if (Objects.nonNull(lineMap)) {
+// mqttPublisher.send("/dev/realTimeData/" + loginName, jsonObject, 1, false);
+// }
+// lineMap.remove(lineIndex);
+// return;
+// }
+// }
+//
+//
+// if (lineSocketMap == null) {
+// lineSocketMap = new HashMap<>();
+// }
+// if (!lineSocketMap.containsKey(lineIndex)) {
+// Socket socket = null;
+// BufferedReader bufferedReader = null;
+// OutputStream outputStream = null;
+// try {
+// socket = new Socket();
+// SocketAddress socketAddress = new InetSocketAddress(host, port);
+// socket.connect(socketAddress, 7000);
+// socket.setSoTimeout(20000);
+// lineSocketMap.put(lineIndex, socket);
+// outputStream = socket.getOutputStream();
+// outputStream.write(message.getBytes("UTF-8"));
+// bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
+// String result;
+// while ((result = bufferedReader.readLine()) != null) {
+// net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(result);
+// String code = jsonObject.getString("resultcode");
+// if (code.equals("10000")) {
+//
+//
+// String str = "";
+// List nameList = lineMap.get(lineIndex);
+// if (CollectionUtil.isNotEmpty(nameList)) {
+// for (String s : nameList) {
+// str += s + " ";
+// }
+// // System.out.println(str + " " + lineIndex);
+// mqttPublisher.send("/dev/realTimeData/" + loginName, jsonObject, 1, false);
+// }
+// } else if (code.equals("10008")) {
+// List nameList = lineMap.get(lineIndex);
+// if (CollectionUtil.isNotEmpty(nameList)) {
+// mqttPublisher.send("/dev/realTimeData/" + loginName, jsonObject, 1, false);
+// }
+// break;
+// }
+//
+// }
+// } catch (SocketTimeoutException e) {
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.put("resultcode", 5555);
+// jsonObject.put("resultmsg", "请求超时");
+// if (Objects.nonNull(lineMap)) {
+// List name = lineMap.get(lineIndex);
+// if (CollectionUtil.isNotEmpty(name)) {
+// mqttPublisher.send("/dev/realTimeData/" + loginName, jsonObject, 1, false);
+// }
+// }
+// e.printStackTrace();
+// } catch (ConnectException e) {
+// e.printStackTrace();
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.put("resultcode", 5556);
+// jsonObject.put("resultmsg", "连接前置服务器失败");
+// if (lineMap.get(lineIndex) != null) {
+// mqttPublisher.send("/dev/realTimeData/" + loginName, jsonObject, 1, false);
+// }
+// e.printStackTrace();
+// } catch (IOException e) {
+// e.printStackTrace();
+// } catch (Exception e) {
+// e.printStackTrace();
+// } finally {
+// safeColse(socket, bufferedReader, null, outputStream);
+// if (lineSocketMap != null) {
+// lineSocketMap.remove(lineIndex);
+// }
+// if (lineMap != null) {
+// lineMap.remove(lineIndex);
+// }
+// }
+// }
+// };
+// executorPool.execute(real);
+// }
+//
+// //监测点实时数据心跳
+// public void heartRealData(String msg, String host, Integer port, String lineIndex) {
+// if (lineMap != null) {
+// if (lineMap.containsKey(lineIndex)) {
+// String result = null;
+// OutputStream outputStream = null;
+// BufferedReader bufferedReader = null;
+// Socket socket = null;
+//
+// try {
+// socket = new Socket(host, port);
+// socket.setSoTimeout(10000);
+// outputStream = socket.getOutputStream();
+// outputStream.write(msg.getBytes("UTF-8"));
+// bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
+// while ((result = bufferedReader.readLine()) != null) {
+// if (StrUtil.isNotBlank(result)) {
+// net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(result);
+// if (jsonObject.get("resultcode").equals("10000")) {
+// break;
+// }
+// } else {
+// logger.error("实时数据socket异常!");
+// }
+// }
+// } catch (IOException e) {
+// e.printStackTrace();
+// } finally {
+// safeColse(socket, bufferedReader, null, outputStream);
+// }
+// }
+// }
+// }
+//
+// //监测点实时数据连接关闭
+// public void closeRealData(String lineIndex) {
+// String loginName = RequestUtil.getLoginName();
+// if (lineMap != null) {
+// if (lineMap.containsKey(lineIndex)) {
+// List user = lineMap.get(lineIndex);
+// if (CollectionUtil.isNotEmpty(user)) {
+// user.remove(loginName);
+// if (user.size() == 0) {
+// lineMap.remove(lineIndex);
+// Socket socket = null;
+// String result = null;
+// OutputStream outputStream = null;
+// BufferedReader bufferedReader = null;
+// try {
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.set("LineId", lineIndex);
+// jsonObject.set("type", 2);
+// JSONObject jsonObject1 = new JSONObject();
+// jsonObject1.set("len", 0);
+// jsonObject1.set("data", jsonObject);
+//
+// String host = lineMapper.getNodeIp(lineIndex,0);
+// socket = new Socket(host, 60000);
+// socket.setSoTimeout(10000);
+// outputStream = socket.getOutputStream();
+// outputStream.write(jsonObject1.toString().getBytes());
+// InputStream inputStream = socket.getInputStream();
+// bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
+// while ((result = bufferedReader.readLine()) != null) {
+// net.sf.json.JSONObject jj = net.sf.json.JSONObject.fromObject(result);
+// //JSONObject jj = new JSONObject(result);
+// if (jj.getString("resultcode").equals("10000")) {
+// // System.out.println("已经告诉前置关闭实时数据" + lineIndex);
+// lineSocketMap.get(lineIndex).shutdownOutput();
+// break;
+// }
+// }
+//
+// // System.out.println(loginName + "前台请求关闭实时数据" + lineIndex);
+// } catch (IOException e) {
+// e.printStackTrace();
+// } finally {
+// safeColse(socket, bufferedReader, null, outputStream);
+// }
+// lineSocketMap.remove(lineIndex);
+// }
+// }
+// }
+// }
+// }
+//
+//
+// //升级终端
+// public void sentUpgrades(String message, String host, Integer port, String loginName, String edIndex, List list) {
+// String userId = RequestUtil.getUserIndex();
+// sumMap.put(userId + host, 0);
+// sumCanMap.put(userId + host, 0);
+// sumResMap.put(userId + host, 0);
+// sumDevMap.put(userId + host, list.size());
+// System.out.println(message);
+// logger.info("发起升级装置命令:"+message);
+// Runnable myCallable = () -> {
+//
+// String result = null;
+// Socket socket = null;
+// InputStream is = null;
+// BufferedReader din = null;
+// OutputStream outputStream = null;
+// JSONArray jsonArray = new JSONArray(list);
+// String json = "{\"resultcode\":\"100\",\"type\":\"180\",\"data\":" + jsonArray + "}";
+// DevVersion version;
+// try {
+// SocketAddress socketAddress = new InetSocketAddress(host, port);
+// socket = new Socket();
+// socket.connect(socketAddress, 7000);
+// socket.setSoTimeout(60*1000*3);
+// socketMap.put(userId + host, socket);
+// outputStream = socket.getOutputStream();
+// outputStream.write(message.getBytes("UTF-8"));
+// is = socket.getInputStream();
+// din = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+//
+// while ((result = din.readLine()) != null) {
+//
+// System.out.println(result);
+// logger.info("升级流程:"+message);
+//
+// JSONObject jsonObject = new JSONObject(result.trim());
+//
+// jsonObject.set("type", "180");
+// if (jsonObject.get("resultcode").toString().equals("10000")) {
+// JSONObject data = jsonObject.getJSONObject("data");
+// if (data == null) {
+// //表示刚连接成功
+// mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
+// } else {
+// mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
+// if (data.get("state").equals("2")) {
+// Integer succeed = sumMap.get(userId + host);
+// succeed++;
+// sumMap.put(userId + host, succeed);
+// } else if (data.get("state").equals("3")) {
+// Integer fail = sumMap.get(userId + host);
+// fail++;
+// sumMap.put(userId + host, fail);
+// }
+// }
+// } else if (jsonObject.get("resultcode").toString().equals("10010")) {
+//
+// mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
+//
+// } else if (jsonObject.get("resultcode").toString().equals("10003")) {
+//
+// mqttPublisher.send("/dev/upgrades/" + loginName, json, 1, false);
+// Integer fail = sumMap.get(userId + host);
+// for (UpDevVO dev : list) {
+// fail++;
+// version=new DevVersion();
+// version.setLineId(dev.getDevIndex());
+// version.setVersionId(edIndex);
+// version.setFlag(0);
+// version.setResult(0);
+// version.setState(1);
+// devVersionMapper.insert(version);
+// }
+// sumMap.put(userId + host, fail);
+//
+// } else if (jsonObject.get("resultcode").toString().equals("10008")) {
+// mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
+// } else {
+// Integer fail = sumMap.get(userId + host);
+// System.out.println(fail);
+// fail++;
+// sumMap.put(userId + host, fail);
+// mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
+// }
+//
+// Integer resSum = sumMap.get(userId + host);
+//
+// if (resSum == list.size()) {
+// System.out.println("进入break跳出升级流程总装置数:" + resSum);
+// break;
+// }
+//
+//
+// }
+// } catch (SocketTimeoutException red) {
+// red.printStackTrace();
+// //全部取消升级操作 异常不处理
+// logger.error("终端升级连接超时,联系管理员排查问题" + red.getMessage());
+// JSONObject jj = new JSONObject();
+// jj.set("resultcode", 77777);
+// jj.set("type", 180);
+// mqttPublisher.send("/dev/upgrades/" + loginName, jj, 1, false);
+// } catch (ConnectException e) {
+// e.printStackTrace();
+// logger.error("发生错误,错误信息" + e.getMessage());
+// for (UpDevVO dev : list) {
+// version=new DevVersion();
+// version.setLineId(dev.getDevIndex());
+// version.setVersionId(edIndex);
+// version.setFlag(0);
+// version.setResult(0);
+// version.setState(1);
+// devVersionMapper.insert(version);
+// }
+// mqttPublisher.send("/dev/upgrades/" + loginName, json, 1, false);
+// } catch (Exception e) {
+// e.printStackTrace();
+// logger.error("发生错误,错误信息" + e.getMessage());
+// for (UpDevVO dev : list) {
+// version=new DevVersion();
+// version.setLineId(dev.getDevIndex());
+// version.setVersionId(edIndex);
+// version.setFlag(0);
+// version.setResult(0);
+// version.setState(1);
+// devVersionMapper.insert(version);
+// }
+// mqttPublisher.send("/dev/upgrades/" + loginName, json, 1, false);
+// } finally {
+// //不管失败成功告诉前台页面升级程序结束
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.set("type", 180);
+// jsonObject.set("resultcode", -10000);
+// jsonObject.set("data", list);
+// mqttPublisher.send("/dev/upgrades/" + loginName, jsonObject, 1, false);
+// safeColse(socket, din, is, outputStream);
+// delMapData(userId + host);
+// }
+// };
+// executorPool.execute(myCallable);
+// }
+//
+// //取消升级终端
+// public void cancelUp(String json, String host, Integer port, Integer devNum) {
+// String loginName =RequestUtil.getLoginName();
+// String userId = RequestUtil.getUserIndex();
+// Runnable aaa = () -> {
+// Socket socket = null;
+// InputStream inputStream = null;
+// BufferedReader bufferedReader = null;
+// String result = "";
+// try {
+// Integer deflag = 0;
+// socket = new Socket(host, port);
+// socket.setSoTimeout(20000);
+// socket.getOutputStream().write(json.getBytes());
+// inputStream = socket.getInputStream();
+// bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
+//
+// while ((result = bufferedReader.readLine()) != null) {
+// System.out.println(result);
+// JSONObject jsonObject = null;
+// try {
+// jsonObject = new JSONObject(result.trim());
+// } catch (Exception json1) {
+// json1.printStackTrace();
+// }
+// if ((jsonObject.get("resultcode").toString()).equals("10000")) {
+// deflag++;
+// Integer csum = sumCanMap.get(userId + host);
+// csum++;
+// sumCanMap.put(userId + host, csum);
+//
+// Integer sum = sumMap.get(userId + host);
+// sum++;
+// sumMap.put(userId + host, sum);
+// }
+// jsonObject.set("type", "182");
+// mqttPublisher.send("/dev/cancelUp/" + loginName, json, 1, false);
+// System.out.println(sumCanMap.get(userId + host));
+// System.out.println(sumMap.get(userId + host));
+//
+// if (sumMap.get(userId + host).equals(sumDevMap.get(userId + host))) {
+// Socket ss = socketMap.get(userId + host);
+// System.out.println("进入关闭socket流程");
+// if (ss != null) {
+// ss.shutdownOutput();
+// }
+// }
+//
+// if (devNum.equals(deflag)) {
+// break;
+// }
+// }
+//
+// } catch (IOException e) {
+// logger.error("终端升级取消命令发送失败");
+// e.printStackTrace();
+// } finally {
+// System.out.println("取消结束+++");
+// safeColse(socket, bufferedReader, inputStream, null);
+// }
+//
+// };
+// executorPool.execute(aaa);
+// }
+//
+// //重启升级成功的装置
+// public void restartDev(String json, String host, Integer port, List devL) {
+// System.out.println("重启装置" + host + "命令:" + json);
+// Integer sum = devL.size();
+// String loginName = RequestUtil.getLoginName();
+// String userId = RequestUtil.getUserIndex();
+// Runnable aaa = () -> {
+// Socket socket = null;
+// BufferedReader bufferedReader = null;
+// OutputStream outputStream = null;
+// JSONObject jsonObject = null;
+// String result = null;
+// List devIndexList = new ArrayList<>();
+// try {
+// socket = new Socket(host, port);
+// socket.setSoTimeout(1000*60*6);
+// outputStream = socket.getOutputStream();
+// outputStream.write(json.getBytes());
+// bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
+//
+// Socket socket1 = socket;
+//
+// Runnable heart = () -> {
+// finalFlag = true;
+// try {
+// while (finalFlag){
+// Thread.sleep(15000);
+// if(socket1!=null) {
+// if (socket1.isConnected() && !socket1.isClosed()) {
+// socket1.getOutputStream().write(new JSONObject().put("heart", "666").toString().getBytes());
+// System.out.println("心跳发送成功");
+// }
+// }
+//
+// }
+//
+// } catch (Exception e) {
+// e.printStackTrace();
+// finalFlag = false;
+// }
+// System.out.println("是否发送心跳标识"+ finalFlag);
+// };
+// executorPool.execute(heart);
+// while ((result = bufferedReader.readLine()) != null) {
+// System.out.println(result);
+//
+// try {
+// jsonObject = new JSONObject(result.trim());
+// } catch (Exception json1) {
+// json1.printStackTrace();
+// logger.error("终端升级重启命令发送失败" + json1.getMessage());
+// break;
+// }
+// if ((jsonObject.get("resultcode")).equals(10000)) {
+// //处理成功进行入库记录日志
+// // Integer succeed = sumResMap.get(userId + host);
+// // succeed++;
+// // sumResMap.put(userId + host, succeed);
+// } else if ((jsonObject.get("resultcode")).equals(10008)) {
+//
+// } else if ((jsonObject.get("resultcode")).equals(10001)) {
+// devIndexList.add(jsonObject.getJSONObject("data").getStr("devIndex"));
+// Integer succeed = sumResMap.get(userId + host);
+// succeed++;
+// sumResMap.put(userId + host, succeed);
+// } else {
+// Integer succeed = sumResMap.get(userId + host);
+// succeed++;
+// sumResMap.put(userId + host, succeed);
+// }
+// jsonObject.set("type", "181");
+// mqttPublisher.send("/dev/restartDev/" + loginName, jsonObject, 1, false);
+// if (sum.equals(sumResMap.get(userId + host))) {
+// System.out.println("重启总数量:"+sum+"-"+sumResMap.get(userId + host));
+// finalFlag = false;
+// break;
+// }
+// }
+//
+// } catch (SocketTimeoutException e) {
+// e.printStackTrace();
+// //超时处理
+// JSONObject json1 = new JSONObject();
+// json1.set("resultcode", 5555);
+// json1.set("resultmsg", "超时");
+// json1.set("type", 181);
+// mqttPublisher.send("/dev/restartDev/" + loginName, json1, 1, false);
+//
+// } catch (IOException e) {
+// e.printStackTrace();
+// } catch (Exception ee) {
+// ee.printStackTrace();
+// } finally {
+// finalFlag = false;
+// System.out.println("重启socket结束+++");
+// safeColse(socket, bufferedReader, null, outputStream);
+// socketMap.remove(userId + host);
+// }
+//
+// };
+// executorPool.execute(aaa);
+//
+// }
+//
+// /**
+// * @Description:清空全局变量释放内存
+// * @param key
+// * @Author: wr
+// * @Date: 2023/8/16 16:15
+// */
+// public void delMapData(String key) {
+// if (sumMap != null) {
+// sumMap.remove(key);
+// }
+// if (sumCanMap != null) {
+// sumCanMap.remove(key);
+// }
+// }
+//}
+//
+//
+//
+//
+//