Commit c29bc71d051802511a1d92041203493be35d7ac6

Authored by zhangmeiyang
1 parent fab6c9ab

refactor(storage):重构租户管道配置相关类包结构和依赖关系

- 将 ConnectionIdentity 接口从 storage 包移动到 central 包
- 将 RestoreTenantEvent 和 RestoreTenantEventListener 移动到 central 包并更新引用
-重命名 TaxPipelineConfigVO 为 TenantPipelineConfig 并调整字段注释
- 更新 TenantPipeline 类的包路径和依赖引用
- 引入 ITenantTaxService 接口及其实现类 TenantTaxService
- 调整 TenantStorageContext 中的依赖注入和服务调用方式
- 删除旧的 TaxPipelineService 和 TaxPipelineConfigService 依赖
- 新增 listAllEnablePipeline 和 listByPipelineId 方法实现数据转换逻辑
tax-storage/src/main/java/com/diligrp/tax/storage/context/TenantStorageContext.java renamed to tax-central/src/main/java/com/diligrp/tax/central/context/TenantStorageContext.java
1 -package com.diligrp.tax.storage.context; 1 +package com.diligrp.tax.central.context;
2 2
  3 +import com.diligrp.tax.central.model.TenantPipeline;
  4 +import com.diligrp.tax.central.model.TenantPipelineConfig;
  5 +import com.diligrp.tax.central.service.ITenantTaxService;
3 import com.diligrp.tax.central.type.SystemType; 6 import com.diligrp.tax.central.type.SystemType;
4 -import com.diligrp.tax.storage.model.vo.TaxPipelineVO;  
5 -import com.diligrp.tax.storage.service.TaxPipelineConfigService;  
6 -import com.diligrp.tax.storage.service.TaxPipelineService;  
7 import jakarta.annotation.Resource; 7 import jakarta.annotation.Resource;
8 import org.springframework.stereotype.Component; 8 import org.springframework.stereotype.Component;
9 9
@@ -23,14 +23,11 @@ import java.util.stream.Collectors; @@ -23,14 +23,11 @@ import java.util.stream.Collectors;
23 public class TenantStorageContext { 23 public class TenantStorageContext {
24 24
25 @Resource 25 @Resource
26 - private TaxPipelineService taxPipelineService;  
27 -  
28 - @Resource  
29 - private TaxPipelineConfigService taxPipelineConfigService; 26 + private ITenantTaxService tenantTaxService;
30 27
31 private static final ConcurrentHashMap<Long, Map<SystemType, Map<String, TenantPipeline>>> TENANT_PIPELINE_MAP = new ConcurrentHashMap<>(); 28 private static final ConcurrentHashMap<Long, Map<SystemType, Map<String, TenantPipeline>>> TENANT_PIPELINE_MAP = new ConcurrentHashMap<>();
32 29
33 - public Optional<TenantPipeline> getTenantPipeline(Long tenantId, SystemType systemType, String pipelineCode) { 30 + public static Optional<TenantPipeline> getTenantPipeline(Long tenantId, SystemType systemType, String pipelineCode) {
34 AtomicReference<TenantPipeline> pipeline = new AtomicReference<>(); 31 AtomicReference<TenantPipeline> pipeline = new AtomicReference<>();
35 Map<SystemType, Map<String, TenantPipeline>> tenantPipelineMap = TENANT_PIPELINE_MAP.get(tenantId); 32 Map<SystemType, Map<String, TenantPipeline>> tenantPipelineMap = TENANT_PIPELINE_MAP.get(tenantId);
36 Optional.ofNullable(tenantPipelineMap).ifPresent(map -> { 33 Optional.ofNullable(tenantPipelineMap).ifPresent(map -> {
@@ -44,16 +41,16 @@ public class TenantStorageContext { @@ -44,16 +41,16 @@ public class TenantStorageContext {
44 41
45 42
46 public void loadTenantPipeline() { 43 public void loadTenantPipeline() {
47 - List<TaxPipelineVO> taxPipelineVOS = taxPipelineService.listAllEnablePipeline(); 44 + List<TenantPipeline> taxPipelineVOS = tenantTaxService.listAllEnablePipeline();
48 Optional.ofNullable(taxPipelineVOS).ifPresent(pipelines -> { 45 Optional.ofNullable(taxPipelineVOS).ifPresent(pipelines -> {
49 Map<Long, Map<SystemType, Map<String, TenantPipeline>>> tenantPipelineMap = pipelines.stream() 46 Map<Long, Map<SystemType, Map<String, TenantPipeline>>> tenantPipelineMap = pipelines.stream()
50 .collect(Collectors.groupingBy( 47 .collect(Collectors.groupingBy(
51 - TaxPipelineVO::getTenantId, 48 + TenantPipeline::getTenantId,
52 Collectors.groupingBy( 49 Collectors.groupingBy(
53 - e -> SystemType.from(e.getSystemCode()), 50 + TenantPipeline::getSystemType,
54 Collectors.toMap( 51 Collectors.toMap(
55 - TaxPipelineVO::getCode,  
56 - this::convert, 52 + TenantPipeline::getCode,
  53 + this::loadConfig,
57 (existing, replacement) -> existing 54 (existing, replacement) -> existing
58 ) 55 )
59 ) 56 )
@@ -64,12 +61,9 @@ public class TenantStorageContext { @@ -64,12 +61,9 @@ public class TenantStorageContext {
64 } 61 }
65 62
66 63
67 - private TenantPipeline convert(TaxPipelineVO taxPipelineVO) {  
68 - return TenantPipeline.builder()  
69 - .code(taxPipelineVO.getCode())  
70 - .name(taxPipelineVO.getName())  
71 - .params(taxPipelineVO.getParams())  
72 - .taxPipelineConfigs(taxPipelineConfigService.listByPipelineId(taxPipelineVO.getId()))  
73 - .build(); 64 + private TenantPipeline loadConfig(TenantPipeline tenantPipeline) {
  65 + List<TenantPipelineConfig> list = tenantTaxService.listByPipelineId(tenantPipeline.getId());
  66 + tenantPipeline.setTenantPipelineConfigs(list);
  67 + return tenantPipeline;
74 } 68 }
75 } 69 }
tax-storage/src/main/java/com/diligrp/tax/storage/event/RestoreTenantEvent.java renamed to tax-central/src/main/java/com/diligrp/tax/central/event/RestoreTenantEvent.java
1 -package com.diligrp.tax.storage.event; 1 +package com.diligrp.tax.central.event;
2 2
3 import org.springframework.context.ApplicationEvent; 3 import org.springframework.context.ApplicationEvent;
4 4
tax-storage/src/main/java/com/diligrp/tax/storage/event/RestoreTenantEventListener.java renamed to tax-central/src/main/java/com/diligrp/tax/central/event/RestoreTenantEventListener.java
1 -package com.diligrp.tax.storage.event; 1 +package com.diligrp.tax.central.event;
2 2
3 -import com.diligrp.tax.storage.context.TenantStorageContext; 3 +import com.diligrp.tax.central.context.TenantStorageContext;
4 import jakarta.annotation.Resource; 4 import jakarta.annotation.Resource;
5 import org.springframework.context.event.EventListener; 5 import org.springframework.context.event.EventListener;
6 import org.springframework.stereotype.Component; 6 import org.springframework.stereotype.Component;
tax-storage/src/main/java/com/diligrp/tax/storage/context/ConnectionIdentity.java renamed to tax-central/src/main/java/com/diligrp/tax/central/interfaces/ConnectionIdentity.java
1 -package com.diligrp.tax.storage.context; 1 +package com.diligrp.tax.central.interfaces;
2 2
3 public interface ConnectionIdentity<T> { 3 public interface ConnectionIdentity<T> {
4 4
tax-storage/src/main/java/com/diligrp/tax/storage/context/TenantPipeline.java renamed to tax-central/src/main/java/com/diligrp/tax/central/model/TenantPipeline.java
1 -package com.diligrp.tax.storage.context; 1 +package com.diligrp.tax.central.model;
2 2
  3 +import com.diligrp.tax.central.interfaces.ConnectionIdentity;
  4 +import com.diligrp.tax.central.type.SystemType;
3 import com.diligrp.tax.central.utils.JsonUtils; 5 import com.diligrp.tax.central.utils.JsonUtils;
4 -import com.diligrp.tax.storage.model.vo.TaxPipelineConfigVO;  
5 import com.kingdee.bos.webapi.entity.IdentifyInfo; 6 import com.kingdee.bos.webapi.entity.IdentifyInfo;
6 import lombok.Builder; 7 import lombok.Builder;
7 import lombok.Getter; 8 import lombok.Getter;
@@ -19,10 +20,13 @@ import java.util.Map; @@ -19,10 +20,13 @@ import java.util.Map;
19 @Getter 20 @Getter
20 @Builder 21 @Builder
21 public class TenantPipeline implements ConnectionIdentity<IdentifyInfo> { 22 public class TenantPipeline implements ConnectionIdentity<IdentifyInfo> {
  23 + private Long id;
  24 + private Long tenantId;
  25 + private SystemType systemType;
22 private String name; 26 private String name;
23 private String code; 27 private String code;
24 private Map<String, Object> params; 28 private Map<String, Object> params;
25 - private List<TaxPipelineConfigVO> taxPipelineConfigs; 29 + private List<TenantPipelineConfig> tenantPipelineConfigs;
26 30
27 @Override 31 @Override
28 public IdentifyInfo getIdentity() { 32 public IdentifyInfo getIdentity() {
tax-central/src/main/java/com/diligrp/tax/central/model/TenantPipelineConfig.java 0 → 100644
  1 +package com.diligrp.tax.central.model;
  2 +
  3 +import lombok.Getter;
  4 +import lombok.Setter;
  5 +
  6 +import java.time.LocalDateTime;
  7 +
  8 +/**
  9 + * @Author: zhangmeiyang
  10 + * @CreateTime: 2025-11-06 14:25
  11 + * @Version: todo
  12 + */
  13 +@Getter
  14 +@Setter
  15 +public class TenantPipelineConfig {
  16 + /**
  17 + * id
  18 + */
  19 + private Long id;
  20 + /**
  21 + * 管道 ID
  22 + */
  23 + private Long pipelineId;
  24 + /**
  25 + * 文档类型
  26 + */
  27 + private String documentType;
  28 + /**
  29 + * 配置键
  30 + */
  31 + private String configKey;
  32 + /**
  33 + * 配置值
  34 + */
  35 + private String configValue;
  36 + /**
  37 + * 创建时间
  38 + */
  39 + private LocalDateTime createdTime;
  40 + /**
  41 + * 修改时间
  42 + */
  43 + private LocalDateTime modifiedTime;
  44 +}
tax-central/src/main/java/com/diligrp/tax/central/service/ITenantTaxService.java 0 → 100644
  1 +package com.diligrp.tax.central.service;
  2 +
  3 +import com.diligrp.tax.central.model.TenantPipeline;
  4 +import com.diligrp.tax.central.model.TenantPipelineConfig;
  5 +
  6 +import java.util.List;
  7 +
  8 +/**
  9 + * @Author: zhangmeiyang
  10 + * @CreateTime: 2025-11-06 14:20
  11 + * @Version: todo
  12 + */
  13 +public interface ITenantTaxService {
  14 +
  15 + /**
  16 + * 列出所有启用管道
  17 + *
  18 + * @return {@link List }<{@link TenantPipeline }>
  19 + */
  20 + List<TenantPipeline> listAllEnablePipeline();
  21 +
  22 + /**
  23 + * 按管道 ID 列出
  24 + *
  25 + * @param pipelineId 管道 ID
  26 + * @return {@link List }<{@link TenantPipelineConfig }>
  27 + */
  28 + List<TenantPipelineConfig> listByPipelineId(Long pipelineId);
  29 +}
tax-storage/src/main/java/com/diligrp/tax/storage/model/vo/TaxPipelineConfigVO.java
@@ -9,25 +9,33 @@ import java.time.LocalDateTime; @@ -9,25 +9,33 @@ import java.time.LocalDateTime;
9 @Getter 9 @Getter
10 @Setter 10 @Setter
11 public class TaxPipelineConfigVO { 11 public class TaxPipelineConfigVO {
12 - 12 + /**
  13 + * id
  14 + */
13 private Long id; 15 private Long id;
14 -  
15 - 16 + /**
  17 + * 管道 ID
  18 + */
16 private Long pipelineId; 19 private Long pipelineId;
17 -  
18 - 20 + /**
  21 + * 文档类型
  22 + */
19 private String documentType; 23 private String documentType;
20 -  
21 - 24 + /**
  25 + * 配置键
  26 + */
22 private String configKey; 27 private String configKey;
23 -  
24 - 28 + /**
  29 + * 配置值
  30 + */
25 private String configValue; 31 private String configValue;
26 -  
27 - 32 + /**
  33 + * 创建时间
  34 + */
28 private LocalDateTime createdTime; 35 private LocalDateTime createdTime;
29 -  
30 - 36 + /**
  37 + * 修改时间
  38 + */
31 private LocalDateTime modifiedTime; 39 private LocalDateTime modifiedTime;
32 40
33 } 41 }
tax-storage/src/main/java/com/diligrp/tax/storage/service/TenantTaxService.java 0 → 100644
  1 +package com.diligrp.tax.storage.service;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.diligrp.tax.central.model.TenantPipeline;
  5 +import com.diligrp.tax.central.model.TenantPipelineConfig;
  6 +import com.diligrp.tax.central.service.ITenantTaxService;
  7 +import com.diligrp.tax.central.utils.JsonUtils;
  8 +import com.diligrp.tax.storage.domain.TaxPipeline;
  9 +import com.diligrp.tax.storage.domain.TaxPipelineConfig;
  10 +import com.diligrp.tax.storage.repo.TaxPipelineConfigRepository;
  11 +import com.diligrp.tax.storage.repo.TaxPipelineRepository;
  12 +import com.diligrp.tax.storage.type.StateType;
  13 +import jakarta.annotation.Resource;
  14 +import org.springframework.stereotype.Service;
  15 +
  16 +import java.util.List;
  17 +
  18 +/**
  19 + * @Author: zhangmeiyang
  20 + * @CreateTime: 2025-11-06 14:32
  21 + * @Version: todo
  22 + */
  23 +@Service
  24 +public class TenantTaxService implements ITenantTaxService {
  25 +
  26 + @Resource
  27 + private TaxPipelineRepository taxPipelineRepository;
  28 +
  29 + @Resource
  30 + private TaxPipelineConfigRepository taxPipelineConfigRepository;
  31 +
  32 + @Override
  33 + public List<TenantPipeline> listAllEnablePipeline() {
  34 + LambdaQueryWrapper<TaxPipeline> queryWrapper = new LambdaQueryWrapper<>();
  35 + queryWrapper.eq(TaxPipeline::getState, StateType.ENABLE.value);
  36 + List<TaxPipeline> taxPipelines = taxPipelineRepository.selectList(queryWrapper);
  37 + return taxPipelines.stream().map(taxPipeline -> JsonUtils.convertValue(taxPipeline, TenantPipeline.class)).toList();
  38 + }
  39 +
  40 + @Override
  41 + public List<TenantPipelineConfig> listByPipelineId(Long pipelineId) {
  42 + LambdaQueryWrapper<TaxPipelineConfig> queryWrapper = new LambdaQueryWrapper<>();
  43 + queryWrapper.eq(TaxPipelineConfig::getPipelineId, pipelineId);
  44 + List<TaxPipelineConfig> taxPipelineConfigs = taxPipelineConfigRepository.selectList(queryWrapper);
  45 + return taxPipelineConfigs.stream().map(taxPipelineConfig -> JsonUtils.convertValue(taxPipelineConfig, TenantPipelineConfig.class)).toList();
  46 + }
  47 +}