Commit 4934858ea308db25ca5405835bc973178aa929fa

Authored by 芯火源
1 parent 0b331bdd

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

1 1 package org.thingsboard.server.controller.yunteng;
2 2
  3 +import com.fasterxml.jackson.core.type.TypeReference;
3 4 import com.fasterxml.jackson.databind.JsonNode;
4 5 import io.swagger.annotations.Api;
5 6 import io.swagger.annotations.ApiOperation;
... ... @@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.*;
12 13 import org.thingsboard.server.common.data.DeviceProfile;
13 14 import org.thingsboard.server.common.data.device.profile.DeviceProfileData;
14 15 import org.thingsboard.server.common.data.exception.ThingsboardException;
  16 +import org.thingsboard.server.common.data.id.DeviceProfileId;
15 17 import org.thingsboard.server.common.data.yunteng.common.AddGroup;
16 18 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
17 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 22 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
21 23 import org.thingsboard.server.common.data.yunteng.dto.DeviceProfileDTO;
22 24 import org.thingsboard.server.common.data.yunteng.dto.ThingsModelDTO;
  25 +import org.thingsboard.server.common.data.yunteng.dto.TkThingsModel;
23 26 import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum;
24 27 import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum;
25 28 import org.thingsboard.server.common.data.yunteng.enums.StatusEnum;
... ... @@ -122,11 +125,11 @@ public class ThingsModelController extends BaseController {
122 125 if (null == dto) {
123 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 133 return ResponseEntity.ok(true);
131 134 }
132 135
... ...
... ... @@ -18,7 +18,7 @@ package org.thingsboard.server.common.data.device.profile;
18 18 import io.swagger.annotations.ApiModel;
19 19 import io.swagger.annotations.ApiModelProperty;
20 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 23 import javax.validation.Valid;
24 24 import java.io.Serializable;
... ... @@ -41,7 +41,7 @@ public class DeviceProfileData implements Serializable {
41 41
42 42 //Thingskit function
43 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 196
197 197 @Override
198 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 200 boolean result = baseMapper.changeTSLStatus(deviceProfileId, tenantId, status);
201 201 if(result){
202 202 List<TkThingsModelEntity> entityList = baseMapper.selectList(new LambdaQueryWrapper<TkThingsModelEntity>().eq(TkThingsModelEntity::getDeviceProfileId,deviceProfileId));
203 203 if (entityList.isEmpty()) {
204 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 208 return null;
209 209 }
... ...
... ... @@ -3,6 +3,7 @@ package org.thingsboard.server.dao.yunteng.service;
3 3 import com.fasterxml.jackson.databind.JsonNode;
4 4 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
5 5 import org.thingsboard.server.common.data.yunteng.dto.ThingsModelDTO;
  6 +import org.thingsboard.server.common.data.yunteng.dto.TkThingsModel;
6 7 import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum;
7 8 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
8 9 import org.thingsboard.server.dao.yunteng.entities.TkThingsModelEntity;
... ... @@ -27,5 +28,5 @@ public interface ThingsModelService {
27 28
28 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 23 import org.thingsboard.server.common.data.id.DeviceProfileId;
24 24 import org.thingsboard.server.common.data.id.TenantId;
25 25 import org.thingsboard.server.common.data.plugin.ComponentType;
26   -import org.thingsboard.server.common.data.yunteng.dto.ThingsModelDTO;
27 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 28 import org.thingsboard.server.common.data.yunteng.enums.FunctionTypeEnum;
30 29 import org.thingsboard.server.common.msg.TbMsg;
31 30 import org.thingsboard.server.common.msg.session.SessionMsgType;
... ... @@ -35,7 +34,8 @@ import java.util.List;
35 34 import java.util.UUID;
36 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 40 @Slf4j
41 41 @RuleNode(
... ... @@ -70,7 +70,7 @@ public class TkMsgEventNode implements TbNode {
70 70 DeviceProfileId profileId = new DeviceProfileId(UUID.fromString(deviceProfileId));
71 71 DeviceProfile profile = cache.get(tenantId,profileId);
72 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 74 .filter(f -> f.getIdentifier().equals(eventIdentifier) && FunctionTypeEnum.events.equals(f.getFunctionType()))
75 75 .collect(Collectors.toList());
76 76 List<TkEventKvEntry> entryList = new ArrayList<>();
... ... @@ -83,7 +83,6 @@ public class TkMsgEventNode implements TbNode {
83 83 ////TODO: 验证事件类型、事件标识符和数据建是否与产品物模型中的事件匹配
84 84 long ts = System.currentTimeMillis();
85 85 String src = msg.getData();
86   - DeviceEventTypeEnum eventType = DeviceEventTypeEnum.valueOf(msg.getMetaData().getValue(EVENT_TYPE_COLUMN));
87 86 ctx.getTelemetryService().saveAndNotify(
88 87 tenantId,profileId,
89 88 msg.getOriginator(),
... ...