【update】消费明细报表字段修改

This commit is contained in:
nixj 2024-05-09 15:01:01 +08:00
parent 21af75c2fc
commit ca520c072b
12 changed files with 177 additions and 92 deletions

View File

@ -1,8 +1,8 @@
package com.chint.manage.controller; package com.chint.manage.controller;
import com.chint.application.dtos.AuthenticationSignDto;
import com.chint.infrastructure.util.PageResult; 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.entity.dto.ConsumptionDetailDto;
import com.chint.manage.service.ManageService; import com.chint.manage.service.ManageService;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -29,7 +29,7 @@ public class ManageController {
@ApiOperation("消费明细查询接口") @ApiOperation("消费明细查询接口")
@PostMapping("/query") @PostMapping("/query")
public PageResult<ConsumptionDetailExcel> query(@RequestBody ConsumptionDetailDto dto){ public PageResult<? extends BaseExcel> query(@RequestBody ConsumptionDetailDto dto){
return manageService.pageConsumptionDetail(dto); return manageService.pageConsumptionDetail(dto);
} }

View File

@ -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.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadFontStyle; import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadStyle; import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.alibaba.excel.enums.poi.FillPatternTypeEnum; import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* * 基础Excel类
* @Authornxj * @Authornxj
* @Date2024/5/8 14:57 * @Date2024/5/8 14:57
*/ */

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -1,23 +1,18 @@
package com.chint.manage.entity; package com.chint.manage.entity.excel;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
/**
* 消费明细-order_detail
* @Authornxj
* @Date2024/5/7 14:17
*/
@Data @Data
@Builder public class TrainOrderDetailExcel extends BaseExcel{
public class ConsumptionDetailExcel extends BaseExcel{
@ExcelProperty("出行人姓名") @ExcelProperty("出行人姓名")
private String userName; private String userName;
@ExcelProperty("出发时间") @ExcelProperty("出发时间")
private String startDate; private String startTime;
@ExcelProperty("到达时间") @ExcelProperty("到达时间")
private String arriveDate; private String arriveTime;
@ExcelProperty("出发城市") @ExcelProperty("出发城市")
private String fromCity; private String fromCity;
@ExcelProperty("到达城市") @ExcelProperty("到达城市")
@ -28,5 +23,17 @@ public class ConsumptionDetailExcel extends BaseExcel{
private String toStationName; private String toStationName;
@ExcelProperty("订单总额(含前收服务费)") @ExcelProperty("订单总额(含前收服务费)")
private String orderAmount; 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;
} }

View File

@ -2,7 +2,8 @@ package com.chint.manage.mapper;
import com.chint.domain.aggregates.order.OrderDetail; import com.chint.domain.aggregates.order.OrderDetail;
import com.chint.infrastructure.util.PageResult; 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.entity.dto.ConsumptionDetailDto;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@ -10,5 +11,5 @@ import org.springframework.data.domain.Pageable;
public interface JdbcConsumptionDetailRepository { public interface JdbcConsumptionDetailRepository {
Page<OrderDetail> findAllByProductType(String productType, String param2, String param3, Pageable pageable); Page<OrderDetail> findAllByProductType(String productType, String param2, String param3, Pageable pageable);
PageResult<ConsumptionDetailExcel> pageConsumptionDetail(ConsumptionDetailDto dto); PageResult<? extends BaseExcel> pageConsumptionDetail(ConsumptionDetailDto dto);
} }

View File

@ -1,14 +1,10 @@
package com.chint.manage.mapper.impl; package com.chint.manage.mapper.impl;
import com.chint.domain.aggregates.order.*; 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.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.entity.dto.ConsumptionDetailDto;
import com.chint.manage.mapper.*; import com.chint.manage.mapper.*;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.*; import org.springframework.data.domain.*;
@ -17,6 +13,7 @@ import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import static com.chint.infrastructure.constant.LegConstant.*; import static com.chint.infrastructure.constant.LegConstant.*;
@ -65,7 +62,7 @@ public class JdbcConsumptionDetailRepositoryImpl implements JdbcConsumptionDetai
} }
@Override @Override
public PageResult<ConsumptionDetailExcel> pageConsumptionDetail(ConsumptionDetailDto dto) { public PageResult<? extends BaseExcel> pageConsumptionDetail(ConsumptionDetailDto dto) {
if (dto.getUserName()==null){ if (dto.getUserName()==null){
dto.setUserName(""); dto.setUserName("");
} }
@ -74,7 +71,7 @@ public class JdbcConsumptionDetailRepositoryImpl implements JdbcConsumptionDetai
} }
PageRequest pageRequest = PageRequest PageRequest pageRequest = PageRequest
.of(dto.getPageNum() - 1, dto.getPageSize(), Sort.by("id")); .of(dto.getPageNum() - 1, dto.getPageSize(), Sort.by("id"));
Page<ConsumptionDetailExcel> data=new PageImpl<>(Collections.emptyList()); Page<? extends BaseExcel> data=new PageImpl<>(Collections.emptyList());
switch (dto.getProductType()) { switch (dto.getProductType()) {
case LEG_TYPE_TRAIN -> data=getOrderTrainRecord(jdbcTrainOrderDetailRepository.findAllByUserNameContainsAndOrderNoContaining(dto.getUserName(),dto.getOrderNo(),pageRequest)); 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)); 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()); return PageResult.totalPageNum(data.getTotalElements(), data.getContent());
} }
public Page<ConsumptionDetailExcel> getOrderTrainRecord(Page<TrainOrderDetail> page) { public Page<TrainOrderDetailExcel> getOrderTrainRecord(Page<TrainOrderDetail> page) {
List<TrainOrderDetail> orderRecords = page.getContent(); List<TrainOrderDetail> orderRecords = page.getContent();
List<ConsumptionDetailExcel> consumptionDetailExcels = new ArrayList<>(); List<TrainOrderDetailExcel> trainOrderDetailExcels = new ArrayList<>();
// 遍历 OrderBaseRecord将其转换为 ConsumptionDetailExcel // 遍历 OrderBaseRecord将其转换为 ConsumptionDetailExcel
for (TrainOrderDetail orderRecord : orderRecords) { for (TrainOrderDetail orderRecord : orderRecords) {
ConsumptionDetailExcel consumptionDetailExcel = ConsumptionDetailExcel.builder() TrainOrderDetailExcel trainOrderDetailExcel = new TrainOrderDetailExcel();
.userName(orderRecord.getUserName()) BeanUtils.copyProperties(orderRecord, trainOrderDetailExcel);
.startDate(orderRecord.getStartTime()) trainOrderDetailExcels.add(trainOrderDetailExcel);
.arriveDate(orderRecord.getArriveTime())
.fromCity(orderRecord.getFromCity())
.toCity(orderRecord.getToCity())
.fromStationName(orderRecord.getFromStationName())
.toStationName(orderRecord.getToStationName())
.orderAmount(orderRecord.getOrderAmount())
.build();
// 添加到结果列表中
consumptionDetailExcels.add(consumptionDetailExcel);
} }
// 构建一个新的 Page<ConsumptionDetailExcel> 对象并返回 // 构建一个新的 Page<ConsumptionDetailExcel> 对象并返回
return new PageImpl<>(consumptionDetailExcels, page.getPageable(), page.getTotalElements()); return new PageImpl<>(trainOrderDetailExcels, page.getPageable(), page.getTotalElements());
} }
public Page<ConsumptionDetailExcel> getOrderFlightRecord(Page<FlightOrderDetail> page) { public Page<FlightOrderDetailExcel> getOrderFlightRecord(Page<FlightOrderDetail> page) {
List<FlightOrderDetail> orderRecords = page.getContent(); List<FlightOrderDetail> orderRecords = page.getContent();
List<ConsumptionDetailExcel> consumptionDetailExcels = new ArrayList<>(); List<FlightOrderDetailExcel> trainOrderDetailExcels = new ArrayList<>();
for (FlightOrderDetail orderRecord : orderRecords) { for (FlightOrderDetail orderRecord : orderRecords) {
ConsumptionDetailExcel consumptionDetailExcel = ConsumptionDetailExcel.builder() FlightOrderDetailExcel flightOrderDetailExcel = new FlightOrderDetailExcel();
.userName(orderRecord.getUserName()) BeanUtils.copyProperties(orderRecord, flightOrderDetailExcel);
.startDate(orderRecord.getStartTime()) trainOrderDetailExcels.add(flightOrderDetailExcel);
.arriveDate(orderRecord.getArriveTime())
.fromCity(orderRecord.getStartCityName())
.toCity(orderRecord.getEndCityName())
.fromStationName(orderRecord.getStartAirportName())
.toStationName(orderRecord.getEndAirportName())
.orderAmount(orderRecord.getOrderAmount())
.build();
consumptionDetailExcels.add(consumptionDetailExcel);
} }
// 构建一个新的 Page<ConsumptionDetailExcel> 对象并返回 // 构建一个新的 Page<ConsumptionDetailExcel> 对象并返回
return new PageImpl<>(consumptionDetailExcels, page.getPageable(), page.getTotalElements()); return new PageImpl<>(trainOrderDetailExcels, page.getPageable(), page.getTotalElements());
} }
public Page<ConsumptionDetailExcel> getOrderHotelRecord(Page<HotelOrderDetail> page) { public Page<HotelOrderDetailExcel> getOrderHotelRecord(Page<HotelOrderDetail> page) {
List<HotelOrderDetail> orderRecords = page.getContent(); List<HotelOrderDetail> orderRecords = page.getContent();
List<ConsumptionDetailExcel> consumptionDetailExcels = new ArrayList<>(); List<HotelOrderDetailExcel> trainOrderDetailExcels = new ArrayList<>();
for (HotelOrderDetail orderRecord : orderRecords) { for (HotelOrderDetail orderRecord : orderRecords) {
ConsumptionDetailExcel consumptionDetailExcel = ConsumptionDetailExcel.builder() HotelOrderDetailExcel hotelOrderDetailExcel = new HotelOrderDetailExcel();
.userName(orderRecord.getBookingName()) BeanUtils.copyProperties(orderRecord, hotelOrderDetailExcel);
.startDate(orderRecord.getCheckInDate()) List<HotelOrderDetailCustomer> customers=orderRecord.getCustomers();
.orderAmount(orderRecord.getOrderAmount()) String userNames = customers.stream()
.build(); .map(HotelOrderDetailCustomer::getUserName) // 获取用户名
consumptionDetailExcels.add(consumptionDetailExcel); .collect(Collectors.joining(",")); // 用逗号分隔拼接
hotelOrderDetailExcel.setUserName(userNames);
trainOrderDetailExcels.add(hotelOrderDetailExcel);
} }
// 构建一个新的 Page<ConsumptionDetailExcel> 对象并返回 // 构建一个新的 Page<ConsumptionDetailExcel> 对象并返回
return new PageImpl<>(consumptionDetailExcels, page.getPageable(), page.getTotalElements()); return new PageImpl<>(trainOrderDetailExcels, page.getPageable(), page.getTotalElements());
} }
public Page<ConsumptionDetailExcel> getOrderCarRecord(Page<CarOrderDetail> page) { public Page<CarOrderDetailExcel> getOrderCarRecord(Page<CarOrderDetail> page) {
List<CarOrderDetail> orderRecords = page.getContent(); List<CarOrderDetail> orderRecords = page.getContent();
List<ConsumptionDetailExcel> consumptionDetailExcels = new ArrayList<>(); List<CarOrderDetailExcel> trainOrderDetailExcels = new ArrayList<>();
// 遍历 OrderBaseRecord将其转换为 ConsumptionDetailExcel // 遍历 OrderBaseRecord将其转换为 ConsumptionDetailExcel
for (CarOrderDetail orderRecord : orderRecords) { for (CarOrderDetail orderRecord : orderRecords) {
ConsumptionDetailExcel consumptionDetailExcel = ConsumptionDetailExcel.builder() CarOrderDetailExcel carOrderDetailExcel = new CarOrderDetailExcel();
.userName(orderRecord.getUserName()) BeanUtils.copyProperties(orderRecord, carOrderDetailExcel);
.startDate(orderRecord.getStartTime()) trainOrderDetailExcels.add(carOrderDetailExcel);
.arriveDate(orderRecord.getArriveTime())
.fromCity(orderRecord.getFromCity())
.toCity(orderRecord.getToCity())
.fromStationName(orderRecord.getFromStationName())
.toStationName(orderRecord.getToStationName())
.orderAmount(orderRecord.getOrderAmount())
.build();
consumptionDetailExcels.add(consumptionDetailExcel);
} }
// 构建一个新的 Page<ConsumptionDetailExcel> 对象并返回 // 构建一个新的 Page<ConsumptionDetailExcel> 对象并返回
return new PageImpl<>(consumptionDetailExcels, page.getPageable(), page.getTotalElements()); return new PageImpl<>(trainOrderDetailExcels, page.getPageable(), page.getTotalElements());
} }
} }

