|
|
@@ -11,8 +11,12 @@ import com.sckw.core.model.enums.AddressTypeEnum;
|
|
|
import com.sckw.core.model.enums.CarWaybillEnum;
|
|
|
import com.sckw.core.model.page.PageResult;
|
|
|
|
|
|
+import com.sckw.core.reponse.CollectZjxlResponse;
|
|
|
+import com.sckw.core.service.VehicleCollectService;
|
|
|
import com.sckw.core.web.response.result.PageDataResult;
|
|
|
import com.sckw.fleet.api.model.vo.RDriverDetailVo;
|
|
|
+import com.sckw.fleet.api.model.vo.RDriverVo;
|
|
|
+import com.sckw.fleet.api.model.vo.RFleetDriverVo;
|
|
|
import com.sckw.transport.common.config.UrlConfigProperties;
|
|
|
import com.sckw.core.utils.DateUtils;
|
|
|
import com.sckw.core.utils.HttpUtil;
|
|
|
@@ -43,6 +47,7 @@ import com.sckw.transport.model.vo.TruckInfoVo;
|
|
|
import com.sckw.transport.repository.KwtWaybillOrderAddressRepository;
|
|
|
import com.sckw.transport.repository.KwtWaybillOrderRepository;
|
|
|
import com.sckw.transport.repository.KwtWaybillOrderSubtaskRepository;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
import jakarta.validation.Valid;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -68,6 +73,8 @@ public class kwfTruckTraceService {
|
|
|
private final KwtWaybillOrderAddressRepository kwtWaybillOrderAddressRepository;
|
|
|
private final UrlConfigProperties urlConfigProperties;
|
|
|
private final KwtWaybillOrderSubtaskRepository kwtWaybillOrderSubtaskRepository;
|
|
|
+ @Resource
|
|
|
+ private VehicleCollectService vehicleCollectService;
|
|
|
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false, timeout = 8000)
|
|
|
RemoteSystemService remoteSystemService;
|
|
|
@@ -204,22 +211,52 @@ public class kwfTruckTraceService {
|
|
|
return TruckInfoVo.toTruckInfoVo(truckDto);
|
|
|
}
|
|
|
//缓存没有则查询数据中台
|
|
|
- List<VehicleReturnData> vehicleReturnData = getVehicleReturnData(wOrderNo);
|
|
|
- if (CollectionUtils.isNotEmpty(vehicleReturnData)){
|
|
|
+ VehicleReturnData vehicleReturnData = getVehicleReturnData(wOrderNo);
|
|
|
+ if (Objects.nonNull(vehicleReturnData)){
|
|
|
return buildTruckInfo(wOrderNo, vehicleReturnData);
|
|
|
}
|
|
|
//todo 查询中交 如果数据中台没有数据则查询中交
|
|
|
- return new TruckInfoVo();
|
|
|
+ CollectZjxlResponse collectZjxlResponse = vehicleCollectService.transTimeManage(truckNo);
|
|
|
+ TruckInfoVo instance = TruckInfoVo.getInstance();
|
|
|
+ instance.setWOrderNo(wOrderNo);
|
|
|
+ instance.setTruckNo(truckNo);
|
|
|
+ instance.setGpsStatus(collectZjxlResponse.getResult().getFirstVcl().getSpd());
|
|
|
+ instance.setLongitude(collectZjxlResponse.getResult().getFirstVcl().getLon());
|
|
|
+ instance.setLatitude(collectZjxlResponse.getResult().getFirstVcl().getLat());
|
|
|
+ instance.setLocationTime(collectZjxlResponse.getResult().getFirstVcl().getOfflineTime());
|
|
|
+ //查询关联订单号
|
|
|
+ KwtWaybillOrder oneByTruckNo = kwtWaybillOrderRepository.findOneByTruckNo(truckNo);
|
|
|
+
|
|
|
+ KwtWaybillOrderSubtask waybillOrderSubtask = kwtWaybillOrderSubtaskRepository.findOneByWOrderNo(oneByTruckNo.getWOrderNo());
|
|
|
+ instance.setLOrderNo(Objects.nonNull(waybillOrderSubtask) && Objects.nonNull(waybillOrderSubtask.getLOrderId())
|
|
|
+ ? String.valueOf(waybillOrderSubtask.getLOrderId()) : "");
|
|
|
+ String startPoint = "";
|
|
|
+ String endPoint = "";
|
|
|
+ if (Objects.nonNull(waybillOrderSubtask)){
|
|
|
+ List<KwtWaybillOrderAddress> kwtWaybillOrderAddresses = kwtWaybillOrderAddressRepository.queryByWOrderId(waybillOrderSubtask.getWOrderId());
|
|
|
+ if (CollectionUtils.isNotEmpty(kwtWaybillOrderAddresses)){
|
|
|
+ for (KwtWaybillOrderAddress e : kwtWaybillOrderAddresses) {
|
|
|
+ if (Objects.equals(e.getAddressType(), AddressTypeEnum.SHIPMENT.getCode())) {
|
|
|
+ startPoint = e.getDetailAddress();
|
|
|
+ }
|
|
|
+ if (Objects.equals(e.getAddressType(), AddressTypeEnum.TAKE.getCode())) {
|
|
|
+ endPoint = e.getDetailAddress();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ instance.setTaskAddress(startPoint+"-"+endPoint);
|
|
|
+ return instance;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 将数据中台的数据进行组织
|
|
|
* @param wOrderNo 运单号
|
|
|
- * @param vehicleReturnData 中台数据
|
|
|
+ * @param vehicleReturn 中台数据
|
|
|
* @return 组织的数据
|
|
|
*/
|
|
|
- private TruckInfoVo buildTruckInfo(String wOrderNo, List<VehicleReturnData> vehicleReturnData) {
|
|
|
- VehicleReturnData vehicleReturn = vehicleReturnData.get(0);
|
|
|
+ private TruckInfoVo buildTruckInfo(String wOrderNo, VehicleReturnData vehicleReturn) {
|
|
|
TruckInfoVo truckInfoVo = TruckInfoVo.getInstance();
|
|
|
truckInfoVo.setWOrderNo(vehicleReturn.getWOrderNo());
|
|
|
truckInfoVo.setTruckNo(vehicleReturn.getCarNo());
|
|
|
@@ -245,7 +282,7 @@ public class kwfTruckTraceService {
|
|
|
return new CurrentTaskTraceReqVo();
|
|
|
}
|
|
|
//查询数据中台获取轨迹
|
|
|
- List<VehicleReturnData> vehicleReturnDataList = getVehicleReturnData(req.getWOrderNo());
|
|
|
+ List<VehicleReturnData> vehicleReturnDataList = getVehicleReturnDataList(req.getWOrderNo());
|
|
|
if (CollectionUtils.isEmpty(vehicleReturnDataList)){
|
|
|
return new CurrentTaskTraceReqVo();
|
|
|
}
|
|
|
@@ -265,7 +302,7 @@ public class kwfTruckTraceService {
|
|
|
* @param wOrderNo 运单号
|
|
|
* @return 轨迹数据
|
|
|
*/
|
|
|
- private List<VehicleReturnData> getVehicleReturnData(String wOrderNo) {
|
|
|
+ private List<VehicleReturnData> getVehicleReturnDataList(String wOrderNo) {
|
|
|
VehicleDataDTO vehicleDataDTO = new VehicleDataDTO();
|
|
|
vehicleDataDTO.setWOrderNo(wOrderNo);
|
|
|
String s;
|
|
|
@@ -281,6 +318,22 @@ public class kwfTruckTraceService {
|
|
|
return JSON.parseArray(s, VehicleReturnData.class);
|
|
|
}
|
|
|
|
|
|
+ private VehicleReturnData getVehicleReturnData(String wOrderNo) {
|
|
|
+ VehicleDataDTO vehicleDataDTO = new VehicleDataDTO();
|
|
|
+ vehicleDataDTO.setWOrderNo(wOrderNo);
|
|
|
+ String s;
|
|
|
+ try {
|
|
|
+ s = HttpUtil.postJson(urlConfigProperties.getApiBaseUrl()+ UrlConstants.QUERY_REAL_TIME_TRACE_URL, JSON.toJSONString(vehicleDataDTO), null);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("查询任务轨迹异常",e);
|
|
|
+ throw new BusinessException("查询任务轨迹异常");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(s)){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return JSON.parseObject(s, VehicleReturnData.class);
|
|
|
+ }
|
|
|
+
|
|
|
private static CurrentTaskTraceReqVo.CurrentTaskTrace getCurrentTaskTrace(VehicleReturnData e) {
|
|
|
CurrentTaskTraceReqVo.CurrentTaskTrace currentTaskTrace = new CurrentTaskTraceReqVo.CurrentTaskTrace();
|
|
|
currentTaskTrace.setLongitude(e.getLongitude());
|
|
|
@@ -311,10 +364,27 @@ public class kwfTruckTraceService {
|
|
|
*/
|
|
|
public Void vehiclesTrajectory(@Valid VehiclesTrajectoryReq req) {
|
|
|
//通过手机号查询司机以及车辆信息
|
|
|
-// RTruckVo driveAndTruck = fleetService.findDriveAndTruckByPhone(req.getMobile());
|
|
|
-// if (Objects.isNull(driveAndTruck)){
|
|
|
-// throw new BusinessException("司机信息不存在");
|
|
|
-// }
|
|
|
+ RDriverVo rDriverVo = fleetService.findDriverByPhone(req.getMobile());
|
|
|
+ if (Objects.isNull(rDriverVo)){
|
|
|
+ throw new BusinessException("司机信息不存在");
|
|
|
+ }
|
|
|
+ //查询认为中的运单信息
|
|
|
+ KwtWaybillOrder waybillOrder = kwtWaybillOrderRepository.findOneByDriverId(rDriverVo.getId());
|
|
|
+ //获取车队信息
|
|
|
+ RFleetDriverVo fleetByDriveId = fleetService.findFleetByDriveId(rDriverVo.getId());
|
|
|
+
|
|
|
+
|
|
|
+ VehiclesTrajectoryReq.VehicleDataVO vehicleDataVO = new VehiclesTrajectoryReq.VehicleDataVO();
|
|
|
+ String truckNo = Optional.ofNullable(waybillOrder)
|
|
|
+ .map(KwtWaybillOrder::getTruckNo)
|
|
|
+ .orElse("");
|
|
|
+ req.setTruckNo(truckNo);
|
|
|
+ vehicleDataVO.setCarNo(truckNo);
|
|
|
+
|
|
|
+ vehicleDataVO.setFleetId(String.valueOf(Optional.ofNullable(fleetByDriveId)
|
|
|
+ .map(RFleetDriverVo::getFleetId)
|
|
|
+ .orElse(null)));
|
|
|
+ req.setVehicleDataVO(vehicleDataVO);
|
|
|
|
|
|
try {
|
|
|
String url = urlConfigProperties.getApiBaseUrl();
|