Commit 68e5cc146e94eff0982cdbc1c1db234843498fa9
1 parent
370056a9
feat(storage): 新增业务关键字配置功能
- 添加批量保存和查询业务关键字接口- 定义业务关键字相关实体类和传输对象 - 实现业务关键字数据访问层逻辑- 更新导入包路径使用通配符简化代码 - 修改单据类型字段为字符串类型以支持更多场景
Showing
6 changed files
with
157 additions
and
37 deletions
tax-storage/src/main/java/com/diligrp/tax/storage/controller/TaxPipelineBusinessConfigController.java
| @@ -2,10 +2,7 @@ package com.diligrp.tax.storage.controller; | @@ -2,10 +2,7 @@ package com.diligrp.tax.storage.controller; | ||
| 2 | 2 | ||
| 3 | import com.diligrp.tax.central.message.Valid; | 3 | import com.diligrp.tax.central.message.Valid; |
| 4 | import com.diligrp.tax.central.message.Message; | 4 | import com.diligrp.tax.central.message.Message; |
| 5 | -import com.diligrp.tax.storage.model.co.TaxPipelineBusinessCO; | ||
| 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; | 5 | +import com.diligrp.tax.storage.model.co.*; |
| 9 | import com.diligrp.tax.storage.service.TaxPipelineBusinessConfigService; | 6 | import com.diligrp.tax.storage.service.TaxPipelineBusinessConfigService; |
| 10 | import jakarta.annotation.Resource; | 7 | import jakarta.annotation.Resource; |
| 11 | import org.springframework.validation.annotation.Validated; | 8 | import org.springframework.validation.annotation.Validated; |
| @@ -14,6 +11,8 @@ import org.springframework.web.bind.annotation.RequestBody; | @@ -14,6 +11,8 @@ import org.springframework.web.bind.annotation.RequestBody; | ||
| 14 | import org.springframework.web.bind.annotation.RequestMapping; | 11 | import org.springframework.web.bind.annotation.RequestMapping; |
| 15 | import org.springframework.web.bind.annotation.RestController; | 12 | import org.springframework.web.bind.annotation.RestController; |
| 16 | 13 | ||
| 14 | +import java.util.List; | ||
| 15 | + | ||
| 17 | /** | 16 | /** |
| 18 | * @Author: zhangmeiyang | 17 | * @Author: zhangmeiyang |
| 19 | * @CreateTime: 2025-11-13 15:12 | 18 | * @CreateTime: 2025-11-13 15:12 |
| @@ -145,4 +144,27 @@ public class TaxPipelineBusinessConfigController { | @@ -145,4 +144,27 @@ public class TaxPipelineBusinessConfigController { | ||
| 145 | taxPipelineBusinessConfigService.refreshBusinessExtData(co); | 144 | taxPipelineBusinessConfigService.refreshBusinessExtData(co); |
| 146 | return Message.success(); | 145 | return Message.success(); |
| 147 | } | 146 | } |
| 147 | + | ||
| 148 | + /** | ||
| 149 | + * 批量保存业务关键字 | ||
| 150 | + * | ||
| 151 | + * @param cos 对象列表 | ||
| 152 | + * @return {@link Message }<{@link ? }> | ||
| 153 | + */ | ||
| 154 | + @RequestMapping("/keyword/batchSaveBusinessKeyword") | ||
| 155 | + public Message<?> batchSaveBusinessKeyword(@RequestBody @Validated(value = Valid.Create.class) List<TaxPipelineBusinessKeywordCO> cos) { | ||
| 156 | + taxPipelineBusinessConfigService.batchSaveBusinessKeyword(cos); | ||
| 157 | + return Message.success(); | ||
| 158 | + } | ||
| 159 | + | ||
| 160 | + /** | ||
| 161 | + * 列表业务关键字 | ||
| 162 | + * | ||
| 163 | + * @param co 公司 | ||
| 164 | + * @return {@link Message }<{@link ? }> | ||
| 165 | + */ | ||
| 166 | + @RequestMapping("/keyword/listBusinessKeyword") | ||
| 167 | + public Message<?> listBusinessKeyword(@RequestBody @Validated(value = Valid.Read.class) TaxPipelineBusinessKeywordCO co) { | ||
| 168 | + return Message.success(taxPipelineBusinessConfigService.listBusinessKeyword(co)); | ||
| 169 | + } | ||
| 148 | } | 170 | } |
tax-storage/src/main/java/com/diligrp/tax/storage/domain/TaxPipelineBusinessKeyword.java
| @@ -5,13 +5,16 @@ import com.baomidou.mybatisplus.annotation.TableField; | @@ -5,13 +5,16 @@ import com.baomidou.mybatisplus.annotation.TableField; | ||
| 5 | import com.baomidou.mybatisplus.annotation.TableId; | 5 | import com.baomidou.mybatisplus.annotation.TableId; |
| 6 | import com.baomidou.mybatisplus.annotation.TableName; | 6 | import com.baomidou.mybatisplus.annotation.TableName; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | +import lombok.Getter; | ||
| 9 | +import lombok.Setter; | ||
| 8 | 10 | ||
| 9 | /** | 11 | /** |
| 10 | * | 12 | * |
| 11 | * @TableName tax_pipeline_business_keyword | 13 | * @TableName tax_pipeline_business_keyword |
| 12 | */ | 14 | */ |
| 13 | @TableName(value ="tax_pipeline_business_keyword") | 15 | @TableName(value ="tax_pipeline_business_keyword") |
| 14 | -@Data | 16 | +@Getter |
| 17 | +@Setter | ||
| 15 | public class TaxPipelineBusinessKeyword { | 18 | public class TaxPipelineBusinessKeyword { |
| 16 | /** | 19 | /** |
| 17 | * | 20 | * |
| @@ -29,7 +32,7 @@ public class TaxPipelineBusinessKeyword { | @@ -29,7 +32,7 @@ public class TaxPipelineBusinessKeyword { | ||
| 29 | * 单据类型 | 32 | * 单据类型 |
| 30 | */ | 33 | */ |
| 31 | @TableField(value = "document_type") | 34 | @TableField(value = "document_type") |
| 32 | - private Integer documentType; | 35 | + private String documentType; |
| 33 | 36 | ||
| 34 | /** | 37 | /** |
| 35 | * 单据字段 | 38 | * 单据字段 |
tax-storage/src/main/java/com/diligrp/tax/storage/model/co/TaxPipelineBusinessKeywordCO.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.model.co; | ||
| 2 | + | ||
| 3 | +import com.diligrp.tax.central.message.Valid; | ||
| 4 | +import jakarta.validation.constraints.NotEmpty; | ||
| 5 | +import jakarta.validation.constraints.NotNull; | ||
| 6 | +import lombok.Getter; | ||
| 7 | +import lombok.Setter; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * @Author: zhangmeiyang | ||
| 11 | + * @CreateTime: 2025-11-17 16:32 | ||
| 12 | + * @Version: todo | ||
| 13 | + */ | ||
| 14 | +@Getter | ||
| 15 | +@Setter | ||
| 16 | +public class TaxPipelineBusinessKeywordCO { | ||
| 17 | + | ||
| 18 | + private Integer id; | ||
| 19 | + /** | ||
| 20 | + * 业务id | ||
| 21 | + */ | ||
| 22 | + @NotNull(groups = {Valid.Create.class, Valid.Read.class}) | ||
| 23 | + private Long taxPipelineBusinessId; | ||
| 24 | + /** | ||
| 25 | + * 单据类型 | ||
| 26 | + */ | ||
| 27 | + @NotEmpty(groups = {Valid.Create.class}) | ||
| 28 | + private String documentType; | ||
| 29 | + | ||
| 30 | + /** | ||
| 31 | + * 文档字段 | ||
| 32 | + */ | ||
| 33 | + @NotEmpty(groups = {Valid.Create.class}) | ||
| 34 | + private String documentField; | ||
| 35 | + | ||
| 36 | + /** | ||
| 37 | + * 文档值方式 | ||
| 38 | + */ | ||
| 39 | + @NotNull(groups = {Valid.Create.class}) | ||
| 40 | + private Integer documentValueWay; | ||
| 41 | + | ||
| 42 | + /** | ||
| 43 | + * 文档值内容 | ||
| 44 | + */ | ||
| 45 | + @NotEmpty(groups = {Valid.Create.class}) | ||
| 46 | + private String documentValueContent; | ||
| 47 | +} |
tax-storage/src/main/java/com/diligrp/tax/storage/model/vo/TaxPipelineBusinessKeywordVO.java
0 → 100644
| 1 | +package com.diligrp.tax.storage.model.vo; | ||
| 2 | + | ||
| 3 | +import lombok.Getter; | ||
| 4 | +import lombok.Setter; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * @Author: zhangmeiyang | ||
| 8 | + * @CreateTime: 2025-11-17 16:32 | ||
| 9 | + * @Version: todo | ||
| 10 | + */ | ||
| 11 | +@Getter | ||
| 12 | +@Setter | ||
| 13 | +public class TaxPipelineBusinessKeywordVO { | ||
| 14 | + | ||
| 15 | + private Integer id; | ||
| 16 | + /** | ||
| 17 | + * 业务id | ||
| 18 | + */ | ||
| 19 | + private Long taxPipelineBusinessId; | ||
| 20 | + /** | ||
| 21 | + * 单据类型 | ||
| 22 | + */ | ||
| 23 | + private String documentType; | ||
| 24 | + | ||
| 25 | + /** | ||
| 26 | + * 文档字段 | ||
| 27 | + */ | ||
| 28 | + private String documentField; | ||
| 29 | + | ||
| 30 | + /** | ||
| 31 | + * 文档值方式 | ||
| 32 | + */ | ||
| 33 | + private Integer documentValueWay; | ||
| 34 | + | ||
| 35 | + /** | ||
| 36 | + * 文档值内容 | ||
| 37 | + */ | ||
| 38 | + private String documentValueContent; | ||
| 39 | +} |
tax-storage/src/main/java/com/diligrp/tax/storage/service/TaxPipelineBusinessConfigService.java
| @@ -8,21 +8,13 @@ import com.diligrp.tax.central.type.DocumentType; | @@ -8,21 +8,13 @@ import com.diligrp.tax.central.type.DocumentType; | ||
| 8 | import com.diligrp.tax.central.type.TaxSystemType; | 8 | import com.diligrp.tax.central.type.TaxSystemType; |
| 9 | import com.diligrp.tax.central.utils.JsonUtils; | 9 | import com.diligrp.tax.central.utils.JsonUtils; |
| 10 | import com.diligrp.tax.storage.api.response.PipelineBusinessResponse; | 10 | import com.diligrp.tax.storage.api.response.PipelineBusinessResponse; |
| 11 | -import com.diligrp.tax.storage.domain.TaxPipelineBusiness; | ||
| 12 | -import com.diligrp.tax.storage.domain.TaxPipelineBusinessConfig; | ||
| 13 | -import com.diligrp.tax.storage.domain.TaxPipelineBusinessExt; | ||
| 14 | -import com.diligrp.tax.storage.domain.TaxPipelineBusinessExtData; | ||
| 15 | -import com.diligrp.tax.storage.model.co.TaxPipelineBusinessCO; | ||
| 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; | 11 | +import com.diligrp.tax.storage.domain.*; |
| 12 | +import com.diligrp.tax.storage.model.co.*; | ||
| 19 | import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessConfigVO; | 13 | import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessConfigVO; |
| 20 | import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessExtVO; | 14 | import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessExtVO; |
| 15 | +import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessKeywordVO; | ||
| 21 | import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessVO; | 16 | import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessVO; |
| 22 | -import com.diligrp.tax.storage.repo.TaxPipelineBusinessConfigRepository; | ||
| 23 | -import com.diligrp.tax.storage.repo.TaxPipelineBusinessExtDataRepository; | ||
| 24 | -import com.diligrp.tax.storage.repo.TaxPipelineBusinessExtRepository; | ||
| 25 | -import com.diligrp.tax.storage.repo.TaxPipelineBusinessRepository; | 17 | +import com.diligrp.tax.storage.repo.*; |
| 26 | import jakarta.annotation.Resource; | 18 | import jakarta.annotation.Resource; |
| 27 | import org.springframework.stereotype.Service; | 19 | import org.springframework.stereotype.Service; |
| 28 | import org.springframework.transaction.annotation.Transactional; | 20 | import org.springframework.transaction.annotation.Transactional; |
| @@ -50,6 +42,9 @@ public class TaxPipelineBusinessConfigService { | @@ -50,6 +42,9 @@ public class TaxPipelineBusinessConfigService { | ||
| 50 | @Resource | 42 | @Resource |
| 51 | private TaxPipelineBusinessExtDataRepository taxPipelineBusinessExtDataRepository; | 43 | private TaxPipelineBusinessExtDataRepository taxPipelineBusinessExtDataRepository; |
| 52 | 44 | ||
| 45 | + @Resource | ||
| 46 | + private TaxPipelineBusinessKeywordRepository taxPipelineBusinessKeywordRepository; | ||
| 47 | + | ||
| 53 | /** | 48 | /** |
| 54 | * 保存业务类型 | 49 | * 保存业务类型 |
| 55 | * | 50 | * |
| @@ -261,4 +256,37 @@ public class TaxPipelineBusinessConfigService { | @@ -261,4 +256,37 @@ public class TaxPipelineBusinessConfigService { | ||
| 261 | pipelineBusinessResponse.setBusinessExt(taxPipelineBusinessExts.stream().map(item -> JsonUtils.convertValue(item, TaxPipelineBusinessExtVO.class)).toList()); | 256 | pipelineBusinessResponse.setBusinessExt(taxPipelineBusinessExts.stream().map(item -> JsonUtils.convertValue(item, TaxPipelineBusinessExtVO.class)).toList()); |
| 262 | return pipelineBusinessResponse; | 257 | return pipelineBusinessResponse; |
| 263 | } | 258 | } |
| 259 | + | ||
| 260 | + /** | ||
| 261 | + * 批量保存业务关键字 | ||
| 262 | + * | ||
| 263 | + * @param cos 因为 | ||
| 264 | + */ | ||
| 265 | + @Transactional | ||
| 266 | + public void batchSaveBusinessKeyword(List<TaxPipelineBusinessKeywordCO> cos) { | ||
| 267 | + Optional.ofNullable(cos).ifPresent(ts -> { | ||
| 268 | + Long taxPipelineBusinessId = ts.getFirst().getTaxPipelineBusinessId(); | ||
| 269 | + LambdaQueryWrapper<TaxPipelineBusinessKeyword> queryWrapper = new LambdaQueryWrapper<>(); | ||
| 270 | + queryWrapper.eq(TaxPipelineBusinessKeyword::getTaxPipelineBusinessId, taxPipelineBusinessId); | ||
| 271 | + taxPipelineBusinessKeywordRepository.delete(queryWrapper); | ||
| 272 | + ts.forEach(co -> { | ||
| 273 | + DocumentType.validateDocumentType(co.getDocumentType()); | ||
| 274 | + TaxPipelineBusinessKeyword taxPipelineBusinessKeyword = JsonUtils.convertValue(co, TaxPipelineBusinessKeyword.class); | ||
| 275 | + taxPipelineBusinessKeywordRepository.insert(taxPipelineBusinessKeyword); | ||
| 276 | + }); | ||
| 277 | + } | ||
| 278 | + ); | ||
| 279 | + } | ||
| 280 | + | ||
| 281 | + /** | ||
| 282 | + * 列表业务关键字 | ||
| 283 | + * | ||
| 284 | + * @param co 公司 | ||
| 285 | + * @return {@link List }<{@link TaxPipelineBusinessKeywordVO }> | ||
| 286 | + */ | ||
| 287 | + public List<TaxPipelineBusinessKeywordVO> listBusinessKeyword(TaxPipelineBusinessKeywordCO co) { | ||
| 288 | + LambdaQueryWrapper<TaxPipelineBusinessKeyword> queryWrapper = new LambdaQueryWrapper<>(); | ||
| 289 | + queryWrapper.eq(TaxPipelineBusinessKeyword::getTaxPipelineBusinessId, co.getTaxPipelineBusinessId()); | ||
| 290 | + return taxPipelineBusinessKeywordRepository.selectList(queryWrapper).stream().map(item -> JsonUtils.convertValue(item, TaxPipelineBusinessKeywordVO.class)).toList(); | ||
| 291 | + } | ||
| 264 | } | 292 | } |
tax-storage/src/main/java/com/diligrp/tax/storage/service/TaxPipelineBusinessKeywordService.java deleted
100644 → 0
| 1 | -package com.diligrp.tax.storage.service; | ||
| 2 | - | ||
| 3 | -import com.diligrp.tax.storage.repo.TaxPipelineBusinessKeywordRepository; | ||
| 4 | -import jakarta.annotation.Resource; | ||
| 5 | -import org.springframework.stereotype.Service; | ||
| 6 | - | ||
| 7 | -/** | ||
| 8 | - * @Author: zhangmeiyang | ||
| 9 | - * @CreateTime: 2025-11-17 16:05 | ||
| 10 | - * @Version: todo | ||
| 11 | - */ | ||
| 12 | -@Service | ||
| 13 | -public class TaxPipelineBusinessKeywordService { | ||
| 14 | - | ||
| 15 | - @Resource | ||
| 16 | - private TaxPipelineBusinessKeywordRepository taxPipelineBusinessKeywordRepository; | ||
| 17 | - | ||
| 18 | - | ||
| 19 | -} |