From bafd38976e18006bebabb9c2983df16afbfa83aa Mon Sep 17 00:00:00 2001
From: dzc <2388224167@qq.com>
Date: Wed, 22 Jan 2025 14:53:11 +0800
Subject: [PATCH] =?UTF-8?q?feat:=E8=AE=BE=E5=A4=87=E4=BA=A4=E6=98=93?=
=?UTF-8?q?=E8=AE=B0=E5=BD=95=E3=80=81=E5=95=86=E6=88=B7=E4=BA=A4=E6=98=93?=
=?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=AF=BC=E5=87=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../hard/api/vo/order/HardOrderCsVo.java | 8 --
.../hard/api/vo/order/HardOrderSbVo.java | 33 +++----
pjcloud-hardware/pjcloud-hardware-biz/pom.xml | 20 ++++
.../order/HardOrderTotalController.java | 86 ++++++++++++++++--
.../main/resources/file/商户交易金额汇总.xlsx | Bin 0 -> 9884 bytes
.../main/resources/file/设备交易金额汇总.xlsx | Bin 0 -> 9978 bytes
6 files changed, 111 insertions(+), 36 deletions(-)
create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/商户交易金额汇总.xlsx
create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/设备交易金额汇总.xlsx
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderCsVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderCsVo.java
index ca7cee6e3..c44275c98 100644
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderCsVo.java
+++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderCsVo.java
@@ -13,13 +13,8 @@ import lombok.Data;
import java.math.BigDecimal;
@Data
-@HeadRowHeight(40)
-@ColumnWidth(50)
-@ContentRowHeight(20)
-@ExcelIgnoreUnannotated
public class HardOrderCsVo implements BaseMchInterface, BaseHardInterface {
- @ExcelProperty("设备名称")
@Schema(description = "设备id")
private Long hardId;
@@ -29,7 +24,6 @@ public class HardOrderCsVo implements BaseMchInterface, BaseHardInterface {
@Schema(description = "设备类型")
private String hardType;
- @ExcelProperty("所属商户")
@Schema(description = "商户名")
private String merchantName;
@@ -39,11 +33,9 @@ public class HardOrderCsVo implements BaseMchInterface, BaseHardInterface {
@Schema(description = "商户id")
private Long merchantId;
- @ExcelProperty("总消费金额")
@Schema(description = "总消费金额")
private BigDecimal totalPayPrice;
- @ExcelProperty("总消费次数")
@Schema(description = "总消费次数")
private BigDecimal totalPayCount;
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderSbVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderSbVo.java
index d37d8f00f..62fcda01c 100644
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderSbVo.java
+++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderSbVo.java
@@ -1,6 +1,7 @@
package com.bsd.pjcloud.hard.api.vo.order;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
@@ -12,36 +13,30 @@ import lombok.Data;
import java.math.BigDecimal;
@Data
-@HeadRowHeight(40)
-@ColumnWidth(50)
-@ContentRowHeight(20)
-@ExcelIgnoreUnannotated
public class HardOrderSbVo implements BaseMchInterface, BaseHardInterface {
@Schema(description = "设备id")
private Long hardId;
+ @Schema(description = "设备名称")
+ private String hardName;
+
+ @Schema(description = "设备类型")
+ private String hardType;
+
@Schema(description = "商户id")
private Long merchantId;
- @Schema(description = "总消费金额")
+ @Schema(description = "商户名称")
+ private String merchantName;
+
+ @Schema(description = "商户logo")
+ private String logoPic;
+
+ @Schema(description = "总消费金额(元)")
private BigDecimal totalPayPrice;
@Schema(description = "总消费次数")
private BigDecimal totalPayCount;
- /**
- * 商户相关
- */
- private String merchantName;
-
- private String logoPic;
-
- /**
- * 设备相关
- */
- private String hardName;
-
- private String hardType;
-
}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/pom.xml b/pjcloud-hardware/pjcloud-hardware-biz/pom.xml
index 3d004fc74..d4793a906 100644
--- a/pjcloud-hardware/pjcloud-hardware-biz/pom.xml
+++ b/pjcloud-hardware/pjcloud-hardware-biz/pom.xml
@@ -175,4 +175,24 @@
boot
+
+
+
+ src/main/resources
+ true
+
+ **/*.xlsx
+ **/*.xls
+
+
+
+ src/main/resources
+ false
+
+ **/*.xlsx
+ **/*.xls
+
+
+
+
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 1f3bac005..7e3511f83 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
@@ -1,25 +1,37 @@
package com.bsd.pjcloud.hard.controller.order;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.io.resource.ResourceUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.R;
-import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
+import com.bsd.pjcloud.hard.api.constant.HardTypeEnum;
import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum;
import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto;
import com.bsd.pjcloud.hard.api.vo.order.HardOrderCsVo;
import com.bsd.pjcloud.hard.api.vo.order.HardOrderSbVo;
import com.bsd.pjcloud.hard.service.HardOrderTotalService;
-import com.bsd.pjcloud.wallet.api.vo.recharge.excel.WalletTransactionTkExcelVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
@RestController
@RequiredArgsConstructor
@@ -44,24 +56,80 @@ public class HardOrderTotalController {
return R.ok(HardOrderTotalService.pageListCs(page, dto));
}
- @ResponseExcel
@Operation(summary = "设备交易记录导出", description = "退款导出")
@GetMapping("/export-sb")
@PreAuthorize("@pms.hasPermission('hard_hardTotal_export_sb')")
- public List exportSb(HardOrderDto dto) {
+ public void exportSb(HttpServletResponse response, HardOrderDto dto) throws IOException {
dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes());
List list = HardOrderTotalService.listSb(dto);
- return BeanUtils.toBean(list, WalletTransactionTkExcelVo.class);
+ try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream("file/设备交易金额汇总.xlsx")).build()) {
+ WriteSheet writeSheet = EasyExcel.writerSheet().build();
+ FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
+ Map map = new HashMap();
+ if (ObjectUtil.isNotEmpty(dto.getPayTimeList())) {
+ map.put("timeSpan", " 到 ");
+ map.put("startTime", LocalDateTimeUtil.format(dto.getPayTimeList()[0], DatePattern.NORM_DATETIME_PATTERN));
+ map.put("endTime", LocalDateTimeUtil.format(dto.getPayTimeList()[0], DatePattern.NORM_DATETIME_PATTERN));
+ }
+ if (ObjectUtil.isNotEmpty(list)) {
+ BigDecimal priceTotal = BigDecimal.ZERO;
+ BigDecimal countTotal = BigDecimal.ZERO;
+ for (HardOrderSbVo v : list) {
+ if (ObjectUtil.isNotEmpty(v.getHardType())) {
+ v.setHardType(HardTypeEnum.valueOfByType(v.getHardType()).getDescription());
+ }
+ if (ObjectUtil.isNotEmpty(v.getTotalPayPrice())) {
+ priceTotal = priceTotal.add(v.getTotalPayPrice());
+ v.setTotalPayPrice(v.getTotalPayPrice().divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP));
+ }
+ if (ObjectUtil.isNotEmpty(v.getTotalPayCount())) {
+ countTotal = countTotal.add(v.getTotalPayCount());
+ }
+ }
+ map.put("computeTotalPayPrice", priceTotal.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString());
+ map.put("computeTotalPayCount", countTotal.toString());
+ }
+ excelWriter.fill(map, writeSheet);
+ excelWriter.fill(list, fillConfig, writeSheet);
+ }
}
- @ResponseExcel
@Operation(summary = "商户交易记录导出", description = "退款导出")
@GetMapping("/export-cs")
@PreAuthorize("@pms.hasPermission('hard_hardTotal_export_cs')")
- public List exportTk(HardOrderDto dto) {
+ public void exportTk(HttpServletResponse response, HardOrderDto dto) throws IOException {
dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes());
List list = HardOrderTotalService.listCs(dto);
- return BeanUtils.toBean(list, WalletTransactionTkExcelVo.class);
+ try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream("file/商户交易金额汇总.xlsx")).build()) {
+ WriteSheet writeSheet = EasyExcel.writerSheet().build();
+ FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
+ Map map = new HashMap();
+ if (ObjectUtil.isNotEmpty(dto.getPayTimeList())) {
+ map.put("timeSpan", " 到 ");
+ map.put("startTime", LocalDateTimeUtil.format(dto.getPayTimeList()[0], DatePattern.NORM_DATETIME_PATTERN));
+ map.put("endTime", LocalDateTimeUtil.format(dto.getPayTimeList()[0], DatePattern.NORM_DATETIME_PATTERN));
+ }
+ if (ObjectUtil.isNotEmpty(list)) {
+ BigDecimal priceTotal = BigDecimal.ZERO;
+ BigDecimal countTotal = BigDecimal.ZERO;
+ for (HardOrderCsVo v : list) {
+ if (ObjectUtil.isNotEmpty(v.getHardType())) {
+ v.setHardType(HardTypeEnum.valueOfByType(v.getHardType()).getDescription());
+ }
+ if (ObjectUtil.isNotEmpty(v.getTotalPayPrice())) {
+ priceTotal = priceTotal.add(v.getTotalPayPrice());
+ v.setTotalPayPrice(v.getTotalPayPrice().divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP));
+ }
+ if (ObjectUtil.isNotEmpty(v.getTotalPayCount())) {
+ countTotal = countTotal.add(v.getTotalPayCount());
+ }
+ }
+ map.put("computeTotalPayPrice", priceTotal.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString());
+ map.put("computeTotalPayCount", countTotal.toString());
+ }
+ excelWriter.fill(map, writeSheet);
+ excelWriter.fill(list, fillConfig, writeSheet);
+ }
}
}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/商户交易金额汇总.xlsx b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/商户交易金额汇总.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..a410a196818560cbcf969a09da6ab18f40b80511
GIT binary patch
literal 9884
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
literal 0
HcmV?d00001
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/设备交易金额汇总.xlsx b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/设备交易金额汇总.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..1ee074fd08d9a0c7660ca6ff28c6bf82612796df
GIT binary patch
literal 9978
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
BSY`kK
literal 0
HcmV?d00001