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); +// } +// } +//} +// +// +// +// +//