From 1283cfab73bc8a55daf3c7556bdd9bddc618e8b5 Mon Sep 17 00:00:00 2001 From: jiangxiaoming <7548901@qq.com> Date: Thu, 19 Sep 2024 11:04:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E8=B4=A6=E8=A7=84=E5=88=99=E6=9F=A5?= =?UTF-8?q?=20=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/command/dto/EntryRuleCmd.java | 44 +++++++++++++++ .../application/query/dto/EntryRuleQry.java | 23 ++++++++ .../query/dto/out/EntryRuleOut.java | 30 +++++++++++ .../controller/api/EntryRuleController.java | 34 ++++++++++++ .../query/api/EntryRuleQueryService.java | 17 ++++++ .../mapper/api/EntryRuleMapper.java | 4 ++ .../reader/EntryRuleQueryServiceImpl.java | 43 +++++++++++++++ .../controller/EntryRuleControllerImpl.java | 49 +++++++++++++++++ .../seasky/dddtemplate/ApplicationTests.java | 54 +++++++++++++++++++ 9 files changed, 298 insertions(+) create mode 100644 ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/EntryRuleCmd.java create mode 100644 ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/query/dto/EntryRuleQry.java create mode 100644 ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/query/dto/out/EntryRuleOut.java create mode 100644 ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/EntryRuleController.java create mode 100644 ServiceSite/src/main/java/com/seasky/ledgerincome/application/query/api/EntryRuleQueryService.java create mode 100644 ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/reader/EntryRuleQueryServiceImpl.java create mode 100644 ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/EntryRuleControllerImpl.java diff --git a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/EntryRuleCmd.java b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/EntryRuleCmd.java new file mode 100644 index 00000000..9e4965a2 --- /dev/null +++ b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/command/dto/EntryRuleCmd.java @@ -0,0 +1,44 @@ +package com.seasky.ledgerincome.application.command.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author jxm + * @Date 2024/9/19 10:46 + * @Version 1.0 + */ +@AllArgsConstructor +@NoArgsConstructor +@Data +public class EntryRuleCmd { + private Long id; + @ApiModelProperty(value="鏀舵绫诲瀷") + private String incomeType; // 鏀舵绫诲瀷 + @ApiModelProperty(value="椤圭洰绫诲瀷") + private String projectType; // 椤圭洰绫诲瀷 + @ApiModelProperty(value="鏄惁寮€绁�") + private String invoicing; // 鏄惁寮€绁� + @ApiModelProperty(value="椤圭洰褰掗泦") + private String imputation; // 椤圭洰褰掗泦 + @ApiModelProperty(value="閮ㄩ棬") + private String deptCode; // 閮ㄩ棬 + @ApiModelProperty(value="棰濆害") + private String controlCode; // 棰濆害 + @ApiModelProperty(value="琛ュ厖涓氬姟绫诲瀷") + private String buisnessType; // 琛ュ厖涓氬姟绫诲瀷 + @ApiModelProperty(value="鍊熻捶鏂瑰悜") + private Integer deorcr; // 鍊熻捶鏂瑰悜 + @ApiModelProperty(value="绉戠洰") + private String vchAcctCode; // 绉戠洰 + @ApiModelProperty(value="鎽樿") + private String summary; // 鎽樿 + @ApiModelProperty(value="棰勫垎閰嶅叧閿瘝") + private String keyword; // 棰勫垎閰嶅叧閿瘝 + @ApiModelProperty(value="缁忚惀绠$悊鍛�") + private String admin; // 缁忚惀绠$悊鍛� + @ApiModelProperty(value="妯℃澘缂栧彿") + private String templateCode; // 妯℃澘缂栧彿 +} diff --git a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/query/dto/EntryRuleQry.java b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/query/dto/EntryRuleQry.java new file mode 100644 index 00000000..d93d158f --- /dev/null +++ b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/query/dto/EntryRuleQry.java @@ -0,0 +1,23 @@ +package com.seasky.ledgerincome.application.query.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author jxm + * @Date 2024/9/18 17:04 + * @Version 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class EntryRuleQry { + @ApiModelProperty(value = "鏀舵绫诲瀷") + private String incomeType; + @ApiModelProperty(value = "pageIndex") + private int pageIndex; + @ApiModelProperty(value = "pageSize") + private int pageSize; +} diff --git a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/query/dto/out/EntryRuleOut.java b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/query/dto/out/EntryRuleOut.java new file mode 100644 index 00000000..c8ab33c1 --- /dev/null +++ b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/application/query/dto/out/EntryRuleOut.java @@ -0,0 +1,30 @@ +package com.seasky.ledgerincome.application.query.dto.out; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author jxm + * @Date 2024/9/18 17:00 + * @Version 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class EntryRuleOut { + private Long id; + private String incomeType; // 鏀舵绫诲瀷 + private String projectType; // 椤圭洰绫诲瀷 + private String invoicing; // 鏄惁寮€绁� + private String imputation; // 椤圭洰褰掗泦 + private String deptCode; // 閮ㄩ棬 + private String controlCode; // 棰濆害 + private String buisnessType; // 琛ュ厖涓氬姟绫诲瀷 + private Integer deorcr; // 鍊熻捶鏂瑰悜 + private String vchAcctCode; // 绉戠洰 + private String summary; // 鎽樿 + private String keyword; // 棰勫垎閰嶅叧閿瘝 + private String admin; // 缁忚惀绠$悊鍛� + private String templateCode; // 妯℃澘缂栧彿 +} diff --git a/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/EntryRuleController.java b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/EntryRuleController.java new file mode 100644 index 00000000..1a89659e --- /dev/null +++ b/ServiceSite/facade/src/main/java/com/seasky/ledgerincome/interfaces/controller/api/EntryRuleController.java @@ -0,0 +1,34 @@ +package com.seasky.ledgerincome.interfaces.controller.api; + +import com.seasky.core.common.Result; +import com.seasky.ledgerincome.application.command.dto.EntryRuleCmd; +import com.seasky.ledgerincome.application.query.dto.EntryRuleQry; +import com.seasky.ledgerincome.application.query.dto.out.EntryRuleOut; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * @Author jxm + * @Date 2024/9/18 16:59 + * @Version 1.0 + */ +@Api(tags = "鍏ヨ处瑙勫垯") +@RequestMapping("entryRule") +public interface EntryRuleController { + + @ApiOperation("鑾峰彇鍏ヨ处瑙勫垯鍒楄〃") + @PostMapping("/getEntryRuleList") + Result<EntryRuleOut> getEntryRuleList(@RequestBody EntryRuleQry qry); + + @ApiOperation("鏌ヨ鍗曚釜鍏ヨ处瑙勫垯") + @PostMapping("/getEntryRule") + Result<EntryRuleOut> getEntryRule(@RequestParam("id") Long id); + + @ApiOperation("鑾峰彇鍏ヨ处瑙勫垯鍒楄〃") + @PostMapping("/updateEntryRule") + Result<Object> updateEntryRule(@RequestBody EntryRuleCmd cmd); +} diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/application/query/api/EntryRuleQueryService.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/query/api/EntryRuleQueryService.java new file mode 100644 index 00000000..4527f1bc --- /dev/null +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/application/query/api/EntryRuleQueryService.java @@ -0,0 +1,17 @@ +package com.seasky.ledgerincome.application.query.api; + +import com.seasky.core.common.Pagination; +import com.seasky.ledgerincome.application.query.dto.EntryRuleQry; +import com.seasky.ledgerincome.application.query.dto.out.EntryRuleOut; + +/** + * @Author jxm + * @Date 2024/9/18 17:10 + * @Version 1.0 + */ +public interface EntryRuleQueryService { + + Pagination<EntryRuleOut> getEntryRuleList(EntryRuleQry qry); + + EntryRuleOut getEntryRule(Long id); +} diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/mapper/api/EntryRuleMapper.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/mapper/api/EntryRuleMapper.java index a76b7126..67fc3260 100644 --- a/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/mapper/api/EntryRuleMapper.java +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/mapper/api/EntryRuleMapper.java @@ -3,13 +3,17 @@ package com.seasky.ledgerincome.infrastructure.mapper.api; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.seasky.core.base.BaseMapper; import com.seasky.ledgerincome.application.query.dto.*; +import com.seasky.ledgerincome.application.query.dto.out.EntryRuleOut; import com.seasky.ledgerincome.infrastructure.po.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper public interface EntryRuleMapper extends BaseMapper<EntryRulePo> { + @Select("SELECT * FROM t_entry_rule WHERE income_type = #{qry.incomeType}") + List<EntryRuleOut> selectEntryRulePage(Page page, @Param("qry") EntryRuleQry qry); } diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/reader/EntryRuleQueryServiceImpl.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/reader/EntryRuleQueryServiceImpl.java new file mode 100644 index 00000000..287b29ee --- /dev/null +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/infrastructure/reader/EntryRuleQueryServiceImpl.java @@ -0,0 +1,43 @@ +package com.seasky.ledgerincome.infrastructure.reader; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.seasky.core.common.Pagination; +import com.seasky.core.ddd.utils.MapperUtils; +import com.seasky.ledgerincome.application.query.api.EntryRuleQueryService; +import com.seasky.ledgerincome.application.query.dto.EntryRuleQry; +import com.seasky.ledgerincome.application.query.dto.out.EntryRuleOut; +import com.seasky.ledgerincome.infrastructure.mapper.api.EntryRuleMapper; +import com.seasky.ledgerincome.infrastructure.po.EntryRulePo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author jxm + * @Date 2024/9/18 17:14 + * @Version 1.0 + */ +@Service +public class EntryRuleQueryServiceImpl implements EntryRuleQueryService { + + @Autowired + EntryRuleMapper entryRuleMapper; + @Override + public Pagination<EntryRuleOut> getEntryRuleList(EntryRuleQry qry) { + Pagination pagination = new Pagination(); + pagination.setCurrent(qry.getPageIndex()); + pagination.setSize(qry.getPageSize()); + Page page = Pagination.toPage(pagination); + List<EntryRuleOut> records = entryRuleMapper.selectEntryRulePage(page,qry); + page.setRecords(records); + return Pagination.fromPage(page); + } + + @Override + public EntryRuleOut getEntryRule(Long id) { + EntryRulePo rulePo = entryRuleMapper.selectById(id); + EntryRuleOut out = MapperUtils.INSTANCE.map(EntryRuleOut.class,rulePo); + return out; + } +} diff --git a/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/EntryRuleControllerImpl.java b/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/EntryRuleControllerImpl.java new file mode 100644 index 00000000..8fad4884 --- /dev/null +++ b/ServiceSite/src/main/java/com/seasky/ledgerincome/interfaces/controller/EntryRuleControllerImpl.java @@ -0,0 +1,49 @@ +package com.seasky.ledgerincome.interfaces.controller; + +import com.seasky.core.common.Pagination; +import com.seasky.core.common.ResponseCode; +import com.seasky.core.common.Result; +import com.seasky.core.ddd.utils.MapperUtils; +import com.seasky.ledgerincome.application.command.dto.EntryRuleCmd; +import com.seasky.ledgerincome.application.query.api.EntryRuleQueryService; +import com.seasky.ledgerincome.application.query.dto.EntryRuleQry; +import com.seasky.ledgerincome.application.query.dto.out.EntryRuleOut; +import com.seasky.ledgerincome.infrastructure.mapper.api.EntryRuleMapper; +import com.seasky.ledgerincome.infrastructure.po.EntryRulePo; +import com.seasky.ledgerincome.interfaces.controller.api.EntryRuleController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RestController; + +import static com.seasky.core.common.Response.ok; + +/** + * @Author jxm + * @Date 2024/9/18 17:07 + * @Version 1.0 + */ +@RestController +public class EntryRuleControllerImpl implements EntryRuleController { + + @Autowired + EntryRuleMapper entryRuleMapper; + @Autowired + EntryRuleQueryService entryRuleQueryService; + @Override + public Result<EntryRuleOut> getEntryRuleList(EntryRuleQry qry) { + Pagination<EntryRuleOut> ruleList = entryRuleQueryService.getEntryRuleList(qry); + return ok(ResponseCode.SUCCESS, ruleList); + } + + @Override + public Result<EntryRuleOut> getEntryRule(Long id) { + EntryRuleOut out = entryRuleQueryService.getEntryRule(id); + return ok(ResponseCode.SUCCESS, out); + } + + @Override + public Result<Object> updateEntryRule(EntryRuleCmd cmd) { + EntryRulePo po = MapperUtils.INSTANCE.map(EntryRulePo.class,cmd); + int id = entryRuleMapper.updateById(po); + return id>0?ok(ResponseCode.SUCCESS):ok(ResponseCode.FAILURE); + } +} diff --git a/ServiceSite/src/test/java/com/seasky/dddtemplate/ApplicationTests.java b/ServiceSite/src/test/java/com/seasky/dddtemplate/ApplicationTests.java index d3085ca6..afb4b00b 100644 --- a/ServiceSite/src/test/java/com/seasky/dddtemplate/ApplicationTests.java +++ b/ServiceSite/src/test/java/com/seasky/dddtemplate/ApplicationTests.java @@ -1,13 +1,67 @@ package com.seasky.dddtemplate; +import com.seasky.core.common.Pagination; +import com.seasky.ledgerincome.application.query.api.EntryRuleQueryService; +import com.seasky.ledgerincome.application.query.dto.EntryRuleQry; +import com.seasky.ledgerincome.application.query.dto.out.EntryRuleOut; +import com.seasky.ledgerincome.domain.aggregate.incomeinvoice.IncomeInvoiceAggregate; +import com.seasky.ledgerincome.domain.aggregate.invoice.InvoiceRepository; +import com.seasky.ledgerincome.infrastructure.po.EntryRulePo; +import com.seasky.ledgerincome.utils.VoucherUtil; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import java.math.BigDecimal; +import java.util.List; + @SpringBootTest class ApplicationTests { + @Autowired + VoucherUtil voucherUtil; + @Autowired + InvoiceRepository invoiceRepository; + @Autowired + EntryRuleQueryService entryRuleQueryService; @Test void contextLoads() { + //鍦烘櫙1 鏁版嵁搴撻」鐩被鍨嬫槸绾瓧姣� 8 + List<EntryRulePo> rulePos = voucherUtil.queryList("F-鍙楁墭浠g悊", "F-8001-00-0000", "鍚�"); + System.out.println(rulePos); + + //鍦烘櫙2 鏁版嵁搴撻」鐩被鍨嬪寘鍚�* 4 + List<EntryRulePo> rulePos2 = voucherUtil.queryList("K-浜ゅぇ涓撻」", "K03-0200-11-1234", "鍚�"); + System.out.println(rulePos2); + + //鍦烘櫙3 棣栦綅鏄瓧姣嶄笖绗簩浣嶆槸 '-' 12 + List<EntryRulePo> rulePos3 = voucherUtil.queryList("A-鏀嚭鍐插洖", "A03-0200-11-1234", "鍚�"); + System.out.println(rulePos3); + + //鍦烘櫙4 棣栧瓧姣嶆槸瀛楁瘝锛屽悗闈㈠叏鏄腑鏂� 18 + List<EntryRulePo> rulePos4 = voucherUtil.queryList("瀹氭湡瀛樻", "T03-0200-11-1234", "鍚�"); + System.out.println(rulePos4); + + //鍦烘櫙5 鎹簱瀛楁鍏ㄦ槸涓枃 2 + List<EntryRulePo> rulePos5 = voucherUtil.queryList("鍏朵粬", "鍏朵粬", "鍚�"); + System.out.println(rulePos5); + + //鍦烘櫙6 鏁版嵁搴撳瓧娈靛寘鍚� `/`锛屾寜 `/` 鍒嗗壊鍚庡尮閰嶅叾涓换鎰忎竴涓� 1 + List<EntryRulePo> rulePos6 = voucherUtil.queryList("鍏朵粬", "鏀粯瀹�", "鍚�"); + System.out.println(rulePos6); } + @Test + void testSelectSql(){ + IncomeInvoiceAggregate aggregate = invoiceRepository.findInvoice(BigDecimal.valueOf(21), "44"); + + System.out.println(aggregate); + } + + @Test + void testPage(){ + Pagination<EntryRuleOut> entryRuleList = entryRuleQueryService.getEntryRuleList(new EntryRuleQry("DKRK-绉戠爺", 1, 10)); + List<EntryRuleOut> records = entryRuleList.getRecords(); + System.out.println(records); + } } -- GitLab