diff --git a/src/main/java/com/chint/application/dtos/response/LegRes.java b/src/main/java/com/chint/application/dtos/response/LegRes.java index 82f8206b..4b3369db 100644 --- a/src/main/java/com/chint/application/dtos/response/LegRes.java +++ b/src/main/java/com/chint/application/dtos/response/LegRes.java @@ -42,8 +42,8 @@ public class LegRes { private String originDescription; @ApiModelProperty("目的地详细") private String destinationDescription; - private String supplier; - private String supplierName; + private List supplierList; + private List supplierNameList; private Integer legStatus; private String changeReason; @@ -85,6 +85,14 @@ public class LegRes { } legRes.setOriginLocation(LocationRes.copyFrom(leg.getOriginLocation())); legRes.setDestinationLocation(LocationRes.copyFrom(leg.getDestinationLocation())); + + if (legRes.getSupplierList() == null) { + legRes.setSupplierList(new ArrayList<>()); + } + + if (legRes.getSupplierNameList() == null) { + legRes.setSupplierNameList(new ArrayList<>()); + } return legRes; } } diff --git a/src/main/java/com/chint/domain/service/LegDomainService.java b/src/main/java/com/chint/domain/service/LegDomainService.java index 3aafe189..a031b512 100644 --- a/src/main/java/com/chint/domain/service/LegDomainService.java +++ b/src/main/java/com/chint/domain/service/LegDomainService.java @@ -2,8 +2,6 @@ package com.chint.domain.service; import com.chint.application.dtos.response.LegRes; import com.chint.domain.aggregates.order.*; -import com.chint.domain.aggregates.supplier.Supplier; -import com.chint.domain.aggregates.supplier.SupplierProduct; import com.chint.domain.exceptions.LegEventException; import com.chint.domain.factoriy.leg_event.LegEventFactory; import com.chint.domain.repository.*; @@ -12,7 +10,6 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; -import java.util.Optional; import static com.chint.infrastructure.constant.CommonMessageConstant.LEG_CHANGE_MAX_ERROR; import static com.chint.infrastructure.constant.LegConstant.*; @@ -171,6 +168,13 @@ public class LegDomainService { //通过查看供应商的商品类型,来进行同步 legItems = supplierDomainService.ifCanSync(legItems, supplierName); + legItems.forEach(Leg::reloadStatus); + queryLocation(legItems); + return legItems; + } + + + public List syncLegExclusive(RouteOrder routeOrder, List legItems, String supplierName) { List alreadySyncLegs = routeOrder.getRouteRequestList() .stream() .filter(it -> it.reloadStatus().getStatus().equals(ROUTE_REQUEST_STATUS_SYNC)) @@ -196,7 +200,6 @@ public class LegDomainService { List res = new ArrayList<>(needSyncLegs); res.addAll(belongLegsAndSync); res.forEach(Leg::reloadStatus); - queryLocation(res); return res; } @@ -216,8 +219,8 @@ public class LegDomainService { .map(RouteRequestLeg::getLegId) .toList(); if (legIds.contains(legRes.getLegId())) { - legRes.setSupplier(routeRequest.getSupplier()); - legRes.setSupplierName(routeRequest.getSupplierName()); + legRes.getSupplierList().add(routeRequest.getSupplier()); + legRes.getSupplierNameList().add(routeRequest.getSupplierName()); } } } diff --git a/src/main/java/com/chint/domain/service/RouteRequestDomainService.java b/src/main/java/com/chint/domain/service/RouteRequestDomainService.java index 48a103b5..ece5a540 100644 --- a/src/main/java/com/chint/domain/service/RouteRequestDomainService.java +++ b/src/main/java/com/chint/domain/service/RouteRequestDomainService.java @@ -2,7 +2,6 @@ package com.chint.domain.service; import com.chint.domain.aggregates.order.*; import com.chint.domain.aggregates.supplier.Supplier; -import com.chint.domain.aggregates.supplier.SupplierProduct; import com.chint.domain.exceptions.CommandException; import com.chint.domain.factoriy.leg_event.LegEventFactory; import com.chint.domain.factoriy.order.RouteOrderFactory; @@ -15,6 +14,7 @@ import com.chint.domain.value_object.SyncLegData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; @@ -109,6 +109,7 @@ public class RouteRequestDomainService { public void cancelRouteRequest(SyncLegData syncLegData) { + List legIds = syncLegData.getLegIds(); Long routeId = syncLegData.getRouteId(); RouteOrder routeOrder = routeRepository.queryById(routeId); Optional optionalRouteRequest; @@ -138,7 +139,7 @@ public class RouteRequestDomainService { if (supplierOptional.isPresent()) { collect = legs .stream() - .collect(Collectors.partitioningBy(leg -> supplierDomainService.ifCanCancel(leg,it.getSupplier()))); + .collect(Collectors.partitioningBy(leg -> supplierDomainService.ifCanCancel(leg, it.getSupplier()) || legIds.contains(leg.getLegId()))); List orderedLegs = collect.get(false); if (!orderedLegs.isEmpty()) { it.reloadGenerateRequestLegs(orderedLegs); @@ -160,29 +161,6 @@ public class RouteRequestDomainService { it.getRouteRequestLegList() .forEach(requestLeg -> requestLeg.getLeg().addEvent(legEventFactory.creatLegEvent(LEG_EVENT_APPROVAL))); } - -// Map> collect = legs -// .stream() -// .collect(Collectors.partitioningBy(leg -> { -// Integer legStatus = leg.reloadStatus().getLegStatus(); -// return (legStatus.equals(LEG_STATUS_ORDERED) || legStatus.equals(LEG_STATUS_PAYED) || legStatus.equals(LEG_STATUS_FINISH)) -// && leg.getLegType().equals(LEG_TYPE_AIRPLANE); -// })); - -// List orderedLegs = collect.get(true); -// if (!orderedLegs.isEmpty()) { -// it.reloadGenerateRequestLegs(orderedLegs); -// syncAdapter.of(it.getSupplier()).syncRouteRequest(it); -// it.addEvent(RouteRequestEvent.sync(it.getSupplier())); -// List notOrderLegs = collect.get(false); -// notOrderLegs.forEach(leg -> leg.addEvent(legEventFactory.creatLegEvent(LEG_EVENT_APPROVAL))); -// } else { -// it.addEvent(RouteRequestEvent.cancel(it.getSupplier())); -// getLegInfoFromRouteOrder(it, routeOrder); -// syncAdapter.of(it.getSupplier()).cancelRouteRequest(it); -// it.getRouteRequestLegList() -// .forEach(requestLeg -> requestLeg.getLeg().addEvent(legEventFactory.creatLegEvent(LEG_EVENT_APPROVAL))); -// } }); routeRepository.save(routeOrder); }