Commit 4934858ea308db25ca5405835bc973178aa929fa

Authored by 芯火源
1 parent 0b331bdd

refactor: 物模型发布,同步刷新设备配置

1 package org.thingsboard.server.controller.yunteng; 1 package org.thingsboard.server.controller.yunteng;
2 2
  3 +import com.fasterxml.jackson.core.type.TypeReference;
3 import com.fasterxml.jackson.databind.JsonNode; 4 import com.fasterxml.jackson.databind.JsonNode;
4 import io.swagger.annotations.Api; 5 import io.swagger.annotations.Api;
5 import io.swagger.annotations.ApiOperation; 6 import io.swagger.annotations.ApiOperation;
@@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.*; @@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.*;
12 import org.thingsboard.server.common.data.DeviceProfile; 13 import org.thingsboard.server.common.data.DeviceProfile;
13 import org.thingsboard.server.common.data.device.profile.DeviceProfileData; 14 import org.thingsboard.server.common.data.device.profile.DeviceProfileData;
14 import org.thingsboard.server.common.data.exception.ThingsboardException; 15 import org.thingsboard.server.common.data.exception.ThingsboardException;
  16 +import org.thingsboard.server.common.data.id.DeviceProfileId;
15 import org.thingsboard.server.common.data.yunteng.common.AddGroup; 17 import org.thingsboard.server.common.data.yunteng.common.AddGroup;
16 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; 18 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
17 import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; 19 import org.thingsboard.server.common.data.yunteng.common.UpdateGroup;
@@ -20,6 +22,7 @@ import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; @@ -20,6 +22,7 @@ import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
20 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; 22 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
21 import org.thingsboard.server.common.data.yunteng.dto.DeviceProfileDTO; 23 import org.thingsboard.server.common.data.yunteng.dto.DeviceProfileDTO;
22 import org.thingsboard.server.common.data.yunteng.dto.ThingsModelDTO; 24 import org.thingsboard.server.common.data.yunteng.dto.ThingsModelDTO;
  25 +import org.thingsboard.server.common.data.yunteng.dto.TkThingsModel;
23 import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum; 26 import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum;
24 import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; 27 import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum;
25 import org.thingsboard.server.common.data.yunteng.enums.StatusEnum; 28 import org.thingsboard.server.common.data.yunteng.enums.StatusEnum;
@@ -122,11 +125,11 @@ public class ThingsModelController extends BaseController { @@ -122,11 +125,11 @@ public class ThingsModelController extends BaseController {
122 if (null == dto) { 125 if (null == dto) {
123 throw new TkDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); 126 throw new TkDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage());
124 } 127 }
125 - List<ThingsModelDTO> thingsModels = thingsModelService.changeTSLStatus(deviceProfileId, tenantId, StatusEnum.ENABLE.getIndex());  
126 - DeviceProfileData profileData = dto.getProfileData();  
127 - profileData.setThingsModel(thingsModels);  
128 - dto.setProfileData(profileData);  
129 - updateTbDeviceProfile(JacksonUtil.convertValue(dto, DeviceProfile.class)); 128 + List<TkThingsModel> thingsModels = thingsModelService.changeTSLStatus(deviceProfileId, tenantId, StatusEnum.ENABLE.getIndex());
  129 + DeviceProfile tbProfile = deviceProfileService.findDeviceProfileById(getTenantId(), DeviceProfileId.fromString(dto.getTbProfileId()));
  130 + tbProfile.getProfileData()
  131 + .setThingsModel(thingsModels);
  132 + updateTbDeviceProfile(tbProfile);
