From 26b60f81d42b0aafb46cd08b88822adf2a084a44 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 15 Jan 2026 16:28:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=A3=9F=E5=A0=82=E8=8F=9C=E5=93=81?= =?UTF-8?q?=E8=B4=AD=E4=B9=B0=E7=BB=9F=E8=AE=A1(=E6=8C=89=E6=9C=88)?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pjcloud-common/pjcloud-common-excel/pom.xml | 2 +- .../hard/api/dto/order/HardCarDto.java | 2 + .../hard/api/dto/order/HardOrderDto.java | 2 + .../order/HardCanteenTotalController.java | 3 + .../order/HardCanteenTotalServiceImpl.java | 118 +++++++++++++----- .../file/食堂菜品购买统计(按月).xlsx | Bin 10004 -> 10774 bytes .../resources/mapper/order/HardCarMapper.xml | 3 + .../recharge/WalletRechargeInvoiceMapper.xml | 3 + 8 files changed, 98 insertions(+), 35 deletions(-) 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> mounthList = records.stream().map(v -> { - LocalDateTime createTime = v.getCreateTime(); - String createTimeStr = LocalDateTimeUtil.format(createTime, DatePattern.NORM_MONTH_PATTERN); - return Map.of("createTimeStr", createTimeStr); - }).toList(); - excelWriter.fill(mounthList, fillConfig, writeSheet); - // 早 - List morningList = records.stream().filter(v -> ObjectUtil.equals(v.getHourType(), HardHourTypeEnum.MORNING.getType())).toList(); - excelWriter.fill(productTotalExportByMonthToDefaulColExcelMap(morningList), fillConfig, writeSheet); - // 中 - List noonList = records.stream().filter(v -> ObjectUtil.equals(v.getHourType(), HardHourTypeEnum.NOONING.getType())).toList(); - excelWriter.fill(productTotalExportByMonthToDefaulColExcelMap(noonList), fillConfig, writeSheet); - // 晚 - List nightList = records.stream().filter(v -> ObjectUtil.equals(v.getHourType(), HardHourTypeEnum.NIGHT.getType())).toList(); - excelWriter.fill(productTotalExportByMonthToDefaulColExcelMap(nightList), fillConfig, writeSheet); - if (ObjectUtil.isEmpty(page.getPages()) || page.getCurrent() > page.getPages()) break; - currentPage++; + Map map = new HashMap<>(); + map.put("title", title); + + Page page = productTotalByMonth(new Page(1L, 999L), dto, null); + List records = page.getRecords(); + // 填充数据 + // 早 + List morningList = records.stream().filter(v -> ObjectUtil.equals(v.getHourType(), HardHourTypeEnum.MORNING.getType())).toList(); + excelWriter.fill(productTotalExportByMonthToDefaulColExcelMap(morningList, createTimeYear, "morning"), fillConfig, writeSheet); + // 中 + List noonList = records.stream().filter(v -> ObjectUtil.equals(v.getHourType(), HardHourTypeEnum.NOONING.getType())).toList(); + excelWriter.fill(productTotalExportByMonthToDefaulColExcelMap(noonList, createTimeYear, "noon"), fillConfig, writeSheet); + // 晚 + List nightList = records.stream().filter(v -> ObjectUtil.equals(v.getHourType(), HardHourTypeEnum.NIGHT.getType())).toList(); + excelWriter.fill(productTotalExportByMonthToDefaulColExcelMap(nightList, createTimeYear, "night"), fillConfig, writeSheet); + + excelWriter.fill(map, writeSheet); + + Workbook workbook = excelWriter.writeContext().writeWorkbookHolder().getWorkbook(); + if (ObjectUtil.isNotEmpty(workbook)) { + // 计算公式 + workbook.getCreationHelper().createFormulaEvaluator().evaluateAll(); } - excelWriter.fill(new HashMap<>(), writeSheet); + excelWriter.finish(); } catch (Exception e) { e.printStackTrace(); log.error("|食堂菜品购买统计导出(按月统计)|导出数据异常error:{}", e.getMessage()); } } - private List> productTotalExportByMonthToDefaulColExcelMap(List records) { - List> list = new LinkedList<>(); + private List> productTotalExportByMonthToDefaulColExcelMap(List records, int year, String prefix) { + List> list = new LinkedList<>(); if (ObjectUtil.isEmpty(records)) return list; - for (HardCanteenProductTotalVo i : records) { - LinkedHashMap map = new LinkedHashMap<>(); - map.put("totalPrice", BigDecimal.valueOf(i.getTotalPrice()).divide(BigDecimal.valueOf(1000), 2, RoundingMode.HALF_UP).toString()); - map.put("timeCount", String.valueOf(i.getTimeCount())); - list.add(map); + List sqlList = new LinkedList<>(); + + List monthlyRanges = new LinkedList<>(); + for (Month month : Month.values()) { + LocalDate localDate = LocalDate.of(year, month.getValue(), 1); + monthlyRanges.add(localDate); } + + for (LocalDate i : monthlyRanges) { + HardCanteenProductTotalVo target = records.stream().filter(v -> ObjectUtil.equals(v.getCreateTime().toLocalDate(), i)).findFirst().orElse(null); + if (ObjectUtil.isEmpty(target)) { + HardCanteenProductTotalVo defaultVo = new HardCanteenProductTotalVo(); + defaultVo.setCreateTime(i.atStartOfDay()); + defaultVo.setCreateTimeStr(LocalDateTimeUtil.format(i, DatePattern.NORM_MONTH_PATTERN)); + sqlList.add(defaultVo); + } else { + sqlList.add(target); + } + } + + double sumTotalPrice = 0; + long sumTimeCount = 0; + + String mapKey = prefix + "Col"; + for (HardCanteenProductTotalVo i : sqlList) { + double totalPrice = 0; + if (ObjectUtil.isNotEmpty(i.getTotalPrice())) { + totalPrice = BigDecimal.valueOf(i.getTotalPrice()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP).doubleValue(); + } + list.add(Map.of(mapKey, totalPrice)); + sumTotalPrice += totalPrice; + + long timeCount = 0; + if (ObjectUtil.isNotEmpty(i.getTimeCount())) { + timeCount = i.getTimeCount(); + } + list.add(Map.of(mapKey, timeCount)); + sumTimeCount += timeCount; + } + list.add(Map.of(mapKey, sumTotalPrice)); + list.add(Map.of(mapKey, sumTimeCount)); return list; } 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 b7e321ff0ffc373821b6d4cf7446bdebb5bdafc9..5abae2bacc210bf225379955101b2db2d608645d 100644 GIT binary patch delta 6262 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 N-*}+77i@n#{{>rgRayW5 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml index 030735631..2a94a7f16 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml @@ -58,6 +58,9 @@ + + and DATE_FORMAT(a.create_time, '%Y') = #{dto.createTimeYearStr} + and o.create_time between #{dto.createTimeList[0]} and #{dto.createTimeList[1]} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeInvoiceMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeInvoiceMapper.xml index b12ec2360..72a9e4566 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeInvoiceMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeInvoiceMapper.xml @@ -32,6 +32,9 @@ a.del_flag = '0' + + and a.code like concat('%', #{dto.code}, '%') + and a.status = #{dto.status}