From ca520c072ba9b03da799a661f87ca7a963040e84 Mon Sep 17 00:00:00 2001 From: nixj Date: Thu, 9 May 2024 15:01:01 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90update=E3=80=91=E6=B6=88=E8=B4=B9?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8=E5=AD=97=E6=AE=B5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/controller/ManageController.java | 6 +- .../manage/entity/{ => excel}/BaseExcel.java | 5 +- .../entity/excel/CarOrderDetailExcel.java | 41 ++++++++ .../entity/excel/FlightOrderDetailExcel.java | 35 +++++++ .../entity/excel/HotelOrderDetailExcel.java | 31 ++++++ .../TrainOrderDetailExcel.java} | 27 ++++-- .../JdbcConsumptionDetailRepository.java | 5 +- .../JdbcConsumptionDetailRepositoryImpl.java | 96 +++++++------------ .../chint/manage/service/ManageService.java | 6 +- .../service/impl/ManageServiceImpl.java | 6 +- .../java/com/chint/manage/util/ExcelUtil.java | 4 +- src/test/java/com/chint/ManageTest.java | 7 +- 12 files changed, 177 insertions(+), 92 deletions(-) rename src/main/java/com/chint/manage/entity/{ => excel}/BaseExcel.java (90%) create mode 100644 src/main/java/com/chint/manage/entity/excel/CarOrderDetailExcel.java create mode 100644 src/main/java/com/chint/manage/entity/excel/FlightOrderDetailExcel.java create mode 100644 src/main/java/com/chint/manage/entity/excel/HotelOrderDetailExcel.java rename src/main/java/com/chint/manage/entity/{ConsumptionDetailExcel.java => excel/TrainOrderDetailExcel.java} (51%) diff --git a/src/main/java/com/chint/manage/controller/ManageController.java b/src/main/java/com/chint/manage/controller/ManageController.java index 654331db..85e88852 100644 --- a/src/main/java/com/chint/manage/controller/ManageController.java +++ b/src/main/java/com/chint/manage/controller/ManageController.java @@ -1,8 +1,8 @@ package com.chint.manage.controller; -import com.chint.application.dtos.AuthenticationSignDto; import com.chint.infrastructure.util.PageResult; -import com.chint.manage.entity.ConsumptionDetailExcel; +import com.chint.manage.entity.excel.BaseExcel; +import com.chint.manage.entity.excel.TrainOrderDetailExcel; import com.chint.manage.entity.dto.ConsumptionDetailDto; import com.chint.manage.service.ManageService; import io.swagger.annotations.ApiOperation; @@ -29,7 +29,7 @@ public class ManageController { @ApiOperation("消费明细查询接口") @PostMapping("/query") - public PageResult query(@RequestBody ConsumptionDetailDto dto){ + public PageResult query(@RequestBody ConsumptionDetailDto dto){ return manageService.pageConsumptionDetail(dto); } diff --git a/src/main/java/com/chint/manage/entity/BaseExcel.java b/src/main/java/com/chint/manage/entity/excel/BaseExcel.java similarity index 90% rename from src/main/java/com/chint/manage/entity/BaseExcel.java rename to src/main/java/com/chint/manage/entity/excel/BaseExcel.java index 38380637..c63149f5 100644 --- a/src/main/java/com/chint/manage/entity/BaseExcel.java +++ b/src/main/java/com/chint/manage/entity/excel/BaseExcel.java @@ -1,14 +1,13 @@ -package com.chint.manage.entity; +package com.chint.manage.entity.excel; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.HeadFontStyle; import com.alibaba.excel.annotation.write.style.HeadStyle; import com.alibaba.excel.enums.poi.FillPatternTypeEnum; -import lombok.Data; import lombok.NoArgsConstructor; /** - * + * 基础Excel类 * @Author:nxj * @Date:2024/5/8 14:57 */ diff --git a/src/main/java/com/chint/manage/entity/excel/CarOrderDetailExcel.java b/src/main/java/com/chint/manage/entity/excel/CarOrderDetailExcel.java new file mode 100644 index 00000000..2a577ff5 --- /dev/null +++ b/src/main/java/com/chint/manage/entity/excel/CarOrderDetailExcel.java @@ -0,0 +1,41 @@ +package com.chint.manage.entity.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +@Data +public class CarOrderDetailExcel extends BaseExcel{ + @ExcelProperty("用车人姓名") + private String userName; + @ExcelProperty("出发时间") + private String startTime; + @ExcelProperty("到达时间") + private String arriveTime; + @ExcelProperty("出发城市") + private String fromCity; + @ExcelProperty("到达城市") + private String toCity; + @ExcelProperty("出发地") + private String fromStationName; + @ExcelProperty("到达地") + private String toStationName; + @ExcelProperty("订单总额(含前收服务费)") + private String orderAmount; + @ExcelProperty("车型") + private String carModel; + @ExcelProperty("里程数") + private String mileage; + @ExcelProperty("订单状态") + private String orderStatus; + @ExcelProperty("是否超标") + private String overStandard; + @ExcelProperty("超标原因") + private String overStandardReason; + @ExcelProperty("订单号") + private String orderNo; + @ExcelProperty("订单创建时间") + private String createTime; + + + +} diff --git a/src/main/java/com/chint/manage/entity/excel/FlightOrderDetailExcel.java b/src/main/java/com/chint/manage/entity/excel/FlightOrderDetailExcel.java new file mode 100644 index 00000000..07068d32 --- /dev/null +++ b/src/main/java/com/chint/manage/entity/excel/FlightOrderDetailExcel.java @@ -0,0 +1,35 @@ +package com.chint.manage.entity.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + + +@Data +public class FlightOrderDetailExcel extends BaseExcel{ + @ExcelProperty("出行人姓名") + private String userName; + @ExcelProperty("起飞时间") + private String startTime; + @ExcelProperty("到达时间") + private String arriveTime; + @ExcelProperty("起飞城市名称") + private String startCityName; + @ExcelProperty("到达城市名称") + private String endCityName; + @ExcelProperty("订单总额") + private String orderAmount; + @ExcelProperty("舱位名称") + private String seatPointName; + @ExcelProperty("订单状态") + private String orderStatus; + @ExcelProperty("是否超标") + private String isOverStandard; + @ExcelProperty("超标原因") + private String overStandardReason; + @ExcelProperty("订单号") + private String orderNo; + @ExcelProperty("订单创建时间") + private String createTime; + + +} diff --git a/src/main/java/com/chint/manage/entity/excel/HotelOrderDetailExcel.java b/src/main/java/com/chint/manage/entity/excel/HotelOrderDetailExcel.java new file mode 100644 index 00000000..e9c5ccbc --- /dev/null +++ b/src/main/java/com/chint/manage/entity/excel/HotelOrderDetailExcel.java @@ -0,0 +1,31 @@ +package com.chint.manage.entity.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +@Data +public class HotelOrderDetailExcel extends BaseExcel { + + @ExcelProperty("入住人姓名") + private String userName; + @ExcelProperty("入住日期") + private String checkInDate; + @ExcelProperty("离店日期") + private String departureDate; + @ExcelProperty("入住城市") + private String checkInCity; + @ExcelProperty("间夜信息") + private String nightRates; + @ExcelProperty("订单总额") + private String orderAmount; + @ExcelProperty("是否超标") + private String overStandard; + @ExcelProperty("超标原因") + private String overStandardReason; + @ExcelProperty("是否协议酒店") + private String agreementHotel; + @ExcelProperty("订单号") + private String orderNo; + @ExcelProperty("订单创建时间") + private String createTime; +} diff --git a/src/main/java/com/chint/manage/entity/ConsumptionDetailExcel.java b/src/main/java/com/chint/manage/entity/excel/TrainOrderDetailExcel.java similarity index 51% rename from src/main/java/com/chint/manage/entity/ConsumptionDetailExcel.java rename to src/main/java/com/chint/manage/entity/excel/TrainOrderDetailExcel.java index e12c6c8a..dd179ff5 100644 --- a/src/main/java/com/chint/manage/entity/ConsumptionDetailExcel.java +++ b/src/main/java/com/chint/manage/entity/excel/TrainOrderDetailExcel.java @@ -1,23 +1,18 @@ -package com.chint.manage.entity; +package com.chint.manage.entity.excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Builder; import lombok.Data; -/** - * 消费明细-order_detail - * @Author:nxj - * @Date:2024/5/7 14:17 - */ + @Data -@Builder -public class ConsumptionDetailExcel extends BaseExcel{ +public class TrainOrderDetailExcel extends BaseExcel{ @ExcelProperty("出行人姓名") private String userName; @ExcelProperty("出发时间") - private String startDate; + private String startTime; @ExcelProperty("到达时间") - private String arriveDate; + private String arriveTime; @ExcelProperty("出发城市") private String fromCity; @ExcelProperty("到达城市") @@ -28,5 +23,17 @@ public class ConsumptionDetailExcel extends BaseExcel{ private String toStationName; @ExcelProperty("订单总额(含前收服务费)") private String orderAmount; + @ExcelProperty("座位等级") + private String seatType; + @ExcelProperty("订单状态") + private String orderStatus; + @ExcelProperty("是否超标") + private String overStandard; + @ExcelProperty("超标原因") + private String overStandardReason; + @ExcelProperty("订单号") + private String orderNo; + @ExcelProperty("订单创建时间") + private String createTime; } diff --git a/src/main/java/com/chint/manage/mapper/JdbcConsumptionDetailRepository.java b/src/main/java/com/chint/manage/mapper/JdbcConsumptionDetailRepository.java index e03e399b..a70cd6ca 100644 --- a/src/main/java/com/chint/manage/mapper/JdbcConsumptionDetailRepository.java +++ b/src/main/java/com/chint/manage/mapper/JdbcConsumptionDetailRepository.java @@ -2,7 +2,8 @@ package com.chint.manage.mapper; import com.chint.domain.aggregates.order.OrderDetail; import com.chint.infrastructure.util.PageResult; -import com.chint.manage.entity.ConsumptionDetailExcel; +import com.chint.manage.entity.excel.BaseExcel; +import com.chint.manage.entity.excel.TrainOrderDetailExcel; import com.chint.manage.entity.dto.ConsumptionDetailDto; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -10,5 +11,5 @@ import org.springframework.data.domain.Pageable; public interface JdbcConsumptionDetailRepository { Page findAllByProductType(String productType, String param2, String param3, Pageable pageable); - PageResult pageConsumptionDetail(ConsumptionDetailDto dto); + PageResult pageConsumptionDetail(ConsumptionDetailDto dto); } \ No newline at end of file diff --git a/src/main/java/com/chint/manage/mapper/impl/JdbcConsumptionDetailRepositoryImpl.java b/src/main/java/com/chint/manage/mapper/impl/JdbcConsumptionDetailRepositoryImpl.java index 51e5eaa6..605018c6 100644 --- a/src/main/java/com/chint/manage/mapper/impl/JdbcConsumptionDetailRepositoryImpl.java +++ b/src/main/java/com/chint/manage/mapper/impl/JdbcConsumptionDetailRepositoryImpl.java @@ -1,14 +1,10 @@ package com.chint.manage.mapper.impl; import com.chint.domain.aggregates.order.*; -import com.chint.domain.aggregates.order.order_record.*; -import com.chint.infrastructure.constant.LegConstant; -import com.chint.infrastructure.repository.jdbc.*; import com.chint.infrastructure.util.PageResult; -import com.chint.manage.entity.ConsumptionDetailExcel; +import com.chint.manage.entity.excel.*; import com.chint.manage.entity.dto.ConsumptionDetailDto; import com.chint.manage.mapper.*; -import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.*; @@ -17,6 +13,7 @@ import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Repository; import java.util.*; +import java.util.stream.Collectors; import static com.chint.infrastructure.constant.LegConstant.*; @@ -65,7 +62,7 @@ public class JdbcConsumptionDetailRepositoryImpl implements JdbcConsumptionDetai } @Override - public PageResult pageConsumptionDetail(ConsumptionDetailDto dto) { + public PageResult pageConsumptionDetail(ConsumptionDetailDto dto) { if (dto.getUserName()==null){ dto.setUserName(""); } @@ -74,7 +71,7 @@ public class JdbcConsumptionDetailRepositoryImpl implements JdbcConsumptionDetai } PageRequest pageRequest = PageRequest .of(dto.getPageNum() - 1, dto.getPageSize(), Sort.by("id")); - Page data=new PageImpl<>(Collections.emptyList()); + Page data=new PageImpl<>(Collections.emptyList()); switch (dto.getProductType()) { case LEG_TYPE_TRAIN -> data=getOrderTrainRecord(jdbcTrainOrderDetailRepository.findAllByUserNameContainsAndOrderNoContaining(dto.getUserName(),dto.getOrderNo(),pageRequest)); case LEG_TYPE_AIRPLANE -> data=getOrderFlightRecord(jdbcFlightOrderDetailRepository.findAllByUserNameContainsAndOrderNoContaining(dto.getUserName(),dto.getOrderNo(),pageRequest)); @@ -84,88 +81,61 @@ public class JdbcConsumptionDetailRepositoryImpl implements JdbcConsumptionDetai return PageResult.totalPageNum(data.getTotalElements(), data.getContent()); } - public Page getOrderTrainRecord(Page page) { + public Page getOrderTrainRecord(Page page) { List orderRecords = page.getContent(); - List consumptionDetailExcels = new ArrayList<>(); - + List trainOrderDetailExcels = new ArrayList<>(); // 遍历 OrderBaseRecord,将其转换为 ConsumptionDetailExcel for (TrainOrderDetail orderRecord : orderRecords) { - ConsumptionDetailExcel consumptionDetailExcel = ConsumptionDetailExcel.builder() - .userName(orderRecord.getUserName()) - .startDate(orderRecord.getStartTime()) - .arriveDate(orderRecord.getArriveTime()) - .fromCity(orderRecord.getFromCity()) - .toCity(orderRecord.getToCity()) - .fromStationName(orderRecord.getFromStationName()) - .toStationName(orderRecord.getToStationName()) - .orderAmount(orderRecord.getOrderAmount()) - .build(); - // 添加到结果列表中 - consumptionDetailExcels.add(consumptionDetailExcel); + TrainOrderDetailExcel trainOrderDetailExcel = new TrainOrderDetailExcel(); + BeanUtils.copyProperties(orderRecord, trainOrderDetailExcel); + trainOrderDetailExcels.add(trainOrderDetailExcel); } - // 构建一个新的 Page 对象并返回 - return new PageImpl<>(consumptionDetailExcels, page.getPageable(), page.getTotalElements()); + return new PageImpl<>(trainOrderDetailExcels, page.getPageable(), page.getTotalElements()); } - public Page getOrderFlightRecord(Page page) { + public Page getOrderFlightRecord(Page page) { List orderRecords = page.getContent(); - List consumptionDetailExcels = new ArrayList<>(); + List trainOrderDetailExcels = new ArrayList<>(); for (FlightOrderDetail orderRecord : orderRecords) { - ConsumptionDetailExcel consumptionDetailExcel = ConsumptionDetailExcel.builder() - .userName(orderRecord.getUserName()) - .startDate(orderRecord.getStartTime()) - .arriveDate(orderRecord.getArriveTime()) - .fromCity(orderRecord.getStartCityName()) - .toCity(orderRecord.getEndCityName()) - .fromStationName(orderRecord.getStartAirportName()) - .toStationName(orderRecord.getEndAirportName()) - .orderAmount(orderRecord.getOrderAmount()) - .build(); - consumptionDetailExcels.add(consumptionDetailExcel); + FlightOrderDetailExcel flightOrderDetailExcel = new FlightOrderDetailExcel(); + BeanUtils.copyProperties(orderRecord, flightOrderDetailExcel); + trainOrderDetailExcels.add(flightOrderDetailExcel); } - // 构建一个新的 Page 对象并返回 - return new PageImpl<>(consumptionDetailExcels, page.getPageable(), page.getTotalElements()); + return new PageImpl<>(trainOrderDetailExcels, page.getPageable(), page.getTotalElements()); } - public Page getOrderHotelRecord(Page page) { + public Page getOrderHotelRecord(Page page) { List orderRecords = page.getContent(); - List consumptionDetailExcels = new ArrayList<>(); + List trainOrderDetailExcels = new ArrayList<>(); for (HotelOrderDetail orderRecord : orderRecords) { - ConsumptionDetailExcel consumptionDetailExcel = ConsumptionDetailExcel.builder() - .userName(orderRecord.getBookingName()) - .startDate(orderRecord.getCheckInDate()) - .orderAmount(orderRecord.getOrderAmount()) - .build(); - consumptionDetailExcels.add(consumptionDetailExcel); + HotelOrderDetailExcel hotelOrderDetailExcel = new HotelOrderDetailExcel(); + BeanUtils.copyProperties(orderRecord, hotelOrderDetailExcel); + List customers=orderRecord.getCustomers(); + String userNames = customers.stream() + .map(HotelOrderDetailCustomer::getUserName) // 获取用户名 + .collect(Collectors.joining(",")); // 用逗号分隔拼接 + hotelOrderDetailExcel.setUserName(userNames); + trainOrderDetailExcels.add(hotelOrderDetailExcel); } - // 构建一个新的 Page 对象并返回 - return new PageImpl<>(consumptionDetailExcels, page.getPageable(), page.getTotalElements()); + return new PageImpl<>(trainOrderDetailExcels, page.getPageable(), page.getTotalElements()); } - public Page getOrderCarRecord(Page page) { + public Page getOrderCarRecord(Page page) { List orderRecords = page.getContent(); - List consumptionDetailExcels = new ArrayList<>(); + List trainOrderDetailExcels = new ArrayList<>(); // 遍历 OrderBaseRecord,将其转换为 ConsumptionDetailExcel for (CarOrderDetail orderRecord : orderRecords) { - ConsumptionDetailExcel consumptionDetailExcel = ConsumptionDetailExcel.builder() - .userName(orderRecord.getUserName()) - .startDate(orderRecord.getStartTime()) - .arriveDate(orderRecord.getArriveTime()) - .fromCity(orderRecord.getFromCity()) - .toCity(orderRecord.getToCity()) - .fromStationName(orderRecord.getFromStationName()) - .toStationName(orderRecord.getToStationName()) - .orderAmount(orderRecord.getOrderAmount()) - .build(); - consumptionDetailExcels.add(consumptionDetailExcel); + CarOrderDetailExcel carOrderDetailExcel = new CarOrderDetailExcel(); + BeanUtils.copyProperties(orderRecord, carOrderDetailExcel); + trainOrderDetailExcels.add(carOrderDetailExcel); } // 构建一个新的 Page 对象并返回 - return new PageImpl<>(consumptionDetailExcels, page.getPageable(), page.getTotalElements()); + return new PageImpl<>(trainOrderDetailExcels, page.getPageable(), page.getTotalElements()); } } diff --git a/src/main/java/com/chint/manage/service/ManageService.java b/src/main/java/com/chint/manage/service/ManageService.java index da9225d9..a484f99f 100644 --- a/src/main/java/com/chint/manage/service/ManageService.java +++ b/src/main/java/com/chint/manage/service/ManageService.java @@ -1,8 +1,8 @@ package com.chint.manage.service; -import com.chint.domain.aggregates.order.order_record.OrderBaseRecord; import com.chint.infrastructure.util.PageResult; -import com.chint.manage.entity.ConsumptionDetailExcel; +import com.chint.manage.entity.excel.BaseExcel; +import com.chint.manage.entity.excel.TrainOrderDetailExcel; import com.chint.manage.entity.dto.ConsumptionDetailDto; import java.io.File; @@ -14,7 +14,7 @@ import java.io.File; */ public interface ManageService { - PageResult pageConsumptionDetail(ConsumptionDetailDto dto); + PageResult pageConsumptionDetail(ConsumptionDetailDto dto); File saveConsumptionDetail(ConsumptionDetailDto dto); } diff --git a/src/main/java/com/chint/manage/service/impl/ManageServiceImpl.java b/src/main/java/com/chint/manage/service/impl/ManageServiceImpl.java index 61d3d4c8..c6237833 100644 --- a/src/main/java/com/chint/manage/service/impl/ManageServiceImpl.java +++ b/src/main/java/com/chint/manage/service/impl/ManageServiceImpl.java @@ -1,11 +1,13 @@ package com.chint.manage.service.impl; import com.chint.infrastructure.util.PageResult; -import com.chint.manage.entity.ConsumptionDetailExcel; +import com.chint.manage.entity.excel.BaseExcel; +import com.chint.manage.entity.excel.TrainOrderDetailExcel; import com.chint.manage.entity.dto.ConsumptionDetailDto; import com.chint.manage.mapper.impl.JdbcConsumptionDetailRepositoryImpl; import com.chint.manage.service.ManageService; import com.chint.manage.util.ExcelUtil; +import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -22,7 +24,7 @@ public class ManageServiceImpl implements ManageService { private JdbcConsumptionDetailRepositoryImpl jdbcConsumptionDetailRepository; @Override - public PageResult pageConsumptionDetail(ConsumptionDetailDto dto) { + public PageResult pageConsumptionDetail(ConsumptionDetailDto dto) { return jdbcConsumptionDetailRepository.pageConsumptionDetail(dto); } diff --git a/src/main/java/com/chint/manage/util/ExcelUtil.java b/src/main/java/com/chint/manage/util/ExcelUtil.java index 90e7648b..e2b0b642 100644 --- a/src/main/java/com/chint/manage/util/ExcelUtil.java +++ b/src/main/java/com/chint/manage/util/ExcelUtil.java @@ -3,9 +3,7 @@ package com.chint.manage.util; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; -import com.chint.infrastructure.export.OrderDetailExport; -import com.chint.manage.entity.BaseExcel; -import com.chint.manage.entity.ConsumptionDetailExcel; +import com.chint.manage.entity.excel.BaseExcel; import java.io.File; import java.util.List; diff --git a/src/test/java/com/chint/ManageTest.java b/src/test/java/com/chint/ManageTest.java index 96921bc3..86af2b33 100644 --- a/src/test/java/com/chint/ManageTest.java +++ b/src/test/java/com/chint/ManageTest.java @@ -3,7 +3,8 @@ package com.chint; import com.chint.domain.aggregates.order.OrderDetail; import com.chint.infrastructure.repository.jdbc.JdbcOrderDetailRepository; import com.chint.infrastructure.util.PageResult; -import com.chint.manage.entity.ConsumptionDetailExcel; +import com.chint.manage.entity.excel.BaseExcel; +import com.chint.manage.entity.excel.TrainOrderDetailExcel; import com.chint.manage.entity.dto.ConsumptionDetailDto; import com.chint.manage.service.ManageService; import org.junit.jupiter.api.Test; @@ -21,8 +22,8 @@ public class ManageTest { dto.setPageNum(1); dto.setPageSize(10); dto.setProductType(0); - dto.setSupplierName("王玲峰"); - PageResult result=manageService.pageConsumptionDetail(dto); + dto.setUserName("王玲峰"); + PageResult result=manageService.pageConsumptionDetail(dto); System.out.println(result); }