130 return ResponseEntity.ok(true); 133 return ResponseEntity.ok(true);
131 } 134 }
132 135
@@ -18,7 +18,7 @@ package org.thingsboard.server.common.data.device.profile; @@ -18,7 +18,7 @@ package org.thingsboard.server.common.data.device.profile;
18 import io.swagger.annotations.ApiModel; 18 import io.swagger.annotations.ApiModel;
19 import io.swagger.annotations.ApiModelProperty; 19 import io.swagger.annotations.ApiModelProperty;
20 import lombok.Data; 20 import lombok.Data;
21 -import org.thingsboard.server.common.data.yunteng.dto.ThingsModelDTO; 21 +import org.thingsboard.server.common.data.yunteng.dto.TkThingsModel;
22 22
23 import javax.validation.Valid; 23 import javax.validation.Valid;
24 import java.io.Serializable; 24 import java.io.Serializable;
@@ -41,7 +41,7 @@ public class DeviceProfileData implements Serializable { @@ -41,7 +41,7 @@ public class DeviceProfileData implements Serializable {
41 41
42 //Thingskit function 42 //Thingskit function
43 @Valid 43 @Valid
44 - @ApiModelProperty(position = 1, value = "JSON object of has published things model configuration")  
45 - private List<ThingsModelDTO> thingsModel; 44 + @ApiModelProperty(position = 5, value = "JSON object of has published things model configuration")
  45 + private List<TkThingsModel> thingsModel;
46 46
47 } 47 }
  1 +package org.thingsboard.server.common.data.yunteng.dto;
  2 +
  3 +import com.fasterxml.jackson.databind.JsonNode;
  4 +import io.swagger.annotations.ApiModel;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +import lombok.EqualsAndHashCode;
  8 +import org.thingsboard.server.common.data.yunteng.common.AddGroup;
  9 +import org.thingsboard.server.common.data.yunteng.common.UpdateGroup;
  10 +import org.thingsboard.server.common.data.yunteng.enums.CallTypeEnum;
  11 +import org.thingsboard.server.common.data.yunteng.enums.DeviceEventTypeEnum;
  12 +import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum;
  13 +
  14 +import javax.validation.constraints.NotEmpty;
  15 +import javax.validation.constraints.NotNull;
  16 +import java.io.Serializable;
  17 +
  18 +@Data
  19 +public class TkThingsModel implements Serializable {
  20 +
  21 + private FunctionTypeEnum functionType;
  22 +
  23 +
  24 + private String functionName;
  25 +
  26 +
  27 + private String identifier;
  28 +
  29 +
  30 + private CallTypeEnum callType;
  31 +
  32 + private String accessMode;
  33 +
  34 +
  35 + private DeviceEventTypeEnum eventType;
  36 +
  37 +
  38 + private JsonNode functionJson;
  39 +
  40 +
  41 + private Integer status;
  42 +
  43 +
  44 + private String deviceProfileId;
  45 +
  46 + private String remark;
  47 +}
@@ -196,14 +196,14 @@ public class ThingsModelServiceImpl @@ -196,14 +196,14 @@ public class ThingsModelServiceImpl
196 196
197 @Override 197 @Override
198 @Transactional 198 @Transactional
199 - public List<ThingsModelDTO> changeTSLStatus(String deviceProfileId, String tenantId, Integer status) { 199 + public List<TkThingsModel> changeTSLStatus(String deviceProfileId, String tenantId, Integer status) {
200 boolean result = baseMapper.changeTSLStatus(deviceProfileId, tenantId, status); 200 boolean result = baseMapper.changeTSLStatus(deviceProfileId, tenantId, status);
201 if(result){ 201 if(result){
202 List<TkThingsModelEntity> entityList = baseMapper.selectList(new LambdaQueryWrapper<TkThingsModelEntity>().eq(TkThingsModelEntity::getDeviceProfileId,deviceProfileId)); 202 List<TkThingsModelEntity> entityList = baseMapper.selectList(new LambdaQueryWrapper<TkThingsModelEntity>().eq(TkThingsModelEntity::getDeviceProfileId,deviceProfileId));
203 if (entityList.isEmpty()) { 203 if (entityList.isEmpty()) {
204 return null; 204 return null;
205 } 205 }
206 - return entityList.stream().map(en -> en.getDTO(ThingsModelDTO.class)).collect(Collectors.toList()); 206 + return entityList.stream().map(en -> en.getDTO(TkThingsModel.class)).collect(Collectors.toList());
207 } 207 }
208 return null; 208 return null;
209 } 209 }
@@ -3,6 +3,7 @@ package org.thingsboard.server.dao.yunteng.service; @@ -3,6 +3,7 @@ package org.thingsboard.server.dao.yunteng.service;
3 import com.fasterxml.jackson.databind.JsonNode; 3 import com.fasterxml.jackson.databind.JsonNode;
4 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; 4 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
5 import org.thingsboard.server.common.data.yunteng.dto.ThingsModelDTO; 5 import org.thingsboard.server.common.data.yunteng.dto.ThingsModelDTO;
  6 +import org.thingsboard.server.common.data.yunteng.dto.TkThingsModel;
