代码调整

This commit is contained in:
2023-07-11 10:22:06 +08:00
parent feb30c71dd
commit 147aef0bfd
20 changed files with 711 additions and 14 deletions

View File

@@ -35,7 +35,7 @@ public class CsDeviceController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/register")
@ApiOperation("设备注册")
@ApiOperation("直连设备注册")
@ApiImplicitParam(name = "nDid", value = "设备识别码", required = true)
public HttpResult<String> devRegister(@RequestParam String nDid){
csDeviceService.devRegister(nDid);
@@ -44,7 +44,7 @@ public class CsDeviceController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/model")
@ApiOperation("获取装置模板信息")
@ApiOperation("获取直连设备模板信息")
@ApiImplicitParam(name = "nDid", value = "设备识别码", required = true)
public HttpResult<Object> getModel(@RequestParam String nDid){
String methodDescribe = getMethodDescribe("getModel");
@@ -54,12 +54,11 @@ public class CsDeviceController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/access")
@ApiOperation("设备接入")
@ApiOperation("直连设备接入")
@ApiImplicitParam(name = "devAccessParam", value = "接入参数", required = true)
public HttpResult<String> devAccess(@RequestBody @Validated DevAccessParam devAccessParam){
String methodDescribe = getMethodDescribe("getModel");
csDeviceService.devAccess(devAccessParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -0,0 +1,92 @@
package com.njcn.access.controller;
import com.njcn.access.param.WgDeviceRegisterParam;
import com.njcn.access.param.WgRegisterParam;
import com.njcn.access.pojo.vo.CsGatewayVo;
import com.njcn.access.service.ICsGatewayService;
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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 网关表 前端控制器
* </p>
*
* @author xuyang
* @since 2023-07-06
*/
@Slf4j
@RestController
@RequestMapping("/csGateway")
@Api(tags = "治理网关信息")
@AllArgsConstructor
@Validated
public class CsGatewayController extends BaseController {
private final ICsGatewayService csGatewayService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/wgRegister")
@ApiOperation("网关注册1")
@ApiImplicitParam(name = "nDid", value = "设备识别码", required = true)
public HttpResult<String> wgRegister(@RequestParam String nDid){
String methodDescribe = getMethodDescribe("wgRegister");
csGatewayService.wgRegister(nDid);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/wgRegister2")
@ApiOperation("网关注册2")
@ApiImplicitParam(name = "wgRegisterParam", value = "网关注册参数", required = true)
public HttpResult<String> wgRegister2(@RequestBody @Validated WgRegisterParam wgRegisterParam){
String methodDescribe = getMethodDescribe("wgRegister2");
csGatewayService.wgRegister2(wgRegisterParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/findList")
@ApiOperation("网关列表")
public HttpResult<List<CsGatewayVo>> findList(){
String methodDescribe = getMethodDescribe("findList");
List<CsGatewayVo> list = csGatewayService.getWgList();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/findById")
@ApiOperation("网关详情")
@ApiImplicitParam(name = "wgId", value = "网关注册参数", required = true)
public HttpResult<CsGatewayVo> findById(@RequestParam String wgId){
String methodDescribe = getMethodDescribe("findById");
CsGatewayVo vo = csGatewayService.findById(wgId);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, vo, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/registerByWg")
@ApiOperation("网关下设备注册")
@ApiImplicitParam(name = "list", value = "网关下设备注册参数集合", required = true)
public HttpResult<String> registerByWg(@RequestBody @Validated List<WgDeviceRegisterParam> list){
String methodDescribe = getMethodDescribe("registerByWg");
csGatewayService.registerByWg(list);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -108,7 +108,8 @@ public class MqttMessageHandler {
ReqAndResDto.Res res = gson.fromJson(new String(message.getPayload(), StandardCharsets.UTF_8), ReqAndResDto.Res.class);
if (Objects.equals(res.getCode(),AccessEnum.SUCCESS.getCode())){
if (Objects.equals(res.getType(),TypeEnum.TYPE_17.getCode())){
equipmentFeignClient.updateStatusBynDid(nDid, AccessEnum.REGISTERED.getCode());
//这边用redis缓存来判断是否接收响应
redisUtil.saveByKeyWithExpire(nDid,AccessEnum.SUCCESS.getCode(),600L);
//询问模板数据
ReqAndResDto.Req reqAndResParam = new ReqAndResDto.Req();
reqAndResParam.setMid(1);
@@ -117,8 +118,6 @@ public class MqttMessageHandler {
reqAndResParam.setType(TypeEnum.TYPE_3.getCode());
reqAndResParam.setExpire(-1);
publisher.send("/Pfm/DevCmd/V1/"+nDid,new Gson().toJson(reqAndResParam),1,false);
//这边用redis缓存来判断是否接收响应
redisUtil.saveByKey(nDid,AccessEnum.SUCCESS.getCode());
} else {
log.info(AccessResponseEnum.MESSAGE_TYPE_ERROR.getMessage());
}
@@ -160,13 +159,12 @@ public class MqttMessageHandler {
List<CsLineModel> lineList = csLineModelService.getMonitorNumByModelId(modelId);
String key = "LINE" + nDid;
//存储监测点模板信息,用于界面回显
redisUtil.saveByKey(key,lineList);
redisUtil.saveByKeyWithExpire(key,lineList,600L);
//存储模板id
//todo 这边也是要调整的
String key2 = "MODEL" + nDid;
redisUtil.saveByKey(key2,modelId);
redisUtil.saveByKeyWithExpire(key2,modelId,600L);
redisUtil.delete(nDid);
}

View File

@@ -0,0 +1,23 @@
package com.njcn.access.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.access.pojo.po.CsGatewayDevice;
import com.njcn.access.pojo.vo.CsGatewayVo;
import com.njcn.csdevice.pojo.po.CsEquipmentAlarmPO;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import java.util.List;
/**
* <p>
* 网关装置关系表 Mapper 接口
* </p>
*
* @author xuyang
* @since 2023-07-07
*/
public interface CsGatewayDeviceMapper extends BaseMapper<CsGatewayDevice> {
List<CsEquipmentDeliveryPO> getList(String id);
}

View File

@@ -0,0 +1,24 @@
package com.njcn.access.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.access.pojo.po.CsGateway;
import com.njcn.access.pojo.vo.CsGatewayVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 网关表 Mapper 接口
* </p>
*
* @author xuyang
* @since 2023-07-06
*/
public interface CsGatewayMapper extends BaseMapper<CsGateway> {
List<CsGatewayVo> getWgList(@Param("userId") String userId);
CsGatewayVo findById(@Param("id") String id);
}

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.access.mapper.CsGatewayDeviceMapper">
<select id="getList" resultType="com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO">
select
t1.name
from
cs_gateway_device t0
left join cs_equipment_delivery t1 on t0.dev_id = t1.id
where t0.id = #{id}
</select>
</mapper>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.access.mapper.CsGatewayMapper">
<select id="getWgList" resultType="com.njcn.access.pojo.vo.CsGatewayVo">
select
t0.id,
t1.name devName,
t2.name proName,
t0.area
from
cs_gateway t0
left join cs_equipment_delivery t1 on t0.id = t1.id
left join cs_project t2 on t0.pid = t2.id
where t0.create_by = #{userId}
</select>
<select id="findById" resultType="com.njcn.access.pojo.vo.CsGatewayVo">
select
t0.id,
t1.name wgName,
t2.name proName,
t1.dev_model devModel,
t3.version_no programVersion,
t4.file_path filePath
from
cs_gateway t0
left join cs_equipment_delivery t1 on t0.id = t1.id
left join cs_project t2 on t0.pid = t2.id
left join cs_ed_data t3 on t1.program_version = t3.id
left join cs_topology_diagram t4 on t0.tid = t4.id
where t0.id = #{id} and t0.status = 1
</select>
</mapper>

View File

@@ -1,6 +1,8 @@
package com.njcn.access.service;
import com.njcn.access.param.DevAccessParam;
import com.njcn.access.param.WgDeviceRegisterParam;
import com.njcn.access.param.WgRegisterParam;
/**
* 类的介绍:
@@ -29,5 +31,4 @@ public interface ICsDeviceService {
* @param devAccessParam
*/
void devAccess(DevAccessParam devAccessParam);
}

View File

@@ -0,0 +1,27 @@
package com.njcn.access.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.access.pojo.po.CsGatewayDevice;
import com.njcn.csdevice.pojo.po.CsEquipmentAlarmPO;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import java.util.List;
/**
* <p>
* 网关装置关系表 服务类
* </p>
*
* @author xuyang
* @since 2023-07-07
*/
public interface ICsGatewayDeviceService extends IService<CsGatewayDevice> {
/**
* 根据网关id获取网关下装置的信息
* @param id
* @return
*/
List<CsEquipmentDeliveryPO> getList(String id);
}

View File

@@ -0,0 +1,51 @@
package com.njcn.access.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.access.param.WgDeviceRegisterParam;
import com.njcn.access.param.WgRegisterParam;
import com.njcn.access.pojo.po.CsGateway;
import com.njcn.access.pojo.vo.CsGatewayVo;
import java.util.List;
/**
* <p>
* 网关表 服务类
* </p>
*
* @author xuyang
* @since 2023-07-06
*/
public interface ICsGatewayService extends IService<CsGateway> {
/**
* 网关注册
* @param nDid 设备识别码
*/
void wgRegister(String nDid);
/**
* 网关ndid校验成功后添加网关信息
* @param wgRegisterParam
*/
void wgRegister2(WgRegisterParam wgRegisterParam);
/**
* 查询用户下的网关
* @return
*/
List<CsGatewayVo> getWgList();
/**
* 查询具体网关信息
* @return
*/
CsGatewayVo findById(String id);
/**
* 网关下设备注册
* @param list
*/
void registerByWg(List<WgDeviceRegisterParam> list);
}

View File

@@ -1,14 +1,19 @@
package com.njcn.access.service.impl;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.tocrhz.mqtt.publisher.MqttPublisher;
import com.njcn.access.enums.AccessEnum;
import com.njcn.access.enums.AccessResponseEnum;
import com.njcn.access.enums.TypeEnum;
import com.njcn.access.param.DevAccessParam;
import com.njcn.access.param.WgDeviceRegisterParam;
import com.njcn.access.param.WgRegisterParam;
import com.njcn.access.pojo.dto.AccessDto;
import com.njcn.access.pojo.dto.ReqAndResDto;
import com.njcn.access.pojo.po.CsGateway;
import com.njcn.access.service.ICsDeviceService;
import com.njcn.access.service.ICsGatewayService;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.utils.PubUtils;
@@ -66,6 +71,8 @@ public class CsDeviceServiceImpl implements ICsDeviceService {
private final CsDeviceUserFeignClient csDeviceUserFeignClient;
private final ICsGatewayService csGatewayService;
private final MqttPublisher publisher;
private final RedisUtil redisUtil;
@@ -177,7 +184,7 @@ public class CsDeviceServiceImpl implements ICsDeviceService {
devModelRelationFeignClient.addDevModelRelation(csDevModelRelationAddParm);
redisUtil.delete("MODEL" + devAccessParam.getNDid());
//5.修改装置状态
equipmentFeignClient.updateStatusBynDid(devAccessParam.getNDid(), AccessEnum.ACCESS.getCode());
equipmentFeignClient.updateStatusBynDid(devAccessParam.getNDid(), AccessEnum.REGISTERED.getCode());
//6.设置心跳时间,超时改为掉线
redisUtil.saveByKeyWithExpire("MQTT:" + devAccessParam.getNDid(), Instant.now().toEpochMilli(),180L);
//7.绑定装置和人的关系
@@ -194,7 +201,6 @@ public class CsDeviceServiceImpl implements ICsDeviceService {
}
}
public void zhiLianRegister(String nDid,String devType) {
ReqAndResDto.Req reqAndResParam = new ReqAndResDto.Req();
reqAndResParam.setMid(1);

View File

@@ -0,0 +1,28 @@
package com.njcn.access.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.access.mapper.CsGatewayDeviceMapper;
import com.njcn.access.pojo.po.CsGatewayDevice;
import com.njcn.access.service.ICsGatewayDeviceService;
import com.njcn.csdevice.pojo.po.CsEquipmentAlarmPO;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 网关装置关系表 服务实现类
* </p>
*
* @author xuyang
* @since 2023-07-07
*/
@Service
public class CsGatewayDeviceServiceImpl extends ServiceImpl<CsGatewayDeviceMapper, CsGatewayDevice> implements ICsGatewayDeviceService {
@Override
public List<CsEquipmentDeliveryPO> getList(String id) {
return this.baseMapper.getList(id);
}
}

View File

@@ -0,0 +1,116 @@
package com.njcn.access.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.access.enums.AccessEnum;
import com.njcn.access.enums.AccessResponseEnum;
import com.njcn.access.mapper.CsGatewayMapper;
import com.njcn.access.param.WgDeviceRegisterParam;
import com.njcn.access.param.WgRegisterParam;
import com.njcn.access.pojo.po.CsGateway;
import com.njcn.access.pojo.vo.CsGatewayVo;
import com.njcn.access.service.ICsGatewayDeviceService;
import com.njcn.access.service.ICsGatewayService;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.api.EquipmentFeignClient;
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.system.api.DictTreeFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.pojo.po.SysDicTreePO;
import com.njcn.web.utils.RequestUtil;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 网关表 服务实现类
* </p>
*
* @author xuyang
* @since 2023-07-06
*/
@Service
@AllArgsConstructor
public class CsGatewayServiceImpl extends ServiceImpl<CsGatewayMapper, CsGateway> implements ICsGatewayService {
private final FileStorageUtil fileStorageUtil;
private final EquipmentFeignClient equipmentFeignClient;
private final DictTreeFeignClient dictTreeFeignClient;
private final ICsGatewayDeviceService csGatewayDeviceService;
@Override
public void wgRegister(String nDid) {
//1.判断nDid是否存在
CsEquipmentDeliveryVO csEquipmentDeliveryVO = equipmentFeignClient.queryEquipmentByndid(nDid).getData();
if (Objects.isNull(csEquipmentDeliveryVO.getNdid())){
throw new BusinessException(AccessResponseEnum.NDID_NO_FIND);
}
//2.判断设备是否是网关
SysDicTreePO sysDicTreePo = dictTreeFeignClient.queryById(csEquipmentDeliveryVO.getDevType()).getData();
if (Objects.isNull(sysDicTreePo)){
throw new BusinessException(AccessResponseEnum.DEV_NOT_FIND);
}
String code = sysDicTreePo.getCode();
if (!Objects.equals(code, DicDataEnum.GATEWAY_DEV.getCode())){
throw new BusinessException(AccessResponseEnum.DEV_IS_NOT_WG);
}
}
@Override
@Transactional(rollbackFor = {Exception.class})
public void wgRegister2(WgRegisterParam wgRegisterParam) {
CsEquipmentDeliveryVO csEquipmentDeliveryVO = equipmentFeignClient.queryEquipmentByndid(wgRegisterParam.getNDid()).getData();
CsGateway csGateway = new CsGateway();
csGateway.setId(csEquipmentDeliveryVO.getId());
csGateway.setPid(wgRegisterParam.getProjectId());
csGateway.setArea(wgRegisterParam.getArea());
csGateway.setTid(wgRegisterParam.getTopologyDiagram());
csGateway.setStatus(1);
this.save(csGateway);
equipmentFeignClient.updateStatusBynDid(wgRegisterParam.getNDid(), AccessEnum.REGISTERED.getCode());
}
@Override
public List<CsGatewayVo> getWgList() {
return this.baseMapper.getWgList(RequestUtil.getUserIndex());
}
@Override
public CsGatewayVo findById(String id) {
CsGatewayVo vo = this.baseMapper.findById(id);
vo.setFilePath (fileStorageUtil.getFileUrl (vo.getFilePath()));
List<CsEquipmentDeliveryPO> list = csGatewayDeviceService.getList(id);
List<CsGatewayVo.Device> devList = new ArrayList<>();
if (CollectionUtil.isNotEmpty(list)){
list.forEach(item->{
CsGatewayVo.Device pojo = new CsGatewayVo.Device();
pojo.setDevName(item.getName());
pojo.setProName(vo.getProName());
devList.add(pojo);
});
}
vo.setList(devList);
return vo;
}
@Override
public void registerByWg(List<WgDeviceRegisterParam> list) {
list.forEach(item->{
});
}
}