Commit 245f2fa788825b5e38a91af1f8294ca304dd7006

Authored by 云中非
1 parent d27f9d3c

refactor: 节点信息保存DTO优化

... ... @@ -9,21 +9,17 @@ import org.springframework.validation.annotation.Validated;
9 9 import org.springframework.web.bind.annotation.*;
10 10 import org.thingsboard.server.common.data.exception.ThingsboardException;
11 11 import org.thingsboard.server.common.data.yunteng.common.AddGroup;
12   -import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
13 12 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
14 13 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
15   -import org.thingsboard.server.common.data.yunteng.dto.ConfigurationActDTO;
16   -import org.thingsboard.server.common.data.yunteng.dto.ConfigurationDatasourceDTO;
17   -import org.thingsboard.server.common.data.yunteng.dto.ConfigurationEventDTO;
18   -import org.thingsboard.server.common.data.yunteng.dto.ConfigurationNodeDTO;
  14 +import org.thingsboard.server.common.data.yunteng.dto.*;
  15 +import org.thingsboard.server.common.data.yunteng.utils.JacksonUtil;
  16 +import org.thingsboard.server.common.transport.util.JsonUtils;
19 17 import org.thingsboard.server.controller.BaseController;
20 18 import org.thingsboard.server.dao.yunteng.service.YtConfigurationActService;
21 19 import org.thingsboard.server.dao.yunteng.service.YtConfigurationDatasourceService;
22 20 import org.thingsboard.server.dao.yunteng.service.YtConfigurationEventService;
23 21
24   -import java.util.HashMap;
25 22 import java.util.List;
26   -import java.util.Map;
27 23 import java.util.Optional;
28 24
29 25 /**
... ... @@ -41,32 +37,37 @@ public class YtConfigurationNodeController extends BaseController {
41 37
42 38 @PostMapping
43 39 @ApiOperation("编辑节点信息")
44   - public ResponseEntity<ConfigurationNodeDTO> saveNode(
45   - @Validated({AddGroup.class}) @RequestBody ConfigurationNodeDTO nodeDTO)
  40 + public ResponseEntity<ConfigurationNodeStateDTO> saveNode(
  41 + @Validated({AddGroup.class}) @RequestBody ConfigurationNodeStateDTO nodeDTO)
46 42 throws ThingsboardException {
47 43 String tenantId = getCurrentUser().getCurrentTenantId();
48   - Optional.ofNullable(nodeDTO.getDataSources()).ifPresent(datas ->{
49   - datas.forEach(one -> {
50   - if(!one.getTenantId().equals(tenantId)){
51   - throw new YtDataValidationException(ErrorMessage.HAVE_NO_PERMISSION.getMessage());
52   - }
53   - datasourceService.saveConfigurationDatasource(one);
54   - });
  44 + Optional.ofNullable(nodeDTO.getDataSources()).ifPresent(one ->{
  45 + ConfigurationDatasourceDTO dto = JacksonUtil.convertValue(one,ConfigurationDatasourceDTO.class);
  46 + dto.setTenantId(tenantId);
  47 + dto.setConfigurationId(nodeDTO.getConfigurationId());
  48 + dto.setContentId(nodeDTO.getContentId());
  49 + dto.setNodeId(nodeDTO.getNodeId());
  50 + datasourceService.saveConfigurationDatasource(dto);
55 51 });
56 52 Optional.ofNullable(nodeDTO.getEvent()).ifPresent(datas ->{
57 53 datas.forEach(one -> {
58   - if(!one.getTenantId().equals(tenantId)){
59   - throw new YtDataValidationException(ErrorMessage.HAVE_NO_PERMISSION.getMessage());
60   - }
61   - eventService.saveConfigurationEvent(one);
  54 + ConfigurationEventDTO dto = JacksonUtil.convertValue(one,ConfigurationEventDTO.class);
  55 + dto.setTenantId(tenantId);
  56 + dto.setConfigurationId(nodeDTO.getConfigurationId());
  57 + dto.setContentId(nodeDTO.getContentId());
  58 + dto.setId(nodeDTO.getNodeId());
  59 + eventService.saveConfigurationEvent(dto);
62 60 });
63 61 });
64 62 Optional.ofNullable(nodeDTO.getAct()).ifPresent(datas ->{
65 63 datas.forEach(one -> {
66   - if(!one.getTenantId().equals(tenantId)){
67   - throw new YtDataValidationException(ErrorMessage.HAVE_NO_PERMISSION.getMessage());
68   - }
69   - actService.saveConfigurationAct(one);
  64 +
  65 + ConfigurationActDTO dto = JacksonUtil.convertValue(one,ConfigurationActDTO.class);
  66 + dto.setTenantId(tenantId);
  67 + dto.setConfigurationId(nodeDTO.getConfigurationId());
  68 + dto.setContentId(nodeDTO.getContentId());
  69 + dto.setId(nodeDTO.getNodeId());
  70 + actService.saveConfigurationAct(dto);
70 71 });
71 72 });
72 73 return ResponseEntity.ok(nodeDTO);
... ... @@ -129,7 +130,7 @@ public class YtConfigurationNodeController extends BaseController {
129 130
130 131 @GetMapping("/{levelType}/{levelId}")
131 132 @ApiOperation("组件信息")
132   - public ResponseEntity<ConfigurationNodeDTO> nodeInform(
  133 + public ResponseEntity<ConfigurationNodeDetailDTO> nodeInform(
133 134 @ApiParam(value = "组态资源类型,例如:CONFIGURE、CONTENT、NODE", required = true, defaultValue = "NODE") @PathVariable("levelType") String levelType,
134 135 @ApiParam(value = "组态资源ID", required = true) @PathVariable("levelId") String levelId) throws ThingsboardException {
135 136 String tenantId = getCurrentUser().getCurrentTenantId();
... ... @@ -137,7 +138,7 @@ public class YtConfigurationNodeController extends BaseController {
137 138 List<ConfigurationDatasourceDTO> sources = datasourceService.listConfigurationDatasource(tenantId, levelType, levelId);
138 139 List<ConfigurationEventDTO> events = eventService.listConfigurationEvent(tenantId, levelType, levelId);
139 140 List<ConfigurationActDTO> acts = actService.listConfigurationAct(tenantId, levelType, levelId);
140   - ConfigurationNodeDTO result = new ConfigurationNodeDTO();
  141 + ConfigurationNodeDetailDTO result = new ConfigurationNodeDetailDTO();
141 142 if (sources != null && sources.size() > 0) {
142 143 result.setDataSources(sources);
143 144 }
... ...
... ... @@ -18,18 +18,8 @@ import java.util.List;
18 18 */
19 19 @EqualsAndHashCode(callSuper = true)
20 20 @Data
21   -public class ConfigurationActDTO extends TenantDTO {
22   - @ApiModelProperty(value = "组态ID", required = true)
23   - @NotEmpty(
24   - message = "组态ID不能为空或空字符串",
25   - groups = {UpdateGroup.class, AddGroup.class})
26   - private String configurationId;
  21 +public class ConfigurationActDTO extends ConfigurationDTO {
27 22
28   - @ApiModelProperty(value = "页面ID", required = true)
29   - @NotEmpty(
30   - message = "页面ID不能为空或空字符串",
31   - groups = {UpdateGroup.class, AddGroup.class})
32   - private String contentId;
33 23
34 24 @ApiModelProperty(value = "动画类型", required = true)
35 25 private ActTypeEnum type;
... ...
  1 +package org.thingsboard.server.common.data.yunteng.dto;
  2 +
  3 +import com.fasterxml.jackson.databind.JsonNode;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import org.thingsboard.server.common.data.yunteng.common.AddGroup;
  8 +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup;
  9 +import org.thingsboard.server.common.data.yunteng.enums.ActTypeEnum;
  10 +
  11 +import javax.validation.constraints.NotEmpty;
  12 +
  13 +/**
  14 + * 组态节点动画效果
  15 + * @author Administrator
  16 + */
  17 +@Data
  18 +public class ConfigurationActStatusDTO {
  19 +
  20 +
  21 + @ApiModelProperty(value = "动画类型", required = true)
  22 + private ActTypeEnum type;
  23 + @ApiModelProperty(value = "状态", required = true)
  24 + private Boolean enabled;
  25 +}
... ...
  1 +package org.thingsboard.server.common.data.yunteng.dto;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import com.fasterxml.jackson.annotation.JsonInclude;
  5 +import com.fasterxml.jackson.databind.annotation.JsonSerialize;
  6 +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
  7 +import io.swagger.annotations.ApiModelProperty;
  8 +import lombok.Data;
  9 +import lombok.EqualsAndHashCode;
  10 +import org.thingsboard.server.common.data.yunteng.common.AddGroup;
  11 +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup;
  12 +import org.thingsboard.server.common.data.yunteng.enums.TenantStatusEnum;
  13 +
  14 +import javax.validation.constraints.NotEmpty;
  15 +import java.time.LocalDateTime;
  16 +
  17 +@EqualsAndHashCode(callSuper = false)
  18 +@Data
  19 +public class ConfigurationDTO extends TenantDTO {
  20 +
  21 +
  22 + @ApiModelProperty(value = "组态ID", required = true)
  23 + @NotEmpty(
  24 + message = "组态ID不能为空或空字符串",
  25 + groups = {UpdateGroup.class, AddGroup.class})
  26 + private String configurationId;
  27 +
  28 + @ApiModelProperty(value = "页面ID", required = true)
  29 + @NotEmpty(
  30 + message = "页面ID不能为空或空字符串",
  31 + groups = {UpdateGroup.class, AddGroup.class})
  32 + private String contentId;
  33 +
  34 +
  35 +}
... ...
... ... @@ -17,25 +17,13 @@ import java.util.List;
17 17 */
18 18 @EqualsAndHashCode(callSuper = true)
19 19 @Data
20   -public class ConfigurationDatasourceDTO extends TenantDTO {
21   - @ApiModelProperty(value = "组态ID", required = true)
22   - @NotEmpty(
23   - message = "组态ID不能为空或空字符串",
24   - groups = {UpdateGroup.class, AddGroup.class})
25   - private String configurationId;
26   -
27   - @ApiModelProperty(value = "页面ID", required = true)
28   - @NotEmpty(
29   - message = "页面ID不能为空或空字符串",
30   - groups = {UpdateGroup.class, AddGroup.class})
31   - private String contentId;
  20 +public class ConfigurationDatasourceDTO extends ConfigurationDTO {
32 21
33 22 @ApiModelProperty(value = "组态ID", required = true)
34 23 @NotEmpty(
35 24 message = "组件ID不能未空或空字符串",
36 25 groups = {UpdateGroup.class, AddGroup.class})
37 26 private String nodeId;
38   -
39 27 @ApiModelProperty(value = "orgId", required = true)
40 28 @NotEmpty(
41 29 message = "设备所属组织ID",
... ... @@ -49,8 +37,11 @@ public class ConfigurationDatasourceDTO extends TenantDTO {
49 37 private String deviceId;
50 38 private String slaveDeviceId;
51 39
52   - @ApiModelProperty(value = "组件关注的指标")
53   - private List<String> attr;
  40 + @ApiModelProperty(value = "组件关注的指标", required = true)
  41 + @NotEmpty(
  42 + message = "遥测指标不能为空",
  43 + groups = {UpdateGroup.class, AddGroup.class})
  44 + private String attr;
54 45
55 46 @ApiModelProperty(value = "组态描述")
56 47 private String remark;
... ...
  1 +package org.thingsboard.server.common.data.yunteng.dto;
  2 +
  3 +import io.swagger.annotations.ApiModelProperty;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +import org.thingsboard.server.common.data.yunteng.common.AddGroup;
  7 +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup;
  8 +
  9 +import javax.validation.constraints.NotEmpty;
  10 +
  11 +/**
  12 + * 组态结点数据源
  13 + * @author Administrator
  14 + */
  15 +@Data
  16 +public class ConfigurationDatasourceStatusDTO {
  17 +
  18 +
  19 + @ApiModelProperty(value = "orgId", required = true)
  20 + @NotEmpty(
  21 + message = "设备所属组织ID",
  22 + groups = {UpdateGroup.class, AddGroup.class})
  23 + private String orgId;
  24 +
  25 + @ApiModelProperty(value = "tbDeviceId", required = true)
  26 + @NotEmpty(
  27 + message = "tbDeviceId不能未空或空字符串",
  28 + groups = {UpdateGroup.class, AddGroup.class})
  29 + private String deviceId;
  30 + private String slaveDeviceId;
  31 +
  32 + @ApiModelProperty(value = "组件关注的指标")
  33 + @NotEmpty(
  34 + message = "遥测指标不能为空",
  35 + groups = {UpdateGroup.class, AddGroup.class})
  36 + private String attr;
  37 +
  38 + @ApiModelProperty(value = "组态描述")
  39 + private String remark;
  40 +}
... ...
... ... @@ -16,20 +16,13 @@ import javax.validation.constraints.NotEmpty;
16 16 */
17 17 @EqualsAndHashCode(callSuper = true)
18 18 @Data
19   -public class ConfigurationEventDTO extends TenantDTO {
20   - @ApiModelProperty(value = "组态ID", required = true)
21   - @NotEmpty(
22   - message = "组态ID不能为空或空字符串",
23   - groups = {UpdateGroup.class, AddGroup.class})
24   - private String configurationId;
  19 +public class ConfigurationEventDTO extends ConfigurationDTO {
25 20
26   - @ApiModelProperty(value = "页面ID", required = true)
27   - @NotEmpty(
28   - message = "页面ID不能为空或空字符串",
29   - groups = {UpdateGroup.class, AddGroup.class})
30   - private String contentId;
31 21
32 22 @ApiModelProperty(value = "事件类型", required = true)
  23 +// @NotEmpty(
  24 +// message = "事件类型不能为空",
  25 +// groups = {UpdateGroup.class, AddGroup.class})
33 26 private EventTypeEnum type;
34 27
35 28 @ApiModelProperty(value = "事件内容")
... ...
  1 +package org.thingsboard.server.common.data.yunteng.dto;
  2 +
  3 +import com.fasterxml.jackson.databind.JsonNode;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import org.thingsboard.server.common.data.yunteng.enums.EventTypeEnum;
  8 +
  9 +/**
  10 + * 组态节点事件
  11 + * @author Administrator
  12 + */
  13 +@Data
  14 +public class ConfigurationEventStatusDTO {
  15 +
  16 +
  17 + @ApiModelProperty(value = "事件类型", required = true)
  18 +// @NotEmpty(
  19 +// message = "事件类型不能为空",
  20 +// groups = {UpdateGroup.class, AddGroup.class})
  21 + private EventTypeEnum type;
  22 +
  23 + @ApiModelProperty(value = "状态", required = true)
  24 + private Boolean enabled;
  25 +}
... ...
common/data/src/main/java/org/thingsboard/server/common/data/yunteng/dto/ConfigurationNodeDetailDTO.java renamed from common/data/src/main/java/org/thingsboard/server/common/data/yunteng/dto/ConfigurationNodeDTO.java
1 1 package org.thingsboard.server.common.data.yunteng.dto;
2 2
3   -import com.fasterxml.jackson.databind.JsonNode;
4 3 import io.swagger.annotations.ApiModelProperty;
5 4 import lombok.Data;
6 5 import lombok.EqualsAndHashCode;
7   -import org.thingsboard.server.common.data.yunteng.common.AddGroup;
8   -import org.thingsboard.server.common.data.yunteng.common.UpdateGroup;
9   -import org.thingsboard.server.common.data.yunteng.enums.ActTypeEnum;
10 6
11   -import javax.validation.constraints.NotEmpty;
12 7 import java.util.List;
13 8
14 9 /**
... ... @@ -17,7 +12,7 @@ import java.util.List;
17 12 */
18 13 @EqualsAndHashCode(callSuper = true)
19 14 @Data
20   -public class ConfigurationNodeDTO extends TenantDTO {
  15 +public class ConfigurationNodeDetailDTO extends TenantDTO {
21 16 @ApiModelProperty(value = "数据源")
22 17 private List<ConfigurationDatasourceDTO> dataSources;
23 18
... ...
  1 +package org.thingsboard.server.common.data.yunteng.dto;
  2 +
  3 +import io.swagger.annotations.ApiModelProperty;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +import org.thingsboard.server.common.data.yunteng.common.AddGroup;
  7 +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup;
  8 +
  9 +import javax.validation.constraints.NotEmpty;
  10 +import java.util.List;
  11 +
  12 +/**
  13 + * 组态节点动画效果
  14 + * @author Administrator
  15 + */
  16 +@EqualsAndHashCode(callSuper = true)
  17 +@Data
  18 +public class ConfigurationNodeStateDTO extends ConfigurationDTO {
  19 + @ApiModelProperty(value = "组态ID", required = true)
  20 + @NotEmpty(
  21 + message = "组件ID不能未空或空字符串",
  22 + groups = {UpdateGroup.class, AddGroup.class})
  23 + private String nodeId;
  24 +
  25 + @ApiModelProperty(value = "数据源")
  26 + private ConfigurationDatasourceStatusDTO dataSources;
  27 +
  28 + @ApiModelProperty(value = "事件集合")
  29 + private List<ConfigurationEventStatusDTO> event;
  30 +
  31 + @ApiModelProperty(value = "动画集合")
  32 + private List<ConfigurationActStatusDTO> act;
  33 +}
... ...