Commit 195c4c9becaeaed52530af6fdec55a4dd9c7a8fd
1 parent
889e4ec4
fix: add Configuration Center thumbnail and device script return id
Showing
4 changed files
with
198 additions
and
191 deletions
@@ -59,205 +59,207 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant. | @@ -59,205 +59,207 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant. | ||
59 | @RequestMapping("api/yt/js") | 59 | @RequestMapping("api/yt/js") |
60 | @Api(tags = {"设备数据解析脚本管理"}) | 60 | @Api(tags = {"设备数据解析脚本管理"}) |
61 | public class YtDeviceScriptController extends BaseController { | 61 | public class YtDeviceScriptController extends BaseController { |
62 | - private final YtDeviceScriptService scriptService; | ||
63 | - private final YtDeviceProfileService ytDeviceProfileService; | ||
64 | - private final YtScriptInvokeService jsEngine; | ||
65 | - private static final JsonParser parser = new JsonParser(); | ||
66 | - | ||
67 | - private static final ObjectMapper objectMapper = new ObjectMapper(); | ||
68 | - | ||
69 | - @PostMapping() | ||
70 | - @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN'},{'api:yt:js:post','api:yt:js:update'})") | ||
71 | - @ApiOperation("创建 | 编辑") | ||
72 | - public ResponseEntity<YtDeviceScriptDTO> saveJavaScript( | ||
73 | - @RequestBody YtDeviceScriptDTO scriptDTO) throws ThingsboardException { | ||
74 | - String id = scriptDTO.getId(); | ||
75 | - boolean created = StringUtils.isBlank(id); | ||
76 | - String tenantId = getCurrentUser().getCurrentTenantId(); | ||
77 | - scriptDTO.setTenantId(tenantId); | ||
78 | - scriptService.validateFormdata(scriptDTO,created); | ||
79 | - /** | ||
80 | - * 业务流程 | ||
81 | - * 1/3.编辑时同步刷新相关的设备配置 | ||
82 | - * 2/3.处理TB业务逻辑 | ||
83 | - * 3/3.处理业务平台的业务逻辑 | ||
84 | - */ | ||
85 | - if(!created){ | ||
86 | - List<DeviceProfileDTO> usedProfiles =ytDeviceProfileService.findDeviceProfile(tenantId,id); | ||
87 | - for(DeviceProfileDTO profile:usedProfiles){ | ||
88 | - DeviceProfile tbDeviceProfile = buildTbDeviceProfileFromDeviceProfileDTO(profile,scriptDTO.getTenantId(),scriptDTO.getConvertJs()); | ||
89 | - updateTbDeviceProfile(tbDeviceProfile); | ||
90 | - } | ||
91 | - | ||
92 | - } | ||
93 | - | ||
94 | - | ||
95 | - String creator = getCurrentUser().getCurrentUserId(); | ||
96 | - scriptDTO.setCreator(creator); | ||
97 | - scriptDTO.setUpdater(creator); | ||
98 | - scriptService.insertOrUpdate(scriptDTO); | ||
99 | - | ||
100 | - return ResponseEntity.ok(scriptDTO); | 62 | + private static final JsonParser parser = new JsonParser(); |
63 | + private static final ObjectMapper objectMapper = new ObjectMapper(); | ||
64 | + private final YtDeviceScriptService scriptService; | ||
65 | + private final YtDeviceProfileService ytDeviceProfileService; | ||
66 | + private final YtScriptInvokeService jsEngine; | ||
67 | + | ||
68 | + @PostMapping() | ||
69 | + @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN'},{'api:yt:js:post','api:yt:js:update'})") | ||
70 | + @ApiOperation("创建 | 编辑") | ||
71 | + public ResponseEntity<YtDeviceScriptDTO> saveJavaScript(@RequestBody YtDeviceScriptDTO scriptDTO) | ||
72 | + throws ThingsboardException { | ||
73 | + String id = scriptDTO.getId(); | ||
74 | + boolean created = StringUtils.isBlank(id); | ||
75 | + String tenantId = getCurrentUser().getCurrentTenantId(); | ||
76 | + scriptDTO.setTenantId(tenantId); | ||
77 | + scriptService.validateFormdata(scriptDTO, created); | ||
78 | + /** 业务流程 1/3.编辑时同步刷新相关的设备配置 2/3.处理TB业务逻辑 3/3.处理业务平台的业务逻辑 */ | ||
79 | + if (!created) { | ||
80 | + List<DeviceProfileDTO> usedProfiles = ytDeviceProfileService.findDeviceProfile(tenantId, id); | ||
81 | + for (DeviceProfileDTO profile : usedProfiles) { | ||
82 | + DeviceProfile tbDeviceProfile = | ||
83 | + buildTbDeviceProfileFromDeviceProfileDTO( | ||
84 | + profile, scriptDTO.getTenantId(), scriptDTO.getConvertJs()); | ||
85 | + updateTbDeviceProfile(tbDeviceProfile); | ||
86 | + } | ||
101 | } | 87 | } |
102 | 88 | ||
103 | - /** | ||
104 | - * 更新thingsboard的设备配置信息 | ||
105 | - * | ||
106 | - * @param deviceProfile 设备配置 | ||
107 | - * @throws ThingsboardException | ||
108 | - */ | ||
109 | - private DeviceProfile updateTbDeviceProfile(DeviceProfile deviceProfile) throws ThingsboardException { | ||
110 | - boolean isFirmwareChanged = false; | ||
111 | - boolean isSoftwareChanged = false; | ||
112 | - | ||
113 | - DeviceProfile oldDeviceProfile = deviceProfileService.findDeviceProfileById(getTenantId(), deviceProfile.getId()); | ||
114 | - if (!Objects.equals(deviceProfile.getFirmwareId(), oldDeviceProfile.getFirmwareId())) { | ||
115 | - isFirmwareChanged = true; | ||
116 | - } | ||
117 | - if (!Objects.equals(deviceProfile.getSoftwareId(), oldDeviceProfile.getSoftwareId())) { | ||
118 | - isSoftwareChanged = true; | ||
119 | - } | ||
120 | - if (FastIotConstants.ASSERT_DEFAULT_NAME.equals(oldDeviceProfile.getName()) && !Objects.equals(deviceProfile.getName(), oldDeviceProfile.getName())) { | ||
121 | - throw new YtDataValidationException(ErrorMessage.ASSERT_DEFAULT_NAME_NO_CHANGED.getMessage()); | ||
122 | - } | ||
123 | - | ||
124 | - DeviceProfile savedDeviceProfile = checkNotNull(deviceProfileService.saveDeviceProfile(deviceProfile)); | ||
125 | - | ||
126 | - tbClusterService.onDeviceProfileChange(savedDeviceProfile, null); | ||
127 | - tbClusterService.broadcastEntityStateChangeEvent(deviceProfile.getTenantId(), savedDeviceProfile.getId(), ComponentLifecycleEvent.UPDATED); | ||
128 | - | ||
129 | - logEntityAction(savedDeviceProfile.getId(), savedDeviceProfile, | ||
130 | - null,ActionType.UPDATED, null); | ||
131 | - | ||
132 | - otaPackageStateService.update(savedDeviceProfile, isFirmwareChanged, isSoftwareChanged); | ||
133 | - | ||
134 | - sendEntityNotificationMsg(getTenantId(), savedDeviceProfile.getId(),EdgeEventActionType.UPDATED); | ||
135 | - return savedDeviceProfile; | 89 | + String creator = getCurrentUser().getCurrentUserId(); |
90 | + scriptDTO.setCreator(creator); | ||
91 | + scriptDTO.setUpdater(creator); | ||
92 | + return ResponseEntity.ok(scriptService.insertOrUpdate(scriptDTO)); | ||
93 | + } | ||
94 | + | ||
95 | + /** | ||
96 | + * 更新thingsboard的设备配置信息 | ||
97 | + * | ||
98 | + * @param deviceProfile 设备配置 | ||
99 | + * @throws ThingsboardException | ||
100 | + */ | ||
101 | + private DeviceProfile updateTbDeviceProfile(DeviceProfile deviceProfile) | ||
102 | + throws ThingsboardException { | ||
103 | + boolean isFirmwareChanged = false; | ||
104 | + boolean isSoftwareChanged = false; | ||
105 | + | ||
106 | + DeviceProfile oldDeviceProfile = | ||
107 | + deviceProfileService.findDeviceProfileById(getTenantId(), deviceProfile.getId()); | ||
108 | + if (!Objects.equals(deviceProfile.getFirmwareId(), oldDeviceProfile.getFirmwareId())) { | ||
109 | + isFirmwareChanged = true; | ||
136 | } | 110 | } |
137 | - | ||
138 | - @GetMapping("{id}") | ||
139 | - @ApiOperation("详情") | ||
140 | -// @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN'},{'api:yt:deviceProfile:get'})") | ||
141 | - public ResponseEntity<YtDeviceScriptDTO> getDevice(@PathVariable("id") String id) throws ThingsboardException { | ||
142 | - return ResponseEntity.of(scriptService.getDeviceScript(getCurrentUser().getCurrentTenantId(), id)); | 111 | + if (!Objects.equals(deviceProfile.getSoftwareId(), oldDeviceProfile.getSoftwareId())) { |
112 | + isSoftwareChanged = true; | ||
143 | } | 113 | } |
144 | - @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") | ||
145 | - @GetMapping(params = {PAGE_SIZE, PAGE}) | ||
146 | - @ApiOperation("分页查询") | ||
147 | - public YtPageData<YtDeviceScriptDTO> pageDeviceProfile( | ||
148 | - @RequestParam(PAGE_SIZE) int pageSize, | ||
149 | - @RequestParam(PAGE) int page, | ||
150 | - @RequestParam(value = "name", required = false) String name, | ||
151 | - @RequestParam(value = "transportType", required = false) String transportType, | ||
152 | - @RequestParam(value = ORDER_FILED, required = false) String orderFiled, | ||
153 | - @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) throws ThingsboardException { | ||
154 | - | ||
155 | - return scriptService.page(page, pageSize, orderFiled, orderType, getCurrentUser().getCurrentTenantId()); | 114 | + if (FastIotConstants.ASSERT_DEFAULT_NAME.equals(oldDeviceProfile.getName()) |
115 | + && !Objects.equals(deviceProfile.getName(), oldDeviceProfile.getName())) { | ||
116 | + throw new YtDataValidationException(ErrorMessage.ASSERT_DEFAULT_NAME_NO_CHANGED.getMessage()); | ||
156 | } | 117 | } |
157 | 118 | ||
158 | - @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") | ||
159 | - @GetMapping("/me/list") | ||
160 | - @ApiOperation("选项列表") | ||
161 | - public ResponseEntity listDeviceProfile() throws ThingsboardException { | ||
162 | - List<YtDeviceScriptDTO> results = scriptService.findDeviceScript(getCurrentUser().getCurrentTenantId()); | ||
163 | - return ResponseEntity.ok(results); | 119 | + DeviceProfile savedDeviceProfile = |
120 | + checkNotNull(deviceProfileService.saveDeviceProfile(deviceProfile)); | ||
121 | + | ||
122 | + tbClusterService.onDeviceProfileChange(savedDeviceProfile, null); | ||
123 | + tbClusterService.broadcastEntityStateChangeEvent( | ||
124 | + deviceProfile.getTenantId(), savedDeviceProfile.getId(), ComponentLifecycleEvent.UPDATED); | ||
125 | + | ||
126 | + logEntityAction(savedDeviceProfile.getId(), savedDeviceProfile, null, ActionType.UPDATED, null); | ||
127 | + | ||
128 | + otaPackageStateService.update(savedDeviceProfile, isFirmwareChanged, isSoftwareChanged); | ||
129 | + | ||
130 | + sendEntityNotificationMsg( | ||
131 | + getTenantId(), savedDeviceProfile.getId(), EdgeEventActionType.UPDATED); | ||
132 | + return savedDeviceProfile; | ||
133 | + } | ||
134 | + | ||
135 | + @GetMapping("{id}") | ||
136 | + @ApiOperation("详情") | ||
137 | + // @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN'},{'api:yt:deviceProfile:get'})") | ||
138 | + public ResponseEntity<YtDeviceScriptDTO> getDevice(@PathVariable("id") String id) | ||
139 | + throws ThingsboardException { | ||
140 | + return ResponseEntity.of( | ||
141 | + scriptService.getDeviceScript(getCurrentUser().getCurrentTenantId(), id)); | ||
142 | + } | ||
143 | + | ||
144 | + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") | ||
145 | + @GetMapping(params = {PAGE_SIZE, PAGE}) | ||
146 | + @ApiOperation("分页查询") | ||
147 | + public YtPageData<YtDeviceScriptDTO> pageDeviceProfile( | ||
148 | + @RequestParam(PAGE_SIZE) int pageSize, | ||
149 | + @RequestParam(PAGE) int page, | ||
150 | + @RequestParam(value = "name", required = false) String name, | ||
151 | + @RequestParam(value = "transportType", required = false) String transportType, | ||
152 | + @RequestParam(value = ORDER_FILED, required = false) String orderFiled, | ||
153 | + @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) | ||
154 | + throws ThingsboardException { | ||
155 | + | ||
156 | + return scriptService.page( | ||
157 | + page, pageSize, orderFiled, orderType, getCurrentUser().getCurrentTenantId()); | ||
158 | + } | ||
159 | + | ||
160 | + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") | ||
161 | + @GetMapping("/me/list") | ||
162 | + @ApiOperation("选项列表") | ||
163 | + public ResponseEntity listDeviceProfile() throws ThingsboardException { | ||
164 | + List<YtDeviceScriptDTO> results = | ||
165 | + scriptService.findDeviceScript(getCurrentUser().getCurrentTenantId()); | ||
166 | + return ResponseEntity.ok(results); | ||
167 | + } | ||
168 | + | ||
169 | + @DeleteMapping | ||
170 | + @ApiOperation("删除") | ||
171 | + @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN'},{'api:yt:deviceProfile:delete'})") | ||
172 | + public void deleteDevices(@Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) | ||
173 | + throws ThingsboardException { | ||
174 | + scriptService.deleteScriptes(getCurrentUser().getCurrentTenantId(), deleteDTO.getIds()); | ||
175 | + } | ||
176 | + | ||
177 | + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") | ||
178 | + @PostMapping("/test") | ||
179 | + @ApiOperation("测试脚本执行结果") | ||
180 | + public ResponseEntity<JsonNode> test(@RequestBody JsonNode inputParams) | ||
181 | + throws ThingsboardException { | ||
182 | + try { | ||
183 | + String script = inputParams.get("script").asText(); | ||
184 | + String jsParam = inputParams.get("params").asText(); | ||
185 | + | ||
186 | + String output = ""; | ||
187 | + String errorText = ""; | ||
188 | + ScriptEngine engine = null; | ||
189 | + try { | ||
190 | + UUID scriptId = jsEngine.eval(YtScriptType.TCP_TRANSPORT_SCRIPT, script).get(); | ||
191 | + ListenableFuture<String> result = | ||
192 | + Futures.transformAsync( | ||
193 | + jsEngine.invokeFunction(scriptId, jsParam), | ||
194 | + o -> { | ||
195 | + try { | ||
196 | + JsonElement json = parser.parse(o.toString()); | ||
197 | + return Futures.immediateFuture(json.toString()); | ||
198 | + } catch (Exception e) { | ||
199 | + return Futures.immediateFailedFuture(e); | ||
200 | + } | ||
201 | + }, | ||
202 | + MoreExecutors.directExecutor()); | ||
203 | + | ||
204 | + output = result.get(20, TimeUnit.SECONDS); | ||
205 | + } catch (Exception e) { | ||
206 | + errorText = e.getMessage(); | ||
207 | + } finally { | ||
208 | + if (engine != null) { | ||
209 | + engine.destroy(); | ||
210 | + } | ||
211 | + } | ||
212 | + ObjectNode result = objectMapper.createObjectNode(); | ||
213 | + result.put("output", output); | ||
214 | + result.put("error", errorText); | ||
215 | + return ResponseEntity.ok(result); | ||
216 | + } catch (Exception e) { | ||
217 | + throw handleException(e); | ||
164 | } | 218 | } |
165 | - | ||
166 | - @DeleteMapping | ||
167 | - @ApiOperation("删除") | ||
168 | - @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN'},{'api:yt:deviceProfile:delete'})") | ||
169 | - public void deleteDevices(@Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) throws ThingsboardException { | ||
170 | - scriptService.deleteScriptes(getCurrentUser().getCurrentTenantId(), deleteDTO.getIds()); | 219 | + } |
220 | + | ||
221 | + /** | ||
222 | + * 构造调用TBDeviceProfile需要的参数 | ||
223 | + * | ||
224 | + * @param deviceProfileDTO 页面接收的参数 | ||
225 | + * @return 封装好的TBDeviceProfile | ||
226 | + */ | ||
227 | + private DeviceProfile buildTbDeviceProfileFromDeviceProfileDTO( | ||
228 | + DeviceProfileDTO deviceProfileDTO, String scriptId, String scriptText) { | ||
229 | + DeviceProfile tbDeviceProfile = new DeviceProfile(); | ||
230 | + if (StringUtils.isNotBlank(deviceProfileDTO.getId())) { | ||
231 | + UUID profileId = UUID.fromString(deviceProfileDTO.getId()); | ||
232 | + tbDeviceProfile.setId(new DeviceProfileId(profileId)); | ||
233 | + tbDeviceProfile.setCreatedTime( | ||
234 | + deviceProfileDTO.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli()); | ||
235 | + } else { | ||
236 | + tbDeviceProfile.setCreatedTime( | ||
237 | + LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli()); | ||
171 | } | 238 | } |
172 | - | ||
173 | - | ||
174 | - @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") | ||
175 | - @PostMapping("/test") | ||
176 | - @ApiOperation("测试脚本执行结果") | ||
177 | - public ResponseEntity<JsonNode> test(@RequestBody JsonNode inputParams) throws ThingsboardException { | ||
178 | - try { | ||
179 | - String script = inputParams.get("script").asText(); | ||
180 | - String jsParam = inputParams.get("params").asText(); | ||
181 | - | ||
182 | - | ||
183 | - String output = ""; | ||
184 | - String errorText = ""; | ||
185 | - ScriptEngine engine = null; | ||
186 | - try { | ||
187 | - UUID scriptId = jsEngine.eval(YtScriptType.TCP_TRANSPORT_SCRIPT, script).get(); | ||
188 | - ListenableFuture<String> result = Futures.transformAsync(jsEngine.invokeFunction(scriptId, jsParam), | ||
189 | - o -> { | ||
190 | - try { | ||
191 | - JsonElement json = parser.parse(o.toString()); | ||
192 | - return Futures.immediateFuture(json.toString()); | ||
193 | - } catch (Exception e) { | ||
194 | - return Futures.immediateFailedFuture(e); | ||
195 | - } | ||
196 | - }, MoreExecutors.directExecutor()); | ||
197 | - | ||
198 | - output =result.get(20, TimeUnit.SECONDS); | ||
199 | - } catch (Exception e) { | ||
200 | - errorText = e.getMessage(); | ||
201 | - } finally { | ||
202 | - if (engine != null) { | ||
203 | - engine.destroy(); | ||
204 | - } | ||
205 | - } | ||
206 | - ObjectNode result = objectMapper.createObjectNode(); | ||
207 | - result.put("output", output); | ||
208 | - result.put("error", errorText); | ||
209 | - return ResponseEntity.ok(result); | ||
210 | - } catch (Exception e) { | ||
211 | - throw handleException(e); | ||
212 | - } | ||
213 | - | ||
214 | - | 239 | + tbDeviceProfile.setName(deviceProfileDTO.getName()); |
240 | + tbDeviceProfile.setImage(deviceProfileDTO.getImage()); | ||
241 | + tbDeviceProfile.setDescription(deviceProfileDTO.getDescription()); | ||
242 | + tbDeviceProfile.setType(DeviceProfileType.DEFAULT); | ||
243 | + UUID tenantId = UUID.fromString(deviceProfileDTO.getTenantId()); | ||
244 | + tbDeviceProfile.setTenantId(TenantId.fromUUID(tenantId)); | ||
245 | + tbDeviceProfile.setDefault(deviceProfileDTO.isDefault()); | ||
246 | + | ||
247 | + // 获取当前租户的默认规则链 | ||
248 | + if (StringUtils.isNotBlank(deviceProfileDTO.getDefaultRuleChainId())) { | ||
249 | + UUID chainId = UUID.fromString(deviceProfileDTO.getDefaultRuleChainId()); | ||
250 | + tbDeviceProfile.setDefaultRuleChainId(new RuleChainId(chainId)); | ||
215 | } | 251 | } |
216 | 252 | ||
253 | + tbDeviceProfile.setDefaultQueueName(ServiceQueue.MAIN); | ||
254 | + tbDeviceProfile.setProvisionType(DeviceProfileProvisionType.DISABLED); | ||
217 | 255 | ||
256 | + // 传输类型默认都是Default | ||
257 | + String transportType = deviceProfileDTO.getTransportType(); | ||
258 | + tbDeviceProfile.setTransportType(DeviceTransportType.valueOf(transportType)); | ||
218 | 259 | ||
219 | - | ||
220 | - | ||
221 | - /** | ||
222 | - * 构造调用TBDeviceProfile需要的参数 | ||
223 | - * | ||
224 | - * @param deviceProfileDTO 页面接收的参数 | ||
225 | - * @return 封装好的TBDeviceProfile | ||
226 | - */ | ||
227 | - private DeviceProfile buildTbDeviceProfileFromDeviceProfileDTO(DeviceProfileDTO deviceProfileDTO,String scriptId,String scriptText) { | ||
228 | - DeviceProfile tbDeviceProfile = new DeviceProfile(); | ||
229 | - if (StringUtils.isNotBlank(deviceProfileDTO.getId())) { | ||
230 | - UUID profileId = UUID.fromString(deviceProfileDTO.getId()); | ||
231 | - tbDeviceProfile.setId(new DeviceProfileId(profileId)); | ||
232 | - tbDeviceProfile.setCreatedTime(deviceProfileDTO.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli()); | ||
233 | - }else{ | ||
234 | - tbDeviceProfile.setCreatedTime(LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli()); | ||
235 | - } | ||
236 | - tbDeviceProfile.setName(deviceProfileDTO.getName()); | ||
237 | - tbDeviceProfile.setImage(deviceProfileDTO.getImage()); | ||
238 | - tbDeviceProfile.setDescription(deviceProfileDTO.getDescription()); | ||
239 | - tbDeviceProfile.setType(DeviceProfileType.DEFAULT); | ||
240 | - UUID tenantId = UUID.fromString(deviceProfileDTO.getTenantId()); | ||
241 | - tbDeviceProfile.setTenantId(TenantId.fromUUID(tenantId)); | ||
242 | - tbDeviceProfile.setDefault(deviceProfileDTO.isDefault()); | ||
243 | - | ||
244 | - // 获取当前租户的默认规则链 | ||
245 | - if (StringUtils.isNotBlank(deviceProfileDTO.getDefaultRuleChainId())) { | ||
246 | - UUID chainId = UUID.fromString(deviceProfileDTO.getDefaultRuleChainId()); | ||
247 | - tbDeviceProfile.setDefaultRuleChainId(new RuleChainId(chainId)); | ||
248 | - } | ||
249 | - | ||
250 | - tbDeviceProfile.setDefaultQueueName(ServiceQueue.MAIN); | ||
251 | - tbDeviceProfile.setProvisionType(DeviceProfileProvisionType.DISABLED); | ||
252 | - | ||
253 | - | ||
254 | - // 传输类型默认都是Default | ||
255 | - String transportType = deviceProfileDTO.getTransportType(); | ||
256 | - tbDeviceProfile.setTransportType(DeviceTransportType.valueOf(transportType)); | ||
257 | - | ||
258 | - | ||
259 | - deviceProfileDTO.setScriptId(scriptId); | ||
260 | - tbDeviceProfile.setProfileData(buildDeviceProfileData(transportType,deviceProfileDTO.getProfileData(),scriptText)); | ||
261 | - return tbDeviceProfile; | ||
262 | - } | 260 | + deviceProfileDTO.setScriptId(scriptId); |
261 | + tbDeviceProfile.setProfileData( | ||
262 | + buildDeviceProfileData(transportType, deviceProfileDTO.getProfileData(), scriptText)); | ||
263 | + return tbDeviceProfile; | ||
264 | + } | ||
263 | } | 265 | } |
common/data/src/main/java/org/thingsboard/server/common/data/yunteng/dto/ConfigurationCenterDTO.java
@@ -32,5 +32,8 @@ public class ConfigurationCenterDTO extends TenantDTO { | @@ -32,5 +32,8 @@ public class ConfigurationCenterDTO extends TenantDTO { | ||
32 | groups = {UpdateGroup.class, AddGroup.class}) | 32 | groups = {UpdateGroup.class, AddGroup.class}) |
33 | private String platform; | 33 | private String platform; |
34 | 34 | ||
35 | + @ApiModelProperty(value = "组态缩略图") | ||
36 | + private String thumbnail; | ||
37 | + | ||
35 | private OrganizationDTO organizationDTO; | 38 | private OrganizationDTO organizationDTO; |
36 | } | 39 | } |
@@ -14,4 +14,5 @@ public class ConfigurationCenter extends TenantBaseEntity { | @@ -14,4 +14,5 @@ public class ConfigurationCenter extends TenantBaseEntity { | ||
14 | private String remark; | 14 | private String remark; |
15 | private String organizationId; | 15 | private String organizationId; |
16 | private String platform; | 16 | private String platform; |
17 | + private String thumbnail; | ||
17 | } | 18 | } |
@@ -13,6 +13,7 @@ | @@ -13,6 +13,7 @@ | ||
13 | <result property="creator" column="creator"/> | 13 | <result property="creator" column="creator"/> |
14 | <result property="tenantId" column="tenant_id"/> | 14 | <result property="tenantId" column="tenant_id"/> |
15 | <result property="updater" column="updater"/> | 15 | <result property="updater" column="updater"/> |
16 | + <result property="thumbnail" column="thumbnail"/> | ||
16 | <association property="organizationDTO" | 17 | <association property="organizationDTO" |
17 | javaType="org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO"> | 18 | javaType="org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO"> |
18 | <result property="name" column="organization_name"/> | 19 | <result property="name" column="organization_name"/> |
@@ -29,7 +30,7 @@ | @@ -29,7 +30,7 @@ | ||
29 | </resultMap> | 30 | </resultMap> |
30 | 31 | ||
31 | <sql id="columns"> | 32 | <sql id="columns"> |
32 | - a.id,a.name,a.platform,a.organization_id,a.remark,a.update_time,a.create_time,a.creator,a.tenant_id,a.updater,io.name AS organization_name | 33 | + a.id,a.name,a.platform,a.organization_id,a.thumbnail, a.remark,a.update_time,a.create_time,a.creator,a.tenant_id,a.updater,io.name AS organization_name |
33 | </sql> | 34 | </sql> |
34 | <select id="getConfigurationCenterPage" resultMap="configurationCenterMap"> | 35 | <select id="getConfigurationCenterPage" resultMap="configurationCenterMap"> |
35 | SELECT | 36 | SELECT |
@@ -56,7 +57,7 @@ | @@ -56,7 +57,7 @@ | ||
56 | </select> | 57 | </select> |
57 | 58 | ||
58 | <select id="getConfigurationInfoById" resultMap="configurationInfoMap"> | 59 | <select id="getConfigurationInfoById" resultMap="configurationInfoMap"> |
59 | - SELECT icc.id,icc.name,icc.platform,icct.id AS content_id,icct.content FROM iotfs_configuration_center icc LEFT JOIN | 60 | + SELECT icc.id,icc.name,icc.platform,icc.thumbnail,icct.id AS content_id,icct.content FROM iotfs_configuration_center icc LEFT JOIN |
60 | iotfs_configuration_content icct ON icc.id = icct.configuration_id | 61 | iotfs_configuration_content icct ON icc.id = icct.configuration_id |
61 | WHERE icc.id = #{id} AND icc.tenant_id = #{tenantId} | 62 | WHERE icc.id = #{id} AND icc.tenant_id = #{tenantId} |
62 | </select> | 63 | </select> |