【add】后台管理系统订单分页查询接口实现

This commit is contained in:
nixj 2024-06-12 15:21:37 +08:00
parent 8be188f2c2
commit 925e4c5954
6 changed files with 90 additions and 6 deletions

View File

@ -2,9 +2,13 @@ package com.chint.infrastructure.repository.jdbc;
import com.chint.domain.aggregates.order.OrderDetail; import com.chint.domain.aggregates.order.OrderDetail;
import com.chint.domain.aggregates.order.RouteOrder; import com.chint.domain.aggregates.order.RouteOrder;
import com.chint.manage.entity.query.OrderPageQuery;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jdbc.repository.query.Query;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -30,4 +34,22 @@ public interface JdbcOrderDetailRepository extends CrudRepository<OrderDetail, L
List<OrderDetail> findByUpdateTimeBetween(LocalDateTime createTime, LocalDateTime createTime2); List<OrderDetail> findByUpdateTimeBetween(LocalDateTime createTime, LocalDateTime createTime2);
List<OrderDetail> findAllByRouteIdIn(List<Long> routeIds); List<OrderDetail> findAllByRouteIdIn(List<Long> routeIds);
@Query("SELECT * FROM order_detail " +
"WHERE 1=1 " +
"AND (:#{#dto.orderNo} ='' OR order_no LIKE :#{#dto.orderNo}) " +
"AND (:#{#dto.applicant} ='' OR supplier_name LIKE :#{#dto.applicant}) " +
"AND (:#{#dto.startTime} IS NULL OR :#{#dto.endTime} IS NULL OR order_date BETWEEN :#{#dto.startTime} AND :#{#dto.endTime} ) " +
"AND (:#{#dto.productType} ='' OR product_type = :#{#dto.productType}) "+
"LIMIT :#{#pageRequest.pageSize} OFFSET :#{#pageRequest.pageNumber}")
List<OrderDetail> listByCondition(@Param("dto") OrderPageQuery dto, @Param("pageRequest")PageRequest pageRequest);
@Query("SELECT COUNT(*) FROM order_detail " +
"WHERE 1=1 " +
"AND (:#{#dto.orderNo} ='' OR order_no LIKE :#{#dto.orderNo}) " +
"AND (:#{#dto.applicant} ='' OR supplier_name LIKE :#{#dto.applicant}) " +
"AND (:#{#dto.startTime} IS NULL OR :#{#dto.endTime} IS NULL OR order_date BETWEEN :#{#dto.startTime} AND :#{#dto.endTime} ) " +
"AND (:#{#dto.productType} ='' OR product_type = :#{#dto.productType}) ")
Integer countByCondition(@Param("dto") OrderPageQuery dto);
} }

View File

