From 9a6ec3e79251a4a629bca8bad36117b963622b5f Mon Sep 17 00:00:00 2001 From: Lemon Date: Mon, 25 May 2026 13:33:35 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=9C=BA=E7=AB=99=E8=AE=A2=E5=8D=95=E6=8E=92=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/BusinessFinancialController.java | 18 +++---- .../BusinessOperationAnalysisQueryDTO.java | 10 ++++ .../service/BusinessFinancialService.java | 11 ++-- .../impl/BusinessFinancialServiceImpl.java | 54 +++++++++++-------- 4 files changed, 54 insertions(+), 39 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessFinancialController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessFinancialController.java index 177fcec15..c3dbf5f90 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessFinancialController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessFinancialController.java @@ -6,6 +6,7 @@ import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.response.RestApiResponse; +import com.google.common.collect.ImmutableMap; import com.jsowell.pile.dto.MerchantOrderReportDTO; import com.jsowell.pile.dto.ParkingCouponRecordQueryDTO; import com.jsowell.pile.dto.business.BusinessEfficiencyQueryDTO; @@ -17,7 +18,6 @@ import com.jsowell.pile.vo.uniapp.business.BusinessEfficiencyVO; import com.jsowell.pile.vo.uniapp.business.BusinessGunEfficiencyAnalysisVO; import com.jsowell.pile.vo.uniapp.business.BusinessOperationAnalysisVO; import com.jsowell.pile.vo.uniapp.business.BusinessScaleVO; -import com.jsowell.pile.vo.uniapp.business.BusinessStationRankVO; import com.jsowell.pile.vo.web.MerchantOrderReportVO; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -26,8 +26,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - /** * 运营端财务信息相关Controller * @@ -212,10 +210,10 @@ public class BusinessFinancialController extends BaseController { } /** - * 查询场站订单排行 + * 分页查询场站订单排行 * - * @param dto 查询参数 - * @return 场站订单排行列表(按订单数量降序) + * @param dto 查询参数(含pageNum、pageSize) + * @return 分页结果(场站订单排行列表,按订单数量降序) */ @PostMapping("/stationOrderRank") public RestApiResponse getStationOrderRank(@RequestBody BusinessOperationAnalysisQueryDTO dto) { @@ -225,10 +223,10 @@ public class BusinessFinancialController extends BaseController { if (dto == null) { throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR); } - List result = businessFinancialService.getStationOrderRank(dto); - response = new RestApiResponse<>(result); - logger.info("查询场站订单排行成功 startTime:{}, endTime:{}, 站点数量:{}", - dto.getStartTime(), dto.getEndTime(), result.size()); + PageResponse pageResponse = businessFinancialService.getStationOrderRank(dto); + response = new RestApiResponse<>(ImmutableMap.of("pageResponse", pageResponse)); + logger.info("查询场站订单排行成功 startTime:{}, endTime:{}, total:{}", + dto.getStartTime(), dto.getEndTime(), pageResponse.getTotal()); } catch (BusinessException e) { logger.warn("查询场站订单排行业务异常 code:{}, message:{}", e.getCode(), e.getMessage(), e); response = new RestApiResponse<>(e.getCode(), e.getMessage()); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/business/BusinessOperationAnalysisQueryDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/business/BusinessOperationAnalysisQueryDTO.java index e172e2891..0fb35717a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/business/BusinessOperationAnalysisQueryDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/business/BusinessOperationAnalysisQueryDTO.java @@ -38,4 +38,14 @@ public class BusinessOperationAnalysisQueryDTO { * 当前选中的指标编码 */ private String selectedMetricCode; + + /** + * 页码(用于场站排行分页) + */ + private Integer pageNum; + + /** + * 每页条数(用于场站排行分页) + */ + private Integer pageSize; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/BusinessFinancialService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/BusinessFinancialService.java index 487c4655d..87fb249f6 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/BusinessFinancialService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/BusinessFinancialService.java @@ -11,12 +11,9 @@ import com.jsowell.pile.vo.uniapp.business.BusinessEfficiencyVO; import com.jsowell.pile.vo.uniapp.business.BusinessGunEfficiencyAnalysisVO; import com.jsowell.pile.vo.uniapp.business.BusinessOperationAnalysisVO; import com.jsowell.pile.vo.uniapp.business.BusinessScaleVO; -import com.jsowell.pile.vo.uniapp.business.BusinessStationRankVO; import com.jsowell.pile.vo.web.MerchantOrderReportVO; import com.jsowell.pile.vo.web.ParkingCouponRecordVO; -import java.util.List; - public interface BusinessFinancialService { MerchantOrderReportVO getMyWallet(MerchantOrderReportDTO dto); @@ -61,12 +58,12 @@ public interface BusinessFinancialService { BusinessEfficiencyVO getBusinessEfficiency(BusinessEfficiencyQueryDTO dto); /** - * 查询场站订单排行 + * 分页查询场站订单排行 * - * @param dto 查询条件 - * @return 场站订单排行列表(按订单数量降序) + * @param dto 查询条件(含pageNum、pageSize) + * @return 分页结果(场站订单排行列表,按订单数量降序) */ - List getStationOrderRank(BusinessOperationAnalysisQueryDTO dto); + PageResponse getStationOrderRank(BusinessOperationAnalysisQueryDTO dto); /** * 查询效率分析(单均效率 + 枪均效率) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/BusinessFinancialServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/BusinessFinancialServiceImpl.java index 7dd06f6d7..a896626e2 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/BusinessFinancialServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/BusinessFinancialServiceImpl.java @@ -898,16 +898,16 @@ public class BusinessFinancialServiceImpl implements BusinessFinancialService { } /** - * 查询场站订单排行 - * 按站点分组统计订单数量,按订单数量降序排列 + * 分页查询场站订单排行 + * 按站点分组统计订单数量,按订单数量降序排列,支持分页 * - * @param dto 查询条件 - * @return 场站订单排行列表 + * @param dto 查询条件(含pageNum、pageSize) + * @return 分页结果 */ @Override - public List getStationOrderRank(BusinessOperationAnalysisQueryDTO dto) { + public PageResponse getStationOrderRank(BusinessOperationAnalysisQueryDTO dto) { if (dto == null) { - return new ArrayList<>(); + return PageResponse.builder().pageNum(1).pageSize(10).list(new ArrayList<>()).total(0).pages(0).build(); } if (StringUtils.isBlank(dto.getStartTime()) && StringUtils.isBlank(dto.getEndTime())) { LocalDate endDate = LocalDate.now(); @@ -916,6 +916,10 @@ public class BusinessFinancialServiceImpl implements BusinessFinancialService { dto.setEndTime(endDate.toString()); } + // 设置默认分页参数 + int pageNum = dto.getPageNum() != null && dto.getPageNum() > 0 ? dto.getPageNum() : 1; + int pageSize = dto.getPageSize() != null && dto.getPageSize() > 0 ? dto.getPageSize() : 10; + List stationIdList = resolveStationIds(dto.getStationIdList()); // 查询结算报表原始数据 @@ -923,7 +927,7 @@ public class BusinessFinancialServiceImpl implements BusinessFinancialService { stationIdList, dto.getStartTime(), dto.getEndTime()); if (CollectionUtils.isEmpty(reportList)) { - return new ArrayList<>(); + return PageResponse.builder().pageNum(pageNum).pageSize(pageSize).list(new ArrayList<>()).total(0).pages(0).build(); } // 按站点ID分组,累加订单数量 @@ -937,20 +941,11 @@ public class BusinessFinancialServiceImpl implements BusinessFinancialService { stationOrderCountMap.merge(sId, chargeNum, Integer::sum); } - // 批量查询站点名称 + // 批量查询站点名称(一次性查出所有站点,内存中按ID匹配,避免N+1查询) + List allStations = pileStationInfoService.selectPileStationInfoList(new PileStationInfo()); Map stationNameMap = new LinkedHashMap<>(); - for (String sId : stationOrderCountMap.keySet()) { - try { - PileStationInfo stationInfo = pileStationInfoService.selectPileStationInfoById(Long.valueOf(sId)); - if (stationInfo != null) { - stationNameMap.put(sId, stationInfo.getStationName()); - } else { - stationNameMap.put(sId, "未知站点"); - } - } catch (Exception e) { - log.warn("查询站点名称失败 stationId:{}", sId, e); - stationNameMap.put(sId, "未知站点"); - } + for (PileStationInfo station : allStations) { + stationNameMap.put(String.valueOf(station.getId()), station.getStationName()); } // 按订单数量降序排列并构建排行列表 @@ -965,12 +960,27 @@ public class BusinessFinancialServiceImpl implements BusinessFinancialService { a.getOrderCount() != null ? a.getOrderCount() : 0)) .collect(Collectors.toList()); - // 设置排行名次 + // 设置排行名次(基于全量数据的排名) for (int i = 0; i < rankList.size(); i++) { rankList.get(i).setRank(i + 1); } - return rankList; + // 手动分页 + long total = rankList.size(); + int pages = (int) Math.ceil((double) total / pageSize); + int fromIndex = (pageNum - 1) * pageSize; + int toIndex = Math.min(fromIndex + pageSize, rankList.size()); + List pageList = fromIndex < rankList.size() + ? rankList.subList(fromIndex, toIndex) + : new ArrayList<>(); + + return PageResponse.builder() + .pageNum(pageNum) + .pageSize(pageSize) + .list(pageList) + .total(total) + .pages(pages) + .build(); } /**