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 | 2 | |
| 3 | 3 | import com.diligrp.tax.central.message.Valid; |
| 4 | 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 | 6 | import com.diligrp.tax.storage.service.TaxPipelineBusinessConfigService; |
| 10 | 7 | import jakarta.annotation.Resource; |
| 11 | 8 | import org.springframework.validation.annotation.Validated; |
| ... | ... | @@ -14,6 +11,8 @@ import org.springframework.web.bind.annotation.RequestBody; |
| 14 | 11 | import org.springframework.web.bind.annotation.RequestMapping; |
| 15 | 12 | import org.springframework.web.bind.annotation.RestController; |
| 16 | 13 | |
| 14 | +import java.util.List; | |
| 15 | + | |
| 17 | 16 | /** |
| 18 | 17 | * @Author: zhangmeiyang |
| 19 | 18 | * @CreateTime: 2025-11-13 15:12 |
| ... | ... | @@ -145,4 +144,27 @@ public class TaxPipelineBusinessConfigController { |
| 145 | 144 | taxPipelineBusinessConfigService.refreshBusinessExtData(co); |
| 146 | 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 | 5 | import com.baomidou.mybatisplus.annotation.TableId; |
| 6 | 6 | import com.baomidou.mybatisplus.annotation.TableName; |
| 7 | 7 | import lombok.Data; |
| 8 | +import lombok.Getter; | |
| 9 | +import lombok.Setter; | |
| 8 | 10 | |
| 9 | 11 | /** |
| 10 | 12 | * |
| 11 | 13 | * @TableName tax_pipeline_business_keyword |
| 12 | 14 | */ |
| 13 | 15 | @TableName(value ="tax_pipeline_business_keyword") |
| 14 | -@Data | |
| 16 | +@Getter | |
| 17 | +@Setter | |
| 15 | 18 | public class TaxPipelineBusinessKeyword { |
| 16 | 19 | /** |
| 17 | 20 | * |
| ... | ... | @@ -29,7 +32,7 @@ public class TaxPipelineBusinessKeyword { |
| 29 | 32 | * 单据类型 |
| 30 | 33 | */ |
| 31 | 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 | 8 | import com.diligrp.tax.central.type.TaxSystemType; |
| 9 | 9 | import com.diligrp.tax.central.utils.JsonUtils; |
| 10 | 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 | 13 | import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessConfigVO; |
| 20 | 14 | import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessExtVO; |
| 15 | +import com.diligrp.tax.storage.model.vo.TaxPipelineBusinessKeywordVO; | |
| 21 | 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 | 18 | import jakarta.annotation.Resource; |
| 27 | 19 | import org.springframework.stereotype.Service; |
| 28 | 20 | import org.springframework.transaction.annotation.Transactional; |
| ... | ... | @@ -50,6 +42,9 @@ public class TaxPipelineBusinessConfigService { |
| 50 | 42 | @Resource |
| 51 | 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 | 256 | pipelineBusinessResponse.setBusinessExt(taxPipelineBusinessExts.stream().map(item -> JsonUtils.convertValue(item, TaxPipelineBusinessExtVO.class)).toList()); |
| 262 | 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 | -} |