View File

@ -1,8 +1,8 @@
package com.chint.manage.service; package com.chint.manage.service;
import com.chint.domain.aggregates.order.order_record.OrderBaseRecord;
import com.chint.infrastructure.util.PageResult; 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.entity.dto.ConsumptionDetailDto;
import java.io.File; import java.io.File;
@ -14,7 +14,7 @@ import java.io.File;
*/ */
public interface ManageService { public interface ManageService {
PageResult<ConsumptionDetailExcel> pageConsumptionDetail(ConsumptionDetailDto dto); PageResult<? extends BaseExcel> pageConsumptionDetail(ConsumptionDetailDto dto);
File saveConsumptionDetail(ConsumptionDetailDto dto); File saveConsumptionDetail(ConsumptionDetailDto dto);
} }

View File

@ -1,11 +1,13 @@
package com.chint.manage.service.impl; package com.chint.manage.service.impl;
import com.chint.infrastructure.util.PageResult; 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.entity.dto.ConsumptionDetailDto;
import com.chint.manage.mapper.impl.JdbcConsumptionDetailRepositoryImpl; import com.chint.manage.mapper.impl.JdbcConsumptionDetailRepositoryImpl;
import com.chint.manage.service.ManageService; import com.chint.manage.service.ManageService;
import com.chint.manage.util.ExcelUtil; import com.chint.manage.util.ExcelUtil;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -22,7 +24,7 @@ public class ManageServiceImpl implements ManageService {
private JdbcConsumptionDetailRepositoryImpl jdbcConsumptionDetailRepository; private JdbcConsumptionDetailRepositoryImpl jdbcConsumptionDetailRepository;
@Override @Override
public PageResult<ConsumptionDetailExcel> pageConsumptionDetail(ConsumptionDetailDto dto) { public PageResult<? extends BaseExcel> pageConsumptionDetail(ConsumptionDetailDto dto) {
return jdbcConsumptionDetailRepository.pageConsumptionDetail(dto); return jdbcConsumptionDetailRepository.pageConsumptionDetail(dto);
} }

View File

@ -3,9 +3,7 @@ package com.chint.manage.util;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.chint.infrastructure.export.OrderDetailExport; import com.chint.manage.entity.excel.BaseExcel;
import com.chint.manage.entity.BaseExcel;
import com.chint.manage.entity.ConsumptionDetailExcel;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;

View File

@ -3,7 +3,8 @@ package com.chint;
import com.chint.domain.aggregates.order.OrderDetail; import com.chint.domain.aggregates.order.OrderDetail;
import com.chint.infrastructure.repository.jdbc.JdbcOrderDetailRepository; import com.chint.infrastructure.repository.jdbc.JdbcOrderDetailRepository;
import com.chint.infrastructure.util.PageResult; 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.entity.dto.ConsumptionDetailDto;
import com.chint.manage.service.ManageService; import com.chint.manage.service.ManageService;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -21,8 +22,8 @@ public class ManageTest {
dto.setPageNum(1); dto.setPageNum(1);
dto.setPageSize(10); dto.setPageSize(10);
dto.setProductType(0); dto.setProductType(0);
dto.setSupplierName("王玲峰"); dto.setUserName("王玲峰");
PageResult<ConsumptionDetailExcel> result=manageService.pageConsumptionDetail(dto); PageResult<? extends BaseExcel> result=manageService.pageConsumptionDetail(dto);
System.out.println(result); System.out.println(result);
} }