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