Browse Source

业务数据同步

dev-V1.10.2-temp
zhuibobo 3 months ago
parent
commit
cb37a26d62
  1. 7
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/businessdatasyn/config/SyncProperties.java
  2. 29
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/businessdatasyn/resolver/RowMergeResolver.java
  3. 10
      zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev-cust-zrb.yml
  4. 13
      zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml
  5. 13
      zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml

7
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/businessdatasyn/config/SyncProperties.java

@ -29,6 +29,13 @@ public class SyncProperties {
*/
private int maxRetry = 5;
/**
* 是否允许同步删除动作(全局总闸,默认 false)
* <p>false 时所有表的 DELETE_V1 / DELETE_V2 动作均降级为 SKIP,
* 防止某侧库被误清空/回档时级联删除对侧数据</p>
*/
private boolean deleteSyncEnabled = false;
/**
* 日志保留天数(默认 30)
*/

29
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/businessdatasyn/resolver/RowMergeResolver.java

@ -1,7 +1,9 @@
package com.zdxt.enforcementcode.businessdatasyn.resolver;
import com.zdxt.enforcementcode.businessdatasyn.config.SyncProperties;
import com.zdxt.enforcementcode.businessdatasyn.config.SyncTableConfig;
import com.zdxt.enforcementcode.businessdatasyn.domain.dto.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -13,8 +15,19 @@ import org.springframework.stereotype.Component;
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class RowMergeResolver {
private final SyncProperties syncProperties;
/**
* 删除同步是否允许(全局总闸 + 表级 deleteMode)
*/
private boolean deleteAllowed(SyncTableConfig config) {
return syncProperties.isDeleteSyncEnabled()
&& !"none".equalsIgnoreCase(config.getDeleteMode());
}
/**
* 解析同步决策
*
@ -45,6 +58,14 @@ public class RowMergeResolver {
if (v2Exists) {
if (ownerSide == OwnerSide.V1) {
// 场景 7:归属方(V1)删除 → 删除对侧(V2)
if (!deleteAllowed(config)) {
log.info("[BizSync] 归属方V1已删除但删除同步被禁用,跳过: {}", config.getConfigKey());
return SyncDecision.builder()
.action(SyncActionEnum.SKIP)
.ownerSide(ownerSide)
.reason("归属方V1已删除,但删除同步被禁用,跳过")
.build();
}
return SyncDecision.builder()
.action(SyncActionEnum.DELETE_V2)
.ownerSide(ownerSide)
@ -70,6 +91,14 @@ public class RowMergeResolver {
if (v1Exists) {
if (ownerSide == OwnerSide.V2) {
// 场景 8:归属方(V2)删除 → 删除对侧(V1)
if (!deleteAllowed(config)) {
log.info("[BizSync] 归属方V2已删除但删除同步被禁用,跳过: {}", config.getConfigKey());
return SyncDecision.builder()
.action(SyncActionEnum.SKIP)
.ownerSide(ownerSide)
.reason("归属方V2已删除,但删除同步被禁用,跳过")
.build();
}
return SyncDecision.builder()
.action(SyncActionEnum.DELETE_V1)
.ownerSide(ownerSide)

10
zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev-cust-zrb.yml

@ -32,16 +32,6 @@ spring:
username: root
password: root
--- # 业务数据双向同步配置
business-data-sync:
# 是否启用同步功能
enabled: true
# 单次扫描批量大小(默认)
scan-batch-size: 1000
# 单行失败最大重试次数(默认)
max-retry: 5
# 日志保留天数
log-retention-days: 30
--- # redis 单机配置(单机与集群只能开启一个另一个需要注释掉)
spring.data:

13
zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml

@ -350,3 +350,16 @@ xss:
excludeUrls:
- /web/enforcementcode/educationServices/add
- /web/enforcementcode/educationServices/edit
--- # 业务数据双向同步配置
business-data-sync:
# 是否启用同步功能
enabled: true
# 是否允许同步删除动作(总闸,false时所有表的删除动作降级为SKIP,防止误清库级联删除)
delete-sync-enabled: false
# 单次扫描批量大小(默认)
scan-batch-size: 1000
# 单行失败最大重试次数(默认)
max-retry: 5
# 日志保留天数
log-retention-days: 30

13
zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml

@ -346,3 +346,16 @@ sms:
#市监代理页面
sjView: http://10.132.108.3/sjWeb
--- # 业务数据双向同步配置
business-data-sync:
# 是否启用同步功能
enabled: true
# 是否允许同步删除动作(总闸,false时所有表的删除动作降级为SKIP,防止误清库级联删除)
delete-sync-enabled: false
# 单次扫描批量大小(默认)
scan-batch-size: 1000
# 单行失败最大重试次数(默认)
max-retry: 5
# 日志保留天数
log-retention-days: 30

Loading…
Cancel
Save