修复火车订单明细生成逻辑

This commit is contained in:
lulz1 2024-03-20 17:51:54 +08:00
parent f1ee79dadf
commit 292d99125e
8 changed files with 224 additions and 89 deletions

View File

@ -178,6 +178,9 @@ public class OrderDetailController {
trainOrderDetail.setDetailId(newOrderNo);
trainOrderDetail.setCreateTime(command.getCreateTime());
trainOrderDetail.setId(null);
if(trainOrderDetail.getSupplier().equals(SUPPLIER_L_Y_CN_NAME)){
orderExtensionCreator.of(SUPPLIER_L_Y).updateTrainOrderDetailData(trainOrderDetail,command.getOrderInfo());
}
}
if (productType == 1) {
FlightOrderDetail flightOrderDetail = orderDetail.getFlightOrderDetail();

View File

@ -141,10 +141,16 @@ public class OrderDetailQuery {
private Object processHotelOrderDetail(OrderDetail orderDetail, String systemType) {
HotelOrderDetail hotelOrderDetail = orderDetail.getHotelOrderDetail();
if (hotelOrderDetail != null &&
hotelOrderDetail.getOrderStatus() != null &&
!hotelOrderDetail.getOrderStatus().equals(FSSC_ORDER_STATUS_CANCEL) &&
systemType.equals(hotelOrderDetail.getBelongSysType())) {
if (hotelOrderDetail.getCreateTime().contains("1900") || hotelOrderDetail.getCreateTime().contains("2999")) {
return null;
}
String receiptsNum = hotelOrderDetail.getReceiptsNum();
if (receiptsNum != null) {
hotelOrderDetail.setReceiptsNum(regetReceiptsNum(receiptsNum));
@ -164,10 +170,16 @@ public class OrderDetailQuery {
private Object processTrainOrderDetail(OrderDetail orderDetail, String systemType) {
TrainOrderDetail trainOrderDetail = orderDetail.getTrainOrderDetail();
if (trainOrderDetail != null &&
trainOrderDetail.getOrderStatus() != null &&
!trainOrderDetail.getOrderStatus().equals(FSSC_ORDER_STATUS_CANCEL) &&
systemType.equals(trainOrderDetail.getBelongSysType())) {
if (trainOrderDetail.getCreateTime().contains("1900") || trainOrderDetail.getCreateTime().contains("2999")) {
return null;
}
String receiptsNum = trainOrderDetail.getReceiptsNum();
if (receiptsNum != null) {
trainOrderDetail.setReceiptsNum(regetReceiptsNum(receiptsNum));
@ -186,6 +198,11 @@ public class OrderDetailQuery {
carOrderDetail.getOrderStatus() != null &&
!carOrderDetail.getOrderStatus().equals(FSSC_ORDER_STATUS_CANCEL) &&
systemType.equals(carOrderDetail.getBelongSysType())) {
if (carOrderDetail.getCreateTime().contains("1900") || carOrderDetail.getCreateTime().contains("2999")) {
return null;
}
String receiptsNum = carOrderDetail.getReceiptsNum();
if (receiptsNum != null) {
carOrderDetail.setReceiptsNum(regetReceiptsNum(receiptsNum));
@ -201,11 +218,15 @@ public class OrderDetailQuery {
private Object processFlightOrderDetail(OrderDetail orderDetail, String systemType) {
FlightOrderDetail flightOrderDetail = orderDetail.getFlightOrderDetail();
if (flightOrderDetail != null &&
flightOrderDetail.getOrderStatus() != null &&
!flightOrderDetail.getOrderStatus().equals(FSSC_ORDER_STATUS_CANCEL) &&
systemType.equals(flightOrderDetail.getBelongSysType())) {
if (flightOrderDetail.getCreateTime().contains("1900") || flightOrderDetail.getCreateTime().contains("2999")) {
return null;
}
String receiptsNum = flightOrderDetail.getReceiptsNum();
if (receiptsNum != null) {
flightOrderDetail.setReceiptsNum(regetReceiptsNum(receiptsNum));

View File

@ -13,6 +13,8 @@ import com.chint.interfaces.rest.ctrip.dto.search.flight.*;
import com.chint.interfaces.rest.ctrip.dto.search.hotel.ClientInfo;
import com.chint.interfaces.rest.ctrip.dto.search.hotel.HotelOrderInfoEntity;
import com.chint.interfaces.rest.ctrip.dto.search.hotel.PaymentReceived;
import com.chint.interfaces.rest.ctrip.tools.CTripUtils;
import com.chint.interfaces.rest.ly.tools.LYOrderUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -185,7 +187,13 @@ public class CTripOrderExtensionFactoryImpl implements OrderExtensionFactory {
@Override
public TrainOrderDetail createTrainOrderDetail(Object trainOrderDetailData) {
// 携程暂无火车
return null;
}
@Override
public TrainOrderDetail updateTrainOrderDetailData(TrainOrderDetail flightOrderDetail, Object trainOrderInfo) {
// 携程暂无火车
return null;
}
@ -203,14 +211,19 @@ public class CTripOrderExtensionFactoryImpl implements OrderExtensionFactory {
.filter(orderDetail -> orderDetail.getOrderNo().equals(orderNo))
.findFirst();
FlightOrderDetail flightOrderDetail = orderDetailFactory.buildWithRouteOrderAndOrderDetail(routeOrder, first);
FlightOrderDetail flightOrderDetail = orderDetailFactory.buildFlightWithRouteOrderAndOrderDetail(routeOrder, first);
//处理订单的状态信息
first.ifPresent(orderDetail -> {
OrderEvent lastEvent = orderDetail.getLastEvent();
flightOrderDetail.setOrderStatus(FSSC_FLIGHT_STATUS_SUCCESS);
if (lastEvent != null && lastEvent.getEventType().equals(ORDER_EVENT_CANCEL)) {
flightOrderDetail.setOrderStatus(FSSC_ORDER_STATUS_CANCEL);
} else {
flightOrderDetail.setOrderStatus(FSSC_FLIGHT_STATUS_SUCCESS);
}
//携程创建的飞机订单只有取消和预定成功两个状态
if(!flightOrderDetail.getOrderStatus().equals(FSSC_ORDER_STATUS_CANCEL)){
flightOrderDetail.setOrderStatus(FSSC_FLIGHT_STATUS_SUCCESS);
}
});
@ -372,7 +385,7 @@ public class CTripOrderExtensionFactoryImpl implements OrderExtensionFactory {
if (byOrderNo.get().getHotelOrderDetail() == null) {
hotelOrderDetail = new HotelOrderDetail();
} else {
return byOrderNo.get().getHotelOrderDetail();
hotelOrderDetail = byOrderNo.get().getHotelOrderDetail();
}
} else {
hotelOrderDetail = new HotelOrderDetail();

View File

@ -1,6 +1,5 @@
package com.chint.domain.factoriy.order_detail;
import cn.hutool.core.bean.BeanUtil;
import com.chint.application.queryies.estimate.EstimatePrice;
import com.chint.domain.aggregates.order.*;
import com.chint.domain.aggregates.user.User;
@ -8,7 +7,6 @@ import com.chint.domain.exceptions.NotFoundException;
import com.chint.domain.repository.OrderDetailRepository;
import com.chint.domain.repository.RouteRepository;
import com.chint.domain.repository.UserRepository;
import com.chint.interfaces.rest.ctrip.dto.search.flight.FlightOrderInfoEntity;
import com.chint.interfaces.rest.ly.dto.hotelorderdatapushbach.Resident;
import com.chint.interfaces.rest.ly.dto.search.response.car.CarDetailResponse;
import com.chint.interfaces.rest.ly.dto.search.response.filght.FlightOrderResponse;
@ -19,6 +17,8 @@ import com.chint.interfaces.rest.user.UserHttpRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@ -26,7 +26,10 @@ import java.util.stream.Collectors;
import static com.chint.infrastructure.constant.BelongSystemConstant.*;
import static com.chint.infrastructure.constant.CommonMessageConstant.NOT_FOUND;
import static com.chint.infrastructure.constant.FSSCConstant.*;
import static com.chint.infrastructure.constant.OrderConstant.ORDER_EVENT_CANCEL;
import static com.chint.infrastructure.constant.OrderConstant.ORDER_EVENT_ETA;
import static com.chint.infrastructure.constant.SupplierNameConstant.SUPPLIER_L_Y_CN_NAME;
import static com.chint.infrastructure.constant.UtilConstant.KEEP_TWO_DECIMAL_ZERO;
@Component
public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
@ -49,6 +52,8 @@ public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
@Autowired
private OrderDetailFactory orderDetailFactory;
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
@Override
public CarOrderDetail createCarOrderDetail(Object carOrderDetailData) {
CarDetailResponse.DataWrapper data = (CarDetailResponse.DataWrapper) carOrderDetailData;
@ -56,13 +61,6 @@ public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
return carOrderDetail;
}
@Override
public TrainOrderDetail createTrainOrderDetail(Object trainOrderDetailData) {
// 获取对象的Class对象
TrainDetailResponse.TrainDetailData trainDetailData = (TrainDetailResponse.TrainDetailData) trainOrderDetailData;
TrainOrderDetail convertTrain = convertTrainOrderDetail(trainDetailData);
return convertTrain;
}
@Override
public FlightOrderDetail createFlightOrderDetail(Object flightOrderDetailData) {
@ -80,15 +78,10 @@ public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
.filter(it -> it.getOrderNo().equals(orderDetails.getOrderSerialNo()))
.findFirst();
FlightOrderDetail flightOrderDetail = orderDetailFactory.buildWithRouteOrderAndOrderDetail(routeOrder, first);
FlightOrderDetail flightOrderDetail = orderDetailFactory.buildFlightWithRouteOrderAndOrderDetail(routeOrder, first);
//飞机票状态属性保存
OrderEvent lastEvent = orderDetail.getLastEvent();
if (orderDetails.getIsChangeOrder()) {
//如果发现同程的订单号里面还有C就能够判断出 它是改签订单
flightOrderDetail.setOrderStatus(FSSC_FLIGHT_STATUS_CHANGE);
}
if (lastEvent != null) {
flightOrderDetail.setOrderStatus(lastEvent.mapToFlightOrderDetailStatus());
} else {
@ -100,67 +93,15 @@ public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
)
);
}
//配置订单明细的父订单信息和订单号
flightOrderDetail.setParentOrderNo(orderDetails.getParentOrderSerialNo());
flightOrderDetail.setOriginalOrderNo(orderDetails.getOriginalOrderNo());
flightOrderDetail.setChangedScheduleNum(orderDetails.getOriginalOrderNo());
//获取订单明细的退票信息 如果有的话也补上
FlightOrderResponse.FlightOrderRefundInfo flightOrderRefundInfo = orderDetails.getFlightOrderRefundInfo();
if (flightOrderRefundInfo != null) {
flightOrderDetail.setRefundFee(String.valueOf(flightOrderRefundInfo.getRefundFee()));
flightOrderDetail.setRefundAmount(String.valueOf(flightOrderRefundInfo.getRefundPrice())); //无refundPrice
if (orderDetails.getIsChangeOrder()) {
//如果发现同程的订单号里面还有C就能够判断出 它是改签订单
flightOrderDetail.setOrderStatus(FSSC_FLIGHT_STATUS_CHANGE);
}
flightOrderDetail.setCreateTime(orderDetails.getBookDate());
flightOrderDetail.setOrderAmount(String.valueOf(orderDetails.getTotalPrice()));
flightOrderDetail.setPreServiceFee(String.valueOf(orderDetails.getServicePrice()));
flightOrderDetail.setPostServiceFee(String.valueOf(orderDetails.getAfterSettlementServicePrice()));
flightOrderDetail.setCompanyPaymentAmount(String.valueOf(orderDetails.getTotalPrice().toString()));
flightOrderDetail.setNotBookedLowestPriceReason(orderDetails.getFoulReason());
flightOrderDetail.setPaymentType("0");
List<FlightOrderResponse.FlightSegment> flightSegmentList = data.getFlightSegmentList();
if (flightSegmentList != null && !flightSegmentList.isEmpty()) {
FlightOrderResponse.FlightSegment flightSegment = flightSegmentList.get(0);
flightOrderDetail.setEndAirportName(flightSegment.getArriveAirport());
flightOrderDetail.setEndAirportCode(flightSegment.getArriveAirportCode());
flightOrderDetail.setEndTerminal(flightSegment.getArriveTerminal());
flightOrderDetail.setDistance(flightSegment.getMileAge().toString());
// flightOrderDetail.setFlightCompName(flightSegment.getShareAirlineName());
flightOrderDetail.setFlightCompName(flightSegment.getAirline());
flightOrderDetail.setFlightNum(flightSegment.getFlightNo());
flightOrderDetail.setSeatPoint(flightSegment.getSeatCode());
flightOrderDetail.setSeatPointName(flightSegment.getSeatName());
flightOrderDetail.setStartTime(flightSegment.getDepartTimeFull());
flightOrderDetail.setArriveTime(flightSegment.getArriveTimeFull());
flightOrderDetail.setStartCityName(flightSegment.getDepartCity());
flightOrderDetail.setStartAirportName(flightSegment.getDepartAirport());
flightOrderDetail.setStartAirportCode(flightSegment.getDepartAirportCode());
flightOrderDetail.setStartTerminal(flightSegment.getDepartTerminal());
flightOrderDetail.setEndCityName(flightSegment.getArriveCity());
flightOrderDetail.setFlightModel(flightSegment.getFlightNo());
flightOrderDetail.setStandard(flightSegment.getSeatName() + flightSegment.getSeatDiscount());
if (orderDetails.getIsRefundOrder()) {
//这里根据同程自带的字段进行状态映射
flightOrderDetail.setOrderStatus(FSSC_FLIGHT_STATUS_REFUND);
}
List<FlightOrderResponse.Passenger> passengerList = data.getPassengerList();
if (passengerList != null && !passengerList.isEmpty()) {
FlightOrderResponse.Passenger passenger = data.getPassengerList().get(0);
flightOrderDetail.setFuelTax(passenger.getFuelTax().toString());
flightOrderDetail.setAirportTax(passenger.getAirportTax().toString());
flightOrderDetail.setFacePrice(passenger.getParPrice().toString());
flightOrderDetail.setChangeFee(passenger.getChangeFee().toString());
flightOrderDetail.setUpFee(passenger.getChangePrice().toString());
flightOrderDetail.setTicketNo(passenger.getTicketNo());
flightOrderDetail.setChangedTicketNo(passenger.getTicketNo()); //无改签后票号
flightOrderDetail.setUserName(passenger.getPassengerName());
flightOrderDetail.setUserCode(passenger.getOutEmployeeId());
flightOrderDetail.setPhone(passenger.getContractPhone());
flightOrderDetail.setInsuranceFee(passenger.getInsurancePrice().toString());
}
return flightOrderDetail;
return updateFlightOrderDetailData(flightOrderDetail, flightOrderDetailData);
}
@Override
@ -194,9 +135,7 @@ public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
flightOrderDetail.setEndAirportCode(flightSegment.getArriveAirportCode());
flightOrderDetail.setEndTerminal(flightSegment.getArriveTerminal());
flightOrderDetail.setDistance(flightSegment.getMileAge().toString());
// flightOrderDetail.setFlightCompName(flightSegment.getShareAirlineName());
flightOrderDetail.setFlightCompName(flightSegment.getAirline());
flightOrderDetail.setFlightNum(flightSegment.getFlightNo());
flightOrderDetail.setSeatPoint(flightSegment.getSeatCode());
flightOrderDetail.setSeatPointName(flightSegment.getSeatName());
@ -431,7 +370,9 @@ public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
// HotelPriceData hotelPriceData = estimatePrice.queryHotelPrice(priceQueryData);
String sysCode = routeOrder.getApproveOrderNo().getSysCode();
HotelOrderDetail hotelOrderDetail = new HotelOrderDetail();
hotelOrderDetail.setTrvaleSysType(TRAVAL_SYS_TYPE_LY);
if (sysCode != null) {
if (sysCode.equals(BELONG_SYS_CODE_FSSC)) {
@ -557,6 +498,119 @@ public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
return hotelOrderDetail;
}
@Override
public TrainOrderDetail createTrainOrderDetail(Object trainOrderDetailData) {
// 获取对象的Class对象
TrainDetailResponse.TrainDetailData trainDetailData = (TrainDetailResponse.TrainDetailData) trainOrderDetailData;
String orderNo = trainDetailData.getOrderNo();
OrderDetail byOrderNo = orderDetailRepository.findByOrderNo(orderNo)
.orElseThrow(() -> new NotFoundException(NOT_FOUND));
RouteOrder routeOrder = routeRepository.queryById(byOrderNo.getRouteId());
Optional<OrderDetail> first = routeOrder
.getOrderDetails()
.stream()
.filter(it -> it.getOrderNo().equals(trainDetailData.getOrderNo()))
.findFirst();
TrainOrderDetail trainOrderDetail = orderDetailFactory.buildTrainWithRouteOrderAndOrderDetail(routeOrder, first);
//供应商为同程
trainOrderDetail.setSupplier(SUPPLIER_L_Y_CN_NAME);
//这里的内容是对火车状态的设置
first.ifPresent(it -> {
//因为同程的火车改签订单是单独的一条订单这里可以根据这个状态来判断它是否是改签订单
if (trainDetailData.getIsChangedOrder().equals(1)) {
trainOrderDetail.setOrderStatus(FSSC_TRAIN_STATUS_CHANGE);
} else {
trainOrderDetail.setOrderStatus(FSSC_TRAIN_STATUS_SUCCESS);
}
String orderStatus = trainDetailData.getOrderStatus();
if (LYOrderUtil.mapTrainStatus(orderStatus).equals(ORDER_EVENT_CANCEL)) {
trainOrderDetail.setOrderStatus(FSSC_ORDER_STATUS_CANCEL);
}
}
);
return updateTrainOrderDetailData(trainOrderDetail, trainDetailData);
}
@Override
public TrainOrderDetail updateTrainOrderDetailData(TrainOrderDetail trainOrderDetail, Object trainOrderInfo) {
TrainDetailResponse.TrainDetailData trainDetailData = (TrainDetailResponse.TrainDetailData) trainOrderInfo;
TrainDetailResponse.TravelData travelData = trainDetailData.getTravelData();
String travelApplyNo = travelData.getTravelApplyNo();
//这里对火车的进行信息进行录入
trainOrderDetail.setReceiptsNum(travelApplyNo);
trainOrderDetail.setCreateTime(formatter.format(LocalDateTime.now()));
trainOrderDetail.setStartTime(trainDetailData.getPlanBeginDate());
trainOrderDetail.setArriveTime(trainDetailData.getPlanEndDate());
trainOrderDetail.setFromStationName(trainDetailData.getFromStation());
trainOrderDetail.setToStationName(trainDetailData.getToStation());
trainOrderDetail.setTrainNo(trainDetailData.getTrainNo());
trainOrderDetail.setFromCity(trainDetailData.getDepartCity());
trainOrderDetail.setToCity(trainDetailData.getArriveCity());
//这里要判断如果火车票不是退票状态在设置
if (!trainOrderDetail.getOrderStatus().equals(FSSC_TRAIN_STATUS_REFUND)) {
trainOrderDetail.setOrderAmount(String.valueOf(trainDetailData.getTotalAmount()));
}
trainOrderDetail.setPersonalAmount(trainDetailData.getPersonalPrice().toString());
trainOrderDetail.setUserCode(trainDetailData.getEmployeeCode());
//配置付款类型
if (String.valueOf(trainDetailData.getPaymentType()).equals("1")) {
trainOrderDetail.setPaymentType("0");
trainOrderDetail.setCompanyAmount(trainDetailData.getCompanyPrice().toString());
trainOrderDetail.setPersonalAmount(KEEP_TWO_DECIMAL_ZERO);
} else {
trainOrderDetail.setPaymentType("1");
trainOrderDetail.setCompanyAmount(KEEP_TWO_DECIMAL_ZERO);
trainOrderDetail.setPersonalAmount(trainDetailData.getPersonalPrice().toString());
}
List<TrainDetailResponse.Item> detailDataItems = trainDetailData.getItems();
if (detailDataItems != null && !detailDataItems.isEmpty()) {
TrainDetailResponse.Item item = detailDataItems.get(0);
trainOrderDetail.setSeatName(item.getSeatNo());
trainOrderDetail.setTicketPrice(String.valueOf(item.getTicketPrice()));
trainOrderDetail.setRefundCost(String.valueOf(item.getRefundFee()));
trainOrderDetail.setRefundPrice(String.valueOf(item.getRefundAmountCor()));
trainOrderDetail.setChangeCost(String.valueOf(item.getServiceCharge()));
//座位信息和乘坐人信息
trainOrderDetail.setPhone(item.getPassengerPhone());
trainOrderDetail.setUserName(item.getPassengerName());
trainOrderDetail.setSeatType(translateEnSeatToCnSeat(item.getSeatClass()));
//前后手续费
trainOrderDetail.setPreServiceFee(String.valueOf(item.getServiceCharge()));
trainOrderDetail.setPostServiceFee(String.valueOf(item.getAfterServiceCharge()));
trainOrderDetail.setRefundAmount(String.valueOf(item.getRefundAmountCor()));
TrainDetailResponse.ChangeInfo changeInfo = item.getChangeInfo();
if (changeInfo != null) {
TrainDetailResponse.ChangeItem changeItem = changeInfo.getChangeItem();
if (changeItem != null) {
trainOrderDetail.setChangeDifference(String.valueOf(changeItem.getChangePrice()));
//如果 是退票的加入退票费
if (trainOrderDetail.getOrderStatus().equals(FSSC_TRAIN_STATUS_REFUND)) {
trainOrderDetail.setRefundCost(String.valueOf(changeItem.getRefundFee()));
} else if (trainOrderDetail.getOrderStatus().equals(FSSC_TRAIN_STATUS_CHANGE)) {
//如果是改签的状态 就加入改签费
trainOrderDetail.setRefundCost(String.valueOf(changeItem.getChangeFee()));
}
}
}
}
return trainOrderDetail;
}
private TrainOrderDetail convertTrainOrderDetail(TrainDetailResponse.TrainDetailData trainDetailData) {
// TrainDetailResponse.TrainDetailData trainDetailData = trainDetailResponse.getData();
@ -611,7 +665,6 @@ public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
if (trainDetailData != null) {
trainOrderDetail.setOrderNo(trainDetailData.getOrderNo());
trainOrderDetail.setDetailId(trainDetailData.getOrderNo());
trainOrderDetail.setParentOrderNo(trainDetailData.getParentOrderSerialNo());
Optional<OrderDetail> first1 = routeOrder
@ -749,6 +802,18 @@ public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
return trainOrderDetail;
}
private String translateEnSeatToCnSeat(String seatEnName) {
return switch (seatEnName) {
case "secondseat" -> "二等座";
case "businessseat" -> "商务座";
case "hardseat" -> "二等座";
case "softsleeperup" -> "软卧";
case "hardsleeperup" -> "硬卧";
case "firstseat" -> "一等座";
default -> "未知类型座位";
};
}
private CarOrderDetail convertCarOrderDetail(CarDetailResponse.DataWrapper data) {
CarDetailResponse.CarOrderDetailInfo carOrderDetailInfo = data.getCarOrderDetailInfo();

View File

@ -1,9 +1,6 @@
package com.chint.domain.factoriy.order_detail;
import com.chint.domain.aggregates.order.FlightOrderDetail;
import com.chint.domain.aggregates.order.OrderDetail;
import com.chint.domain.aggregates.order.OrderEvent;
import com.chint.domain.aggregates.order.RouteOrder;
import com.chint.domain.aggregates.order.*;
import com.chint.domain.value_object.OrderLegData;
import java.util.Optional;
@ -15,5 +12,7 @@ public interface OrderDetailFactory {
BaseOrderExtension buildWithRouteOrder(RouteOrder routeOrder);
FlightOrderDetail buildWithRouteOrderAndOrderDetail(RouteOrder routeOrder, Optional<OrderDetail> orderDetail);
FlightOrderDetail buildFlightWithRouteOrderAndOrderDetail(RouteOrder routeOrder, Optional<OrderDetail> orderDetail);
TrainOrderDetail buildTrainWithRouteOrderAndOrderDetail(RouteOrder routeOrder, Optional<OrderDetail> orderDetail);
}

View File

@ -99,7 +99,7 @@ public class OrderDetailFactoryImpl implements OrderDetailFactory {
}
@Override
public FlightOrderDetail buildWithRouteOrderAndOrderDetail(RouteOrder routeOrder, Optional<OrderDetail> first) {
public FlightOrderDetail buildFlightWithRouteOrderAndOrderDetail(RouteOrder routeOrder, Optional<OrderDetail> first) {
//获取飞机订单明细
FlightOrderDetail flightOrderDetail;
if (first.isPresent()) {
@ -125,4 +125,37 @@ public class OrderDetailFactoryImpl implements OrderDetailFactory {
}
return flightOrderDetail;
}
@Override
public TrainOrderDetail buildTrainWithRouteOrderAndOrderDetail(RouteOrder routeOrder, Optional<OrderDetail> orderDetail) {
//获取飞机订单明细
TrainOrderDetail trainOrderDetail;
if (orderDetail.isPresent()) {
OrderDetail order = orderDetail.get();
if (order.getFlightOrderDetail() == null) {
trainOrderDetail = BeanUtil.copyProperties(buildWithRouteOrder(routeOrder), TrainOrderDetail.class);
} else {
return order.getTrainOrderDetail();
}
//如果订单存在直接配置该订单的超标信息和原因
order.getOrderEventList()
.stream()
.filter(it -> it.getEventType().equals(ORDER_EVENT_ETA))
.findFirst()
.ifPresentOrElse(it -> {
trainOrderDetail.setOverStandard("");
trainOrderDetail.setOverStandardReason(it.getExtension());
}, () -> trainOrderDetail.setOverStandard(""));
trainOrderDetail.setOrderNo(order.getOrderNo());
trainOrderDetail.setDetailId(order.getOrderNo());
User user = userRepository.findByUserEmployeeNo(routeOrder.getUserId());
trainOrderDetail.setBookingUserCode(user.getEmployeeNo());
trainOrderDetail.setBookingName(user.getName());
trainOrderDetail.setBookingUserPhone(user.getPhoneNumber());
}else {
trainOrderDetail = BeanUtil.copyProperties(buildWithRouteOrder(routeOrder), TrainOrderDetail.class);
}
return trainOrderDetail;
}
}

View File

@ -1,7 +1,6 @@
package com.chint.domain.factoriy.order_detail;
import com.chint.domain.aggregates.order.*;
import com.chint.interfaces.rest.ctrip.dto.search.flight.FlightOrderInfoEntity;
public interface OrderExtensionFactory {
@ -9,6 +8,8 @@ public interface OrderExtensionFactory {
TrainOrderDetail createTrainOrderDetail(Object trainOrderDetailData);
TrainOrderDetail updateTrainOrderDetailData(TrainOrderDetail flightOrderDetail, Object trainOrderInfo);
FlightOrderDetail createFlightOrderDetail(Object flightOrderDetailData);
FlightOrderDetail updateFlightOrderDetailData(FlightOrderDetail flightOrderDetail, Object flightOrderInfo);

View File

@ -561,7 +561,7 @@ public class OrderDomainService {
"-" + item.getRefundAmount(),
"3",
data.getRefundTime()
).sendToQueue();
).data(trainOrderDetail.getData()).sendToQueue();
}
}