From 0d95161f505ac989675512195b9a83094efe46e7 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 6 Mar 2025 20:18:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E8=B4=A2=E5=8A=A1=E6=8A=A5=E8=A1=A8=E7=BA=AC=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/api/vo/order/HardDeptTotalVo.java | 6 +++++ .../order/HardOrderTotalController.java | 16 ++++++++++++ .../impl/order/HardOrderTotalServiceImpl.java | 23 +++++++++++++++++- .../main/resources/file/部门交易金额汇总.xlsx | Bin 10230 -> 10306 bytes 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java index 2c9f88ec6..1337eca32 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java @@ -48,6 +48,12 @@ public class HardDeptTotalVo { @Schema(description = "退款次数") private Long orderRefundCont = 0L; + @Schema(description = "盈利金额") + private Long orderProfitPrice = 0L; + + @Schema(description = "盈利次数") + private Long orderProfitCont = 0L; + /** * 导出相关 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java index 13a25897f..84af93c8a 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java @@ -246,8 +246,12 @@ public class HardOrderTotalController { BigDecimal orderPayPriceSum = BigDecimal.ZERO; BigDecimal orderPayCountSum = BigDecimal.ZERO; + BigDecimal orderRefundPriceSum = BigDecimal.ZERO; BigDecimal orderRefundContSum = BigDecimal.ZERO; + // 盈利 + BigDecimal orderProfitPriceSum = BigDecimal.ZERO; + BigDecimal orderProfitContSum = BigDecimal.ZERO; Long lineNumber = 1L; for (HardDeptTotalVo v : list) { @@ -305,6 +309,14 @@ public class HardOrderTotalController { orderRefundContSum = orderRefundContSum.add(BigDecimal.valueOf(v.getOrderRefundCont())); v.setOrderRefundCont(BigDecimal.valueOf(v.getOrderRefundCont()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); } + if (ObjectUtil.isNotEmpty(v.getOrderProfitPrice())) { + orderProfitPriceSum = orderProfitPriceSum.add(BigDecimal.valueOf(v.getOrderProfitPrice())); + v.setOrderProfitPrice(BigDecimal.valueOf(v.getOrderProfitPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); + } + if (ObjectUtil.isNotEmpty(v.getOrderProfitCont())) { + orderProfitContSum = orderProfitContSum.add(BigDecimal.valueOf(v.getOrderProfitCont())); + v.setOrderProfitCont(BigDecimal.valueOf(v.getOrderProfitCont()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); + } // 批量充值 map.put("walletPriceSum", walletPriceSum.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString()); map.put("walletCountSum", walletCountSum.toString()); @@ -320,8 +332,12 @@ public class HardOrderTotalController { map.put("orderPayPriceSum", orderPayPriceSum.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString()); map.put("orderPayCountSum", orderPayCountSum.toString()); + map.put("orderRefundPriceSum", orderRefundPriceSum.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString()); map.put("orderRefundContSum", orderRefundContSum.toString()); + + map.put("orderProfitPriceSum", orderProfitPriceSum.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString()); + map.put("orderProfitContSum", orderProfitContSum.toString()); } } excelWriter.fill(map, writeSheet); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java index ecb2799c2..a139bb132 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java @@ -273,7 +273,20 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { } return hardOrderMapper.sumAndCount(refundDto); }); - CompletableFuture allFutures = CompletableFuture.allOf(walletBatchFuture, walletReduceFuture, payFuture, refundFuture, walletOnceBatchFuture, walletOnceReduceFuture); + // 查看盈利流水 + CompletableFuture> profitFuture = CompletableFuture.supplyAsync(() -> { + HardOrderSumAndCountDto refundDto = new HardOrderSumAndCountDto(); + refundDto.setDeptIds(deptIds); + refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + if (ObjectUtil.isNotEmpty(dto.getCreateTimeList())) { + refundDto.setCreateTimeList(dto.getCreateTimeList()); + } + if (ObjectUtil.isNotEmpty(dto.getWalletTypeId())) { + refundDto.setWalletTypeId(dto.getWalletTypeId()); + } + return hardOrderMapper.sumAndCount(refundDto); + }); + CompletableFuture allFutures = CompletableFuture.allOf(walletBatchFuture, walletReduceFuture, payFuture, refundFuture, walletOnceBatchFuture, walletOnceReduceFuture, profitFuture); allFutures.join(); List walletBatchList = walletBatchFuture.join(); List walletReduceList = walletReduceFuture.join(); @@ -281,6 +294,7 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { List walletOnceReduceList = walletOnceReduceFuture.join(); List payList = payFuture.join(); List refundList = refundFuture.join(); + List profitList = profitFuture.join(); // 聚合一下数据 for (HardDeptTotalVo v : resultList) { if (ObjectUtil.isNotEmpty(walletBatchList)) { @@ -319,6 +333,13 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { v.setOrderRefundCont(i.getCount()); }); } + // 查看盈利流水 + if (ObjectUtil.isNotEmpty(profitList)) { + profitList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { + v.setOrderProfitPrice(i.getSum()); + v.setOrderProfitCont(i.getCount()); + }); + } } return resultList; }); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/部门交易金额汇总.xlsx b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/部门交易金额汇总.xlsx index 51d149779be3c668ff24c9965f04425aa65dac64..26441d9e03327d36a1b33415591c311b04ada946 100644 GIT binary patch delta 2032 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 U03ZMW0HTu-C@TipBLDyZ0Q`)R9smFU