修复无法同步到同程的bug

This commit is contained in:
lulz1 2024-03-13 09:32:16 +08:00
parent 8402793382
commit 667e6bd43c
9 changed files with 634 additions and 54 deletions

View File

@ -9,6 +9,6 @@ import java.util.List;
public class OrderDetailQueryParam extends BaseQuery {
private Long orderId;
private Long routeId;
private Integer ifStart; //0未出行1已出行
private Integer ifNotStart; //0全部1未出行
private List<Integer> productTypes;
}

View File

@ -30,8 +30,7 @@ public class OrderDetailMapper {
orderDetailRes.setHotelExtensionField(hotelExtensionField);
}
case LEG_TYPE_TAXI -> {
CarExtensionField carExtensionField = new CarExtensionField();
CarOrderDetail carOrderDetail = orderDetail.getCarOrderDetail();
CarExtensionField carExtensionField = getCarExtensionField(orderDetail);
orderDetailRes.setCarExtensionField(carExtensionField);
}
default -> throw new NotFoundException("订单类型未知");
@ -40,34 +39,18 @@ public class OrderDetailMapper {
}
private static HotelExtensionField getHotelExtensionField(OrderDetail orderDetail) {
HotelExtensionField hotelExtensionField = new HotelExtensionField();
HotelOrderDetail hotelOrderDetail = orderDetail.getHotelOrderDetail();
hotelExtensionField.setHotelName(hotelOrderDetail.getHotelName());
hotelExtensionField.setNightCount(hotelOrderDetail.getRoomCount());
hotelExtensionField.setNightCount(hotelOrderDetail.getNightCount());
return hotelExtensionField;
return BeanUtil.copyProperties(orderDetail.getHotelOrderDetail(), HotelExtensionField.class);
}
private static FLightExtensionField getFlightExtensionField(OrderDetail orderDetail) {
FLightExtensionField fLightExtensionField = new FLightExtensionField();
FlightOrderDetail flightOrderDetail = orderDetail.getFlightOrderDetail();
fLightExtensionField.setArriveCity(flightOrderDetail.getEndCityName());
fLightExtensionField.setDepartCity(flightOrderDetail.getStartCityName());
fLightExtensionField.setArriveStation(flightOrderDetail.getEndAirportName());
fLightExtensionField.setDepartStation(flightOrderDetail.getStartAirportName());
fLightExtensionField.setSeatName(flightOrderDetail.getSeatPointName());
return fLightExtensionField;
return BeanUtil.copyProperties(orderDetail.getFlightOrderDetail(),FLightExtensionField.class);
}
private static TrainExtensionField getTrainExtensionField(OrderDetail orderDetail) {
TrainOrderDetail trainOrderDetail = orderDetail.getTrainOrderDetail();
TrainExtensionField trainExtensionField = new TrainExtensionField();
trainExtensionField.setArriveCity(trainOrderDetail.getToCity());
trainExtensionField.setDepartCity(trainOrderDetail.getFromCity());
trainExtensionField.setDepartStation(trainOrderDetail.getFromStationName());
trainExtensionField.setArriveStation(trainOrderDetail.getToStationName());
trainExtensionField.setTrainNo(trainOrderDetail.getTrainNo());
trainExtensionField.setSeatName(trainOrderDetail.getSeatName());
return trainExtensionField;
return BeanUtil.copyProperties(orderDetail.getTrainOrderDetail(),TrainExtensionField.class);
}
private static CarExtensionField getCarExtensionField(OrderDetail orderDetail) {
return BeanUtil.copyProperties(orderDetail.getCarOrderDetail(),CarExtensionField.class);
}
}

View File

@ -4,4 +4,129 @@ import lombok.Data;
@Data
public class CarExtensionField {
// 数据来源商旅平台
private String trvaleSysType;
// 对应所属系统
private String belongSysType;
// 订单号
private String orderNo;
// 消费明细唯一标识
private String detailId;
// 是否超标
private String overStandard;
// 父级订单号
private String parentOrderNo;
// 原始订单号
private String originalOrderNo;
// 订单状态
private String orderStatus;
// 核算企业id
private String accountCompanyId;
// 核算企业名称
private String accountCompanyName;
// 申请单号
private String receiptsNum;
// 行程编号
private String scheduleNum;
// 预订人Code
private String bookingUserCode;
// 预订人姓名
private String bookingName;
// 预订人电话
private String bookingUserPhone;
// 订单创建时间 格式2023-04-26 13:15:17
private String createTime;
// 出发时间 格式2023-04-26 13:15:17
private String startTime;
// 到达时间 格式2023-04-26 13:15:17
private String arriveTime;
// 出发地
private String fromStationName;
// 到达地
private String toStationName;
// 车型
private String carModel;
// 出发城市
private String fromCity;
// 到达城市
private String toCity;
// 运行时长 01:08 表示 1小时8分钟
private String runTime;
// 里程数
private String mileage;
// 订单总额(含前收服务费)
private String orderAmount;
// 取消费
private String cancellationFee;
// 差标
private String standardItems;
// 用车人姓名
private String userName;
// 用车人code
private String userCode;
// 用车人手机号
private String phone;
// 资源供应商
private String supplier;
// 个人支付金额
private String personalPaymentAmount;
// 公司统付金额
private String companyPaymentAmount;
// 超标原因
private String overStandardReason;
// 用车人组织架构信息1
private String BOOK_ORG_STRUCT_1;
// 用车人组织架构信息2
private String BOOK_ORG_STRUCT_2;
// 用车人组织架构信息3
private String BOOK_ORG_STRUCT_3;
// 付款方式 0公司统付 1个人付 2混付
private String paymentType;
// 项目订单号
private String projectOrderNo;
// 成本中心
private String costCenter;
// 高速费
private String tollFee;
}

View File

@ -4,10 +4,195 @@ import lombok.Data;
@Data
public class FLightExtensionField {
private String flightInfo;
private String seatName;
private String departCity;
private String departStation;
private String arriveCity;
private String arriveStation;
// 数据来源商旅平台
private String trvaleSysType;
// 对应所属系统
private String belongSysType;
// 订单号
private String orderNo;
// 消费明细唯一标识
private String detailId;
// 是否超标
private String overStandard;
// 父级订单号
private String parentOrderNo;
// 原始订单号
private String originalOrderNo;
// 订单状态1-出票成功2-改签成功3-退票成功
private String orderStatus;
// 核算企业id
private String accountCompanyId;
// 核算企业名称
private String accountCompanyName;
// 差旅申请单
private String receiptsNum;
// 行程编号
private String scheduleNum;
// 改签后行程编号
private String changedScheduleNum;
// 预订人code
private String bookingUserCode;
// 预订人姓名
private String bookingName;
// 预订人电话
private String bookingUserPhone;
// 订单创建时间 格式2023-04-26 13:15:17
private String createTime;
// 起飞时间 格式2023-04-26 13:15:17
private String startTime;
// 到达时间 格式2023-04-26 13:15:17
private String arriveTime;
// 起飞城市名称
private String startCityName;
// 起飞城市编码
private String startCityCode;
// 起飞机场名称
private String startAirportName;
// 起飞机场三字码
private String startAirportCode;
// 起飞航站楼
private String startTerminal;
// 到达城市名称
private String endCityName;
// 到达城市编码
private String endCityCode;
// 到达机场名称
private String endAirportName;
// 到达机场三字码
private String endAirportCode;
// 到达航站楼
private String endTerminal;
// 航程公里数
private String distance;
// 航空公司名称
private String flightCompName;
// 航班号
private String flightNum;
// 舱位
private String seatPoint;
// 舱位名称
private String seatPointName;
// 订单总额
private String orderAmount;
// 前收服务费
private String preServiceFee;
// 后收服务费
private String postServiceFee;
// 退款总额
private String refundAmount;
// 机票信息
private String tickets;
// 燃油费
private String fuelTax;
// 机建费
private String airportTax;
// 票面价
private String facePrice;
// 改签费
private String changeFee;
// 退票手续费
private String refundFee;
// 升舱费
private String upFee;
// 舱位及折扣
private String standard;
// 票号
private String ticketNo;
// 改签后票号
private String changedTicketNo;
// 出行人姓名
private String userName;
// 出行人code
private String userCode;
// 是否超标
private String isOverStandard;
// 出行人手机号
private String phone;
// 付款方式 0公司统付 1个人付 2混付
private String paymentType;
// 未预订最低价原因
private String notBookedLowestPriceReason;
// 资源供应商
private String supplier;
// 个人支付金额
private String personalPaymentAmount;
// 公司统付金额
private String companyPaymentAmount;
// 超标原因
private String overStandardReason;
// 出行人组织架构信息1
private String BOOK_ORG_STRUCT_1;
// 出行人组织架构信息2
private String BOOK_ORG_STRUCT_2;
// 出行人组织架构信息3
private String BOOK_ORG_STRUCT_3;
// 保险费
private String insuranceFee;
// 项目订单号
private String projectOrderNo;
// 成本中心
private String costCenter;
}

