Showing
10 changed files
with
197 additions
and
69 deletions
... | ... | @@ -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 | +} | ... | ... |
common/data/src/main/java/org/thingsboard/server/common/data/yunteng/dto/ConfigurationDTO.java
0 → 100644
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 | +} | ... | ... |