24282 há 2 anos atrás
commit
bd33df406e
100 ficheiros alterados com 5772 adições e 0 exclusões
  1. 37 0
      .gitignore
  2. 44 0
      code/pom.xml
  3. 17 0
      code/src/test/java/BaseDataSource.java
  4. 17 0
      code/src/test/java/CommonDataSource.java
  5. 17 0
      code/src/test/java/CustomerDataSource.java
  6. 17 0
      code/src/test/java/DingDingDataSource.java
  7. 17 0
      code/src/test/java/IotDataSource.java
  8. 17 0
      code/src/test/java/ItemDataSource.java
  9. 17 0
      code/src/test/java/JxstDataSource.java
  10. 17 0
      code/src/test/java/MailDataSource.java
  11. 17 0
      code/src/test/java/MesDataSource.java
  12. 17 0
      code/src/test/java/OaDataSource.java
  13. 17 0
      code/src/test/java/WmsDataSource.java
  14. 17 0
      code/src/test/java/ehsdDataSource.java
  15. 17 0
      code/src/test/java/purchaseDataSource.java
  16. 17 0
      code/src/test/java/victoriatouristDataSource.java
  17. 32 0
      hx-account/pom.xml
  18. 74 0
      hx-account/src/main/java/com/fjhx/account/controller/account/AccountDeptRunningWaterController.java
  19. 74 0
      hx-account/src/main/java/com/fjhx/account/controller/account/AccountDeptRunningWaterDetailController.java
  20. 94 0
      hx-account/src/main/java/com/fjhx/account/controller/account/AccountManagementController.java
  21. 59 0
      hx-account/src/main/java/com/fjhx/account/controller/account/AccountPaymentController.java
  22. 68 0
      hx-account/src/main/java/com/fjhx/account/controller/account/AccountRemainderController.java
  23. 71 0
      hx-account/src/main/java/com/fjhx/account/controller/account/AccountRequestFundsController.java
  24. 68 0
      hx-account/src/main/java/com/fjhx/account/controller/account/AccountRequestFundsDetailController.java
  25. 91 0
      hx-account/src/main/java/com/fjhx/account/controller/account/AccountRunningWaterController.java
  26. 34 0
      hx-account/src/main/java/com/fjhx/account/controller/account/StatementController.java
  27. 44 0
      hx-account/src/main/java/com/fjhx/account/controller/utils/DateUtils.java
  28. 63 0
      hx-account/src/main/java/com/fjhx/account/entity/account/bo/AccountRunningWaterBo.java
  29. 49 0
      hx-account/src/main/java/com/fjhx/account/entity/account/bo/CapitalDailyBo.java
  30. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountDeptRunningWaterDetailDto.java
  31. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountDeptRunningWaterDetailSelectDto.java
  32. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountDeptRunningWaterDto.java
  33. 69 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountDeptRunningWaterSelectDto.java
  34. 24 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountManagementDto.java
  35. 27 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountManagementSelectDto.java
  36. 45 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountPaymentDto.java
  37. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountPaymentSelectDto.java
  38. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRemainderDto.java
  39. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRemainderSelectDto.java
  40. 20 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRequestFundsDetailDto.java
  41. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRequestFundsDetailSelectDto.java
  42. 26 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRequestFundsDto.java
  43. 37 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRequestFundsSelectDto.java
  44. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRunningWaterDto.java
  45. 73 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRunningWaterSelectDto.java
  46. 30 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/CapitalDailyDto.java
  47. 168 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/FundAccount.java
  48. 47 0
      hx-account/src/main/java/com/fjhx/account/entity/account/enums/AccountRequestFundsStatusEnum.java
  49. 46 0
      hx-account/src/main/java/com/fjhx/account/entity/account/enums/PaymentStatusEnum.java
  50. 47 0
      hx-account/src/main/java/com/fjhx/account/entity/account/enums/PaymentTypeEnum.java
  51. 34 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountDeptRunningWater.java
  52. 43 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountDeptRunningWaterDetail.java
  53. 106 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountManagement.java
  54. 126 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountPayment.java
  55. 52 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRemainder.java
  56. 104 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRequestFunds.java
  57. 47 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRequestFundsDetail.java
  58. 103 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRunningWater.java
  59. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountDeptRunningWaterDetailVo.java
  60. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountDeptRunningWaterVo.java
  61. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountManagementVo.java
  62. 42 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountPaymentVo.java
  63. 17 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRemainderVo.java
  64. 21 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRequestFundsDetailVo.java
  65. 63 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRequestFundsVo.java
  66. 76 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRunningWaterVo.java
  67. 66 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/CapitalDailyVo.java
  68. 120 0
      hx-account/src/main/java/com/fjhx/account/flow/AccountRequestFundsFlow.java
  69. 27 0
      hx-account/src/main/java/com/fjhx/account/mapper/account/AccountDeptRunningWaterDetailMapper.java
  70. 41 0
      hx-account/src/main/java/com/fjhx/account/mapper/account/AccountDeptRunningWaterMapper.java
  71. 37 0
      hx-account/src/main/java/com/fjhx/account/mapper/account/AccountManagementMapper.java
  72. 34 0
      hx-account/src/main/java/com/fjhx/account/mapper/account/AccountPaymentMapper.java
  73. 26 0
      hx-account/src/main/java/com/fjhx/account/mapper/account/AccountRemainderMapper.java
  74. 34 0
      hx-account/src/main/java/com/fjhx/account/mapper/account/AccountRequestFundsDetailMapper.java
  75. 27 0
      hx-account/src/main/java/com/fjhx/account/mapper/account/AccountRequestFundsMapper.java
  76. 40 0
      hx-account/src/main/java/com/fjhx/account/mapper/account/AccountRunningWaterMapper.java
  77. 49 0
      hx-account/src/main/java/com/fjhx/account/service/account/AccountDeptRunningWaterDetailService.java
  78. 63 0
      hx-account/src/main/java/com/fjhx/account/service/account/AccountDeptRunningWaterService.java
  79. 60 0
      hx-account/src/main/java/com/fjhx/account/service/account/AccountManagementService.java
  80. 48 0
      hx-account/src/main/java/com/fjhx/account/service/account/AccountPaymentService.java
  81. 46 0
      hx-account/src/main/java/com/fjhx/account/service/account/AccountRemainderService.java
  82. 55 0
      hx-account/src/main/java/com/fjhx/account/service/account/AccountRequestFundsDetailService.java
  83. 46 0
      hx-account/src/main/java/com/fjhx/account/service/account/AccountRequestFundsService.java
  84. 59 0
      hx-account/src/main/java/com/fjhx/account/service/account/AccountRunningWaterService.java
  85. 12 0
      hx-account/src/main/java/com/fjhx/account/service/account/StatementService.java
  86. 183 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountDeptRunningWaterDetailServiceImpl.java
  87. 246 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountDeptRunningWaterServiceImpl.java
  88. 327 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountManagementServiceImpl.java
  89. 210 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountPaymentServiceImpl.java
  90. 65 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRemainderServiceImpl.java
  91. 69 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRequestFundsDetailServiceImpl.java
  92. 179 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRequestFundsServiceImpl.java
  93. 232 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRunningWaterServiceImpl.java
  94. 366 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/StatementServiceImpl.java
  95. 19 0
      hx-account/src/main/resources/mapper/account/AccountDeptRunningWaterDetailMapper.xml
  96. 57 0
      hx-account/src/main/resources/mapper/account/AccountDeptRunningWaterMapper.xml
  97. 14 0
      hx-account/src/main/resources/mapper/account/AccountManagementMapper.xml
  98. 44 0
      hx-account/src/main/resources/mapper/account/AccountPaymentMapper.xml
  99. 20 0
      hx-account/src/main/resources/mapper/account/AccountRemainderMapper.xml
  100. 31 0
      hx-account/src/main/resources/mapper/account/AccountRequestFundsDetailMapper.xml

+ 37 - 0
.gitignore

@@ -0,0 +1,37 @@
+# Created by .ignore support plugin (hsz.mobi)
+### Java template
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs
+hs_err_pid*
+
+.idea/.gitignore
+.idea/misc.xml
+.idea/modules.xml
+.idea/vcs.xml
+
+.idea
+app-log
+**/target
+**/libraries
+**/*.iml
+

+ 44 - 0
code/pom.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.fjhx</groupId>
+        <artifactId>bytesailing</artifactId>
+        <version>1.0</version>
+    </parent>
+
+    <artifactId>code</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.fly</groupId>
+            <artifactId>fly-generator</artifactId>
+            <version>1.0.hx</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.17</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.7.7</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <version>1.7.7</version>
+        </dependency>
+    </dependencies>
+
+</project>

+ 17 - 0
code/src/test/java/BaseDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class BaseDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-area")
+                .parent("com.fjhx.area")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/CommonDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class CommonDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_common?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-common")
+                .parent("com.fjhx.common")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/CustomerDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class CustomerDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-customer")
+                .parent("com.fjhx.customer")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/DingDingDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class DingDingDataSource {
+
+//    public static void main(String[] args) {
+//        GeneratorApplication.builder()
+//                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_dingding?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+//                .username("fjhx2012mysql")
+//                .password("3PN-Mzn#vnP&q6d")
+//                .port(9989)
+//                .module("hx-dingding")
+//                .parent("com.fjhx.dingding")
+//                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+//                .build();
+//    }
+
+}

+ 17 - 0
code/src/test/java/IotDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class IotDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_iot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9099)
+                .module("hx-iot")
+                .parent("com.fjhx.iot")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/ItemDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class ItemDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_item?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-item")
+                .parent("com.fjhx.item")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/JxstDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class JxstDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_jxst?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-jxst")
+                .parent("com.fjhx.jxst")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/MailDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class MailDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_mail?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-mail")
+                .parent("com.fjhx.mail")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/MesDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class MesDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_mes?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-mes")
+                .parent("com.fjhx.mes")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/OaDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class OaDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-oa")
+                .parent("com.fjhx.oa")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/WmsDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class WmsDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_wms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-wms")
+                .parent("com.fjhx.wms")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/ehsdDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class ehsdDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_ehsd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-ehsd")
+                .parent("com.fjhx.ehsd")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/purchaseDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class purchaseDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-purchase")
+                .parent("com.fjhx.purchase")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 17 - 0
code/src/test/java/victoriatouristDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class victoriatouristDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_victoriatourist?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-victoriatourist")
+                .parent("com.fjhx.victoriatourist")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 32 - 0
hx-account/pom.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.fjhx</groupId>
+        <artifactId>bytesailing</artifactId>
+        <version>1.0</version>
+    </parent>
+
+    <artifactId>hx-account</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-base</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-item</artifactId>
+        </dependency>
+
+    </dependencies>
+
+</project>

+ 74 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountDeptRunningWaterController.java

@@ -0,0 +1,74 @@
+package com.fjhx.account.controller.account;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountDeptRunningWaterVo;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterSelectDto;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.account.service.account.AccountDeptRunningWaterService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * <p>
+ * 部门-资金流水关联表 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@DS(SourceConstant.ACCOUNT)
+@RestController
+@RequestMapping("/accountDeptRunningWater")
+public class AccountDeptRunningWaterController {
+
+    @Autowired
+    private AccountDeptRunningWaterService accountDeptRunningWaterService;
+
+    /**
+     * 部门-资金流水关联表分页
+     */
+    @PostMapping("/page")
+    public Page<AccountRunningWaterVo> page(@RequestBody AccountDeptRunningWaterSelectDto dto) {
+        return accountDeptRunningWaterService.getPage(dto);
+    }
+
+
+
+    /**
+     * 部门-资金流水关联表新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AccountDeptRunningWaterDto accountDeptRunningWaterDto) {
+        accountDeptRunningWaterService.add(accountDeptRunningWaterDto);
+    }
+
+    /**
+     * 部门-资金流水报表
+     * @param dto
+     * @return
+     */
+    @PostMapping("/DeptRunningWaterReport")
+    public  List<Map<String,Object>> DeptRunningWaterReport(@RequestBody AccountDeptRunningWaterSelectDto dto){
+        return accountDeptRunningWaterService.DeptRunningWaterReport(dto);
+    }
+
+    /**
+     * 部门-资金流水统计( 部门-资金流水列表)
+     * @param dto
+     * @return
+     */
+    @PostMapping("/deptRunningWaterStatistics")
+    public  Map<String,Object> deptRunningWaterStatistics(@RequestBody AccountDeptRunningWaterSelectDto dto){
+        return accountDeptRunningWaterService.deptRunningWaterStatistics(dto);
+    }
+
+
+}

+ 74 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountDeptRunningWaterDetailController.java

@@ -0,0 +1,74 @@
+package com.fjhx.account.controller.account;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountDeptRunningWaterDetailVo;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterDetailSelectDto;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterDetailDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.account.service.account.AccountDeptRunningWaterDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 资金流水分拆部门表 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@DS(SourceConstant.ACCOUNT)
+@RestController
+@RequestMapping("/accountDeptRunningWaterDetail")
+public class AccountDeptRunningWaterDetailController {
+
+    @Autowired
+    private AccountDeptRunningWaterDetailService accountDeptRunningWaterDetailService;
+
+    /**
+     * 资金流水分拆部门表分页
+     */
+    @PostMapping("/page")
+    public Page<AccountDeptRunningWaterDetailVo> page(@RequestBody AccountDeptRunningWaterDetailSelectDto dto) {
+        return accountDeptRunningWaterDetailService.getPage(dto);
+    }
+
+    /**
+     * 资金流水分拆部门表明细
+     */
+    @PostMapping("/detail")
+    public AccountRunningWaterVo detail(@RequestBody BaseSelectDto dto) {
+        return accountDeptRunningWaterDetailService.detail(dto.getId());
+    }
+
+    /**
+     * 资金流水分拆部门表新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AccountRunningWaterVo accountRunningWaterVo) {
+        accountDeptRunningWaterDetailService.add(accountRunningWaterVo);
+    }
+
+    /**
+     * 资金流水分拆部门表编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody AccountDeptRunningWaterDetailDto accountDeptRunningWaterDetailDto) {
+        accountDeptRunningWaterDetailService.edit(accountDeptRunningWaterDetailDto);
+    }
+
+    /**
+     * 资金流水分拆部门表删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        accountDeptRunningWaterDetailService.delete(dto.getId());
+    }
+
+}

+ 94 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountManagementController.java

@@ -0,0 +1,94 @@
+package com.fjhx.account.controller.account;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.dto.AccountManagementDto;
+import com.fjhx.account.entity.account.dto.AccountManagementSelectDto;
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.fjhx.account.entity.account.vo.AccountManagementVo;
+import com.fjhx.account.service.account.AccountManagementService;
+import com.fjhx.common.constant.SourceConstant;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import org.springframework.beans.factory.annotation.Autowired;
+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.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * <p>
+ * 账户-管理表 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@DS(SourceConstant.ACCOUNT)
+@RestController
+@RequestMapping("/accountManagement")
+public class AccountManagementController {
+
+    @Autowired
+    private AccountManagementService accountManagementService;
+
+    /**
+     * 账户-管理表分页
+     */
+    @PostMapping("/page")
+    public Page<AccountManagementVo> page(@RequestBody AccountManagementSelectDto dto) {
+        return accountManagementService.getPage(dto);
+    }
+
+    /**
+     * 账户-管理表明细
+     */
+    @PostMapping("/detail")
+    public AccountManagementDto detail(@RequestBody BaseSelectDto dto) {
+        return accountManagementService.detail(dto.getId());
+    }
+
+    /**
+     * 账户-管理表新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AccountManagementDto accountManagementDto) {
+        accountManagementService.add(accountManagementDto);
+    }
+
+    /**
+     * 账户-管理表编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody AccountManagementDto accountManagementDto) {
+        accountManagementService.edit(accountManagementDto);
+    }
+
+    /**
+     * 账户-管理表删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        accountManagementService.delete(dto.getId());
+    }
+
+//    /**
+//     * 导入账户表的数据
+//     */
+//    @PostMapping("/importsAmount")
+//    public void importsAmount(@RequestBody AccountManagementDto dto) {
+//        accountManagementService.importsAmount(dto);
+//    }
+
+    /**
+     * 账户统计(账户列表)
+     */
+    @PostMapping("/managementStatistics")
+    public  List<Map<String, Object>> managementStatistics(@RequestBody AccountManagementSelectDto dto) {
+        return accountManagementService.managementStatistics(dto);
+    }
+}

+ 59 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountPaymentController.java

