fix:修复酒店明细间夜问题
This commit is contained in:
parent
c630d51c66
commit
ac5a8ed996
|
@ -1,13 +1,10 @@
|
|||
package com.chint.domain.factoriy.order_detail;
|
||||
|
||||
import com.chint.application.queryies.estimate.EstimatePrice;
|
||||
import com.chint.domain.aggregates.order.*;
|
||||
import com.chint.domain.exceptions.NotFoundException;
|
||||
import com.chint.domain.repository.OrderDetailRepository;
|
||||
import com.chint.domain.repository.RouteRepository;
|
||||
import com.chint.domain.repository.RouteRequestRepository;
|
||||
import com.chint.domain.repository.UserRepository;
|
||||
import com.chint.interfaces.rest.data_center.user.UserHttpRequest;
|
||||
import com.chint.infrastructure.util.DateTimeUtil;
|
||||
import com.chint.interfaces.rest.ly.dto.carorderdatapushback.PriceDetail;
|
||||
import com.chint.interfaces.rest.ly.dto.hotelorderdatapushbach.Resident;
|
||||
import com.chint.interfaces.rest.ly.dto.search.response.car.CarDetailResponse;
|
||||
|
@ -18,6 +15,7 @@ import com.chint.interfaces.rest.ly.tools.LYOrderUtil;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
@ -342,7 +340,17 @@ public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
|
|||
HotelDetailResponse.HotelInfo hotelInfo = data.getHotelInfo();
|
||||
List<HotelDetailResponse.RefundInfo> refundInfoList = data.getRefundInfoList();
|
||||
|
||||
|
||||
if (hotelInfo != null && orderInfo != null) {
|
||||
|
||||
String originalCheckInDate = orderInfo.getOriginalCheckInDate();
|
||||
String originalCheckOutDate = orderInfo.getOriginalCheckOutDate();
|
||||
Long days = null;
|
||||
if (originalCheckInDate != null && originalCheckOutDate != null) {
|
||||
Duration duration = Duration.between(DateTimeUtil.strToTime(originalCheckInDate), DateTimeUtil.strToTime(originalCheckOutDate));
|
||||
days = duration.toDays();
|
||||
}
|
||||
|
||||
hotelOrderDetail.setOrderNo(orderInfo.getOrderSerialNo())
|
||||
.setDetailId(orderInfo.getOrderSerialNo())
|
||||
.setSupplier(SUPPLIER_L_Y_EXTENSION_NAME)
|
||||
|
@ -353,7 +361,7 @@ public class LYOrderExtensionFactoryImpl implements OrderExtensionFactory {
|
|||
.setHotelAddress(hotelInfo.getHotelAddress())
|
||||
.setCheckInDate(hotelInfo.getCheckInDate())
|
||||
.setDepartureDate(hotelInfo.getCheckOutDate())
|
||||
.setNightCount(String.valueOf(hotelInfo.getNightNum()))
|
||||
.setNightCount(days == null ? String.valueOf(hotelInfo.getNightNum()) : days.toString())
|
||||
.setRoomCount(String.valueOf(hotelInfo.getRoomNum()))
|
||||
.setRoomTypeName(hotelInfo.getRoomName())
|
||||
.setPreServiceFee(String.valueOf(orderInfo.getServicePrice()))
|
||||
|
|
|
@ -31,6 +31,7 @@ import com.chint.interfaces.rest.ctrip.dto.search.car.CarBasicInfo;
|
|||
import com.chint.interfaces.rest.ctrip.dto.search.car.CarQuickOrderInfoEntity;
|
||||
import com.chint.interfaces.rest.ctrip.dto.search.car.OrderFee;
|
||||
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.RefundInfo;
|
||||
import com.chint.interfaces.rest.ly.dto.search.response.car.CarDetailResponse;
|
||||
|
@ -40,6 +41,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
|
@ -437,7 +439,8 @@ public class SupplierServiceImpl implements SupplierService {
|
|||
hotelOrderInfoEntity.getOrderID(),
|
||||
"-" + hotelRefundInfo.getRefundCustomerAmount(),
|
||||
"4",
|
||||
DateTimeUtil.timeToStrCommon(LocalDateTime.now()));
|
||||
DateTimeUtil.timeToStrCommon(LocalDateTime.now()))
|
||||
.data(outOrderDetailData);
|
||||
commands.add(command);
|
||||
}
|
||||
}
|
||||
|
@ -601,7 +604,7 @@ public class SupplierServiceImpl implements SupplierService {
|
|||
String newOrderNo = generateNewOrderNo(command);
|
||||
OrderDetail copied = getOrCreateOrderDetail(newOrderNo, orderDetail, routeOrder);
|
||||
copied.setOrderNo(newOrderNo);
|
||||
addOrderEvent(orderDetail, command.getType(), LocalDateTime.now());
|
||||
addOrderEvent(copied, command.getType(), LocalDateTime.now());
|
||||
copied.setPrice(command.getAmount());
|
||||
copied.setCreateTime(LocalDateTime.now());
|
||||
processProductSpecificDetails(copied, command, newOrderNo);
|
||||
|
@ -704,9 +707,43 @@ public class SupplierServiceImpl implements SupplierService {
|
|||
customer.setId(null);
|
||||
newCustomers.add(customer);
|
||||
}
|
||||
LocalDateTime originCheckOutTime = null;
|
||||
LocalDateTime newCheckOutTime = null;
|
||||
hotelOrderDetail.setCustomers(newCustomers);
|
||||
if (orderDetail.getSupplierName().equals(SUPPLIER_L_Y)) {
|
||||
hotelOrderDetail = supplierAdapterSelector.of(SUPPLIER_L_Y, OrderExtensionFactory.class).updateHotelOrderDetailData(hotelOrderDetail, command.getOrderInfo());
|
||||
HotelDetailResponse.Data orderInfo = (HotelDetailResponse.Data) command.getOrderInfo();
|
||||
hotelOrderDetail = supplierAdapterSelector.of(SUPPLIER_L_Y, OrderExtensionFactory.class)
|
||||
.updateHotelOrderDetailData(hotelOrderDetail, orderInfo);
|
||||
List<HotelDetailResponse.Room> roomList = orderInfo.getRoomList();
|
||||
if (roomList != null && roomList.size() > 1) {
|
||||
HotelDetailResponse.Room originRoomProduct = roomList.get(0);
|
||||
HotelDetailResponse.Room newRoomProduct = roomList.get(1);
|
||||
originCheckOutTime = DateTimeUtil.strToTime(originRoomProduct.getCheckOutDate());
|
||||
newCheckOutTime = DateTimeUtil.strToTime(newRoomProduct.getCheckOutDate());
|
||||
}
|
||||
}
|
||||
if (orderDetail.getSupplierName().equals(SUPPLIER_C_TRIP)) {
|
||||
SearchOrderResponse orderInfo =(SearchOrderResponse) command.getOrderInfo();
|
||||
List<ItineraryEntity> itineraryList = orderInfo.getItineraryList();
|
||||
if(itineraryList!=null && !itineraryList.isEmpty()){
|
||||
List<HotelOrderInfoEntity> hotelOrderInfoList = itineraryList.get(0).getHotelOrderInfoList();
|
||||
if(hotelOrderInfoList != null && !hotelOrderInfoList.isEmpty()){
|
||||
HotelOrderInfoEntity hotelOrderInfoEntity = hotelOrderInfoList.get(0);
|
||||
originCheckOutTime = DateTimeUtil.strToTime(hotelOrderInfoEntity.getEndTime());
|
||||
List<ClientInfo> clientInfoList = hotelOrderInfoEntity.getClientInfo();
|
||||
if(clientInfoList != null && !clientInfoList.isEmpty()){
|
||||
ClientInfo clientInfo = clientInfoList.get(0);
|
||||
if(clientInfo != null && clientInfo.getActualDepartureTime() != null){
|
||||
newCheckOutTime = DateTimeUtil.strToTime(clientInfo.getActualDepartureTime());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (originCheckOutTime != null && newCheckOutTime != null) {
|
||||
Duration duration = Duration.between(newCheckOutTime, originCheckOutTime);
|
||||
long days = duration.toDays();
|
||||
hotelOrderDetail.setNightCount("-" + days);
|
||||
}
|
||||
hotelOrderDetail.setDetailId(newOrderNo);
|
||||
orderDetail.setHotelOrderDetail(hotelOrderDetail);
|
||||
|
|
|
@ -92,27 +92,6 @@ public class LYETAController {
|
|||
supplierCallbackData.subNotifyType(String.valueOf(subNotifyType)).notifyType(L_Y_NOTIFY_ETA);
|
||||
OrderDetail orderDetail = supplierService.handleSupplierCallback(supplierCallbackData);
|
||||
orderTravelRepository.save(OrderTravel.of(orderDetail.getOrderNo(), approvalOrderId));
|
||||
// if (supplierCallbackData.getExtension() != null) {
|
||||
// //发送超标事件
|
||||
// Command.of(OrderStatusChangeCommand.class)
|
||||
// .orderDetail(orderDetail)
|
||||
// .outStatus("超标")
|
||||
// .extension(supplierCallbackData.getExtension())
|
||||
// .eventType(ORDER_EVENT_ETA)
|
||||
// .orderNo(orderDetail.getOrderNo())
|
||||
// .sendToQueue();
|
||||
// }
|
||||
//
|
||||
// if (subNotifyType == 2 || subNotifyType == 4 || subNotifyType == 6) {
|
||||
// //如果推送类是2,4,6还要触发改签事件
|
||||
// Command.of(OrderStatusChangeCommand.class)
|
||||
// .orderDetail(orderDetail)
|
||||
// .outStatus("改签")
|
||||
// .extension(supplierCallbackData.getExtension())
|
||||
// .eventType(ORDER_EVENT_CHANGE)
|
||||
// .orderNo(orderDetail.getOrderNo())
|
||||
// .sendToQueue();
|
||||
// }
|
||||
}
|
||||
} catch (Exception e) {
|
||||
//如果推送异常,将异常信息保存到数据库
|
||||
|
|
|
@ -829,7 +829,7 @@ public class LYTest {
|
|||
|
||||
@Test
|
||||
void searchHotel() {
|
||||
HotelDetailResponse hotelOrderDetail = lySearchRequest.getHotelOrderDetail("HO20240415140900363081");
|
||||
HotelDetailResponse hotelOrderDetail = lySearchRequest.getHotelOrderDetail("HO20240409171200880790");
|
||||
Gson gson = new Gson();
|
||||
String json = gson.toJson(hotelOrderDetail);
|
||||
System.out.println(json);
|
||||
|
|
|
@ -1242,7 +1242,8 @@ class RouteApplicationTests {
|
|||
|
||||
@Test
|
||||
void deleteByOrderId() {
|
||||
orderDetailRepository.deleteById(3138L);
|
||||
orderDetailRepository.deleteById(3181L);
|
||||
orderDetailRepository.deleteById(3180L);
|
||||
}
|
||||
|
||||
// @Test
|
||||
|
@ -1556,4 +1557,6 @@ class RouteApplicationTests {
|
|||
System.out.println(parts[5]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue