Explorar o código

资金日报表数据统计

yzc hai 1 ano
pai
achega
3865f86606

+ 15 - 10
hx-account/src/main/java/com/fjhx/account/service/account/impl/StatementServiceImpl.java

@@ -104,7 +104,6 @@ public class StatementServiceImpl implements StatementService {
         return capitalDailyBoList;
     }
 
-
     /**
      * 获取所有账户统计
      */
@@ -183,8 +182,7 @@ public class StatementServiceImpl implements StatementService {
         List<CapitalDailyBo> capitalDailyBoList = getCapitalDailyBoList(dto);
 
 
-        List<Map<String, Object>> mapList = new ArrayList<>();
-
+        Map<String, Map<String, Object>> totalMap = new HashMap<>();
 
         Map<String, BigDecimal> balanceMap = new HashMap<>();
         for (CapitalDailyBo capitalDailyBo : capitalDailyBoList) {
@@ -202,6 +200,7 @@ public class StatementServiceImpl implements StatementService {
                     .map(AccountRunningWater::getAmount)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
 
+            //支出
             BigDecimal expenditure = itemRunningWaterList.stream()
                     .filter(item -> item.getTransactionTime().before(endDate))
                     .filter(item -> Objects.equals(item.getStatus(), "20"))
@@ -209,16 +208,22 @@ public class StatementServiceImpl implements StatementService {
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
 
 
-            //支出
-            Map<String, Object> map1 = new HashMap<>();
-            map1.put("balance", balanceMap.getOrDefault(capitalDailyBo.getCurrencyType(), BigDecimal.ZERO).add(income).subtract(expenditure));
-            map1.put("income", income);
-            map1.put("expenditure", expenditure);
+            //统计成map
+            Map<String, Object> map1 = totalMap.getOrDefault( capitalDailyBo.getCurrencyType(),new HashMap<>());
+            BigDecimal balance1 = (BigDecimal) map1.getOrDefault("balance", BigDecimal.ZERO);
+            balance1 = balance1.add(balanceMap.getOrDefault(capitalDailyBo.getCurrencyType(), BigDecimal.ZERO).add(income).subtract(expenditure));
+            map1.put("balance", balance1);
+            BigDecimal income1 = (BigDecimal) map1.getOrDefault("income", BigDecimal.ZERO);
+            income1 = income1.add(income);
+            map1.put("income", income1);
+            BigDecimal expenditure1 = (BigDecimal) map1.getOrDefault("expenditure", BigDecimal.ZERO);
+            expenditure1 = expenditure1.add(expenditure);
+            map1.put("expenditure", expenditure1);
             map1.put("currency", capitalDailyBo.getCurrencyType());
 
-            mapList.add(map1);
+            totalMap.put(capitalDailyBo.getCurrencyType(),map1);
         }
-        return mapList;
+        return totalMap.values().stream().collect(Collectors.toList());
     }
 
     /**