View File

@ -1,10 +1,145 @@
package com.chint.application.dtos.response;
import com.chint.domain.aggregates.order.HotelOrderDetailCustomer;
import lombok.Data;
import java.util.List;
@Data
public class HotelExtensionField {
// 数据来源商旅平台
private String trvaleSysType;
// 对应所属系统
private String belongSysType;
// 订单号
private String orderNo;
// 消费明细唯一标识
private String detailId;
// 是否超标
private String overStandard;
// 订单状态1-预订成功3-全部退订成功4-部分退订成功
private String orderStatus;
// 核算企业id
private String accountCompanyId;
// 核算企业名称
private String accountCompanyName;
// 申请单号
private String receiptsNum;
// 行程编号
private String scheduleNum;
// 预订人Code
private String bookingUserCode;
// 预订人姓名
private String bookingName;
// 预订人电话
private String bookingUserPhone;
// 订单创建时间 格式2023-04-26 13:15:17
private String createTime;
// 入住城市
private String checkInCity;
// 酒店名称
private String hotelName;
private String roomCount;
// 酒店电话
private String contactPhone;
// 酒店地址
private String hotelAddress;
// 星级
private String starRate;
// 入住日期 格式2022-09-10
private String checkInDate;
// 离店日期 格式2022-09-10
private String departureDate;
// 夜晚数
private String nightCount;
// 房间数
private String roomCount;
// 退订夜间数
private String refundRoomNightCount;
// 房型
private String roomTypeName;
// 付款方式 0公司统付 1个人付 2混付
private String paymentType;
// 企业统付总额
private String companyAmount;
// 个人支付总额
private String personalAmount;
// 企业退款金额
private String companyRefundAmount;
// 个人退款金额
private String personalRefundAmount;
// 订单总额
private String orderAmount;
// 前收服务费
private String preServiceFee;
// 后收服务费
private String postServiceFee;
// 退款总额
private String refundAmount;
private List<HotelOrderDetailCustomer> customers;
// 入离日期内差标
private String standardItems;
// 间夜信息
private String nightRates;
// 资源供应商
private String supplier;
// 涉及金额字段都要取回
private String amountFields;
// 超标原因
private String overStandardReason;
// 是否协议酒店
private String agreementHotel;
// 入住人组织架构信息1
private String BOOK_ORG_STRUCT_1;
// 入住人组织架构信息2
private String BOOK_ORG_STRUCT_2;
// 入住人组织架构信息3
private String BOOK_ORG_STRUCT_3;
// 项目订单号
private String projectOrderNo;
// 成本中心
private String costCenter;
}

View File

@ -4,11 +4,156 @@ import lombok.Data;
@Data
public class TrainExtensionField {
// 数据来源商旅平台
private String trvaleSysType;
private String departCity;
private String departStation;
private String arriveCity;
private String arriveStation;
// 对应所属系统
private String belongSysType;
// 订单号
private String orderNo;
// 消费明细唯一标识
private String detailId;
// 是否超标
private String overStandard;
// 父级订单号
private String parentOrderNo;
// 原始订单号
private String originalOrderNo;
// 订单状态1-出票成功2-改签成功3-退票成功
private String orderStatus;
// 核算企业id
private String accountCompanyId;
// 核算企业名称
private String accountCompanyName;
// 申请单号
private String receiptsNum;
// 行程编号
private String scheduleNum;
// 预订人Code
private String bookingUserCode;
// 预订人姓名
private String bookingName;
// 预订人电话
private String bookingUserPhone;
// 订单创建时间 格式2023-04-26 13:15:17
private String createTime;
// 出发时间 格式2023-04-26 13:15:17
private String startTime;
// 到达时间 格式2023-04-26 13:15:17
private String arriveTime;
// 出发站
private String fromStationName;
// 到达站
private String toStationName;
// 车次
private String trainNo;
// 出发城市
private String fromCity;
// 到达城市
private String toCity;
// 运行时长 01:08 表示 1小时8分钟
private String runTime;
// 订单总额(含前收服务费)
private String orderAmount;
// 前收服务费
private String preServiceFee;
// 后收服务费
private String postServiceFee;
// 退款总额
private String refundAmount;
// 改签差额 高改低时为负数平改时为0低改高为正数
private String changeDifference;
// 改签手续费
private String changeCost;
// 火车票信息
private String tickets;
// 座位等级
private String seatType;
// 座位
private String seatName;
// 票价
private String ticketPrice;
// 退款手续费
private String refundCost;
// 退款金额
private String refundPrice;
// 差标
private String standardItems;
// 出行人姓名
private String userName;
// 出行人code
private String userCode;
// 出行人手机号
private String phone;
// 资源供应商
private String supplier;
// 个人支付金额
private String personalAmount;
// 公司统付金额
private String companyAmount;
// 超标原因
private String overStandardReason;
// 出行人组织架构信息1
private String BOOK_ORG_STRUCT_1;
// 出行人组织架构信息2
private String BOOK_ORG_STRUCT_2;
// 出行人组织架构信息3
private String BOOK_ORG_STRUCT_3;
// 付款方式 0公司统付 1个人付 2混付
private String paymentType;
// 保险费
private String insuranceFee;
// 项目订单号
private String projectOrderNo;
// 成本中心
private String costCenter;
}

View File

@ -5,6 +5,7 @@ import com.chint.application.dtos.OrderDetailQueryParam;
import com.chint.application.dtos.mapper.OrderDetailMapper;
import com.chint.application.dtos.response.OrderDetailRes;
import com.chint.domain.aggregates.order.OrderDetail;
import com.chint.domain.aggregates.order.RouteOrder;
import com.chint.domain.aggregates.user.User;
import com.chint.domain.repository.OrderDetailRepository;
import com.chint.domain.repository.RouteRepository;
@ -31,24 +32,25 @@ public class OrderDetailQuery {
public PageResult<OrderDetailRes> orderDetailPageQuery(OrderDetailQueryParam orderDetailQueryParam) {
Integer pageNum = orderDetailQueryParam.getPageNum();
Integer pageSize = orderDetailQueryParam.getPageSize();
Integer ifStart = orderDetailQueryParam.getIfStart();
Integer ifNotStart = orderDetailQueryParam.getIfNotStart();
User currentUser = BaseContext.getCurrentUser();
Stream<OrderDetail> details = routeRepository.findByEmployeeNo(currentUser.getEmployeeNo())
List<RouteOrder> byEmployeeNo = routeRepository.findByEmployeeNo(currentUser.getEmployeeNo());
Stream<OrderDetail> details = byEmployeeNo
.stream()
.flatMap(it -> it.getOrderDetails().stream());
List<Integer> productTypes = orderDetailQueryParam.getProductTypes();
if (productTypes != null) {
if (productTypes != null && !productTypes.isEmpty()) {
details = details.filter(it -> productTypes.contains(it.getProductType()));
}
if(ifStart != null && ifStart.equals(0)){
if(ifNotStart != null && ifNotStart.equals(1)){
details = details.filter(it->it.getStartTime().isAfter(LocalDateTime.now()));
}
if(ifStart != null && ifStart.equals(1)){
details = details.filter(it->it.getStartTime().isBefore(LocalDateTime.now()));
}
// if(ifStart != null && ifStart.equals(1)){
// details = details.filter(it->it.getStartTime().isBefore(LocalDateTime.now()));
// }
List<OrderDetail> res = details.toList();
Integer total = res.size();

View File

@ -7,6 +7,7 @@ import org.springframework.data.annotation.Id;
import org.springframework.data.relational.core.mapping.MappedCollection;
import org.springframework.data.relational.core.mapping.Table;
import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@ -15,6 +16,8 @@ import java.util.List;
@Table("hotel_order_detail")
@Accessors(chain = true)
public class HotelOrderDetail implements Serializable {
@Serial
private static final long serialVersionUID = 559971732696525356L;
@Id
private Long id;

View File

@ -157,16 +157,18 @@ public class LYOrderSyncAdapter implements SupplierOrderSync {
//如果是打车
if (leg.getLegType().equals(LEG_TYPE_TAXI)) {
LegExtensionField legExtensionField = leg.getLegExtensionField();
List<String> cityNameList = legExtensionField
.getLocationIdsAsLong()
.stream()
.map(it -> {
Location location = locationRepository.findById(it);
return location.getLocationName();
}).toList();
for (String cityName : cityNameList) {
departCityStr.append(cityName).append(",");
arriveCityStr.append(cityName).append(",");
if(legExtensionField != null){
List<String> cityNameList = legExtensionField
.getLocationIdsAsLong()
.stream()
.map(it -> {
Location location = locationRepository.findById(it);
return location.getLocationName();
}).toList();
for (String cityName : cityNameList) {
departCityStr.append(cityName).append(",");
arriveCityStr.append(cityName).append(",");
}
}
} else {
String departCity = getCityLocation(leg.getOriginLocation()).getLocationName();//出发城市名