Commit cd296c8d12d9cba514c80620c836b581aef3a07a

Authored by 张楣扬
1 parent 0a44d560

feat(tax): 添加账套状态验证功能

- 在PipelineDO中新增state字段用于存储账套状态
- 在StateType中添加of方法用于状态值转换
- 在TaxReceiveService中添加租户账套有效性验证逻辑
- 添加ACCOUNTS_IS_NOT_ENABLED错误类型定义
- 移除TenantService中的状态过滤条件以支持所有状态查询
tax-boot/src/main/java/com/diligrp/tax/boot/service/TaxReceiveService.java
... ... @@ -15,6 +15,7 @@ import com.diligrp.tax.central.type.MappingStateType;
15 15 import com.diligrp.tax.central.type.SystemType;
16 16 import com.diligrp.tax.central.type.TaxSystemType;
17 17 import com.diligrp.tax.central.utils.JsonUtils;
  18 +import com.diligrp.tax.storage.type.StateType;
18 19 import jakarta.annotation.Resource;
19 20 import org.springframework.stereotype.Service;
20 21 import org.springframework.transaction.annotation.Transactional;
... ... @@ -60,11 +61,15 @@ public class TaxReceiveService {
60 61 ctx.setPipelineDO(pipelineDO);
61 62 //获取租户id
62 63 ctx.setTenantId(tenantService.getTenantId(ctx.getGroup(), ctx.getEntity()));
  64 + //验证租户账套是否有效
  65 + Optional.of(pipelineDO)
  66 + .filter(p -> StateType.of(p.getState()) == StateType.ENABLE)
  67 + .orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.ACCOUNTS_IS_NOT_ENABLED));
63 68 }
64 69  
65 70 @Transactional
66 71 public void recordMapping(MessageContext messageContext) {
67   - Optional<PipelineMappingDO> dbOptions = taxPipelineMappingService.findByPipelineIdAndDocumentTypeAndSystemDataIdAndPipelineDataId(messageContext.getPipelineDO().getTenantId(), messageContext.getPipelineDO().getId(), messageContext.getDocumentType(), messageContext.getSystemDataId(),messageContext.getPipelineDataId());
  72 + Optional<PipelineMappingDO> dbOptions = taxPipelineMappingService.findByPipelineIdAndDocumentTypeAndSystemDataIdAndPipelineDataId(messageContext.getPipelineDO().getTenantId(), messageContext.getPipelineDO().getId(), messageContext.getDocumentType(), messageContext.getSystemDataId(), messageContext.getPipelineDataId());
68 73 dbOptions.ifPresentOrElse(
69 74 e -> {
70 75 PipelineMappingCreateDO create = new PipelineMappingCreateDO();
... ...
tax-central/src/main/java/com/diligrp/tax/central/model/PipelineDO.java
... ... @@ -20,4 +20,5 @@ public class PipelineDO {
20 20 private String name;
21 21 private String code;
22 22 private Map<String, Object> params;
  23 + private Integer state;
23 24 }
... ...
tax-central/src/main/java/com/diligrp/tax/central/type/TaxSystemType.java
... ... @@ -20,6 +20,7 @@ public enum TaxSystemType {
20 20 NO_MATCHING_SET_OF_ACCOUNTS_FOUND(5008, "未找到匹配账套"),
21 21 NO_TENANT_INFORMATION_FOUND(5009, "未找到匹配账套"),
22 22 PARAMETER_IS_NOT_PARSED_CORRECTLY(5010, "参数解析不正确"),
  23 + ACCOUNTS_IS_NOT_ENABLED(5011, "账套未启用"),
23 24 ;
24 25 public final int code;
25 26 public final String message;
... ...
tax-storage/src/main/java/com/diligrp/tax/storage/service/TenantService.java
... ... @@ -87,7 +87,6 @@ public class TenantService implements ITenantService {
87 87 LambdaQueryWrapper<Pipeline> queryWrapper = new LambdaQueryWrapper<>();
88 88 queryWrapper.eq(Pipeline::getCode, pipelineCode);
89 89 queryWrapper.eq(Pipeline::getTenantId, tenantId);
90   - queryWrapper.eq(Pipeline::getState, StateType.ENABLE.value);
91 90 return Optional.ofNullable(pipelineRepository.selectOne(queryWrapper)).map(taxPipeline -> {
92 91 PipelineDO pipelineDO = JsonUtils.convertValue(taxPipeline, PipelineDO.class);
93 92 pipelineDO.setSystemTypeEnum(SystemType.from(taxPipeline.getSystemType()));
... ...
tax-storage/src/main/java/com/diligrp/tax/storage/type/StateType.java
... ... @@ -8,4 +8,13 @@ public enum StateType {
8 8 StateType(int value) {
9 9 this.value = value;
10 10 }
  11 +
  12 + public static StateType of(int value) {
  13 + for (StateType stateType : values()) {
  14 + if (stateType.value == value) {
  15 + return stateType;
  16 + }
  17 + }
  18 + throw new IllegalArgumentException("Invalid value: " + value);
  19 + }
11 20 }
... ...