Commit 46246494bc5edd583e3fcbe4164c7200c79c4808

Authored by 芯火源
2 parents 43ecec5e 36e5a1e9

Merge branch 'master' into 20230222

@@ -576,7 +576,7 @@ public class DefaultTransportService implements TransportService { @@ -576,7 +576,7 @@ public class DefaultTransportService implements TransportService {
576 @Override 576 @Override
577 public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.PostEventMsg msg, 577 public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.PostEventMsg msg,
578 TransportServiceCallback<Void> callback,String topicName) { 578 TransportServiceCallback<Void> callback,String topicName) {
579 - //Topic地址:v1/devices/event/${deviceId}/${identifier}/{$eventType} 579 + //Topic地址:v1/devices/event/${deviceId}/${identifier}
580 String[] topicInfo = topicName.split(MqttTopics.BASE_DEVICE_EVENT_TOPIC + "/"); 580 String[] topicInfo = topicName.split(MqttTopics.BASE_DEVICE_EVENT_TOPIC + "/");
581 if(null == topicInfo || topicInfo.length !=2){ 581 if(null == topicInfo || topicInfo.length !=2){
582 throw new TkDataValidationException(ErrorMessage.INVALID_TOPIC.getMessage()); 582 throw new TkDataValidationException(ErrorMessage.INVALID_TOPIC.getMessage());
@@ -597,7 +597,6 @@ public class DefaultTransportService implements TransportService { @@ -597,7 +597,6 @@ public class DefaultTransportService implements TransportService {
597 metaData.putValue("device_profile_id", deviceProfileId.toString()); 597 metaData.putValue("device_profile_id", deviceProfileId.toString());
598 metaData.putValue("deviceId",eventInfo[0]); 598 metaData.putValue("deviceId",eventInfo[0]);
599 metaData.putValue("event_identifier", eventInfo[1]); 599 metaData.putValue("event_identifier", eventInfo[1]);
600 - metaData.putValue("event_type",eventInfo[2]);  
601 sendToRuleEngine(tenantId, deviceId, customerId, sessionInfo, json, metaData, SessionMsgType.POST_EVENT_REQUEST, 600 sendToRuleEngine(tenantId, deviceId, customerId, sessionInfo, json, metaData, SessionMsgType.POST_EVENT_REQUEST,
602 new TransportTbQueueCallback(new ApiStatsProxyCallback<>(tenantId, customerId, msg.getKvList().size(), callback))); 601 new TransportTbQueueCallback(new ApiStatsProxyCallback<>(tenantId, customerId, msg.getKvList().size(), callback)));
603 } 602 }
@@ -3,7 +3,6 @@ package org.thingsboard.server.dao.yunteng.impl; @@ -3,7 +3,6 @@ package org.thingsboard.server.dao.yunteng.impl;
3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 import com.baomidou.mybatisplus.core.metadata.IPage; 4 import com.baomidou.mybatisplus.core.metadata.IPage;
5 import com.fasterxml.jackson.databind.JsonNode; 5 import com.fasterxml.jackson.databind.JsonNode;
6 -import com.fasterxml.jackson.databind.node.ObjectNode;  
7 import lombok.RequiredArgsConstructor; 6 import lombok.RequiredArgsConstructor;
8 import org.apache.commons.lang3.StringUtils; 7 import org.apache.commons.lang3.StringUtils;
9 import org.springframework.beans.BeanUtils; 8 import org.springframework.beans.BeanUtils;
@@ -13,8 +12,6 @@ import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; @@ -13,8 +12,6 @@ import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
13 import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException; 12 import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
14 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; 13 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
15 import org.thingsboard.server.common.data.yunteng.dto.*; 14 import org.thingsboard.server.common.data.yunteng.dto.*;
16 -import org.thingsboard.server.common.data.yunteng.enums.DataTypeEnum;  
17 -import org.thingsboard.server.common.data.yunteng.enums.DeviceTypeEnum;  
18 import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum; 15 import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum;
19 import org.thingsboard.server.common.data.yunteng.enums.StatusEnum; 16 import org.thingsboard.server.common.data.yunteng.enums.StatusEnum;
20 import org.thingsboard.server.common.data.yunteng.utils.JacksonUtil; 17 import org.thingsboard.server.common.data.yunteng.utils.JacksonUtil;
@@ -159,45 +156,41 @@ public class ThingsModelServiceImpl @@ -159,45 +156,41 @@ public class ThingsModelServiceImpl
159 } 156 }
160 List<ThingsModelDTO> thingsModelDTOS = 157 List<ThingsModelDTO> thingsModelDTOS =
161 selectByDeviceProfileId(typeEnum, tenantId, deviceProfileId); 158 selectByDeviceProfileId(typeEnum, tenantId, deviceProfileId);
162 - if(null ==thingsModelDTOS){ 159 + if (null == thingsModelDTOS) {
163 return jsonNode; 160 return jsonNode;
164 } 161 }
165 - DeviceTypeEnum deviceType = deviceProfileDTO.getDeviceType();  
166 - if (typeEnum.equals(FunctionTypeEnum.properties)) {  
167 - jsonNode = getAttributeTSL(thingsModelDTOS, deviceType);  
168 - } else {  
169 - if (typeEnum.equals(FunctionTypeEnum.services)) {  
170 - List<ServiceModelDTO> serviceList = new ArrayList<>();  
171 - if (!thingsModelDTOS.isEmpty()) {  
172 - for (ThingsModelDTO thingsModelDTO : thingsModelDTOS) {  
173 - ServiceModelDTO serviceDTO = new ServiceModelDTO();  
174 - BeanUtils.copyProperties(thingsModelDTO, serviceDTO);  
175 - JsonNode functionJson = thingsModelDTO.getFunctionJson();  
176 - if (null != functionJson) { 162 + List<Object> serviceList = new ArrayList<>();
  163 + if (!thingsModelDTOS.isEmpty()) {
  164 + for (ThingsModelDTO thingsModelDTO : thingsModelDTOS) {
  165 + JsonNode functionJson = thingsModelDTO.getFunctionJson();
  166 + if (null != functionJson) {
  167 + switch (typeEnum) {
  168 + case properties:
  169 + AttributeModelDTO attributeModelDTO = new AttributeModelDTO();
  170 + BeanUtils.copyProperties(thingsModelDTO, attributeModelDTO);
  171 + attributeModelDTO.setSpecs(functionJson.get("dataType"));
  172 + serviceList.add(attributeModelDTO);
  173 + break;
  174 + case services:
  175 + ServiceModelDTO serviceDTO = new ServiceModelDTO();
  176 + BeanUtils.copyProperties(thingsModelDTO, serviceDTO);
177 serviceDTO.setInputData(functionJson.get("inputData")); 177 serviceDTO.setInputData(functionJson.get("inputData"));
178 serviceDTO.setOutputData(functionJson.get("outputData")); 178 serviceDTO.setOutputData(functionJson.get("outputData"));
179 - }  
180 - serviceList.add(serviceDTO);  
181 - }  
182 - }  
183 - jsonNode = JacksonUtil.convertValue(serviceList, JsonNode.class);  
184 - } else {  
185 - List<EventModelDTO> eventList = new ArrayList<>();  
186 - if (!thingsModelDTOS.isEmpty()) {  
187 - for (ThingsModelDTO thingsModelDTO : thingsModelDTOS) {  
188 - EventModelDTO eventDTO = new EventModelDTO();  
189 - BeanUtils.copyProperties(thingsModelDTO, eventDTO);  
190 - JsonNode functionJson = thingsModelDTO.getFunctionJson();  
191 - if (null != functionJson) { 179 + serviceList.add(serviceDTO);
  180 + break;
  181 + case events:
  182 + EventModelDTO eventDTO = new EventModelDTO();
  183 + BeanUtils.copyProperties(thingsModelDTO, eventDTO);
192 eventDTO.setOutputData(functionJson.get("outputData")); 184 eventDTO.setOutputData(functionJson.get("outputData"));
193 - } 185 + serviceList.add(eventDTO);
  186 + break;
  187 + default:
  188 + break;
194 } 189 }
195 } 190 }
196 - jsonNode = JacksonUtil.convertValue(eventList, JsonNode.class);  
197 } 191 }
198 } 192 }
199 -  
200 - return jsonNode; 193 + return JacksonUtil.convertValue(serviceList, JsonNode.class);
201 } 194 }
202 195
203 @Override 196 @Override
@@ -206,53 +199,6 @@ public class ThingsModelServiceImpl @@ -206,53 +199,6 @@ public class ThingsModelServiceImpl
206 return baseMapper.changeTSLStatus(deviceProfileId, tenantId, status); 199 return baseMapper.changeTSLStatus(deviceProfileId, tenantId, status);
207 } 200 }
208 201
209 - private JsonNode getAttributeTSL(  
210 - List<ThingsModelDTO> thingsModelDTOS, DeviceTypeEnum deviceType) {  
211 - Map<String, List<ObjectNode>> attributeMap = new HashMap<>();  
212 - JsonNode jsonNode;  
213 - List<ObjectNode> list = new ArrayList<>();  
214 - for (ThingsModelDTO model : thingsModelDTOS) {  
215 - ObjectNode objectNode = JacksonUtil.newObjectNode();  
216 - JsonNode dataType = model.getFunctionJson().get("dataType");  
217 - if (null != dataType) {  
218 - DataTypeEnum type =  
219 - dataType.get("type") != null  
220 - ? DataTypeEnum.valueOf(dataType.get("type").asText())  
221 - : null;  
222 - String identifier = model.getIdentifier();  
223 - switch (Objects.requireNonNull(type)) {  
224 - case INT:  
225 - objectNode.put(identifier, 0);  
226 - break;  
227 - case BOOL:  
228 - objectNode.put(identifier, "0");  
229 - break;  
230 - case DOUBLE:  
231 - objectNode.put(identifier, 0.00);  
232 - break;  
233 - case TEXT:  
234 - objectNode.put(identifier, "text");  
235 - break;  
236 - case STRUCT:  
237 - objectNode.putPOJO(identifier, dataType.get("specs"));  
238 - break;  
239 - default:  
240 - objectNode.put(identifier, "value");  
241 - break;  
242 - }  
243 - }  
244 - list.add(objectNode);  
245 - }  
246 - if (deviceType.equals(DeviceTypeEnum.SENSOR)) {  
247 - attributeMap.put("网关子设备名称", list);  
248 - jsonNode = JacksonUtil.convertValue(attributeMap, JsonNode.class);  
249 - } else {  
250 - jsonNode = JacksonUtil.convertValue(list, JsonNode.class);  
251 - }  
252 -  
253 - return jsonNode;  
254 - }  
255 -  
256 private boolean checkIdentifier( 202 private boolean checkIdentifier(
257 String deviceProfileId, String identifier, boolean isAdd, String thingsModelId) { 203 String deviceProfileId, String identifier, boolean isAdd, String thingsModelId) {
258 TkThingsModelEntity entity = 204 TkThingsModelEntity entity =