Commit 1e2fabdf by 刘鑫

feat(两点间距离计算): 修订为服务间调用方式

1 parent e3e4df15
package com.dituhui.pea.dispatch.controller;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.druid.util.StringUtils;
import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result;
......@@ -16,6 +10,12 @@ import com.dituhui.pea.dispatch.pojo.Location;
import com.dituhui.pea.dispatch.utils.RoadDistanceUtils;
import com.dituhui.pea.dispatch.utils.RoadDistanceUtils.Distance;
import com.dituhui.pea.pojo.DistanceDTO;
import com.dituhui.pea.pojo.DistanceParam;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 道路控制层
......@@ -69,4 +69,19 @@ public class PathController implements IPath {
}
}
@Override
public DistanceDTO getLocationDistance(DistanceParam distanceParam) {
com.dituhui.pea.pojo.Location origin = distanceParam.getOrigin();
com.dituhui.pea.pojo.Location destination = distanceParam.getDestination();
Distance distance = roadDistanceUtils.getDistance2(
new Location(0L, null, null, origin.getLongitude(), origin.getLatitude()),
new Location(0L, null, null, destination.getLongitude(), destination.getLatitude()),
distanceParam.getVehicle());
DistanceDTO dto = new DistanceDTO();
dto.setDis(distance.getDis());
dto.setTime(distance.getTime());
return dto;
}
}
package com.dituhui.pea.dispatch;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.pojo.DistanceDTO;
import com.dituhui.pea.pojo.DistanceParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.pojo.DistanceDTO;
/**
* 道路相关接口
*
......@@ -29,4 +31,14 @@ public interface IPath {
@RequestParam("toOrderId") String toOrderId,
@RequestParam(name = "vehicleType", required = false) Integer vehicleType);
/**
* 根据交通方式计算两点间距离
*
* @param distanceParam 参数, 包含起始点, 交通方式
* @return 返回两点距离以及所需时间
*/
@PostMapping("/pea-dispatch/locationDistance")
DistanceDTO getLocationDistance(@RequestBody DistanceParam distanceParam);
}
package com.dituhui.pea.pojo;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class DistanceParam {
/**
* 出发点经纬度
*/
private Location origin;
/**
* 出发点经纬度
*/
private Location destination;
/**
* 交通工具:1汽车;2电动车;3自行车;默认是汽车
*/
private Integer vehicle;
}
package com.dituhui.pea.pojo;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
@Setter
@Getter
@AllArgsConstructor
public class Location {
/**
* 地址纬度
*/
@NotNull(message = "地址纬度必填")
private Double latitude;
/**
* 地址经度
*/
@NotNull(message = "地址经度必填")
private Double longitude;
}
......@@ -2,12 +2,13 @@ package com.dituhui.pea.order.controller;
import com.dituhui.pea.common.BusinessException;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.dispatch.IPath;
import com.dituhui.pea.enums.StatusCodeEnum;
import com.dituhui.pea.order.common.jackson.DateUtil;
import com.dituhui.pea.order.common.jackson.JsonUtil;
import com.dituhui.pea.order.dao.TableCodeCheckDao;
import com.dituhui.pea.order.dto.param.BaseDistance;
import com.dituhui.pea.order.dto.param.BaseDistanceParam;
import com.dituhui.pea.order.dto.param.BaseLocation;
import com.dituhui.pea.order.dto.param.CapacityQueryDTO;
import com.dituhui.pea.order.dto.param.EngineerCalendarResultDTO;
import com.dituhui.pea.order.dto.param.EngineerOrderParam;
......@@ -22,6 +23,9 @@ import com.dituhui.pea.order.service.EngineerCalendarService;
import com.dituhui.pea.order.service.OrderCreateService;
import com.dituhui.pea.order.service.OrderInfoService;
import com.dituhui.pea.order.service.PeaOuterAPIService;
import com.dituhui.pea.pojo.DistanceDTO;
import com.dituhui.pea.pojo.DistanceParam;
import com.dituhui.pea.pojo.Location;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Getter;
......@@ -64,6 +68,7 @@ public class PeaApiController {
private OrderInfoService orderInfoService;
private final CapacityQueryService capacityQueryService;
private final TableCodeCheckDao tableCodeCheckDao;
private final IPath path;
private static final String stage = "{\"orderId\": \"X10001\", \"engineerCode\": \"E12005\", \"engineerName\": \"祝枝山\", \"engineerCodeAssist\": \"E12446\", \"engineerNameAssist\": \"李晓阳\", \"planVisitTime\": \"2023-07-27 12:00:00\", \"realtimeInfo\": {\"engineerLocation\": {\"latitude\": 31.349701, \"longitude\": 120.675945, \"address\": \"江苏省苏州市苏州工业园区和顺路\", \"name\": \"和顺大酒店\"}, \"estimate\": {\"distance\": 2300, \"arriveTime\": \"2023-07-27 12:12:00\"}}}";
......@@ -332,9 +337,21 @@ public class PeaApiController {
public Result<BaseDistance> baseDistance(@RequestBody BaseDistanceParam param) {
BaseDistance result = new BaseDistance();
result.setOrigin(param.getOrigin());
result.setDestination(param.getDestination());
BaseLocation origin = param.getOrigin();
result.setOrigin(origin);
BaseLocation destination = param.getDestination();
result.setDestination(destination);
result.setVehicle(param.getVehicle());
DistanceParam distanceParam = new DistanceParam();
distanceParam.setOrigin(new Location(origin.getLongitude(), origin.getLatitude()));
distanceParam.setOrigin(new Location(destination.getLongitude(), destination.getLatitude()));
distanceParam.setVehicle(param.getVehicle());
DistanceDTO locationDistance = path.getLocationDistance(distanceParam);
result.setDistance((int) locationDistance.getDis());
result.setDuration((long) locationDistance.getTime());
return Result.success(result);
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!