@@ -0,0 +1,59 @@
+package com.fjhx.account.controller.account;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsSelectDto;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsVo;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountPaymentVo;
+import com.fjhx.account.entity.account.dto.AccountPaymentSelectDto;
+import com.fjhx.account.entity.account.dto.AccountPaymentDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.account.service.account.AccountPaymentService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 打款表 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-04-11
+ */
+@DS(SourceConstant.ACCOUNT)
+@RestController
+@RequestMapping("/accountPayment")
+public class AccountPaymentController {
+
+    @Autowired
+    private AccountPaymentService accountPaymentService;
+
+    /**
+     * 打款表分页
+     */
+    @PostMapping("/page")
+    public Page<AccountPaymentVo> page(@RequestBody AccountRequestFundsSelectDto dto) {
+        return accountPaymentService.getPage(dto);
+    }
+
+    /**
+     * 打款表明细
+     */
+    @PostMapping("/detail")
+    public AccountPaymentVo detail(@RequestBody BaseSelectDto dto) {
+        return accountPaymentService.detail(dto.getId());
+    }
+
+    /**
+     * 打款功能
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AccountPaymentDto accountPaymentDto) {
+        accountPaymentService.add(accountPaymentDto);
+    }
+
+
+
+}

+ 68 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountRemainderController.java

@@ -0,0 +1,68 @@
+package com.fjhx.account.controller.account;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRemainderVo;
+import com.fjhx.account.entity.account.dto.AccountRemainderSelectDto;
+import com.fjhx.account.entity.account.dto.AccountRemainderDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.account.service.account.AccountRemainderService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 账户-余额表 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@RestController
+@RequestMapping("/accountRemainder")
+public class AccountRemainderController {
+
+    @Autowired
+    private AccountRemainderService accountRemainderService;
+
+    /**
+     * 账户-余额表分页
+     */
+    @PostMapping("/page")
+    public Page<AccountRemainderVo> page(@RequestBody AccountRemainderSelectDto dto) {
+        return accountRemainderService.getPage(dto);
+    }
+
+    /**
+     * 账户-余额表明细
+     */
+    @PostMapping("/detail")
+    public AccountRemainderVo detail(@RequestBody BaseSelectDto dto) {
+        return accountRemainderService.detail(dto.getId());
+    }
+
+    /**
+     * 账户-余额表新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AccountRemainderDto accountRemainderDto) {
+        accountRemainderService.add(accountRemainderDto);
+    }
+
+    /**
+     * 账户-余额表编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody AccountRemainderDto accountRemainderDto) {
+        accountRemainderService.edit(accountRemainderDto);
+    }
+
+    /**
+     * 账户-余额表删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        accountRemainderService.delete(dto.getId());
+    }
+
+}

+ 71 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountRequestFundsController.java

@@ -0,0 +1,71 @@
+package com.fjhx.account.controller.account;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsVo;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsSelectDto;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.account.service.account.AccountRequestFundsService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 请款表 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-04-10
+ */
+@DS(SourceConstant.ACCOUNT)
+@RestController
+@RequestMapping("/accountRequestFunds")
+public class AccountRequestFundsController {
+
+    @Autowired
+    private AccountRequestFundsService accountRequestFundsService;
+
+    /**
+     * 请款表分页
+     */
+    @PostMapping("/page")
+    public Page<AccountRequestFundsVo> page(@RequestBody AccountRequestFundsSelectDto dto) {
+        return accountRequestFundsService.getPage(dto);
+    }
+
+    /**
+     * 请款表明细
+     */
+    @PostMapping("/detail")
+    public AccountRequestFundsVo detail(@RequestBody BaseSelectDto dto) {
+        return accountRequestFundsService.detail(dto.getId());
+    }
+
+    /**
+     * 请款表新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AccountRequestFundsDto accountRequestFundsDto) {
+        accountRequestFundsService.add(accountRequestFundsDto);
+    }
+
+    /**
+     * 请款表编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody AccountRequestFundsDto accountRequestFundsDto) {
+        accountRequestFundsService.edit(accountRequestFundsDto);
+    }
+
+    /**
+     * 请款表删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        accountRequestFundsService.delete(dto.getId());
+    }
+
+}

+ 68 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountRequestFundsDetailController.java

@@ -0,0 +1,68 @@
+package com.fjhx.account.controller.account;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsDetailVo;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsDetailSelectDto;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsDetailDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.account.service.account.AccountRequestFundsDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-10
+ */
+@RestController
+@RequestMapping("/accountRequestFundsDetail")
+public class AccountRequestFundsDetailController {
+
+    @Autowired
+    private AccountRequestFundsDetailService accountRequestFundsDetailService;
+
+    /**
+     * 分页
+     */
+    @PostMapping("/page")
+    public Page<AccountRequestFundsDetailVo> page(@RequestBody AccountRequestFundsDetailSelectDto dto) {
+        return accountRequestFundsDetailService.getPage(dto);
+    }
+
+    /**
+     * 明细
+     */
+    @PostMapping("/detail")
+    public AccountRequestFundsDetailVo detail(@RequestBody BaseSelectDto dto) {
+        return accountRequestFundsDetailService.detail(dto.getId());
+    }
+
+    /**
+     * 新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AccountRequestFundsDetailDto accountRequestFundsDetailDto) {
+        accountRequestFundsDetailService.add(accountRequestFundsDetailDto);
+    }
+
+    /**
+     * 编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody AccountRequestFundsDetailDto accountRequestFundsDetailDto) {
+        accountRequestFundsDetailService.edit(accountRequestFundsDetailDto);
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        accountRequestFundsDetailService.delete(dto.getId());
+    }
+
+}

+ 91 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountRunningWaterController.java

@@ -0,0 +1,91 @@
+package com.fjhx.account.controller.account;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.fjhx.account.entity.account.dto.AccountRunningWaterSelectDto;
+import com.fjhx.account.entity.account.dto.AccountRunningWaterDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.account.service.account.AccountRunningWaterService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 账户资金流水表 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@DS(SourceConstant.ACCOUNT)
+@RestController
+@RequestMapping("/accountRunningWater")
+public class AccountRunningWaterController {
+
+    @Autowired
+    private AccountRunningWaterService accountRunningWaterService;
+
+    /**
+     * 账户资金流水表分页
+     */
+    @PostMapping("/page")
+    public Page<AccountRunningWaterVo> page(@RequestBody AccountRunningWaterSelectDto dto) {
+        return accountRunningWaterService.getPage(dto);
+    }
+
+    /**
+     * 账户资金流水表明细
+     */
+    @PostMapping("/detail")
+    public AccountRunningWaterVo detail(@RequestBody BaseSelectDto dto) {
+        return accountRunningWaterService.detail(dto.getId());
+    }
+
+    /**
+     * 账户资金流水表新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody AccountRunningWaterDto accountRunningWaterDto) {
+        accountRunningWaterService.add(accountRunningWaterDto);
+    }
+
+    /**
+     * 账户资金流水表编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody AccountRunningWater accountRunningWaterDto) {
+        accountRunningWaterService.edit(accountRunningWaterDto);
+    }
+
+    /**
+     * 账户资金流水表删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        accountRunningWaterService.delete(dto.getId());
+    }
+
+    /**
+     * 到账认领统计
+     */
+    @PostMapping("/claimStatistics")
+    public List<AccountRunningWater> claimStatistics(@RequestBody BaseSelectDto dto) {
+        return accountRunningWaterService.claimStatistics(dto);
+    }
+
+    /**
+     * 账户资金流水表导出excel
+     */
+    @PostMapping("/exportExcel")
+    public void exportExcel(@RequestBody AccountRunningWaterSelectDto dto,HttpServletResponse httpServletResponse) {
+        accountRunningWaterService.exportExcel(dto,httpServletResponse);
+    }
+
+}

+ 34 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/StatementController.java

@@ -0,0 +1,34 @@
+package com.fjhx.account.controller.account;
+
+import com.fjhx.account.entity.account.dto.CapitalDailyDto;
+import com.fjhx.account.entity.account.vo.CapitalDailyVo;
+import com.fjhx.account.service.account.StatementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+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.RestController;
+
+import java.util.List;
+
+/**
+ * 账户-报表
+ */
+@RestController
+@RequestMapping("/accountStatement")
+public class StatementController {
+
+    @Autowired
+    private StatementService statementService;
+
+    /**
+     * 资金日报表
+     */
+    @PostMapping("/capitalDaily")
+    public List<CapitalDailyVo> getCapitalDaily(@Validated @RequestBody CapitalDailyDto dto) {
+        return statementService.getCapitalDaily(dto);
+    }
+
+
+}

+ 44 - 0
hx-account/src/main/java/com/fjhx/account/controller/utils/DateUtils.java

@@ -0,0 +1,44 @@
+package com.fjhx.account.controller.utils;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+public class DateUtils {
+    /**
+     * 获取两个日期之间的所有月份 (年月)
+     *
+     * @param
+     * @param
+     * @return:YYYY-MM
+     */
+    public static List<String> getMonthBetweenDate(Date startDate, Date endDate) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+        // 声明保存日期集合
+        List<String> list = new ArrayList<String>();
+        try {
+//            // 转化成日期类型
+//            Date startDate = sdf.parse(startTime);
+//            Date endDate = sdf.parse(endTime);
+
+            //用Calendar 进行日期比较判断
+            Calendar calendar = Calendar.getInstance();
+            while (startDate.getTime() <= endDate.getTime()) {
+                // 把日期添加到集合
+                list.add(sdf.format(startDate));
+                // 设置日期
+                calendar.setTime(startDate);
+                //把日期增加一天
+                calendar.add(Calendar.MONTH, 1);
+                // 获取增加后的日期
+                startDate = calendar.getTime();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return list;
+    }
+}

+ 63 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/bo/AccountRunningWaterBo.java

@@ -0,0 +1,63 @@
+package com.fjhx.account.entity.account.bo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+public class AccountRunningWaterBo {
+
+    /**
+     * 金额
+     */
+    @ExcelProperty("交易金额")
+    private BigDecimal amount;
+
+
+    /**
+     * 币种(字典account_currency)
+     */
+    @ExcelProperty("币种")
+    private String currency;
+
+    /**
+     * 账户名
+     */
+    @ExcelProperty("账户名")
+    private String name;
+
+
+    /**
+     * 开户银行
+     */
+    @ExcelProperty("对方银行")
+    private String openingBank;
+
+    /**
+     * 开户账号
+     */
+    @ExcelProperty("对方账号")
+    private String accountOpening;
+
+    /**
+     * 交易时间
+     */
+    @ExcelProperty("交易时间")
+    private Date transactionTime;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty("摘要")
+    private String remarks;
+
+    /**
+     * 资金账户名称
+     */
+    @ExcelProperty("资金账户")
+    private String accountManagementName;
+
+}

+ 49 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/bo/CapitalDailyBo.java

@@ -0,0 +1,49 @@
+package com.fjhx.account.entity.account.bo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+@Getter
+@Setter
+public class CapitalDailyBo {
+
+    /**
+     * 归属公司id
+     */
+    private Long corporationId;
+
+    /**
+     * 归属公司名称
+     */
+    private String corporationName;
+
+    /**
+     * 账户id
+     */
+    private Long accountManagementId;
+
+    /**
+     * 账户名称
+     */
+    private String accountManagementAlias;
+
+    /**
+     * 货币类型(币种)
+     */
+    private String currencyType;
+
+    /**
+     * 余额
+     */
+    private BigDecimal remainder;
+
+    /**
+     * 记录
+     */
+    private List<Map<String, Object>> flowingWaterList;
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountDeptRunningWaterDetailDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.fjhx.account.entity.account.po.AccountDeptRunningWaterDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 资金流水分拆部门表新增编辑入参实体
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@Getter
+@Setter
+public class AccountDeptRunningWaterDetailDto extends AccountDeptRunningWaterDetail {
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountDeptRunningWaterDetailSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 资金流水分拆部门表列表查询入参实体
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@Getter
+@Setter
+public class AccountDeptRunningWaterDetailSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountDeptRunningWaterDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.fjhx.account.entity.account.po.AccountDeptRunningWater;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 部门-资金流水关联表新增编辑入参实体
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@Getter
+@Setter
+public class AccountDeptRunningWaterDto extends AccountDeptRunningWater {
+
+}

+ 69 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountDeptRunningWaterSelectDto.java

@@ -0,0 +1,69 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 部门-资金流水关联表列表查询入参实体
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@Getter
+@Setter
+public class AccountDeptRunningWaterSelectDto extends BaseSelectDto {
+    /**
+     * 币种(字典account_currency)
+     */
+    private String currency;
+
+    /**
+     * 收支类型:10 收入,20支出
+     */
+    private String status;
+
+    /**
+     * 模糊查询时使用
+     */
+    private String keyword;
+
+    /**
+     *是否分拆(10未分拆  20 已分拆)
+     */
+    private String type;
+
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+
+    /**
+     * 归属公司id
+     */
+    private Long corporationId;
+
+    /**
+     * 账户-管理表ID
+     */
+    private Long accountManagementId;
+
+    /**
+     *摘要
+     */
+    private String remarks;
+
+    /**
+     * 起始金额
+     */
+    private BigDecimal beginAmount;
+
+    /**
+     * 结束金额
+     */
+    private BigDecimal endAmount;
+
+
+}

+ 24 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountManagementDto.java

@@ -0,0 +1,24 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 账户-管理表新增编辑入参实体
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountManagementDto extends AccountManagement {
+    @TableField(exist = false)
+    private List<AccountRemainder> accountRemainderList;
+
+    private String tenantId;
+}

+ 27 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountManagementSelectDto.java

@@ -0,0 +1,27 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 账户-管理表列表查询入参实体
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountManagementSelectDto extends BaseSelectDto {
+
+
+    /**
+     * 账户名
+     */
+    private String keyword;
+
+    /**
+     * 开户银行
+     */
+    private String openingBank;
+}

+ 45 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountPaymentDto.java

@@ -0,0 +1,45 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.fjhx.account.entity.account.po.AccountPayment;
+import com.fjhx.file.entity.ObsFile;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 打款表新增编辑入参实体
+ *
+ * @author
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class AccountPaymentDto extends AccountPayment {
+
+    /**
+     * 附件信息
+     */
+    private List<ObsFile> fileList;
+
+    /**
+     * 账户名
+     */
+    private String name;
+
+
+    /**
+     * 开户银行
+     */
+    private String openingBank;
+
+    /**
+     * 开户账号
+     */
+    private String accountOpening;
+
+
+
+
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountPaymentSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 打款表列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class AccountPaymentSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRemainderDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 账户-余额表新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountRemainderDto extends AccountRemainder {
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRemainderSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 账户-余额表列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountRemainderSelectDto extends BaseSelectDto {
+
+}

+ 20 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRequestFundsDetailDto.java

@@ -0,0 +1,20 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
+import com.fjhx.file.entity.ObsFile;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 新增编辑入参实体
+ *
+ * @author
+ * @since 2023-04-10
+ */
+@Getter
+@Setter
+public class AccountRequestFundsDetailDto extends AccountRequestFundsDetail {
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRequestFundsDetailSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 列表查询入参实体
+ *
+ * @author
+ * @since 2023-04-10
+ */
+@Getter
+@Setter
+public class AccountRequestFundsDetailSelectDto extends BaseSelectDto {
+
+}

+ 26 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRequestFundsDto.java

@@ -0,0 +1,26 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.fjhx.account.entity.account.po.AccountRequestFunds;
+import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
+import com.fjhx.file.entity.ObsFile;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 请款表新增编辑入参实体
+ *
+ * @author
+ * @since 2023-04-10
+ */
+@Getter
+@Setter
+public class AccountRequestFundsDto extends AccountRequestFunds {
+
+    //请款详情表的信息
+    private List<AccountRequestFundsDetail> accountRequestFundsDetailList;
+
+    private List<ObsFile> fileList;
+
+}

+ 37 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRequestFundsSelectDto.java

@@ -0,0 +1,37 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 请款表列表查询入参实体
+ *
+ * @author
+ * @since 2023-04-10
+ */
+@Getter
+@Setter
+public class AccountRequestFundsSelectDto extends BaseSelectDto {
+    /**
+     * 请款类型(字典funds_type)
+     */
+    private String type;
+
+    /**
+     * 流程状态(10。审批中  20 驳回  30 审批通过)
+     */
+    private String status;
+
+    /**
+     * 打款状态(字典payment_status)
+     */
+    private String paymentStatus;
+
+    /**
+     * 模糊查询时使用
+     */
+    private String keyword;
+
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRunningWaterDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 账户资金流水表新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountRunningWaterDto extends AccountRunningWater {
+
+}

+ 73 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRunningWaterSelectDto.java

@@ -0,0 +1,73 @@
+package com.fjhx.account.entity.account.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 账户资金流水表列表查询入参实体
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountRunningWaterSelectDto extends BaseSelectDto {
+    /**
+     * 账户-管理表ID
+     */
+    private Long accountManagementId;
+
+    /**
+     * 币种(字典account_currency)
+     */
+    private String currency;
+
+    /**
+     * 收支类型:10 收入,20支出
+     */
+    private String status;
+
+    /**
+     * 模糊查询时使用
+     */
+    private String keyword;
+
+    /**
+     * 数据类型 1:到账认领
+     */
+    private Integer dataType;
+
+    /**
+     * 是否认领
+     */
+    private String isClaim;
+
+    /**
+     * 是否合同到账
+     */
+    private String received;
+
+    /**
+     * 交易开始金额
+     */
+    private BigDecimal beginAmount;
+
+    /**
+     * 交易结束金额
+     */
+    private BigDecimal endAmount;
+
+    /**
+     * 对方账户名称
+     */
+    private String name;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+}

+ 30 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/CapitalDailyDto.java

@@ -0,0 +1,30 @@
+package com.fjhx.account.entity.account.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+@Getter
+@Setter
+public class CapitalDailyDto {
+
+    /**
+     * 期间
+     */
+    @NotBlank(message = "范围期间不能为空")
+    private String dateBetween;
+
+    /**
+     * 资金账号id
+     * account模块 account_management表 id
+     */
+    private Long managementId;
+
+    /**
+     * 归属公司id
+     * common模块 corporation表 id
+     */
+    private Long corporationId;
+
+}

+ 168 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/FundAccount.java

@@ -0,0 +1,168 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package com.fjhx.account.entity.account.dto;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 资金账户管理表实体类
+ *
+ * @author BladeX
+ * @since 2022-07-05
+ */
+@Data
+@TableName("t_erp_fund_account")
+
+public class FundAccount{
+
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+    /**
+     * 公司ID
+     */
+    private String companyId;
+
+    /**
+     * 账号名
+     */
+    private String name;
+
+    /**
+     * 账号
+     */
+    private String accountNumber;
+
+    /**
+     * 人民币余额
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal rmbAmount;
+
+    /**
+     * 美元余额
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal dollarAmount;
+
+    /**
+     * 欧元余额
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal euroAmount;
+
+    /**
+     * 英镑余额
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal sterlingAmount;
+
+    /**
+     * 美元汇率
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal dollarExchange;
+
+    /**
+     * 欧元汇率
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal euroExchange;
+
+    /**
+     * 英镑汇率
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal sterlingExchange;
+
+    /**
+     * 备注
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String remark;
+
+    /**
+     * 是否删除。 0:否。  1 是
+     */
+    private Integer delFleg;
+
+    /**
+     * 租户ID
+     */
+    private String tenantId;
+
+    /**
+     * 人民币初始化
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal rmb;
+
+    /**
+     * 欧元初始化
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal euro;
+
+    /**
+     * 美元初始化
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal dollar;
+
+    /**
+     * 英镑初始化
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal sterling;
+
+    /**
+     * 公司名称
+     */
+    @TableField(exist = false)
+    private String companyName;
+
+
+    /**
+     * 公司ID
+     */
+    private String createUser;
+
+    /**
+     * 账号名
+     */
+    private Date createTime;
+
+    /**
+     * 账号
+     */
+    private String updateUser;
+
+    /**
+     * 账号
+     */
+    private Date updateTime;
+
+
+
+}

+ 47 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/enums/AccountRequestFundsStatusEnum.java

@@ -0,0 +1,47 @@
+package com.fjhx.account.entity.account.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+//请款审批状态
+public enum AccountRequestFundsStatusEnum {
+    UNDER_REVIEW("10", "审批中"),
+    REJECT("20", "驳回"),
+    PASS("30","审批通过"),
+    ;
+    private String key;
+
+    private String value;
+
+    private static Map<String, String> map = new LinkedHashMap<>();
+
+    AccountRequestFundsStatusEnum(String key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<String, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (AccountRequestFundsStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+}

+ 46 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/enums/PaymentStatusEnum.java

@@ -0,0 +1,46 @@
+package com.fjhx.account.entity.account.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+//打款状态
+public enum PaymentStatusEnum {
+    UNDER_REVIEW("20", "未打款"),
+    REJECT("10", "已打款"),
+    ;
+    private String key;
+
+    private String value;
+
+    private static Map<String, String> map = new LinkedHashMap<>();
+
+    PaymentStatusEnum(String key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<String, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (PaymentStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+}

+ 47 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/enums/PaymentTypeEnum.java

@@ -0,0 +1,47 @@
+package com.fjhx.account.entity.account.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+//打款类型
+public enum PaymentTypeEnum {
+    UNDER_REVIEW("10", "请款"),
+    REJECT("20", "采购付款"),
+    RECEIVE("30", "退货到款登记"),
+    ;
+    private String key;
+
+    private String value;
+
+    private static Map<String, String> map = new LinkedHashMap<>();
+
+    PaymentTypeEnum(String key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<String, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (PaymentTypeEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+}

+ 34 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountDeptRunningWater.java

@@ -0,0 +1,34 @@
+package com.fjhx.account.entity.account.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 部门-资金流水关联表
+ * </p>
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@Getter
+@Setter
+@TableName("account_dept_running_water")
+public class AccountDeptRunningWater extends BasePo {
+
+
+
+    /**
+     * 资金流水表ID
+     */
+    private Long runningWaterId;
+
+    /**
+     * 是否分拆(10 未分拆,20 已分拆)
+     */
+    private String type;
+
+}

+ 43 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountDeptRunningWaterDetail.java

@@ -0,0 +1,43 @@
+package com.fjhx.account.entity.account.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 资金流水分拆部门表
+ * </p>
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@Getter
+@Setter
+@TableName("account_dept_running_water_detail")
+public class AccountDeptRunningWaterDetail extends BasePo {
+
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+
+    /**
+     * 部门-资金流水关联表ID
+     */
+    private Long deptRunningWaterId;
+
+    /**
+     * 分拆金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+}

+ 106 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountManagement.java

@@ -0,0 +1,106 @@
+package com.fjhx.account.entity.account.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 账户-管理表
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+@TableName("account_management")
+public class AccountManagement extends BasePo {
+
+    /**
+     * 归属公司id(common模块corporation表id)
+     */
+    private Long corporationId;
+
+    /**
+     * 账户别名
+     */
+    private String alias;
+
+    /**
+     * 账户名
+     */
+    private String name;
+
+    /**
+     * 开户银行
+     */
+    private String openingBank;
+
+    /**
+     * 开户账号
+     */
+    private String accountOpening;
+
+    /**
+     * 联行号
+     */
+    private String interbankNumber;
+
+
+
+    /**
+     * 账户名称(外汇信息)
+     */
+    private String beneficiaryName;
+
+    /**
+     * 开户银行(外汇信息)
+     */
+    private String beneficiaryBank;
+
+    /**
+     * 开户银行地址(外汇信息)
+     */
+    private String beneficiaryBankAddress;
+
+    /**
+     * 账号(外汇信息)
+     */
+    private String beneficiaryAccountNumber;
+
+    /**
+     * 银行代码(外汇信息)
+     */
+    private String swiftCode;
+
+    /**
+     * 收款人地址(外汇信息)
+     */
+    private String beneficiaryAddress;
+
+
+
+
+
+//    /**
+//     * 云帆ID
+//     */
+//    private String yfId;
+//
+//    /**
+//     * 云帆——归属公司id(common模块corporation表id)
+//     */
+//    private String yfCorporationId;
+//
+//    private String yfCreateUser;
+//
+//    private String yfUpdateUser;
+//
+//    private String tenantId;
+
+
+
+
+}

+ 126 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountPayment.java

@@ -0,0 +1,126 @@
+package com.fjhx.account.entity.account.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 打款表
+ * </p>
+ *
+ * @author
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+@TableName("account_payment")
+public class AccountPayment extends BasePo {
+
+    /**
+     * 账户表ID
+     */
+    private Long accountManagementId;
+
+    /**
+     * 业务表ID
+     */
+    private Long businessId;
+
+    /**
+     * 归属部门ID
+     */
+    private Long departmentId;
+
+    /**
+     * 归属公司ID
+     */
+    private Long corporationId;
+
+    /**
+     * 打款时间
+     */
+    private Date expensesTime;
+
+    /**
+     * 用款时间
+     */
+    private Date paymentTime;
+
+    /**
+     * 币种(字典account_currency)
+     */
+    private String currency;
+
+    /**
+     * 付款金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 打款状态(10已打款 20 未打款)
+     */
+    private String status;
+
+    /**
+     * 付款类型(10:请款  20 采购付款) 字典payment_type
+     */
+    private String type;
+
+    /**
+     * 摘要
+     */
+    private String remark;
+
+    /**
+     * 款项说明
+     */
+    private String paymentRemark;
+
+
+    /**
+     * 付款方式(字典funds_payment_method(多余的业务字段)
+     */
+    private String paymentMethod;
+
+    /**
+     * 户名(业务中的收款户名)(多余的业务字段)
+     */
+    private String name;
+
+    /**
+     * 开户银行(业务中的收款开户银行)(多余的业务字段)
+     */
+    private String openingBank;
+
+    /**
+     * 银行账号(业务中的收款银行账号)(多余的业务字段)
+     */
+    private String accountOpening;
+
+    /**
+     * 联行号(业务中的收款联行号)(多余的业务字段)
+     */
+    private String interbankNumber;
+
+    /**
+     * 业务中选中的付款账户表ID(多余字段)
+     */
+    private Long businessManagementId;
+
+    /**
+     * 币种(字典account_currency)(业务中的付款币种)(多余的业务字段)
+     */
+    private String businessCurrency;
+
+
+    /**
+     * 业务金额(业务中需要收款的金额)(多余字段)
+     */
+    private BigDecimal incomeAmount;
+
+
+}

+ 52 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRemainder.java

@@ -0,0 +1,52 @@
+package com.fjhx.account.entity.account.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 账户-余额表
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+@TableName("account_remainder")
+public class AccountRemainder extends BasePo {
+
+    /**
+     * 账户管理表ID
+     */
+    private Long accountManagementId;
+
+    /**
+     * 币种(字典account_currency)
+     */
+    private String currency;
+
+    /**
+     * 余额
+     */
+    private BigDecimal remainder;
+
+    /**
+     * 变更-余额
+     */
+    private BigDecimal changeRemainder;
+
+    /**
+     * 交易状态:10 收入,20支出
+     */
+    private String status ;
+
+    /**
+     * 交易状态:10 收入,20支出
+     */
+    private String tenantId;
+}

+ 104 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRequestFunds.java

@@ -0,0 +1,104 @@
+package com.fjhx.account.entity.account.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 请款表
+ * </p>
+ *
+ * @author
+ * @since 2023-04-10
+ */
+@Getter
+@Setter
+@TableName("account_request_funds")
+public class AccountRequestFunds extends BasePo {
+
+    /**
+     * 归属部门ID
+     */
+    private Long departmentId;
+
+
+    /**
+     * 归属公司ID
+     */
+    private Long corporationId;
+
+    /**
+     * 付款账户ID
+     */
+    private Long accountManagementId;
+
+    /**
+     * 用款时间
+     */
+    private Date paymentTime;
+
+    /**
+     * 用款备注
+     */
+    private String paymentRemarks;
+
+    /**
+     * 流程状态
+     */
+    private String status;
+
+    /**
+     * 请款类型(字典funds_type)
+     */
+    private String type;
+
+    /**
+     * 请款总额
+     */
+    private BigDecimal total;
+
+    /**
+     * 单据数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 付款方式(字典funds_payment_method)
+     */
+    private String paymentMethod;
+
+    /**
+     * 户名
+     */
+    private String name;
+
+    /**
+     * 开户银行
+     */
+    private String openingBank;
+
+    /**
+     * 银行账号
+     */
+    private String accountOpening;
+
+    /**
+     * 联行号
+     */
+    private String interbankNumber;
+
+    /**
+     * 处理意见
+     */
+    private String remarks;
+
+    /**
+     * 币种(字典account_currency)
+     */
+    private String currency;
+
+}

+ 47 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRequestFundsDetail.java

@@ -0,0 +1,47 @@
+package com.fjhx.account.entity.account.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author
+ * @since 2023-04-10
+ */
+@Getter
+@Setter
+@TableName("account_request_funds_detail")
+public class AccountRequestFundsDetail extends BasePo {
+    /**
+     * 请款表ID
+     */
+    private Long accountRequestFundsId;
+
+    /**
+     * 费用类型(字典funds_cost_type)
+     */
+    private String costType;
+
+    /**
+     * 请款金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 款项说明
+     */
+    private String remarks;
+
+    /**
+     * 合同ID
+     */
+    private Long contractId;
+
+}

+ 103 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRunningWater.java

@@ -0,0 +1,103 @@
+package com.fjhx.account.entity.account.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * <p>
+ * 账户资金流水表
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+@TableName("account_running_water")
+public class AccountRunningWater extends BasePo {
+
+    /**
+     * 账户-管理表ID
+     */
+    private Long accountManagementId;
+
+    /**
+     * 业务ID
+     */
+    private Long businessId;
+
+
+    /**
+     * 流水类型。10:打款
+     */
+    private String type;
+
+    /**
+     * 收支类型:10 收入,20支出
+     */
+    private String status;
+
+    /**
+     * 金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 已认领总金额
+     */
+    private BigDecimal claimAmount;
+
+    /**
+     * 币种(字典account_currency)
+     */
+    @NotBlank(message = "币种不能为null")
+    private String currency;
+
+    /**
+     * 账户名
+     */
+    private String name;
+
+    /**
+     * 合同到账(10:是,20:否)
+     */
+    private String received;
+
+    /**
+     * 开户银行
+     */
+    private String openingBank;
+
+    /**
+     * 开户账号
+     */
+    private String accountOpening;
+
+    /**
+     * 交易时间
+     */
+    private Date transactionTime;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 是否认领
+     */
+    private Integer isClaim;
+
+    /**
+     * 条数
+     */
+    @TableField(exist = false)
+    private Integer count;
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountDeptRunningWaterDetailVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.vo;
+
+import com.fjhx.account.entity.account.po.AccountDeptRunningWaterDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 资金流水分拆部门表列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@Getter
+@Setter
+public class AccountDeptRunningWaterDetailVo extends AccountDeptRunningWaterDetail {
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountDeptRunningWaterVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.vo;
+
+import com.fjhx.account.entity.account.po.AccountDeptRunningWater;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 部门-资金流水关联表列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@Getter
+@Setter
+public class AccountDeptRunningWaterVo extends AccountDeptRunningWater {
+
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountManagementVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.vo;
+
+import com.fjhx.account.entity.account.po.AccountManagement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 账户-管理表列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountManagementVo extends AccountManagement {
+
+}

+ 42 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountPaymentVo.java

@@ -0,0 +1,42 @@
+package com.fjhx.account.entity.account.vo;
+
+import com.fjhx.account.entity.account.po.AccountPayment;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 打款表列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class AccountPaymentVo extends AccountPayment {
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     *归属公司名称
+     */
+    private String corporationName;
+
+    /**
+     * 用户名称
+     */
+    private  String userName;
+
+
+    /**
+     * 实际打款的付款账户名称
+     */
+    private  String accountManagementName;
+
+    /**
+     * 业务中选中的付款账户名称
+     */
+    private  String businessManagementName;
+}

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRemainderVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.account.entity.account.vo;
+
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 账户-余额表列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountRemainderVo extends AccountRemainder {
+
+}

+ 21 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRequestFundsDetailVo.java

@@ -0,0 +1,21 @@
+package com.fjhx.account.entity.account.vo;
+
+import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-10
+ */
+@Getter
+@Setter
+public class AccountRequestFundsDetailVo extends AccountRequestFundsDetail {
+
+    /**
+     * 币种
+     */
+    private String currency;
+}

+ 63 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRequestFundsVo.java

@@ -0,0 +1,63 @@
+package com.fjhx.account.entity.account.vo;
+
+import com.fjhx.account.entity.account.po.AccountRequestFunds;
+import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
+import com.fjhx.file.entity.ObsFile;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 请款表列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-10
+ */
+@Getter
+@Setter
+public class AccountRequestFundsVo extends AccountRequestFunds {
+    /**
+     * 归属公司名称
+     */
+    private String corporationName;
+
+    /**
+     * 归属部门名称
+     */
+    private String deptName;
+
+    /**
+     * 请款人名称
+     */
+    private String userName;
+
+    /**
+     * 打款状态(字典payment_status)
+     */
+    private String accountPaymentStatus;
+
+    /**
+     * 付款账户名称
+     */
+    private String accountManagementName;
+
+    /**
+     * 打款金额
+     */
+    private BigDecimal accountPaymentAmount;
+
+    //请款详情表的信息
+    private List<AccountRequestFundsDetail> accountRequestFundsDetailList;
+
+    /**
+     * 附件信息
+     */
+    private List<ObsFile> fileList;
+
+    /**
+     * 流程ID
+     */
+    private Long flowInfoId;
+}

+ 76 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRunningWaterVo.java

@@ -0,0 +1,76 @@
+package com.fjhx.account.entity.account.vo;
+
+import com.fjhx.account.entity.account.po.AccountDeptRunningWater;
+import com.fjhx.account.entity.account.po.AccountDeptRunningWaterDetail;
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 账户资金流水表列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Getter
+@Setter
+public class AccountRunningWaterVo extends AccountRunningWater {
+    /**
+     * 资金账户名称
+     */
+    private String accountManagementName;
+
+    /**
+     * 是否分拆(10 未分拆,20 已分拆 )
+     */
+    private String type;
+
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 资金流水-部门表ID
+     */
+    private Long accountDeptRunningWaterId;
+
+    /**
+     *资金流水-部门关联表列表
+     */
+    private List<AccountDeptRunningWaterDetail> deptRunningWaterDetailList;
+
+    /**
+     * 收入金额
+     */
+    private BigDecimal incomeAmount;
+
+    /**
+     * 支出金额
+     */
+    private BigDecimal expenditureAmount;
+
+
+    /**
+     * 结余金额
+     */
+    private BigDecimal balanceAmount;
+
+    /**
+     * 日期
+     */
+    private String time;
+
+    /**
+     * 收支类型
+     */
+    private String status;
+}

+ 66 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/CapitalDailyVo.java

@@ -0,0 +1,66 @@
+package com.fjhx.account.entity.account.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+@Getter
+@Setter
+public class CapitalDailyVo {
+
+    /**
+     * 归属公司id
+     */
+    private Long corporationId;
+
+    /**
+     * 归属公司名称
+     */
+    private String corporationName;
+
+    /**
+     * 账户信息
+     */
+    private List<Management> managementList;
+
+
+    @Getter
+    @Setter
+    public static class Management {
+
+        /**
+         * 账户id
+         */
+        private Long accountManagementId;
+
+        /**
+         * 账户名称
+         */
+        private String accountManagementAlias;
+
+        /**
+         * 货币
+         */
+        private List<Currency> currencyList;
+
+    }
+
+    @Getter
+    @Setter
+    public static class Currency {
+
+        /**
+         * 货币类型(币种)
+         */
+        private String currencyType;
+
+        /**
+         * 记录
+         */
+        private List<Map<String, Object>> flowingWaterList;
+
+    }
+
+}

+ 120 - 0
hx-account/src/main/java/com/fjhx/account/flow/AccountRequestFundsFlow.java

@@ -0,0 +1,120 @@
+package com.fjhx.account.flow;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.fjhx.account.entity.account.dto.AccountPaymentDto;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsDto;
+import com.fjhx.account.entity.account.enums.AccountRequestFundsStatusEnum;
+import com.fjhx.account.entity.account.enums.PaymentStatusEnum;
+import com.fjhx.account.entity.account.enums.PaymentTypeEnum;
+import com.fjhx.account.entity.account.po.AccountRequestFunds;
+import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
+import com.fjhx.account.service.account.AccountPaymentService;
+import com.fjhx.account.service.account.AccountRequestFundsDetailService;
+import com.fjhx.account.service.account.AccountRequestFundsService;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.file.utils.ObsFileUtil;
+import com.fjhx.flow.core.FlowDelegate;
+import com.obs.services.internal.ServiceException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ *  请款流程
+ * @Author:caozj
+ * @DATE:2023/4/3 17:38
+ */
+@DS(SourceConstant.ACCOUNT)
+@Component
+public class AccountRequestFundsFlow extends FlowDelegate {
+    @Autowired
+    private AccountPaymentService accountPaymentService;
+
+    @Override
+    public String getFlowKey() {
+        return "account_request_funds_flow";
+    }
+
+
+    /**
+     * 发起流程
+     * @param flowId 流程ID
+     * @param submitData 请款表信息
+     * @return
+     */
+    @Override
+    public Long start(Long flowId, JSONObject submitData) {
+//        DynamicDataSourceContextHolder.push(SourceConstant.ACCOUNT);
+        AccountRequestFundsService accountRequestFundsService = SpringUtil.getBean(AccountRequestFundsService.class);
+        AccountRequestFundsDetailService accountRequestFundsDetailService = SpringUtil.getBean(AccountRequestFundsDetailService.class);
+        AccountRequestFundsDto accountRequestFundsDto = submitData.toJavaObject( AccountRequestFundsDto.class);
+        accountRequestFundsDto.setStatus(AccountRequestFundsStatusEnum.UNDER_REVIEW.getKey());
+        //添加请款表的信息
+        accountRequestFundsService.save(accountRequestFundsDto);
+
+        //获取请款详情表的详细信息
+        List<AccountRequestFundsDetail> accountRequestFundsDetailList = accountRequestFundsDto.getAccountRequestFundsDetailList();
+        if(CollectionUtils.isNotEmpty(accountRequestFundsDetailList)){
+            accountRequestFundsDetailList.forEach(accountRequestFundsDetail -> accountRequestFundsDetail
+                    .setAccountRequestFundsId(accountRequestFundsDto.getId()));
+            //添加请款详情表的信息
+            accountRequestFundsDetailService.saveBatch(accountRequestFundsDetailList);
+        }
+        //添加附件信息
+        ObsFileUtil.saveFile(accountRequestFundsDto.getFileList(),accountRequestFundsDto.getId());
+        return accountRequestFundsDto.getId();
+    }
+
+    /**
+     * 结束流程
+     * @param flowId 流程ID
+     * @param businessId 业务ID
+     * @param submitData  请款表信息
+     */
+    @Override
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+        AccountRequestFundsService accountRequestFundsService = SpringUtil.getBean(AccountRequestFundsService.class);
+        //通过业务ID查询申购数据
+        AccountRequestFunds accountRequestFunds = accountRequestFundsService.getById(businessId);
+        AccountRequestFundsDto accountRequestFundsDto = submitData.toJavaObject( AccountRequestFundsDto.class);
+        if(ObjectUtils.isEmpty(accountRequestFunds)){
+            throw new ServiceException("请款表的数据不存在");
+        }
+        //修改申购状态为审批通过
+        accountRequestFunds.setStatus(AccountRequestFundsStatusEnum.PASS.getKey());
+        accountRequestFundsService.updateById(accountRequestFunds);
+        //添加打款的数据
+        addPayment(accountRequestFundsDto);
+    }
+
+    /**
+     * 添加打款表的数据
+     */
+    private void addPayment(AccountRequestFundsDto accountRequestFundsDto){
+        AccountPaymentDto accountPayment = new AccountPaymentDto();
+        accountPayment.setBusinessId(accountRequestFundsDto.getId());
+        accountPayment.setType(PaymentTypeEnum.UNDER_REVIEW.getKey());
+        accountPayment.setStatus(PaymentStatusEnum.UNDER_REVIEW.getKey());
+        accountPayment.setPaymentTime(accountPayment.getPaymentTime());
+        accountPayment.setPaymentRemark(accountRequestFundsDto.getPaymentRemarks());
+
+        accountPayment.setDepartmentId(accountRequestFundsDto.getDepartmentId());
+        accountPayment.setCorporationId(accountRequestFundsDto.getCorporationId());
+        accountPayment.setBusinessId(accountPayment.getId());
+        accountPayment.setPaymentMethod(accountRequestFundsDto.getPaymentMethod());
+        accountPayment.setIncomeAmount(accountRequestFundsDto.getTotal());
+        accountPayment.setAmount(accountRequestFundsDto.getTotal());
+        accountPayment.setName(accountRequestFundsDto.getName());
+        accountPayment.setBusinessManagementId(accountRequestFundsDto.getAccountManagementId());
+        accountPayment.setOpeningBank(accountRequestFundsDto.getOpeningBank());
+        accountPayment.setCurrency(accountPayment.getCurrency());
+        accountPayment.setAccountOpening(accountRequestFundsDto.getAccountOpening());
+        accountPayment.setInterbankNumber(accountPayment.getInterbankNumber());
+        accountPaymentService.save(accountPayment);
+    }
+}

+ 27 - 0
hx-account/src/main/java/com/fjhx/account/mapper/account/AccountDeptRunningWaterDetailMapper.java

@@ -0,0 +1,27 @@
+package com.fjhx.account.mapper.account;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fjhx.account.entity.account.po.AccountDeptRunningWaterDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountDeptRunningWaterDetailVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 资金流水分拆部门表 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-04-13
+ */
+public interface AccountDeptRunningWaterDetailMapper extends BaseMapper<AccountDeptRunningWaterDetail> {
+
+    /**
+     * 资金流水分拆部门表分页
+     */
+    Page<AccountDeptRunningWaterDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<AccountDeptRunningWaterDetail> wrapper);
+
+}

+ 41 - 0
hx-account/src/main/java/com/fjhx/account/mapper/account/AccountDeptRunningWaterMapper.java

@@ -0,0 +1,41 @@
+package com.fjhx.account.mapper.account;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fjhx.account.entity.account.po.AccountDeptRunningWater;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountDeptRunningWaterVo;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 部门-资金流水关联表 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-04-13
+ */
+public interface AccountDeptRunningWaterMapper extends BaseMapper<AccountDeptRunningWater> {
+
+    /**
+     * 部门-资金流水关联表分页
+     */
+    Page<AccountRunningWaterVo> getPage(@Param("page") Page<Object> page,@Param("ew") QueryWrapper<Object> wrapper);
+
+    /**
+     * 部门-资金流水统计列表
+     */
+    List<AccountRunningWaterVo> DeptRunningWaterReport(@Param("ew") QueryWrapper<Object> query);
+
+    /**
+     * 查询部门-资金流水统计信息
+     * @param query
+     * @return
+     */
+    List<AccountRunningWaterVo> deptRunningWaterStatistics(@Param("ew") QueryWrapper<Object> query);
+}

+ 37 - 0
hx-account/src/main/java/com/fjhx/account/mapper/account/AccountManagementMapper.java

@@ -0,0 +1,37 @@
+package com.fjhx.account.mapper.account;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fjhx.account.entity.account.dto.AccountManagementDto;
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountManagementVo;
+import com.ruoyi.common.annotation.TenantIgnore;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 账户-管理表 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+public interface AccountManagementMapper extends BaseMapper<AccountManagement> {
+
+    /**
+     * 账户-管理表分页
+     */
+    Page<AccountManagementVo> getPage(@Param("page") Page<Object> page, @Param("ew")LambdaQueryWrapper<AccountManagement> wrapper);
+
+    /**
+     * 查询云帆资金账户表的信息
+     */
+//    @TenantIgnore
+//    List<FundAccount> importsAmount(AccountManagementDto dto);
+}

+ 34 - 0
hx-account/src/main/java/com/fjhx/account/mapper/account/AccountPaymentMapper.java

@@ -0,0 +1,34 @@
+package com.fjhx.account.mapper.account;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fjhx.account.entity.account.po.AccountPayment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountPaymentVo;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 打款表 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-04-11
+ */
+public interface AccountPaymentMapper extends BaseMapper<AccountPayment> {
+
+    /**
+     * 打款表分页
+     */
+    Page<AccountPaymentVo> getPage(@Param("page") Page<Object> page, @Param("ew") QueryWrapper<Object> wrapper);
+
+    /**
+     * 查询打款详情
+     * @param id
+     * @return
+     */
+    AccountPayment detail(Long id);
+}

+ 26 - 0
hx-account/src/main/java/com/fjhx/account/mapper/account/AccountRemainderMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.account.mapper.account;
+
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRemainderVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 账户-余额表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-06
+ */
+public interface AccountRemainderMapper extends BaseMapper<AccountRemainder> {
+
+    /**
+     * 账户-余额表分页
+     */
+    Page<AccountRemainderVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<AccountRemainder> wrapper);
+
+}

+ 34 - 0
hx-account/src/main/java/com/fjhx/account/mapper/account/AccountRequestFundsDetailMapper.java

@@ -0,0 +1,34 @@
+package com.fjhx.account.mapper.account;
+
+import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsDetailVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-10
+ */
+public interface AccountRequestFundsDetailMapper extends BaseMapper<AccountRequestFundsDetail> {
+
+    /**
+     * 分页
+     */
+    Page<AccountRequestFundsDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<AccountRequestFundsDetail> wrapper);
+
+    /**
+     * 获取列表根据合同ID
+     * @param contractId
+     * @return
+     */
+    List<AccountRequestFundsDetailVo> getListByContractId(Long contractId);
+}

+ 27 - 0
hx-account/src/main/java/com/fjhx/account/mapper/account/AccountRequestFundsMapper.java

@@ -0,0 +1,27 @@
+package com.fjhx.account.mapper.account;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fjhx.account.entity.account.po.AccountRequestFunds;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 请款表 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-04-10
+ */
+public interface AccountRequestFundsMapper extends BaseMapper<AccountRequestFunds> {
+
+    /**
+     * 请款表分页
+     */
+    Page<AccountRequestFundsVo> getPage(@Param("page") Page<Object> page, @Param("ew") QueryWrapper<Object> wrapper);
+
+}

+ 40 - 0
hx-account/src/main/java/com/fjhx/account/mapper/account/AccountRunningWaterMapper.java

@@ -0,0 +1,40 @@
+package com.fjhx.account.mapper.account;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 账户资金流水表 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+public interface AccountRunningWaterMapper extends BaseMapper<AccountRunningWater> {
+
+    /**
+     * 账户资金流水表分页
+     */
+    Page<AccountRunningWaterVo> getPage(@Param("page") Page<Object> page, @Param("ew")QueryWrapper<Object> wrapper);
+
+    /**
+     * 查询至今账户详情
+     * @param id
+     * @return
+     */
+    AccountRunningWaterVo getDetail(Long id);
+
+    /**
+     * 账户资金流水表分页
+     */
+    List<AccountRunningWaterVo> getList(@Param("ew") QueryWrapper<Object> wrapper);
+}

+ 49 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountDeptRunningWaterDetailService.java

@@ -0,0 +1,49 @@
+package com.fjhx.account.service.account;
+
+import com.fjhx.account.entity.account.po.AccountDeptRunningWaterDetail;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountDeptRunningWaterDetailVo;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterDetailSelectDto;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterDetailDto;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 资金流水分拆部门表 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-13
+ */
+public interface AccountDeptRunningWaterDetailService extends BaseService<AccountDeptRunningWaterDetail> {
+
+    /**
+     * 资金流水分拆部门表分页
+     */
+    Page<AccountDeptRunningWaterDetailVo> getPage(AccountDeptRunningWaterDetailSelectDto dto);
+
+    /**
+     * 资金流水分拆部门表明细
+     */
+    AccountRunningWaterVo detail(Long id);
+
+    /**
+     * 资金流水分拆部门表新增
+     */
+    void add(AccountRunningWaterVo accountRunningWaterVo);
+
+    /**
+     * 资金流水分拆部门表编辑
+     */
+    void edit(AccountDeptRunningWaterDetailDto accountDeptRunningWaterDetailDto);
+
+    /**
+     * 资金流水分拆部门表删除
+     */
+    void delete(Long id);
+
+}

+ 63 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountDeptRunningWaterService.java

@@ -0,0 +1,63 @@
+package com.fjhx.account.service.account;
+
+import com.fjhx.account.entity.account.po.AccountDeptRunningWater;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountDeptRunningWaterVo;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterSelectDto;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterDto;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * <p>
+ * 部门-资金流水关联表 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-13
+ */
+public interface AccountDeptRunningWaterService extends BaseService<AccountDeptRunningWater> {
+
+    /**
+     * 部门-资金流水关联表分页
+     */
+    Page<AccountRunningWaterVo> getPage(AccountDeptRunningWaterSelectDto dto);
+
+    /**
+     * 部门-资金流水关联表明细
+     */
+    AccountDeptRunningWaterVo detail(Long id);
+
+    /**
+     * 部门-资金流水关联表新增
+     */
+    void add(AccountDeptRunningWaterDto accountDeptRunningWaterDto);
+
+    /**
+     * 部门-资金流水关联表编辑
+     */
+    void edit(AccountDeptRunningWaterDto accountDeptRunningWaterDto);
+
+    /**
+     * 部门-资金流水关联表删除
+     */
+    void delete(Long id);
+
+    /**
+     * 部门-资金流水报表
+     * @param dto
+     * @return
+     */
+    List<Map<String,Object>> DeptRunningWaterReport(AccountDeptRunningWaterSelectDto dto);
+
+    /**
+     * 部门-资金流水统计( 部门-资金流水列表)
+     * @param dto
+     * @return
+     */
+    Map<String, Object> deptRunningWaterStatistics(AccountDeptRunningWaterSelectDto dto);
+}

+ 60 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountManagementService.java

@@ -0,0 +1,60 @@
+package com.fjhx.account.service.account;
+
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountManagementVo;
+import com.fjhx.account.entity.account.dto.AccountManagementSelectDto;
+import com.fjhx.account.entity.account.dto.AccountManagementDto;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * <p>
+ * 账户-管理表 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+public interface AccountManagementService extends BaseService<AccountManagement> {
+
+    /**
+     * 账户-管理表分页
+     */
+    Page<AccountManagementVo> getPage(AccountManagementSelectDto dto);
+
+    /**
+     * 账户-管理表明细
+     */
+    AccountManagementDto detail(Long id);
+
+    /**
+     * 账户-管理表新增
+     */
+    void add(AccountManagementDto accountManagementDto);
+
+    /**
+     * 账户-管理表编辑
+     */
+    void edit(AccountManagementDto accountManagementDto);
+
+    /**
+     * 账户-管理表删除
+     */
+    void delete(Long id);
+
+    /**
+     * 账户统计(账户列表)
+     */
+    List<Map<String, Object>> managementStatistics(AccountManagementSelectDto dto);
+
+//    /**
+//     * 导入账户表的数据
+//     */
+//    void importsAmount(AccountManagementDto dto);
+}

+ 48 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountPaymentService.java

@@ -0,0 +1,48 @@
+package com.fjhx.account.service.account;
+
+import com.fjhx.account.entity.account.dto.AccountRequestFundsSelectDto;
+import com.fjhx.account.entity.account.po.AccountPayment;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsVo;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountPaymentVo;
+import com.fjhx.account.entity.account.dto.AccountPaymentSelectDto;
+import com.fjhx.account.entity.account.dto.AccountPaymentDto;
+
+
+/**
+ * <p>
+ * 打款表 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-11
+ */
+public interface AccountPaymentService extends BaseService<AccountPayment> {
+
+    /**
+     * 打款表分页
+     */
+    Page<AccountPaymentVo> getPage(AccountRequestFundsSelectDto dto);
+
+    /**
+     * 打款表明细
+     */
+    AccountPaymentVo detail(Long id);
+
+    /**
+     * 打款功能
+     */
+    void add(AccountPaymentDto accountPaymentDto);
+
+    /**
+     * 打款表编辑
+     */
+    void edit(AccountPaymentDto accountPaymentDto);
+
+    /**
+     * 打款表删除
+     */
+    void delete(Long id);
+
+}

+ 46 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountRemainderService.java

@@ -0,0 +1,46 @@
+package com.fjhx.account.service.account;
+
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRemainderVo;
+import com.fjhx.account.entity.account.dto.AccountRemainderSelectDto;
+import com.fjhx.account.entity.account.dto.AccountRemainderDto;
+
+
+/**
+ * <p>
+ * 账户-余额表 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+public interface AccountRemainderService extends BaseService<AccountRemainder> {
+
+    /**
+     * 账户-余额表分页
+     */
+    Page<AccountRemainderVo> getPage(AccountRemainderSelectDto dto);
+
+    /**
+     * 账户-余额表明细
+     */
+    AccountRemainderVo detail(Long id);
+
+    /**
+     * 账户-余额表新增
+     */
+    void add(AccountRemainder accountRemainderDto);
+
+    /**
+     * 账户-余额表编辑
+     */
+    void edit(AccountRemainderDto accountRemainderDto);
+
+    /**
+     * 账户-余额表删除
+     */
+    void delete(Long id);
+
+}

+ 55 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountRequestFundsDetailService.java

@@ -0,0 +1,55 @@
+package com.fjhx.account.service.account;
+
+import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsDetailVo;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsDetailSelectDto;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsDetailDto;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-10
+ */
+public interface AccountRequestFundsDetailService extends BaseService<AccountRequestFundsDetail> {
+
+    /**
+     * 分页
+     */
+    Page<AccountRequestFundsDetailVo> getPage(AccountRequestFundsDetailSelectDto dto);
+
+    /**
+     * 明细
+     */
+    AccountRequestFundsDetailVo detail(Long id);
+
+    /**
+     * 新增
+     */
+    void add(AccountRequestFundsDetailDto accountRequestFundsDetailDto);
+
+    /**
+     * 编辑
+     */
+    void edit(AccountRequestFundsDetailDto accountRequestFundsDetailDto);
+
+    /**
+     * 删除
+     */
+    void delete(Long id);
+
+    /**
+     * 根据合同ID获取列表
+     * @param contractId
+     * @return
+     */
+    List<AccountRequestFundsDetailVo> getListByContractId(Long contractId);
+
+}

+ 46 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountRequestFundsService.java

@@ -0,0 +1,46 @@
+package com.fjhx.account.service.account;
+
+import com.fjhx.account.entity.account.po.AccountRequestFunds;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsVo;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsSelectDto;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsDto;
+
+
+/**
+ * <p>
+ * 请款表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-10
+ */
+public interface AccountRequestFundsService extends BaseService<AccountRequestFunds> {
+
+    /**
+     * 请款表分页
+     */
+    Page<AccountRequestFundsVo> getPage(AccountRequestFundsSelectDto dto);
+
+    /**
+     * 请款表明细
+     */
+    AccountRequestFundsVo detail(Long id);
+
+    /**
+     * 请款表新增
+     */
+    void add(AccountRequestFundsDto accountRequestFundsDto);
+
+    /**
+     * 请款表编辑
+     */
+    void edit(AccountRequestFundsDto accountRequestFundsDto);
+
+    /**
+     * 请款表删除
+     */
+    void delete(Long id);
+
+}

+ 59 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountRunningWaterService.java

@@ -0,0 +1,59 @@
+package com.fjhx.account.service.account;
+
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.fjhx.account.entity.account.dto.AccountRunningWaterSelectDto;
+import com.fjhx.account.entity.account.dto.AccountRunningWaterDto;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 账户资金流水表 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+public interface AccountRunningWaterService extends BaseService<AccountRunningWater> {
+
+    /**
+     * 账户资金流水表分页
+     */
+    Page<AccountRunningWaterVo> getPage(AccountRunningWaterSelectDto dto);
+
+    /**
+     * 账户资金流水表明细
+     */
+    AccountRunningWaterVo detail(Long id);
+
+    /**
+     * 账户资金流水表新增
+     */
+    void add(AccountRunningWaterDto accountRunningWaterDto);
+
+    /**
+     * 账户资金流水表编辑
+     */
+    void edit(AccountRunningWater accountRunningWater);
+
+    /**
+     * 账户资金流水表删除
+     */
+    void delete(Long id);
+
+    /**
+     * 到账任领统计
+     */
+    List<AccountRunningWater> claimStatistics(BaseSelectDto dto);
+
+    /**
+     * 账户资金流水表导出excel
+     */
+    void exportExcel(AccountRunningWaterSelectDto dto, HttpServletResponse httpServletResponse);
+}

+ 12 - 0
hx-account/src/main/java/com/fjhx/account/service/account/StatementService.java

@@ -0,0 +1,12 @@
+package com.fjhx.account.service.account;
+
+import com.fjhx.account.entity.account.dto.CapitalDailyDto;
+import com.fjhx.account.entity.account.vo.CapitalDailyVo;
+
+import java.util.List;
+
+public interface StatementService {
+
+    List<CapitalDailyVo> getCapitalDaily(CapitalDailyDto dto);
+
+}

+ 183 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountDeptRunningWaterDetailServiceImpl.java

@@ -0,0 +1,183 @@
+package com.fjhx.account.service.account.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.account.entity.account.po.AccountDeptRunningWater;
+import com.fjhx.account.entity.account.po.AccountDeptRunningWaterDetail;
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.fjhx.account.mapper.account.AccountDeptRunningWaterDetailMapper;
+import com.fjhx.account.service.account.AccountDeptRunningWaterDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.account.service.account.AccountDeptRunningWaterService;
+import com.fjhx.account.service.account.AccountRunningWaterService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountDeptRunningWaterDetailVo;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterDetailSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterDetailDto;
+import cn.hutool.core.bean.BeanUtil;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 资金流水分拆部门表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@Service
+public class AccountDeptRunningWaterDetailServiceImpl extends ServiceImpl<AccountDeptRunningWaterDetailMapper, AccountDeptRunningWaterDetail> implements AccountDeptRunningWaterDetailService {
+    @Autowired
+    private AccountRunningWaterService accountRunningWaterService;
+
+    @Autowired
+    private AccountDeptRunningWaterService accountDeptRunningWaterService;
+
+    @Override
+    public Page<AccountDeptRunningWaterDetailVo> getPage(AccountDeptRunningWaterDetailSelectDto dto) {
+        IWrapper<AccountDeptRunningWaterDetail> wrapper = getWrapper();
+        wrapper.orderByDesc("adrwd", AccountDeptRunningWaterDetail::getId);
+        Page<AccountDeptRunningWaterDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    /**
+     * 资金流水分拆部门表明细
+     */
+    @Override
+    public AccountRunningWaterVo detail(Long id) {
+        //查询资金流水信息
+        AccountRunningWater accountRunningWater = accountRunningWaterService.getById(id);
+        AccountRunningWaterVo accountRunningWaterVo = BeanUtil.toBean(accountRunningWater, AccountRunningWaterVo.class);
+            //判断是否有添加部门-资金流水表的信息
+        if (ObjectUtil.isNotEmpty(accountRunningWaterVo)){
+            //查询资金流水-部门关联表的信息(一个流水对应一个部门)
+            AccountDeptRunningWater accountDeptRunningWater = accountDeptRunningWaterService.getOne(Wrappers.<AccountDeptRunningWater>lambdaQuery()
+                    .eq(AccountDeptRunningWater::getRunningWaterId, accountRunningWater.getId()));
+            if(ObjectUtil.isNotEmpty(accountDeptRunningWater)){
+                //查询资金流水分拆部门表明细
+                List<AccountDeptRunningWaterDetail> accountDeptRunningWaterDetailList = this.list(Wrappers.<AccountDeptRunningWaterDetail>lambdaQuery()
+                        .eq(AccountDeptRunningWaterDetail::getDeptRunningWaterId, accountDeptRunningWater.getId()));
+
+                //插入资金流水分拆部门表明细信息
+                accountRunningWaterVo.setDeptRunningWaterDetailList(accountDeptRunningWaterDetailList);
+                //插入资金流水-部门关联表ID
+                accountRunningWaterVo.setAccountDeptRunningWaterId(accountDeptRunningWater.getId());
+            }
+
+        }
+
+        return accountRunningWaterVo;
+    }
+
+    /**
+     * 资金流水分拆部门表新增
+     */
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public void add(AccountRunningWaterVo accountRunningWaterVo) {
+        //判断是调整部门还是分拆(是否存在资金流水分拆部门表)
+        List<AccountDeptRunningWaterDetail> deptRunningWaterDetailList = accountRunningWaterVo.getDeptRunningWaterDetailList();
+        //修改资金流水-账户表的的分拆类型为已分拆
+        AccountDeptRunningWater accountDeptRunningWater = new AccountDeptRunningWater();
+
+        if (ObjectUtil.isNotEmpty(deptRunningWaterDetailList)){//分拆功能
+            //分拆功能 添加或者修改资金流水分拆部门表的数据
+          saveOrEditAccountDeptRunningWaterDetail(accountRunningWaterVo,accountDeptRunningWater,deptRunningWaterDetailList);
+        }else {//调整部门功能
+            //添加部门-资金流水关联表
+            AccountDeptRunningWaterDetail accountDeptRunningWaterDetail = new AccountDeptRunningWaterDetail();
+            accountDeptRunningWaterDetail.setDeptRunningWaterId(accountRunningWaterVo.getAccountDeptRunningWaterId());
+            accountDeptRunningWaterDetail.setDeptId(accountRunningWaterVo.getDeptId());
+            accountDeptRunningWaterDetail.setAmount(accountRunningWaterVo.getAmount());
+
+            //添加资金流水分拆部门表
+            accountDeptRunningWater.setRunningWaterId(accountRunningWaterVo.getId());
+            accountDeptRunningWater.setType("10");
+            //如果部门-资金流水关联表ID不为null修改资金流水分拆部门表的数据
+           if (ObjectUtil.isNotEmpty(accountRunningWaterVo.getAccountDeptRunningWaterId())){
+               //查询部门-资金流水关联表的数据(获取到部门-资金流水关联表中的数据是否分拆,如果是分拆则删除资金流水分拆部门表的数据,否则修改资金流水分拆部门表的数据在添加资金流水分拆部门表的数据)
+               AccountDeptRunningWater accountDeptRunningWater1 = accountDeptRunningWaterService.getById(accountRunningWaterVo.getAccountDeptRunningWaterId());
+
+               if (accountDeptRunningWater1.getType().equals("20")){
+                   accountDeptRunningWater.setId(accountRunningWaterVo.getAccountDeptRunningWaterId());
+                  accountDeptRunningWaterService.updateById(accountDeptRunningWater);
+                   //删除资金流水分拆部门表的数据
+                   baseMapper.delete(Wrappers.<AccountDeptRunningWaterDetail>lambdaQuery()
+                           .eq(AccountDeptRunningWaterDetail::getDeptRunningWaterId,accountRunningWaterVo.getAccountDeptRunningWaterId()));
+                   baseMapper.insert(accountDeptRunningWaterDetail);
+
+               }else if (accountDeptRunningWater1.getType().equals("10")){
+                   //修改资金流水分拆部门表的数据的数据
+                   baseMapper.update(accountDeptRunningWaterDetail,Wrappers.<AccountDeptRunningWaterDetail>lambdaQuery()
+                           .eq(AccountDeptRunningWaterDetail::getDeptRunningWaterId,accountRunningWaterVo.getAccountDeptRunningWaterId()));
+               }
+           }else {//如果部门-资金流水关联表ID为null添加资金流水分拆部门表的数据
+               //添加部门-资金流水关联表的信息
+               accountDeptRunningWaterService.save(accountDeptRunningWater);
+               accountDeptRunningWaterDetail.setDeptRunningWaterId(accountDeptRunningWater.getId());
+               baseMapper.insert(accountDeptRunningWaterDetail);
+           }
+        }
+
+    }
+
+    @Override
+    public void edit(AccountDeptRunningWaterDetailDto accountDeptRunningWaterDetailDto) {
+        this.updateById(accountDeptRunningWaterDetailDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+    //分拆功能 添加或者修改资金流水分拆部门表的数据
+    private void saveOrEditAccountDeptRunningWaterDetail(AccountRunningWaterVo accountRunningWaterVo,
+                                                         AccountDeptRunningWater accountDeptRunningWater,
+                                                         List<AccountDeptRunningWaterDetail> deptRunningWaterDetailList
+    ){
+        //如果存在部门-资金流水关联表的ID则修改
+        if (ObjectUtil.isNotEmpty(accountRunningWaterVo.getAccountDeptRunningWaterId())){
+            accountDeptRunningWater.setId(accountRunningWaterVo.getAccountDeptRunningWaterId());
+            accountDeptRunningWater.setType("20");
+            accountDeptRunningWaterService.updateById(accountDeptRunningWater);
+
+            //删除分拆部门表的数据
+            //获取到有参数中有分拆部门详情表的ID
+            List<Long> ids = deptRunningWaterDetailList.stream().map(deptRunningWaterDetail ->
+                    deptRunningWaterDetail.getId()).collect(Collectors.toList());
+
+            //删除数据库中不包含参数中有分拆部门详情表的ID的数据
+            this.remove(Wrappers.<AccountDeptRunningWaterDetail>lambdaQuery()
+                    .notIn(AccountDeptRunningWaterDetail::getId,ids).eq(AccountDeptRunningWaterDetail::getDeptRunningWaterId,
+                            accountRunningWaterVo.getAccountDeptRunningWaterId()));
+
+        }else {
+            accountDeptRunningWater.setRunningWaterId(accountRunningWaterVo.getId());
+            accountDeptRunningWater.setType("20");
+            accountDeptRunningWaterService.save(accountDeptRunningWater);
+        }
+        //获取分拆部门详情中ID为null的数据
+        deptRunningWaterDetailList = deptRunningWaterDetailList.stream()
+                .filter(deptRunningWaterDetail->deptRunningWaterDetail.getId()==null)
+                .collect(Collectors.toList());
+
+        //添加资金流水分拆部门表中ID为null的数据
+        deptRunningWaterDetailList.forEach(deptRunningWaterDetail->deptRunningWaterDetail
+                .setDeptRunningWaterId(accountRunningWaterVo.getAccountDeptRunningWaterId()));
+
+        this.saveBatch(deptRunningWaterDetailList);
+    }
+
+}

+ 246 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountDeptRunningWaterServiceImpl.java

@@ -0,0 +1,246 @@
+package com.fjhx.account.service.account.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.baomidou.mybatisplus.core.conditions.interfaces.Func;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.account.controller.utils.DateUtils;
+import com.fjhx.account.entity.account.po.AccountDeptRunningWater;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsVo;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.fjhx.account.mapper.account.AccountDeptRunningWaterMapper;
+import com.fjhx.account.service.account.AccountDeptRunningWaterService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.constant.SourceConstant;
+import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.service.ISysDeptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountDeptRunningWaterVo;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.account.entity.account.dto.AccountDeptRunningWaterDto;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 部门-资金流水关联表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@Service
+public class AccountDeptRunningWaterServiceImpl extends ServiceImpl<AccountDeptRunningWaterMapper, AccountDeptRunningWater> implements AccountDeptRunningWaterService {
+
+    @Autowired
+    private ISysDeptService sysDeptService;
+
+    @Override
+    public Page<AccountRunningWaterVo> getPage(AccountDeptRunningWaterSelectDto dto) {
+        QueryWrapper<Object> wrapper = Wrappers.query();
+        //收支类型
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getStatus()), "arw.status", dto.getStatus());
+        //币种
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getCurrency()), "arw.currency", dto.getCurrency());
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getType()),"adrw.type",dto.getType());
+        //归属公司id
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getCorporationId()),"am.corporation_id",dto.getCorporationId());
+        //摘要
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getRemarks()),"arw.remarks",dto.getRemarks());
+        //起始金额
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getBeginAmount()),"arw.amount",dto.getBeginAmount());
+        //结束金额
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getEndAmount()),"arw.amount",dto.getEndAmount());
+        //开始时间
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getBeginTime()),"arw.create_time",dto.getBeginTime());
+        //结束时间
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getEndTime()),"arw.create_time",dto.getEndTime());
+//        if (StringUtils.isNotEmpty(dto.getKeyword())) {
+//            wrapper.and(wrapper1 -> wrapper1.like("arw.remarks", dto.getKeyword()).or().like("arw.name", dto.getKeyword()));
+//        }
+
+        Page<AccountRunningWaterVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        //查询部门信息
+        List<SysDept> sysDeptList = sysDeptService.list();
+        Map<Long, List<SysDept>> sysDeptMap = sysDeptList.stream().collect(Collectors.groupingBy(SysDept::getDeptId));
+
+        List<AccountRunningWaterVo> records = page.getRecords();
+        for (AccountRunningWaterVo record : records) {
+            List<SysDept> sysDepts = sysDeptMap.get(record.getDeptId());
+            if (ObjectUtil.isNotEmpty(sysDepts)) {
+                record.setDeptName(sysDepts.get(0).getDeptName());
+            }
+        }
+        return page;
+    }
+
+    @Override
+    public AccountDeptRunningWaterVo detail(Long id) {
+        AccountDeptRunningWater AccountDeptRunningWater = this.getById(id);
+        AccountDeptRunningWaterVo result = BeanUtil.toBean(AccountDeptRunningWater, AccountDeptRunningWaterVo.class);
+        return result;
+    }
+
+    /**
+     * 部门-资金流水关联表新增
+     */
+    @Override
+    public void add(AccountDeptRunningWaterDto accountDeptRunningWaterDto) {
+        if (ObjectUtil.isNotEmpty(accountDeptRunningWaterDto.getId())){
+            this.updateById(accountDeptRunningWaterDto);
+        }else {
+            this.save(accountDeptRunningWaterDto);
+        }
+
+    }
+
+    @Override
+    public void edit(AccountDeptRunningWaterDto accountDeptRunningWaterDto) {
+        this.updateById(accountDeptRunningWaterDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+    /**
+     * 部门-资金流水报表
+     * @param dto
+     * @return
+     */
+    @Override
+    public  List<Map<String,Object>> DeptRunningWaterReport(AccountDeptRunningWaterSelectDto dto) {
+        if (ObjectUtil.isEmpty(dto.getBeginTime())&&ObjectUtil.isEmpty(dto.getEndTime())) {
+            throw new ServiceException("查询的时间范围不能为空!");
+        }
+        //获取月份集合
+        List<String> months = DateUtils.getMonthBetweenDate(dto.getBeginTime(), dto.getEndTime());
+        //存放部门信息
+        List<SysDept> sysDeptList = new ArrayList<>();
+        //查询部门信息
+        if (ObjectUtil.isNotEmpty(dto.getDeptId())){
+            //切换数据源
+            DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+            //判断是否存在子集的部门信息
+            sysDeptList =  sysDeptService.list(Wrappers.<SysDept>lambdaQuery().like(SysDept::getAncestors,dto.getDeptId())
+                    .orderByDesc(SysDept::getParentId));
+            SysDept sysDept = sysDeptService.getById(dto.getDeptId());
+            sysDeptList.add(sysDept);
+        }else {
+            //切换数据源
+            DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+            sysDeptList =  sysDeptService.list(Wrappers.<SysDept>lambdaQuery().orderByDesc(SysDept::getParentId));
+        }
+        //获取到部门ID
+        List<Long> deptIds = sysDeptList.stream().map(sysDept -> sysDept.getDeptId()).collect(Collectors.toList());
+
+        //查询资金流水表的信息
+        QueryWrapper<Object> query = Wrappers.query();
+        query.ge("DATE_FORMAT(ar.create_time,'%Y-%m')", DateUtil.format(dto.getBeginTime(),"yyyy-MM"));
+        query.le("DATE_FORMAT(ar.create_time,'%Y-%m')", DateUtil.format(dto.getEndTime(),"yyyy-MM"));
+        query.in("wd.dept_id",deptIds);
+        query.groupBy("wd.dept_id","time");
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.ACCOUNT);
+        List<AccountRunningWaterVo> accountRunningWaterVos = baseMapper.DeptRunningWaterReport(query);
+        Map<Long, List<AccountRunningWaterVo>> accountRunningWaterMap = accountRunningWaterVos.stream()
+                .collect(Collectors.groupingBy(AccountRunningWaterVo::getDeptId));
+
+        //存放部门费用统计的数据
+       List<Map<String,Object>> mapList = new ArrayList<>();
+        for (SysDept sysDept : sysDeptList) {
+            Map<String,Object> map = new HashMap<>();
+            map.put("deptName",sysDept.getDeptName());
+            //获取到这个部门的费用统计报表
+            List<AccountRunningWaterVo> accountRunningWaterVoList = accountRunningWaterMap.get(sysDept.getDeptId());
+            //如果这个部门没有费用统计表的数据则将统计相关数据表设计为0
+            if (ObjectUtil.isEmpty(accountRunningWaterVoList)){
+                accountRunningWaterVoList = new ArrayList<>();
+                for (String month : months) {
+                   AccountRunningWaterVo accountRunningWaterVo = new AccountRunningWaterVo();
+                   accountRunningWaterVo.setIncomeAmount(new BigDecimal(0));
+                   accountRunningWaterVo.setExpenditureAmount(new BigDecimal(0));
+                   accountRunningWaterVo.setBalanceAmount(new BigDecimal(0));
+                   accountRunningWaterVo.setTime(month);
+                   accountRunningWaterVoList.add(accountRunningWaterVo);
+                }
+            }else {
+                Map<String, List<AccountRunningWaterVo>> waterMap = accountRunningWaterVoList.stream()
+                        .collect(Collectors.groupingBy(AccountRunningWaterVo::getTime));
+
+                for (String month : months) {//判断这个月份中是否有这个数据,如果没有则赋值为0
+                    List<AccountRunningWaterVo> accountRunningWaterVos1 = waterMap.get(month);
+                    if (ObjectUtil.isEmpty(accountRunningWaterVos1)){
+                        AccountRunningWaterVo accountRunningWaterVo = new AccountRunningWaterVo();
+                        accountRunningWaterVo.setIncomeAmount(new BigDecimal(0));
+                        accountRunningWaterVo.setExpenditureAmount(new BigDecimal(0));
+                        accountRunningWaterVo.setBalanceAmount(new BigDecimal(0));
+                        accountRunningWaterVo.setTime(month);
+                        accountRunningWaterVoList.add(accountRunningWaterVo);
+                    }
+                }
+            }
+           map.put("accountRunningWaterVoList",accountRunningWaterVoList);
+            mapList.add(map);
+        }
+        return mapList;
+    }
+
+    /**
+     * 部门-资金流水统计( 部门-资金流水列表)
+     * @param dto
+     * @return
+     */
+    @Override
+    public Map<String, Object> deptRunningWaterStatistics(AccountDeptRunningWaterSelectDto dto) {
+        //存放流水统计数据
+        Map<String, Object> map = new HashMap<>();
+
+        QueryWrapper<Object> query = Wrappers.query();
+        query.groupBy("rwd.dept_id");
+        //查询部门-资金流水统计信息
+        List<AccountRunningWaterVo> accountRunningWaterVoList =  baseMapper.deptRunningWaterStatistics(query);
+
+        //计算收入合计数据
+        BigDecimal incomeAmount = accountRunningWaterVoList.stream().map(accountRunningWaterVo ->
+                accountRunningWaterVo.getIncomeAmount()).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+        //计算支出合计数据
+        BigDecimal expenditureAmount = accountRunningWaterVoList.stream().map(accountRunningWaterVo ->
+                accountRunningWaterVo.getExpenditureAmount()).reduce(BigDecimal.ZERO, BigDecimal::add);
+        map.put("incomeAmount",incomeAmount);
+        map.put("expenditureAmount",expenditureAmount);
+
+        //查询部门信息
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        List<SysDept> sysDeptList = sysDeptService.list();
+        Map<Long, List<SysDept>> sysDeptMap = sysDeptList.stream().collect(Collectors.groupingBy(SysDept::getDeptId));
+
+        //赋值部门信息
+        for (AccountRunningWaterVo accountRunningWaterVo : accountRunningWaterVoList) {
+            List<SysDept> sysDepts = sysDeptMap.get(accountRunningWaterVo.getDeptId());
+            if (CollectionUtils.isNotEmpty(sysDepts)){
+                accountRunningWaterVo.setDeptName(sysDepts.get(0).getDeptName());
+            }
+        }
+        map.put("accountRunningWaterVoList",accountRunningWaterVoList);
+        return map;
+    }
+
+}

