|
|
@@ -13,12 +13,14 @@ import com.sckw.core.model.page.PageHelperUtil;
|
|
|
import com.sckw.core.model.page.PageResult;
|
|
|
import com.sckw.core.model.vo.TableTop;
|
|
|
import com.sckw.core.utils.*;
|
|
|
+import com.sckw.core.web.constant.CommonConstants;
|
|
|
import com.sckw.core.web.constant.HttpStatus;
|
|
|
import com.sckw.core.web.context.LoginUserHolder;
|
|
|
import com.sckw.core.web.response.HttpResult;
|
|
|
import com.sckw.excel.utils.DateUtil;
|
|
|
import com.sckw.fleet.api.RemoteFleetService;
|
|
|
import com.sckw.fleet.api.model.vo.RDriverVo;
|
|
|
+import com.sckw.fleet.api.model.vo.RTruckRouteVo;
|
|
|
import com.sckw.fleet.api.model.vo.RTruckVo;
|
|
|
import com.sckw.mongo.model.SckwWaybillOrder;
|
|
|
import com.sckw.order.api.dubbo.TradeOrderInfoService;
|
|
|
@@ -39,12 +41,14 @@ import com.sckw.transport.model.enuma.CarWaybillDetailEnum;
|
|
|
import com.sckw.transport.model.enuma.CarWaybillNdexTopEnum;
|
|
|
import com.sckw.transport.model.enuma.CarWaybillTableTopEnum;
|
|
|
import com.sckw.transport.model.vo.*;
|
|
|
+import com.sckw.transport.repository.KwtWaybillOrderAddressRepository;
|
|
|
+import com.sckw.transport.repository.KwtWaybillOrderTrackRepository;
|
|
|
import jakarta.annotation.Resource;
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
import jakarta.validation.Valid;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
-import org.apache.ibatis.annotations.Param;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.cloud.stream.function.StreamBridge;
|
|
|
@@ -58,6 +62,8 @@ import java.math.RoundingMode;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
@@ -68,6 +74,7 @@ import java.util.stream.Stream;
|
|
|
*/
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
+@RequiredArgsConstructor
|
|
|
public class KwtWaybillOrderV1Service {
|
|
|
@Autowired
|
|
|
KwtWaybillOrderV1Mapper waybillOrderV1Dao;
|
|
|
@@ -99,6 +106,8 @@ public class KwtWaybillOrderV1Service {
|
|
|
KwtWaybillOrderSubtaskService waybillOrderSubtaskService;
|
|
|
@Autowired
|
|
|
KwtCommonService commonService;
|
|
|
+ private final KwtWaybillOrderAddressRepository waybillOrderAddressRepository;
|
|
|
+ private final KwtWaybillOrderTrackRepository kwtWaybillOrderTrackRepository;
|
|
|
@Resource
|
|
|
private StreamBridge streamBridge;
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
@@ -2108,9 +2117,56 @@ public class KwtWaybillOrderV1Service {
|
|
|
|
|
|
/*7、物流订单信息更新*/
|
|
|
editLogisticsOrder(subtasks);
|
|
|
+ //8.运单常用线路保持
|
|
|
+ //8.1根据订单号获取地址信息
|
|
|
+ editTruckRoute(params, waybillOrder, wOrderId);
|
|
|
return HttpResult.ok();
|
|
|
}
|
|
|
|
|
|
+ private void editTruckRoute(WaybillOrderTicketApprovalV2Dto params, KwtWaybillOrderV1 waybillOrder, Long wOrderId) {
|
|
|
+ try {
|
|
|
+ List<KwtWaybillOrderAddress> addressList = waybillOrderAddressRepository.queryByWOrderId(params.getWOrderId());
|
|
|
+ if (CollectionUtils.isNotEmpty(addressList)){
|
|
|
+ Set<Long> addressIds = addressList.stream()
|
|
|
+ .map(KwtWaybillOrderAddress::getId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ //运单id和地址类型组装key映射地址对象
|
|
|
+ Map<String, KwtWaybillOrderAddress> keyAndAddressMap = addressList.stream()
|
|
|
+ .peek(a -> a.setWOrderIdAddressTypeKey(a.getWOrderId() + CommonConstants.UNDERSCORE + a.getAddressType()))
|
|
|
+ .collect(Collectors.toMap(KwtWaybillOrderAddress::getWOrderIdAddressTypeKey, Function.identity(), (k1, k2) -> k1));
|
|
|
+ //查询运单状态信息
|
|
|
+ List<KwtWaybillOrderTrack> tracks = kwtWaybillOrderTrackRepository.queryByAddressIds(addressIds);
|
|
|
+ //地址id映射运单状态
|
|
|
+ Map<Long, KwtWaybillOrderTrack> addressIdAndTrackMap = tracks.stream()
|
|
|
+ .collect(Collectors.toMap(KwtWaybillOrderTrack::getWAddressId, Function.identity(), (k1, k2) -> k1));
|
|
|
+ RTruckRouteVo rTruckRouteVo = new RTruckRouteVo();
|
|
|
+ rTruckRouteVo.setTruckId(waybillOrder.getTruckId());
|
|
|
+ rTruckRouteVo.setDriverId(waybillOrder.getDriverId());
|
|
|
+ rTruckRouteVo.setEntId(waybillOrder.getEntId());
|
|
|
+ KwtWaybillOrderAddress startPoint = keyAndAddressMap.getOrDefault(wOrderId + CommonConstants.UNDERSCORE + AddressTypeEnum.SHIPMENT.getCode(), new KwtWaybillOrderAddress());
|
|
|
+ rTruckRouteVo.setStartPoint(startPoint.getDetailAddress());
|
|
|
+ KwtWaybillOrderAddress unloadingPoint = keyAndAddressMap.getOrDefault(wOrderId + CommonConstants.UNDERSCORE + AddressTypeEnum.TAKE.getCode(), new KwtWaybillOrderAddress());
|
|
|
+ rTruckRouteVo.setUnloadingPoint(unloadingPoint.getDetailAddress());
|
|
|
+ AtomicReference<Date> startTime = new AtomicReference<>();
|
|
|
+ AtomicReference<Date> unloadingTime = new AtomicReference<>();
|
|
|
+ addressList.forEach(a->{
|
|
|
+ KwtWaybillOrderTrack kwtWaybillOrderTrack = addressIdAndTrackMap.get(a.getId());
|
|
|
+ if (Objects.equals(a.getAddressType(), AddressTypeEnum.SHIPMENT.getCode())){
|
|
|
+ startTime.set(kwtWaybillOrderTrack.getOperateTime());
|
|
|
+ }
|
|
|
+ if (Objects.equals(a.getAddressType(), AddressTypeEnum.TAKE.getCode())){
|
|
|
+ unloadingTime.set(kwtWaybillOrderTrack.getOperateTime());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ Long shortestTime = DateUtil.getDifferenceInMillis(unloadingTime.get(), startTime.get());
|
|
|
+ rTruckRouteVo.setShortestTime(Objects.isNull(shortestTime) ? null: String.valueOf(shortestTime));
|
|
|
+ remoteFleetService.saveOrUpdate(rTruckRouteVo);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("修改惯用线路异常:",e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @param params {}
|
|
|
* @desc 更新榜单信息-单证审核
|