Commit 8f99bf48220d257124be14c2b4c14293558038d7

Authored by zhangmeiyang
1 parent 93a3cc03

refactor(mapping): 调整管道映射查询方法参数

- 修改 findByPipelineIdAndDocumentTypeAndSystemDataId 方法签名,移除 pipelineDataId 参数
- 新增 findByPipelineIdAndDocumentTypeAndSystemDataIdAndPipelineDataId 方法用于精确查询
- 更新接口和实现类中的方法定义与调用
- 补充数据库查询语句和 XML 配置文件的对应修改
- 在 TaxReceiveService 中使用新的精确查询方法替换原有调用
- 设置默认状态为 SYNCED 以确保数据一致性
tax-boot/src/main/java/com/diligrp/tax/boot/service/TaxReceiveService.java
@@ -62,7 +62,7 @@ public class TaxReceiveService { @@ -62,7 +62,7 @@ public class TaxReceiveService {
62 62
63 @Transactional 63 @Transactional
64 public void recordMapping(MessageContext messageContext) { 64 public void recordMapping(MessageContext messageContext) {
65 - Optional<TenantTaxPipelineMapping> dbOptions = taxPipelineMappingService.findByPipelineIdAndDocumentTypeAndSystemDataId(messageContext.getTenantPipeline().getTenantId(), messageContext.getTenantPipeline().getId(), messageContext.getDocumentType(), messageContext.getSystemDataId(),messageContext.getPipelineDataId()); 65 + Optional<TenantTaxPipelineMapping> dbOptions = taxPipelineMappingService.findByPipelineIdAndDocumentTypeAndSystemDataIdAndPipelineDataId(messageContext.getTenantPipeline().getTenantId(), messageContext.getTenantPipeline().getId(), messageContext.getDocumentType(), messageContext.getSystemDataId(),messageContext.getPipelineDataId());
66 dbOptions.ifPresentOrElse( 66 dbOptions.ifPresentOrElse(
67 e -> { 67 e -> {
68 TaxPipelineMappingCreate create = new TaxPipelineMappingCreate(); 68 TaxPipelineMappingCreate create = new TaxPipelineMappingCreate();
tax-central/src/main/java/com/diligrp/tax/central/service/ITaxPipelineMappingService.java
@@ -17,7 +17,19 @@ public interface ITaxPipelineMappingService { @@ -17,7 +17,19 @@ public interface ITaxPipelineMappingService {
17 * @param pipelineDataId 17 * @param pipelineDataId
18 * @return {@link Optional }<{@link TenantTaxPipelineMapping }> 18 * @return {@link Optional }<{@link TenantTaxPipelineMapping }>
19 */ 19 */
20 - Optional<TenantTaxPipelineMapping> findByPipelineIdAndDocumentTypeAndSystemDataId(Long tenantId, Long pipelineId, String documentType, String systemDataId, String pipelineDataId); 20 + Optional<TenantTaxPipelineMapping> findByPipelineIdAndDocumentTypeAndSystemDataIdAndPipelineDataId(Long tenantId, Long pipelineId, String documentType, String systemDataId, String pipelineDataId);
  21 +
  22 +
  23 + /**
  24 + * 按管道 ID 和文档类型以及系统数据 ID 查找
  25 + *
  26 + * @param tenantId 租户 ID
  27 + * @param pipelineId 管道 ID
  28 + * @param documentType 文档类型
  29 + * @param systemDataId 系统数据 ID
  30 + * @return {@link Optional }<{@link TenantTaxPipelineMapping }>
  31 + */
  32 + Optional<TenantTaxPipelineMapping> findByPipelineIdAndDocumentTypeAndSystemDataId(Long tenantId, Long pipelineId, String documentType, String systemDataId);
21 33
22 /** 34 /**
23 * 插入 35 * 插入
tax-doc/src/main/java/com/diligrp/tax/doc/demarcate/kingdee/CustomerBuilder.java
@@ -52,7 +52,7 @@ public class CustomerBuilder extends Builder&lt;StandardCustomer&gt; { @@ -52,7 +52,7 @@ public class CustomerBuilder extends Builder&lt;StandardCustomer&gt; {
52 List<TenantPipelineConfig> list = taxTenantService.listByPipelineIdAndDocumentType(pipeline.getId(), markDocument().value); 52 List<TenantPipelineConfig> list = taxTenantService.listByPipelineIdAndDocumentType(pipeline.getId(), markDocument().value);
53 Optional.ofNullable(list).ifPresent(ts -> configureDefaultData(customer, ts)); 53 Optional.ofNullable(list).ifPresent(ts -> configureDefaultData(customer, ts));
54 //查询数据库的客户信息 如果存在 赋值id 54 //查询数据库的客户信息 如果存在 赋值id
55 - Optional<TenantTaxPipelineMapping> dbOptions = taxPipelineMappingService.findByPipelineIdAndDocumentTypeAndSystemDataId(pipeline.getTenantId(), pipeline.getId(), markDocument().value, systemDataId, messageContext.getPipelineDataId()); 55 + Optional<TenantTaxPipelineMapping> dbOptions = taxPipelineMappingService.findByPipelineIdAndDocumentTypeAndSystemDataId(pipeline.getTenantId(), pipeline.getId(), markDocument().value, systemDataId);
56 dbOptions.ifPresent(e -> { 56 dbOptions.ifPresent(e -> {
57 customer.setCustomerId(e.getPipelineDataId()); 57 customer.setCustomerId(e.getPipelineDataId());
58 customer.setSystemDataId(e.getSystemDataId()); 58 customer.setSystemDataId(e.getSystemDataId());
tax-storage/src/main/java/com/diligrp/tax/storage/repo/TaxPipelineMappingRepository.java
@@ -44,6 +44,15 @@ public interface TaxPipelineMappingRepository { @@ -44,6 +44,15 @@ public interface TaxPipelineMappingRepository {
44 Optional<TenantTaxPipelineMapping> findByPipelineIdAndDocumentTypeAndSystemDataId(TaxPipelineMapping mapping); 44 Optional<TenantTaxPipelineMapping> findByPipelineIdAndDocumentTypeAndSystemDataId(TaxPipelineMapping mapping);
45 45
46 /** 46 /**
  47 + * 通过管道ID、文档类型以及系统数据ID和管道数据ID查找
  48 + *
  49 + * @param taxPipelineMapping 税收管道映射
  50 + * @return {@link Optional }<{@link TenantTaxPipelineMapping }>
  51 + */
  52 + Optional<TenantTaxPipelineMapping> findByPipelineIdAndDocumentTypeAndSystemDataIdAndPipelineDataId(TaxPipelineMapping taxPipelineMapping);
  53 +
  54 +
  55 + /**
47 * 创建租户映射表 56 * 创建租户映射表
48 * 57 *
49 * @param tableName 表名 58 * @param tableName 表名
@@ -63,4 +72,5 @@ public interface TaxPipelineMappingRepository { @@ -63,4 +72,5 @@ public interface TaxPipelineMappingRepository {
63 * @param taxPipelineMapping 税务管道映射 72 * @param taxPipelineMapping 税务管道映射
64 */ 73 */
65 void update(TaxPipelineMapping taxPipelineMapping); 74 void update(TaxPipelineMapping taxPipelineMapping);
  75 +
66 } 76 }
tax-storage/src/main/java/com/diligrp/tax/storage/service/DynamicTaxPipelineMappingService.java
@@ -69,7 +69,7 @@ public class DynamicTaxPipelineMappingService implements ITaxPipelineMappingServ @@ -69,7 +69,7 @@ public class DynamicTaxPipelineMappingService implements ITaxPipelineMappingServ
69 * @return {@link Optional }<{@link TenantTaxPipelineMapping }> 69 * @return {@link Optional }<{@link TenantTaxPipelineMapping }>
70 */ 70 */
71 @Override 71 @Override
72 - public Optional<TenantTaxPipelineMapping> findByPipelineIdAndDocumentTypeAndSystemDataId(Long tenantId, Long pipelineId, String documentType, String systemDataId, String pipelineDataId) { 72 + public Optional<TenantTaxPipelineMapping> findByPipelineIdAndDocumentTypeAndSystemDataIdAndPipelineDataId(Long tenantId, Long pipelineId, String documentType, String systemDataId, String pipelineDataId) {
73 Optional.ofNullable(tenantId).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "租户ID不能为空")); 73 Optional.ofNullable(tenantId).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "租户ID不能为空"));
74 Optional.ofNullable(pipelineId).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "管道ID不能为空")); 74 Optional.ofNullable(pipelineId).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "管道ID不能为空"));
75 Optional.ofNullable(documentType).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "文档类型不能为空")); 75 Optional.ofNullable(documentType).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "文档类型不能为空"));
@@ -82,6 +82,21 @@ public class DynamicTaxPipelineMappingService implements ITaxPipelineMappingServ @@ -82,6 +82,21 @@ public class DynamicTaxPipelineMappingService implements ITaxPipelineMappingServ
82 taxPipelineMapping.setSystemDataId(systemDataId); 82 taxPipelineMapping.setSystemDataId(systemDataId);
83 taxPipelineMapping.setPipelineDataId(pipelineDataId); 83 taxPipelineMapping.setPipelineDataId(pipelineDataId);
84 taxPipelineMapping.setState(MappingStateType.SYNCED.value); 84 taxPipelineMapping.setState(MappingStateType.SYNCED.value);
  85 + return taxPipelineMappingRepository.findByPipelineIdAndDocumentTypeAndSystemDataIdAndPipelineDataId(taxPipelineMapping);
  86 + }
  87 +
  88 + @Override
  89 + public Optional<TenantTaxPipelineMapping> findByPipelineIdAndDocumentTypeAndSystemDataId(Long tenantId, Long pipelineId, String documentType, String systemDataId) {
  90 + Optional.ofNullable(tenantId).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "租户ID不能为空"));
  91 + Optional.ofNullable(pipelineId).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "管道ID不能为空"));
  92 + Optional.ofNullable(documentType).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "文档类型不能为空"));
  93 + Optional.ofNullable(systemDataId).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "系统数据不能为空"));
  94 + TaxPipelineMapping taxPipelineMapping = new TaxPipelineMapping();
  95 + taxPipelineMapping.setTenantId(tenantId);
  96 + taxPipelineMapping.setPipelineId(pipelineId);
  97 + taxPipelineMapping.setDocumentType(documentType);
  98 + taxPipelineMapping.setSystemDataId(systemDataId);
  99 + taxPipelineMapping.setState(MappingStateType.SYNCED.value);