+ 327 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountManagementServiceImpl.java

@@ -0,0 +1,327 @@
+package com.fjhx.account.service.account.impl;
+
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+import com.fjhx.account.mapper.account.AccountManagementMapper;
+import com.fjhx.account.service.account.AccountManagementService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.account.service.account.AccountRemainderService;
+import com.fjhx.account.service.account.AccountRunningWaterService;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.entity.corporation.po.Corporation;
+import com.fjhx.common.service.corporation.CorporationService;
+import com.fjhx.tenant.entity.dict.dto.DictTenantDataSelectDto;
+import com.fjhx.tenant.entity.dict.vo.DictTenantDataVo;
+import com.fjhx.tenant.service.dict.DictTenantDataService;
+import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.annotation.TenantIgnore;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.service.ISysUserService;
+import org.apache.poi.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountManagementVo;
+import com.fjhx.account.entity.account.dto.AccountManagementSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.account.entity.account.dto.AccountManagementDto;
+import cn.hutool.core.bean.BeanUtil;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 账户-管理表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Service
+public class AccountManagementServiceImpl extends ServiceImpl<AccountManagementMapper, AccountManagement> implements AccountManagementService {
+    @Autowired
+    private AccountRemainderService accountRemainderService;
+
+    @Autowired
+    private AccountRunningWaterService accountRunningWaterService;
+
+    @Autowired
+    private DictTenantDataService dictTenantDataService;
+
+
+    /**
+     * 账户-管理表分页
+     */
+    @Override
+    public Page<AccountManagementVo> getPage(AccountManagementSelectDto dto) {
+        LambdaQueryWrapper<AccountManagement> wrapper = Wrappers.<AccountManagement>lambdaQuery();
+        //根据关键字查询(查询的字段有账户别名、账户名称、账号)
+        if (StringUtils.isNotEmpty(dto.getKeyword())){
+            wrapper.and(wrapper1 ->{
+                wrapper1.like(AccountManagement::getName,dto.getKeyword()).or()
+                .like(AccountManagement::getAlias,dto.getKeyword()).or()
+                .like(AccountManagement::getAccountOpening,dto.getKeyword()).or()
+                        .like(AccountManagement::getOpeningBank,dto.getKeyword());
+            } );
+        }
+        Page<AccountManagementVo> page = baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    /**
+     * 账户-管理表明细
+     */
+    @Override
+    public AccountManagementDto detail(Long id) {
+        //查询账户管理表的明细
+        AccountManagement AccountManagement = this.getById(id);
+        AccountManagementDto result = BeanUtil.toBean(AccountManagement, AccountManagementDto.class);
+        //查询账户余额表的信息
+        List<AccountRemainder> accountRemainderList = accountRemainderService.list(Wrappers.<AccountRemainder>lambdaQuery()
+                .eq(AccountRemainder::getAccountManagementId, id));
+        result.setAccountRemainderList(accountRemainderList);
+        return result;
+    }
+
+    /**
+     * 账户-管理表新增
+     */
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public void add(AccountManagementDto accountManagementDto) {
+        //判断账户的别名是否已存在
+        List<AccountManagement> accountManagements = this.list(Wrappers.<AccountManagement>lambdaQuery()
+                .eq(AccountManagement::getAlias, accountManagementDto.getAlias()));
+        if (accountManagements.size()>0){
+            throw new ServiceException("数据错误:账户别名已存在请重新创建");
+        }
+        //添加账户管理表的信息
+        this.save(accountManagementDto);
+        //添加账户-余额表的信息
+        saveAccountRemainder(accountManagementDto);
+    }
+
+    /**
+     * 账户-管理表编辑
+     */
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public void edit(AccountManagementDto accountManagementDto) {
+        this.updateById(accountManagementDto);
+        //判断账户的别名是否已存在
+        List<AccountManagement> accountManagements = this.list(Wrappers.<AccountManagement>lambdaQuery()
+                .eq(AccountManagement::getAlias, accountManagementDto.getAlias()));
+        if (accountManagements.size()>1){
+            throw new ServiceException("数据错误:账户别名已存在请重新创建");
+        }
+        //删除账户-余额表的信息
+        List<AccountRemainder> accountRemainderList = accountManagementDto.getAccountRemainderList();
+        List<Long> ids = accountRemainderList.stream().map(accountRemainder -> accountRemainder.getId()).collect(Collectors.toList());
+        accountRemainderService.remove(Wrappers.<AccountRemainder>lambdaQuery()
+                .eq(AccountRemainder::getAccountManagementId,accountManagementDto.getId())
+                .notIn(AccountRemainder::getId,ids)
+        );
+        //添加账户余额表的信息
+        saveAccountRemainder(accountManagementDto);
+    }
+
+    /**
+     * 账户-管理表删除
+     */
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public void delete(Long id) {
+        //查询流水表的信息
+        List<AccountRunningWater> accountRunningWaterList = accountRunningWaterService.list(Wrappers.<AccountRunningWater>lambdaQuery()
+                .eq(AccountRunningWater::getAccountManagementId, id));
+        //如果存在流水表的数据则不能删除账户表的信息
+        if (accountRunningWaterList.size()>0){
+            throw new ServiceException("无法删除,该账户已存在流水数据");
+        }
+        //删除账户-管理表的信息
+        this.removeById(id);
+        //删除账户-余额表的信息
+        accountRemainderService.remove(Wrappers.<AccountRemainder>lambdaQuery()
+                .eq(AccountRemainder::getAccountManagementId,id));
+    }
+
+    /**
+     * 账户统计(账户列表)
+     */
+    @Override
+    public  List<Map<String, Object>> managementStatistics(AccountManagementSelectDto dto) {
+        //存放账户统计数据
+        List<Map<String, Object>> list = new ArrayList<>();
+
+        QueryWrapper<AccountRemainder> query = Wrappers.query();
+        query.groupBy("currency");
+        query.select("currency,sum(remainder) remainder");
+        List<AccountRemainder> accountRemainderList = accountRemainderService.list(query);
+
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        //获取来源的字典数据
+        List<DictTenantDataVo> dictTenantDataVos = getDict("customer_source");
+        DynamicDataSourceContextHolder.poll();
+
+        if (dictTenantDataVos.size()==0){
+            throw new ServiceException("数据有误:没有配置币种字典,请先配置");
+        }
+
+        //赋值
+        for (DictTenantDataVo dictTenantDataVo : dictTenantDataVos) {
+            //赋初始值信息
+            Map<String,Object> map = new HashMap<>();
+            map.put("currencyKey",dictTenantDataVo.getDictKey());
+            map.put("currencyValue",dictTenantDataVo.getDictValue());
+            map.put("remainder",new BigDecimal(0));
+            //赋值余额信息
+            if (accountRemainderList.size()>0){
+                Map<String, List<AccountRemainder>> accountRemainderMap = accountRemainderList.stream()
+                        .collect(Collectors.groupingBy(AccountRemainder::getCurrency));
+                List<AccountRemainder> accountRemainderList1 = accountRemainderMap.get(dictTenantDataVo.getDictKey());
+                if (ObjectUtil.isNotEmpty(accountRemainderList1)){
+                    map.put("remainder",accountRemainderList1.get(0).getRemainder());
+                }
+            }
+            list.add(map);
+        }
+
+        return list;
+    }
+
+    //根据字典编码获取字典的数据
+    private List<DictTenantDataVo> getDict(String code){
+        DictTenantDataSelectDto dto = new DictTenantDataSelectDto();
+        dto.setDictCode(code);
+        return dictTenantDataService.getList(dto);
+    }
+
+
+//    /**
+//     * 导入账户表的数据
+//     */
+//    @Override
+//    @Transactional(rollbackFor = {Exception.class})
+//    @TenantIgnore
+//    public void importsAmount(AccountManagementDto dto) {
+//        //查询云帆账户表的数据
+////        List<FundAccount> fundAccounts = baseMapper.importsAmount(dto);
+////        for (FundAccount fundAccount : fundAccounts) {
+////            //添加资金账户表的数据
+////            AccountManagement accountManagement = new AccountManagement();
+////            //查询多公司表
+////            if (ObjectUtil.isNotEmpty(fundAccount.getCompanyId())){
+////                DynamicDataSourceContextHolder.push(SourceConstant.COMMON);
+////
+////                Corporation corporation = corporationService.getOne(Wrappers.<Corporation>lambdaQuery().eq(Corporation::getYfId,fundAccount.getCompanyId()));
+////                if(ObjectUtil.isNotEmpty(corporation)){
+////                    accountManagement.setCorporationId(corporation.getId());
+////                }
+////
+////                DynamicDataSourceContextHolder.poll();
+////            }
+////            accountManagement.setTenantId(fundAccount.getTenantId());
+////            accountManagement.setYfId(fundAccount.getId());
+////            accountManagement.setAlias(fundAccount.getName());
+////            accountManagement.setAccountOpening(fundAccount.getAccountNumber());
+////            accountManagement.setCreateTime(fundAccount.getCreateTime());
+////            accountManagement.setUpdateTime(fundAccount.getUpdateTime());
+////            accountManagement.setAccountOpening(fundAccount.getAccountNumber());
+////            //查询用户
+////            if (ObjectUtil.isNotEmpty(fundAccount.getCreateUser())){
+////                DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+////                SysUser sysUser = sysUserService.getOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getYfUserId, fundAccount.getCreateUser()));
+////                accountManagement.setCreateUser(sysUser.getUserId());
+////                DynamicDataSourceContextHolder.poll();
+////            }
+////
+////            if (ObjectUtil.isNotEmpty(fundAccount.getUpdateUser())){
+////                DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+////                SysUser sysUser = sysUserService.getOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getYfUserId, fundAccount.getUpdateUser()));
+////                accountManagement.setCreateUser(sysUser.getUserId());
+////                DynamicDataSourceContextHolder.poll();
+////            }
+////            accountManagement.setCreateTime(fundAccount.getCreateTime());
+////            accountManagement.setUpdateTime(fundAccount.getUpdateTime());
+////            baseMapper.insert(accountManagement);
+////
+////            //添加资金账户余额表的信息
+////            AccountRemainder accountRemainder = new AccountRemainder();
+////            accountRemainder.setTenantId(fundAccount.getTenantId());
+////            accountRemainder.setAccountManagementId(accountManagement.getId());
+////            //查询用户
+////            if (ObjectUtil.isNotEmpty(fundAccount.getCreateUser())){
+////                DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+////                SysUser sysUser = sysUserService.getOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getYfUserId, fundAccount.getCreateUser()));
+////                accountRemainder.setCreateUser(sysUser.getUserId());
+////                DynamicDataSourceContextHolder.poll();
+////            }
+////
+////            if (ObjectUtil.isNotEmpty(fundAccount.getUpdateUser())){
+////
+////                DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+////                SysUser sysUser = sysUserService.getOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getYfUserId, fundAccount.getUpdateUser()));
+////                accountRemainder.setCreateUser(sysUser.getUserId());
+////                DynamicDataSourceContextHolder.poll();
+////            }
+////            if (ObjectUtil.isNotEmpty(fundAccount.getRmbAmount())){
+////                accountRemainder.setId(IdWorker.getId());
+////                accountRemainder.setRemainder(fundAccount.getRmbAmount());
+////                accountRemainder.setCurrency("RMB");
+////                accountRemainderService.save(accountRemainder);
+////            }
+////            if (ObjectUtil.isNotEmpty(fundAccount.getDollarAmount())){
+////                accountRemainder.setId(IdWorker.getId());
+////                accountRemainder.setRemainder(fundAccount.getDollarAmount());
+////                accountRemainder.setCurrency("USD");
+////                accountRemainderService.save(accountRemainder);
+////            }
+////            if (ObjectUtil.isNotEmpty(fundAccount.getEuroAmount())){
+////                accountRemainder.setId(IdWorker.getId());
+////                accountRemainder.setRemainder(fundAccount.getEuroAmount());
+////                accountRemainder.setCurrency("EUR");
+////                accountRemainderService.save(accountRemainder);
+////            }
+////
+////            if (ObjectUtil.isNotEmpty(fundAccount.getSterlingAmount())){
+////                accountRemainder.setId(IdWorker.getId());
+////                accountRemainder.setRemainder(fundAccount.getSterlingAmount());
+////                accountRemainder.setCurrency("GBP");
+////                accountRemainderService.save(accountRemainder);
+////            }
+////        }
+//
+//    }
+
+
+    /**
+     * 添加账户-余额表的信息
+     */
+    private void saveAccountRemainder(AccountManagementDto accountManagementDto){
+        List<AccountRemainder> accountRemainderList = accountManagementDto.getAccountRemainderList();
+        accountRemainderList.forEach(accountRemainder -> {
+            accountRemainder.setAccountManagementId(accountManagementDto.getId());
+            accountRemainderService.add(accountRemainder);
+        });
+
+    }
+}

+ 210 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountPaymentServiceImpl.java

@@ -0,0 +1,210 @@
+package com.fjhx.account.service.account.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.account.entity.account.dto.AccountPaymentDto;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsSelectDto;
+import com.fjhx.account.entity.account.enums.PaymentStatusEnum;
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.fjhx.account.entity.account.po.AccountPayment;
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+import com.fjhx.account.entity.account.vo.AccountPaymentVo;
+import com.fjhx.account.mapper.account.AccountPaymentMapper;
+import com.fjhx.account.service.account.AccountManagementService;
+import com.fjhx.account.service.account.AccountPaymentService;
+import com.fjhx.account.service.account.AccountRemainderService;
+import com.fjhx.account.service.account.AccountRunningWaterService;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.entity.corporation.po.Corporation;
+import com.fjhx.common.service.corporation.CorporationService;
+import com.fjhx.file.utils.ObsFileUtil;
+import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.core.domain.BasePo;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.utils.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 打款表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-11
+ */
+@Service
+public class AccountPaymentServiceImpl extends ServiceImpl<AccountPaymentMapper, AccountPayment> implements AccountPaymentService {
+    @Autowired
+    private CorporationService corporationService;
+
+    @Autowired
+    private ISysDeptService sysDeptService;
+
+    @Autowired
+    private AccountRemainderService accountRemainderService;
+
+    @Autowired
+    private AccountRunningWaterService accountRunningWaterService;
+
+    @Autowired
+    private AccountManagementService accountManagementService;
+
+    @Override
+    public Page<AccountPaymentVo> getPage(AccountRequestFundsSelectDto dto) {
+        QueryWrapper<Object> wrapper = Wrappers.query();
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getPaymentStatus()),"ap.status",dto.getPaymentStatus());
+        wrapper.like(ObjectUtil.isNotEmpty(dto.getKeyword()),"ap.payment_remark",dto.getKeyword());
+        wrapper.orderByDesc("ap.status","ap.payment_time","ap.create_time");
+        Page<AccountPaymentVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.COMMON);
+        //查询公司名称信息
+        List<Corporation> corporationList = corporationService.list();
+        Map<Long, List<Corporation>> corporationMap = corporationList.stream().collect(Collectors.groupingBy(Corporation::getId));
+        DynamicDataSourceContextHolder.poll();
+
+
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        //查询部门信息
+        List<SysDept> sysDeptList = sysDeptService.list();
+        Map<Long, List<SysDept>> sysDeptMap = sysDeptList.stream().collect(Collectors.groupingBy(SysDept::getDeptId));
+
+
+        //赋值部门名称、归属公司名称
+        List<AccountPaymentVo> records = page.getRecords();
+        for (AccountPaymentVo record : records) {
+            List<SysDept> sysDepts = sysDeptMap.get(record.getDepartmentId());
+            if (ObjectUtil.isNotEmpty(sysDepts)){
+                record.setDeptName(sysDepts.get(0).getDeptName());
+            }
+            List<Corporation> corporations = corporationMap.get(record.getCorporationId());
+            if (ObjectUtil.isNotEmpty(corporations)){
+                record.setCorporationName(corporations.get(0).getName());
+            }
+
+        }
+
+        // 赋值用户名称
+        UserUtil.assignmentNickName(records, BasePo::getCreateUser,AccountPaymentVo::setUserName);
+
+        return page;
+    }
+
+    /**
+     * 打款表明细
+     */
+    @Override
+    public AccountPaymentVo detail(Long id) {
+        AccountPayment AccountPayment = baseMapper.detail(id);
+        AccountPaymentVo result = BeanUtil.toBean(AccountPayment, AccountPaymentVo.class);
+
+        if (ObjectUtil.isNotEmpty(result.getAccountManagementId())){
+            //查询实际打款的付款账户名称;
+            AccountManagement accountManagement = accountManagementService.getById(result.getAccountManagementId());
+            if (ObjectUtil.isNotEmpty(accountManagement)){
+                result.setAccountManagementName(accountManagement.getName());
+            }
+
+        }
+
+        if (ObjectUtil.isNotEmpty(result.getBusinessManagementId())){
+            //查询业务中选中的付款账户名称;
+            AccountManagement accountManagement = accountManagementService.getById(result.getBusinessManagementId());
+            if (ObjectUtil.isNotEmpty(accountManagement)){
+                result.setBusinessManagementName(accountManagement.getName());
+            }
+
+        }
+        return result;
+    }
+
+    /**
+     * 打款功能
+     * @param accountPaymentDto
+     */
+    @Override
+    @DSTransactional
+    public void add(AccountPaymentDto accountPaymentDto) {
+        AccountRemainder accountRemainder = accountRemainderService.getOne(Wrappers.<AccountRemainder>lambdaQuery()
+                .eq(AccountRemainder::getAccountManagementId, accountPaymentDto.getAccountManagementId())
+                .eq(AccountRemainder::getCurrency, accountPaymentDto.getCurrency()));
+        //如果不存在这条数据则返回账户余额不足
+        if (ObjectUtil.isEmpty(accountRemainder)){
+            throw new ServiceException("账户余额不足");
+        }
+        //如果余额小于付款金额则返回账户余额不足
+        if (accountRemainder.getRemainder().compareTo(accountPaymentDto.getAmount()) == -1){
+            throw new ServiceException("账户余额不足");
+        }
+        //TODO 只要发起就是已打款(后期可能要修改)
+        accountRemainder.setStatus(PaymentStatusEnum.REJECT.getKey());
+        if (ObjectUtil.isEmpty(accountPaymentDto.getId())){
+            this.save(accountPaymentDto);
+        }else {
+            this.updateById(accountPaymentDto);
+        }
+
+        //添加附件信息
+        ObsFileUtil.saveFile(accountPaymentDto.getFileList(),accountPaymentDto.getId());
+        accountRemainder.setChangeRemainder(accountPaymentDto.getAmount());
+        //修改账户-余额表的中余额
+        accountRemainder.setRemainder( accountRemainder.getRemainder().subtract(accountPaymentDto.getAmount()));
+        //打款的交易状态都是支出
+        accountRemainder.setStatus("20");
+        accountRemainderService.add(accountRemainder);
+
+        //添加资金流水表的数据
+        addAccountRunningWater(accountPaymentDto);
+    }
+
+    @Override
+    public void edit(AccountPaymentDto accountPaymentDto) {
+        this.updateById(accountPaymentDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+    /**
+     * 添加资金流水表的数据
+     */
+    private void  addAccountRunningWater(AccountPaymentDto accountPaymentDto){
+
+        AccountRunningWater accountRunningWater = new AccountRunningWater();
+        accountRunningWater.setAccountManagementId(accountPaymentDto.getAccountManagementId());
+        //打款的状态都是支出
+        accountRunningWater.setStatus("20");
+        accountRunningWater.setAmount(accountPaymentDto.getAmount());
+        accountRunningWater.setCurrency(accountPaymentDto.getCurrency());
+        accountRunningWater.setOpeningBank(accountPaymentDto.getOpeningBank());
+        accountRunningWater.setAccountOpening(accountPaymentDto.getAccountOpening());
+        accountRunningWater.setName(accountPaymentDto.getName());
+        accountRunningWater.setTransactionTime(accountPaymentDto.getExpensesTime());
+        accountRunningWater.setRemarks(accountPaymentDto.getRemark());
+        accountRunningWater.setBusinessId(accountPaymentDto.getId());
+        //添加流水类型
+        accountRunningWater.setType("10");
+        accountRunningWaterService.save(accountRunningWater);
+
+    }
+
+
+}

+ 65 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRemainderServiceImpl.java

@@ -0,0 +1,65 @@
+package com.fjhx.account.service.account.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.fjhx.account.mapper.account.AccountRemainderMapper;
+import com.fjhx.account.service.account.AccountRemainderService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRemainderVo;
+import com.fjhx.account.entity.account.dto.AccountRemainderSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.account.entity.account.dto.AccountRemainderDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 账户-余额表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Service
+public class AccountRemainderServiceImpl extends ServiceImpl<AccountRemainderMapper, AccountRemainder> implements AccountRemainderService {
+
+    @Override
+    public Page<AccountRemainderVo> getPage(AccountRemainderSelectDto dto) {
+        IWrapper<AccountRemainder> wrapper = getWrapper();
+        wrapper.orderByDesc("ar", AccountRemainder::getId);
+        Page<AccountRemainderVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public AccountRemainderVo detail(Long id) {
+        AccountRemainder AccountRemainder = this.getById(id);
+        AccountRemainderVo result = BeanUtil.toBean(AccountRemainder, AccountRemainderVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(AccountRemainder accountRemainderDto) {
+        synchronized (this){
+            if (ObjectUtil.isNotEmpty(accountRemainderDto.getId())){
+                this.updateById(accountRemainderDto);
+            }else {
+                this.save(accountRemainderDto);
+            }
+        }
+
+    }
+
+    @Override
+    public void edit(AccountRemainderDto accountRemainderDto) {
+        this.updateById(accountRemainderDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 69 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRequestFundsDetailServiceImpl.java

@@ -0,0 +1,69 @@
+package com.fjhx.account.service.account.impl;
+
+import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
+import com.fjhx.account.mapper.account.AccountRequestFundsDetailMapper;
+import com.fjhx.account.service.account.AccountRequestFundsDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsDetailVo;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsDetailSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsDetailDto;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-10
+ */
+@Service
+public class AccountRequestFundsDetailServiceImpl extends ServiceImpl<AccountRequestFundsDetailMapper, AccountRequestFundsDetail> implements AccountRequestFundsDetailService {
+
+    @Override
+    public Page<AccountRequestFundsDetailVo> getPage(AccountRequestFundsDetailSelectDto dto) {
+        IWrapper<AccountRequestFundsDetail> wrapper = getWrapper();
+        wrapper.orderByDesc("arfd", AccountRequestFundsDetail::getId);
+        Page<AccountRequestFundsDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public AccountRequestFundsDetailVo detail(Long id) {
+        AccountRequestFundsDetail AccountRequestFundsDetail = this.getById(id);
+        AccountRequestFundsDetailVo result = BeanUtil.toBean(AccountRequestFundsDetail, AccountRequestFundsDetailVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(AccountRequestFundsDetailDto accountRequestFundsDetailDto) {
+        this.save(accountRequestFundsDetailDto);
+    }
+
+    @Override
+    public void edit(AccountRequestFundsDetailDto accountRequestFundsDetailDto) {
+        this.updateById(accountRequestFundsDetailDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+    /**
+     * 获取列表根据合同ID
+     * @param contractId
+     * @return
+     */
+    @Override
+    public List<AccountRequestFundsDetailVo> getListByContractId(Long contractId) {
+        return baseMapper.getListByContractId(contractId);
+    }
+
+}

+ 179 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRequestFundsServiceImpl.java

@@ -0,0 +1,179 @@
+package com.fjhx.account.service.account.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsDto;
+import com.fjhx.account.entity.account.dto.AccountRequestFundsSelectDto;
+import com.fjhx.account.entity.account.po.AccountRequestFunds;
+import com.fjhx.account.entity.account.po.AccountRequestFundsDetail;
+import com.fjhx.account.entity.account.vo.AccountRequestFundsVo;
+import com.fjhx.account.mapper.account.AccountRequestFundsMapper;
+import com.fjhx.account.service.account.AccountRequestFundsDetailService;
+import com.fjhx.account.service.account.AccountRequestFundsService;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.entity.corporation.po.Corporation;
+import com.fjhx.common.service.corporation.CorporationService;
+import com.fjhx.flow.entity.flow.po.FlowExample;
+import com.fjhx.flow.entity.flow.po.FlowInfo;
+import com.fjhx.flow.service.flow.FlowExampleService;
+import com.fjhx.flow.service.flow.FlowInfoService;
+import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.core.domain.BasePo;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.utils.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 请款表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-10
+ */
+@Service
+public class AccountRequestFundsServiceImpl extends ServiceImpl<AccountRequestFundsMapper, AccountRequestFunds> implements AccountRequestFundsService {
+    @Autowired
+    private CorporationService corporationService;
+
+    @Autowired
+    private ISysDeptService sysDeptService;
+
+    @Autowired
+    private AccountRequestFundsDetailService accountRequestFundsDetailService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    @Autowired
+    private FlowExampleService flowExampleService;
+
+    /**
+     * 查询请款列表
+     * @param dto
+     * @return
+     */
+    @Override
+    public Page<AccountRequestFundsVo> getPage(AccountRequestFundsSelectDto dto) {
+        QueryWrapper<Object> wrapper = Wrappers.query();
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getType()),"arf.type",dto.getType());
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getStatus()),"arf.status",dto.getStatus());
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getPaymentStatus()),"ap.status",dto.getPaymentStatus());
+        wrapper.like(ObjectUtil.isNotEmpty(dto.getKeyword()),"arf.payment_remarks",dto.getKeyword());
+        wrapper.orderByDesc("ap.status","arf.payment_time","arf.create_time");
+        Page<AccountRequestFundsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        //赋值部门名称、归属公司名称
+        List<AccountRequestFundsVo> records = page.getRecords();
+
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.COMMON);
+        //查询公司名称信息
+        List<Corporation> corporationList = corporationService.list();
+        Map<Long, List<Corporation>> corporationMap = corporationList.stream().collect(Collectors.groupingBy(Corporation::getId));
+        DynamicDataSourceContextHolder.poll();
+
+
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        //查询部门信息
+        List<SysDept> sysDeptList = sysDeptService.list();
+        Map<Long, List<SysDept>> sysDeptMap = sysDeptList.stream().collect(Collectors.groupingBy(SysDept::getDeptId));
+
+        //根据业务ID列表获取流程实例Id列表
+        List<Long> ids = records.stream().map(AccountRequestFundsVo::getId).collect(Collectors.toList());
+        List<FlowExample> flowExamples = flowExampleService.list(Wrappers.<FlowExample>lambdaQuery().in(FlowExample::getBusinessId, ids));
+        Map<Long, List<FlowExample>> flowInfoMap = flowExamples.stream().collect(Collectors.groupingBy(FlowExample::getBusinessId));
+
+
+        for (AccountRequestFundsVo record : records) {
+            //赋值部门信息
+            List<SysDept> sysDepts = sysDeptMap.get(record.getDepartmentId());
+            if (ObjectUtil.isNotEmpty(sysDepts)){
+                record.setDeptName(sysDepts.get(0).getDeptName());
+            }
+
+            //赋值公司信息
+            List<Corporation> corporations = corporationMap.get(record.getCorporationId());
+            if (ObjectUtil.isNotEmpty(corporations)){
+                record.setCorporationName(corporations.get(0).getName());
+            }
+
+            //赋值流程ID
+            List<FlowExample> flowInfoList = flowInfoMap.get(record.getId());
+            if (ObjectUtil.isEmpty(flowInfoList)){
+                throw new ServiceException("数据有误:该请款没有找到流程详情信息信息");
+            }
+            record.setFlowInfoId(flowInfoList.get(0).getId());
+        }
+
+        // 赋值用户名称
+        UserUtil.assignmentNickName(records, BasePo::getCreateUser,AccountRequestFundsVo::setUserName);
+        DynamicDataSourceContextHolder.poll();
+        return page;
+    }
+
+    /**
+     * 查询请款详情
+     * @param id
+     * @return
+     */
+    @Override
+    public AccountRequestFundsVo detail(Long id){
+        AccountRequestFunds accountRequestFunds = this.getById(id);
+        AccountRequestFundsVo accountRequestFundsVo = BeanUtil.toBean(accountRequestFunds, AccountRequestFundsVo.class);
+
+        //获取到请款明细信息
+        List<AccountRequestFundsDetail> accountRequestFundsDetailList = accountRequestFundsDetailService
+                .list(Wrappers.<AccountRequestFundsDetail>lambdaQuery()
+                        .eq(AccountRequestFundsDetail::getAccountRequestFundsId, accountRequestFunds.getId()));
+        accountRequestFundsVo.setAccountRequestFundsDetailList(accountRequestFundsDetailList);
+
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.COMMON);
+        //查询归属公司的名称
+        Corporation corporation = corporationService.getById(accountRequestFundsVo.getCorporationId());
+        if (ObjectUtil.isEmpty(corporation)){
+            throw new ServiceException("没有找到归属公司信息");
+        }
+        accountRequestFundsVo.setCorporationName(corporation.getName());
+
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        //查询部门名称信息
+        SysDept sysDept = sysDeptService.getById(accountRequestFundsVo.getDepartmentId());
+        if (ObjectUtil.isEmpty(sysDept)){
+            throw new ServiceException("没有找到归属部门信息");
+        }
+        accountRequestFundsVo.setDeptName(sysDept.getDeptName());
+        return accountRequestFundsVo;
+    }
+
+    @Override
+    public void add(AccountRequestFundsDto accountRequestFundsDto) {
+        this.save(accountRequestFundsDto);
+    }
+
+    @Override
+    public void edit(AccountRequestFundsDto accountRequestFundsDto) {
+        this.updateById(accountRequestFundsDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 232 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRunningWaterServiceImpl.java

@@ -0,0 +1,232 @@
+package com.fjhx.account.service.account.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.account.entity.account.bo.AccountRunningWaterBo;
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+import com.fjhx.account.mapper.account.AccountRunningWaterMapper;
+import com.fjhx.account.service.account.AccountRemainderService;
+import com.fjhx.account.service.account.AccountRunningWaterService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.item.util.excel.util.ExcelUtil;
+import com.fjhx.tenant.entity.dict.dto.DictTenantDataSelectDto;
+import com.fjhx.tenant.entity.dict.vo.DictTenantDataVo;
+import com.fjhx.tenant.service.dict.DictTenantDataService;
+import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.annotation.TenantIgnore;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.ruoyi.common.utils.StringUtils;
+import org.apache.commons.collections4.ListUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
+import com.fjhx.account.entity.account.dto.AccountRunningWaterSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.account.entity.account.dto.AccountRunningWaterDto;
+import cn.hutool.core.bean.BeanUtil;
+import org.springframework.transaction.annotation.Transactional;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 账户资金流水表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-06
+ */
+@Service
+public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWaterMapper, AccountRunningWater> implements AccountRunningWaterService {
+    @Autowired
+    private AccountRemainderService accountRemainderService;
+
+    @Autowired
+    private DictTenantDataService dictTenantDataService;
+
+
+
+    @Override
+    public Page<AccountRunningWaterVo> getPage(AccountRunningWaterSelectDto dto) {
+        QueryWrapper<Object> wrapper = Wrappers.query();
+        //资金账户
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getAccountManagementId()), "arw.account_management_id", dto.getAccountManagementId());
+        //交易类型
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getStatus()), "arw.status", dto.getStatus());
+        //是否合同到账
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getReceived()), "arw.received", dto.getReceived());
+        //币种
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getCurrency()), "arw.currency", dto.getCurrency());
+        //是否认领
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getIsClaim()), "arw.is_claim", dto.getIsClaim());
+        //交易开始金额
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getBeginAmount()),"arw.amount",dto.getBeginAmount());
+        //交易结束金额
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getEndAmount()),"arw.amount",dto.getEndAmount());
+        //交易开始时间
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getBeginTime()),"arw.create_time",dto.getBeginTime());
+        //交易结束金额
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getEndTime()),"arw.create_time",dto.getEndTime());
+        //对方账户名称
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getName()),"arw.name",dto.getName());
+        //摘要
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getRemarks()),"arw.name",dto.getRemarks());
+        if (StringUtils.isNotEmpty(dto.getKeyword())) {
+            wrapper.and(wrapper1 -> wrapper1.like("arw.remarks", dto.getKeyword()).or().like("arw.name", dto.getKeyword()));
+        }
+        if(ObjectUtil.isNotEmpty(dto.getDataType())&&dto.getDataType()==1){//到账认领数据
+            wrapper.eq("arw.received",10);
+            wrapper.orderByAsc("arw.is_claim","arw.create_time");
+        }
+        Page<AccountRunningWaterVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public AccountRunningWaterVo detail(Long id) {
+        AccountRunningWaterVo result = baseMapper.getDetail(id);
+        return result;
+    }
+    /**
+     * 账户资金流水表新增
+     */
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public void add(AccountRunningWaterDto accountRunningWaterDto) {
+
+        //修改账户余额表的余额
+        AccountRemainder accountRemainder = accountRemainderService.getOne(Wrappers.<AccountRemainder>lambdaQuery()
+                .eq(AccountRemainder::getAccountManagementId,accountRunningWaterDto.getAccountManagementId())
+                .eq(AccountRemainder::getCurrency,accountRunningWaterDto.getCurrency())
+        );
+        if (ObjectUtil.isEmpty(accountRemainder)){
+            throw new ServiceException("账户余额不足");
+        }
+        accountRemainder.setStatus(accountRunningWaterDto.getStatus());
+        //修改变更余额
+        accountRemainder.setChangeRemainder(accountRunningWaterDto.getAmount());
+        if (accountRunningWaterDto.getStatus().equals("10")){
+            accountRemainder.setRemainder(accountRemainder.getRemainder().add(accountRunningWaterDto.getAmount()));
+        }else if (accountRunningWaterDto.getStatus().equals("20")){
+           if (accountRemainder.getRemainder().compareTo(accountRunningWaterDto.getAmount()) ==-1){
+               throw new ServiceException("账户余额不足");
+           }else {
+               accountRemainder.setRemainder(accountRemainder.getRemainder().subtract(accountRunningWaterDto.getAmount()));
+           }
+        }
+        accountRemainderService.updateById(accountRemainder);
+        this.save(accountRunningWaterDto);
+    }
+
+
+    /**
+     * 账户资金流水表编辑
+     */
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public void edit(AccountRunningWater accountRunningWaterDto) {
+//        //查询资金流水表的数据
+//        AccountRunningWater accountRunningWater = this.getById(accountRunningWaterDto.getId());
+//
+//        //修改账户余额表的余额
+//        AccountRemainder accountRemainder = accountRemainderService.getOne(Wrappers.<AccountRemainder>lambdaQuery()
+//                .eq(AccountRemainder::getAccountManagementId,accountRunningWater.getAccountManagementId())
+//                .eq(AccountRemainder::getCurrency,accountRunningWater.getCurrency())
+//        );
+//        if (accountRemainder.getStatus().equals("10")){
+//            if (accountRemainder.getRemainder().compareTo(accountRunningWater.getAmount())==1)
+//        }
+
+        this.updateById(accountRunningWaterDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+    /**
+     * 到账任领统计
+     */
+    @Override
+    public List<AccountRunningWater> claimStatistics(BaseSelectDto dto) {
+        QueryWrapper<AccountRunningWater> query = Wrappers.query();
+        query.groupBy("is_claim");
+        query.select("is_claim,count(*) count");
+       //到账认领统计
+       return baseMapper.selectList(query);
+
+    }
+
+    @Override
+    public void exportExcel(AccountRunningWaterSelectDto dto, HttpServletResponse httpServletResponse) {
+        QueryWrapper<Object> wrapper = Wrappers.query();
+        //资金账户
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getAccountManagementId()), "arw.account_management_id", dto.getAccountManagementId());
+        //交易类型
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getStatus()), "arw.status", dto.getStatus());
+        //是否合同到账
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getReceived()), "arw.received", dto.getReceived());
+        //币种
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getCurrency()), "arw.currency", dto.getCurrency());
+        //是否认领
+        wrapper.eq(ObjectUtil.isNotEmpty(dto.getIsClaim()), "arw.is_claim", dto.getIsClaim());
+        //交易开始金额
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getBeginAmount()),"arw.amount",dto.getBeginAmount());
+        //交易结束金额
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getEndAmount()),"arw.amount",dto.getEndAmount());
+        //交易开始时间
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getBeginTime()),"arw.create_time",dto.getBeginTime());
+        //交易结束金额
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getEndTime()),"arw.create_time",dto.getEndTime());
+        //对方账户名称
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getName()),"arw.name",dto.getName());
+        //摘要
+        wrapper.ge(ObjectUtil.isNotEmpty(dto.getRemarks()),"arw.name",dto.getRemarks());
+        if (StringUtils.isNotEmpty(dto.getKeyword())) {
+            wrapper.and(wrapper1 -> wrapper1.like("arw.remarks", dto.getKeyword()).or().like("arw.name", dto.getKeyword()));
+        }
+        if(ObjectUtil.isNotEmpty(dto.getDataType())&&dto.getDataType()==1){//到账认领数据
+            wrapper.eq("arw.received",10);
+            wrapper.orderByAsc("arw.is_claim","arw.create_time");
+        }
+        List<AccountRunningWaterVo> records = this.baseMapper.getList(wrapper);
+
+        //赋值字典数据
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        List<DictTenantDataVo> dictTenantDataVos = getDict("account_currency");
+        if (dictTenantDataVos.size() == 0){
+            throw new ServiceException("数据有误:没有配置币种字典,请先配置");
+        }
+        Map<String, List<DictTenantDataVo>> dictTenantDataVoMap = dictTenantDataVos.stream()
+                .collect(Collectors.groupingBy(DictTenantDataVo::getDictKey));
+        DynamicDataSourceContextHolder.poll();
+        for (AccountRunningWaterVo accountRunningWaterVo : records) {
+            List<DictTenantDataVo> dictTenantDataVoList = dictTenantDataVoMap.get(accountRunningWaterVo.getCurrency());
+            if (ObjectUtil.isNotEmpty(dictTenantDataVoList)){
+                accountRunningWaterVo.setCurrency(dictTenantDataVoList.get(0).getDictValue());
+            }
+        }
+
+        //导出Excel
+        List<AccountRunningWaterBo> accountRunningWaterBos = BeanUtil.copyToList(records, AccountRunningWaterBo.class);
+        ExcelUtil.export(httpServletResponse, accountRunningWaterBos, AccountRunningWaterBo.class);
+    }
+
+    // 根据字典编码获取字典的数据
+    private List<DictTenantDataVo> getDict(String code) {
+        DictTenantDataSelectDto dto = new DictTenantDataSelectDto();
+        dto.setDictCode(code);
+        List<DictTenantDataVo> dictTenantDataServiceList = dictTenantDataService.getList(dto);
+        return dictTenantDataServiceList;
+    }
+
+}

