From cc4bb9188b20bef417ff4ae9720278b26e2ee570 Mon Sep 17 00:00:00 2001 From: gaoxq <376340421@qq.com> Date: Mon, 23 Mar 2026 18:18:16 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/apps/web/ErpScreenController.java | 48 +- .../welcome/Erp/components/ChartV03.vue | 26 +- .../welcome/Erp/components/ChartV06.vue | 30 +- .../welcome/Erp/components/ChartV08.vue | 526 +++++++++--------- web-vue/packages/erp/api/erp/screen.ts | 3 + 5 files changed, 348 insertions(+), 285 deletions(-) diff --git a/web-api/src/main/java/com/jeesite/modules/apps/web/ErpScreenController.java b/web-api/src/main/java/com/jeesite/modules/apps/web/ErpScreenController.java index 241a12e..9d83923 100644 --- a/web-api/src/main/java/com/jeesite/modules/apps/web/ErpScreenController.java +++ b/web-api/src/main/java/com/jeesite/modules/apps/web/ErpScreenController.java @@ -119,6 +119,52 @@ public class ErpScreenController { return chartDataItems; } + /** + * 季度收支 + */ + @RequestMapping(value = "getErpQuarterChart") + @ResponseBody + public List getErpQuarterChart(ErpTransactionFlow erpTransactionFlow) { + List chartDataItems = new ArrayList<>(); + List flowList = erpTransactionFlowService.findList(erpTransactionFlow); + Map> accountMap = flowList.stream() + .collect(Collectors.groupingBy( + flow -> flow.getYearDate() + "Q" + (Integer.parseInt(flow.getMonthDate()) + 2) / 3, + Collectors.collectingAndThen(Collectors.toList(), list -> { + BigDecimal sumValue01 = list.stream() + .filter(flow -> flow.getFlowType().equals("2")) + .map(ErpTransactionFlow::getAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal sumValue02 = list.stream() + .filter(flow -> flow.getFlowType().equals("1")) + .map(ErpTransactionFlow::getAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal sumValue04 = BigDecimalUtils.subtract(sumValue01, sumValue02); + BigDecimal sumValue03 = BigDecimalUtils.percent(sumValue02, sumValue01); + return Map.of( + "sumValue01", sumValue01, + "sumValue02", sumValue02, + "sumValue03", sumValue03, + "sumValue04", sumValue04 + ); + }) + )); + List>> sortedList = new ArrayList<>(accountMap.entrySet()); + sortedList.sort(Map.Entry.comparingByKey()); + for (Map.Entry> entry : sortedList) { + String quarter = entry.getKey(); + Map map = entry.getValue(); + ChartDataItem item = new ChartDataItem(); + item.setAxisName(quarter); + item.setValue01(map.get("sumValue01").toString()); + item.setValue02(map.get("sumValue02").toString()); + item.setValue03(map.get("sumValue03").toString()); + item.setValue04(map.get("sumValue04").toString()); + chartDataItems.add(item); + } + return chartDataItems; + } + /** * 分类收支 @@ -151,12 +197,10 @@ public class ErpScreenController { BigDecimal v2 = (BigDecimal) e2.getValue().get("sumValue02"); return v2.compareTo(v1); }); - long soring = 1; for (Map.Entry> entry : sortedList) { String categoryName = entry.getKey(); Map map = entry.getValue(); ChartDataItem item = new ChartDataItem(); - item.setSoring(soring++); item.setAxisName(categoryName); item.setValue01(map.get("sumValue01").toString()); item.setValue02(map.get("sumValue02").toString()); diff --git a/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV03.vue b/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV03.vue index 6b6e374..14585f4 100644 --- a/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV03.vue +++ b/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV03.vue @@ -202,19 +202,19 @@ const expenseVal = index02Yuan[idx]; const netProfitVal = index03Yuan[idx]; return ` -
${title}
- - - - - - - - - - - -
收入(元)支出(元)净利润(元)
${incomeVal}${expenseVal}${netProfitVal}
+
${title}
+ + + + + + + + + + + +
收入(元)支出(元)净利润(元)
${incomeVal}${expenseVal}${netProfitVal}
`; }; diff --git a/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV06.vue b/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV06.vue index 1499888..42d64e3 100644 --- a/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV06.vue +++ b/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV06.vue @@ -237,21 +237,21 @@ const rateVal = index03[idx]; const profitVal = index04Yuan[idx]; return ` -
${title}
- - - - - - - - - - - - - -
收入(元)支出(元)利润率(%)净利润(元)
${incomeVal}${expenseVal}${rateVal}${profitVal}
+
${title}
+ + + + + + + + + + + + + +
收入(元)支出(元)利润率(%)净利润(元)
${incomeVal}${expenseVal}${rateVal}${profitVal}
`; }; diff --git a/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV08.vue b/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV08.vue index 1b623ca..0a1f75f 100644 --- a/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV08.vue +++ b/web-vue/packages/core/layouts/views/screen/welcome/Erp/components/ChartV08.vue @@ -7,280 +7,296 @@ - \ No newline at end of file + .bar-line-chart-container { + flex: 1; + width: 100%; + height: calc(100% - 40px); + } + diff --git a/web-vue/packages/erp/api/erp/screen.ts b/web-vue/packages/erp/api/erp/screen.ts index d426977..2657381 100644 --- a/web-vue/packages/erp/api/erp/screen.ts +++ b/web-vue/packages/erp/api/erp/screen.ts @@ -60,3 +60,6 @@ export const CategoryChart = (params?: ErpTransactionFlow | any) => export const ErpAccountChart = (params?: ErpTransactionFlow | any) => defHttp.get({ url: adminPath + '/erp/screen/getErpAccountChart', params }); + +export const getErpQuarterChart = (params?: ErpTransactionFlow | any) => + defHttp.get({ url: adminPath + '/erp/screen/getErpQuarterChart', params });