24282 5 months ago
parent
commit
258a44c2c2

+ 2 - 0
jy-business/src/main/java/com/jy/business/capital/dao/CapitalTransactionsDao.java

@@ -27,6 +27,7 @@ public class CapitalTransactionsDao extends BaseDao<CapitalTransactionsMapper, C
                         ct.all,
                         ca.accountAlias.as(CapitalTransactionsVo::getAccountAlias),
                         ca.amount.as(CapitalTransactionsVo::getBalance),
+                        ca.initialAmount.as(CapitalTransactionsVo::getInitialAmount),
                         c.name.as(CapitalTransactionsVo::getCorporationName)
                 )
                 .from(ct)
@@ -40,6 +41,7 @@ public class CapitalTransactionsDao extends BaseDao<CapitalTransactionsMapper, C
                         ct.targetType.eq(dto.getTargetType())
                 )
                 .orderBy(
+                        ct.tradingTime.desc(),
                         ct.id.desc()
                 )
                 .page(dto.getPage());

+ 5 - 0
jy-business/src/main/java/com/jy/business/capital/model/entity/CapitalAccount.java

@@ -66,6 +66,11 @@ public class CapitalAccount extends BaseIdPo {
     private BigDecimal amount;
 
     /**
+     * 账户余额
+     */
+    private BigDecimal initialAmount;
+
+    /**
      * 备注
      */
     private String remark;

+ 5 - 0
jy-business/src/main/java/com/jy/business/capital/model/table/CapitalAccountTable.java

@@ -45,6 +45,11 @@ public class CapitalAccountTable extends Table<CapitalAccount> {
     public QueryColumn correspondentNumber = this.field(CapitalAccount::getCorrespondentNumber);
 
     /**
+     * 初始金额
+     */
+    public QueryColumn initialAmount = this.field(CapitalAccount::getInitialAmount);
+
+    /**
      * 账户余额
      */
     public QueryColumn amount = this.field(CapitalAccount::getAmount);

+ 10 - 0
jy-business/src/main/java/com/jy/business/capital/model/vo/CapitalTransactionsVo.java

@@ -31,4 +31,14 @@ public class CapitalTransactionsVo extends CapitalTransactions {
      */
     private BigDecimal balance;
 
+    /**
+     * 账户余额
+     */
+    private BigDecimal initialAmount;
+
+    /**
+     * 当前数据余额
+     */
+    private BigDecimal dateAmount;
+
 }

+ 49 - 1
jy-business/src/main/java/com/jy/business/capital/service/impl/CapitalTransactionsServiceImpl.java

@@ -13,7 +13,11 @@ import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -34,7 +38,51 @@ public class CapitalTransactionsServiceImpl implements CapitalTransactionsServic
 
     @Override
     public Page<CapitalTransactionsVo> getPage(CapitalTransactionsSelectDto dto) {
-        return capitalTransactionsDao.getPage(dto);
+        Page<CapitalTransactionsVo> page = capitalTransactionsDao.getPage(dto);
+        List<CapitalTransactionsVo> records = page.getRecords();
+
+        Map<Long, Date> map = new HashMap<>();
+        Map<Long, BigDecimal> map2 = new HashMap<>();
+        Map<Long, Long> map3 = new HashMap<>();
+        records.forEach(item -> {
+            map.computeIfAbsent(item.getCapitalAccountId(), k -> item.getTradingTime());
+            map2.computeIfAbsent(item.getCapitalAccountId(), k -> item.getBalance());
+            map3.computeIfAbsent(item.getCapitalAccountId(), k -> item.getId());
+        });
+
+        map2.keySet().forEach(item -> {
+
+            List<CapitalTransactions> list = capitalTransactionsDao.list(q -> q
+                    .eq(CapitalTransactions::getCapitalAccountId, item)
+                    .orderByDesc(CapitalTransactions::getTradingTime)
+                    .orderByDesc(CapitalTransactions::getId)
+                    .ge(CapitalTransactions::getTradingTime, map.get(item))
+            );
+
+            BigDecimal decimal = BigDecimal.ZERO;
+            for (CapitalTransactions capitalTransactions : list) {
+                if (capitalTransactions.getId().equals(map3.get(item))) {
+                    break;
+                }
+                if (capitalTransactions.getType() == 0) {
+                    decimal = decimal.add(capitalTransactions.getAmount());
+                } else {
+                    decimal = decimal.subtract(capitalTransactions.getAmount());
+                }
+            }
+
+            decimal = map2.get(item).add(decimal);
+
+            for (CapitalTransactionsVo record : records) {
+                if (record.getCapitalAccountId().equals(item)) {
+                    record.setDateAmount(decimal);
+                    decimal = record.getType() == 0 ? decimal.add(record.getAmount()) : decimal.subtract(record.getAmount());
+                }
+            }
+
+        });
+
+        return page;
     }
 
     @Override

+ 4 - 0
jy-ui/src/views/business/capital/account/index.vue

@@ -126,6 +126,10 @@ const columnConfig: ColumnConfigType[] = [
     label: '联行号'
   },
   {
+    prop: 'initialAmount',
+    label: '初期金额'
+  },
+  {
     prop: 'amount',
     label: '账户余额'
   },

+ 1 - 1
jy-ui/src/views/business/capital/transactions/index.vue

@@ -156,7 +156,7 @@ const columnConfig: ColumnConfigType[] = [
     width: 80
   },
   {
-    prop: 'balance',
+    prop: 'dateAmount',
     label: '余额',
     width: 100
   },