+ 366 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/StatementServiceImpl.java

@@ -0,0 +1,366 @@
+package com.fjhx.account.service.account.impl;
+
+import cn.hutool.core.date.DateException;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.fjhx.account.entity.account.bo.CapitalDailyBo;
+import com.fjhx.account.entity.account.dto.CapitalDailyDto;
+import com.fjhx.account.entity.account.po.AccountManagement;
+import com.fjhx.account.entity.account.po.AccountRemainder;
+import com.fjhx.account.entity.account.po.AccountRunningWater;
+import com.fjhx.account.entity.account.vo.CapitalDailyVo;
+import com.fjhx.account.service.account.AccountManagementService;
+import com.fjhx.account.service.account.AccountRemainderService;
+import com.fjhx.account.service.account.AccountRunningWaterService;
+import com.fjhx.account.service.account.StatementService;
+import com.fjhx.common.entity.corporation.po.Corporation;
+import com.fjhx.common.service.corporation.CorporationService;
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.ruoyi.common.core.domain.BasePo;
+import com.ruoyi.common.exception.ServiceException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Service
+public class StatementServiceImpl implements StatementService {
+
+    @Autowired
+    private CorporationService corporationService;
+
+    @Autowired
+    private AccountManagementService accountManagementService;
+
+    @Autowired
+    private AccountRemainderService accountRemainderService;
+
+    @Autowired
+    private AccountRunningWaterService accountRunningWaterService;
+
+    @Override
+    public List<CapitalDailyVo> getCapitalDaily(CapitalDailyDto dto) {
+
+        Date beginDate, endDate;
+
+        Date date = new Date();
+        try {
+            Date parse = DateUtil.parse(dto.getDateBetween(), "yyyy-MM");
+            if (parse.after(DateUtil.endOfMonth(date))) {
+                throw new ServiceException("统计日期不能大于本月");
+            }
+
+            boolean sameMonth = DateUtil.isSameMonth(parse, date);
+
+            beginDate = DateUtil.beginOfMonth(parse);
+            endDate = sameMonth ? DateUtil.endOfDay(date) : DateUtil.endOfMonth(parse);
+        } catch (DateException dateException) {
+            throw new ServiceException("范围期间日期格式错误,应为 'yyyy-MM' 格式");
+        }
+
+        // 获取归属公司
+        List<Corporation> corporationList = getCorporationList(dto.getCorporationId());
+        if (corporationList.size() == 0) {
+            return new ArrayList<>();
+        }
+
+        // 获取账户
+        List<AccountManagement> managementList = getManagementList(dto.getManagementId(), corporationList);
+        if (managementList.size() == 0) {
+            return new ArrayList<>();
+        }
+
+        // 获取账户余额
+        List<AccountRemainder> remainderList = getRemainderList(managementList);
+        if (remainderList.size() == 0) {
+            return new ArrayList<>();
+        }
+
+        // 合并数据成bo对象
+        List<CapitalDailyBo> capitalDailyBoList = mergeBo(corporationList, managementList, remainderList);
+        if (capitalDailyBoList.size() == 0) {
+            return new ArrayList<>();
+        }
+
+        // 查询流水记录
+        List<AccountRunningWater> runningWaterList = getRunningWaterList(beginDate, managementList);
+
+        // 计算出结束时间余额
+        if (!DateUtil.isSameMonth(endDate, date)) {
+            calculationEndDateBalance(endDate, capitalDailyBoList, runningWaterList);
+        }
+
+        // 赋值收支流水明细
+        setRunningWaterDetail(capitalDailyBoList, endDate, runningWaterList);
+
+        // 格式化成vo
+        return formatVo(capitalDailyBoList);
+    }
+
+    /**
+     * 获取归属公司列表
+     */
+    private List<Corporation> getCorporationList(Long corporationId) {
+        return corporationService.list(q -> q
+                .select(BaseIdPo::getId, Corporation::getName)
+                .eq(ObjectUtil.isNotEmpty(corporationId), Corporation::getId, corporationId));
+    }
+
+    /**
+     * 获取账户
+     */
+    private List<AccountManagement> getManagementList(Long managementId, List<Corporation> corporationList) {
+        List<Long> corporationIdList = corporationList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+
+        return accountManagementService.list(q -> q
+                .select(BaseIdPo::getId, AccountManagement::getAlias, AccountManagement::getCorporationId)
+                .in(AccountManagement::getCorporationId, corporationIdList)
+                .eq(ObjectUtil.isNotEmpty(managementId), BaseIdPo::getId, managementId)
+        );
+    }
+
+    /**
+     * 获取货币并合并获取归属公司和账户数据
+     */
+    private List<AccountRemainder> getRemainderList(List<AccountManagement> accountManagementList) {
+
+        // 账户id
+        List<Long> accountManagementIdList =
+                accountManagementList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+
+        return accountRemainderService.list(q -> q
+                .select(AccountRemainder::getCurrency, AccountRemainder::getRemainder, AccountRemainder::getAccountManagementId)
+                .in(AccountRemainder::getAccountManagementId, accountManagementIdList)
+        );
+    }
+
+    /**
+     * 合并数据成bo对象
+     */
+    private List<CapitalDailyBo> mergeBo(List<Corporation> corporationList,
+                                         List<AccountManagement> accountManagementList,
+                                         List<AccountRemainder> remainderList) {
+
+        Map<Long, List<AccountManagement>> accountManagementMap = accountManagementList.stream()
+                .collect(Collectors.groupingBy(AccountManagement::getCorporationId));
+
+        Map<Long, List<AccountRemainder>> AccountRemainderMap = remainderList.stream()
+                .collect(Collectors.groupingBy(AccountRemainder::getAccountManagementId));
+
+        List<CapitalDailyBo> capitalDailyBoList = new ArrayList<>();
+
+        for (Corporation corporation : corporationList) {
+
+            List<AccountManagement> accountManagementItemList = accountManagementMap.get(corporation.getId());
+            if (accountManagementItemList == null) {
+                continue;
+            }
+
+            for (AccountManagement accountManagement : accountManagementItemList) {
+
+                List<AccountRemainder> accountRemainderList = AccountRemainderMap.get(accountManagement.getId());
+                if (accountRemainderList == null) {
+                    continue;
+                }
+
+                List<CapitalDailyBo> itemCapitalDailyBoList = accountRemainderList.stream()
+                        .map(item -> {
+                            CapitalDailyBo capitalDailyBo = new CapitalDailyBo();
+                            capitalDailyBo.setCorporationId(corporation.getId());
+                            capitalDailyBo.setCorporationName(corporation.getName());
+                            capitalDailyBo.setAccountManagementId(accountManagement.getId());
+                            capitalDailyBo.setAccountManagementAlias(accountManagement.getAlias());
+                            capitalDailyBo.setCurrencyType(item.getCurrency());
+                            capitalDailyBo.setRemainder(item.getRemainder());
+                            return capitalDailyBo;
+                        }).collect(Collectors.toList());
+
+                capitalDailyBoList.addAll(itemCapitalDailyBoList);
+            }
+
+        }
+
+        return capitalDailyBoList;
+    }
+
+    /**
+     * 查询流水记录
+     */
+    private List<AccountRunningWater> getRunningWaterList(Date beginDate, List<AccountManagement> managementList) {
+
+        List<Long> managementIdList = managementList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+
+        return accountRunningWaterService.list(q -> q
+                .ge(BasePo::getCreateTime, beginDate)
+                .in(AccountRunningWater::getAccountManagementId, managementIdList)
+        );
+
+    }
+
+    /**
+     * 计算出结束时间余额
+     */
+    private void calculationEndDateBalance(Date endDate,
+                                           List<CapitalDailyBo> capitalDailyBoList,
+                                           List<AccountRunningWater> runningWaterList) {
+
+        Map<Long, Map<String, List<AccountRunningWater>>> managementIdCurrencyRunningWaterMap =
+                runningWaterList.stream().collect(Collectors.groupingBy(
+                        AccountRunningWater::getAccountManagementId,
+                        Collectors.groupingBy(AccountRunningWater::getCurrency)
+                ));
+
+        for (CapitalDailyBo capitalDailyBo : capitalDailyBoList) {
+            Long accountManagementId = capitalDailyBo.getAccountManagementId();
+            Map<String, List<AccountRunningWater>> currencyRunningWaterMap = managementIdCurrencyRunningWaterMap.get(accountManagementId);
+
+            if (ObjectUtil.isEmpty(currencyRunningWaterMap)) {
+                continue;
+            }
+
+            List<AccountRunningWater> itemRunningWaterList = currencyRunningWaterMap.get(capitalDailyBo.getCurrencyType());
+
+            if (ObjectUtil.isEmpty(itemRunningWaterList)) {
+                continue;
+            }
+
+            // 计算结束时间至今金额改变值
+            BigDecimal reduce = itemRunningWaterList.stream()
+                    .filter(item -> item.getCreateTime().after(endDate))
+                    .map(item -> Objects.equals(item.getStatus(), "10") ? BigDecimal.ZERO.subtract(item.getAmount()) : item.getAmount())
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+
+            // 赋值结束时间余额
+            capitalDailyBo.setRemainder(capitalDailyBo.getRemainder().subtract(reduce));
+
+        }
+
+    }
+
+    /**
+     * 收支流水明细
+     */
+    private void setRunningWaterDetail(List<CapitalDailyBo> capitalDailyBoList, Date endDate,
+                                       List<AccountRunningWater> runningWaterList) {
+
+
+        // 账户id 币种 天数 收支类型 收支金额
+        Map<Long, Map<String, Map<Integer, Map<String, BigDecimal>>>> collect = runningWaterList.stream()
+                .filter(item -> !item.getCreateTime().after(endDate))
+                .collect(
+                        Collectors.groupingBy(AccountRunningWater::getAccountManagementId,
+                                Collectors.groupingBy(AccountRunningWater::getCurrency,
+                                        Collectors.groupingBy(item -> DateUtil.dayOfMonth(item.getCreateTime()),
+                                                Collectors.toMap(
+                                                        AccountRunningWater::getStatus,
+                                                        AccountRunningWater::getAmount,
+                                                        BigDecimal::add
+                                                )
+                                        )
+                                )
+                        )
+                );
+
+
+        int day = DateUtil.dayOfMonth(endDate);
+
+        for (CapitalDailyBo capitalDailyBo : capitalDailyBoList) {
+            Map<String, Map<Integer, Map<String, BigDecimal>>> item1 = collect.get(capitalDailyBo.getAccountManagementId());
+            Map<Integer, Map<String, BigDecimal>> item2 = null;
+            if (item1 != null) {
+                item2 = item1.get(capitalDailyBo.getCurrencyType());
+            }
+
+            List<Map<String, Object>> flowingWaterList = new ArrayList<>();
+
+            for (int i = day; i > 0; i--) {
+                Map<String, BigDecimal> item3 = null;
+                if (item2 != null) {
+                    item3 = item2.get(i);
+                }
+
+                Map<String, Object> flowingWaterMap = new LinkedHashMap<>();
+                if (item3 != null) {
+                    flowingWaterMap.put("income", ObjectUtil.defaultIfNull(item3.get("10"), BigDecimal.ZERO));
+                    flowingWaterMap.put("expenditure", ObjectUtil.defaultIfNull(item3.get("20"), BigDecimal.ZERO));
+                } else {
+                    flowingWaterMap.put("income", BigDecimal.ZERO);
+                    flowingWaterMap.put("expenditure", BigDecimal.ZERO);
+                }
+                BigDecimal remainder = capitalDailyBo.getRemainder();
+                flowingWaterMap.put("balance", remainder);
+                flowingWaterMap.put("day", i);
+
+                capitalDailyBo.setRemainder(
+                        remainder.subtract((BigDecimal) flowingWaterMap.get("income"))
+                                .add((BigDecimal) flowingWaterMap.get("expenditure")));
+
+                flowingWaterList.add(flowingWaterMap);
+            }
+
+
+            capitalDailyBo.setFlowingWaterList(flowingWaterList);
+        }
+
+    }
+
+
+    private List<CapitalDailyVo> formatVo(List<CapitalDailyBo> capitalDailyBoList) {
+
+        Map<Long, CapitalDailyVo> collect = capitalDailyBoList.stream().map(item -> {
+
+            List<CapitalDailyVo.Management> managementList = new ArrayList<>();
+            List<CapitalDailyVo.Currency> currencyList = new ArrayList<>();
+
+            CapitalDailyVo capitalDailyVo = new CapitalDailyVo();
+            capitalDailyVo.setCorporationId(item.getCorporationId());
+            capitalDailyVo.setCorporationName(item.getCorporationName());
+            capitalDailyVo.setManagementList(managementList);
+
+            CapitalDailyVo.Management management = new CapitalDailyVo.Management();
+            management.setAccountManagementId(item.getAccountManagementId());
+            management.setAccountManagementAlias(item.getAccountManagementAlias());
+            management.setCurrencyList(currencyList);
+            managementList.add(management);
+
+            CapitalDailyVo.Currency currency = new CapitalDailyVo.Currency();
+            currency.setCurrencyType(item.getCurrencyType());
+            currency.setFlowingWaterList(item.getFlowingWaterList());
+            currencyList.add(currency);
+
+            return capitalDailyVo;
+        }).collect(Collectors.toMap(
+                CapitalDailyVo::getCorporationId,
+                Function.identity(),
+                (v1, v2) -> {
+                    List<CapitalDailyVo.Management> managementList = v1.getManagementList();
+                    CapitalDailyVo.Management management = v2.getManagementList().get(0);
+
+                    boolean flag = false;
+
+                    for (CapitalDailyVo.Management item : managementList) {
+                        if (item.getAccountManagementId().equals(management.getAccountManagementId())) {
+                            flag = true;
+                            List<CapitalDailyVo.Currency> currencyList = item.getCurrencyList();
+                            currencyList.add(management.getCurrencyList().get(0));
+                            break;
+                        }
+                    }
+
+                    if (!flag) {
+                        managementList.add(management);
+                    }
+                    return v1;
+                }
+
+        ));
+
+        return new ArrayList<>(collect.values());
+    }
+
+
+}

