Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
ebee245f
提交
ebee245f
authored
8月 14, 2024
作者:
杨启发
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/test' into test
上级
072989a8
19a14838
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
158 行增加
和
26 行删除
+158
-26
PerformanceSDKFeign.java
...n/java/com/clx/performance/feign/PerformanceSDKFeign.java
+6
-0
PerformanceSdkFeignController.java
...mance/controller/feign/PerformanceSdkFeignController.java
+14
-1
TempTraceController.java
.../clx/performance/controller/temp/TempTraceController.java
+13
-7
OrderService.java
.../java/com/clx/performance/extranal/user/OrderService.java
+3
-0
OrderServiceImpl.java
.../clx/performance/extranal/user/impl/OrderServiceImpl.java
+89
-0
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+11
-14
GdService.java
...src/main/java/com/clx/performance/utils/gd/GdService.java
+22
-4
没有找到文件。
performance-api/src/main/java/com/clx/performance/feign/PerformanceSDKFeign.java
浏览文件 @
ebee245f
...
...
@@ -4,6 +4,7 @@ import com.clx.open.sdk.request.action.GetOrderBreakContractOwnerRuleFileAction;
import
com.clx.open.sdk.request.action.QueryPerformanceProgressAction
;
import
com.clx.open.sdk.request.action.QueryPerformanceProgressLogAction
;
import
com.clx.open.sdk.request.dto.OrderCanExtractWeightDTO
;
import
com.clx.open.sdk.request.dto.BatchOrderStatisticsInfoDTO
;
import
com.clx.open.sdk.request.dto.OwnerCancelResidueWeightDTO
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.vo.pc.OwnerAccountAllVO
;
...
...
@@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
javax.validation.constraints.NotEmpty
;
import
java.util.List
;
@FeignClient
(
name
=
"clx-performance"
,
configuration
=
PerformanceClientConfiguration
.
class
)
...
...
@@ -51,4 +53,8 @@ public interface PerformanceSDKFeign {
Result
<
OrderCanExtractWeightDTO
>
getOrderCanExtractWeight
(
@RequestParam
(
value
=
"orderNo"
)
String
orderNo
);
@GetMapping
(
"clx-performance/feign/sdk/queryTaskStatisticsInfo"
)
Result
<
BatchOrderStatisticsInfoDTO
>
queryTaskStatisticsInfo
(
@RequestParam
(
"orderNoList"
)
@NotEmpty
(
message
=
"订单编号集合不能为空"
)
List
<
String
>
orderNoList
);
}
performance-web/src/main/java/com/clx/performance/controller/feign/PerformanceSdkFeignController.java
浏览文件 @
ebee245f
...
...
@@ -5,7 +5,10 @@ import com.clx.open.sdk.request.action.GetOwnerAccountInfoAction;
import
com.clx.open.sdk.request.action.QueryPerformanceProgressAction
;
import
com.clx.open.sdk.request.action.QueryPerformanceProgressLogAction
;
import
com.clx.open.sdk.request.dto.OrderCanExtractWeightDTO
;
import
com.clx.open.sdk.request.dto.BatchOrderStatisticsInfoDTO
;
import
com.clx.open.sdk.request.dto.OrderStatisticsInfoDTO
;
import
com.clx.open.sdk.request.dto.OwnerCancelResidueWeightDTO
;
import
com.clx.performance.extranal.user.OrderService
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.service.OrderCancelService
;
import
com.clx.performance.service.OrderGoodsService
;
...
...
@@ -28,7 +31,7 @@ import org.springframework.beans.BeanUtils;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java
.math.BigDecimal
;
import
java
x.validation.constraints.NotEmpty
;
import
java.util.List
;
import
static
com
.
clx
.
performance
.
enums
.
PerformanceProgressEnum
.
LogType
.
PERFORMANCE_ABNORMAL_REASON
;
...
...
@@ -57,6 +60,8 @@ public class PerformanceSdkFeignController {
private
final
OrderService
orderService
;
@ApiOperation
(
value
=
"货主端取消订单"
,
notes
=
"<br>By:胡宇帆"
)
@PostMapping
(
"/ownCancelOrderPre"
)
...
...
@@ -108,4 +113,12 @@ public class PerformanceSdkFeignController {
}
@ApiOperation
(
value
=
"查询订单相关统计信息"
,
notes
=
"<br>By:刘海泉"
)
@GetMapping
(
"/queryTaskStatisticsInfo"
)
Result
<
BatchOrderStatisticsInfoDTO
>
queryTaskStatisticsInfo
(
@RequestParam
(
"orderNoList"
)
@NotEmpty
(
message
=
"订单编号集合不能为空"
)
List
<
String
>
orderNoList
){
return
Result
.
ok
(
orderService
.
queryTaskStatisticsInfo
(
orderNoList
));
}
}
performance-web/src/main/java/com/clx/performance/controller/temp/TempTraceController.java
浏览文件 @
ebee245f
package
com
.
clx
.
performance
.
controller
.
temp
;
import
com.clx.performance.dto.gd.GdRouteDTO
;
import
com.clx.performance.param.mq.trace.TruckTraceSyncMqParam
;
import
com.clx.performance.esplus.model.TruckLatestPosESPlus
;
import
com.clx.performance.param.mq.trace.TruckTraceSyncMqParam
;
import
com.clx.performance.param.temp.DriverTraceAddParam
;
import
com.clx.performance.param.temp.TruckTraceAddParam
;
import
com.clx.performance.service.trace.TruckTraceMqHandlerService
;
...
...
@@ -20,12 +20,6 @@ import org.springframework.web.bind.annotation.*;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.RestController
;
import
java.math.BigDecimal
;
import
java.util.List
;
...
...
@@ -138,4 +132,16 @@ public class TempTraceController {
}
@ApiOperation
(
value
=
"获取车辆最新位置信息"
,
notes
=
"<br>By:姜武杰"
)
@GetMapping
(
"/calDistance"
)
public
Result
<
Integer
>
getTruckLatestPos
(
@RequestParam
(
"l1"
)
@NotNull
(
message
=
"当前经度不能为空"
)
BigDecimal
l1
,
@RequestParam
(
"l2"
)
@NotNull
(
message
=
"当前纬度不能为空"
)
BigDecimal
l2
,
@RequestParam
(
"l3"
)
@NotNull
(
message
=
"货源经度不能为空"
)
BigDecimal
l3
,
@RequestParam
(
"l4"
)
@NotNull
(
message
=
"货源纬度不能为空"
)
BigDecimal
l4
)
{
return
Result
.
ok
(
gdService
.
getShortestRouteDistance
(
l1
,
l2
,
l3
,
l4
));
}
}
performance-web/src/main/java/com/clx/performance/extranal/user/OrderService.java
浏览文件 @
ebee245f
package
com
.
clx
.
performance
.
extranal
.
user
;
import
com.clx.open.sdk.request.dto.BatchOrderStatisticsInfoDTO
;
import
com.clx.open.sdk.request.dto.OrderStatisticsInfoDTO
;
import
com.clx.order.vo.feign.FeignOrderInfoVO
;
import
com.msl.common.base.Optional
;
import
org.springframework.web.bind.annotation.RequestParam
;
...
...
@@ -19,4 +21,5 @@ public interface OrderService {
Optional
<
Map
<
String
,
FeignOrderInfoVO
>>
queryListOrderByOrderNoList
(
List
<
String
>
orderNoList
);
BatchOrderStatisticsInfoDTO
queryTaskStatisticsInfo
(
List
<
String
>
orderNoList
);
}
performance-web/src/main/java/com/clx/performance/extranal/user/impl/OrderServiceImpl.java
浏览文件 @
ebee245f
package
com
.
clx
.
performance
.
extranal
.
user
.
impl
;
import
com.clx.open.sdk.request.dto.BatchOrderStatisticsInfoDTO
;
import
com.clx.open.sdk.request.dto.OrderStatisticsInfoDTO
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.vo.feign.FeignOrderInfoVO
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.extranal.user.OrderService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.msl.common.base.Optional
;
import
com.msl.common.result.Result
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Map
;
import
java.math.BigDecimal
;
import
java.util.*
;
@Service
@Slf4j
...
...
@@ -18,6 +28,8 @@ import java.util.Map;
public
class
OrderServiceImpl
implements
OrderService
{
private
final
OrderFeign
orderFeign
;
private
final
OrderGoodsDao
orderGoodsDao
;
private
final
OrderChildDao
orderChildDao
;
@Override
public
Optional
<
FeignOrderInfoVO
>
getOrderInfo
(
String
orderNo
)
{
...
...
@@ -39,4 +51,81 @@ public class OrderServiceImpl implements OrderService {
.
filter
(
Result:
:
succeed
)
.
map
(
Result:
:
getData
);
}
@Override
public
BatchOrderStatisticsInfoDTO
queryTaskStatisticsInfo
(
List
<
String
>
orderNoList
)
{
BatchOrderStatisticsInfoDTO
returnResult
=
new
BatchOrderStatisticsInfoDTO
();
//构建结果集
Map
<
String
,
OrderStatisticsInfoDTO
>
result
=
new
HashMap
<>();
orderNoList
.
forEach
(
item
->{
OrderStatisticsInfoDTO
dto
=
new
OrderStatisticsInfoDTO
();
dto
.
setOrderNo
(
item
);
dto
.
setPendingTruckNum
(
0
);
dto
.
setOrderedTruckNum
(
0
);
dto
.
setNotLoadTruckNum
(
0
);
dto
.
setArriveSendTruckNum
(
0
);
dto
.
setArriveReceiveTruckNum
(
0
);
dto
.
setLoadTruckNum
(
0
);
dto
.
setUnLoadTruckNum
(
0
);
dto
.
setLoadWeight
(
BigDecimal
.
ZERO
);
dto
.
setUnLoadWeight
(
BigDecimal
.
ZERO
);
result
.
put
(
item
,
dto
);
});
List
<
OrderGoods
>
orderGoods
=
orderGoodsDao
.
listInField
(
OrderGoods:
:
getOrderNo
,
orderNoList
);
if
(
CollectionUtils
.
isEmpty
(
orderGoods
)){
returnResult
.
setList
(
new
ArrayList
<>(
result
.
values
()));
return
returnResult
;
}
//计算挂单车数
for
(
OrderGoods
orderGood
:
orderGoods
)
{
OrderStatisticsInfoDTO
dto
=
result
.
get
(
orderGood
.
getOrderNo
());
dto
.
setPendingTruckNum
(
dto
.
getPendingTruckNum
()
+
orderGood
.
getNeedTruckNum
());
result
.
put
(
orderGood
.
getOrderNo
(),
dto
);
}
//计算运单相关统计数据
List
<
OrderChild
>
childList
=
orderChildDao
.
listInField
(
OrderChild:
:
getOrderNo
,
orderNoList
);
if
(
CollectionUtils
.
isEmpty
(
childList
)){
returnResult
.
setList
(
new
ArrayList
<>(
result
.
values
()));
return
returnResult
;
}
for
(
OrderChild
child
:
childList
)
{
OrderStatisticsInfoDTO
dto
=
result
.
get
(
child
.
getOrderNo
());
//取消的排除
if
(
child
.
getStatus
()
>
OrderChildEnum
.
Status
.
COMPLETE
.
getCode
()){
continue
;
}
//未取消的运单 接单数
dto
.
setOrderedTruckNum
(
dto
.
getOrderedTruckNum
()
+
1
);
if
(
child
.
getStatus
()
>=
OrderChildEnum
.
Status
.
CREATED
.
getCode
()
&&
child
.
getStatus
()
<
OrderChildEnum
.
Status
.
LOAD
.
getCode
()
){
dto
.
setNotLoadTruckNum
(
dto
.
getNotLoadTruckNum
()
+
1
);
}
//到达货源地
if
(
Objects
.
equals
(
child
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
())){
dto
.
setArriveSendTruckNum
(
dto
.
getArriveSendTruckNum
()
+
1
);
}
//到达卸车地
if
(
Objects
.
equals
(
child
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
())){
dto
.
setArriveReceiveTruckNum
(
dto
.
getArriveReceiveTruckNum
()
+
1
);
}
//已装车
if
(
child
.
getStatus
()
>=
OrderChildEnum
.
Status
.
LOAD
.
getCode
()){
dto
.
setLoadTruckNum
(
dto
.
getLoadTruckNum
()
+
1
);
dto
.
setLoadWeight
(
dto
.
getLoadWeight
().
add
(
child
.
getLoadNet
()));
}
//已卸车
if
(
child
.
getStatus
()
>=
OrderChildEnum
.
Status
.
UNLOAD
.
getCode
()){
dto
.
setUnLoadTruckNum
(
dto
.
getUnLoadTruckNum
()
+
1
);
dto
.
setUnLoadWeight
(
dto
.
getUnLoadWeight
().
add
(
child
.
getUnloadNet
()));
}
result
.
put
(
child
.
getOrderNo
(),
dto
);
}
returnResult
.
setList
(
new
ArrayList
<>(
result
.
values
()));
return
returnResult
;
}
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
ebee245f
...
...
@@ -2981,15 +2981,15 @@ public class OrderChildServiceImpl implements OrderChildService {
* @Param [truckNo, beginLongitude, beginLatitude, endLongitude, endLatitude]
* @return
**/
public
GdRouteDTO
getGdRoute
(
String
truckNo
,
BigDecimal
beginLongitude
,
BigDecimal
beginLatitude
,
public
Integer
getGdRoute
(
String
truckNo
,
BigDecimal
beginLongitude
,
BigDecimal
beginLatitude
,
BigDecimal
endLongitude
,
BigDecimal
endLatitude
)
{
List
<
GdRouteDTO
>
gdRouteDTOS
=
null
;
Integer
distance
=
null
;
try
{
gdRouteDTOS
=
gdService
.
getRout
e
(
beginLongitude
,
beginLatitude
,
endLongitude
,
endLatitude
);
distance
=
gdService
.
getShortestRouteDistanc
e
(
beginLongitude
,
beginLatitude
,
endLongitude
,
endLatitude
);
}
catch
(
ServiceSystemException
e
)
{
log
.
info
(
"orderChildExpect==高德地图调用失败,车辆{},异常原因{}"
,
truckNo
,
e
.
getMessage
());
}
return
CollectionUtils
.
isNotEmpty
(
gdRouteDTOS
)
?
gdRouteDTOS
.
get
(
0
)
:
null
;
return
distance
;
}
@Override
...
...
@@ -3198,10 +3198,9 @@ public class OrderChildServiceImpl implements OrderChildService {
if
(
longitude
==
null
||
latitude
==
null
)
{
return
new
OrderChildLoadRangeCheckResultVO
(
OrderChildEnum
.
NeedAlertEnum
.
FAIL
.
getCode
(),
TRUCK_LOCATION_ERROR
.
getCode
(),
TRUCK_LOCATION_ERROR
.
getMsg
());
}
List
<
GdRouteDTO
>
route
=
gdService
.
getRoute
(
longitude
,
latitude
,
sendLongitude
,
sendLatitude
);
if
(
CollectionUtils
.
isNotEmpty
(
route
))
{
GdRouteDTO
gdRouteDTO
=
route
.
get
(
0
);
Integer
distance
=
gdRouteDTO
.
getDistance
();
Integer
distance
=
gdService
.
getShortestRouteDistance
(
longitude
,
latitude
,
sendLongitude
,
sendLatitude
);
if
(
distance
!=
null
)
{
log
.
info
(
"truckNo:{} 高德计算距离:{} curr:{},{}, 货源地:{},{}"
,
orderChild
.
getTruckNo
(),
distance
,
longitude
,
latitude
,
sendLongitude
,
sendLatitude
);
if
(
distance
>
config
.
allowUploadDistanceMeter
())
{
// 装车位置 超限
return
new
OrderChildLoadRangeCheckResultVO
(
OrderChildEnum
.
NeedAlertEnum
.
FAIL
.
getCode
(),
TRUCK_LOCATION_OUT_OF_SEND_RANGE
.
getCode
(),
String
.
format
(
TRUCK_LOCATION_OUT_OF_SEND_RANGE
.
getMsg
(),
config
.
getAllowUploadDistance
()));
...
...
@@ -3262,14 +3261,12 @@ public class OrderChildServiceImpl implements OrderChildService {
BigDecimal
siteLatitudeY
=
orderGoods
.
getSendLatitude
();
//调高德获取距离
if
(
Objects
.
nonNull
(
truckLongitudeX
)
&&
Objects
.
nonNull
(
truckLatitudeY
))
{
GdRouteDTO
rout
e
=
getGdRoute
(
truckNo
,
orderGoods
.
getSendLongitude
(),
orderGoods
.
getSendLatitude
(),
siteLongitudeX
,
Integer
distanc
e
=
getGdRoute
(
truckNo
,
orderGoods
.
getSendLongitude
(),
orderGoods
.
getSendLatitude
(),
siteLongitudeX
,
siteLatitudeY
);
if
(
rout
e
==
null
)
{
if
(
distanc
e
==
null
)
{
log
.
error
(
"高德获取卡车与货源地位置距离失败,orderGoodsNo:{},orderChildNo:{},truckNo:{}"
,
orderGoodsNo
,
childNo
,
truckNo
);
return
;
}
//距离
Integer
distance
=
route
.
getDistance
();
// 超出货源地+通知触发距离
if
(
distance
>
driverNoticeConfigVO
.
getNoticeTriggerDistanceMeter
())
{
if
(
Objects
.
equals
(
child
.
getExitNoticeStatus
(),
OrderChildEnum
.
ExitNoticeStatus
.
NOT_NOTIFIED
.
getCode
())
...
...
@@ -3292,8 +3289,8 @@ public class OrderChildServiceImpl implements OrderChildService {
child
.
setEnterExitSendStatus
(
OrderChildEnum
.
EnterExitSendStatus
.
DRIVE_OUT
.
getCode
());
orderChildDao
.
updateEntityByKey
(
child
);
}
}
else
{
}
else
if
(
distance
<=
1000
){
// 这里的1km的距离是产品需求写死的,不使用通知配置范围
// 未超出货源地+通知触发距离
// 驶入货源地+通知触发距离范围内了
if
(
Objects
.
equals
(
child
.
getEnterExitSendStatus
(),
OrderChildEnum
.
EnterExitSendStatus
.
DRIVE_OUT
.
getCode
()))
{
...
...
performance-web/src/main/java/com/clx/performance/utils/gd/GdService.java
浏览文件 @
ebee245f
...
...
@@ -9,14 +9,12 @@ import com.msl.common.enums.ResultCodeEnum;
import
com.msl.common.exception.ServiceSystemException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.dromara.easyes.common.utils.CollectionUtils
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.*
;
/**
* @Author: aiqingguo
...
...
@@ -47,6 +45,26 @@ public class GdService {
return
getRoute
(
gaodeKey
,
originLongitude
,
originLatitude
,
destinationLongitude
,
destinationLatitude
);
}
/**
* 获取最短距离路径
* @param originLongitude
* @param originLatitude
* @param destinationLongitude
* @param destinationLatitude
* @return
*/
public
Integer
getShortestRouteDistance
(
BigDecimal
originLongitude
,
BigDecimal
originLatitude
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
)
{
List
<
GdRouteDTO
>
routeList
=
getRoute
(
gaodeKey
,
originLongitude
,
originLatitude
,
destinationLongitude
,
destinationLatitude
);
if
(
CollectionUtils
.
isNotEmpty
(
routeList
))
{
Optional
<
GdRouteDTO
>
minRoute
=
routeList
.
stream
()
.
min
((
r1
,
r2
)
->
Double
.
compare
(
r1
.
getDistance
(),
r2
.
getDistance
()));
return
minRoute
.
map
(
GdRouteDTO:
:
getDistance
).
orElse
(
null
);
}
return
null
;
}
public
static
List
<
GdRouteDTO
>
getRoute
(
String
key
,
BigDecimal
originLongitude
,
BigDecimal
originLatitude
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
)
{
//log.info("高德线路规划开始");
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论