Commit e8cc8b30b9d4aa4546f1163f90cc0b96562342a3
1 parent
a5d09a5d
feat(storage): 新增业务流水线配置功能
- 新增业务流水线API接口,支持获取商家信息 - 新增业务流水线请求与响应模型类 - 实现业务流水线服务逻辑,包括参数校验与异常处理 - 扩展业务配置相关实体类及数据访问层- 增加业务扩展信息的增删改查功能 - 完善业务流水线配置重复性校验逻辑 - 提供根据租户ID和编码查询流水线信息方法
Showing
18 changed files
with
677 additions
and
10 deletions
tax-storage/src/main/java/com/diligrp/tax/storage/api/PipelineBusinessApi.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.api; | |
| 2 | + | |
| 3 | +import com.diligrp.tax.storage.api.request.PipelineBusinessRequest; | |
| 4 | +import com.diligrp.tax.storage.api.service.PipelineBusinessService; | |
| 5 | +import com.diligrp.tax.storage.message.Message; | |
| 6 | +import jakarta.annotation.Resource; | |
| 7 | +import org.springframework.web.bind.annotation.RequestBody; | |
| 8 | +import org.springframework.web.bind.annotation.RequestMapping; | |
| 9 | +import org.springframework.web.bind.annotation.RestController; | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * @Author: zhangmeiyang | |
| 13 | + * @CreateTime: 2025-11-13 18:14 | |
| 14 | + * @Version: todo | |
| 15 | + */ | |
| 16 | +@RestController | |
| 17 | +@RequestMapping("remote/tax/pipeline/info") | |
| 18 | +public class PipelineBusinessApi { | |
| 19 | + | |
| 20 | + @Resource | |
| 21 | + private PipelineBusinessService pipelineBusinessService; | |
| 22 | + | |
| 23 | + /** | |
| 24 | + * 获取商家信息 | |
| 25 | + * | |
| 26 | + * @param request 请求 | |
| 27 | + * @return {@link Message }<{@link ? }> | |
| 28 | + */ | |
| 29 | + @RequestMapping("getBusinessInfo") | |
| 30 | + public Message<?> getBusinessInfo(@RequestBody PipelineBusinessRequest request) { | |
| 31 | + return Message.success(pipelineBusinessService.getBusinessInfo(request)); | |
| 32 | + } | |
| 33 | + | |
| 34 | +} | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/api/request/PipelineBusinessRequest.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.api.request; | |
| 2 | + | |
| 3 | +import jakarta.validation.constraints.NotEmpty; | |
| 4 | +import lombok.Data; | |
| 5 | + | |
| 6 | +/** | |
| 7 | + * @Author: zhangmeiyang | |
| 8 | + * @CreateTime: 2025-11-13 18:17 | |
| 9 | + * @Version: todo | |
| 10 | + */ | |
| 11 | +@Data | |
| 12 | +public class PipelineBusinessRequest { | |
| 13 | + @NotEmpty | |
| 14 | + private String group; | |
| 15 | + @NotEmpty | |
| 16 | + private String entity; | |
| 17 | + @NotEmpty | |
| 18 | + private String pipelineCode; | |
| 19 | + @NotEmpty | |
| 20 | + private String systemType; | |
| 21 | + @NotEmpty | |
| 22 | + private String businessCode; | |
| 23 | +} | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/api/response/PipelineBusinessResponse.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.api.response; | |
| 2 | + | |
| 3 | +import com.diligrp.tax.central.type.DocumentType; | |
| 4 | +import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessExtVO; | |
| 5 | +import lombok.Getter; | |
| 6 | +import lombok.Setter; | |
| 7 | + | |
| 8 | +import java.util.List; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * @Author: zhangmeiyang | |
| 12 | + * @CreateTime: 2025-11-13 18:21 | |
| 13 | + * @Version: todo | |
| 14 | + */ | |
| 15 | +@Getter | |
| 16 | +@Setter | |
| 17 | +public class PipelineBusinessResponse { | |
| 18 | + /** | |
| 19 | + * | |
| 20 | + */ | |
| 21 | + private Long id; | |
| 22 | + | |
| 23 | + /** | |
| 24 | + * 账套ID | |
| 25 | + */ | |
| 26 | + private Long pipelineId; | |
| 27 | + | |
| 28 | + /** | |
| 29 | + * 业务代码 | |
| 30 | + */ | |
| 31 | + private String businessCode; | |
| 32 | + | |
| 33 | + /** | |
| 34 | + * 业务名称 | |
| 35 | + */ | |
| 36 | + private String businessName; | |
| 37 | + | |
| 38 | + /** | |
| 39 | + * 配置 | |
| 40 | + */ | |
| 41 | + private List<String> configs; | |
| 42 | + | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * 业务扩展 | |
| 46 | + */ | |
| 47 | + private List<TaxPipelineBusinessExtVO> businessExt; | |
| 48 | +} | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/api/service/PipelineBusinessService.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.api.service; | |
| 2 | + | |
| 3 | +import com.diligrp.tax.central.exception.TaxAgentServiceException; | |
| 4 | +import com.diligrp.tax.central.type.SystemType; | |
| 5 | +import com.diligrp.tax.central.type.TaxSystemType; | |
| 6 | +import com.diligrp.tax.storage.api.request.PipelineBusinessRequest; | |
| 7 | +import com.diligrp.tax.storage.api.response.PipelineBusinessResponse; | |
| 8 | +import com.diligrp.tax.storage.model.vo.TaxPipelineVO; | |
| 9 | +import com.diligrp.tax.storage.model.vo.TaxTenantVO; | |
| 10 | +import com.diligrp.tax.storage.service.TaxPipelineBusinessConfigService; | |
| 11 | +import com.diligrp.tax.storage.service.TaxPipelineService; | |
| 12 | +import com.diligrp.tax.storage.service.TaxTenantService; | |
| 13 | +import jakarta.annotation.Resource; | |
| 14 | +import org.springframework.stereotype.Service; | |
| 15 | + | |
| 16 | +import java.util.Objects; | |
| 17 | +import java.util.Optional; | |
| 18 | + | |
| 19 | +/** | |
| 20 | + * @Author: zhangmeiyang | |
| 21 | + * @CreateTime: 2025-11-13 18:22 | |
| 22 | + * @Version: todo | |
| 23 | + */ | |
| 24 | +@Service | |
| 25 | +public class PipelineBusinessService { | |
| 26 | + | |
| 27 | + @Resource | |
| 28 | + private TaxTenantService taxTenantService; | |
| 29 | + | |
| 30 | + @Resource | |
| 31 | + private TaxPipelineService taxPipelineService; | |
| 32 | + | |
| 33 | + @Resource | |
| 34 | + private TaxPipelineBusinessConfigService taxPipelineBusinessConfigService; | |
| 35 | + | |
| 36 | + public PipelineBusinessResponse getBusinessInfo(PipelineBusinessRequest request) { | |
| 37 | + TaxTenantVO tenant = taxTenantService.getTenant(request.getGroup(), request.getEntity()); | |
| 38 | + TaxPipelineVO taxPipelineVO = taxPipelineService.getByTenantIdAndCode(tenant.getId(), request.getPipelineCode()); | |
| 39 | + Optional.ofNullable(request.getSystemType()).ifPresent(SystemType::validateSystemCode); | |
| 40 | + if (!Objects.equals(SystemType.from(request.getSystemType()), SystemType.from(taxPipelineVO.getSystemCode()))) { | |
| 41 | + throw new TaxAgentServiceException(TaxSystemType.ABNORMAL_PARAMETERS, "系统类型不匹配"); | |
| 42 | + } | |
| 43 | + return taxPipelineBusinessConfigService.getByPipelineIdAndBusinessCode(taxPipelineVO.getId(), request.getBusinessCode()); | |
| 44 | + } | |
| 45 | +} | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/controller/TaxPipelineBusinessConfigController.java
| ... | ... | @@ -4,6 +4,8 @@ import com.diligrp.tax.storage.Valid; |
| 4 | 4 | import com.diligrp.tax.storage.message.Message; |
| 5 | 5 | import com.diligrp.tax.storage.model.co.TaxPipelineBusinessCO; |
| 6 | 6 | import com.diligrp.tax.storage.model.co.TaxPipelineBusinessConfigCO; |
| 7 | +import com.diligrp.tax.storage.model.co.TaxPipelineBusinessExtCO; | |
| 8 | +import com.diligrp.tax.storage.model.co.TaxPipelineBusinessExtDefaultDataCO; | |
| 7 | 9 | import com.diligrp.tax.storage.service.TaxPipelineBusinessConfigService; |
| 8 | 10 | import jakarta.annotation.Resource; |
| 9 | 11 | import org.springframework.validation.annotation.Validated; |
| ... | ... | @@ -83,4 +85,64 @@ public class TaxPipelineBusinessConfigController { |
| 83 | 85 | taxPipelineBusinessConfigService.saveBusinessDocument(co); |
| 84 | 86 | return Message.success(); |
| 85 | 87 | } |
| 88 | + | |
| 89 | + /** | |
| 90 | + * 保存业务扩展信息 | |
| 91 | + * | |
| 92 | + * @param co 公司 | |
| 93 | + * @return {@link Message }<{@link ? }> | |
| 94 | + */ | |
| 95 | + @RequestMapping("/ext/saveBusinessExt") | |
| 96 | + public Message<?> saveBusinessExt(@RequestBody @Validated(value = Valid.Create.class) TaxPipelineBusinessExtCO co) { | |
| 97 | + taxPipelineBusinessConfigService.saveBusinessExt(co); | |
| 98 | + return Message.success(); | |
| 99 | + } | |
| 100 | + | |
| 101 | + /** | |
| 102 | + * 设置业务分机数据 | |
| 103 | + * | |
| 104 | + * @param co 公司 | |
| 105 | + * @return {@link Message }<{@link ? }> | |
| 106 | + */ | |
| 107 | + @RequestMapping("/ext/updateBusinessExt") | |
| 108 | + public Message<?> setBusinessExtData(@RequestBody @Validated(value = Valid.Update.class) TaxPipelineBusinessExtCO co) { | |
| 109 | + taxPipelineBusinessConfigService.updateBusinessExt(co); | |
| 110 | + return Message.success(); | |
| 111 | + } | |
| 112 | + | |
| 113 | + /** | |
| 114 | + * 设置默认业务扩展数据 | |
| 115 | + * | |
| 116 | + * @param co 公司 | |
| 117 | + * @return {@link Message }<{@link ? }> | |
| 118 | + */ | |
| 119 | + @RequestMapping("/ext/setDefaultBusinessExtData") | |
| 120 | + public Message<?> setDefaultBusinessExtData(@RequestBody @Validated(value = Valid.Update.class) TaxPipelineBusinessExtDefaultDataCO co) { | |
| 121 | + taxPipelineBusinessConfigService.setDefaultBusinessExtData(co); | |
| 122 | + return Message.success(); | |
| 123 | + } | |
| 124 | + | |
| 125 | + /** | |
| 126 | + * 删除业务扩展 | |
| 127 | + * | |
| 128 | + * @param co 公司 | |
| 129 | + * @return {@link Message }<{@link ? }> | |
| 130 | + */ | |
| 131 | + @RequestMapping("/ext/deleteBusinessExt") | |
| 132 | + public Message<?> deleteBusinessExt(@RequestBody @Validated(value = Valid.Update.class) TaxPipelineBusinessExtCO co) { | |
| 133 | + taxPipelineBusinessConfigService.deleteBusinessExt(co); | |
| 134 | + return Message.success(); | |
| 135 | + } | |
| 136 | + | |
| 137 | + /** | |
| 138 | + * 刷新业务分机数据 | |
| 139 | + * | |
| 140 | + * @param co 公司 | |
| 141 | + * @return {@link Message }<{@link ? }> | |
| 142 | + */ | |
| 143 | + @RequestMapping("/ext/refreshBusinessExtData") | |
| 144 | + public Message<?> refreshBusinessExtData(@RequestBody @Validated(value = Valid.Update.class) TaxPipelineBusinessExtCO co) { | |
| 145 | + taxPipelineBusinessConfigService.refreshBusinessExtData(co); | |
| 146 | + return Message.success(); | |
| 147 | + } | |
| 86 | 148 | } | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/domain/TaxPipelineBusinessExt.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.domain; | |
| 2 | + | |
| 3 | +import com.baomidou.mybatisplus.annotation.IdType; | |
| 4 | +import com.baomidou.mybatisplus.annotation.TableField; | |
| 5 | +import com.baomidou.mybatisplus.annotation.TableId; | |
| 6 | +import com.baomidou.mybatisplus.annotation.TableName; | |
| 7 | +import java.time.LocalDateTime; | |
| 8 | +import lombok.Data; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * 账套业务配置 | |
| 12 | + * @TableName tax_pipeline_business_ext | |
| 13 | + */ | |
| 14 | +@TableName(value ="tax_pipeline_business_ext") | |
| 15 | +@Data | |
| 16 | +public class TaxPipelineBusinessExt { | |
| 17 | + /** | |
| 18 | + * | |
| 19 | + */ | |
| 20 | + @TableId(type = IdType.AUTO) | |
| 21 | + private Long id; | |
| 22 | + | |
| 23 | + /** | |
| 24 | + * 业务ID | |
| 25 | + */ | |
| 26 | + @TableField(value = "tax_pipeline_business_id") | |
| 27 | + private Long taxPipelineBusinessId; | |
| 28 | + | |
| 29 | + /** | |
| 30 | + * 扩展名字 | |
| 31 | + */ | |
| 32 | + @TableField(value = "ext_name") | |
| 33 | + private String extName; | |
| 34 | + | |
| 35 | + /** | |
| 36 | + * 扩展编码 | |
| 37 | + */ | |
| 38 | + @TableField(value = "ext_code") | |
| 39 | + private String extCode; | |
| 40 | + | |
| 41 | + /** | |
| 42 | + * 扩展默认数据 | |
| 43 | + */ | |
| 44 | + @TableField(value = "ext_default_data") | |
| 45 | + private String extDefaultData; | |
| 46 | + | |
| 47 | + /** | |
| 48 | + * 创建时间 | |
| 49 | + */ | |
| 50 | + @TableField(value = "created_time") | |
| 51 | + private LocalDateTime createdTime; | |
| 52 | + | |
| 53 | + /** | |
| 54 | + * 更新时间 | |
| 55 | + */ | |
| 56 | + @TableField(value = "modified_time") | |
| 57 | + private LocalDateTime modifiedTime; | |
| 58 | +} | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/domain/TaxPipelineBusinessExtData.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.domain; | |
| 2 | + | |
| 3 | +import com.baomidou.mybatisplus.annotation.IdType; | |
| 4 | +import com.baomidou.mybatisplus.annotation.TableField; | |
| 5 | +import com.baomidou.mybatisplus.annotation.TableId; | |
| 6 | +import com.baomidou.mybatisplus.annotation.TableName; | |
| 7 | +import lombok.Data; | |
| 8 | + | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * 账套业务扩展数据 | |
| 13 | + * | |
| 14 | + * @TableName tax_pipeline_business_ext_data | |
| 15 | + */ | |
| 16 | +@TableName(value = "tax_pipeline_business_ext_data") | |
| 17 | +@Data | |
| 18 | +public class TaxPipelineBusinessExtData { | |
| 19 | + /** | |
| 20 | + * | |
| 21 | + */ | |
| 22 | + @TableId(type = IdType.AUTO) | |
| 23 | + private Long id; | |
| 24 | + | |
| 25 | + /** | |
| 26 | + * 业务扩展表ID | |
| 27 | + */ | |
| 28 | + @TableField(value = "tax_pipeline_business_ext_id") | |
| 29 | + private Long taxPipelineBusinessExtId; | |
| 30 | + | |
| 31 | + /** | |
| 32 | + * 扩展数据 | |
| 33 | + */ | |
| 34 | + @TableField(value = "ext_data") | |
| 35 | + private String extData; | |
| 36 | + | |
| 37 | + /** | |
| 38 | + * 创建时间 | |
| 39 | + */ | |
| 40 | + @TableField(value = "created_time") | |
| 41 | + private LocalDateTime createdTime; | |
| 42 | + | |
| 43 | + /** | |
| 44 | + * 更新时间 | |
| 45 | + */ | |
| 46 | + @TableField(value = "modified_time") | |
| 47 | + private LocalDateTime modifiedTime; | |
| 48 | +} | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/model/co/TaxPipelineBusinessCO.java
| ... | ... | @@ -4,14 +4,16 @@ import com.diligrp.tax.storage.Valid; |
| 4 | 4 | import com.diligrp.tax.storage.message.PageQuery; |
| 5 | 5 | import jakarta.validation.constraints.NotEmpty; |
| 6 | 6 | import jakarta.validation.constraints.NotNull; |
| 7 | -import lombok.Data; | |
| 7 | +import lombok.Getter; | |
| 8 | +import lombok.Setter; | |
| 8 | 9 | |
| 9 | 10 | /** |
| 10 | 11 | * 账套业务配置 |
| 11 | 12 | * |
| 12 | 13 | * @TableName tax_pipeline_business |
| 13 | 14 | */ |
| 14 | -@Data | |
| 15 | +@Getter | |
| 16 | +@Setter | |
| 15 | 17 | public class TaxPipelineBusinessCO extends PageQuery { |
| 16 | 18 | /** |
| 17 | 19 | * |
| ... | ... | @@ -22,7 +24,7 @@ public class TaxPipelineBusinessCO extends PageQuery { |
| 22 | 24 | /** |
| 23 | 25 | * 账套ID |
| 24 | 26 | */ |
| 25 | - @NotNull(groups = {Valid.Read.class}) | |
| 27 | + @NotNull(groups = {Valid.Create.class, Valid.Update.class, Valid.Read.class}) | |
| 26 | 28 | private Long pipelineId; |
| 27 | 29 | |
| 28 | 30 | /** | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/model/co/TaxPipelineBusinessConfigCO.java
| ... | ... | @@ -3,7 +3,8 @@ package com.diligrp.tax.storage.model.co; |
| 3 | 3 | import com.diligrp.tax.storage.Valid; |
| 4 | 4 | import jakarta.validation.constraints.NotEmpty; |
| 5 | 5 | import jakarta.validation.constraints.NotNull; |
| 6 | -import lombok.Data; | |
| 6 | +import lombok.Getter; | |
| 7 | +import lombok.Setter; | |
| 7 | 8 | |
| 8 | 9 | import java.util.List; |
| 9 | 10 | |
| ... | ... | @@ -12,7 +13,8 @@ import java.util.List; |
| 12 | 13 | * |
| 13 | 14 | * @TableName tax_pipeline_business_config |
| 14 | 15 | */ |
| 15 | -@Data | |
| 16 | +@Getter | |
| 17 | +@Setter | |
| 16 | 18 | public class TaxPipelineBusinessConfigCO { |
| 17 | 19 | /** |
| 18 | 20 | * | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/model/co/TaxPipelineBusinessExtCO.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.model.co; | |
| 2 | + | |
| 3 | +import com.diligrp.tax.storage.Valid; | |
| 4 | +import jakarta.validation.constraints.NotEmpty; | |
| 5 | +import jakarta.validation.constraints.NotNull; | |
| 6 | +import lombok.Getter; | |
| 7 | +import lombok.Setter; | |
| 8 | + | |
| 9 | +import java.util.List; | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * @Author: zhangmeiyang | |
| 13 | + * @CreateTime: 2025-11-13 17:50 | |
| 14 | + * @Version: todo | |
| 15 | + */ | |
| 16 | +@Getter | |
| 17 | +@Setter | |
| 18 | +public class TaxPipelineBusinessExtCO { | |
| 19 | + | |
| 20 | + @NotNull(groups = {Valid.Update.class}) | |
| 21 | + private Long id; | |
| 22 | + /** | |
| 23 | + * 业务ID | |
| 24 | + */ | |
| 25 | + @NotNull(groups = {Valid.Create.class, Valid.Update.class}) | |
| 26 | + private Long taxPipelineBusinessId; | |
| 27 | + | |
| 28 | + /** | |
| 29 | + * 扩展名字 | |
| 30 | + */ | |
| 31 | + @NotEmpty(groups = {Valid.Create.class}) | |
| 32 | + private String extName; | |
| 33 | + | |
| 34 | + /** | |
| 35 | + * 扩展编码 | |
| 36 | + */ | |
| 37 | + @NotEmpty(groups = {Valid.Create.class}) | |
| 38 | + private String extCode; | |
| 39 | + | |
| 40 | + /** | |
| 41 | + * 扩展可选数据 | |
| 42 | + */ | |
| 43 | + @NotEmpty(groups = {Valid.Create.class, Valid.Update.class}) | |
| 44 | + private List<String> extDatas; | |
| 45 | +} | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/model/co/TaxPipelineBusinessExtDefaultDataCO.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.model.co; | |
| 2 | + | |
| 3 | +import jakarta.validation.constraints.NotEmpty; | |
| 4 | +import jakarta.validation.constraints.NotNull; | |
| 5 | +import lombok.Getter; | |
| 6 | +import lombok.Setter; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * @Author: zhangmeiyang | |
| 10 | + * @CreateTime: 2025-11-13 17:50 | |
| 11 | + * @Version: todo | |
| 12 | + */ | |
| 13 | +@Getter | |
| 14 | +@Setter | |
| 15 | +public class TaxPipelineBusinessExtDefaultDataCO { | |
| 16 | + | |
| 17 | + /** | |
| 18 | + * id | |
| 19 | + */ | |
| 20 | + @NotNull | |
| 21 | + private Long id; | |
| 22 | + /** | |
| 23 | + * 业务ID | |
| 24 | + */ | |
| 25 | + @NotNull | |
| 26 | + private Long taxPipelineBusinessId; | |
| 27 | + | |
| 28 | + /** | |
| 29 | + * 扩展默认数据 | |
| 30 | + */ | |
| 31 | + @NotEmpty | |
| 32 | + private String extDefaultData; | |
| 33 | +} | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/model/vo/TaxPipelineBusinessConfigVO.java
tax-storage/src/main/java/com/diligrp/tax/storage/model/vo/TaxPipelineBusinessExtVO.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.model.vo; | |
| 2 | + | |
| 3 | +import lombok.Getter; | |
| 4 | +import lombok.Setter; | |
| 5 | + | |
| 6 | +/** | |
| 7 | + * 账套业务配置 | |
| 8 | + * | |
| 9 | + * @TableName tax_pipeline_business_ext | |
| 10 | + */ | |
| 11 | +@Getter | |
| 12 | +@Setter | |
| 13 | +public class TaxPipelineBusinessExtVO { | |
| 14 | + /** | |
| 15 | + * | |
| 16 | + */ | |
| 17 | + private Long id; | |
| 18 | + | |
| 19 | + /** | |
| 20 | + * 业务ID | |
| 21 | + */ | |
| 22 | + private Long taxPipelineBusinessId; | |
| 23 | + | |
| 24 | + /** | |
| 25 | + * 扩展名字 | |
| 26 | + */ | |
| 27 | + private String extName; | |
| 28 | + | |
| 29 | + /** | |
| 30 | + * 扩展编码 | |
| 31 | + */ | |
| 32 | + private String extCode; | |
| 33 | + | |
| 34 | + /** | |
| 35 | + * 扩展默认数据 | |
| 36 | + */ | |
| 37 | + private String extDefaultData; | |
| 38 | +} | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/model/vo/TaxPipelineBusinessVO.java
| 1 | 1 | package com.diligrp.tax.storage.model.vo; |
| 2 | 2 | |
| 3 | -import lombok.Data; | |
| 3 | +import lombok.Getter; | |
| 4 | +import lombok.Setter; | |
| 4 | 5 | |
| 5 | 6 | import java.time.LocalDateTime; |
| 6 | 7 | import java.util.List; |
| ... | ... | @@ -10,7 +11,8 @@ import java.util.List; |
| 10 | 11 | * |
| 11 | 12 | * @TableName tax_pipeline_business |
| 12 | 13 | */ |
| 13 | -@Data | |
| 14 | +@Getter | |
| 15 | +@Setter | |
| 14 | 16 | public class TaxPipelineBusinessVO { |
| 15 | 17 | /** |
| 16 | 18 | * | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/repo/TaxPipelineBusinessExtDataRepository.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.repo; | |
| 2 | + | |
| 3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
| 4 | +import com.diligrp.tax.storage.domain.TaxPipelineBusinessExtData; | |
| 5 | +import org.springframework.stereotype.Repository; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * @author dili | |
| 9 | + * @description 针对表【tax_pipeline_business_ext(账套业务配置)】的数据库操作Mapper | |
| 10 | + * @createDate 2025-11-13 17:38:05 | |
| 11 | + * @Entity com.diligrp.tax.storage.domain.TaxPipelineBusinessExt | |
| 12 | + */ | |
| 13 | +@Repository | |
| 14 | +public interface TaxPipelineBusinessExtDataRepository extends BaseMapper<TaxPipelineBusinessExtData> { | |
| 15 | + | |
| 16 | +} | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/repo/TaxPipelineBusinessExtRepository.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.repo; | |
| 2 | + | |
| 3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
| 4 | +import com.diligrp.tax.storage.domain.TaxPipelineBusinessExt; | |
| 5 | +import org.springframework.stereotype.Repository; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * @author dili | |
| 9 | + * @description 针对表【tax_pipeline_business_ext(账套业务配置)】的数据库操作Mapper | |
| 10 | + * @createDate 2025-11-13 17:38:05 | |
| 11 | + * @Entity com.diligrp.tax.storage.domain.TaxPipelineBusinessExt | |
| 12 | + */ | |
| 13 | +@Repository | |
| 14 | +public interface TaxPipelineBusinessExtRepository extends BaseMapper<TaxPipelineBusinessExt> { | |
| 15 | + | |
| 16 | +} | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/service/TaxPipelineBusinessConfigService.java
| ... | ... | @@ -3,21 +3,32 @@ package com.diligrp.tax.storage.service; |
| 3 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 4 | 4 | import com.baomidou.mybatisplus.core.metadata.IPage; |
| 5 | 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| 6 | +import com.diligrp.tax.central.exception.TaxAgentServiceException; | |
| 6 | 7 | import com.diligrp.tax.central.type.DocumentType; |
| 8 | +import com.diligrp.tax.central.type.TaxSystemType; | |
| 7 | 9 | import com.diligrp.tax.central.utils.JsonUtils; |
| 10 | +import com.diligrp.tax.storage.api.response.PipelineBusinessResponse; | |
| 8 | 11 | import com.diligrp.tax.storage.domain.TaxPipelineBusiness; |
| 9 | 12 | import com.diligrp.tax.storage.domain.TaxPipelineBusinessConfig; |
| 13 | +import com.diligrp.tax.storage.domain.TaxPipelineBusinessExt; | |
| 14 | +import com.diligrp.tax.storage.domain.TaxPipelineBusinessExtData; | |
| 10 | 15 | import com.diligrp.tax.storage.model.co.TaxPipelineBusinessCO; |
| 11 | 16 | import com.diligrp.tax.storage.model.co.TaxPipelineBusinessConfigCO; |
| 17 | +import com.diligrp.tax.storage.model.co.TaxPipelineBusinessExtCO; | |
| 18 | +import com.diligrp.tax.storage.model.co.TaxPipelineBusinessExtDefaultDataCO; | |
| 12 | 19 | import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessConfigVO; |
| 20 | +import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessExtVO; | |
| 13 | 21 | import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessVO; |
| 14 | 22 | import com.diligrp.tax.storage.repo.TaxPipelineBusinessConfigRepository; |
| 23 | +import com.diligrp.tax.storage.repo.TaxPipelineBusinessExtDataRepository; | |
| 24 | +import com.diligrp.tax.storage.repo.TaxPipelineBusinessExtRepository; | |
| 15 | 25 | import com.diligrp.tax.storage.repo.TaxPipelineBusinessRepository; |
| 16 | 26 | import jakarta.annotation.Resource; |
| 17 | 27 | import org.springframework.stereotype.Service; |
| 18 | 28 | import org.springframework.transaction.annotation.Transactional; |
| 19 | 29 | |
| 20 | 30 | import java.util.List; |
| 31 | +import java.util.Optional; | |
| 21 | 32 | |
| 22 | 33 | /** |
| 23 | 34 | * @Author: zhangmeiyang |
| ... | ... | @@ -33,6 +44,12 @@ public class TaxPipelineBusinessConfigService { |
| 33 | 44 | @Resource |
| 34 | 45 | private TaxPipelineBusinessRepository taxPipelineBusinessRepository; |
| 35 | 46 | |
| 47 | + @Resource | |
| 48 | + private TaxPipelineBusinessExtRepository taxPipelineBusinessExtRepository; | |
| 49 | + | |
| 50 | + @Resource | |
| 51 | + private TaxPipelineBusinessExtDataRepository taxPipelineBusinessExtDataRepository; | |
| 52 | + | |
| 36 | 53 | /** |
| 37 | 54 | * 保存业务类型 |
| 38 | 55 | * |
| ... | ... | @@ -40,6 +57,12 @@ public class TaxPipelineBusinessConfigService { |
| 40 | 57 | */ |
| 41 | 58 | @Transactional |
| 42 | 59 | public void saveBusiness(TaxPipelineBusinessCO co) { |
| 60 | + LambdaQueryWrapper<TaxPipelineBusiness> queryWrapper = new LambdaQueryWrapper<>(); | |
| 61 | + queryWrapper.eq(TaxPipelineBusiness::getPipelineId, co.getPipelineId()); | |
| 62 | + queryWrapper.eq(TaxPipelineBusiness::getBusinessCode, co.getBusinessCode()); | |
| 63 | + Optional.ofNullable(taxPipelineBusinessRepository.selectOne(queryWrapper)).ifPresent(taxPipelineBusiness -> { | |
| 64 | + throw new TaxAgentServiceException(TaxSystemType.ABNORMAL_PARAMETERS, "业务编码重复"); | |
| 65 | + }); | |
| 43 | 66 | taxPipelineBusinessRepository.insert(JsonUtils.convertValue(co, TaxPipelineBusiness.class)); |
| 44 | 67 | } |
| 45 | 68 | |
| ... | ... | @@ -50,6 +73,12 @@ public class TaxPipelineBusinessConfigService { |
| 50 | 73 | */ |
| 51 | 74 | @Transactional |
| 52 | 75 | public void updateBusiness(TaxPipelineBusinessCO co) { |
| 76 | + LambdaQueryWrapper<TaxPipelineBusiness> queryWrapper = new LambdaQueryWrapper<>(); | |
| 77 | + queryWrapper.eq(TaxPipelineBusiness::getPipelineId, co.getPipelineId()); | |
| 78 | + queryWrapper.eq(TaxPipelineBusiness::getBusinessCode, co.getBusinessCode()); | |
| 79 | + Optional.ofNullable(taxPipelineBusinessRepository.selectOne(queryWrapper)).ifPresent(taxPipelineBusiness -> { | |
| 80 | + throw new TaxAgentServiceException(TaxSystemType.ABNORMAL_PARAMETERS, "业务编码重复"); | |
| 81 | + }); | |
| 53 | 82 | taxPipelineBusinessRepository.updateById(JsonUtils.convertValue(co, TaxPipelineBusiness.class)); |
| 54 | 83 | } |
| 55 | 84 | |
| ... | ... | @@ -104,4 +133,132 @@ public class TaxPipelineBusinessConfigService { |
| 104 | 133 | taxPipelineBusinessConfigRepository.insert(save); |
| 105 | 134 | }); |
| 106 | 135 | } |
| 136 | + | |
| 137 | + /** | |
| 138 | + * 保存业务文档扩展 | |
| 139 | + * | |
| 140 | + * @param co 公司 | |
| 141 | + */ | |
| 142 | + @Transactional | |
| 143 | + public void saveBusinessExt(TaxPipelineBusinessExtCO co) { | |
| 144 | + LambdaQueryWrapper<TaxPipelineBusinessExt> queryWrapper = new LambdaQueryWrapper<>(); | |
| 145 | + queryWrapper.eq(TaxPipelineBusinessExt::getTaxPipelineBusinessId, co.getTaxPipelineBusinessId()); | |
| 146 | + queryWrapper.eq(TaxPipelineBusinessExt::getExtCode, co.getExtCode()); | |
| 147 | + TaxPipelineBusinessExt taxPipelineBusinessExt1 = taxPipelineBusinessExtRepository.selectOne(queryWrapper); | |
| 148 | + Optional.ofNullable(taxPipelineBusinessExt1).ifPresent(taxPipelineBusinessExt -> { | |
| 149 | + throw new TaxAgentServiceException(TaxSystemType.ABNORMAL_PARAMETERS, "业务扩展编码重复"); | |
| 150 | + }); | |
| 151 | + TaxPipelineBusinessExt taxPipelineBusinessExt = JsonUtils.convertValue(co, TaxPipelineBusinessExt.class); | |
| 152 | + taxPipelineBusinessExtRepository.insert(taxPipelineBusinessExt); | |
| 153 | + Optional.ofNullable(co.getExtDatas()).ifPresent(extDatas -> extDatas.forEach(e -> { | |
| 154 | + var extData = new TaxPipelineBusinessExtData(); | |
| 155 | + extData.setTaxPipelineBusinessExtId(taxPipelineBusinessExt.getId()); | |
| 156 | + extData.setExtData(e); | |
| 157 | + taxPipelineBusinessExtDataRepository.insert(extData); | |
| 158 | + })); | |
| 159 | + } | |
| 160 | + | |
| 161 | + /** | |
| 162 | + * 更新业务扩展 | |
| 163 | + * | |
| 164 | + * @param co 公司 | |
| 165 | + */ | |
| 166 | + @Transactional | |
| 167 | + public void updateBusinessExt(TaxPipelineBusinessExtCO co) { | |
| 168 | + LambdaQueryWrapper<TaxPipelineBusinessExt> queryWrapper = new LambdaQueryWrapper<>(); | |
| 169 | + queryWrapper.eq(TaxPipelineBusinessExt::getTaxPipelineBusinessId, co.getTaxPipelineBusinessId()); | |
| 170 | + queryWrapper.eq(TaxPipelineBusinessExt::getId, co.getId()); | |
| 171 | + TaxPipelineBusinessExt taxPipelineBusinessExt = taxPipelineBusinessExtRepository.selectOne(queryWrapper); | |
| 172 | + Optional.ofNullable(taxPipelineBusinessExt).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "业务扩展信息不存在")); | |
| 173 | + Optional.ofNullable(co.getExtName()).ifPresent(taxPipelineBusinessExt::setExtName); | |
| 174 | + Optional.ofNullable(co.getExtCode()).ifPresent(taxPipelineBusinessExt::setExtCode); | |
| 175 | + taxPipelineBusinessExtRepository.updateById(taxPipelineBusinessExt); | |
| 176 | + } | |
| 177 | + | |
| 178 | + /** | |
| 179 | + * 设置默认业务扩展数据 | |
| 180 | + * | |
| 181 | + * @param co 公司 | |
| 182 | + */ | |
| 183 | + @Transactional | |
| 184 | + public void setDefaultBusinessExtData(TaxPipelineBusinessExtDefaultDataCO co) { | |
| 185 | + LambdaQueryWrapper<TaxPipelineBusinessExt> queryWrapper = new LambdaQueryWrapper<>(); | |
| 186 | + queryWrapper.eq(TaxPipelineBusinessExt::getTaxPipelineBusinessId, co.getTaxPipelineBusinessId()); | |
| 187 | + queryWrapper.eq(TaxPipelineBusinessExt::getId, co.getId()); | |
| 188 | + TaxPipelineBusinessExt taxPipelineBusinessExt = taxPipelineBusinessExtRepository.selectOne(queryWrapper); | |
| 189 | + Optional.ofNullable(taxPipelineBusinessExt).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "业务扩展信息不存在")); | |
| 190 | + taxPipelineBusinessExt.setExtDefaultData(co.getExtDefaultData()); | |
| 191 | + taxPipelineBusinessExtRepository.updateById(taxPipelineBusinessExt); | |
| 192 | + } | |
| 193 | + | |
| 194 | + /** | |
| 195 | + * 删除业务扩展 | |
| 196 | + * | |
| 197 | + * @param co 公司 | |
| 198 | + */ | |
| 199 | + @Transactional | |
| 200 | + public void deleteBusinessExt(TaxPipelineBusinessExtCO co) { | |
| 201 | + LambdaQueryWrapper<TaxPipelineBusinessExt> queryWrapper = new LambdaQueryWrapper<>(); | |
| 202 | + queryWrapper.eq(TaxPipelineBusinessExt::getTaxPipelineBusinessId, co.getTaxPipelineBusinessId()); | |
| 203 | + queryWrapper.eq(TaxPipelineBusinessExt::getId, co.getId()); | |
| 204 | + taxPipelineBusinessExtRepository.delete(queryWrapper); | |
| 205 | + LambdaQueryWrapper<TaxPipelineBusinessExtData> extDataQueryWrapper = new LambdaQueryWrapper<>(); | |
| 206 | + extDataQueryWrapper.eq(TaxPipelineBusinessExtData::getTaxPipelineBusinessExtId, co.getId()); | |
| 207 | + taxPipelineBusinessExtDataRepository.delete(extDataQueryWrapper); | |
| 208 | + } | |
| 209 | + | |
| 210 | + /** | |
| 211 | + * 刷新业务扩展数据 | |
| 212 | + * | |
| 213 | + * @param co 公司 | |
| 214 | + */ | |
| 215 | + @Transactional | |
| 216 | + public void refreshBusinessExtData(TaxPipelineBusinessExtCO co) { | |
| 217 | + LambdaQueryWrapper<TaxPipelineBusinessExt> queryWrapper = new LambdaQueryWrapper<>(); | |
| 218 | + queryWrapper.eq(TaxPipelineBusinessExt::getTaxPipelineBusinessId, co.getTaxPipelineBusinessId()); | |
| 219 | + queryWrapper.eq(TaxPipelineBusinessExt::getId, co.getId()); | |
| 220 | + TaxPipelineBusinessExt taxPipelineBusinessExt = taxPipelineBusinessExtRepository.selectOne(queryWrapper); | |
| 221 | + Optional.ofNullable(taxPipelineBusinessExt).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "业务扩展信息不存在")); | |
| 222 | + LambdaQueryWrapper<TaxPipelineBusinessExtData> extDataQueryWrapper = new LambdaQueryWrapper<>(); | |
| 223 | + extDataQueryWrapper.eq(TaxPipelineBusinessExtData::getTaxPipelineBusinessExtId, co.getId()); | |
| 224 | + taxPipelineBusinessExtDataRepository.delete(extDataQueryWrapper); | |
| 225 | + Optional.ofNullable(co.getExtDatas()).ifPresent(extDatas -> extDatas.forEach(e -> { | |
| 226 | + var extData = new TaxPipelineBusinessExtData(); | |
| 227 | + extData.setTaxPipelineBusinessExtId(co.getId()); | |
| 228 | + extData.setExtData(e); | |
| 229 | + taxPipelineBusinessExtDataRepository.insert(extData); | |
| 230 | + })); | |
| 231 | + } | |
| 232 | + | |
| 233 | + /** | |
| 234 | + * 按管道 ID 和业务代码获取 | |
| 235 | + * | |
| 236 | + * @param pipelineId 管道 ID | |
| 237 | + * @param businessCode 业务代码 | |
| 238 | + * @return {@link PipelineBusinessResponse } | |
| 239 | + */ | |
| 240 | + public PipelineBusinessResponse getByPipelineIdAndBusinessCode(Long pipelineId, String businessCode) { | |
| 241 | + LambdaQueryWrapper<TaxPipelineBusiness> queryWrapper = new LambdaQueryWrapper<>(); | |
| 242 | + queryWrapper.eq(TaxPipelineBusiness::getPipelineId, pipelineId); | |
| 243 | + queryWrapper.eq(TaxPipelineBusiness::getBusinessCode, businessCode); | |
| 244 | + TaxPipelineBusiness taxPipelineBusiness = taxPipelineBusinessRepository.selectOne(queryWrapper); | |
| 245 | + // 查询业务信息 | |
| 246 | + Optional.ofNullable(taxPipelineBusiness).orElseThrow(() -> new TaxAgentServiceException(TaxSystemType.MISSING_BUSINESS_INFORMATION, "业务信息不存在")); | |
| 247 | + LambdaQueryWrapper<TaxPipelineBusinessConfig> queryWrapper1 = new LambdaQueryWrapper<>(); | |
| 248 | + queryWrapper1.eq(TaxPipelineBusinessConfig::getTaxPipelineBusinessId, taxPipelineBusiness.getId()); | |
| 249 | + List<TaxPipelineBusinessConfig> taxPipelineBusinessConfigs = taxPipelineBusinessConfigRepository.selectList(queryWrapper1); | |
| 250 | + // 获取业务配置单据信息 | |
| 251 | + LambdaQueryWrapper<TaxPipelineBusinessExt> queryWrapper2 = new LambdaQueryWrapper<>(); | |
| 252 | + queryWrapper2.eq(TaxPipelineBusinessExt::getTaxPipelineBusinessId, taxPipelineBusiness.getId()); | |
| 253 | + List<TaxPipelineBusinessExt> taxPipelineBusinessExts = taxPipelineBusinessExtRepository.selectList(queryWrapper2); | |
| 254 | + //获取业务扩展信息 | |
| 255 | + PipelineBusinessResponse pipelineBusinessResponse = new PipelineBusinessResponse(); | |
| 256 | + pipelineBusinessResponse.setId(taxPipelineBusiness.getId()); | |
| 257 | + pipelineBusinessResponse.setPipelineId(taxPipelineBusiness.getPipelineId()); | |
| 258 | + pipelineBusinessResponse.setBusinessCode(taxPipelineBusiness.getBusinessCode()); | |
| 259 | + pipelineBusinessResponse.setBusinessName(taxPipelineBusiness.getBusinessName()); | |
| 260 | + pipelineBusinessResponse.setConfigs(taxPipelineBusinessConfigs.stream().map(TaxPipelineBusinessConfig::getDocumentType).toList()); | |
| 261 | + pipelineBusinessResponse.setBusinessExt(taxPipelineBusinessExts.stream().map(item -> JsonUtils.convertValue(item, TaxPipelineBusinessExtVO.class)).toList()); | |
| 262 | + return pipelineBusinessResponse; | |
| 263 | + } | |
| 107 | 264 | } | ... | ... |
tax-storage/src/main/java/com/diligrp/tax/storage/service/TaxPipelineService.java
| ... | ... | @@ -3,6 +3,7 @@ package com.diligrp.tax.storage.service; |
| 3 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 4 | 4 | import com.diligrp.tax.central.exception.TaxAgentServiceException; |
| 5 | 5 | import com.diligrp.tax.central.type.SystemType; |
| 6 | +import com.diligrp.tax.central.type.TaxSystemType; | |
| 6 | 7 | import com.diligrp.tax.central.utils.JsonUtils; |
| 7 | 8 | import com.diligrp.tax.storage.domain.TaxPipeline; |
| 8 | 9 | import com.diligrp.tax.storage.model.co.TaxPipelineCO; |
| ... | ... | @@ -11,6 +12,7 @@ import com.diligrp.tax.storage.model.vo.TaxTenantVO; |
| 11 | 12 | import com.diligrp.tax.storage.repo.TaxPipelineRepository; |
| 12 | 13 | import com.diligrp.tax.storage.type.StateType; |
| 13 | 14 | import jakarta.annotation.Resource; |
| 15 | +import jakarta.validation.constraints.NotEmpty; | |
| 14 | 16 | import org.springframework.stereotype.Service; |
| 15 | 17 | import org.springframework.transaction.annotation.Transactional; |
| 16 | 18 | |
| ... | ... | @@ -40,6 +42,13 @@ public class TaxPipelineService { |
| 40 | 42 | @Transactional |
| 41 | 43 | public void save(TaxPipelineCO taxPipelineCO) { |
| 42 | 44 | TaxTenantVO tenant = taxTenantService.getTenant(taxPipelineCO.getGroup(), taxPipelineCO.getEntity()); |
| 45 | + LambdaQueryWrapper<TaxPipeline> queryWrapper = new LambdaQueryWrapper<>(); | |
| 46 | + queryWrapper.eq(TaxPipeline::getTenantId, tenant.getId()); | |
| 47 | + queryWrapper.eq(TaxPipeline::getCode, taxPipelineCO.getCode()); | |
| 48 | + TaxPipeline taxPipeline1 = taxPipelineRepository.selectOne(queryWrapper); | |
| 49 | + Optional.ofNullable(taxPipeline1).ifPresent(taxPipeline -> { | |
| 50 | + throw new TaxAgentServiceException(TaxSystemType.ABNORMAL_PARAMETERS,"当前账套编码已存在"); | |
| 51 | + }); | |
| 43 | 52 | taxPipelineCO.setTenantId(tenant.getId()); |
| 44 | 53 | SystemType.validateSystemCode(taxPipelineCO.getSystemCode()); |
| 45 | 54 | TaxPipeline taxPipeline = JsonUtils.convertValue(taxPipelineCO, TaxPipeline.class); |
| ... | ... | @@ -48,7 +57,11 @@ public class TaxPipelineService { |
| 48 | 57 | } |
| 49 | 58 | |
| 50 | 59 | |
| 51 | - | |
| 60 | + /** | |
| 61 | + * 更新 | |
| 62 | + * | |
| 63 | + * @param taxPipelineCO 税务管道公司 | |
| 64 | + */ | |
| 52 | 65 | @Transactional |
| 53 | 66 | public void update(TaxPipelineCO taxPipelineCO) { |
| 54 | 67 | SystemType.validateSystemCode(taxPipelineCO.getSystemCode()); |
| ... | ... | @@ -93,4 +106,19 @@ public class TaxPipelineService { |
| 93 | 106 | taxPipeline.setState(stateType.value); |
| 94 | 107 | taxPipelineRepository.updateById(taxPipeline); |
| 95 | 108 | } |
| 109 | + | |
| 110 | + /** | |
| 111 | + * 按租户 ID 和代码获取 | |
| 112 | + * | |
| 113 | + * @param id id | |
| 114 | + * @param pipelineCode 管道代码 | |
| 115 | + * @return {@link TaxPipelineVO } | |
| 116 | + */ | |
| 117 | + public TaxPipelineVO getByTenantIdAndCode(Long id, @NotEmpty String pipelineCode) { | |
| 118 | + LambdaQueryWrapper<TaxPipeline> queryWrapper = new LambdaQueryWrapper<>(); | |
| 119 | + queryWrapper.eq(TaxPipeline::getTenantId, id); | |
| 120 | + queryWrapper.eq(TaxPipeline::getCode, pipelineCode); | |
| 121 | + TaxPipeline taxPipeline = taxPipelineRepository.selectOne(queryWrapper); | |
| 122 | + return JsonUtils.convertValue(taxPipeline, TaxPipelineVO.class); | |
| 123 | + } | |
| 96 | 124 | } | ... | ... |