修复火车订单明细生成逻辑
This commit is contained in:
parent
f1ee79dadf
commit
292d99125e
|
@ -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();
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -561,7 +561,7 @@ public class OrderDomainService {
|
|||
"-" + item.getRefundAmount(),
|
||||
"3",
|
||||
data.getRefundTime()
|
||||
).sendToQueue();
|
||||
).data(trainOrderDetail.getData()).sendToQueue();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue