Commit 0134403a8966b9d0611adf520d2860fe054547d5

Authored by zhangmeiyang
1 parent a285a3c8

refactor(tax): 调整租户配置加载逻辑与时间类型- 将 TaxPipelineConfig 中的时间类型从 Instant 改为 LocalDateTime

- 移除 TenantPipeline 的 @Builder 注解并调整 tenantPipelineConfigs 类型为 List 结构
- TenantStorageContext 实现 CommandLineRunner 接口以支持启动时加载配置
- 在 TenantTaxService 中补充 systemType 字段的设置逻辑- 添加 log 支持便于调试信息输出
tax-central/src/main/java/com/diligrp/tax/central/context/TenantStorageContext.java
... ... @@ -7,8 +7,10 @@ import com.diligrp.tax.central.service.ITenantTaxService;
7 7 import com.diligrp.tax.central.type.DocumentType;
8 8 import com.diligrp.tax.central.type.SystemType;
9 9 import jakarta.annotation.Resource;
  10 +import lombok.extern.slf4j.Slf4j;
10 11 import org.springframework.beans.factory.DisposableBean;
11 12 import org.springframework.beans.factory.InitializingBean;
  13 +import org.springframework.boot.CommandLineRunner;
12 14 import org.springframework.context.ApplicationEventPublisher;
13 15 import org.springframework.stereotype.Component;
14 16  
... ... @@ -24,8 +26,9 @@ import java.util.stream.Collectors;
24 26 * @CreateTime: 2025-11-06 10:53
25 27 * @Version: todo
26 28 */
  29 +@Slf4j
27 30 @Component
28   -public class TenantStorageContext implements InitializingBean, DisposableBean {
  31 +public class TenantStorageContext implements CommandLineRunner {
29 32  
30 33 @Resource
31 34 private ITenantTaxService tenantTaxService;
... ... @@ -66,17 +69,13 @@ public class TenantStorageContext implements InitializingBean, DisposableBean {
66 69  
67 70 private TenantPipeline loadConfig(TenantPipeline tenantPipeline) {
68 71 List<TenantPipelineConfig> list = tenantTaxService.listByPipelineId(tenantPipeline.getId());
69   - tenantPipeline.setTenantPipelineConfigs(list.stream().collect(Collectors.toMap(k -> DocumentType.from(k.getDocumentType()), v -> v)));
  72 + Map<DocumentType, List<TenantPipelineConfig>> collect = list.stream().collect(Collectors.groupingBy(k -> DocumentType.from(k.getDocumentType()), Collectors.toList()));
  73 + tenantPipeline.setTenantPipelineConfigs(collect);
70 74 return tenantPipeline;
71 75 }
72 76  
73 77 @Override
74   - public void destroy() throws Exception {
75   -
76   - }
77   -
78   - @Override
79   - public void afterPropertiesSet() throws Exception {
  78 + public void run(String... args) throws Exception {
80 79 publisher.publishEvent(new RestoreTenantEvent(this));
81 80 }
82 81 }
... ...
tax-central/src/main/java/com/diligrp/tax/central/model/TenantPipeline.java
... ... @@ -2,10 +2,10 @@ package com.diligrp.tax.central.model;
2 2  
3 3 import com.diligrp.tax.central.type.DocumentType;
4 4 import com.diligrp.tax.central.type.SystemType;
5   -import lombok.Builder;
6 5 import lombok.Getter;
7 6 import lombok.Setter;
8 7  
  8 +import java.util.List;
9 9 import java.util.Map;
10 10  
11 11 /**
... ... @@ -15,7 +15,6 @@ import java.util.Map;
15 15 */
16 16 @Setter
17 17 @Getter
18   -@Builder
19 18 public class TenantPipeline {
20 19 private Long id;
21 20 private Long tenantId;
... ... @@ -23,5 +22,5 @@ public class TenantPipeline {
23 22 private String name;
24 23 private String code;
25 24 private Map<String, Object> params;
26   - private Map<DocumentType, TenantPipelineConfig> tenantPipelineConfigs;
  25 + private Map<DocumentType, List<TenantPipelineConfig>> tenantPipelineConfigs;
27 26 }
... ...
tax-storage/src/main/java/com/diligrp/tax/storage/domain/TaxPipelineConfig.java
... ... @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
7 7 import lombok.Getter;
8 8 import lombok.Setter;
9 9  
10   -import java.time.Instant;
  10 +import java.time.LocalDateTime;
11 11  
12 12 @Getter
13 13 @Setter
... ... @@ -29,9 +29,9 @@ public class TaxPipelineConfig {
29 29 private String configValue;
30 30  
31 31 @TableField(value = "created_time")
32   - private Instant createdTime;
  32 + private LocalDateTime createdTime;
33 33  
34 34 @TableField(value = "modified_time")
35   - private Instant modifiedTime;
  35 + private LocalDateTime modifiedTime;
36 36  
37 37 }
... ...
tax-storage/src/main/java/com/diligrp/tax/storage/service/TenantTaxService.java
... ... @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4 import com.diligrp.tax.central.model.TenantPipeline;
5 5 import com.diligrp.tax.central.model.TenantPipelineConfig;
6 6 import com.diligrp.tax.central.service.ITenantTaxService;
  7 +import com.diligrp.tax.central.type.SystemType;
7 8 import com.diligrp.tax.central.utils.JsonUtils;
8 9 import com.diligrp.tax.storage.domain.TaxPipeline;
9 10 import com.diligrp.tax.storage.domain.TaxPipelineConfig;
... ... @@ -34,7 +35,11 @@ public class TenantTaxService implements ITenantTaxService {
34 35 LambdaQueryWrapper<TaxPipeline> queryWrapper = new LambdaQueryWrapper<>();
35 36 queryWrapper.eq(TaxPipeline::getState, StateType.ENABLE.value);
36 37 List<TaxPipeline> taxPipelines = taxPipelineRepository.selectList(queryWrapper);
37   - return taxPipelines.stream().map(taxPipeline -> JsonUtils.convertValue(taxPipeline, TenantPipeline.class)).toList();
  38 + return taxPipelines.stream().map(taxPipeline -> {
  39 + TenantPipeline pipeline = JsonUtils.convertValue(taxPipeline, TenantPipeline.class);
  40 + pipeline.setSystemType(SystemType.from(taxPipeline.getSystemCode()));
  41 + return pipeline;
  42 + }).toList();
38 43 }
39 44  
40 45 @Override
... ...