+ 19 - 0
hx-account/src/main/resources/mapper/account/AccountDeptRunningWaterDetailMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.account.mapper.account.AccountDeptRunningWaterDetailMapper">
+    <select id="getPage" resultType="com.fjhx.account.entity.account.vo.AccountDeptRunningWaterDetailVo">
+        select
+            adrwd.id,
+            adrwd.dept_id,
+            adrwd.dept_running_water_id,
+            adrwd.amount,
+            adrwd.remarks,
+            adrwd.create_user,
+            adrwd.create_time,
+            adrwd.update_user,
+            adrwd.update_time
+        from account_dept_running_water_detail adrwd
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 57 - 0
hx-account/src/main/resources/mapper/account/AccountDeptRunningWaterMapper.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.account.mapper.account.AccountDeptRunningWaterMapper">
+    <select id="getPage" resultType="com.fjhx.account.entity.account.vo.AccountRunningWaterVo">
+        select
+            arw.id,
+            arw.account_management_id,
+            arw.status,
+            arw.amount,
+            arw.currency,
+            arw.name,
+            arw.received,
+            arw.opening_bank,
+            arw.account_opening,
+            arw.transaction_time,
+            arw.remarks,
+            arw.create_user,
+            arw.create_time,
+            arw.update_user,
+            arw.update_time,
+            am.alias accountManagementName,
+            adrw.type,
+            adrw.id  accountDeptRunningWaterId
+        from account_running_water arw
+                 left join  account_management am on arw.account_management_id = am.id
+                 left join account_dept_running_water adrw on arw.id = adrw.running_water_id
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="DeptRunningWaterReport" resultType="com.fjhx.account.entity.account.vo.AccountRunningWaterVo">
+        SELECT
+            IF(ar.`status` = 10,SUM(wd.amount),0) incomeAmount,
+            IF(ar.`status` = 20,SUM(wd.amount),0) expenditureAmount,
+            wd.dept_id deptId,
+            DATE_FORMAT(ar.create_time,'%Y-%m') time,
+	        (IF(ar.`status` = 10,SUM(wd.amount),0) - IF(ar.`status` = 20,SUM(wd.amount),0)) balanceAmount
+        FROM
+            account_dept_running_water rw
+            JOIN account_dept_running_water_detail wd  ON rw.id = wd.dept_running_water_id
+            LEFT JOIN account_running_water ar ON rw.running_water_id = ar.id
+            ${ew.customSqlSegment}
+    </select>
+    <select id="deptRunningWaterStatistics" resultType="com.fjhx.account.entity.account.vo.AccountRunningWaterVo">
+        select
+           arw.status,
+             <!-- 如果没有分配部门,则使用资金流水表的金额来计算无部门收入数据-->
+           IF(arw.`status` = 10,if(rwd.amount is null,ifnull(sum(arw.amount),0),ifnull(sum(rwd.amount),0)),0) incomeAmount,
+           <!-- 如果没有分配部门,则使用资金流水表的金额来计算无部门支出数据-->
+            IF(arw.`status` = 20,if(rwd.amount is null,ifnull(sum(arw.amount),0),ifnull(sum(rwd.amount),0)),0) expenditureAmount,
+           adrw.dept_id
+        from account_running_water arw
+            left join account_dept_running_water adrw on arw.id = adrw.running_water_id
+            left join account_dept_running_water_detail rwd on  adrw.id = rwd.dept_running_water_id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 14 - 0
hx-account/src/main/resources/mapper/account/AccountManagementMapper.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.account.mapper.account.AccountManagementMapper">
+    <select id="getPage" resultType="com.fjhx.account.entity.account.vo.AccountManagementVo">
+        select
+           am.*
+        from account_management am
+            ${ew.customSqlSegment}
+    </select>
+<!--    <select id="importsAmount" resultType="com.fjhx.account.entity.account.dto.FundAccount">-->
+<!--        select * from t_erp_fund_account where tenant_id = #{tenantId}-->
+<!--    </select>-->
+
+</mapper>

+ 44 - 0
hx-account/src/main/resources/mapper/account/AccountPaymentMapper.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.account.mapper.account.AccountPaymentMapper">
+    <select id="getPage" resultType="com.fjhx.account.entity.account.vo.AccountPaymentVo">
+        select
+            *
+        from account_payment ap
+            ${ew.customSqlSegment}
+    </select>
+    <select id="detail" resultType="com.fjhx.account.entity.account.po.AccountPayment">
+        select
+            ap.id,
+            ap.tenant_id,
+            ap.account_management_id,
+            ap.department_id,
+            ap.corporation_id,
+            ap.business_id,
+            ap.expenses_time,
+            ap.currency,
+            ap.payment_time,
+            ap.amount,
+            ap.status,
+            ap.type,
+            ap.remark,
+            ap.create_user,
+            ap.create_time,
+            ap.update_user,
+            ap.payment_remark,
+            ap.update_time,
+
+            ap.payment_method,
+            ap.income_amount,
+            ap.name,
+            ap.business_management_id,
+            ap.opening_bank,
+            ap.business_currency,
+            ap.account_opening,
+            ap.interbank_number
+        from account_payment ap
+        where
+           ap.id = #{id}
+    </select>
+
+</mapper>

+ 20 - 0
hx-account/src/main/resources/mapper/account/AccountRemainderMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.account.mapper.account.AccountRemainderMapper">
+    <select id="getPage" resultType="com.fjhx.account.entity.account.vo.AccountRemainderVo">
+        select
+            ar.id,
+            ar.account_management_id,
+            ar.currency,
+            ar.remainder,
+            ar.status,
+            ar.change_remainder,
+            ar.create_user,
+            ar.create_time,
+            ar.update_user,
+            ar.update_time
+        from account_remainder ar
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 31 - 0
hx-account/src/main/resources/mapper/account/AccountRequestFundsDetailMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.account.mapper.account.AccountRequestFundsDetailMapper">
+    <select id="getPage" resultType="com.fjhx.account.entity.account.vo.AccountRequestFundsDetailVo">
+        select
+            arfd.id,
+            arfd.account_request_funds_id,
+            arfd.cost_type,
+            arfd.amount,
+            arfd.remarks,
+            arfd.create_user,
+            arfd.create_time,
+            arfd.update_user,
+            arfd.update_time
+        from account_request_funds_detail arfd
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="getListByContractId" resultType="com.fjhx.account.entity.account.vo.AccountRequestFundsDetailVo">
+        SELECT
+            t2.currency,
+            t1.*
+        FROM
+            account_request_funds_detail t1
+        LEFT JOIN account_request_funds t2 ON t1.account_request_funds_id = t2.id
+        LEFT JOIN account_payment t3 ON t2.id = t3.business_id
+        WHERE
+            t1.contract_id = #{contractId}
+          AND t3.`status` = 20
+    </select>
+</mapper>

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff