Commit 13cada8e4fc26cbaa884db86f274237feb327142

Authored by lijianfa_14810364212
Committed by xp.Huang
1 parent 113ee214

fix:删除设备上下线历史记录的数据同步


(cherry picked from commit c740ed66d490aa641eb1e4897d02bf5b89bd8e0d)
@@ -90,7 +90,6 @@ import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_center.T @@ -90,7 +90,6 @@ import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_center.T
90 import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_content.TkConfigurationContentRepository; 90 import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_content.TkConfigurationContentRepository;
91 import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_content_node.TkConfigurationContentNodeRepository; 91 import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_content_node.TkConfigurationContentNodeRepository;
92 import org.thingsboard.server.service.edge.rpc.yunteng.tk_device_profile_category.TkDeviceProfileCategoryRepository; 92 import org.thingsboard.server.service.edge.rpc.yunteng.tk_device_profile_category.TkDeviceProfileCategoryRepository;
93 -import org.thingsboard.server.service.edge.rpc.yunteng.tk_device_state_log.TkDeviceStateLogRepository;  
94 import org.thingsboard.server.service.edge.rpc.yunteng.tk_event_kv.TkEventKvRepository; 93 import org.thingsboard.server.service.edge.rpc.yunteng.tk_event_kv.TkEventKvRepository;
95 import org.thingsboard.server.service.edge.rpc.yunteng.tk_java_script.TkJavaScriptRepository; 94 import org.thingsboard.server.service.edge.rpc.yunteng.tk_java_script.TkJavaScriptRepository;
96 import org.thingsboard.server.service.edge.rpc.yunteng.tk_message_config.MessageConfigRepository; 95 import org.thingsboard.server.service.edge.rpc.yunteng.tk_message_config.MessageConfigRepository;
@@ -309,8 +308,6 @@ public class EdgeContextComponent { @@ -309,8 +308,6 @@ public class EdgeContextComponent {
309 @Autowired 308 @Autowired
310 private final TkDeviceProfileCategoryRepository tkDeviceProfileCategoryRepository; 309 private final TkDeviceProfileCategoryRepository tkDeviceProfileCategoryRepository;
311 @Autowired 310 @Autowired
312 - private final TkDeviceStateLogRepository tkDeviceStateLogRepository;  
313 - @Autowired  
314 private final TkEventKvRepository tkEventKvRepository; 311 private final TkEventKvRepository tkEventKvRepository;
315 @Autowired 312 @Autowired
316 private final TkJavaScriptRepository tkJavaScriptRepository; 313 private final TkJavaScriptRepository tkJavaScriptRepository;
@@ -49,7 +49,6 @@ import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_center.T @@ -49,7 +49,6 @@ import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_center.T
49 import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_content.TkConfigurationContentEdgeEventFetcher; 49 import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_content.TkConfigurationContentEdgeEventFetcher;
50 import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_content_node.TkConfigurationContentNodeEdgeEventFetcher; 50 import org.thingsboard.server.service.edge.rpc.yunteng.tk_configuration_content_node.TkConfigurationContentNodeEdgeEventFetcher;
51 import org.thingsboard.server.service.edge.rpc.yunteng.tk_device_profile_category.TkDeviceProfileCategoryEdgeEventFetcher; 51 import org.thingsboard.server.service.edge.rpc.yunteng.tk_device_profile_category.TkDeviceProfileCategoryEdgeEventFetcher;
52 -import org.thingsboard.server.service.edge.rpc.yunteng.tk_device_state_log.TkDeviceStateLogEdgeEventFetcher;  
53 import org.thingsboard.server.service.edge.rpc.yunteng.tk_java_script.TkJavaScriptEdgeEventFetcher; 52 import org.thingsboard.server.service.edge.rpc.yunteng.tk_java_script.TkJavaScriptEdgeEventFetcher;
54 import org.thingsboard.server.service.edge.rpc.yunteng.tk_message_config.MessageConfigEdgeEventFetcher; 53 import org.thingsboard.server.service.edge.rpc.yunteng.tk_message_config.MessageConfigEdgeEventFetcher;
55 import org.thingsboard.server.service.edge.rpc.yunteng.tk_message_template.TkMessageTemplateEdgeEventFetcher; 54 import org.thingsboard.server.service.edge.rpc.yunteng.tk_message_template.TkMessageTemplateEdgeEventFetcher;
@@ -83,7 +82,6 @@ public class EdgeSyncCursor { @@ -83,7 +82,6 @@ public class EdgeSyncCursor {
83 } 82 }
84 //如果点击同步才会触发 83 //如果点击同步才会触发
85 //thingsKit 84 //thingsKit
86 - fetchers.add(new TkDeviceStateLogEdgeEventFetcher(ctx.getTkDeviceStateLogRepository()));  
87 fetchers.add(new SysDictEdgeEventFetcher(ctx.getSysDictRepository()));//数据字典 85 fetchers.add(new SysDictEdgeEventFetcher(ctx.getSysDictRepository()));//数据字典
88 fetchers.add(new TkThingsModelEdgeEventFetcher(ctx.getTkThingsModelRepository()));//物模型 86 fetchers.add(new TkThingsModelEdgeEventFetcher(ctx.getTkThingsModelRepository()));//物模型
89 fetchers.add(new TkDeviceProfileCategoryEdgeEventFetcher(ctx.getTkDeviceProfileCategoryRepository()));//产品品类 87 fetchers.add(new TkDeviceProfileCategoryEdgeEventFetcher(ctx.getTkDeviceProfileCategoryRepository()));//产品品类
1 -/**  
2 - * Copyright © 2016-2024 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.service.edge.rpc.yunteng.tk_device_state_log;  
17 -  
18 -import lombok.AllArgsConstructor;  
19 -import lombok.extern.slf4j.Slf4j;  
20 -import org.thingsboard.server.common.data.EdgeUtils;  
21 -import org.thingsboard.server.common.data.edge.Edge;  
22 -import org.thingsboard.server.common.data.edge.EdgeEvent;  
23 -import org.thingsboard.server.common.data.edge.EdgeEventActionType;  
24 -import org.thingsboard.server.common.data.edge.EdgeEventType;  
25 -import org.thingsboard.server.common.data.id.TenantId;  
26 -import org.thingsboard.server.common.data.page.PageData;  
27 -import org.thingsboard.server.common.data.page.PageLink;  
28 -import org.thingsboard.server.common.data.yunteng.sync.TkDeviceStateLog;  
29 -import org.thingsboard.server.service.edge.rpc.fetch.BasePageableEdgeEventFetcher;  
30 -  
31 -@AllArgsConstructor  
32 -@Slf4j  
33 -public class TkDeviceStateLogEdgeEventFetcher extends BasePageableEdgeEventFetcher<TkDeviceStateLog> {  
34 -  
35 - private final TkDeviceStateLogRepository tkDeviceStateLogRepository ;  
36 -  
37 - @Override  
38 - protected PageData<TkDeviceStateLog> fetchPageData(TenantId tenantId, Edge edge, PageLink pageLink) {  
39 - // returns PageData object to be in sync with other fetchers  
40 - return tkDeviceStateLogRepository.selectToEdge(tenantId,edge.getId(),pageLink);  
41 - }  
42 -  
43 - @Override  
44 - public EdgeEvent constructEdgeEvent(TenantId tenantId, Edge edge, TkDeviceStateLog entity) {  
45 - return EdgeUtils.constructEdgeEvent(tenantId, edge.getId(), EdgeEventType.TK_DEVICE_STATE_LOG,  
46 - EdgeEventActionType.UPDATED, entity.getId(), null);  
47 - }  
48 -}  
1 -package org.thingsboard.server.service.edge.rpc.yunteng.tk_device_state_log;  
2 -  
3 -import lombok.AllArgsConstructor;  
4 -import lombok.extern.slf4j.Slf4j;  
5 -import org.springframework.stereotype.Component;  
6 -import org.thingsboard.common.util.JacksonUtil;  
7 -import org.thingsboard.server.common.data.EntityType;  
8 -import org.thingsboard.server.common.data.yunteng.sync.TkDeviceStateLog;  
9 -import org.thingsboard.server.common.data.edge.EdgeEventType;  
10 -import org.thingsboard.server.common.data.id.EdgeId;  
11 -import org.thingsboard.server.common.data.id.TenantId;  
12 -import org.thingsboard.server.common.data.yunteng.id.TkDeviceStateLogId;  
13 -import org.thingsboard.server.common.data.yunteng.id.EntityIdProvider;  
14 -import org.thingsboard.server.gen.edge.v1.TkUpdateMsg;  
15 -import org.thingsboard.server.queue.util.TbCoreComponent;  
16 -import org.thingsboard.server.service.edge.rpc.yunteng.TkEdgeProcessor;  
17 -import org.thingsboard.server.service.edge.rpc.yunteng.TkEdgeProcessorRepository;  
18 -  
19 -import java.util.UUID;  
20 -  
21 -@Slf4j  
22 -@Component  
23 -@AllArgsConstructor  
24 -@TbCoreComponent  
25 -public class TkDeviceStateLogEdgeProcessor extends TkEdgeProcessor<TkDeviceStateLogId, TkDeviceStateLog> {  
26 -  
27 - TkDeviceStateLogRepository tkDeviceStateLogRepository;  
28 -  
29 - @Override  
30 - public EntityType getEntityType() {  
31 - return EntityType.TK_DEVICE_STATE_LOG;  
32 - }  
33 -  
34 - @Override  
35 - public EdgeEventType getEdgeEventType() {  
36 - return EdgeEventType.TK_DEVICE_STATE_LOG;  
37 - }  
38 -  
39 - @Override  
40 - public TkEdgeProcessorRepository<TkDeviceStateLog> getEdgeProcessorRepository() {  
41 - return tkDeviceStateLogRepository;  
42 - }  
43 -  
44 - @Override  
45 - public EntityIdProvider<TkDeviceStateLogId> getEntityIdProvider() {  
46 - return new EntityIdProvider<TkDeviceStateLogId>() {  
47 - @Override  
48 - public TkDeviceStateLogId fromString(String uuid) {  
49 - return TkDeviceStateLogId.fromString(uuid);  
50 - }  
51 -  
52 - @Override  
53 - public TkDeviceStateLogId fromUUID(UUID uuid) {  
54 - return new TkDeviceStateLogId(uuid);  
55 - }  
56 - };  
57 - }  
58 -  
59 - @Override  
60 - public TkDeviceStateLog constructEntityFromUpdateMsg(TenantId tenantId, EdgeId edgeId, TkUpdateMsg tkUpdateMsg) {  
61 - return JacksonUtil.fromString(tkUpdateMsg.getEntity(), TkDeviceStateLog.class, true);  
62 - }  
63 -}  
1 -package org.thingsboard.server.service.edge.rpc.yunteng.tk_device_state_log;  
2 -  
3 -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;  
4 -import com.baomidou.mybatisplus.core.metadata.IPage;  
5 -import com.baomidou.mybatisplus.core.toolkit.Wrappers;  
6 -import com.baomidou.mybatisplus.extension.plugins.pagination.Page;  
7 -import lombok.AllArgsConstructor;  
8 -import lombok.extern.slf4j.Slf4j;  
9 -import org.springframework.beans.BeanUtils;  
10 -import org.springframework.stereotype.Repository;  
11 -import org.thingsboard.server.common.data.yunteng.id.TkDeviceStateLogId;  
12 -import org.thingsboard.server.common.data.yunteng.sync.TkDeviceStateLog;  
13 -import org.thingsboard.server.common.data.id.*;  
14 -import org.thingsboard.server.common.data.page.PageData;  
15 -import org.thingsboard.server.common.data.page.PageLink;  
16 -import org.thingsboard.server.common.data.yunteng.utils.CopyUtils;  
17 -import org.thingsboard.server.dao.yunteng.entities.TkDeviceStateLogEntity;  
18 -import org.thingsboard.server.dao.yunteng.mapper.TkDeviceStateLogMapper;  
19 -import org.thingsboard.server.service.edge.rpc.yunteng.TkEdgeProcessorRepository;  
20 -  
21 -import java.util.List;  
22 -import java.util.UUID;  
23 -import java.util.stream.Collectors;  
24 -  
25 -@Repository  
26 -@AllArgsConstructor  
27 -@Slf4j  
28 -public class TkDeviceStateLogRepository implements TkEdgeProcessorRepository<TkDeviceStateLog> {  
29 - private TkDeviceStateLogMapper tkDeviceStateLogMapper;  
30 - @Override  
31 - public boolean updateFromEdge(TenantId tenantId, EdgeId edgeId, TkDeviceStateLog dto) throws Exception {  
32 - log.info("updateFromEdge {} , {} , {} , {}",tenantId,edgeId,dto.getId().getEntityType(),dto);  
33 -  
34 - TkDeviceStateLogEntity model = tkDeviceStateLogMapper.selectById(dto.getId().getId().toString());  
35 - if (model == null) {  
36 - model = new TkDeviceStateLogEntity();  
37 - CopyUtils.copyProperties(dto, model);  
38 - model.setId(dto.getId().toString());  
39 - model.setTenantId(dto.getTenantId().getId().toString());  
40 - return tkDeviceStateLogMapper.insert(model)>0;  
41 - } else {  
42 - CopyUtils.copyProperties(dto, model);  
43 - model.setId(dto.getId().toString());  
44 - model.setTenantId(dto.getTenantId().getId().toString());  
45 - return tkDeviceStateLogMapper.updateById(model)>0;  
46 - }  
47 - }  
48 -  
49 - @Override  
50 - public boolean deleteFromEdge(TenantId tenantId, EdgeId edgeId, EntityId entityId) throws Exception {  
51 - log.info("deleteFromEdge {} , {} , {}",tenantId,edgeId,entityId);  
52 -  
53 - LambdaQueryWrapper<TkDeviceStateLogEntity> queryWrapper = Wrappers.lambdaQuery();  
54 - queryWrapper.eq(TkDeviceStateLogEntity::getTenantId, tenantId.getId().toString());  
55 - queryWrapper.eq(TkDeviceStateLogEntity::getId, entityId.getId().toString());  
56 - return tkDeviceStateLogMapper.delete(queryWrapper)>0;  
57 - }  
58 -  
59 - @Override  
60 - public PageData<TkDeviceStateLog> selectToEdge(TenantId tenantId, EdgeId edgeId, PageLink pageLink) {  
61 - log.info("selectToEdge {} , {} , {}/{}",tenantId,edgeId,pageLink.getPage(),pageLink.getPageSize());  
62 -  
63 - LambdaQueryWrapper<TkDeviceStateLogEntity> queryWrapper = Wrappers.lambdaQuery();  
64 - queryWrapper.eq(TkDeviceStateLogEntity::getTenantId, tenantId.getId().toString());  
65 - Page<TkDeviceStateLogEntity> queryPage = new Page<>(pageLink.getPage(), pageLink.getPageSize());  
66 - IPage<TkDeviceStateLogEntity> resultPage = tkDeviceStateLogMapper.selectPage(queryPage, queryWrapper);  
67 - return new PageData((List) resultPage.getRecords().stream().map(e->{  
68 - return toData(e);  
69 - }).collect(Collectors.toList()), (int) resultPage.getPages(), resultPage.getTotal(), resultPage.getCurrent()<resultPage.getPages());  
70 - }  
71 -  
72 - @Override  
73 - public List<TkDeviceStateLog> selectToEdge(TenantId tenantId, EdgeId edgeId, EntityId entityId) {  
74 - log.info("selectToEdge {} , {} , {}",tenantId,edgeId,entityId);  
75 -  
76 - LambdaQueryWrapper<TkDeviceStateLogEntity> queryWrapper = Wrappers.lambdaQuery();  
77 - queryWrapper.eq(TkDeviceStateLogEntity::getTenantId, tenantId.getId().toString());  
78 - queryWrapper.eq(TkDeviceStateLogEntity::getId, entityId.getId().toString());  
79 - List<TkDeviceStateLogEntity> model= tkDeviceStateLogMapper.selectList(queryWrapper);  
80 - if(model!=null){  
81 - return model.stream().map(e->{return toData(e);}).collect(Collectors.toList());  
82 - }  
83 - else {  
84 - return null;  
85 - }  
86 - }  
87 -  
88 -  
89 - private TkDeviceStateLog toData(TkDeviceStateLogEntity e) {  
90 - TkDeviceStateLog data=new TkDeviceStateLog();  
91 - CopyUtils.copyProperties(e,data);  
92 - data.setId(TkDeviceStateLogId.fromString(e.getId()));  
93 - data.setTenantId(TenantId.fromUUID(UUID.fromString(e.getTenantId())));  
94 - return data;  
95 - }  
96 -}