6 import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum; 7 import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum;
7 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; 8 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
8 import org.thingsboard.server.dao.yunteng.entities.TkThingsModelEntity; 9 import org.thingsboard.server.dao.yunteng.entities.TkThingsModelEntity;
@@ -27,5 +28,5 @@ public interface ThingsModelService { @@ -27,5 +28,5 @@ public interface ThingsModelService {
27 28
28 JsonNode getTingsModelTSL(FunctionTypeEnum typeEnum, String tenantId, String deviceProfileId); 29 JsonNode getTingsModelTSL(FunctionTypeEnum typeEnum, String tenantId, String deviceProfileId);
29 30
30 - List<ThingsModelDTO> changeTSLStatus(String deviceProfileId, String tenantId, Integer status); 31 + List<TkThingsModel> changeTSLStatus(String deviceProfileId, String tenantId, Integer status);
31 } 32 }
@@ -23,9 +23,8 @@ import org.thingsboard.server.common.data.DeviceProfile; @@ -23,9 +23,8 @@ import org.thingsboard.server.common.data.DeviceProfile;
23 import org.thingsboard.server.common.data.id.DeviceProfileId; 23 import org.thingsboard.server.common.data.id.DeviceProfileId;
24 import org.thingsboard.server.common.data.id.TenantId; 24 import org.thingsboard.server.common.data.id.TenantId;
25 import org.thingsboard.server.common.data.plugin.ComponentType; 25 import org.thingsboard.server.common.data.plugin.ComponentType;
26 -import org.thingsboard.server.common.data.yunteng.dto.ThingsModelDTO;  
27 import org.thingsboard.server.common.data.yunteng.dto.TkEventKvEntry; 26 import org.thingsboard.server.common.data.yunteng.dto.TkEventKvEntry;
28 -import org.thingsboard.server.common.data.yunteng.enums.DeviceEventTypeEnum; 27 +import org.thingsboard.server.common.data.yunteng.dto.TkThingsModel;
29 import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum; 28 import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum;
30 import org.thingsboard.server.common.msg.TbMsg; 29 import org.thingsboard.server.common.msg.TbMsg;
31 import org.thingsboard.server.common.msg.session.SessionMsgType; 30 import org.thingsboard.server.common.msg.session.SessionMsgType;
@@ -35,7 +34,8 @@ import java.util.List; @@ -35,7 +34,8 @@ import java.util.List;
35 import java.util.UUID; 34 import java.util.UUID;
36 import java.util.stream.Collectors; 35 import java.util.stream.Collectors;
37 36
38 -import static org.thingsboard.server.dao.model.ModelConstants.*; 37 +import static org.thingsboard.server.dao.model.ModelConstants.DEVICE_DEVICE_PROFILE_ID_PROPERTY;
  38 +import static org.thingsboard.server.dao.model.ModelConstants.EVENT_IDENTIFIER_COLUMN;
39 39
40 @Slf4j 40 @Slf4j
41 @RuleNode( 41 @RuleNode(
@@ -70,7 +70,7 @@ public class TkMsgEventNode implements TbNode { @@ -70,7 +70,7 @@ public class TkMsgEventNode implements TbNode {
70 DeviceProfileId profileId = new DeviceProfileId(UUID.fromString(deviceProfileId)); 70 DeviceProfileId profileId = new DeviceProfileId(UUID.fromString(deviceProfileId));
71 DeviceProfile profile = cache.get(tenantId,profileId); 71 DeviceProfile profile = cache.get(tenantId,profileId);
72 String eventIdentifier = msg.getMetaData().getValue(EVENT_IDENTIFIER_COLUMN); 72 String eventIdentifier = msg.getMetaData().getValue(EVENT_IDENTIFIER_COLUMN);
73 - List<ThingsModelDTO> eventList =profile.getProfileData().getThingsModel().stream() 73 + List<TkThingsModel> eventList =profile.getProfileData().getThingsModel().stream()
74 .filter(f -> f.getIdentifier().equals(eventIdentifier) && FunctionTypeEnum.events.equals(f.getFunctionType())) 74 .filter(f -> f.getIdentifier().equals(eventIdentifier) && FunctionTypeEnum.events.equals(f.getFunctionType()))
75 .collect(Collectors.toList()); 75 .collect(Collectors.toList());
76 List<TkEventKvEntry> entryList = new ArrayList<>(); 76 List<TkEventKvEntry> entryList = new ArrayList<>();
@@ -83,7 +83,6 @@ public class TkMsgEventNode implements TbNode { @@ -83,7 +83,6 @@ public class TkMsgEventNode implements TbNode {
83 ////TODO: 验证事件类型、事件标识符和数据建是否与产品物模型中的事件匹配 83 ////TODO: 验证事件类型、事件标识符和数据建是否与产品物模型中的事件匹配
84 long ts = System.currentTimeMillis(); 84 long ts = System.currentTimeMillis();
85 String src = msg.getData(); 85 String src = msg.getData();
86 - DeviceEventTypeEnum eventType = DeviceEventTypeEnum.valueOf(msg.getMetaData().getValue(EVENT_TYPE_COLUMN));  
87 ctx.getTelemetryService().saveAndNotify( 86 ctx.getTelemetryService().saveAndNotify(
88 tenantId,profileId, 87 tenantId,profileId,
89 msg.getOriginator(), 88 msg.getOriginator(),