完成部分订单明细字段
This commit is contained in:
parent
5b8a9a3ac2
commit
c6e1cff665
|
@ -3,8 +3,11 @@ package com.chint.domain.aggregates.order;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
|
import org.springframework.data.relational.core.mapping.MappedCollection;
|
||||||
import org.springframework.data.relational.core.mapping.Table;
|
import org.springframework.data.relational.core.mapping.Table;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Table("hotel_order_detail")
|
@Table("hotel_order_detail")
|
||||||
public class HotelOrderDetail {
|
public class HotelOrderDetail {
|
||||||
|
@ -105,7 +108,8 @@ public class HotelOrderDetail {
|
||||||
private String refundAmount;
|
private String refundAmount;
|
||||||
|
|
||||||
// 入住人信息
|
// 入住人信息
|
||||||
private String customers;
|
@MappedCollection(idColumn = "hotel_order_detail_id", keyColumn = "hotel_order_detail_key")
|
||||||
|
private List<HotelOrderDetailCustomer> customers;
|
||||||
|
|
||||||
// 入住人性别
|
// 入住人性别
|
||||||
private String gender;
|
private String gender;
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.chint.domain.aggregates.order;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.data.relational.core.mapping.Table;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Table("hotel_order_detail")
|
||||||
|
public class HotelOrderDetailCustomer {
|
||||||
|
private Long id;
|
||||||
|
private String userName;
|
||||||
|
private String userCode;
|
||||||
|
private String phone;
|
||||||
|
}
|
|
@ -40,6 +40,21 @@ public class OrderEvent {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String mapToFlightOrderDetailStatus(){
|
||||||
|
return switch (this.eventType) {
|
||||||
|
case OrderConstant.ORDER_EVENT_PREPARE -> "0";
|
||||||
|
case OrderConstant.ORDER_EVENT_PAYED -> "1";
|
||||||
|
case OrderConstant.ORDER_EVENT_CHANGE -> "2";
|
||||||
|
case OrderConstant.ORDER_EVENT_CANCEL -> "3";
|
||||||
|
case OrderConstant.ORDER_EVENT_ORDERED -> "0";
|
||||||
|
case OrderConstant.ORDER_EVENT_REFUND -> "3";
|
||||||
|
case OrderConstant.ORDER_EVENT_UNKNOWN -> "0";
|
||||||
|
case OrderConstant.ORDER_EVENT_FINISH -> "1";
|
||||||
|
case OrderConstant.ORDER_EVENT_ETA -> "0";
|
||||||
|
default -> "未知事件";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public OrderEvent reloadStatus() {
|
public OrderEvent reloadStatus() {
|
||||||
this.setEventName(translateOrderEvent(this.eventType));
|
this.setEventName(translateOrderEvent(this.eventType));
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -6,13 +6,17 @@ import com.chint.domain.repository.LocationRepository;
|
||||||
import com.chint.domain.repository.OrderDetailRepository;
|
import com.chint.domain.repository.OrderDetailRepository;
|
||||||
import com.chint.domain.repository.RouteRepository;
|
import com.chint.domain.repository.RouteRepository;
|
||||||
import com.chint.domain.repository.UserRepository;
|
import com.chint.domain.repository.UserRepository;
|
||||||
|
import com.chint.interfaces.rest.ctrip.dto.search.flight.FlightOrderInfoEntity;
|
||||||
import com.chint.interfaces.rest.ctrip.dto.search.hotel.HotelOrderInfoEntity;
|
import com.chint.interfaces.rest.ctrip.dto.search.hotel.HotelOrderInfoEntity;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import static com.chint.infrastructure.constant.OrderConstant.ORDER_DETAIL_STATUS_SUCCESS;
|
import static com.chint.infrastructure.constant.OrderConstant.ORDER_DETAIL_STATUS_SUCCESS;
|
||||||
|
import static com.chint.infrastructure.constant.UtilConstant.KEEP_TWO_DECIMAL_ZERO;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class CTripOrderExtensionFactoryImpl implements OrderExtensionFactory {
|
public class CTripOrderExtensionFactoryImpl implements OrderExtensionFactory {
|
||||||
|
@ -45,6 +49,41 @@ public class CTripOrderExtensionFactoryImpl implements OrderExtensionFactory {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FlightOrderDetail createFlightOrderDetail(Object flightOrderDetailData) {
|
public FlightOrderDetail createFlightOrderDetail(Object flightOrderDetailData) {
|
||||||
|
|
||||||
|
FlightOrderInfoEntity flightOrderInfoEntity = (FlightOrderInfoEntity) flightOrderDetailData;
|
||||||
|
String orderNo = flightOrderInfoEntity.getBasicInfo().getOrderID();
|
||||||
|
String journeyNo = flightOrderInfoEntity.getBasicInfo().getJourneyID();
|
||||||
|
RouteOrder routeOrder = routeRepository.findByOrderNo(journeyNo);
|
||||||
|
|
||||||
|
Optional<OrderDetail> first = routeOrder
|
||||||
|
.getOrderDetails()
|
||||||
|
.stream()
|
||||||
|
.filter(orderDetail -> orderDetail.getOrderNo().equals(orderNo))
|
||||||
|
.findFirst();
|
||||||
|
|
||||||
|
FlightOrderDetail flightOrderDetail = new FlightOrderDetail();
|
||||||
|
flightOrderDetail.setOrderNo(orderNo);
|
||||||
|
|
||||||
|
first.ifPresent(orderDetail ->
|
||||||
|
flightOrderDetail.setOrderStatus(orderDetail.getLastEvent().mapToFlightOrderDetailStatus())
|
||||||
|
);
|
||||||
|
|
||||||
|
ApproveOrderNo approveOrderNo = routeOrder.getApproveOrderNo();
|
||||||
|
flightOrderDetail.setAccountCompanyId(approveOrderNo.getAccountCompany());
|
||||||
|
flightOrderDetail.setAccountCompanyName(approveOrderNo.getAccountCompanyName());
|
||||||
|
flightOrderDetail.setReceiptsNum(journeyNo);
|
||||||
|
first.flatMap(orderDetail -> routeOrder.getLegItems()
|
||||||
|
.stream()
|
||||||
|
.filter(it -> first.get().getLegId().equals(it.getLegId()))
|
||||||
|
.findFirst()).ifPresent(it ->
|
||||||
|
flightOrderDetail.setScheduleNum(it.getLegNo()));
|
||||||
|
Long EmployeeNo = routeOrder.getUserId();
|
||||||
|
User user = userRepository.findByUserEmployeeNo(EmployeeNo);
|
||||||
|
flightOrderDetail.setBookingUserCode(String.valueOf(user.getEmployeeNo()));
|
||||||
|
flightOrderDetail.setBookingName(user.getName());
|
||||||
|
flightOrderDetail.setBookingUserPhone(user.getPhoneNumber());
|
||||||
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,9 +124,50 @@ public class CTripOrderExtensionFactoryImpl implements OrderExtensionFactory {
|
||||||
hotelOrderDetail.setHotelAddress(locationRepository.locationPathByName(cityName)
|
hotelOrderDetail.setHotelAddress(locationRepository.locationPathByName(cityName)
|
||||||
+ hotelOrderInfoEntity.getDistrictName() + hotelOrderInfoEntity.getAddress());
|
+ hotelOrderInfoEntity.getDistrictName() + hotelOrderInfoEntity.getAddress());
|
||||||
hotelOrderDetail.setStarRate(hotelOrderInfoEntity.getStar());
|
hotelOrderDetail.setStarRate(hotelOrderInfoEntity.getStar());
|
||||||
hotelOrderDetail.setCheckInDate(hotelOrderInfoEntity.getStartTime());
|
hotelOrderDetail.setCheckInDate(hotelOrderInfoEntity.getStartTime()); //入住日期
|
||||||
hotelOrderDetail.setDepartureDate(hotelOrderInfoEntity.getEndTime());
|
hotelOrderDetail.setDepartureDate(hotelOrderInfoEntity.getEndTime()); //离店日期 "2022-09-10"
|
||||||
// hotelOrderDetail.setNightCount(hotelOrderInfoEntity.);
|
hotelOrderDetail.setNightCount(hotelOrderInfoEntity.getQuantity()); //退订夜间数
|
||||||
|
hotelOrderDetail.setRoomCount(hotelOrderInfoEntity.getQuantity()); //退订夜间数
|
||||||
|
hotelOrderDetail.setRoomTypeName(hotelOrderInfoEntity.getRoomName()); //房型
|
||||||
|
hotelOrderDetail.setPaymentType("1"); //付款方式 0:公司统付1:个人付 2:混付
|
||||||
|
|
||||||
|
if (Double.parseDouble(hotelOrderInfoEntity.getSettlementACCNTAmt()) > 0) {
|
||||||
|
hotelOrderDetail.setCompanyAmount(hotelOrderInfoEntity.getSettlementACCNTAmt());
|
||||||
|
hotelOrderDetail.setCompanyRefundAmount(KEEP_TWO_DECIMAL_ZERO);
|
||||||
|
} else {
|
||||||
|
//如果公司统付为负数, 那么表示退款
|
||||||
|
hotelOrderDetail.setCompanyAmount(KEEP_TWO_DECIMAL_ZERO);
|
||||||
|
hotelOrderDetail.setCompanyRefundAmount(hotelOrderInfoEntity.getSettlementACCNTAmt());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Double.parseDouble(hotelOrderInfoEntity.getSettlementPersonAmt()) > 0) {
|
||||||
|
hotelOrderDetail.setPersonalAmount(hotelOrderInfoEntity.getSettlementPersonAmt());
|
||||||
|
hotelOrderDetail.setPersonalRefundAmount(KEEP_TWO_DECIMAL_ZERO);
|
||||||
|
} else {
|
||||||
|
hotelOrderDetail.setPersonalAmount(KEEP_TWO_DECIMAL_ZERO);
|
||||||
|
hotelOrderDetail.setPersonalRefundAmount(hotelOrderInfoEntity.getSettlementPersonAmt());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Double.parseDouble(hotelOrderInfoEntity.getAmount()) > 0) {
|
||||||
|
hotelOrderDetail.setOrderAmount(hotelOrderInfoEntity.getAmount());
|
||||||
|
hotelOrderDetail.setRefundAmount(KEEP_TWO_DECIMAL_ZERO);
|
||||||
|
} else {
|
||||||
|
hotelOrderDetail.setOrderAmount(KEEP_TWO_DECIMAL_ZERO);
|
||||||
|
hotelOrderDetail.setRefundAmount(hotelOrderInfoEntity.getAmount());
|
||||||
|
}
|
||||||
|
|
||||||
|
hotelOrderDetail.setPreServiceFee(hotelOrderInfoEntity.getFrontendServiceFee());
|
||||||
|
hotelOrderDetail.setPostServiceFee(hotelOrderInfoEntity.getServicefee());
|
||||||
|
|
||||||
|
List<HotelOrderDetailCustomer> customers = new ArrayList<>();
|
||||||
|
HotelOrderDetailCustomer hotelOrderDetailCustomer = new HotelOrderDetailCustomer();
|
||||||
|
hotelOrderDetailCustomer.setUserCode(user.getEmployeeNo().toString());
|
||||||
|
hotelOrderDetailCustomer.setUserName(user.getName());
|
||||||
|
hotelOrderDetailCustomer.setPhone(user.getPhoneNumber());
|
||||||
|
customers.add(hotelOrderDetailCustomer);
|
||||||
|
hotelOrderDetail.setCustomers(customers);
|
||||||
|
|
||||||
|
hotelOrderDetail.setSupplier(routeOrder.getSupplierCNName() + "预定");
|
||||||
return hotelOrderDetail;
|
return hotelOrderDetail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,8 @@ public class HotelOrderInfoEntity {
|
||||||
private String HotelConfirmNo; // 酒店确认号
|
private String HotelConfirmNo; // 酒店确认号
|
||||||
private String JourneyNo; // 旅程编号
|
private String JourneyNo; // 旅程编号
|
||||||
private String CostCenter; // 成本中心
|
private String CostCenter; // 成本中心
|
||||||
|
private String Quantity; //夜间数量
|
||||||
|
private String Servicefee;
|
||||||
// 后续字段含义类似,可根据实际情况添加注释
|
// 后续字段含义类似,可根据实际情况添加注释
|
||||||
private List<ClientInfo> ClientInfo; // 客户信息列表
|
private List<ClientInfo> ClientInfo; // 客户信息列表
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue