fix:分页排序将已结束的订单放到最后,修复未提交审批的订单查询问题
This commit is contained in:
parent
934ef23eaf
commit
ab4dfe60be
|
@ -152,7 +152,7 @@ public class OrderQuery {
|
||||||
.skip((long) (pageNum - 1) * pageSize)
|
.skip((long) (pageNum - 1) * pageSize)
|
||||||
.limit(pageSize)
|
.limit(pageSize)
|
||||||
.map(routeOrder -> {
|
.map(routeOrder -> {
|
||||||
orderDomainService.queryLocation(routeOrder.getLegItems());
|
legDomainService.queryLocation(routeOrder.getLegItems());
|
||||||
User user = userRepository.findByUserEmployeeNo(routeOrder.getUserId());
|
User user = userRepository.findByUserEmployeeNo(routeOrder.getUserId());
|
||||||
return getRouteOrderPageRes(routeOrder, user);
|
return getRouteOrderPageRes(routeOrder, user);
|
||||||
})
|
})
|
||||||
|
@ -318,7 +318,7 @@ public class OrderQuery {
|
||||||
public RouteOrder queryById(Long routeId) {
|
public RouteOrder queryById(Long routeId) {
|
||||||
RouteOrder routeOrder = routeRepository.queryById(routeId);
|
RouteOrder routeOrder = routeRepository.queryById(routeId);
|
||||||
if (routeOrder.getLegItems() != null && routeOrder.getLegItems().isEmpty()) {
|
if (routeOrder.getLegItems() != null && routeOrder.getLegItems().isEmpty()) {
|
||||||
orderDomainService.queryLocation(routeOrder.getLegItems());
|
legDomainService.queryLocation(routeOrder.getLegItems());
|
||||||
}
|
}
|
||||||
return routeOrder;
|
return routeOrder;
|
||||||
}
|
}
|
||||||
|
@ -356,7 +356,7 @@ public class OrderQuery {
|
||||||
userRepository.findByUserEmployeeNo(routeOrder.getUserId())
|
userRepository.findByUserEmployeeNo(routeOrder.getUserId())
|
||||||
);
|
);
|
||||||
List<Leg> legItems =
|
List<Leg> legItems =
|
||||||
orderDomainService.queryLocation(routeOrder.getLegItems());
|
legDomainService.queryLocation(routeOrder.getLegItems());
|
||||||
|
|
||||||
|
|
||||||
legItems.forEach(leg -> {
|
legItems.forEach(leg -> {
|
||||||
|
@ -523,7 +523,7 @@ public class OrderQuery {
|
||||||
if (legItems != null && !legItems.isEmpty()) {
|
if (legItems != null && !legItems.isEmpty()) {
|
||||||
//这里使用领域事件进行检查leg的订单状态 ,用户每次想要查看行程都会进行一次检查
|
//这里使用领域事件进行检查leg的订单状态 ,用户每次想要查看行程都会进行一次检查
|
||||||
legItems.forEach(leg -> legDomainService.legCheckOrder(leg));
|
legItems.forEach(leg -> legDomainService.legCheckOrder(leg));
|
||||||
orderDomainService.queryLocation(legItems);
|
legDomainService.queryLocation(legItems);
|
||||||
List<LegRes> list = legItems.stream().map(LegRes::copyFrom).toList();
|
List<LegRes> list = legItems.stream().map(LegRes::copyFrom).toList();
|
||||||
routeOrderRes.setLegResList(list);
|
routeOrderRes.setLegResList(list);
|
||||||
List<OrderDetailRes> orderDetailResList = routeOrder
|
List<OrderDetailRes> orderDetailResList = routeOrder
|
||||||
|
@ -548,7 +548,7 @@ public class OrderQuery {
|
||||||
List<RouteOrder> routeOrders = routeRepository.findAllByEmployeeNo(currentUser.getEmployeeNo());
|
List<RouteOrder> routeOrders = routeRepository.findAllByEmployeeNo(currentUser.getEmployeeNo());
|
||||||
routeOrders = routeOrders.stream().filter(it -> it.getUserId().equals(currentUser.getEmployeeNo())).toList();
|
routeOrders = routeOrders.stream().filter(it -> it.getUserId().equals(currentUser.getEmployeeNo())).toList();
|
||||||
routeOrders.forEach(route -> {
|
routeOrders.forEach(route -> {
|
||||||
orderDomainService.queryLocation(route.getLegItems());
|
legDomainService.queryLocation(route.getLegItems());
|
||||||
orderDomainService.checkRouteOrderStatus(route);
|
orderDomainService.checkRouteOrderStatus(route);
|
||||||
});
|
});
|
||||||
Stream<RouteOrder> stream = routeOrders.stream();
|
Stream<RouteOrder> stream = routeOrders.stream();
|
||||||
|
|
|
@ -93,7 +93,7 @@ public class OrderApplicationService {
|
||||||
checkLegDataTime(addLegData, order);
|
checkLegDataTime(addLegData, order);
|
||||||
LegData legData = addLegData.getLegData();
|
LegData legData = addLegData.getLegData();
|
||||||
List<Leg> legs = processLegData(legData, order);
|
List<Leg> legs = processLegData(legData, order);
|
||||||
orderDomainService.queryLocation(legs);
|
legDomainService.queryLocation(legs);
|
||||||
RouteOrder routeOrder = orderDomainService.saveOrder(order);
|
RouteOrder routeOrder = orderDomainService.saveOrder(order);
|
||||||
legs.forEach(leg -> {
|
legs.forEach(leg -> {
|
||||||
leg.reloadStatus();
|
leg.reloadStatus();
|
||||||
|
@ -166,7 +166,7 @@ public class OrderApplicationService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
orderDomainService.queryLocation(List.of(oldLeg, leg));
|
legDomainService.queryLocation(List.of(oldLeg, leg));
|
||||||
|
|
||||||
//保存变更事件理由
|
//保存变更事件理由
|
||||||
leg = legDomainService.addChangeEvent(leg, legData.getChangeReason());
|
leg = legDomainService.addChangeEvent(leg, legData.getChangeReason());
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.chint.domain.aggregates.order;
|
||||||
|
|
||||||
import com.chint.application.commands.LegOrderedCommand;
|
import com.chint.application.commands.LegOrderedCommand;
|
||||||
import com.chint.domain.factoriy.leg.LegFactory;
|
import com.chint.domain.factoriy.leg.LegFactory;
|
||||||
|
import com.chint.domain.service.LegDomainService;
|
||||||
import com.chint.domain.service.OrderDomainService;
|
import com.chint.domain.service.OrderDomainService;
|
||||||
import com.chint.domain.service.amount_estimate.EstimateAdapter;
|
import com.chint.domain.service.amount_estimate.EstimateAdapter;
|
||||||
import com.chint.domain.service.supplier.SupplierConstantUtil;
|
import com.chint.domain.service.supplier.SupplierConstantUtil;
|
||||||
|
@ -456,12 +457,12 @@ public class RouteOrder implements Serializable {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OrderDetail matchOrderWithLeg(OrderDetail orderDetail, OrderDomainService orderDomainService) {
|
public OrderDetail matchOrderWithLeg(OrderDetail orderDetail, LegDomainService legDomainService) {
|
||||||
if (this.legItems.isEmpty()) {
|
if (this.legItems.isEmpty()) {
|
||||||
return orderDetail;
|
return orderDetail;
|
||||||
}
|
}
|
||||||
|
|
||||||
orderDomainService.queryLocation(this.legItems);
|
legDomainService.queryLocation(this.legItems);
|
||||||
|
|
||||||
// 定义时间容差(例如1天)
|
// 定义时间容差(例如1天)
|
||||||
long tolerance = Duration.ofDays(2).toMillis();
|
long tolerance = Duration.ofDays(2).toMillis();
|
||||||
|
|
|
@ -8,8 +8,7 @@ import com.chint.domain.repository.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static com.chint.infrastructure.constant.CommonMessageConstant.LEG_CHANGE_MAX_ERROR;
|
import static com.chint.infrastructure.constant.CommonMessageConstant.LEG_CHANGE_MAX_ERROR;
|
||||||
import static com.chint.infrastructure.constant.LegConstant.*;
|
import static com.chint.infrastructure.constant.LegConstant.*;
|
||||||
|
@ -129,21 +128,24 @@ public class LegDomainService {
|
||||||
public List<Leg> queryLocation(List<Leg> list) {
|
public List<Leg> queryLocation(List<Leg> list) {
|
||||||
list.forEach(leg -> {
|
list.forEach(leg -> {
|
||||||
LegExtensionField legExtensionField = leg.getLegExtensionField();
|
LegExtensionField legExtensionField = leg.getLegExtensionField();
|
||||||
if (legExtensionField != null && legExtensionField.getLocationIds() != null) {
|
if (legExtensionField != null && legExtensionField.getLocationIds() != null ) {
|
||||||
List<Long> locationIdsAsLong;
|
List<Long> locationIdsAsLong;
|
||||||
if (legExtensionField.getLocationIds().startsWith("[")) {
|
if (legExtensionField.getLocationIds().startsWith("[")) {
|
||||||
locationIdsAsLong = legExtensionField.getLocationIdsAsLongFromArray();
|
locationIdsAsLong = legExtensionField.getLocationIdsAsLongFromArray();
|
||||||
} else {
|
} else {
|
||||||
locationIdsAsLong = legExtensionField.getLocationIdsAsLong();
|
locationIdsAsLong = legExtensionField.getLocationIdsAsLong();
|
||||||
}
|
}
|
||||||
|
List<Location> locationList = legExtensionField.getLocationList();
|
||||||
|
if (locationList == null || locationList.size() != locationIdsAsLong.size()) {
|
||||||
List<Location> byNameList = locationRepository.findByNameList(locationIdsAsLong);
|
List<Location> byNameList = locationRepository.findByNameList(locationIdsAsLong);
|
||||||
legExtensionField.setLocationList(byNameList);
|
legExtensionField.setLocationList(byNameList);
|
||||||
}
|
}
|
||||||
if (leg.getOriginId() != null) {
|
}
|
||||||
|
if (leg.getOriginId() != null && leg.getOriginLocation() == null) {
|
||||||
leg.setOriginLocation(locationRepository.findByLocationId(leg.getOriginId()));
|
leg.setOriginLocation(locationRepository.findByLocationId(leg.getOriginId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (leg.getDestinationId() != null) {
|
if (leg.getDestinationId() != null && leg.getDestinationLocation() == null) {
|
||||||
leg.setDestinationLocation(locationRepository.findByLocationId(leg.getDestinationId()));
|
leg.setDestinationLocation(locationRepository.findByLocationId(leg.getDestinationId()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -129,31 +129,6 @@ public class OrderDomainService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Leg> queryLocation(List<Leg> list) {
|
|
||||||
list.forEach(leg -> {
|
|
||||||
LegExtensionField legExtensionField = leg.getLegExtensionField();
|
|
||||||
if (legExtensionField != null && legExtensionField.getLocationIds() != null) {
|
|
||||||
List<Long> locationIdsAsLong;
|
|
||||||
if (legExtensionField.getLocationIds().startsWith("[")) {
|
|
||||||
locationIdsAsLong = legExtensionField.getLocationIdsAsLongFromArray();
|
|
||||||
} else {
|
|
||||||
locationIdsAsLong = legExtensionField.getLocationIdsAsLong();
|
|
||||||
}
|
|
||||||
List<Location> byNameList = locationRepository.findByNameList(locationIdsAsLong);
|
|
||||||
legExtensionField.setLocationList(byNameList);
|
|
||||||
}
|
|
||||||
if (leg.getOriginId() != null) {
|
|
||||||
leg.setOriginLocation(locationRepository.findByLocationId(leg.getOriginId()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (leg.getDestinationId() != null) {
|
|
||||||
leg.setDestinationLocation(locationRepository.findByLocationId(leg.getDestinationId()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@ListenTo(command = "OrderCreateCommand", order = 0)
|
@ListenTo(command = "OrderCreateCommand", order = 0)
|
||||||
public RouteOrder createOrder(OrderCreateCommand command) {
|
public RouteOrder createOrder(OrderCreateCommand command) {
|
||||||
User user = command.getUser();
|
User user = command.getUser();
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.chint.domain.service.amount_estimate;
|
||||||
import com.chint.application.queryies.estimate.EstimatePrice;
|
import com.chint.application.queryies.estimate.EstimatePrice;
|
||||||
import com.chint.domain.aggregates.order.Leg;
|
import com.chint.domain.aggregates.order.Leg;
|
||||||
import com.chint.domain.aggregates.order.RouteOrder;
|
import com.chint.domain.aggregates.order.RouteOrder;
|
||||||
|
import com.chint.domain.service.LegDomainService;
|
||||||
import com.chint.domain.service.OrderDomainService;
|
import com.chint.domain.service.OrderDomainService;
|
||||||
import com.chint.domain.value_object.FlightPriceData;
|
import com.chint.domain.value_object.FlightPriceData;
|
||||||
import com.chint.domain.value_object.HotelPriceData;
|
import com.chint.domain.value_object.HotelPriceData;
|
||||||
|
@ -29,6 +30,9 @@ public class CTripEstimate implements AmountEstimate {
|
||||||
@Autowired
|
@Autowired
|
||||||
private OrderDomainService orderDomainService;
|
private OrderDomainService orderDomainService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LegDomainService legDomainService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String amountEstimate(Leg leg) {
|
public String amountEstimate(Leg leg) {
|
||||||
|
@ -69,7 +73,7 @@ public class CTripEstimate implements AmountEstimate {
|
||||||
private PriceQueryData getQueryData(Leg leg) {
|
private PriceQueryData getQueryData(Leg leg) {
|
||||||
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
PriceQueryData priceQueryData = new PriceQueryData();
|
PriceQueryData priceQueryData = new PriceQueryData();
|
||||||
leg = orderDomainService.queryLocation(List.of(leg)).get(0);
|
leg = legDomainService.queryLocation(List.of(leg)).get(0);
|
||||||
priceQueryData.setArriveCity(leg.getDestinationLocation().getLocationId());
|
priceQueryData.setArriveCity(leg.getDestinationLocation().getLocationId());
|
||||||
priceQueryData.setDepartCity(leg.getOriginLocation().getLocationId());
|
priceQueryData.setDepartCity(leg.getOriginLocation().getLocationId());
|
||||||
priceQueryData.setDepartDate(dateTimeFormatter.format(leg.getStartTime()));
|
priceQueryData.setDepartDate(dateTimeFormatter.format(leg.getStartTime()));
|
||||||
|
|
|
@ -12,6 +12,7 @@ import com.chint.domain.factoriy.leg_event.LegEventFactory;
|
||||||
import com.chint.domain.factoriy.order.RouteOrderFactory;
|
import com.chint.domain.factoriy.order.RouteOrderFactory;
|
||||||
import com.chint.domain.factoriy.order_detail.OrderDetailFactory;
|
import com.chint.domain.factoriy.order_detail.OrderDetailFactory;
|
||||||
import com.chint.domain.repository.*;
|
import com.chint.domain.repository.*;
|
||||||
|
import com.chint.domain.service.LegDomainService;
|
||||||
import com.chint.domain.service.OrderDomainService;
|
import com.chint.domain.service.OrderDomainService;
|
||||||
import com.chint.domain.service.RouteRequestDomainService;
|
import com.chint.domain.service.RouteRequestDomainService;
|
||||||
import com.chint.domain.service.order_sync.SyncAdapter;
|
import com.chint.domain.service.order_sync.SyncAdapter;
|
||||||
|
@ -91,6 +92,9 @@ public class LegEventHandler implements LegEventService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private RouteRequestDomainService routeRequestDomainService;
|
private RouteRequestDomainService routeRequestDomainService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LegDomainService legDomainService;
|
||||||
|
|
||||||
@Value("${chint.envMark}")
|
@Value("${chint.envMark}")
|
||||||
private String envMark;
|
private String envMark;
|
||||||
|
|
||||||
|
@ -229,7 +233,7 @@ public class LegEventHandler implements LegEventService {
|
||||||
first.isPresent()
|
first.isPresent()
|
||||||
) {
|
) {
|
||||||
orderDetail = first.get();
|
orderDetail = first.get();
|
||||||
orderDetail = routeOrder.matchOrderWithLeg(orderDetail, orderDomainService);
|
orderDetail = routeOrder.matchOrderWithLeg(orderDetail, legDomainService);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
orderDetail = byOrderNo.get();
|
orderDetail = byOrderNo.get();
|
||||||
|
|
|
@ -5,6 +5,7 @@ import com.chint.domain.aggregates.location.basedata.DistrictPOIInfoEntity;
|
||||||
import com.chint.domain.aggregates.location.basedata.PrefectureLevelCityInfoEntity;
|
import com.chint.domain.aggregates.location.basedata.PrefectureLevelCityInfoEntity;
|
||||||
import com.chint.domain.aggregates.order.*;
|
import com.chint.domain.aggregates.order.*;
|
||||||
import com.chint.domain.repository.*;
|
import com.chint.domain.repository.*;
|
||||||
|
import com.chint.domain.service.LegDomainService;
|
||||||
import com.chint.domain.service.LocationDomainService;
|
import com.chint.domain.service.LocationDomainService;
|
||||||
import com.chint.domain.service.OrderDomainService;
|
import com.chint.domain.service.OrderDomainService;
|
||||||
import com.chint.interfaces.rest.ctrip.CTripApprovalRequest;
|
import com.chint.interfaces.rest.ctrip.CTripApprovalRequest;
|
||||||
|
@ -63,6 +64,9 @@ public class CTripOrderSyncAdapter implements SupplierOrderSync {
|
||||||
@Autowired
|
@Autowired
|
||||||
private DistrictInfoRepository districtInfoRepository;
|
private DistrictInfoRepository districtInfoRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LegDomainService legDomainService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean syncSupplierOrder(RouteOrder order) {
|
public boolean syncSupplierOrder(RouteOrder order) {
|
||||||
log.info("开始同步携程订单");
|
log.info("开始同步携程订单");
|
||||||
|
@ -113,7 +117,7 @@ public class CTripOrderSyncAdapter implements SupplierOrderSync {
|
||||||
}
|
}
|
||||||
|
|
||||||
private ApprovalRequest generateApprovalRequestLegInfo(List<Leg> legList, String employeeNo, ApprovalRequest approvalRequestParam) {
|
private ApprovalRequest generateApprovalRequestLegInfo(List<Leg> legList, String employeeNo, ApprovalRequest approvalRequestParam) {
|
||||||
Map<Integer, List<Leg>> collect = orderDomainService.queryLocation(
|
Map<Integer, List<Leg>> collect = legDomainService.queryLocation(
|
||||||
legList.stream()
|
legList.stream()
|
||||||
.filter(leg -> leg.getLegType().equals(LEG_TYPE_HOTEL) ||
|
.filter(leg -> leg.getLegType().equals(LEG_TYPE_HOTEL) ||
|
||||||
leg.getLegType().equals(LEG_TYPE_AIRPLANE) ||
|
leg.getLegType().equals(LEG_TYPE_AIRPLANE) ||
|
||||||
|
|
|
@ -5,6 +5,7 @@ import com.chint.domain.aggregates.user.User;
|
||||||
import com.chint.domain.exceptions.NotFoundException;
|
import com.chint.domain.exceptions.NotFoundException;
|
||||||
import com.chint.domain.repository.LocationRepository;
|
import com.chint.domain.repository.LocationRepository;
|
||||||
import com.chint.domain.repository.UserRepository;
|
import com.chint.domain.repository.UserRepository;
|
||||||
|
import com.chint.domain.service.LegDomainService;
|
||||||
import com.chint.domain.service.OrderDomainService;
|
import com.chint.domain.service.OrderDomainService;
|
||||||
import com.chint.interfaces.rest.ly.LYPostRequest;
|
import com.chint.interfaces.rest.ly.LYPostRequest;
|
||||||
import com.chint.interfaces.rest.ly.dto.applyordersync.*;
|
import com.chint.interfaces.rest.ly.dto.applyordersync.*;
|
||||||
|
@ -42,6 +43,8 @@ public class LYOrderSyncAdapter implements SupplierOrderSync {
|
||||||
|
|
||||||
@Value("${ly.baseUrl}")
|
@Value("${ly.baseUrl}")
|
||||||
private String lyBaseUrl;
|
private String lyBaseUrl;
|
||||||
|
@Autowired
|
||||||
|
private LegDomainService legDomainService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean syncSupplierOrder(RouteOrder order) {
|
public boolean syncSupplierOrder(RouteOrder order) {
|
||||||
|
@ -288,7 +291,7 @@ public class LYOrderSyncAdapter implements SupplierOrderSync {
|
||||||
LocalDateTime endDate = LocalDateTime.MIN;
|
LocalDateTime endDate = LocalDateTime.MIN;
|
||||||
StringBuilder departCityStr = new StringBuilder();
|
StringBuilder departCityStr = new StringBuilder();
|
||||||
StringBuilder arriveCityStr = new StringBuilder();
|
StringBuilder arriveCityStr = new StringBuilder();
|
||||||
orderDomainService.queryLocation(legItems);
|
legDomainService.queryLocation(legItems);
|
||||||
for (Leg leg : legItems) {
|
for (Leg leg : legItems) {
|
||||||
//开始时间
|
//开始时间
|
||||||
LocalDateTime startTime = leg.getStartTime();
|
LocalDateTime startTime = leg.getStartTime();
|
||||||
|
|
Loading…
Reference in New Issue