diff --git a/das/src/main/java/com/das/modules/equipment/service/impl/SysEquipmentServiceImpl.java b/das/src/main/java/com/das/modules/equipment/service/impl/SysEquipmentServiceImpl.java index 311ad95f..b90a9cd6 100644 --- a/das/src/main/java/com/das/modules/equipment/service/impl/SysEquipmentServiceImpl.java +++ b/das/src/main/java/com/das/modules/equipment/service/impl/SysEquipmentServiceImpl.java @@ -156,12 +156,17 @@ public class SysEquipmentServiceImpl implements SysEquipmentService { SysEquipment field = new SysEquipment(); BeanUtil.copyProperties(dto,field); // 根据名称获取物模型id - Long iotModelId = sysIotModelMapper.queryIotModelIdByName(dto.getIotModelName()); - Long orgId = sysOrgMapper.queryOrgIdByName(dto.getOrgName()); - field.setIotModelId(iotModelId); + if(StringUtils.isNotBlank(dto.getOrgName())) { + Long iotModelId = sysIotModelMapper.queryIotModelIdByName(dto.getIotModelName()); + field.setIotModelId(iotModelId); + } + if(StringUtils.isNotBlank(dto.getOrgName())) { + Long orgId = sysOrgMapper.queryOrgIdByName(dto.getOrgName()); + field.setOrgId(orgId); + } field.setParentEquipmentId(Long.valueOf(parentEquipmentId)); field.setId(SequenceUtils.generateId()); - field.setOrgId(orgId); + field.setCreatedTime(new Date()); field.setUpdatedTime(new Date()); field.setRevision(1); diff --git a/das/src/main/java/com/das/modules/node/controller/SysNodeController.java b/das/src/main/java/com/das/modules/node/controller/SysNodeController.java new file mode 100644 index 00000000..26c81de3 --- /dev/null +++ b/das/src/main/java/com/das/modules/node/controller/SysNodeController.java @@ -0,0 +1,54 @@ +package com.das.modules.node.controller; + +import cn.dev33.satoken.stp.StpUtil; +import com.das.common.constant.SysAuthorityIds; +import com.das.common.exceptions.ServiceException; +import com.das.common.result.R; +import com.das.modules.equipment.domain.dto.SysIotModelDto; +import com.das.modules.equipment.domain.vo.SysIotModelVo; +import com.das.modules.node.domain.dto.SysNodeDto; +import com.das.modules.node.domain.vo.SysNodeVo; +import com.das.modules.node.service.SysNodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 物模型Controller + */ +@RestController +@RequestMapping("/api/node") +public class SysNodeController { + + @Autowired + private SysNodeService sysNodeService; + + + /** 获取节点列表 */ + @PostMapping("/list") + public R> querySysNodeList() { + + return R.success(sysNodeService.querySysNodeList()); + } + + /** 新增节点 */ + @PostMapping("/add") + public R createSysNode(@RequestBody SysNodeDto sysNodeDto) { + + //判断是否有权限 + boolean hasPermission = StpUtil.hasPermission(SysAuthorityIds.SYS_AUTHORITY_ID_DEVICE_MGR.toString()); + if(!hasPermission){ + return R.fail("没有设备管理权限"); + } + return R.success(sysNodeService.createSysNode(sysNodeDto)); + } + + + + +} + diff --git a/das/src/main/java/com/das/modules/node/domain/dto/SysNodeDto.java b/das/src/main/java/com/das/modules/node/domain/dto/SysNodeDto.java new file mode 100644 index 00000000..d31276d0 --- /dev/null +++ b/das/src/main/java/com/das/modules/node/domain/dto/SysNodeDto.java @@ -0,0 +1,21 @@ +package com.das.modules.node.domain.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class SysNodeDto implements Serializable { + + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @JsonSerialize(using = ToStringSerializer.class) + private Long orgId; + + private String nodeName; + + private String nodeIp; +} diff --git a/das/src/main/java/com/das/modules/node/domain/vo/SysCommunicationLinkVo.java b/das/src/main/java/com/das/modules/node/domain/vo/SysCommunicationLinkVo.java new file mode 100644 index 00000000..048a40e6 --- /dev/null +++ b/das/src/main/java/com/das/modules/node/domain/vo/SysCommunicationLinkVo.java @@ -0,0 +1,48 @@ +package com.das.modules.node.domain.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + + +/** + * 链路前端回显 + * + * @author guchengwei + */ +@Data +public class SysCommunicationLinkVo { + + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + + /** + * 链路名称 + */ + private String linkName; + + /** + * 通讯协议 + */ + private Integer protocol; + + /** + * 协议参数 + */ + private String params; + + /** + * 所属系统节点 + */ + private String nodeName; + + /** + * 所属系统节点id + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long nodeId; + + private Integer revision; +} diff --git a/das/src/main/java/com/das/modules/node/domain/vo/SysNodeVo.java b/das/src/main/java/com/das/modules/node/domain/vo/SysNodeVo.java new file mode 100644 index 00000000..e4348e3c --- /dev/null +++ b/das/src/main/java/com/das/modules/node/domain/vo/SysNodeVo.java @@ -0,0 +1,42 @@ +package com.das.modules.node.domain.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + + +/** + * 节点前端回显 + * + * @author guchengwei + */ +@Data +public class SysNodeVo { + + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 节点名称 + */ + private String nodeName; + + /** + * 节点ip + */ + private String nodeIp; + + /** + * 所属机构 + */ + private String orgName; + + /** + * 所属机构id + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long orgId; + + private Integer revision; +} diff --git a/das/src/main/java/com/das/modules/node/entity/SysCommunicationLink.java b/das/src/main/java/com/das/modules/node/entity/SysCommunicationLink.java new file mode 100644 index 00000000..10e5b70f --- /dev/null +++ b/das/src/main/java/com/das/modules/node/entity/SysCommunicationLink.java @@ -0,0 +1,65 @@ +package com.das.modules.node.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.das.common.constant.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.io.Serial; + + +/** + *

+ * 链路表 + *

+ * + * @author chenhaojie + */ +@EqualsAndHashCode(callSuper = true) +@TableName("sys_communicationlink") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SysCommunicationLink extends BaseEntity { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 系统节点ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 链路名称 + */ + @TableField("link_name") + private String linkName; + + /** + * 通讯协议 + */ + @TableField("protocol") + private Integer protocol; + + /** + * 协议参数 + */ + @TableField("params") + private String params; + + /** + * 所属系统节点ID + */ + @TableField("node_id") + @JsonSerialize(using = ToStringSerializer.class) + private Long nodeId; +} diff --git a/das/src/main/java/com/das/modules/node/entity/SysNode.java b/das/src/main/java/com/das/modules/node/entity/SysNode.java new file mode 100644 index 00000000..5acc432a --- /dev/null +++ b/das/src/main/java/com/das/modules/node/entity/SysNode.java @@ -0,0 +1,59 @@ +package com.das.modules.node.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.das.common.constant.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.io.Serial; + + +/** + *

+ * 节点表 + *

+ * + * @author chenhaojie + */ +@EqualsAndHashCode(callSuper = true) +@TableName("sys_node") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SysNode extends BaseEntity { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 系统节点ID + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 节点名称 + */ + @TableField("node_name") + private String nodeName; + + /** + * 节点ip + */ + @TableField("node_ip") + private String nodeIp; + + /** + * 所属机构id + */ + @TableField("org_id") + @JsonSerialize(using = ToStringSerializer.class) + private Long orgId; +} diff --git a/das/src/main/java/com/das/modules/node/mapper/SysCommunicationLinkMapper.java b/das/src/main/java/com/das/modules/node/mapper/SysCommunicationLinkMapper.java new file mode 100644 index 00000000..f3d3ab96 --- /dev/null +++ b/das/src/main/java/com/das/modules/node/mapper/SysCommunicationLinkMapper.java @@ -0,0 +1,12 @@ +package com.das.modules.node.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.das.modules.node.entity.SysCommunicationLink; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SysCommunicationLinkMapper extends BaseMapper { + + +} diff --git a/das/src/main/java/com/das/modules/node/mapper/SysNodeMapper.java b/das/src/main/java/com/das/modules/node/mapper/SysNodeMapper.java new file mode 100644 index 00000000..1cb344ee --- /dev/null +++ b/das/src/main/java/com/das/modules/node/mapper/SysNodeMapper.java @@ -0,0 +1,16 @@ +package com.das.modules.node.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.das.modules.node.domain.vo.SysNodeVo; +import com.das.modules.node.entity.SysNode; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface SysNodeMapper extends BaseMapper { + + List querySysNodeList(); + +} diff --git a/das/src/main/java/com/das/modules/node/service/SysNodeService.java b/das/src/main/java/com/das/modules/node/service/SysNodeService.java new file mode 100644 index 00000000..9e8806fb --- /dev/null +++ b/das/src/main/java/com/das/modules/node/service/SysNodeService.java @@ -0,0 +1,13 @@ +package com.das.modules.node.service; + +import com.das.modules.node.domain.dto.SysNodeDto; +import com.das.modules.node.domain.vo.SysNodeVo; + +import java.util.List; + +public interface SysNodeService { + List querySysNodeList(); + + SysNodeVo createSysNode(SysNodeDto sysNodeDto); + +} diff --git a/das/src/main/java/com/das/modules/node/service/impl/SysNodeServiceImpl.java b/das/src/main/java/com/das/modules/node/service/impl/SysNodeServiceImpl.java new file mode 100644 index 00000000..8887bf0e --- /dev/null +++ b/das/src/main/java/com/das/modules/node/service/impl/SysNodeServiceImpl.java @@ -0,0 +1,64 @@ +package com.das.modules.node.service.impl; + +import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.das.common.config.SessionUtil; +import com.das.common.exceptions.ServiceException; +import com.das.common.utils.BeanCopyUtils; +import com.das.common.utils.SequenceUtils; +import com.das.modules.auth.domain.vo.SysUserVo; +import com.das.modules.auth.entity.SysOrg; +import com.das.modules.auth.mapper.SysOrgMapper; +import com.das.modules.equipment.domain.vo.SysIotModelVo; +import com.das.modules.equipment.entity.SysIotModel; +import com.das.modules.node.domain.dto.SysNodeDto; +import com.das.modules.node.domain.vo.SysNodeVo; +import com.das.modules.node.entity.SysNode; +import com.das.modules.node.mapper.SysNodeMapper; +import com.das.modules.node.service.SysNodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +@Transactional(rollbackFor = Exception.class) +@Service +public class SysNodeServiceImpl implements SysNodeService { + + @Autowired + private SysNodeMapper sysNodeMapper; + + @Autowired + private SysOrgMapper sysOrgMapper; + + @Override + public List querySysNodeList() { + List sysNodeVoList = sysNodeMapper.querySysNodeList(); + return sysNodeVoList; + } + + @Override + public SysNodeVo createSysNode(SysNodeDto sysNodeDto) { + SysNode sysNode = new SysNode(); + BeanCopyUtils.copy(sysNodeDto,sysNode); + + SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY); + sysNode.setId(SequenceUtils.generateId()); + sysNode.setCreatedTime(new Date()); + sysNode.setUpdatedTime(new Date()); + sysNode.setCreatedBy(sysUserVo.getAccount()); + sysNode.setUpdatedBy(sysUserVo.getAccount()); +// sysNode.setCreatedBy("测试"); +// sysNode.setUpdatedBy("测试"); + sysNode.setRevision(1); + sysNodeMapper.insert(sysNode); + SysNodeVo sysNodeVo = new SysNodeVo(); + // 根据org_id查询组织名称 + SysOrg sysorg = sysOrgMapper.selectById(sysNode.getOrgId()); + BeanCopyUtils.copy(sysNode,sysNodeVo); + sysNodeVo.setOrgName(sysorg.getName()); + return sysNodeVo; + } +} diff --git a/das/src/main/resources/mapper/SysNodeMapper.xml b/das/src/main/resources/mapper/SysNodeMapper.xml new file mode 100644 index 00000000..42fbd1a7 --- /dev/null +++ b/das/src/main/resources/mapper/SysNodeMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/api/node.md b/docs/api/node.md index e628ff7f..03e779b9 100644 --- a/docs/api/node.md +++ b/docs/api/node.md @@ -14,3 +14,86 @@ | | 1.2.3修改链路信息 | /api/node/link/update | SYS_AUTHORITY_ID_ADMIN | | | 1.2.4删除链路信息 | /api/node/link/delete | SYS_AUTHORITY_ID_ADMIN | +### 1.1 节点相关接口 + +#### 1.1.1 获取所有节点信息列表 + +POST 请求接口 + +> /api/node/list + +请求参数 + +无 + +返回报文 + +```json +{ + "code": 200, + "success": true, + "data": [ + { + "id": "1", + "nodeName": "测试节点", + "nodeIp": "127.0.0.1", + "orgName": "某风电场", + "orgId": "1", + "revision": 1 + } + ], + "msg": "操作成功" +} +``` +返参描述 + +| 参数名 | 参数类型 | 可选 | 描述 | +| ------------- | -------- | ---- |------| +| id | String | 否 | 节点ID | +| nodeName | String | 否 | 节点名称 | +| nodeIp | String | 否 | 节点IP | +| orgName | String | 否 | 机构名称 | +| orgId | String | 否 | 机构ID | +| revision | String | 否 | 乐观锁 | + + +#### 1.1.2 新增节点信息 + +POST 请求接口 + +> /api/node/add + +请求参数 +```json +{ + "nodeName": "测试节点1", + "nodeIp": "127.0.0.1", + "orgId": "1" + } +``` + +入参描述 + +| 参数名 | 参数类型 | 可选 | 描述 | +| ------------- | -------- | ---- |------| +| nodeName | String | 否 | 节点名称 | +| nodeIp | String | 否 | 节点IP | +| orgId | String | 否 | 机构ID | + +返回报文 + +```json +{ + "code": 200, + "success": true, + "data": { + "id": "73535240297775104", + "nodeName": "测试节点1", + "nodeIp": "127.0.0.1", + "orgName": "某风电场", + "orgId": "1", + "revision": 1 + }, + "msg": "操作成功" +} +``` \ No newline at end of file