治理暂态事件、文件解析功能
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package com.njcn.access.controller;
|
||||
|
||||
import com.njcn.access.pojo.po.CsLineModel;
|
||||
import com.njcn.access.service.ICsTopicService;
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
/**
|
||||
* 类的介绍:
|
||||
*
|
||||
* @author xuyang
|
||||
* @version 1.0.0
|
||||
* @createTime 2023/9/6 11:07
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/topic")
|
||||
@Api(tags = "设备主题")
|
||||
@AllArgsConstructor
|
||||
@ApiIgnore
|
||||
public class CsTopicController extends BaseController {
|
||||
|
||||
private final ICsTopicService csTopicService;
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/find")
|
||||
@ApiOperation("获取设备支持的主题版本")
|
||||
@ApiImplicitParam(name = "nDid", value = "nDid", required = true)
|
||||
public HttpResult<String> find(@RequestParam String nDid){
|
||||
String methodDescribe = getMethodDescribe("find");
|
||||
String version = csTopicService.getVersion(nDid);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, version, methodDescribe);
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import com.njcn.access.enums.AccessResponseEnum;
|
||||
import com.njcn.access.enums.TypeEnum;
|
||||
import com.njcn.access.pojo.RspDataDto;
|
||||
import com.njcn.access.pojo.dto.*;
|
||||
import com.njcn.access.pojo.dto.file.FileDto;
|
||||
import com.njcn.access.pojo.dto.heart.HeartBeatDto;
|
||||
import com.njcn.access.pojo.param.ReqAndResParam;
|
||||
import com.njcn.access.pojo.po.CsLineModel;
|
||||
@@ -27,10 +28,14 @@ import com.njcn.csdevice.api.DataSetFeignClient;
|
||||
import com.njcn.csdevice.api.DevModelFeignClient;
|
||||
import com.njcn.csdevice.pojo.po.CsDataSet;
|
||||
import com.njcn.csdevice.pojo.po.CsDevModelPO;
|
||||
import com.njcn.mq.constant.BusinessTopic;
|
||||
import com.njcn.mq.message.AppAutoDataMessage;
|
||||
import com.njcn.mq.message.AppEventMessage;
|
||||
import com.njcn.mq.message.AppFileMessage;
|
||||
import com.njcn.mq.template.AppAutoDataMessageTemplate;
|
||||
import com.njcn.mq.template.AppEventMessageTemplate;
|
||||
import com.njcn.mq.template.AppFileMessageTemplate;
|
||||
import com.njcn.mq.template.AppFileStreamMessageTemplate;
|
||||
import com.njcn.redis.pojo.enums.AppRedisKey;
|
||||
import com.njcn.redis.utils.RedisUtil;
|
||||
import com.njcn.web.utils.RequestUtil;
|
||||
@@ -78,6 +83,10 @@ public class MqttMessageHandler {
|
||||
|
||||
private final CsLogsFeignClient csLogsFeignClient;
|
||||
|
||||
private final AppFileMessageTemplate appFileMessageTemplate;
|
||||
|
||||
private final AppFileStreamMessageTemplate appFileStreamMessageTemplate;
|
||||
|
||||
@Autowired
|
||||
Validator validator;
|
||||
|
||||
@@ -357,7 +366,8 @@ public class MqttMessageHandler {
|
||||
//处理心跳
|
||||
ReqAndResDto.Res reqAndResParam = new ReqAndResDto.Res();
|
||||
HeartBeatDto heartBeatDto = new HeartBeatDto();
|
||||
heartBeatDto.setTime(System.currentTimeMillis()/1000);
|
||||
//fixme 前置处理的时间应该是UTC时间,所以需要加8小时。
|
||||
heartBeatDto.setTime(System.currentTimeMillis()/1000+8*3600);
|
||||
reqAndResParam.setMid(res.getMid());
|
||||
reqAndResParam.setDid(0);
|
||||
reqAndResParam.setPri(AccessEnum.FIRST_CHANNEL.getCode());
|
||||
@@ -421,4 +431,37 @@ public class MqttMessageHandler {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件传输
|
||||
* @param topic
|
||||
* @param message
|
||||
* @param version
|
||||
* @param nDid
|
||||
* @param payload
|
||||
*/
|
||||
@MqttSubscribe(value = "/Pfm/DevFileRsp/{version}/{edgeId}",qos = 1)
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void file(String topic, MqttMessage message, @NamedValue("version") String version, @NamedValue("edgeId") String nDid, @Payload String payload) {
|
||||
//解析数据
|
||||
Gson gson = new Gson();
|
||||
FileDto fileDto = gson.fromJson(new String(message.getPayload(), StandardCharsets.UTF_8), FileDto.class);
|
||||
JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(fileDto));
|
||||
AppFileMessage appFileMessage = JSONObject.toJavaObject(jsonObject, AppFileMessage.class);
|
||||
appFileMessage.setId(nDid);
|
||||
//响应请求
|
||||
switch (fileDto.getType()){
|
||||
case 4657:
|
||||
log.info("获取文件信息");
|
||||
appFileMessageTemplate.sendMember(appFileMessage);
|
||||
break;
|
||||
case 4658:
|
||||
log.info("获取文件流信息");
|
||||
appFileStreamMessageTemplate.sendMember(appFileMessage);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -243,14 +243,17 @@ public class CsDeviceServiceImpl implements ICsDeviceService {
|
||||
//3.监测点表录入关系
|
||||
for (DevAccessParam.LineParam item : devAccessParam.getList()) {
|
||||
String location = dicDataFeignClient.getDicDataById(item.getPosition()).getData().getCode();
|
||||
String id = IdUtil.fastSimpleUUID();
|
||||
CsLinePO po = new CsLinePO();
|
||||
po.setLineId(id);
|
||||
CsLedgerParam param = new CsLedgerParam();
|
||||
AppLineTopologyDiagramPO appLineTopologyDiagramPo = new AppLineTopologyDiagramPO();
|
||||
po.setName(item.getName());
|
||||
po.setPosition(item.getPosition());
|
||||
po.setClDid(0);
|
||||
if (Objects.equals(DicDataEnum.LOAD_SIDE.getCode(),location)){
|
||||
RspDataDto.LdevInfo po1 = list.stream().filter(s -> Objects.equals(s.getClDid(),1)).findFirst().orElse(null);
|
||||
po.setLineId(devAccessParam.getNDid() + "1");
|
||||
param.setId(devAccessParam.getNDid() + "1");
|
||||
appLineTopologyDiagramPo.setLineId(devAccessParam.getNDid() + "1");
|
||||
po.setVolGrade(po1.getVolGrade());
|
||||
po.setPtRatio(po1.getPtRatio());
|
||||
po.setCtRatio(po1.getCtRatio());
|
||||
@@ -258,24 +261,27 @@ public class CsDeviceServiceImpl implements ICsDeviceService {
|
||||
po.setClDid(1);
|
||||
} else if (Objects.equals(DicDataEnum.GRID_SIDE.getCode(),location)){
|
||||
RspDataDto.LdevInfo po1 = list.stream().filter(s -> Objects.equals(s.getClDid(),2)).findFirst().orElse(null);
|
||||
po.setLineId(devAccessParam.getNDid() + "2");
|
||||
param.setId(devAccessParam.getNDid() + "2");
|
||||
appLineTopologyDiagramPo.setLineId(devAccessParam.getNDid() + "2");
|
||||
po.setVolGrade(po1.getVolGrade());
|
||||
po.setPtRatio(po1.getPtRatio());
|
||||
po.setCtRatio(po1.getCtRatio());
|
||||
po.setConType(po1.getConType());
|
||||
po.setClDid(2);
|
||||
} else {
|
||||
po.setLineId(devAccessParam.getNDid() + "0");
|
||||
param.setId(devAccessParam.getNDid() + "0");
|
||||
appLineTopologyDiagramPo.setLineId(devAccessParam.getNDid() + "0");
|
||||
}
|
||||
po.setStatus(1);
|
||||
csLinePoList.add(po);
|
||||
CsLedgerParam param = new CsLedgerParam();
|
||||
param.setId(id);
|
||||
param.setPid(vo.getId());
|
||||
param.setName(item.getName());
|
||||
param.setLevel(3);
|
||||
param.setSort(0);
|
||||
csLedgerService.addLedgerTree(param);
|
||||
AppLineTopologyDiagramPO appLineTopologyDiagramPo = new AppLineTopologyDiagramPO();
|
||||
appLineTopologyDiagramPo.setId(devAccessParam.getTopologyDiagram());
|
||||
appLineTopologyDiagramPo.setLineId(id);
|
||||
appLineTopologyDiagramPo.setLat(item.getLat());
|
||||
appLineTopologyDiagramPo.setLng(item.getLng());
|
||||
appLineTopologyDiagramPo.setStatus("1");
|
||||
|
||||
Reference in New Issue
Block a user