perf: 优化结算单详情增加分页和查询参数
This commit is contained in:
parent
a909c9e5c1
commit
80835d6841
@ -13,10 +13,7 @@ import com.aircraft.modules.aircraft.service.AircraftDeviceService;
|
||||
import com.aircraft.modules.order.domain.*;
|
||||
import com.aircraft.modules.order.domain.constant.OrderConstant;
|
||||
import com.aircraft.modules.order.domain.constant.OrderRedisConstant;
|
||||
import com.aircraft.modules.order.domain.dto.AddOrderDTO;
|
||||
import com.aircraft.modules.order.domain.dto.AddOrderTaskDTO;
|
||||
import com.aircraft.modules.order.domain.dto.OrderMainPageQueryDTO;
|
||||
import com.aircraft.modules.order.domain.dto.UpdateOrderDTO;
|
||||
import com.aircraft.modules.order.domain.dto.*;
|
||||
import com.aircraft.modules.order.domain.enums.*;
|
||||
import com.aircraft.modules.order.domain.vo.*;
|
||||
import com.aircraft.modules.order.service.*;
|
||||
@ -836,19 +833,27 @@ public class OrderBiz {
|
||||
/**
|
||||
* 获取结算订单详情
|
||||
*
|
||||
* @param settlementOrderId 结算订单ID
|
||||
* @param dto {@link SettlementDetailDTO}
|
||||
* @param page {@link Page} 分页对象
|
||||
* @return List<SettlementDetail>
|
||||
*/
|
||||
public List<SettlementDetail> querySettlementOrderDetail(Long settlementOrderId) {
|
||||
List<SettlementDetail> settlementDetails = settlementDetailService.obtainDetailBySettlementOrderId(settlementOrderId);
|
||||
public IPage<SettlementDetail> querySettlementOrderDetail(SettlementDetailDTO dto, Page page) {
|
||||
// 处理时间格式
|
||||
if (ObjectUtil.isNotNull(dto.getQueryStartTime())) {
|
||||
Date start = DateUtil.beginOfDay(dto.getQueryStartTime());
|
||||
dto.setQueryStartTime(start);
|
||||
}
|
||||
if (ObjectUtil.isNotNull(dto.getQueryEndTime())) {
|
||||
Date end = DateUtil.endOfDay(dto.getQueryEndTime());
|
||||
dto.setQueryEndTime(end);
|
||||
}
|
||||
List<SettlementDetail> settlementDetails = settlementDetailService.querySettlementOrderDetail(dto);
|
||||
if (CollectionUtils.isEmpty(settlementDetails)) {
|
||||
return new ArrayList<>();
|
||||
return new Page<>();
|
||||
}
|
||||
// 获取所有的路线
|
||||
List<CpRoute> routeList = cpRouteService.obtainAllRoutes();
|
||||
if (CollectionUtil.isEmpty(routeList)) {
|
||||
return settlementDetails;
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(routeList)) {
|
||||
Map<Long, CpRoute> routeMap = routeList.stream().collect(Collectors.toMap(CpRoute::getId, route -> route));
|
||||
for (SettlementDetail detail : settlementDetails) {
|
||||
if (StrUtil.isBlank(detail.getRouteIds())) {
|
||||
@ -869,7 +874,22 @@ public class OrderBiz {
|
||||
detail.setRouteIds(routeNameBuilder.substring(0, routeNameBuilder.length() - 1));
|
||||
}
|
||||
}
|
||||
return settlementDetails;
|
||||
}
|
||||
|
||||
// 内存分页
|
||||
Page<SettlementDetail> pageResult = new Page<>(page.getCurrent(), page.getSize());
|
||||
pageResult.setTotal(settlementDetails.size());
|
||||
// 计算分页起始和结束位置
|
||||
long start = (page.getCurrent() - 1) * page.getSize();
|
||||
long end = Math.min(start + page.getSize(), settlementDetails.size());
|
||||
// 如果起始位置超出了数据总量,则返回空列表
|
||||
if (start >= settlementDetails.size()) {
|
||||
pageResult.setRecords(new ArrayList<>());
|
||||
} else {
|
||||
// 截取当前页数据
|
||||
pageResult.setRecords(settlementDetails.subList((int) start, (int) end));
|
||||
}
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4,6 +4,7 @@ package com.aircraft.modules.order.controller;
|
||||
import com.aircraft.modules.order.biz.OrderBiz;
|
||||
import com.aircraft.modules.order.domain.SettlementDetail;
|
||||
import com.aircraft.modules.order.domain.SettlementMain;
|
||||
import com.aircraft.modules.order.domain.dto.SettlementDetailDTO;
|
||||
import com.aircraft.modules.order.domain.vo.GenerateSettlementOrderConfirmVO;
|
||||
import com.aircraft.modules.order.domain.vo.PrintSettlementOrderDataVO;
|
||||
import com.aircraft.modules.order.service.ISettlementMainService;
|
||||
@ -56,10 +57,12 @@ public class SettlementMainController {
|
||||
|
||||
@ApiOperation("结算订单详情")
|
||||
@GetMapping("/querySettlementOrderDetail/{settlementOrderId}")
|
||||
public ResponseEntity<List<SettlementDetail>> querySettlementOrderDetail(
|
||||
public ResponseEntity<IPage<SettlementDetail>>querySettlementOrderDetail(
|
||||
@ApiParam(value = "结算订单ID", required = true, example = "1948997367110451201")
|
||||
@PathVariable("settlementOrderId") Long settlementOrderId) {
|
||||
return new ResponseEntity<>(orderBiz.querySettlementOrderDetail(settlementOrderId),HttpStatus.OK);
|
||||
@PathVariable("settlementOrderId") Long settlementOrderId,
|
||||
SettlementDetailDTO dto,Page page) {
|
||||
dto.setSettlementOrderId(settlementOrderId);
|
||||
return ResponseEntity.ok(orderBiz.querySettlementOrderDetail(dto, page));
|
||||
}
|
||||
|
||||
@ApiOperation("打印结算单数据-返回对应的数据集,前端进行打印PDF")
|
||||
|
@ -0,0 +1,51 @@
|
||||
package com.aircraft.modules.order.domain.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
*
|
||||
* 结算详情分页查询DTO
|
||||
*
|
||||
* @author chenxiky
|
||||
* @version 1.0.0
|
||||
* @since 2025/8/23
|
||||
*/
|
||||
@Data
|
||||
public class SettlementDetailDTO {
|
||||
|
||||
/**
|
||||
* 结算单ID
|
||||
*/
|
||||
@ApiModelProperty("结算单ID")
|
||||
private Long settlementOrderId;
|
||||
|
||||
/**
|
||||
* 景区ID
|
||||
*/
|
||||
@ApiModelProperty("景区ID")
|
||||
private Long attractionId;
|
||||
|
||||
/**
|
||||
* 订单编号查询
|
||||
*/
|
||||
@ApiModelProperty(value = "订单编号查询")
|
||||
private String orderNo;
|
||||
/**
|
||||
* 下单开始时间
|
||||
*/
|
||||
@ApiModelProperty(value = "下单开始时间", example = "2025-07-19")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private Date queryStartTime;
|
||||
|
||||
/**
|
||||
* 下单结束时间
|
||||
*/
|
||||
@ApiModelProperty(value = "下单结束时间", example = "2025-07-19")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private Date queryEndTime;
|
||||
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package com.aircraft.modules.order.service;
|
||||
|
||||
import com.aircraft.modules.order.domain.SettlementDetail;
|
||||
import com.aircraft.modules.order.domain.dto.SettlementDetailDTO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
@ -37,4 +38,12 @@ public interface ISettlementDetailService extends IService<SettlementDetail> {
|
||||
* @param updateStatus 状态
|
||||
*/
|
||||
void updateSettlementOrderStatus(List<Long> ids, Integer updateStatus);
|
||||
|
||||
/**
|
||||
* 查询结算单详情列表
|
||||
*
|
||||
* @param dto {@link SettlementDetailDTO}
|
||||
* @return {@link List<SettlementDetail>}
|
||||
*/
|
||||
List<SettlementDetail> querySettlementOrderDetail(SettlementDetailDTO dto);
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
package com.aircraft.modules.order.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.aircraft.modules.order.domain.SettlementDetail;
|
||||
import com.aircraft.modules.order.domain.dto.SettlementDetailDTO;
|
||||
import com.aircraft.modules.order.mapper.SettlementDetailMapper;
|
||||
import com.aircraft.modules.order.service.ISettlementDetailService;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
@ -38,4 +41,15 @@ public class SettlementDetailServiceImpl extends ServiceImpl<SettlementDetailMap
|
||||
.set(SettlementDetail::getSettlementStatus, updateStatus)
|
||||
.in(SettlementDetail::getId, ids));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SettlementDetail> querySettlementOrderDetail(SettlementDetailDTO dto) {
|
||||
return this.list(Wrappers.lambdaQuery(SettlementDetail.class)
|
||||
.eq(SettlementDetail::getSettlementMainId, dto.getSettlementOrderId())
|
||||
.eq(ObjectUtil.isNotNull(dto.getAttractionId()), SettlementDetail::getAttractionId, dto.getAttractionId())
|
||||
.eq(StrUtil.isNotBlank(dto.getOrderNo()), SettlementDetail::getOrderNo, dto.getOrderNo())
|
||||
.ge(ObjectUtil.isNotNull(dto.getQueryStartTime()), SettlementDetail::getOrderCreateTime, dto.getQueryStartTime())
|
||||
.le(ObjectUtil.isNotNull(dto.getQueryEndTime()), SettlementDetail::getOrderCreateTime, dto.getQueryEndTime())
|
||||
.orderByDesc(SettlementDetail::getId));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user