@ -10,7 +10,6 @@ import com.chint.manage.entity.query.ItineraryPageQuery;
import com.chint.manage.entity.query.OrderPageQuery; import com.chint.manage.entity.query.OrderPageQuery;
import com.chint.manage.entity.query.StandardQuery; import com.chint.manage.entity.query.StandardQuery;
import com.chint.manage.service.ManageService; import com.chint.manage.service.ManageService;
import com.chint.manage.util.BaseUtil;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -26,7 +25,6 @@ import org.springframework.web.bind.annotation.RestController;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.util.List;
import static com.chint.dama.dc.basic.Result.SUCCESS; import static com.chint.dama.dc.basic.Result.SUCCESS;
@ -99,7 +97,7 @@ public class ManageController {
@PostMapping("/order/pageQuery") @PostMapping("/order/pageQuery")
public Result<?> orderPageQuery(@RequestBody OrderPageQuery dto){ public Result<?> orderPageQuery(@RequestBody OrderPageQuery dto){
//订单查询 order_detail 行程号改为申请单号 任务创建创建生成记录 异步生成 完成之后再开发下载 //订单查询 order_detail 行程号改为申请单号 任务创建创建生成记录 异步生成 完成之后再开发下载
return null; return Result.Success(SUCCESS,manageService.orderPageQuery(dto));
} }
@ApiOperation("订单下载记录查询接口") @ApiOperation("订单下载记录查询接口")

View File

@ -1,8 +1,10 @@
package com.chint.manage.entity.dto; package com.chint.manage.entity.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Data @Data
public class OrderPageDto { public class OrderPageDto {
@ -12,9 +14,20 @@ public class OrderPageDto {
private Integer productType; private Integer productType;
private String price; // 价格 private String price; // 价格
private String employeeNo; private String employeeNo;
//出发
private Long originId;
private String originName;
//目的地
private Long destinationId;
private String destinationName;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime orderDate; private LocalDateTime orderDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime startTime; private LocalDateTime startTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime endTime; private LocalDateTime endTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime; private LocalDateTime createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime updateTime; private LocalDateTime updateTime;
} }

View File

@ -9,7 +9,7 @@ import java.util.List;
@Data @Data
public class OrderPageQuery extends BaseQuery { public class OrderPageQuery extends BaseQuery {
//订单号 //订单号
private String oderNo=""; private String orderNo="";
//申请单号 //申请单号
private String actualOrderNo=""; private String actualOrderNo="";
//出行人 //出行人
@ -20,9 +20,19 @@ public class OrderPageQuery extends BaseQuery {
private String startTime; private String startTime;
//结束日期 //结束日期
private String endTime; private String endTime;
//产品类型 /**
private String productType; * 商品类型 0-火车 1飞机 2酒店 3打车 4其他
*/
private String productType="";
//部门名称 //部门名称
private String deptName=""; private String deptName="";
private List<String> userIds=new ArrayList<>(); private List<String> userIds=new ArrayList<>();
public String getOrderNo() {
return "%" +orderNo+"%";
}
public String getApplicant(){
return "%" +applicant+"%";
}
} }

View File

@ -3,11 +3,14 @@ package com.chint.manage.service;
import com.chint.infrastructure.util.PageResult; import com.chint.infrastructure.util.PageResult;
import com.chint.manage.entity.OrderDownloadRecord; import com.chint.manage.entity.OrderDownloadRecord;
import com.chint.manage.entity.dto.ItineraryPageDto; import com.chint.manage.entity.dto.ItineraryPageDto;
import com.chint.manage.entity.dto.OrderPageDto;
import com.chint.manage.entity.query.ConsumptionDetailQuery; import com.chint.manage.entity.query.ConsumptionDetailQuery;
import com.chint.manage.entity.query.ItineraryPageQuery; import com.chint.manage.entity.query.ItineraryPageQuery;
import com.chint.manage.entity.query.OrderPageQuery;
import com.chint.manage.entity.query.StandardQuery; import com.chint.manage.entity.query.StandardQuery;
import com.chint.manage.entity.excel.BaseExcel; import com.chint.manage.entity.excel.BaseExcel;
import com.chint.manage.entity.excel.OrderExceedStandardExcel; import com.chint.manage.entity.excel.OrderExceedStandardExcel;
import org.springframework.web.bind.annotation.RequestBody;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
@ -32,4 +35,6 @@ public interface ManageService {
void addOrderDownloadRecord(OrderDownloadRecord orderDownloadRecord); void addOrderDownloadRecord(OrderDownloadRecord orderDownloadRecord);
List<OrderDownloadRecord> orderDownloadRecordQuery(); List<OrderDownloadRecord> orderDownloadRecordQuery();
PageResult<OrderPageDto> orderPageQuery(OrderPageQuery dto);
} }

View File

@ -2,10 +2,14 @@ package com.chint.manage.service.impl;
import com.chint.application.dtos.response.LocationRes; import com.chint.application.dtos.response.LocationRes;
import com.chint.domain.aggregates.order.Leg; import com.chint.domain.aggregates.order.Leg;
import com.chint.domain.aggregates.order.Location;
import com.chint.domain.aggregates.order.OrderDetail;
import com.chint.domain.aggregates.order.RouteOrder; import com.chint.domain.aggregates.order.RouteOrder;
import com.chint.domain.aggregates.user.User; import com.chint.domain.aggregates.user.User;
import com.chint.domain.repository.UserRepository; import com.chint.domain.repository.UserRepository;
import com.chint.domain.service.LegDomainService; import com.chint.domain.service.LegDomainService;
import com.chint.infrastructure.repository.jdbc.JdbcLocationRepository;
import com.chint.infrastructure.repository.jdbc.JdbcOrderDetailRepository;
import com.chint.infrastructure.repository.jdbc.JdbcRouteRepository; import com.chint.infrastructure.repository.jdbc.JdbcRouteRepository;
import com.chint.infrastructure.repository.jdbc.JdbcUserRepository; import com.chint.infrastructure.repository.jdbc.JdbcUserRepository;
import com.chint.infrastructure.util.BaseContext; import com.chint.infrastructure.util.BaseContext;
@ -13,10 +17,12 @@ import com.chint.infrastructure.util.PageResult;
import com.chint.manage.entity.OrderDownloadRecord; import com.chint.manage.entity.OrderDownloadRecord;
import com.chint.manage.entity.OrderExceedStandard; import com.chint.manage.entity.OrderExceedStandard;
import com.chint.manage.entity.dto.ItineraryPageDto; import com.chint.manage.entity.dto.ItineraryPageDto;
import com.chint.manage.entity.dto.OrderPageDto;
import com.chint.manage.entity.excel.BaseExcel; import com.chint.manage.entity.excel.BaseExcel;
import com.chint.manage.entity.excel.OrderExceedStandardExcel; import com.chint.manage.entity.excel.OrderExceedStandardExcel;
import com.chint.manage.entity.query.ConsumptionDetailQuery; import com.chint.manage.entity.query.ConsumptionDetailQuery;
import com.chint.manage.entity.query.ItineraryPageQuery; import com.chint.manage.entity.query.ItineraryPageQuery;
import com.chint.manage.entity.query.OrderPageQuery;
import com.chint.manage.entity.query.StandardQuery; import com.chint.manage.entity.query.StandardQuery;
import com.chint.manage.mapper.JdbcOrderDownloadRecordRepository; import com.chint.manage.mapper.JdbcOrderDownloadRecordRepository;
import com.chint.manage.mapper.JdbcOrderExceedStandardRepository; import com.chint.manage.mapper.JdbcOrderExceedStandardRepository;
@ -35,6 +41,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
/** /**
@ -60,6 +67,10 @@ public class ManageServiceImpl implements ManageService {
private JdbcOrderDownloadRecordRepository jdbcOrderDownloadRecordRepository; private JdbcOrderDownloadRecordRepository jdbcOrderDownloadRecordRepository;
@Autowired @Autowired
private BaseUtil baseUtil; private BaseUtil baseUtil;
@Autowired
private JdbcOrderDetailRepository jdbcOrderDetailRepository;
@Autowired
private JdbcLocationRepository locationRepository;
@Override @Override
public PageResult<? extends BaseExcel> pageConsumptionDetail(ConsumptionDetailQuery dto) { public PageResult<? extends BaseExcel> pageConsumptionDetail(ConsumptionDetailQuery dto) {
@ -149,6 +160,31 @@ public class ManageServiceImpl implements ManageService {
return jdbcOrderDownloadRecordRepository.findAllByEmployeeNo(user.getEmployeeNo()); return jdbcOrderDownloadRecordRepository.findAllByEmployeeNo(user.getEmployeeNo());
} }
@Override
public PageResult<OrderPageDto> orderPageQuery(OrderPageQuery dto) {
List<OrderDetail> list=jdbcOrderDetailRepository.listByCondition(dto,dto.getPageResult());
//处理地点信息
List<Long> locationIds = new ArrayList<>(list.stream().map(OrderDetail::getOriginId).toList());
locationIds.addAll(list.stream().map(OrderDetail::getDestinationId).toList());
List<Location> locations=locationRepository.findByLocationIdIn(locationIds);
List<OrderPageDto> result = list.stream().map(temp -> {
OrderPageDto obj = new OrderPageDto();
BeanUtils.copyProperties(temp, obj);
Location origin=locations.stream().filter(s->s.getLocationId().equals(obj.getOriginId())).toList().get(0);
Location destination=locations.stream().filter(s->s.getLocationId().equals(obj.getDestinationId())).toList().get(0);
if (origin!=null){
obj.setOriginName(origin.getLocationName());
}
if (destination!=null){
obj.setDestinationName(destination.getLocationName());
}
return obj;
}).toList();
Integer count=jdbcOrderDetailRepository.countByCondition(dto);
return PageResult.totalPageNum(count, result);
}
private static List<OrderExceedStandardExcel> getOrderExceedStandardExcels(Page<OrderExceedStandard> page) { private static List<OrderExceedStandardExcel> getOrderExceedStandardExcels(Page<OrderExceedStandard> page) {
List<OrderExceedStandard> orderList = page.getContent(); List<OrderExceedStandard> orderList = page.getContent();
List<OrderExceedStandardExcel> excelList = new ArrayList<>(); List<OrderExceedStandardExcel> excelList = new ArrayList<>();