Commit 68e5cc146e94eff0982cdbc1c1db234843498fa9

Authored by zhangmeiyang
1 parent 370056a9

feat(storage): 新增业务关键字配置功能

- 添加批量保存和查询业务关键字接口- 定义业务关键字相关实体类和传输对象
- 实现业务关键字数据访问层逻辑- 更新导入包路径使用通配符简化代码
- 修改单据类型字段为字符串类型以支持更多场景
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   -}