Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
yangxiujun
/
paidan_demo
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 1e2fabdf
authored
Nov 15, 2023
by
刘鑫
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(两点间距离计算): 修订为服务间调用方式
1 parent
e3e4df15
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
114 additions
and
24 deletions
project-dispatch/src/main/java/com/dituhui/pea/dispatch/controller/PathController.java
project-interface/src/main/java/com/dituhui/pea/dispatch/IPath.java
project-interface/src/main/java/com/dituhui/pea/pojo/DistanceParam.java
project-interface/src/main/java/com/dituhui/pea/pojo/Location.java
project-order/src/main/java/com/dituhui/pea/order/controller/PeaApiController.java
project-dispatch/src/main/java/com/dituhui/pea/dispatch/controller/PathController.java
View file @
1e2fabd
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
;
}
}
project-interface/src/main/java/com/dituhui/pea/dispatch/IPath.java
View file @
1e2fabd
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
;
/**
* 道路相关接口
*
...
...
@@ -16,17 +18,27 @@ import com.dituhui.pea.pojo.DistanceDTO;
@FeignClient
(
value
=
"project-dispatch"
,
contextId
=
"dispatch"
)
public
interface
IPath
{
/**
* 获取2个订单之间的道路距离
*
* @param fromOrderId 出发订单id
* @param toOrderId 到达订单id
* @param vehicleType 交通工具:1汽车;2电动车;3自行车;4步行 默认是汽车
* @return
*/
@RequestMapping
(
value
=
"/pea-dispatch/getRoadDistance"
,
method
=
RequestMethod
.
POST
)
public
Result
<
DistanceDTO
>
getRoadDistance
(
@RequestParam
(
"fromOrderId"
)
String
fromOrderId
,
@RequestParam
(
"toOrderId"
)
String
toOrderId
,
@RequestParam
(
name
=
"vehicleType"
,
required
=
false
)
Integer
vehicleType
);
/**
* 获取2个订单之间的道路距离
*
* @param fromOrderId 出发订单id
* @param toOrderId 到达订单id
* @param vehicleType 交通工具:1汽车;2电动车;3自行车;4步行 默认是汽车
* @return
*/
@RequestMapping
(
value
=
"/pea-dispatch/getRoadDistance"
,
method
=
RequestMethod
.
POST
)
public
Result
<
DistanceDTO
>
getRoadDistance
(
@RequestParam
(
"fromOrderId"
)
String
fromOrderId
,
@RequestParam
(
"toOrderId"
)
String
toOrderId
,
@RequestParam
(
name
=
"vehicleType"
,
required
=
false
)
Integer
vehicleType
);
/**
* 根据交通方式计算两点间距离
*
* @param distanceParam 参数, 包含起始点, 交通方式
* @return 返回两点距离以及所需时间
*/
@PostMapping
(
"/pea-dispatch/locationDistance"
)
DistanceDTO
getLocationDistance
(
@RequestBody
DistanceParam
distanceParam
);
}
project-interface/src/main/java/com/dituhui/pea/pojo/DistanceParam.java
0 → 100644
View file @
1e2fabd
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
;
}
project-interface/src/main/java/com/dituhui/pea/pojo/Location.java
0 → 100644
View file @
1e2fabd
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
;
}
project-order/src/main/java/com/dituhui/pea/order/controller/PeaApiController.java
View file @
1e2fabd
...
...
@@ -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
);
}
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment