From 45e41f955facc01d2805829a47dd97d82a4509ec Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 17 Dec 2025 18:12:39 +0800 Subject: [PATCH] 1 --- .../api/vo/WalletExportCzTotalPerson.java | 29 ++++++++++++ .../WalletTransactionController.java | 14 ++++++ .../mapper/WalletTransactionMapper.java | 3 ++ .../service/WalletTransactionService.java | 5 +++ .../impl/WalletTransactionServiceImpl.java | 42 ++++++++++++++++-- .../file/个人充值统计800、1600、2400.xlsx | Bin 0 -> 9951 bytes .../mapper/WalletTransactionMapper.xml | 16 +++++++ 7 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletExportCzTotalPerson.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/file/个人充值统计800、1600、2400.xlsx diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletExportCzTotalPerson.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletExportCzTotalPerson.java new file mode 100644 index 000000000..5b2ceb3aa --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletExportCzTotalPerson.java @@ -0,0 +1,29 @@ +package com.bsd.pjcloud.wallet.api.vo; + +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +public class WalletExportCzTotalPerson { + + private Long lineNumber; + + private String mchName; + + private String deptName; + + private String name; + + private String phone; + + private Long price; + + private String priceStr; + + private LocalDateTime createTime; + + private String createTimeStr; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java index 5c874cd5f..3b37287be 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java @@ -130,6 +130,20 @@ public class WalletTransactionController { walletTransactionService.exportCzTotal(response, dto, null); } + @Operation(summary = "后台充值统计按照个人(导出)", description = "后台充值统计按照个人(导出)") + @PostMapping("/export-cz-total-person") + public void exportCzTotalPerson(HttpServletResponse response, @RequestBody WalletTransactionDto dto) { + dto.setBizTypes(WalletBizEnum.getTopUpCodes()); + dto.setType(WalletTransactionDto.TYPE_INCOME); + if (ObjectUtil.isNotEmpty(dto.getPrice())) { + dto.setPrice(dto.getPrice() * 100); + } + if (ObjectUtil.isNotEmpty(dto.getPriceList())) { + dto.setPriceList(dto.getPriceList().stream().map(item -> item * 100).toList()); + } + walletTransactionService.exportCzTotalPerson(response, dto, null); + } + @Operation(summary = "后台充值统计", description = "后台充值统计") @PostMapping("/page-cz-dept-total") public R> listDeptCzTotal(@RequestBody WalletTransactionDto dto) { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java index 81453e7b8..a2fe5e7a2 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java @@ -12,6 +12,7 @@ import com.bsd.pjcloud.wallet.api.dto.WalletTransactionSumAndCountDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletExportCzTotalPerson; import com.bsd.pjcloud.wallet.api.vo.WalletTransactionSumAndCountVo; import com.bsd.pjcloud.wallet.api.vo.WalletTypeCountVo; import com.bsd.pjcloud.wallet.api.vo.WalletTypeTotalVo; @@ -94,4 +95,6 @@ public interface WalletTransactionMapper extends PjcloudBaseMapper sumAndCount(@Param("dto") WalletTransactionSumAndCountDto dto); + + List exportCzTotalPerson(); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java index 939bc09b8..99eeb0657 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletTransactionService.java @@ -73,4 +73,9 @@ public interface WalletTransactionService extends IService list = baseMapper.exportCzTotalPerson(); + + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); + Map map = new HashMap(); + Long lineNumber = 1L; + BigDecimal priceTotal = BigDecimal.ZERO; + if (ObjectUtil.isNotEmpty(list)) { + for (WalletExportCzTotalPerson v : list) { + v.setLineNumber(lineNumber); + lineNumber++; + if (ObjectUtil.isNotEmpty(v.getPrice())) { + priceTotal = priceTotal.add(BigDecimal.valueOf(v.getPrice())); + v.setPriceStr(BigDecimal.valueOf(v.getPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString()); + } + if (ObjectUtil.isNotEmpty(v.getCreateTime())) { + v.setCreateTimeStr(LocalDateTimeUtil.format(v.getCreateTime(), DatePattern.NORM_DATETIME_PATTERN)); + } + } + map.put("priceTotal", priceTotal.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString()); + } + excelWriter.fill(map, writeSheet); + excelWriter.fill(new ArrayList<>(list), fillConfig, writeSheet); + } catch (IOException e) { + e.printStackTrace(); + log.error("|{}|后台充值统计(导出),dto:|{}|,fileName:|{}|,error:|{}|", TAG, JSON.toJSONString(dto), fileName, e.getMessage()); + } + } + private void disposeList(List list, WalletTransactionDto dto) { if (ObjectUtil.isNotEmpty(list)) { // 用户 diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/file/个人充值统计800、1600、2400.xlsx b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/file/个人充值统计800、1600、2400.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9a169a9d63f5f4d50bac4df8c2cae70575047022 GIT binary patch literal 9951 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 literal 0 HcmV?d00001 diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml index 507660478..8fba8ca13 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletTransactionMapper.xml @@ -265,4 +265,20 @@ group by a.dept_id + + \ No newline at end of file