85 return taxPipelineMappingRepository.findByPipelineIdAndDocumentTypeAndSystemDataId(taxPipelineMapping); 100 return taxPipelineMappingRepository.findByPipelineIdAndDocumentTypeAndSystemDataId(taxPipelineMapping);
86 } 101 }
87 102
tax-storage/src/main/resources/com/diligrp/tax/storage/repo/TaxPipelineMappingRepository.xml
@@ -66,6 +66,26 @@ @@ -66,6 +66,26 @@
66 AND pipeline_id = #{pipelineId} 66 AND pipeline_id = #{pipelineId}
67 AND document_type = #{documentType} 67 AND document_type = #{documentType}
68 AND system_data_id = #{systemDataId} 68 AND system_data_id = #{systemDataId}
  69 + </select>
  70 + <select id="findByPipelineIdAndDocumentTypeAndSystemDataIdAndPipelineDataId"
  71 + resultType="com.diligrp.tax.central.model.TenantTaxPipelineMapping">
  72 + SELECT
  73 + id
  74 + , pipeline_id
  75 + , document_type
  76 + , system_data_id
  77 + , pipeline_data_id
  78 + , origin_data
  79 + , state
  80 + , created_Time
  81 + , modified_Time
  82 + FROM
  83 + tax_pipeline_mapping_${tenantId}
  84 + WHERE
  85 + 1 = 1
  86 + AND pipeline_id = #{pipelineId}
  87 + AND document_type = #{documentType}
  88 + AND system_data_id = #{systemDataId}
69 AND pipeline_data_id = #{pipelineDataId} 89 AND pipeline_data_id = #{pipelineDataId}
70 </select> 90 </select>
71 91