diff --git a/pjcloud-common/pjcloud-common-excel/pom.xml b/pjcloud-common/pjcloud-common-excel/pom.xml
index 11eb9a759..35cd6c573 100644
--- a/pjcloud-common/pjcloud-common-excel/pom.xml
+++ b/pjcloud-common/pjcloud-common-excel/pom.xml
@@ -33,7 +33,7 @@
pjcloud excel 操作
- 4.0.2
+ 4.0.3
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java
index ee90b9d10..74baae84f 100644
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java
+++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java
@@ -19,6 +19,8 @@ public class HardCarDto extends HardCarEntity {
private String createTimeStr;
+ private String createTimeYearStr;
+
private LocalDate[] createTimeList;
private List orderStatusCodes;
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java
index 660183834..d7cda0eff 100644
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java
+++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java
@@ -36,6 +36,8 @@ public class HardOrderDto extends HardOrderEntity implements BaseIsIncludeTreeIn
private List orderStatusCodes;
+ private String createTimeYearStr;
+
private LocalDateTime[] createTimeList;
private LocalDateTime[] payTimeList;
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java
index a1fda9eff..ab28f425a 100644
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java
+++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java
@@ -123,6 +123,9 @@ public class HardCanteenTotalController {
@PostMapping("/proudct-total-export-by-month")
@SysLog("食堂菜品购买统计导出(按月统计)")
public void productTotalExportByMonth(HttpServletResponse response, @RequestBody HardOrderDto dto) {
+ if (ObjectUtil.isEmpty(dto.getCreateTimeYearStr())) {
+ throw new RuntimeException("请选择创建时间(年)");
+ }
canteenTotalService.productTotalExportByMonth(response, dto);
}
}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java
index 63d562968..f55ab99e4 100644
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java
+++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java
@@ -40,6 +40,7 @@ import com.bsd.pjcloud.wallet.api.vo.MchManageVo;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@@ -48,6 +49,7 @@ import java.math.RoundingMode;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.time.Month;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
import java.util.concurrent.CompletableFuture;
@@ -281,52 +283,100 @@ public class HardCanteenTotalServiceImpl implements HardCanteenTotalService {
@Override
public void productTotalExportByMonth(HttpServletResponse response, HardOrderDto dto) {
dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes());
- try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream("file/食堂菜品购买统计(按月).xlsx")).build()) {
+ String createTimeYearStr = dto.getCreateTimeYearStr();
+ Integer createTimeYear = Integer.valueOf(createTimeYearStr);
+
+ // 查询食堂
+ String mchName = "所有";
+ if (ObjectUtil.isNotEmpty(dto.getMerchantId())) {
+ MchManageVo mch = remoteMchService.getById(dto.getMerchantId()).getData();
+ if (ObjectUtil.isNotEmpty(mch)) {
+ mchName = mch.getName();
+ }
+ }
+
+ // 标题
+ // 格式-2025年县府一楼食堂就餐情况统计表
+ String title = createTimeYear + "年" + mchName + "就餐情况统计表";
+
+ try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream("file/食堂菜品购买统计(按月).xlsx")).inMemory(true).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
- long currentPage = 1L;
- long pageSize = 200L;
- while (true) {
- Page page = productTotalByMonth(new Page(currentPage, pageSize), dto, null);
- if (ObjectUtil.isEmpty(page) || ObjectUtil.isEmpty(page.getRecords())) break;
- // 填充数据
- List records = page.getRecords();
- // 月份
- List