Showing
14 changed files
with
627 additions
and
7 deletions
@@ -31,7 +31,7 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant. | @@ -31,7 +31,7 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant. | ||
31 | @RequestMapping("/api/yt/data_view") | 31 | @RequestMapping("/api/yt/data_view") |
32 | @RequiredArgsConstructor | 32 | @RequiredArgsConstructor |
33 | @Api(tags = "大屏设计器") | 33 | @Api(tags = "大屏设计器") |
34 | -@PreAuthorize("@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{})") | 34 | +@PreAuthorize("@check.checkPermissions({},{})") |
35 | public class TkDataViewController extends BaseController { | 35 | public class TkDataViewController extends BaseController { |
36 | 36 | ||
37 | private final TkDataViewService tkDataViewService; | 37 | private final TkDataViewService tkDataViewService; |
@@ -114,4 +114,20 @@ public class TkDataViewController extends BaseController { | @@ -114,4 +114,20 @@ public class TkDataViewController extends BaseController { | ||
114 | tkDataViewService.getDataViewInfos( | 114 | tkDataViewService.getDataViewInfos( |
115 | id, getCurrentUser().getCurrentTenantId())); | 115 | id, getCurrentUser().getCurrentTenantId())); |
116 | } | 116 | } |
117 | + | ||
118 | + @GetMapping("/publish/{id}") | ||
119 | + @ApiOperation("发布") | ||
120 | + @PreAuthorize("@check.checkPermissions({},{})") | ||
121 | + public ResponseEntity<Boolean> publishDataView(@PathVariable("id") String id) throws ThingsboardException { | ||
122 | + return ResponseEntity.ok( | ||
123 | + tkDataViewService.publishDataView(id, getCurrentUser().getCurrentTenantId())); | ||
124 | + } | ||
125 | + | ||
126 | + @GetMapping("/cancel_publish/{id}") | ||
127 | + @ApiOperation("取消发布") | ||
128 | + @PreAuthorize("@check.checkPermissions({},{})") | ||
129 | + public ResponseEntity<Boolean> cancelPublishDataView(@PathVariable("id") String id) throws ThingsboardException { | ||
130 | + return ResponseEntity.ok( | ||
131 | + tkDataViewService.cancelPublishDataView(id, getCurrentUser().getCurrentTenantId())); | ||
132 | + } | ||
117 | } | 133 | } |
1 | +package org.thingsboard.server.controller.yunteng; | ||
2 | + | ||
3 | +import com.google.common.util.concurrent.ListenableFuture; | ||
4 | +import io.swagger.annotations.Api; | ||
5 | +import io.swagger.annotations.ApiOperation; | ||
6 | +import io.swagger.annotations.ApiParam; | ||
7 | +import lombok.RequiredArgsConstructor; | ||
8 | +import org.apache.commons.lang3.StringUtils; | ||
9 | +import org.springframework.http.MediaType; | ||
10 | +import org.springframework.http.ResponseEntity; | ||
11 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
12 | +import org.springframework.validation.annotation.Validated; | ||
13 | +import org.springframework.web.bind.annotation.*; | ||
14 | +import org.thingsboard.server.common.data.asset.Asset; | ||
15 | +import org.thingsboard.server.common.data.exception.ThingsboardException; | ||
16 | +import org.thingsboard.server.common.data.id.AssetId; | ||
17 | +import org.thingsboard.server.common.data.id.CustomerId; | ||
18 | +import org.thingsboard.server.common.data.id.TenantId; | ||
19 | +import org.thingsboard.server.common.data.yunteng.common.AddGroup; | ||
20 | +import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; | ||
21 | +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; | ||
22 | +import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; | ||
23 | +import org.thingsboard.server.common.data.yunteng.dto.TkDataViewInterfaceDTO; | ||
24 | +import org.thingsboard.server.common.data.yunteng.dto.request.TkDataViewContentInfoDTO; | ||
25 | +import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; | ||
26 | +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; | ||
27 | +import org.thingsboard.server.controller.BaseController; | ||
28 | +import org.thingsboard.server.dao.yunteng.service.TkDataViewInterfaceService; | ||
29 | +import org.thingsboard.server.service.security.model.SecurityUser; | ||
30 | + | ||
31 | +import java.util.ArrayList; | ||
32 | +import java.util.HashMap; | ||
33 | +import java.util.List; | ||
34 | +import java.util.Set; | ||
35 | + | ||
36 | +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.*; | ||
37 | + | ||
38 | +/** | ||
39 | + * @author tianfuLei | ||
40 | + */ | ||
41 | +@RestController | ||
42 | +@RequestMapping("/api/yt/data_view_interface") | ||
43 | +@RequiredArgsConstructor | ||
44 | +@Api(tags = "大屏公共接口") | ||
45 | +public class TkDataViewInterfaceController extends BaseController { | ||
46 | + | ||
47 | + private final TkDataViewInterfaceService tkDataViewInterfaceService; | ||
48 | + | ||
49 | + @GetMapping(params = {PAGE_SIZE, PAGE}) | ||
50 | + @ApiOperation("分页") | ||
51 | + public TkPageData<TkDataViewInterfaceDTO> page( | ||
52 | + @RequestParam(PAGE_SIZE) int pageSize, | ||
53 | + @RequestParam(PAGE) int page, | ||
54 | + @RequestParam(value = "name", required = false) String name, | ||
55 | + @RequestParam(value = "state", required = false) String state, | ||
56 | + @RequestParam(value = ORDER_FILED, required = false) String orderBy, | ||
57 | + @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) | ||
58 | + throws ThingsboardException { | ||
59 | + | ||
60 | + HashMap<String, Object> queryMap = new HashMap<>(); | ||
61 | + queryMap.put(PAGE_SIZE, pageSize); | ||
62 | + queryMap.put(PAGE, page); | ||
63 | + queryMap.put(ORDER_FILED, orderBy); | ||
64 | + queryMap.put("tenantId", getCurrentUser().getCurrentTenantId()); | ||
65 | + if (StringUtils.isNotBlank(name)) { | ||
66 | + queryMap.put("name", name); | ||
67 | + } | ||
68 | + if (StringUtils.isNotBlank(state)) { | ||
69 | + queryMap.put("state", state); | ||
70 | + } | ||
71 | + if (null != orderType) { | ||
72 | + queryMap.put(ORDER_TYPE, orderType.name()); | ||
73 | + } | ||
74 | + return tkDataViewInterfaceService.page(queryMap); | ||
75 | + } | ||
76 | + | ||
77 | + @PostMapping | ||
78 | + @ApiOperation("新增") | ||
79 | + @PreAuthorize("@check.checkPermissions({},{})") | ||
80 | + public ResponseEntity<TkDataViewInterfaceDTO> save( | ||
81 | + @Validated({AddGroup.class}) @RequestBody TkDataViewInterfaceDTO tkDataViewInterfaceDTO) | ||
82 | + throws ThingsboardException { | ||
83 | + tkDataViewInterfaceDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | ||
84 | + | ||
85 | + return ResponseEntity.ok( | ||
86 | + tkDataViewInterfaceService.saveDataViewInterface(tkDataViewInterfaceDTO)); | ||
87 | + } | ||
88 | + | ||
89 | + @PutMapping | ||
90 | + @ApiOperation("修改") | ||
91 | + @PreAuthorize("@check.checkPermissions({},{})") | ||
92 | + public ResponseEntity<TkDataViewInterfaceDTO> update( | ||
93 | + @Validated({UpdateGroup.class}) @RequestBody TkDataViewInterfaceDTO TkDataViewInterfaceDTO) | ||
94 | + throws ThingsboardException { | ||
95 | + TkDataViewInterfaceDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | ||
96 | + return ResponseEntity.ok( | ||
97 | + tkDataViewInterfaceService.updateDataViewInterface(TkDataViewInterfaceDTO)); | ||
98 | + } | ||
99 | + | ||
100 | + @DeleteMapping | ||
101 | + @ApiOperation("删除") | ||
102 | + @PreAuthorize("@check.checkPermissions({},{})") | ||
103 | + public ResponseEntity<Boolean> delete( | ||
104 | + @Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) | ||
105 | + throws ThingsboardException { | ||
106 | + deleteDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | ||
107 | + return ResponseEntity.ok(tkDataViewInterfaceService.deleteDataViewInterface(deleteDTO)); | ||
108 | + } | ||
109 | + | ||
110 | + | ||
111 | + @GetMapping("/publish/{id}") | ||
112 | + @ApiOperation("发布") | ||
113 | + @PreAuthorize("@check.checkPermissions({},{})") | ||
114 | + public ResponseEntity<Boolean> publishInterface(@PathVariable("id") String id) throws ThingsboardException { | ||
115 | + return ResponseEntity.ok( | ||
116 | + tkDataViewInterfaceService.publishInterface(id, getCurrentUser().getCurrentTenantId())); | ||
117 | + } | ||
118 | + | ||
119 | + @GetMapping("/cancel_publish/{id}") | ||
120 | + @ApiOperation("取消发布") | ||
121 | + @PreAuthorize("@check.checkPermissions({},{})") | ||
122 | + public ResponseEntity<Boolean> cancelPublishInterface(@PathVariable("id") String id) throws ThingsboardException { | ||
123 | + return ResponseEntity.ok( | ||
124 | + tkDataViewInterfaceService.cancelPublishInterface(id, getCurrentUser().getCurrentTenantId())); | ||
125 | + } | ||
126 | + | ||
127 | + | ||
128 | + @ApiOperation("根据接口ID,获得接口详情") | ||
129 | + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") | ||
130 | + @RequestMapping(value = "/get_interface_details", params = {"ids"}, method = RequestMethod.GET) | ||
131 | + @ResponseBody | ||
132 | + public List<TkDataViewInterfaceDTO> getInterfaceDetails( | ||
133 | + @ApiParam(value = "A list of interface ids, separated by comma ','") | ||
134 | + @RequestParam("ids") String[] ids) throws ThingsboardException { | ||
135 | + | ||
136 | + List<String> idsList = new ArrayList<>(); | ||
137 | + for (String strId : ids) { | ||
138 | + idsList.add(strId); | ||
139 | + } | ||
140 | + return tkDataViewInterfaceService.getInterfaceDetails(idsList); | ||
141 | + } | ||
142 | + | ||
143 | + @GetMapping("/filter_by_interface_type/{type}") | ||
144 | + @ApiOperation("根据接口类型过滤数据") | ||
145 | + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") | ||
146 | + public List<TkDataViewInterfaceDTO> filterByInterfaceType(@PathVariable("type") String type) throws ThingsboardException { | ||
147 | + return tkDataViewInterfaceService.filterByInterfaceType(type,getCurrentUser().getCurrentTenantId()); | ||
148 | + } | ||
149 | + | ||
150 | + | ||
151 | + @GetMapping("/find_all_interface") | ||
152 | + @ApiOperation("查询所有接口") | ||
153 | + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") | ||
154 | + public List<TkDataViewInterfaceDTO> findAll() throws ThingsboardException { | ||
155 | + return tkDataViewInterfaceService.findAll(getCurrentUser().getCurrentTenantId()); | ||
156 | + } | ||
157 | + | ||
158 | +} |
@@ -82,6 +82,8 @@ public final class ModelConstants { | @@ -82,6 +82,8 @@ public final class ModelConstants { | ||
82 | public static final String TK_DATA_VIEW_NAME = "tk_data_view"; | 82 | public static final String TK_DATA_VIEW_NAME = "tk_data_view"; |
83 | /** 大屏设计页面内容 */ | 83 | /** 大屏设计页面内容 */ |
84 | public static final String TK_DATA_VIEW_CONTENT_NAME = "tk_data_view_content"; | 84 | public static final String TK_DATA_VIEW_CONTENT_NAME = "tk_data_view_content"; |
85 | + /** 大屏公共接口 */ | ||
86 | + public static final String TK_DATA_VIEW_INTERFACE_NAME = "tk_data_view_interface"; | ||
85 | /** 组态中心 */ | 87 | /** 组态中心 */ |
86 | public static final String TK_CONFIGURATION_CENTER_NAME = "tk_configuration_center"; | 88 | public static final String TK_CONFIGURATION_CENTER_NAME = "tk_configuration_center"; |
87 | /** 组态内容 */ | 89 | /** 组态内容 */ |
@@ -5,6 +5,7 @@ import lombok.Data; | @@ -5,6 +5,7 @@ import lombok.Data; | ||
5 | import lombok.EqualsAndHashCode; | 5 | import lombok.EqualsAndHashCode; |
6 | import org.thingsboard.server.common.data.yunteng.common.AddGroup; | 6 | import org.thingsboard.server.common.data.yunteng.common.AddGroup; |
7 | import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; | 7 | import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; |
8 | +import org.thingsboard.server.common.data.yunteng.enums.ViewType; | ||
8 | 9 | ||
9 | import javax.validation.constraints.NotEmpty; | 10 | import javax.validation.constraints.NotEmpty; |
10 | 11 | ||
@@ -33,4 +34,10 @@ public class TkDataViewDTO extends TenantDTO { | @@ -33,4 +34,10 @@ public class TkDataViewDTO extends TenantDTO { | ||
33 | private String thumbnail; | 34 | private String thumbnail; |
34 | 35 | ||
35 | private OrganizationDTO organizationDTO; | 36 | private OrganizationDTO organizationDTO; |
37 | + | ||
38 | + @ApiModelProperty(value = "视图类型") | ||
39 | + private ViewType viewType; | ||
40 | + | ||
41 | + @ApiModelProperty(value = "访问凭证") | ||
42 | + private String accessCredentials; | ||
36 | } | 43 | } |
common/data/src/main/java/org/thingsboard/server/common/data/yunteng/dto/TkDataViewInterfaceDTO.java
0 → 100644
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 | + * @author tianfuLei | ||
12 | + */ | ||
13 | +@EqualsAndHashCode(callSuper = true) | ||
14 | +@Data | ||
15 | +public class TkDataViewInterfaceDTO extends TenantDTO { | ||
16 | + | ||
17 | + @ApiModelProperty(value = "接口名称", required = true) | ||
18 | + @NotEmpty( | ||
19 | + message = "名称不能为空或空字符串", | ||
20 | + groups = {UpdateGroup.class, AddGroup.class}) | ||
21 | + private String interfaceName; | ||
22 | + | ||
23 | + @ApiModelProperty(value = "请求方式:0普通请求 1SQL请求 2websocket请求") | ||
24 | + private Integer requestContentType; | ||
25 | + | ||
26 | + @ApiModelProperty(value = "源地址") | ||
27 | + private String requestOriginUrl; | ||
28 | + | ||
29 | + @ApiModelProperty(value = "请求类型:GET、PUT、POST", required = true) | ||
30 | + private String requestHttpType; | ||
31 | + | ||
32 | + @ApiModelProperty(value = "接口地址") | ||
33 | + private String requestUrl; | ||
34 | + | ||
35 | + @ApiModelProperty(value = "参数配置") | ||
36 | + private String requestParams; | ||
37 | + | ||
38 | + @ApiModelProperty(value = "状态:0待发布 1已发布") | ||
39 | + private Integer state; | ||
40 | + | ||
41 | + @ApiModelProperty(value = "接口描述") | ||
42 | + private String remark; | ||
43 | + | ||
44 | +} |
@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableField; | @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableField; | ||
5 | import com.baomidou.mybatisplus.annotation.TableName; | 5 | import com.baomidou.mybatisplus.annotation.TableName; |
6 | import lombok.Data; | 6 | import lombok.Data; |
7 | import lombok.EqualsAndHashCode; | 7 | import lombok.EqualsAndHashCode; |
8 | +import org.apache.ibatis.type.EnumTypeHandler; | ||
8 | import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; | 9 | import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; |
10 | +import org.thingsboard.server.common.data.yunteng.enums.ViewType; | ||
9 | 11 | ||
10 | @EqualsAndHashCode(callSuper = true) | 12 | @EqualsAndHashCode(callSuper = true) |
11 | @TableName(ModelConstants.Table.TK_DATA_VIEW_NAME) | 13 | @TableName(ModelConstants.Table.TK_DATA_VIEW_NAME) |
@@ -16,6 +18,12 @@ public class TkDataViewEntity extends TenantBaseEntity { | @@ -16,6 +18,12 @@ public class TkDataViewEntity extends TenantBaseEntity { | ||
16 | private String remark; | 18 | private String remark; |
17 | private String organizationId; | 19 | private String organizationId; |
18 | private Integer state; | 20 | private Integer state; |
21 | + | ||
19 | @TableField(updateStrategy = FieldStrategy.IGNORED) | 22 | @TableField(updateStrategy = FieldStrategy.IGNORED) |
20 | private String thumbnail; | 23 | private String thumbnail; |
24 | + | ||
25 | + @TableField(typeHandler = EnumTypeHandler.class) | ||
26 | + private ViewType viewType; | ||
27 | + | ||
28 | + private String accessCredentials; | ||
21 | } | 29 | } |
dao/src/main/java/org/thingsboard/server/dao/yunteng/entities/TkDataViewInterfaceEntity.java
0 → 100644
1 | +package org.thingsboard.server.dao.yunteng.entities; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.FieldStrategy; | ||
4 | +import com.baomidou.mybatisplus.annotation.TableField; | ||
5 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
6 | +import io.swagger.annotations.ApiModelProperty; | ||
7 | +import lombok.Data; | ||
8 | +import lombok.EqualsAndHashCode; | ||
9 | +import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; | ||
10 | + | ||
11 | +/** | ||
12 | + * @author tianfuLei | ||
13 | + */ | ||
14 | +@EqualsAndHashCode(callSuper = true) | ||
15 | +@TableName(ModelConstants.Table.TK_DATA_VIEW_INTERFACE_NAME) | ||
16 | +@Data | ||
17 | +public class TkDataViewInterfaceEntity extends TenantBaseEntity { | ||
18 | + private static final long serialVersionUID = -7825135358032541445L; | ||
19 | + | ||
20 | + private String interfaceName; | ||
21 | + private Integer requestContentType; | ||
22 | + private String requestOriginUrl; | ||
23 | + private String requestHttpType; | ||
24 | + private String requestUrl; | ||
25 | + private String requestParams; | ||
26 | + private Integer state; | ||
27 | + private String remark; | ||
28 | + | ||
29 | +} |
dao/src/main/java/org/thingsboard/server/dao/yunteng/impl/TkDataViewInterfaceServiceImpl.java
0 → 100644
1 | +package org.thingsboard.server.dao.yunteng.impl; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
4 | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||
5 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
6 | +import lombok.RequiredArgsConstructor; | ||
7 | +import lombok.extern.slf4j.Slf4j; | ||
8 | +import org.apache.ibatis.annotations.Param; | ||
9 | +import org.springframework.stereotype.Service; | ||
10 | +import org.springframework.transaction.annotation.Transactional; | ||
11 | +import org.thingsboard.server.common.data.id.EntityId; | ||
12 | +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; | ||
13 | +import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException; | ||
14 | +import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; | ||
15 | +import org.thingsboard.server.common.data.yunteng.dto.*; | ||
16 | +import org.thingsboard.server.common.data.yunteng.dto.request.TkDataViewContentInfoDTO; | ||
17 | +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; | ||
18 | +import org.thingsboard.server.dao.yunteng.entities.*; | ||
19 | +import org.thingsboard.server.dao.yunteng.entities.TkDataViewInterfaceEntity; | ||
20 | +import org.thingsboard.server.dao.yunteng.mapper.OrganizationMapper; | ||
21 | +import org.thingsboard.server.dao.yunteng.mapper.TkDataViewInterfaceMapper; | ||
22 | +import org.thingsboard.server.dao.yunteng.mapper.TkDataViewMapper; | ||
23 | +import org.thingsboard.server.dao.yunteng.service.*; | ||
24 | + | ||
25 | +import java.util.*; | ||
26 | +import java.util.stream.Collectors; | ||
27 | + | ||
28 | +/** | ||
29 | + * @author tianfuLei | ||
30 | + */ | ||
31 | +@Slf4j | ||
32 | +@Service | ||
33 | +@RequiredArgsConstructor | ||
34 | +public class TkDataViewInterfaceServiceImpl | ||
35 | + extends AbstractBaseService<TkDataViewInterfaceMapper, TkDataViewInterfaceEntity> | ||
36 | + implements TkDataViewInterfaceService { | ||
37 | + | ||
38 | + @Override | ||
39 | + public TkPageData<TkDataViewInterfaceDTO> page( | ||
40 | + Map<String, Object> queryMap) { | ||
41 | + IPage<TkDataViewInterfaceEntity> iPage = null; | ||
42 | + if(queryMap.get("state") != null){ | ||
43 | + iPage = baseMapper.selectPage( | ||
44 | + getPage(queryMap, "create_time", false), | ||
45 | + new QueryWrapper<TkDataViewInterfaceEntity>() | ||
46 | + .lambda() | ||
47 | + .like( | ||
48 | + queryMap.get("name") != null, | ||
49 | + TkDataViewInterfaceEntity::getInterfaceName, | ||
50 | + String.valueOf(queryMap.get("name"))) | ||
51 | + .in( | ||
52 | + queryMap.get("tenantId") != null, | ||
53 | + TkDataViewInterfaceEntity::getTenantId, EntityId.NULL_UUID.toString(), | ||
54 | + String.valueOf(queryMap.get("tenantId"))) | ||
55 | + .eq( | ||
56 | + queryMap.get("state") != null, | ||
57 | + TkDataViewInterfaceEntity::getState, | ||
58 | + Integer.parseInt((String)queryMap.get("state")))); | ||
59 | + }else{ | ||
60 | + iPage = baseMapper.selectPage( | ||
61 | + getPage(queryMap, "create_time", false), | ||
62 | + new QueryWrapper<TkDataViewInterfaceEntity>() | ||
63 | + .lambda() | ||
64 | + .like( | ||
65 | + queryMap.get("name") != null, | ||
66 | + TkDataViewInterfaceEntity::getInterfaceName, | ||
67 | + String.valueOf(queryMap.get("name"))) | ||
68 | + .in( | ||
69 | + queryMap.get("tenantId") != null, | ||
70 | + TkDataViewInterfaceEntity::getTenantId, EntityId.NULL_UUID.toString(), | ||
71 | + String.valueOf(queryMap.get("tenantId"))) | ||
72 | + .eq( | ||
73 | + queryMap.get("state") != null, | ||
74 | + TkDataViewInterfaceEntity::getState, | ||
75 | + String.valueOf(queryMap.get("state")))); | ||
76 | + } | ||
77 | + | ||
78 | + return getPageData(iPage, TkDataViewInterfaceDTO.class); | ||
79 | + } | ||
80 | + | ||
81 | + @Override | ||
82 | + @Transactional | ||
83 | + public TkDataViewInterfaceDTO saveDataViewInterface(TkDataViewInterfaceDTO tkDataViewInterfaceDTO) { | ||
84 | + TkDataViewInterfaceEntity interfaceEntity = | ||
85 | + tkDataViewInterfaceDTO.getEntity(TkDataViewInterfaceEntity.class); | ||
86 | + interfaceEntity.setState(0); | ||
87 | + | ||
88 | + baseMapper.insert(interfaceEntity); | ||
89 | + return tkDataViewInterfaceDTO; | ||
90 | + } | ||
91 | + | ||
92 | + @Override | ||
93 | + @Transactional | ||
94 | + public TkDataViewInterfaceDTO updateDataViewInterface(TkDataViewInterfaceDTO tkDataViewInterfaceDTO) { | ||
95 | + TkDataViewInterfaceEntity interfaceEntity = baseMapper.selectById(tkDataViewInterfaceDTO.getId()); | ||
96 | + if (!interfaceEntity.getTenantId().equals(tkDataViewInterfaceDTO.getTenantId())) { | ||
97 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | ||
98 | + } | ||
99 | + baseMapper.updateById(tkDataViewInterfaceDTO.getEntity(TkDataViewInterfaceEntity.class)); | ||
100 | + return tkDataViewInterfaceDTO; | ||
101 | + } | ||
102 | + | ||
103 | + @Override | ||
104 | + @Transactional | ||
105 | + public boolean deleteDataViewInterface(DeleteDTO deleteDTO) { | ||
106 | + List<TkDataViewInterfaceEntity> interfaceEntityList = | ||
107 | + baseMapper.selectList( | ||
108 | + new LambdaQueryWrapper<TkDataViewInterfaceEntity>() | ||
109 | + .in(TkDataViewInterfaceEntity::getId, deleteDTO.getIds())); | ||
110 | + for (TkDataViewInterfaceEntity center : interfaceEntityList) { | ||
111 | + if (!center.getTenantId().equals(deleteDTO.getTenantId())) { | ||
112 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | ||
113 | + } | ||
114 | + } | ||
115 | + return baseMapper.deleteBatchIds(deleteDTO.getIds()) > FastIotConstants.MagicNumber.ZERO; | ||
116 | + } | ||
117 | + | ||
118 | + | ||
119 | + @Override | ||
120 | + public boolean publishInterface(String id, String tenantId) { | ||
121 | + TkDataViewInterfaceEntity dataViewInterfaceEntity = baseMapper.selectById(id); | ||
122 | + if (!dataViewInterfaceEntity.getTenantId().equals(tenantId)) { | ||
123 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | ||
124 | + } | ||
125 | + //Modify interface state is publish | ||
126 | + dataViewInterfaceEntity.setState(1); | ||
127 | + int resultInt = baseMapper.updateById(dataViewInterfaceEntity); | ||
128 | + return resultInt > 0 ? true : false; | ||
129 | + } | ||
130 | + | ||
131 | + @Override | ||
132 | + public boolean cancelPublishInterface(String id, String tenantId) { | ||
133 | + TkDataViewInterfaceEntity dataViewInterfaceEntity = baseMapper.selectById(id); | ||
134 | + if (!dataViewInterfaceEntity.getTenantId().equals(tenantId)) { | ||
135 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | ||
136 | + } | ||
137 | + //Modify interface state is cancelPublish | ||
138 | + dataViewInterfaceEntity.setState(0); | ||
139 | + int resultInt = baseMapper.updateById(dataViewInterfaceEntity); | ||
140 | + return resultInt > 0 ? true : false; | ||
141 | + } | ||
142 | + | ||
143 | + @Override | ||
144 | + public List<TkDataViewInterfaceDTO> getInterfaceDetails(List<String> ids) { | ||
145 | + List<TkDataViewInterfaceDTO> lists = baseMapper.getInterfaceDetails(ids); | ||
146 | + return lists; | ||
147 | + } | ||
148 | + | ||
149 | + @Override | ||
150 | + public List<TkDataViewInterfaceDTO> filterByInterfaceType(String type,String tenantId) { | ||
151 | + List<String> tenantIds = new ArrayList<>(); | ||
152 | + tenantIds.add(tenantId); | ||
153 | + tenantIds.add(EntityId.NULL_UUID.toString()); | ||
154 | + List<TkDataViewInterfaceDTO> lists = baseMapper.filterByInterfaceType(type,tenantIds); | ||
155 | + return lists; | ||
156 | + } | ||
157 | + | ||
158 | + @Override | ||
159 | + public List<TkDataViewInterfaceDTO> findAll(String tenantId){ | ||
160 | + List<String> tenantIds = new ArrayList<>(); | ||
161 | + tenantIds.add(tenantId); | ||
162 | + tenantIds.add(EntityId.NULL_UUID.toString()); | ||
163 | + List<TkDataViewInterfaceDTO> lists =baseMapper.findAll(tenantIds); | ||
164 | + return lists; | ||
165 | + } | ||
166 | + | ||
167 | +} |
@@ -13,6 +13,7 @@ import org.thingsboard.server.common.data.yunteng.dto.*; | @@ -13,6 +13,7 @@ import org.thingsboard.server.common.data.yunteng.dto.*; | ||
13 | import org.thingsboard.server.common.data.yunteng.dto.request.TkDataViewContentInfoDTO; | 13 | import org.thingsboard.server.common.data.yunteng.dto.request.TkDataViewContentInfoDTO; |
14 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; | 14 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; |
15 | import org.thingsboard.server.dao.yunteng.entities.TkDataViewEntity; | 15 | import org.thingsboard.server.dao.yunteng.entities.TkDataViewEntity; |
16 | +import org.thingsboard.server.dao.yunteng.entities.TkDataViewInterfaceEntity; | ||
16 | import org.thingsboard.server.dao.yunteng.mapper.TkDataViewMapper; | 17 | import org.thingsboard.server.dao.yunteng.mapper.TkDataViewMapper; |
17 | import org.thingsboard.server.dao.yunteng.mapper.OrganizationMapper; | 18 | import org.thingsboard.server.dao.yunteng.mapper.OrganizationMapper; |
18 | import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; | 19 | import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; |
@@ -24,7 +25,9 @@ import java.util.HashSet; | @@ -24,7 +25,9 @@ import java.util.HashSet; | ||
24 | import java.util.List; | 25 | import java.util.List; |
25 | import java.util.Map; | 26 | import java.util.Map; |
26 | import java.util.stream.Collectors; | 27 | import java.util.stream.Collectors; |
27 | - | 28 | +/** |
29 | + * @author tianfuLei | ||
30 | + */ | ||
28 | @Slf4j | 31 | @Slf4j |
29 | @Service | 32 | @Service |
30 | @RequiredArgsConstructor | 33 | @RequiredArgsConstructor |
@@ -68,12 +71,13 @@ public class TkDataViewServiceImpl | @@ -68,12 +71,13 @@ public class TkDataViewServiceImpl | ||
68 | @Override | 71 | @Override |
69 | @Transactional | 72 | @Transactional |
70 | public TkDataViewDTO saveDataView(TkDataViewDTO TkDataViewDTO) { | 73 | public TkDataViewDTO saveDataView(TkDataViewDTO TkDataViewDTO) { |
71 | - TkDataViewEntity DataView = | 74 | + TkDataViewEntity dataView = |
72 | TkDataViewDTO.getEntity(TkDataViewEntity.class); | 75 | TkDataViewDTO.getEntity(TkDataViewEntity.class); |
73 | - baseMapper.insert(DataView); | 76 | + dataView.setState(0); |
77 | + baseMapper.insert(dataView); | ||
74 | TkDataViewContentDTO contentDTO = new TkDataViewContentDTO(); | 78 | TkDataViewContentDTO contentDTO = new TkDataViewContentDTO(); |
75 | - contentDTO.setTenantId(DataView.getTenantId()); | ||
76 | - contentDTO.setViewId(DataView.getId()); | 79 | + contentDTO.setTenantId(dataView.getTenantId()); |
80 | + contentDTO.setViewId(dataView.getId()); | ||
77 | contentDTO.setContent( | 81 | contentDTO.setContent( |
78 | "<mxGraphModel><root><mxCell id=\"0\"/><mxCell id=\"1\" parent=\"0\"/></root></mxGraphModel>"); | 82 | "<mxGraphModel><root><mxCell id=\"0\"/><mxCell id=\"1\" parent=\"0\"/></root></mxGraphModel>"); |
79 | ytDataViewContentService.saveDataViewContent(contentDTO); | 83 | ytDataViewContentService.saveDataViewContent(contentDTO); |
@@ -114,4 +118,29 @@ public class TkDataViewServiceImpl | @@ -114,4 +118,29 @@ public class TkDataViewServiceImpl | ||
114 | ? list.get(FastIotConstants.MagicNumber.ZERO) | 118 | ? list.get(FastIotConstants.MagicNumber.ZERO) |
115 | : null; | 119 | : null; |
116 | } | 120 | } |
121 | + | ||
122 | + | ||
123 | + @Override | ||
124 | + public boolean publishDataView(String id, String tenantId) { | ||
125 | + TkDataViewEntity dataView = baseMapper.selectById(id); | ||
126 | + if (!dataView.getTenantId().equals(tenantId)) { | ||
127 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | ||
128 | + } | ||
129 | + //Modify dataView state is publish | ||
130 | + dataView.setState(1); | ||
131 | + int resultInt = baseMapper.updateById(dataView); | ||
132 | + return resultInt > 0 ? true : false; | ||
133 | + } | ||
134 | + | ||
135 | + @Override | ||
136 | + public boolean cancelPublishDataView(String id, String tenantId) { | ||
137 | + TkDataViewEntity dataView = baseMapper.selectById(id); | ||
138 | + if (!dataView.getTenantId().equals(tenantId)) { | ||
139 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | ||
140 | + } | ||
141 | + //Modify dataView state is cancelPublish | ||
142 | + dataView.setState(0); | ||
143 | + int resultInt = baseMapper.updateById(dataView); | ||
144 | + return resultInt > 0 ? true : false; | ||
145 | + } | ||
117 | } | 146 | } |
dao/src/main/java/org/thingsboard/server/dao/yunteng/mapper/TkDataViewInterfaceMapper.java
0 → 100644
1 | +package org.thingsboard.server.dao.yunteng.mapper; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
4 | +import org.apache.ibatis.annotations.Mapper; | ||
5 | +import org.apache.ibatis.annotations.Param; | ||
6 | +import org.thingsboard.server.common.data.yunteng.dto.TkDataViewInterfaceDTO; | ||
7 | +import org.thingsboard.server.dao.yunteng.entities.TkDataViewInterfaceEntity; | ||
8 | + | ||
9 | +import java.util.List; | ||
10 | + | ||
11 | +/** | ||
12 | + * @author tianfuLei | ||
13 | + */ | ||
14 | +@Mapper | ||
15 | +public interface TkDataViewInterfaceMapper extends BaseMapper<TkDataViewInterfaceEntity> { | ||
16 | + | ||
17 | + /** | ||
18 | + * 根据ID获得详情 | ||
19 | + * @param ids | ||
20 | + * @return | ||
21 | + */ | ||
22 | + List<TkDataViewInterfaceDTO> getInterfaceDetails(@Param("ids") List<String> ids); | ||
23 | + | ||
24 | + /** | ||
25 | + * 根据接口类型过滤 | ||
26 | + * @param type | ||
27 | + * @param tenantIds | ||
28 | + * @return | ||
29 | + */ | ||
30 | + List<TkDataViewInterfaceDTO> filterByInterfaceType(@Param("type") String type,@Param("tenantIds") List<String> tenantIds); | ||
31 | + | ||
32 | + /** | ||
33 | + * 查询所有数据 | ||
34 | + * @param tenantIds | ||
35 | + * @return | ||
36 | + */ | ||
37 | + List<TkDataViewInterfaceDTO> findAll(@Param("tenantIds") List<String> tenantIds); | ||
38 | + | ||
39 | +} |
@@ -11,6 +11,9 @@ import org.thingsboard.server.dao.yunteng.entities.TkDataViewEntity; | @@ -11,6 +11,9 @@ import org.thingsboard.server.dao.yunteng.entities.TkDataViewEntity; | ||
11 | import java.util.List; | 11 | import java.util.List; |
12 | import java.util.Map; | 12 | import java.util.Map; |
13 | 13 | ||
14 | +/** | ||
15 | + * @author tianfuLei | ||
16 | + */ | ||
14 | @Mapper | 17 | @Mapper |
15 | public interface TkDataViewMapper extends BaseMapper<TkDataViewEntity> { | 18 | public interface TkDataViewMapper extends BaseMapper<TkDataViewEntity> { |
16 | IPage<TkDataViewDTO> getDataViewPage( | 19 | IPage<TkDataViewDTO> getDataViewPage( |
dao/src/main/java/org/thingsboard/server/dao/yunteng/service/TkDataViewInterfaceService.java
0 → 100644
1 | +package org.thingsboard.server.dao.yunteng.service; | ||
2 | + | ||
3 | +import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; | ||
4 | +import org.thingsboard.server.common.data.yunteng.dto.TkDataViewDTO; | ||
5 | +import org.thingsboard.server.common.data.yunteng.dto.TkDataViewInterfaceDTO; | ||
6 | +import org.thingsboard.server.common.data.yunteng.dto.request.TkDataViewContentInfoDTO; | ||
7 | +import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; | ||
8 | + | ||
9 | +import java.util.List; | ||
10 | +import java.util.Map; | ||
11 | + | ||
12 | +/** | ||
13 | + * @author tianfuLei | ||
14 | + */ | ||
15 | +public interface TkDataViewInterfaceService { | ||
16 | + | ||
17 | + TkPageData<TkDataViewInterfaceDTO> page(Map<String, Object> queryMap); | ||
18 | + | ||
19 | + TkDataViewInterfaceDTO saveDataViewInterface(TkDataViewInterfaceDTO tkDataViewInterfaceDTO); | ||
20 | + | ||
21 | + TkDataViewInterfaceDTO updateDataViewInterface(TkDataViewInterfaceDTO tkDataViewInterfaceDTO); | ||
22 | + | ||
23 | + boolean deleteDataViewInterface(DeleteDTO deleteDTO); | ||
24 | + | ||
25 | + boolean publishInterface(String id, String tenantId); | ||
26 | + | ||
27 | + boolean cancelPublishInterface(String id, String tenantId); | ||
28 | + | ||
29 | + List<TkDataViewInterfaceDTO> getInterfaceDetails(List<String> ids); | ||
30 | + | ||
31 | + List<TkDataViewInterfaceDTO> filterByInterfaceType(String type,String tenantId); | ||
32 | + | ||
33 | + List<TkDataViewInterfaceDTO> findAll(String tenantId); | ||
34 | + | ||
35 | +} |
@@ -6,7 +6,9 @@ import org.thingsboard.server.common.data.yunteng.dto.request.TkDataViewContentI | @@ -6,7 +6,9 @@ import org.thingsboard.server.common.data.yunteng.dto.request.TkDataViewContentI | ||
6 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; | 6 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; |
7 | 7 | ||
8 | import java.util.Map; | 8 | import java.util.Map; |
9 | - | 9 | +/** |
10 | + * @author tianfuLei | ||
11 | + */ | ||
10 | public interface TkDataViewService { | 12 | public interface TkDataViewService { |
11 | TkPageData<TkDataViewDTO> page(Map<String, Object> queryMap, boolean tenantAdmin); | 13 | TkPageData<TkDataViewDTO> page(Map<String, Object> queryMap, boolean tenantAdmin); |
12 | 14 | ||
@@ -17,4 +19,8 @@ public interface TkDataViewService { | @@ -17,4 +19,8 @@ public interface TkDataViewService { | ||
17 | boolean deleteDataView(DeleteDTO deleteDTO); | 19 | boolean deleteDataView(DeleteDTO deleteDTO); |
18 | 20 | ||
19 | TkDataViewContentInfoDTO getDataViewInfos(String id, String tenantId); | 21 | TkDataViewContentInfoDTO getDataViewInfos(String id, String tenantId); |
22 | + | ||
23 | + boolean publishDataView(String id, String tenantId); | ||
24 | + | ||
25 | + boolean cancelPublishDataView(String id, String tenantId); | ||
20 | } | 26 | } |
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||
3 | + | ||
4 | +<mapper namespace="org.thingsboard.server.dao.yunteng.mapper.TkDataViewInterfaceMapper"> | ||
5 | + | ||
6 | + <resultMap id="dataViewInterfaceMap" type="org.thingsboard.server.common.data.yunteng.dto.TkDataViewInterfaceDTO"> | ||
7 | + <result property="id" column="id"/> | ||
8 | + <result property="interfaceName" column="interface_name"/> | ||
9 | + <result property="requestContentType" column="request_content_type"/> | ||
10 | + <result property="requestOriginUrl" column="request_origin_url"/> | ||
11 | + | ||
12 | + <result property="requestHttpType" column="request_http_type"/> | ||
13 | + <result property="requestUrl" column="request_url"/> | ||
14 | + <result property="requestParams" column="request_params"/> | ||
15 | + <result property="state" column="state"/> | ||
16 | + | ||
17 | + <result property="remark" column="remark"/> | ||
18 | + <result property="updateTime" column="update_time"/> | ||
19 | + <result property="createTime" column="create_time"/> | ||
20 | + <result property="creator" column="creator"/> | ||
21 | + <result property="tenantId" column="tenant_id"/> | ||
22 | + <result property="updater" column="updater"/> | ||
23 | + </resultMap> | ||
24 | + | ||
25 | + <sql id="columns"> | ||
26 | + id,interface_name, request_content_type, request_origin_url, request_http_type, request_url, request_params, state, creator, create_time, updater, update_time, tenant_id, remark | ||
27 | + </sql> | ||
28 | + | ||
29 | + <select id="getInterfaceDetails" resultMap="dataViewInterfaceMap"> | ||
30 | + SELECT | ||
31 | + <include refid="columns"/> | ||
32 | + FROM tk_data_view_interface | ||
33 | + <where> | ||
34 | + <if test="ids !=null"> | ||
35 | + id IN | ||
36 | + <foreach collection="ids" item="id" open="(" separator="," close=")"> | ||
37 | + #{id} | ||
38 | + </foreach> | ||
39 | + </if> | ||
40 | + </where> | ||
41 | + </select> | ||
42 | + | ||
43 | + | ||
44 | + <select id="filterByInterfaceType" resultMap="dataViewInterfaceMap"> | ||
45 | + SELECT | ||
46 | + <include refid="columns"/> | ||
47 | + FROM tk_data_view_interface | ||
48 | + <where> | ||
49 | + <if test="type !=null and type !=''"> | ||
50 | + AND request_http_type = #{type} | ||
51 | + </if> | ||
52 | + | ||
53 | + <if test="tenantIds !=null"> | ||
54 | + AND tenant_id IN | ||
55 | + <foreach collection="tenantIds" item="tenantId" open="(" separator="," close=")"> | ||
56 | + #{tenantId} | ||
57 | + </foreach> | ||
58 | + </if> | ||
59 | + </where> | ||
60 | + </select> | ||
61 | + | ||
62 | + | ||
63 | + <select id="findAll" resultMap="dataViewInterfaceMap"> | ||
64 | + SELECT | ||
65 | + <include refid="columns"/> | ||
66 | + FROM tk_data_view_interface | ||
67 | + <where> | ||
68 | + <if test="tenantIds !=null"> | ||
69 | + AND tenant_id IN | ||
70 | + <foreach collection="tenantIds" item="tenantId" open="(" separator="," close=")"> | ||
71 | + #{tenantId} | ||
72 | + </foreach> | ||
73 | + </if> | ||
74 | + </where> | ||
75 | + </select> | ||
76 | + | ||
77 | +</mapper> |