Commit 982703953acebdd86da5d489ded03f7e0b39a0e2

Authored by xp.Huang
2 parents facdb01a 9baa7da7

Merge branch 'ljl1207' into 'master'

docs: 设备配置相关接口

See merge request huang/thingsboard3.3.2!9
... ... @@ -52,7 +52,7 @@ public class YtDeviceController extends BaseController {
52 52 private final DeviceService tbDeviceService;
53 53
54 54 @PostMapping
55   - @ApiOperation("刷新=保存+更新")
  55 + @ApiOperation("创建|编辑")
56 56 public ResponseEntity<DeviceDTO> saveDevice(@Validated(AddGroup.class)@RequestBody DeviceDTO deviceDTO)
57 57 throws ThingsboardException {
58 58 String currentTenantId = getCurrentUser().getCurrentTenantId();
... ... @@ -96,11 +96,13 @@ public class YtDeviceController extends BaseController {
96 96 }
97 97
98 98 @GetMapping("{id}")
  99 + @ApiOperation("详情")
99 100 public ResponseEntity<DeviceDTO> getDevice(@PathVariable("id") String id) throws ThingsboardException {
100 101 return ResponseEntity.of(deviceService.getDevice(getCurrentUser().getCurrentTenantId(), id));
101 102 }
102 103
103 104 @GetMapping(params = {PAGE_SIZE, PAGE})
  105 + @ApiOperation("查询")
104 106 public YtPageData<DeviceDTO> pageDevice(
105 107 @RequestParam(PAGE_SIZE) int pageSize,
106 108 @RequestParam(PAGE) int page,
... ... @@ -133,8 +135,21 @@ public class YtDeviceController extends BaseController {
133 135 }
134 136 return deviceService.page(getCurrentUser().getCurrentTenantId(), queryMap);
135 137 }
  138 + @PostMapping("/import")
  139 + @ApiOperation("导入配置")
  140 + public ResponseEntity<String> importDeviceProfile(){
  141 + //TODO 实现的业务功能
  142 + return ResponseEntity.ok("");
  143 + }
136 144
  145 + @PostMapping("/export")
  146 + @ApiOperation("导出")
  147 + public ResponseEntity<String> exportDeviceProfile(){
  148 + //TODO 实现的业务功能
  149 + return ResponseEntity.ok("");
  150 + }
137 151 @DeleteMapping
  152 + @ApiOperation("删除")
138 153 public void deleteDevices(@Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) throws ThingsboardException {
139 154 String currentTenantId = getCurrentUser().getCurrentTenantId();
140 155 List<String> tdIds = deviceService.findTbDeviceId(currentTenantId, deleteDTO.getIds());
... ...
... ... @@ -34,6 +34,7 @@ import org.thingsboard.server.dao.yunteng.service.YtDeviceProfileService;
34 34 import org.thingsboard.server.service.security.permission.Operation;
35 35
36 36 import java.net.URI;
  37 +import java.sql.ResultSet;
37 38 import java.time.LocalDateTime;
38 39 import java.time.ZoneOffset;
39 40 import java.util.*;
... ... @@ -47,9 +48,9 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.
47 48 public class YtDeviceProfileController extends BaseController {
48 49 private final YtDeviceProfileService ytDeviceProfileService;
49 50
50   - @PostMapping
  51 + @PostMapping()
51 52 @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')")
52   - @ApiOperation("刷新=保存+更新")
  53 + @ApiOperation("创建 | 编辑")
53 54 public ResponseEntity<DeviceProfileDTO> saveDeviceProfile(
54 55 @RequestBody DeviceProfileDTO deviceProfileDTO) throws ThingsboardException {
55 56
... ... @@ -61,15 +62,13 @@ public class YtDeviceProfileController extends BaseController {
61 62 * 2/3.处理TB业务逻辑
62 63 * 3/3.处理业务平台的业务逻辑
63 64 */
64   - //TODO 1/3.验证业务平台中表单数据的合法性
65 65
66   - //TODO 2/3.处理TB业务逻辑
67 66 deviceProfileDTO.setTenantId(getCurrentUser().getCurrentTenantId());
68 67 DeviceProfile tbDeviceProfile = buildTbDeviceProfileFromDeviceProfileDTO(deviceProfileDTO);
69 68 DeviceProfile savedDeviceProfile = updateTbDeviceProfile(tbDeviceProfile, created);
70 69
71 70
72   - //TODO 3/3.处理业务平台的业务逻辑
  71 +
73 72
74 73 DeviceProfileDTO newDeviceProfileDTO = ytDeviceProfileService.insertOrUpdate(savedDeviceProfile.getId().getId().toString(), deviceProfileDTO);
75 74 return Optional.ofNullable(newDeviceProfileDTO)
... ... @@ -123,12 +122,14 @@ public class YtDeviceProfileController extends BaseController {
123 122 }
124 123
125 124 @GetMapping("{id}")
  125 + @ApiOperation("详情")
126 126 public ResponseEntity<DeviceProfileDTO> getDevice(@PathVariable("id") String id) throws ThingsboardException {
127 127 return ResponseEntity.of(ytDeviceProfileService.getDeviceProfile(getCurrentUser().getCurrentTenantId(), id));
128 128 }
129 129
130 130 @GetMapping(params = {PAGE_SIZE, PAGE})
131   - public YtPageData<DeviceProfileDTO> pageDevice(
  131 + @ApiOperation("查询")
  132 + public YtPageData<DeviceProfileDTO> pageDeviceProfile(
132 133 @RequestParam(PAGE_SIZE) int pageSize,
133 134 @RequestParam(PAGE) int page,
134 135 @RequestParam(value = "name", required = false) String name,
... ... @@ -140,7 +141,15 @@ public class YtDeviceProfileController extends BaseController {
140 141 return ytDeviceProfileService.page(pageLink, getCurrentUser().getCurrentTenantId(), transportType);
141 142 }
142 143
  144 + @GetMapping("/me/list")
  145 + @ApiOperation("选项列表")
  146 + public ResponseEntity listDeviceProfile() throws ThingsboardException {
  147 + List<DeviceProfileDTO> results = ytDeviceProfileService.findDeviceProfile(getCurrentUser().getCurrentTenantId());
  148 + return ResponseEntity.ok(results);
  149 + }
  150 +
143 151 @DeleteMapping
  152 + @ApiOperation("删除")
144 153 public void deleteDevices(@Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) throws ThingsboardException {
145 154 for (String id : deleteDTO.getIds()) {
146 155 deleteTbDeviceProfile(id);
... ... @@ -163,12 +172,29 @@ public class YtDeviceProfileController extends BaseController {
163 172 sendEntityNotificationMsg(getTenantId(), deviceProfile.getId(), EdgeEventActionType.DELETED);
164 173 }
165 174
166   - @GetMapping("/me")
167   - public ResponseEntity<List<DeviceProfileDTO>> findCurrentTenantDeviceProfiles() throws ThingsboardException {
  175 + @GetMapping("/me/default")
  176 + @ApiOperation("默认设备配置")
  177 + public ResponseEntity<DeviceProfile> findCurrentTenantDeviceProfiles() throws ThingsboardException {
  178 + DeviceProfile result = deviceProfileService.findDefaultDeviceProfile(getCurrentUser().getTenantId());
  179 + return ResponseEntity.ok(result);
  180 + }
  181 +
  182 + @PostMapping("/import")
  183 + @ApiOperation("导入配置")
  184 + public ResponseEntity<String> importDeviceProfile(){
  185 + //TODO 实现的业务功能
  186 + return ResponseEntity.ok("");
  187 + }
168 188
169   - return ResponseEntity.ok(ytDeviceProfileService.findDeviceProfile(getCurrentUser().getCurrentTenantId()));
  189 + @PostMapping("/export")
  190 + @ApiOperation("导出")
  191 + public ResponseEntity<String> exportDeviceProfile(){
  192 + //TODO 实现的业务功能
  193 + return ResponseEntity.ok("");
170 194 }
171 195
  196 +
  197 +
172 198 /**
173 199 * 构造调用TBDeviceProfile需要的参数
174 200 *
... ...
1 1 package org.thingsboard.server.controller.yunteng;
  2 +import io.swagger.annotations.Api;
  3 +import io.swagger.annotations.ApiOperation;
2 4 import lombok.RequiredArgsConstructor;
3 5 import org.springframework.http.HttpStatus;
4 6 import org.springframework.http.ResponseEntity;
... ... @@ -19,6 +21,7 @@ import java.util.Optional;
19 21
20 22 @RestController
21 23 @RequestMapping("api/yt/organization")
  24 +@Api(tags = "组织管理")
22 25 @RequiredArgsConstructor
23 26 public class YtOrganizationController extends BaseController {
24 27
... ... @@ -49,17 +52,19 @@ public class YtOrganizationController extends BaseController {
49 52 organizationService.deleteOrganizations(deleteDTO, getCurrentUser().getCurrentTenantId()));
50 53 }
51 54
52   - @GetMapping("/me/organizations")
53   - public List<OrganizationDTO> getMyOrganizations() throws ThingsboardException {
54   - return organizationService.getMyOrganizations(
55   - getCurrentUser().isPtTenantAdmin(),
56   - getCurrentUser().getCurrentTenantId(),
57   - getCurrentUser().getCurrentUserId());
  55 + @GetMapping("/me/list")
  56 + @ApiOperation("下拉列表")
  57 + public ResponseEntity getMyOrganizations() throws ThingsboardException {
  58 + List<OrganizationDTO> result = organizationService.getMyOrganizations(
  59 + getCurrentUser().isPtTenantAdmin(),
  60 + getCurrentUser().getCurrentTenantId(),
  61 + getCurrentUser().getCurrentUserId());
  62 + return ResponseEntity.ok(result);
58 63 }
59 64
60 65 @PutMapping
61   - public OrganizationDTO updateOrganization(@Validated(UpdateGroup.class) @RequestBody OrganizationDTO groupDTO) throws ThingsboardException {
62   - return organizationService.updateOrganization(groupDTO, getCurrentUser().getCurrentTenantId());
  66 + public ResponseEntity updateOrganization(@Validated(UpdateGroup.class) @RequestBody OrganizationDTO groupDTO) throws ThingsboardException {
  67 + return ResponseEntity.ok(organizationService.updateOrganization(groupDTO, getCurrentUser().getCurrentTenantId()));
63 68 }
64 69
65 70 @PutMapping("saveOrUpdateUserOrganizationMapping/{userId}")
... ...
  1 +package org.thingsboard.server.controller.yunteng;
  2 +
  3 +import io.swagger.annotations.Api;
  4 +import io.swagger.annotations.ApiOperation;
  5 +import lombok.RequiredArgsConstructor;
  6 +import org.apache.commons.lang3.StringUtils;
  7 +import org.springframework.http.HttpStatus;
  8 +import org.springframework.http.ResponseEntity;
  9 +import org.springframework.security.access.prepost.PreAuthorize;
  10 +import org.springframework.validation.annotation.Validated;
  11 +import org.springframework.web.bind.annotation.*;
  12 +import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
  13 +import org.thingsboard.server.common.data.DeviceProfile;
  14 +import org.thingsboard.server.common.data.DeviceProfileProvisionType;
  15 +import org.thingsboard.server.common.data.DeviceProfileType;
  16 +import org.thingsboard.server.common.data.DeviceTransportType;
  17 +import org.thingsboard.server.common.data.audit.ActionType;
  18 +import org.thingsboard.server.common.data.device.profile.DefaultDeviceProfileConfiguration;
  19 +import org.thingsboard.server.common.data.device.profile.DefaultDeviceProfileTransportConfiguration;
  20 +import org.thingsboard.server.common.data.device.profile.DeviceProfileData;
  21 +import org.thingsboard.server.common.data.device.profile.DisabledDeviceProfileProvisionConfiguration;
  22 +import org.thingsboard.server.common.data.edge.EdgeEventActionType;
  23 +import org.thingsboard.server.common.data.exception.ThingsboardException;
  24 +import org.thingsboard.server.common.data.id.DeviceProfileId;
  25 +import org.thingsboard.server.common.data.id.RuleChainId;
  26 +import org.thingsboard.server.common.data.id.TenantId;
  27 +import org.thingsboard.server.common.data.page.PageLink;
  28 +import org.thingsboard.server.common.data.plugin.ComponentLifecycleEvent;
  29 +import org.thingsboard.server.common.data.rule.RuleChain;
  30 +import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
  31 +import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
  32 +import org.thingsboard.server.common.data.yunteng.dto.DeviceProfileDTO;
  33 +import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum;
  34 +import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData;
  35 +import org.thingsboard.server.common.msg.queue.ServiceQueue;
  36 +import org.thingsboard.server.controller.BaseController;
  37 +import org.thingsboard.server.dao.rule.RuleChainService;
  38 +import org.thingsboard.server.dao.yunteng.service.YtDeviceProfileService;
  39 +import org.thingsboard.server.service.security.permission.Operation;
  40 +
  41 +import java.net.URI;
  42 +import java.time.LocalDateTime;
  43 +import java.time.ZoneOffset;
  44 +import java.util.List;
  45 +import java.util.Objects;
  46 +import java.util.Optional;
  47 +import java.util.UUID;
  48 +
  49 +import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.*;
  50 +
  51 +@RestController
  52 +@RequiredArgsConstructor
  53 +@RequestMapping("api/yt/rulechain")
  54 +@Api(tags = {"规则链管理"})
  55 +public class YtRuleChainController extends BaseController {
  56 + private final RuleChainService chainService;
  57 +
  58 +
  59 +
  60 +
  61 +
  62 + @GetMapping("/me/list")
  63 + @ApiOperation("下拉列表")
  64 + public ResponseEntity listDeviceProfile() throws ThingsboardException {
  65 + TenantId tenantId = getCurrentUser().getTenantId();
  66 + return ResponseEntity.ok(chainService.getRootTenantRuleChain(tenantId));
  67 + }
  68 +
  69 +
  70 +}
... ...