Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
8f770e79
提交
8f770e79
authored
10月 12, 2023
作者:
liuhaiquan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
提交全量运单监控部分代码
上级
d7a39aa6
显示空白字符变更
内嵌
并排
正在显示
18 个修改的文件
包含
1438 行增加
和
298 行删除
+1438
-298
PageMonitorOrderChildQCParam.java
...lx/performance/param/pc/PageMonitorOrderChildQCParam.java
+31
-0
OutputMonitorOrderChildVO.java
.../com/clx/performance/vo/pc/OutputMonitorOrderChildVO.java
+79
-0
RedisConstants.java
...ain/java/com/clx/performance/constant/RedisConstants.java
+3
-0
CarrierOrderChildController.java
...erformance/controller/pc/CarrierOrderChildController.java
+11
-4
GoodsOrderMapController.java
...lx/performance/controller/pc/GoodsOrderMapController.java
+6
-0
OrderChildDao.java
.../src/main/java/com/clx/performance/dao/OrderChildDao.java
+8
-0
OrderChildDaoImpl.java
.../java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
+34
-0
OrderChildExpectDTO.java
...ain/java/com/clx/performance/dto/OrderChildExpectDTO.java
+26
-0
GdPosDTO.java
...eb/src/main/java/com/clx/performance/dto/gd/GdPosDTO.java
+24
-0
GdRouteDTO.java
.../src/main/java/com/clx/performance/dto/gd/GdRouteDTO.java
+33
-0
OrderChildExpectTimeJob.java
...java/com/clx/performance/job/OrderChildExpectTimeJob.java
+35
-0
OrderChild.java
...b/src/main/java/com/clx/performance/model/OrderChild.java
+4
-0
GoodsOrderMapService.java
...ava/com/clx/performance/service/GoodsOrderMapService.java
+2
-0
OrderChildService.java
...n/java/com/clx/performance/service/OrderChildService.java
+7
-0
GoodsOrderMapServiceImpl.java
...lx/performance/service/impl/GoodsOrderMapServiceImpl.java
+9
-0
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+663
-290
HttpUtils.java
...eb/src/main/java/com/clx/performance/utils/HttpUtils.java
+104
-4
GdService.java
...src/main/java/com/clx/performance/utils/gd/GdService.java
+359
-0
没有找到文件。
performance-api/src/main/java/com/clx/performance/param/pc/PageMonitorOrderChildQCParam.java
0 → 100644
浏览文件 @
8f770e79
package
com
.
clx
.
performance
.
param
.
pc
;
import
com.msl.common.base.PageParam
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
PageMonitorOrderChildQCParam
extends
PageParam
{
@ApiModelProperty
(
value
=
"发货地址"
)
private
Integer
sendAddressId
;
@ApiModelProperty
(
value
=
"车牌号"
)
private
String
truckNo
;
@NotNull
(
message
=
"运单状态不能为空"
)
@ApiModelProperty
(
value
=
"运单状态 10:已接单 20:支付 30:前往货源地 40:到达货源地 50:装货成功 60:前往目的地 70:到达目的地 80:收货待确认 90:待结算 100:完成 110:司机取消 111:承运取消 112:货主取消 "
)
private
List
<
Integer
>
status
;
}
performance-api/src/main/java/com/clx/performance/vo/pc/OutputMonitorOrderChildVO.java
0 → 100644
浏览文件 @
8f770e79
package
com
.
clx
.
performance
.
vo
.
pc
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
java.math.BigDecimal
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
OutputMonitorOrderChildVO
{
@ApiModelProperty
(
value
=
"发货地址"
)
private
String
sendAddress
;
@ApiModelProperty
(
value
=
"发货地址Id"
)
private
Integer
sendAddressId
;
@ApiModelProperty
(
value
=
"状态 运单状态 10:已接单 20:支付 30:前往货源地 40:到达货源地 50:装货成功 60:前往目的地 70:到达目的地 80:收货待确认 90:待结算 100:完成 110:司机取消 111:承运取消 112:货主取消 "
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"预计到货源地时间"
)
private
String
expectArriveTime
;
@ApiModelProperty
(
value
=
"预计到货源地时间-实时"
)
private
String
expectArriveTimeRealTime
;
@ApiModelProperty
(
value
=
"预计到货源地趋势 0 前进 1 后退"
)
private
Integer
arriveTrend
;
@ApiModelProperty
(
value
=
"预计到收货地时间"
)
private
String
expectReceiveTime
;
@ApiModelProperty
(
value
=
"预计到收货地时间-实时"
)
private
String
expectReceiveTimeRealTime
;
@ApiModelProperty
(
value
=
"预计到收货地趋势 0 前进 1 后退"
)
private
Integer
receiveTrend
;
@ApiModelProperty
(
value
=
"预计运输时间"
)
private
String
expectTransportTime
;
@ApiModelProperty
(
value
=
"装车预警 0 不预警 1 预警"
)
private
Integer
loadWarning
;
@ApiModelProperty
(
value
=
"货源地预警 0 不预警 1 预警"
)
private
Integer
arriveWarning
;
@ApiModelProperty
(
value
=
"收货地预警 0 不预警 1 预警"
)
private
Integer
receiveWarning
;
@ApiModelProperty
(
value
=
"车牌号"
)
private
String
truckNo
;
@ApiModelProperty
(
value
=
"司机姓名"
)
private
String
driverName
;
@ApiModelProperty
(
value
=
"司机手机号"
)
private
String
driverMobile
;
@ApiModelProperty
(
value
=
"装车吨数"
)
private
BigDecimal
loadNet
;
@ApiModelProperty
(
value
=
"接单时间"
)
private
String
payTime
;
@ApiModelProperty
(
value
=
"装车时间"
)
private
String
loadTime
;
@ApiModelProperty
(
value
=
"运单号"
)
private
String
childNo
;
}
performance-web/src/main/java/com/clx/performance/constant/RedisConstants.java
浏览文件 @
8f770e79
...
@@ -8,6 +8,9 @@ public class RedisConstants {
...
@@ -8,6 +8,9 @@ public class RedisConstants {
public
static
final
String
ORDER_GOODS_ID_GENERATE
=
"clx-performance:orderGoodsId:generate"
;
public
static
final
String
ORDER_GOODS_ID_GENERATE
=
"clx-performance:orderGoodsId:generate"
;
public
static
final
String
ZJXL_TRUCK_TRACE_LIST
=
"clx-performance:zjxl_truck_trace_list:"
;
public
static
final
String
ZJXL_TRUCK_TRACE_LIST
=
"clx-performance:zjxl_truck_trace_list:"
;
public
static
final
String
ORDER_CHILD_EXPECT_TIME_DATA
=
"clx-performance:order_child_expect_time_data:"
;
public
static
final
String
ORDER_CHILD_EXPECT_TIME_DATA_KEY_MAP
=
"clx-performance:order_child_expect_time_data_key_map:"
;
public
static
final
String
ZJXL_LAST_PULL_TRUCK
=
"clx-performance:zjxl_last_time_pull_truck:"
;
public
static
final
String
ZJXL_LAST_PULL_TRUCK
=
"clx-performance:zjxl_last_time_pull_truck:"
;
...
...
performance-web/src/main/java/com/clx/performance/controller/pc/CarrierOrderChildController.java
浏览文件 @
8f770e79
...
@@ -2,14 +2,12 @@ package com.clx.performance.controller.pc;
...
@@ -2,14 +2,12 @@ package com.clx.performance.controller.pc;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.param.pc.PageMonitorOrderChildQCParam
;
import
com.clx.performance.param.pc.OrderChildCarrierCancelParam
;
import
com.clx.performance.param.pc.OrderChildCarrierCancelParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.service.OrderChildPoundAuditService
;
import
com.clx.performance.service.OrderChildPoundAuditService
;
import
com.clx.performance.service.OrderChildService
;
import
com.clx.performance.service.OrderChildService
;
import
com.clx.performance.vo.pc.CarrierOrderChildDetailVO
;
import
com.clx.performance.vo.pc.*
;
import
com.clx.performance.vo.pc.OrderChildBussInfoVO
;
import
com.clx.performance.vo.pc.OrderChildStatusVO
;
import
com.clx.performance.vo.pc.PageCarrierOrderChildVO
;
import
com.msl.common.base.PageData
;
import
com.msl.common.base.PageData
;
import
com.msl.common.convertor.aspect.UnitCovert
;
import
com.msl.common.convertor.aspect.UnitCovert
;
import
com.msl.common.result.Result
;
import
com.msl.common.result.Result
;
...
@@ -87,4 +85,13 @@ public class CarrierOrderChildController {
...
@@ -87,4 +85,13 @@ public class CarrierOrderChildController {
return
Result
.
ok
(
orderChildService
.
getOrderChildBussInfo
(
truckNo
));
return
Result
.
ok
(
orderChildService
.
getOrderChildBussInfo
(
truckNo
));
}
}
@ApiOperation
(
value
=
"全量运单监控预警列表"
,
notes
=
"<br>By:刘海泉"
)
@RequestMapping
(
value
=
"/getMonitorOrerChildListsByParam"
,
method
=
RequestMethod
.
POST
)
public
Result
<
PageData
<
OutputMonitorOrderChildVO
>>
getMonitorOrerChildListsByParam
(
@RequestBody
PageMonitorOrderChildQCParam
param
)
{
IPage
<
OutputMonitorOrderChildVO
>
page
=
orderChildService
.
getMonitorOrerChildListsByParam
(
param
);
return
Result
.
page
(
page
.
getRecords
(),
page
.
getTotal
(),
page
.
getPages
());
}
}
}
performance-web/src/main/java/com/clx/performance/controller/pc/GoodsOrderMapController.java
浏览文件 @
8f770e79
...
@@ -47,6 +47,12 @@ public class GoodsOrderMapController {
...
@@ -47,6 +47,12 @@ public class GoodsOrderMapController {
}
}
@ApiOperation
(
value
=
"获取货单车辆"
,
notes
=
"<br>By:刘海泉"
)
@GetMapping
(
"/getPlatformTruckCoordinate"
)
public
Result
<
List
<
String
>>
getOrderChildTruckByOrderNo
(
String
orderNo
)
{
return
Result
.
ok
(
goodsOrderMapService
.
getOrderChildTruckByOrderNo
(
orderNo
));
}
...
...
performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java
浏览文件 @
8f770e79
package
com
.
clx
.
performance
.
dao
;
package
com
.
clx
.
performance
.
dao
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.mapper.OrderChildMapper
;
import
com.clx.performance.mapper.OrderChildMapper
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.param.app.PageOrderChildOfDriverParam
;
import
com.clx.performance.param.app.PageOrderChildOfDriverParam
;
import
com.clx.performance.param.app.PageOrderChildOfDriverSearchParam
;
import
com.clx.performance.param.app.PageOrderChildOfDriverSearchParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageMonitorOrderChildQCParam
;
import
com.clx.performance.param.pc.PagePoundAuditParam
;
import
com.clx.performance.param.pc.PagePoundAuditParam
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.pc.PageCarrierOrderChildVO
;
import
com.clx.performance.vo.pc.PageCarrierOrderChildVO
;
...
@@ -56,4 +58,10 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
...
@@ -56,4 +58,10 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
Integer
getOrderChildTotalByUserNo
(
Long
userNo
);
Integer
getOrderChildTotalByUserNo
(
Long
userNo
);
List
<
OrderChild
>
getOrderChildBussInfo
(
String
truckNo
);
List
<
OrderChild
>
getOrderChildBussInfo
(
String
truckNo
);
Page
<
OrderChild
>
pageOrderChild
(
PageMonitorOrderChildQCParam
param
);
List
<
OrderChild
>
listOrderChild
(
List
<
Integer
>
status
);
List
<
OrderChild
>
getOrderChildByOrderNo
(
String
orderNo
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
浏览文件 @
8f770e79
...
@@ -10,16 +10,19 @@ import com.clx.performance.model.OrderChild;
...
@@ -10,16 +10,19 @@ import com.clx.performance.model.OrderChild;
import
com.clx.performance.param.app.PageOrderChildOfDriverParam
;
import
com.clx.performance.param.app.PageOrderChildOfDriverParam
;
import
com.clx.performance.param.app.PageOrderChildOfDriverSearchParam
;
import
com.clx.performance.param.app.PageOrderChildOfDriverSearchParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageMonitorOrderChildQCParam
;
import
com.clx.performance.param.pc.PagePoundAuditParam
;
import
com.clx.performance.param.pc.PagePoundAuditParam
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.pc.PageCarrierOrderChildVO
;
import
com.clx.performance.vo.pc.PageCarrierOrderChildVO
;
import
com.clx.performance.vo.pc.PageOrderChildPoundAuditVO
;
import
com.clx.performance.vo.pc.PageOrderChildPoundAuditVO
;
import
com.msl.common.base.Optional
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
/**
/**
* @Author: aiqinguo
* @Author: aiqinguo
...
@@ -198,6 +201,37 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
...
@@ -198,6 +201,37 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return
baseMapper
.
selectCount
(
query
).
intValue
();
return
baseMapper
.
selectCount
(
query
).
intValue
();
}
}
@Override
public
Page
<
OrderChild
>
pageOrderChild
(
PageMonitorOrderChildQCParam
param
)
{
LambdaQueryWrapper
<
OrderChild
>
query
=
new
LambdaQueryWrapper
();
if
(
StringUtils
.
isNotBlank
(
param
.
getTruckNo
())){
query
.
eq
(
OrderChild
::
getTruckNo
,
param
.
getTruckNo
());
}
if
(
Objects
.
nonNull
(
param
.
getSendAddressId
())){
query
.
eq
(
OrderChild
::
getSendAddressId
,
param
.
getSendAddressId
());
}
query
.
in
(
OrderChild
::
getStatus
,
param
.
getStatus
());
return
baseMapper
.
selectPage
(
Page
.
of
(
param
.
getPage
(),
param
.
getPageSize
()),
query
);
}
@Override
public
List
<
OrderChild
>
getOrderChildByOrderNo
(
String
orderNo
)
{
LambdaQueryWrapper
<
OrderChild
>
query
=
new
LambdaQueryWrapper
();
query
.
in
(
OrderChild
::
getOrderNo
,
orderNo
);
return
baseMapper
.
selectList
(
query
);
}
@Override
public
List
<
OrderChild
>
listOrderChild
(
List
<
Integer
>
status
)
{
LambdaQueryWrapper
<
OrderChild
>
query
=
new
LambdaQueryWrapper
();
query
.
in
(
OrderChild
::
getStatus
,
status
);
return
baseMapper
.
selectList
(
query
);
}
@Override
@Override
public
List
<
OrderChild
>
getOrderChildBussInfo
(
String
truckNo
)
{
public
List
<
OrderChild
>
getOrderChildBussInfo
(
String
truckNo
)
{
LambdaQueryWrapper
<
OrderChild
>
query
=
new
LambdaQueryWrapper
();
LambdaQueryWrapper
<
OrderChild
>
query
=
new
LambdaQueryWrapper
();
...
...
performance-web/src/main/java/com/clx/performance/dto/OrderChildExpectDTO.java
0 → 100644
浏览文件 @
8f770e79
package
com
.
clx
.
performance
.
dto
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
OrderChildExpectDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
childNo
;
//子订单编号
private
LocalDateTime
expectArriveTime
;
//预计到达货源地时间
private
Integer
expectArriveTimeSecond
;
//预计到达货源地时间
private
LocalDateTime
expectReceiveTime
;
//预计到达目的地时间
private
Integer
expectReceiveTimeSecond
;
//预计到达目的地时间
private
Integer
expectTransportTimeSecond
;
//预计运输时间
}
performance-web/src/main/java/com/clx/performance/dto/gd/GdPosDTO.java
0 → 100644
浏览文件 @
8f770e79
package
com
.
clx
.
performance
.
dto
.
gd
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* @Author: aiqingguo
* @Description:
* @Date: 2023/2/28 12:00
* @Version: 1.0
*/
@Data
public
class
GdPosDTO
{
@ApiModelProperty
(
value
=
"经度"
,
example
=
"116.0000000000"
)
private
BigDecimal
longitude
;
@ApiModelProperty
(
value
=
"纬度"
,
example
=
"39.0000000000"
)
private
BigDecimal
latitude
;
@ApiModelProperty
(
value
=
"耗时(秒)"
,
example
=
"278"
)
private
Integer
duration
;
}
performance-web/src/main/java/com/clx/performance/dto/gd/GdRouteDTO.java
0 → 100644
浏览文件 @
8f770e79
package
com
.
clx
.
performance
.
dto
.
gd
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
java.util.List
;
/**
* @Author: aiqingguo
* @Description: 收发货地址线路
* @Date: 2023/2/28 11:02
* @Version: 1.0
*/
@Getter
@Setter
@ToString
@NoArgsConstructor
@ApiModel
(
description
=
"高德线路规划"
)
public
class
GdRouteDTO
{
@ApiModelProperty
(
value
=
"距离(m)"
,
example
=
"1"
)
private
Integer
distance
;
@ApiModelProperty
(
value
=
"时间s"
,
example
=
"1"
)
private
Integer
duration
;
@ApiModelProperty
(
value
=
"线路轨迹"
)
private
List
<
GdPosDTO
>
posList
;
}
performance-web/src/main/java/com/clx/performance/job/OrderChildExpectTimeJob.java
0 → 100644
浏览文件 @
8f770e79
package
com
.
clx
.
performance
.
job
;
import
com.clx.performance.service.OrderChildService
;
import
com.msl.common.job.JobLog
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.exception.ExceptionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Slf4j
@Component
public
class
OrderChildExpectTimeJob
{
@Autowired
OrderChildService
orderChildService
;
/**
* 定时任务计算运单实时位置耗时信息
*/
@XxlJob
(
"orderChildExpect"
)
public
void
orderChildExpect
()
{
try
{
log
.
info
(
"开始实时计算进行中的运单的实时位置计算任务================================================"
);
orderChildService
.
orderChildExpect
();
log
.
info
(
"结束实时计算进行中的运单的实时位置计算任务================================================"
);
}
catch
(
Exception
e
)
{
log
.
warn
(
"定时任务计算进行中的运单的实时位置失败,异常原因:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
JobLog
.
error
(
"定时任务计算进行中的运单的实时位置失败,异常原因====================="
,
e
);
}
}
}
performance-web/src/main/java/com/clx/performance/model/OrderChild.java
浏览文件 @
8f770e79
...
@@ -77,6 +77,10 @@ public class OrderChild implements HasKey<Integer> {
...
@@ -77,6 +77,10 @@ public class OrderChild implements HasKey<Integer> {
private
LocalDateTime
settleTime
;
//结算时间
private
LocalDateTime
settleTime
;
//结算时间
private
LocalDateTime
cancelTime
;
//取消时间
private
LocalDateTime
cancelTime
;
//取消时间
private
LocalDateTime
finishTime
;
//完成时间
private
LocalDateTime
finishTime
;
//完成时间
private
LocalDateTime
expectSendTime
;
//预计到达货源地时间
private
LocalDateTime
expectReceiveTime
;
//预计到达目的地时间
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
modifiedTime
;
//修改时间
private
LocalDateTime
modifiedTime
;
//修改时间
...
...
performance-web/src/main/java/com/clx/performance/service/GoodsOrderMapService.java
浏览文件 @
8f770e79
...
@@ -11,4 +11,6 @@ public interface GoodsOrderMapService {
...
@@ -11,4 +11,6 @@ public interface GoodsOrderMapService {
List
<
GoodsOrderSendAddressSelect
>
getSendAddressSelect
(
GoodsOrderMapParam
param
);
List
<
GoodsOrderSendAddressSelect
>
getSendAddressSelect
(
GoodsOrderMapParam
param
);
List
<
TruckCoordinateVO
>
getPlatformTruckCoordinate
();
List
<
TruckCoordinateVO
>
getPlatformTruckCoordinate
();
List
<
String
>
getOrderChildTruckByOrderNo
(
String
orderNo
);
}
}
performance-web/src/main/java/com/clx/performance/service/OrderChildService.java
浏览文件 @
8f770e79
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.clx.performance.param.app.*
;
import
com.clx.performance.param.app.*
;
import
com.clx.performance.param.pc.OrderChildCarrierCancelParam
;
import
com.clx.performance.param.pc.OrderChildCarrierCancelParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageMonitorOrderChildQCParam
;
import
com.clx.performance.param.pc.PagePoundAuditParam
;
import
com.clx.performance.param.pc.PagePoundAuditParam
;
import
com.clx.performance.vo.app.*
;
import
com.clx.performance.vo.app.*
;
import
com.clx.performance.vo.pc.*
;
import
com.clx.performance.vo.pc.*
;
...
@@ -61,4 +62,10 @@ public interface OrderChildService {
...
@@ -61,4 +62,10 @@ public interface OrderChildService {
Integer
getOrderChildTotalByUserNo
(
Long
userNo
);
Integer
getOrderChildTotalByUserNo
(
Long
userNo
);
OrderChildBussInfoVO
getOrderChildBussInfo
(
String
truckNo
);
OrderChildBussInfoVO
getOrderChildBussInfo
(
String
truckNo
);
IPage
<
OutputMonitorOrderChildVO
>
getMonitorOrerChildListsByParam
(
PageMonitorOrderChildQCParam
param
);
List
<
String
>
getOrderChildTruckByOrderNo
(
String
orderNo
);
void
orderChildExpect
();
}
}
performance-web/src/main/java/com/clx/performance/service/impl/GoodsOrderMapServiceImpl.java
浏览文件 @
8f770e79
...
@@ -7,6 +7,7 @@ import com.clx.performance.dto.zjxl.TruckCoordinateDTO;
...
@@ -7,6 +7,7 @@ import com.clx.performance.dto.zjxl.TruckCoordinateDTO;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.param.pc.GoodsOrderMapParam
;
import
com.clx.performance.param.pc.GoodsOrderMapParam
;
import
com.clx.performance.service.GoodsOrderMapService
;
import
com.clx.performance.service.GoodsOrderMapService
;
import
com.clx.performance.service.OrderChildService
;
import
com.clx.performance.service.TruckService
;
import
com.clx.performance.service.TruckService
;
import
com.clx.performance.vo.pc.Freight
;
import
com.clx.performance.vo.pc.Freight
;
import
com.clx.performance.vo.pc.GoodsOrderSendAddressSelect
;
import
com.clx.performance.vo.pc.GoodsOrderSendAddressSelect
;
...
@@ -40,6 +41,9 @@ public class GoodsOrderMapServiceImpl implements GoodsOrderMapService {
...
@@ -40,6 +41,9 @@ public class GoodsOrderMapServiceImpl implements GoodsOrderMapService {
@Autowired
@Autowired
TruckService
truckService
;
TruckService
truckService
;
@Autowired
OrderChildService
orderChildService
;
@Autowired
(
required
=
false
)
@Autowired
(
required
=
false
)
UserClxFeign
userClxFeign
;
UserClxFeign
userClxFeign
;
...
@@ -75,6 +79,11 @@ public class GoodsOrderMapServiceImpl implements GoodsOrderMapService {
...
@@ -75,6 +79,11 @@ public class GoodsOrderMapServiceImpl implements GoodsOrderMapService {
return
values
;
return
values
;
}
}
@Override
public
List
<
String
>
getOrderChildTruckByOrderNo
(
String
orderNo
)
{
return
orderChildService
.
getOrderChildTruckByOrderNo
(
orderNo
);
}
@Override
@Override
public
List
<
TruckCoordinateVO
>
getPlatformTruckCoordinate
()
{
public
List
<
TruckCoordinateVO
>
getPlatformTruckCoordinate
()
{
List
<
TruckCoordinateVO
>
result
=
new
ArrayList
<>();
List
<
TruckCoordinateVO
>
result
=
new
ArrayList
<>();
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
8f770e79
...
@@ -5,8 +5,12 @@ import com.clx.order.enums.OrderEnum;
...
@@ -5,8 +5,12 @@ import com.clx.order.enums.OrderEnum;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.vo.feign.FeignAddressVO
;
import
com.clx.order.vo.feign.FeignAddressVO
;
import
com.clx.order.vo.feign.FeignOrderInfoVO
;
import
com.clx.order.vo.feign.FeignOrderInfoVO
;
import
com.clx.performance.constant.RedisConstants
;
import
com.clx.performance.constant.RedissonConstants
;
import
com.clx.performance.constant.RedissonConstants
;
import
com.clx.performance.dao.*
;
import
com.clx.performance.dao.*
;
import
com.clx.performance.dto.OrderChildExpectDTO
;
import
com.clx.performance.dto.gd.GdRouteDTO
;
import
com.clx.performance.dto.zjxl.TruckTraceDTO
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.extranal.user.AddressService
;
import
com.clx.performance.extranal.user.AddressService
;
import
com.clx.performance.extranal.user.DriverService
;
import
com.clx.performance.extranal.user.DriverService
;
...
@@ -15,12 +19,14 @@ import com.clx.performance.model.*;
...
@@ -15,12 +19,14 @@ import com.clx.performance.model.*;
import
com.clx.performance.param.app.*
;
import
com.clx.performance.param.app.*
;
import
com.clx.performance.param.pc.OrderChildCarrierCancelParam
;
import
com.clx.performance.param.pc.OrderChildCarrierCancelParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageMonitorOrderChildQCParam
;
import
com.clx.performance.param.pc.PagePoundAuditParam
;
import
com.clx.performance.param.pc.PagePoundAuditParam
;
import
com.clx.performance.service.OrderChildLogService
;
import
com.clx.performance.service.OrderChildLogService
;
import
com.clx.performance.service.OrderChildPoundLogService
;
import
com.clx.performance.service.OrderChildPoundLogService
;
import
com.clx.performance.service.OrderChildService
;
import
com.clx.performance.service.OrderChildService
;
import
com.clx.performance.service.OrderGoodsService
;
import
com.clx.performance.service.OrderGoodsService
;
import
com.clx.performance.struct.*
;
import
com.clx.performance.struct.*
;
import
com.clx.performance.utils.gd.GdService
;
import
com.clx.performance.utils.spring.ApplicationContextUtils
;
import
com.clx.performance.utils.spring.ApplicationContextUtils
;
import
com.clx.performance.vo.app.*
;
import
com.clx.performance.vo.app.*
;
import
com.clx.performance.vo.pc.*
;
import
com.clx.performance.vo.pc.*
;
...
@@ -40,15 +46,14 @@ import org.apache.commons.collections4.CollectionUtils;
...
@@ -40,15 +46,14 @@ import org.apache.commons.collections4.CollectionUtils;
import
org.redisson.api.RLock
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.amqp.core.AmqpTemplate
;
import
org.springframework.amqp.core.AmqpTemplate
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.math.RoundingMode
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
import
java.util.function.Supplier
;
import
java.util.function.Supplier
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -59,26 +64,22 @@ import java.util.stream.Collectors;
...
@@ -59,26 +64,22 @@ import java.util.stream.Collectors;
* @Date: 2023/09/18 11:34:50
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
* @Version: 1.0
*/
*/
@Slf4j
@Slf4j
@Service
@Service
@AllArgsConstructor
@AllArgsConstructor
public
class
OrderChildServiceImpl
implements
OrderChildService
{
public
class
OrderChildServiceImpl
implements
OrderChildService
{
private
final
AmqpTemplate
rabbitTemplate
;
private
final
AmqpTemplate
rabbitTemplate
;
private
final
RedisTemplate
redisTemplate
;
private
final
OrderGoodsDao
orderGoodsDao
;
private
final
OrderGoodsDao
orderGoodsDao
;
private
final
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
private
final
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
private
final
OrderChildDao
orderChildDao
;
private
final
OrderChildDao
orderChildDao
;
private
final
OrderChildImageDao
orderChildImageDao
;
private
final
OrderChildImageDao
orderChildImageDao
;
private
final
OrderChildPoundAuditDao
orderChildPoundAuditDao
;
private
final
OrderChildPoundAuditDao
orderChildPoundAuditDao
;
private
final
OrderChildLogService
orderChildLogService
;
private
final
OrderChildLogService
orderChildLogService
;
private
final
OrderChildPoundLogService
orderChildPoundLogService
;
private
final
OrderChildPoundLogService
orderChildPoundLogService
;
private
final
AddressService
addressService
;
private
final
AddressService
addressService
;
private
final
OrderService
orderService
;
private
final
OrderService
orderService
;
private
final
GdService
gdService
;
private
final
DriverService
driverService
;
private
final
DriverService
driverService
;
private
final
OrderChildStruct
orderChildStruct
;
private
final
OrderChildStruct
orderChildStruct
;
private
final
OrderGoodsService
orderGoodsService
;
private
final
OrderGoodsService
orderGoodsService
;
...
@@ -86,7 +87,6 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -86,7 +87,6 @@ public class OrderChildServiceImpl implements OrderChildService {
private
final
OrderChildFreightStruct
orderChildFreightStruct
;
private
final
OrderChildFreightStruct
orderChildFreightStruct
;
private
final
AddressStruct
addressStruct
;
private
final
AddressStruct
addressStruct
;
private
final
OrderChildLogStruct
orderChildLogStruct
;
private
final
OrderChildLogStruct
orderChildLogStruct
;
private
final
UniqueOrderNumService
uniqueOrderNumService
;
private
final
UniqueOrderNumService
uniqueOrderNumService
;
private
final
OrderFeign
orderFeign
;
private
final
OrderFeign
orderFeign
;
private
final
RedissonClient
redissonClient
;
private
final
RedissonClient
redissonClient
;
...
@@ -98,8 +98,8 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -98,8 +98,8 @@ public class OrderChildServiceImpl implements OrderChildService {
saveOrderChildOrderUserTruckLock
(
param
);
saveOrderChildOrderUserTruckLock
(
param
);
// 货单锁
// 货单锁
return
saveOrderChildOrderGoodsLock
(
param
,
()->
ApplicationContextUtils
.
getBean
(
OrderChildService
.
class
).
doSaveOrderChild
(
param
));
return
saveOrderChildOrderGoodsLock
(
param
,
()
->
ApplicationContextUtils
.
getBean
(
OrderChildService
.
class
).
doSaveOrderChild
(
param
));
}
}
/**
/**
...
@@ -108,15 +108,16 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -108,15 +108,16 @@ public class OrderChildServiceImpl implements OrderChildService {
public
void
saveOrderChildOrderUserTruckLock
(
OrderChildSaveParam
param
)
{
public
void
saveOrderChildOrderUserTruckLock
(
OrderChildSaveParam
param
)
{
Long
userNo
=
param
.
getDriverUserNo
();
Long
userNo
=
param
.
getDriverUserNo
();
Integer
truckId
=
param
.
getTruckId
();
Integer
truckId
=
param
.
getTruckId
();
RLock
lock
=
redissonClient
.
getLock
(
RedissonConstants
.
ORDER_CHILD_SAVE_USER_TRUCK_LOCK
+
userNo
+
":"
+
truckId
);
RLock
lock
=
redissonClient
.
getLock
(
RedissonConstants
.
ORDER_CHILD_SAVE_USER_TRUCK_LOCK
+
userNo
+
":"
+
truckId
);
boolean
flag
;
boolean
flag
;
try
{
try
{
flag
=
lock
.
tryLock
(
1
,
3
,
TimeUnit
.
SECONDS
);
flag
=
lock
.
tryLock
(
1
,
3
,
TimeUnit
.
SECONDS
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FAIL
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FAIL
);
}
}
if
(!
flag
){
if
(!
flag
)
{
log
.
warn
(
"接单异常,orderGoodsNo:{}, userNo:{}"
,
param
.
getOrderGoodsNo
(),
userNo
);
log
.
warn
(
"接单异常,orderGoodsNo:{}, userNo:{}"
,
param
.
getOrderGoodsNo
(),
userNo
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FREQUENCY_ERROR
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FREQUENCY_ERROR
);
}
}
...
@@ -125,25 +126,27 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -125,25 +126,27 @@ public class OrderChildServiceImpl implements OrderChildService {
/**
/**
* 货单锁
* 货单锁
*/
*/
public
SaveOrderChildVO
saveOrderChildOrderGoodsLock
(
OrderChildSaveParam
param
,
Supplier
<
SaveOrderChildVO
>
function
)
{
public
SaveOrderChildVO
saveOrderChildOrderGoodsLock
(
OrderChildSaveParam
param
,
Supplier
<
SaveOrderChildVO
>
function
)
{
String
orderGoodsNo
=
param
.
getOrderGoodsNo
();
String
orderGoodsNo
=
param
.
getOrderGoodsNo
();
RLock
lock
=
redissonClient
.
getLock
(
RedissonConstants
.
ORDER_CHILD_SAVE_ORDER_GOODS_NO_LOCK
+
orderGoodsNo
);
RLock
lock
=
redissonClient
.
getLock
(
RedissonConstants
.
ORDER_CHILD_SAVE_ORDER_GOODS_NO_LOCK
+
orderGoodsNo
);
try
{
try
{
boolean
flag
=
lock
.
tryLock
(
15
,
30
,
TimeUnit
.
SECONDS
);
boolean
flag
=
lock
.
tryLock
(
15
,
30
,
TimeUnit
.
SECONDS
);
if
(!
flag
){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FAIL
);}
if
(!
flag
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FAIL
);
}
return
function
.
get
();
return
function
.
get
();
}
catch
(
ServiceSystemException
e
)
{
}
catch
(
ServiceSystemException
e
)
{
throw
e
;
throw
e
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FAIL
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FAIL
);
}
finally
{
}
finally
{
if
(
lock
.
isLocked
()
&&
lock
.
isHeldByCurrentThread
())
{
if
(
lock
.
isLocked
()
&&
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
lock
.
unlock
();
}
}
}
}
}
}
@Override
@Override
...
@@ -156,23 +159,27 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -156,23 +159,27 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
childNoGenerate
();
String
childNo
=
childNoGenerate
();
// 查询司机车辆信息
// 查询司机车辆信息
DriverTruckInfoFeignVo
driverTruckInfo
=
driverService
.
getUserDetailInfo
(
param
.
getDriverUserNo
(),
param
.
getTruckId
()).
orElseThrow
(
ResultCodeEnum
.
FAIL
);
DriverTruckInfoFeignVo
driverTruckInfo
=
driverService
.
getUserDetailInfo
(
param
.
getDriverUserNo
(),
param
.
getTruckId
()).
orElseThrow
(
ResultCodeEnum
.
FAIL
);
BigDecimal
truckLoad
=
driverTruckInfo
.
getLoad
();
BigDecimal
truckLoad
=
driverTruckInfo
.
getLoad
();
String
truckNo
=
driverTruckInfo
.
getTruckNo
();
String
truckNo
=
driverTruckInfo
.
getTruckNo
();
LocalDateTime
now
=
LocalDateTime
.
now
();
LocalDateTime
now
=
LocalDateTime
.
now
();
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
param
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
param
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
// 状态验证
// 状态验证
if
(!
Objects
.
equals
(
orderGoods
.
getOrderGoodsStatus
(),
OrderGoodsStatusEnum
.
Status
.
PAYING
.
getCode
())
if
(!
Objects
.
equals
(
orderGoods
.
getOrderGoodsStatus
(),
OrderGoodsStatusEnum
.
Status
.
PAYING
.
getCode
())
&&
&&
!
Objects
.
equals
(
orderGoods
.
getOrderGoodsStatus
(),
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
()))
{
!
Objects
.
equals
(
orderGoods
.
getOrderGoodsStatus
(),
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_INVALID1
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_INVALID1
);
}
}
// // 车型限制
// // 车型限制
// FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderGoods.getOrderNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderGoods.getOrderNo()).orElseThrow
// (PerformanceResultEnum.DATA_NOT_FIND);
// if (StringUtils.isNotBlank(orderInfo.getTruckModelList())){
// if (StringUtils.isNotBlank(orderInfo.getTruckModelList())){
// List<JSONObject> truckModelList = JSON.parseArray(orderInfo.getTruckModelList(), JSONObject.class);
// List<JSONObject> truckModelList = JSON.parseArray(orderInfo.getTruckModelList(), JSONObject.class);
// List<String> truckModelNameList = truckModelList.stream().map(item -> item.getString("truckModelName")).collect(Collectors.toList());
// List<String> truckModelNameList = truckModelList.stream().map(item -> item.getString("truckModelName"))
// .collect(Collectors.toList());
// if (!truckModelNameList.contains(driverTruckInfo.getModel())){
// if (!truckModelNameList.contains(driverTruckInfo.getModel())){
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_TRUCK_MODEL_ERROR);
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_TRUCK_MODEL_ERROR);
// }
// }
...
@@ -181,19 +188,29 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -181,19 +188,29 @@ public class OrderChildServiceImpl implements OrderChildService {
// 定向
// 定向
OrderGoodsTruckBind
bind
=
null
;
OrderGoodsTruckBind
bind
=
null
;
List
<
OrderGoodsTruckBind
>
orderGoodsTruckBindList
=
orderGoodsTruckBindDao
.
getValidByTruckNo
(
truckNo
).
orNull
();
List
<
OrderGoodsTruckBind
>
orderGoodsTruckBindList
=
orderGoodsTruckBindDao
.
getValidByTruckNo
(
truckNo
).
orNull
();
if
(
Objects
.
equals
(
orderGoods
.
getPendingOrderWay
(),
OrderGoodsPendingOrderWayStatusEnum
.
Status
.
EXCLUSIVE
.
getCode
())){
if
(
Objects
.
equals
(
orderGoods
.
getPendingOrderWay
(),
if
(
CollectionUtils
.
isEmpty
(
orderGoodsTruckBindList
)){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR
);}
OrderGoodsPendingOrderWayStatusEnum
.
Status
.
EXCLUSIVE
.
getCode
()))
{
if
(
CollectionUtils
.
isEmpty
(
orderGoodsTruckBindList
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR
);
}
//筛选出当前选择的定向货单
//筛选出当前选择的定向货单
bind
=
orderGoodsTruckBindList
.
stream
().
filter
(
s
->
orderGoods
.
getOrderGoodsNo
().
equals
(
s
.
getOrderGoodsNo
())).
findFirst
().
orElse
(
null
);
bind
=
orderGoodsTruckBindList
.
stream
().
filter
(
if
(
Objects
.
isNull
(
bind
)){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR
);}
s
->
orderGoods
.
getOrderGoodsNo
().
equals
(
s
.
getOrderGoodsNo
())).
findFirst
().
orElse
(
null
);
if
(
Objects
.
isNull
(
bind
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR
);
}
}
else
{
if
(
CollectionUtils
.
isNotEmpty
(
orderGoodsTruckBindList
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR1
);
}
}
else
{
if
(
CollectionUtils
.
isNotEmpty
(
orderGoodsTruckBindList
)){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR1
);}
}
}
// 库存验证
// 库存验证
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_WEIGHT_LACK
);}
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
// if (orderGoods.getResidueTransportWeight().compareTo(truckLoad) < 0) {throw new ServiceSystemException(PerformanceResultEnum.ORDER_WEIGHT_LACK);}
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_WEIGHT_LACK
);
}
// if (orderGoods.getResidueTransportWeight().compareTo(truckLoad) < 0) {throw new ServiceSystemException
// (PerformanceResultEnum.ORDER_WEIGHT_LACK);}
OrderChild
orderChild
=
new
OrderChild
();
OrderChild
orderChild
=
new
OrderChild
();
orderChild
.
setChildNo
(
childNo
);
orderChild
.
setChildNo
(
childNo
);
...
@@ -247,8 +264,8 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -247,8 +264,8 @@ public class OrderChildServiceImpl implements OrderChildService {
updateDriverOrderStatusLock
(
orderChild
.
getDriverUserNo
(),
orderChild
.
getTruckId
());
updateDriverOrderStatusLock
(
orderChild
.
getDriverUserNo
(),
orderChild
.
getTruckId
());
// 新增日志
// 新增日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
CREATED
.
getCode
(),
OrderChildLogEnum
.
Type
.
CREATED
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
CREATED
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildLogEnum
.
Type
.
CREATED
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
SaveOrderChildVO
result
=
new
SaveOrderChildVO
();
SaveOrderChildVO
result
=
new
SaveOrderChildVO
();
result
.
setChildNo
(
childNo
);
result
.
setChildNo
(
childNo
);
...
@@ -260,26 +277,28 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -260,26 +277,28 @@ public class OrderChildServiceImpl implements OrderChildService {
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
Long
userNo
=
loginUserInfo
.
getUserNo
();
Long
userNo
=
loginUserInfo
.
getUserNo
();
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
param
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
param
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
// 状态验证
// 状态验证
if
(!
Objects
.
equals
(
orderGoods
.
getOrderGoodsStatus
(),
OrderGoodsStatusEnum
.
Status
.
PAYING
.
getCode
())
if
(!
Objects
.
equals
(
orderGoods
.
getOrderGoodsStatus
(),
OrderGoodsStatusEnum
.
Status
.
PAYING
.
getCode
())
&&
&&
!
Objects
.
equals
(
orderGoods
.
getOrderGoodsStatus
(),
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
()))
{
!
Objects
.
equals
(
orderGoods
.
getOrderGoodsStatus
(),
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_INVALID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_INVALID
);
}
}
// 定向派单
// 定向派单
if
(!
Objects
.
equals
(
orderGoods
.
getPendingOrderWay
(),
2
)){
if
(!
Objects
.
equals
(
orderGoods
.
getPendingOrderWay
(),
2
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_INVALID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_INVALID
);
}
}
OrderGoodsTruckBind
orderGoodsTruckBind
=
orderGoodsTruckBindDao
.
getValidByOrderGoodsNoAndTruckNo
(
param
.
getTruckNo
())
OrderGoodsTruckBind
orderGoodsTruckBind
=
orderGoodsTruckBindDao
.
getValidByOrderGoodsNoAndTruckNo
(
.
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_DIRECT_REJECT_TRUCK_ERROR
);
param
.
getTruckNo
())
.
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_DIRECT_REJECT_TRUCK_ERROR
);
if
(!
Objects
.
equals
(
orderGoodsTruckBind
.
getOrderGoodsNo
(),
orderGoods
.
getOrderGoodsNo
())){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_DIRECT_REJECT_TRUCK_ERROR
);}
if
(!
Objects
.
equals
(
orderGoodsTruckBind
.
getOrderGoodsNo
(),
orderGoods
.
getOrderGoodsNo
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_DIRECT_REJECT_TRUCK_ERROR
);
}
// 更新定向派单
// 更新定向派单
updateOrderGoodsDirectReject
(
orderGoodsTruckBind
);
updateOrderGoodsDirectReject
(
orderGoodsTruckBind
);
}
}
@Override
@Override
...
@@ -290,18 +309,19 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -290,18 +309,19 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)){
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
))
{
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
}
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
}
}
else
{
else
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
GO_TO_SEND
.
getCode
())){
return
;}
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
GO_TO_SEND
.
getCode
()))
{
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
CREATED
.
getCode
())){
return
;
}
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
CREATED
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
}
}
...
@@ -309,8 +329,8 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -309,8 +329,8 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildDao
.
updateStatus
(
orderChild
);
orderChildDao
.
updateStatus
(
orderChild
);
// 日志
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
GO_TO_SEND
.
getCode
(),
OrderChildLogEnum
.
Type
.
GO_TO_SEND
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
GO_TO_SEND
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildLogEnum
.
Type
.
GO_TO_SEND
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
}
@Override
@Override
...
@@ -321,31 +341,35 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -321,31 +341,35 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)){
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
))
{
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
}
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
}
}
else
{
else
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
())){
return
;}
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()))
{
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
GO_TO_SEND
.
getCode
())){
return
;
}
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
GO_TO_SEND
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
}
}
// 装货超时
// 装货超时
if
(
orderChild
.
getLoadDeadline
().
isBefore
(
LocalDateTime
.
now
())){
if
(
orderChild
.
getLoadDeadline
().
isBefore
(
LocalDateTime
.
now
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_TIMEOUT
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_TIMEOUT
);
}
}
// 距离验证
// 距离验证
FeignOrderInfoVO
orderInfo
=
orderService
.
getOrderInfo
(
orderChild
.
getOrderNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
FeignOrderInfoVO
orderInfo
=
orderService
.
getOrderInfo
(
orderChild
.
getOrderNo
()).
orElseThrow
(
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
PerformanceResultEnum
.
DATA_NOT_FIND
);
double
distance
=
GpsUtil
.
distance
(
orderGoods
.
getSendLongitude
().
doubleValue
(),
orderGoods
.
getSendLatitude
().
doubleValue
(),
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
param
.
getLongitude
().
doubleValue
(),
param
.
getLatitude
().
doubleValue
())/
1000
;
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(
distance
>
orderInfo
.
getSendDriverArriveRange
().
doubleValue
()){
double
distance
=
GpsUtil
.
distance
(
orderGoods
.
getSendLongitude
().
doubleValue
(),
orderGoods
.
getSendLatitude
().
doubleValue
(),
param
.
getLongitude
().
doubleValue
(),
param
.
getLatitude
().
doubleValue
())
/
1000
;
if
(
distance
>
orderInfo
.
getSendDriverArriveRange
().
doubleValue
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_ARRIVE_SEND_ADDRESS_DISTANCE_ERROR
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_ARRIVE_SEND_ADDRESS_DISTANCE_ERROR
);
}
}
...
@@ -353,8 +377,8 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -353,8 +377,8 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildDao
.
updateStatus
(
orderChild
);
orderChildDao
.
updateStatus
(
orderChild
);
// 日志
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
ARRIVE_SEND
.
getCode
(),
OrderChildLogEnum
.
Type
.
ARRIVE_SEND
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
ARRIVE_SEND
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildLogEnum
.
Type
.
ARRIVE_SEND
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
}
@Override
@Override
...
@@ -365,28 +389,28 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -365,28 +389,28 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)){
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
))
{
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
}
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
}
}
else
{
else
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
GO_TO_RECEIVE
.
getCode
())){
return
;}
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
GO_TO_RECEIVE
.
getCode
()))
{
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
LOAD
.
getCode
())){
return
;
}
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
LOAD
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
}
}
orderChild
.
setStatus
(
OrderChildEnum
.
Status
.
GO_TO_RECEIVE
.
getCode
());
orderChild
.
setStatus
(
OrderChildEnum
.
Status
.
GO_TO_RECEIVE
.
getCode
());
orderChildDao
.
updateStatus
(
orderChild
);
orderChildDao
.
updateStatus
(
orderChild
);
// 日志
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
GO_TO_RECEIVE
.
getCode
(),
OrderChildLogEnum
.
Type
.
GO_TO_RECEIVE
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
GO_TO_RECEIVE
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildLogEnum
.
Type
.
GO_TO_RECEIVE
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
}
@Override
@Override
...
@@ -397,27 +421,31 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -397,27 +421,31 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)){
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
))
{
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
}
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
}
}
else
{
else
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
())){
return
;}
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
()))
{
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
GO_TO_RECEIVE
.
getCode
())){
return
;
}
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
GO_TO_RECEIVE
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
}
}
// 距离验证
// 距离验证
FeignOrderInfoVO
orderInfo
=
orderService
.
getOrderInfo
(
orderChild
.
getOrderNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
FeignOrderInfoVO
orderInfo
=
orderService
.
getOrderInfo
(
orderChild
.
getOrderNo
()).
orElseThrow
(
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
PerformanceResultEnum
.
DATA_NOT_FIND
);
double
distance
=
GpsUtil
.
distance
(
orderGoods
.
getReceiveLongitude
().
doubleValue
(),
orderGoods
.
getReceiveLatitude
().
doubleValue
(),
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
param
.
getLongitude
().
doubleValue
(),
param
.
getLatitude
().
doubleValue
())/
1000
;
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(
distance
>
orderInfo
.
getReveiveDriverArriveRange
().
doubleValue
()){
double
distance
=
GpsUtil
.
distance
(
orderGoods
.
getReceiveLongitude
().
doubleValue
(),
orderGoods
.
getReceiveLatitude
().
doubleValue
(),
param
.
getLongitude
().
doubleValue
(),
param
.
getLatitude
().
doubleValue
())
/
1000
;
if
(
distance
>
orderInfo
.
getReveiveDriverArriveRange
().
doubleValue
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_DISTANCE_ERROR
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_DISTANCE_ERROR
);
}
}
...
@@ -425,8 +453,8 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -425,8 +453,8 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildDao
.
updateStatus
(
orderChild
);
orderChildDao
.
updateStatus
(
orderChild
);
// 日志
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
ARRIVE_RECEIVE
.
getCode
(),
OrderChildLogEnum
.
Type
.
ARRIVE_RECEIVE
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
ARRIVE_RECEIVE
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildLogEnum
.
Type
.
ARRIVE_RECEIVE
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
}
@Override
@Override
...
@@ -437,37 +465,38 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -437,37 +465,38 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)){
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
))
{
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
}
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
}
}
else
{
else
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
())
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
())
||
||
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
()))
{
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCELED
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCELED
);
}
}
if
(!
loadCheck
(
param
.
getLoadNet
(),
orderChild
.
getTruckLoad
())){
if
(!
loadCheck
(
param
.
getLoadNet
(),
orderChild
.
getTruckLoad
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_WEIGHT_ERROR
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_WEIGHT_ERROR
);
}
}
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(
orderChild
.
getLoadTime
()
==
null
&&
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()))
{
if
(
orderChild
.
getLoadTime
()
==
null
&&
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()))
{
updateLoadFirst
(
param
,
orderChild
,
orderGoods
);
updateLoadFirst
(
param
,
orderChild
,
orderGoods
);
// 日志
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
LOAD
.
getCode
(),
OrderChildLogEnum
.
Type
.
LOAD
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
LOAD
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildLogEnum
.
Type
.
LOAD
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
else
{
}
else
{
updateReload
(
param
,
orderChild
,
orderGoods
);
updateReload
(
param
,
orderChild
,
orderGoods
);
// 日志
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
RELOAD
.
getCode
(),
OrderChildLogEnum
.
Type
.
RELOAD
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
RELOAD
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildLogEnum
.
Type
.
RELOAD
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
}
}
}
...
@@ -475,10 +504,13 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -475,10 +504,13 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
// // 装车时间验证
// // 装车时间验证
// FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderChild.getOrderNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderChild.getOrderNo()).orElseThrow
// (PerformanceResultEnum.DATA_NOT_FIND);
// LocalDateTime now = LocalDateTime.now();
// LocalDateTime now = LocalDateTime.now();
// LocalDateTime beginTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getLoadBeginTime()).get();
// LocalDateTime beginTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() +
// LocalDateTime endTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getLoadEndTime()).get();
// orderInfo.getLoadBeginTime()).get();
// LocalDateTime endTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() +
// orderInfo.getLoadEndTime()).get();
// if (now.isBefore(beginTime) || now.isAfter(endTime)){
// if (now.isBefore(beginTime) || now.isAfter(endTime)){
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_TIME_ERROR);
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_TIME_ERROR);
// }
// }
...
@@ -538,7 +570,6 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -538,7 +570,6 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildImageDao
.
deleteLoad
(
childNo
);
orderChildImageDao
.
deleteLoad
(
childNo
);
orderChildImageDao
.
batchSaveEntity
(
imageList
);
orderChildImageDao
.
batchSaveEntity
(
imageList
);
}
}
@Override
@Override
...
@@ -549,18 +580,17 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -549,18 +580,17 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)){
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
))
{
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
}
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
}
}
else
{
else
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
())
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
())
||
||
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
()))
{
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCELED
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCELED
);
}
}
...
@@ -568,20 +598,23 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -568,20 +598,23 @@ public class OrderChildServiceImpl implements OrderChildService {
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_WEIGHT_ERROR);
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_WEIGHT_ERROR);
// }
// }
if
(
orderChild
.
getUnloadTime
()
==
null
&&
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
()))
{
if
(
orderChild
.
getUnloadTime
()
==
null
&&
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
()))
{
updateUnloadFirst
(
param
,
orderChild
);
updateUnloadFirst
(
param
,
orderChild
);
// 日志
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
UNLOAD
.
getCode
(),
OrderChildLogEnum
.
Type
.
UNLOAD
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
UNLOAD
.
getCode
(),
OrderChildLogEnum
.
Type
.
UNLOAD
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
orderChildPoundLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getMsg
(),
OrderChildLogEnum
.
CreateType
.
DRIVER
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
orderChildPoundLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getMsg
(),
OrderChildLogEnum
.
CreateType
.
DRIVER
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
else
{
}
else
{
updateReUnload
(
param
,
orderChild
);
updateReUnload
(
param
,
orderChild
);
// 日志
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
REUNLOAD
.
getCode
(),
OrderChildLogEnum
.
Type
.
REUNLOAD
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
REUNLOAD
.
getCode
(),
OrderChildLogEnum
.
Type
.
REUNLOAD
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
orderChildPoundLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getMsg
(),
OrderChildLogEnum
.
CreateType
.
DRIVER
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
orderChildPoundLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getMsg
(),
OrderChildLogEnum
.
CreateType
.
DRIVER
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
}
}
}
...
@@ -589,10 +622,13 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -589,10 +622,13 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
// // 装车时间验证
// // 装车时间验证
// FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderChild.getOrderNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderChild.getOrderNo()).orElseThrow
// (PerformanceResultEnum.DATA_NOT_FIND);
// LocalDateTime now = LocalDateTime.now();
// LocalDateTime now = LocalDateTime.now();
// LocalDateTime beginTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getUnloadBeginTime()).get();
// LocalDateTime beginTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() +
// LocalDateTime endTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() + orderInfo.getUnloadEndTime()).get();
// orderInfo.getUnloadBeginTime()).get();
// LocalDateTime endTime = DateUtils.parseDateTime(DateUtils.formatDateTime(now, "yyyy-MM-dd ").get() +
// orderInfo.getUnloadEndTime()).get();
// if (now.isBefore(beginTime) || now.isAfter(endTime)){
// if (now.isBefore(beginTime) || now.isAfter(endTime)){
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_TIME_ERROR);
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_TIME_ERROR);
// }
// }
...
@@ -630,14 +666,13 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -630,14 +666,13 @@ public class OrderChildServiceImpl implements OrderChildService {
// 更新出车状态
// 更新出车状态
updateDriverOrderStatusUnload
(
orderChild
.
getDriverUserNo
(),
orderChild
.
getTruckId
());
updateDriverOrderStatusUnload
(
orderChild
.
getDriverUserNo
(),
orderChild
.
getTruckId
());
}
}
private
void
updateReUnload
(
OrderChildUnloadParam
param
,
OrderChild
orderChild
)
{
private
void
updateReUnload
(
OrderChildUnloadParam
param
,
OrderChild
orderChild
)
{
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
// 审核中
// 审核中
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
())){
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_POUND_AUDIT
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_POUND_AUDIT
);
}
}
...
@@ -671,7 +706,6 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -671,7 +706,6 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildImageDao
.
batchSaveEntity
(
imageList
);
orderChildImageDao
.
batchSaveEntity
(
imageList
);
orderChildPoundAuditDao
.
saveEntity
(
audit
);
orderChildPoundAuditDao
.
saveEntity
(
audit
);
}
}
@Override
@Override
...
@@ -682,37 +716,39 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -682,37 +716,39 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
LocalDateTime
now
=
LocalDateTime
.
now
();
LocalDateTime
now
=
LocalDateTime
.
now
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)){
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
))
{
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
}
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
}
}
else
{
else
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
())
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
())
||
||
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
()))
{
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCELED
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCELED
);
}
}
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
UNLOAD
.
getCode
())){
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
UNLOAD
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
}
}
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
())){
return
;}
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
()))
{
if
(!
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
REJECT
.
getCode
())){
return
;
}
if
(!
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
REJECT
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
}
}
if
(!
loadCheck
(
param
.
getLoadNet
(),
orderChild
.
getTruckLoad
())){
if
(!
loadCheck
(
param
.
getLoadNet
(),
orderChild
.
getTruckLoad
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_WEIGHT_ERROR
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_WEIGHT_ERROR
);
}
}
// if (!loadCheck(param.getUnloadNet(), orderChild.getTruckLoad())){
// if (!loadCheck(param.getUnloadNet(), orderChild.getTruckLoad())){
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_WEIGHT_ERROR);
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_WEIGHT_ERROR);
// }
// }
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
List
<
OrderChildImage
>
imageList
=
new
ArrayList
<>();
List
<
OrderChildImage
>
imageList
=
new
ArrayList
<>();
for
(
String
item
:
param
.
getLoadImageList
())
{
for
(
String
item
:
param
.
getLoadImageList
())
{
...
@@ -761,11 +797,13 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -761,11 +797,13 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildPoundAuditDao
.
saveEntity
(
audit
);
orderChildPoundAuditDao
.
saveEntity
(
audit
);
// 日志
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
RELOAD_AND_REUNLOAD
.
getCode
(),
OrderChildLogEnum
.
Type
.
RELOAD_AND_REUNLOAD
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
RELOAD_AND_REUNLOAD
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildLogEnum
.
Type
.
RELOAD_AND_REUNLOAD
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
orderChildPoundLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getMsg
(),
orderChildPoundLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
(),
OrderChildLogEnum
.
CreateType
.
DRIVER
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getMsg
(),
OrderChildLogEnum
.
CreateType
.
DRIVER
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
}
@Override
@Override
...
@@ -776,29 +814,29 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -776,29 +814,29 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)){
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
))
{
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
}
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
}
}
else
{
else
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
UNLOAD
.
getCode
())){
if
(!
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
UNLOAD
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_STATUS_CHANGED
);
}
}
// 审核中
// 审核中
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
())){
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_POUND_AUDIT
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_POUND_AUDIT
);
}
}
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
REJECT
.
getCode
())){
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
REJECT
.
getCode
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_POUND_REJECT
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_POUND_REJECT
);
}
}
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
long
count
=
orderChildDao
.
countOfTransitByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
());
long
count
=
orderChildDao
.
countOfTransitByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
());
// 更新货单完成状态
// 更新货单完成状态
...
@@ -811,8 +849,8 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -811,8 +849,8 @@ public class OrderChildServiceImpl implements OrderChildService {
updateDriverOrderStatusDriverConfirm
(
orderChild
.
getTruckId
());
updateDriverOrderStatusDriverConfirm
(
orderChild
.
getTruckId
());
// 日志
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
DRIVER_CONFIRM
.
getCode
(),
OrderChildLogEnum
.
Type
.
DRIVER_CONFIRM
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
DRIVER_CONFIRM
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildLogEnum
.
Type
.
DRIVER_CONFIRM
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
}
@Override
@Override
...
@@ -824,35 +862,38 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -824,35 +862,38 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
LocalDateTime
now
=
LocalDateTime
.
now
();
LocalDateTime
now
=
LocalDateTime
.
now
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)){
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
if
(
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
))
{
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
}
else
if
(
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_OPERATION_FORBID
);
}
}
else
{
else
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
if
(
OrderChildEnum
.
CANCEL_lIST
.
contains
(
orderChild
.
getStatus
())){
if
(
OrderChildEnum
.
CANCEL_lIST
.
contains
(
orderChild
.
getStatus
()))
{
return
;
return
;
}
}
// 禁止取消
// 禁止取消
if
(
orderChild
.
getStatus
()
>=
OrderChildEnum
.
Status
.
LOAD
.
getCode
())
{
if
(
orderChild
.
getStatus
()
>=
OrderChildEnum
.
Status
.
LOAD
.
getCode
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCEL_FORBID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCEL_FORBID
);
}
}
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
// 取消量验证
// 取消量验证
if
(!
cancelCountCheck
(
userNo
)){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCEL_FORBID_COUNT
);}
if
(!
cancelCountCheck
(
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCEL_FORBID_COUNT
);
}
// 定向
// 定向
OrderGoodsTruckBind
orderGoodsTruckBind
=
null
;
OrderGoodsTruckBind
orderGoodsTruckBind
=
null
;
if
(
Objects
.
equals
(
orderGoods
.
getPendingOrderWay
(),
OrderGoodsPendingOrderWayStatusEnum
.
Status
.
EXCLUSIVE
.
getCode
())){
if
(
Objects
.
equals
(
orderGoods
.
getPendingOrderWay
(),
orderGoodsTruckBind
=
orderGoodsTruckBindDao
.
getByOrderGoodsNoAndTruckNo
(
orderGoods
.
getOrderGoodsNo
(),
orderChild
.
getTruckNo
())
OrderGoodsPendingOrderWayStatusEnum
.
Status
.
EXCLUSIVE
.
getCode
()))
{
.
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
orderGoodsTruckBind
=
orderGoodsTruckBindDao
.
getByOrderGoodsNoAndTruckNo
(
orderGoods
.
getOrderGoodsNo
(),
orderChild
.
getTruckNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
}
}
orderChild
.
setCancelRemark
(
param
.
getRemark
());
orderChild
.
setCancelRemark
(
param
.
getRemark
());
...
@@ -872,8 +913,8 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -872,8 +913,8 @@ public class OrderChildServiceImpl implements OrderChildService {
updateDriverOrderStatusCancel
(
orderChild
.
getDriverUserNo
(),
orderChild
.
getTruckId
());
updateDriverOrderStatusCancel
(
orderChild
.
getDriverUserNo
(),
orderChild
.
getTruckId
());
// 日志
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
DRIVER_CANCEL
.
getCode
(),
OrderChildLogEnum
.
Type
.
DRIVER_CANCEL
.
getMsg
(),
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
DRIVER_CANCEL
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildLogEnum
.
Type
.
DRIVER_CANCEL
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
}
@Override
@Override
...
@@ -884,24 +925,27 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -884,24 +925,27 @@ public class OrderChildServiceImpl implements OrderChildService {
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
LocalDateTime
now
=
LocalDateTime
.
now
();
LocalDateTime
now
=
LocalDateTime
.
now
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
if
(
OrderChildEnum
.
CANCEL_lIST
.
contains
(
orderChild
.
getStatus
())){
if
(
OrderChildEnum
.
CANCEL_lIST
.
contains
(
orderChild
.
getStatus
()))
{
return
;
return
;
}
}
// 禁止取消 (卸车前取消)
// 禁止取消 (卸车前取消)
if
(
orderChild
.
getStatus
()
>=
OrderChildEnum
.
Status
.
UNLOAD
.
getCode
())
{
if
(
orderChild
.
getStatus
()
>=
OrderChildEnum
.
Status
.
UNLOAD
.
getCode
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCEL_FORBID
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCEL_FORBID
);
}
}
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
// 定向
// 定向
OrderGoodsTruckBind
orderGoodsTruckBind
=
null
;
OrderGoodsTruckBind
orderGoodsTruckBind
=
null
;
if
(
Objects
.
equals
(
orderGoods
.
getPendingOrderWay
(),
OrderGoodsPendingOrderWayStatusEnum
.
Status
.
EXCLUSIVE
.
getCode
())){
if
(
Objects
.
equals
(
orderGoods
.
getPendingOrderWay
(),
orderGoodsTruckBind
=
orderGoodsTruckBindDao
.
getByOrderGoodsNoAndTruckNo
(
orderGoods
.
getOrderGoodsNo
(),
orderChild
.
getTruckNo
())
OrderGoodsPendingOrderWayStatusEnum
.
Status
.
EXCLUSIVE
.
getCode
()))
{
.
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
orderGoodsTruckBind
=
orderGoodsTruckBindDao
.
getByOrderGoodsNoAndTruckNo
(
orderGoods
.
getOrderGoodsNo
(),
orderChild
.
getTruckNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
}
}
orderChild
.
setCancelRemark
(
param
.
getRemark
());
orderChild
.
setCancelRemark
(
param
.
getRemark
());
...
@@ -909,7 +953,6 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -909,7 +953,6 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild
.
setFinishTime
(
now
);
orderChild
.
setFinishTime
(
now
);
orderChild
.
setStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
());
orderChild
.
setStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
());
// 返回吨数
// 返回吨数
updateOrderGoodsAmountReturn
(
orderChild
,
orderGoods
);
updateOrderGoodsAmountReturn
(
orderChild
,
orderGoods
);
...
@@ -922,8 +965,9 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -922,8 +965,9 @@ public class OrderChildServiceImpl implements OrderChildService {
updateDriverOrderStatusCancel
(
orderChild
.
getDriverUserNo
(),
orderChild
.
getTruckId
());
updateDriverOrderStatusCancel
(
orderChild
.
getDriverUserNo
(),
orderChild
.
getTruckId
());
// 日志
// 日志
orderChildLogService
.
saveCarrierOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildLogEnum
.
Type
.
PLATFORM_CANCEL
.
getMsg
(),
orderChildLogService
.
saveCarrierOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
PLATFORM_CANCEL
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
OrderChildLogEnum
.
Type
.
PLATFORM_CANCEL
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
}
}
@Override
@Override
...
@@ -931,30 +975,36 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -931,30 +975,36 @@ public class OrderChildServiceImpl implements OrderChildService {
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
Long
userNo
=
loginUserInfo
.
getUserNo
();
Long
userNo
=
loginUserInfo
.
getUserNo
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(!
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
&&
!
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
)){
if
(!
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)
&&
!
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
OrderChildVO
result
=
orderChildStruct
.
convert
(
orderChild
);
OrderChildVO
result
=
orderChildStruct
.
convert
(
orderChild
);
// 磅单
// 磅单
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
REJECT
.
getCode
())){
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
REJECT
.
getCode
()))
{
Optional
<
OrderChildPoundAudit
>
poundAuditDetail
=
orderChildPoundAuditDao
.
getPoundAuditDetail
(
childNo
);
Optional
<
OrderChildPoundAudit
>
poundAuditDetail
=
orderChildPoundAuditDao
.
getPoundAuditDetail
(
childNo
);
result
.
setPoundRemark
(
poundAuditDetail
.
orNull
().
getRemark
());
result
.
setPoundRemark
(
poundAuditDetail
.
orNull
().
getRemark
());
result
.
setPoundRejectType
(
poundAuditDetail
.
orNull
().
getRejectType
());
result
.
setPoundRejectType
(
poundAuditDetail
.
orNull
().
getRejectType
());
}
}
List
<
OrderChildImage
>
imageList
=
orderChildImageDao
.
listLoadAndUnload
(
childNo
).
orElse
(
new
ArrayList
<>());
List
<
OrderChildImage
>
imageList
=
orderChildImageDao
.
listLoadAndUnload
(
childNo
).
orElse
(
new
ArrayList
<>());
result
.
setLoadImageList
(
imageList
.
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
OrderChildImage
.
Type
.
LOAD
.
getCode
())).
map
(
item
->
item
.
getImage
()).
collect
(
Collectors
.
toList
()));
result
.
setLoadImageList
(
imageList
.
stream
().
filter
(
result
.
setUnloadImageList
(
imageList
.
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
OrderChildImage
.
Type
.
UNLOAD
.
getCode
())).
map
(
item
->
item
.
getImage
()).
collect
(
Collectors
.
toList
()));
item
->
Objects
.
equals
(
item
.
getType
(),
OrderChildImage
.
Type
.
LOAD
.
getCode
())).
map
(
item
->
item
.
getImage
()).
collect
(
Collectors
.
toList
()));
result
.
setUnloadImageList
(
imageList
.
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
OrderChildImage
.
Type
.
UNLOAD
.
getCode
())).
map
(
item
->
item
.
getImage
()).
collect
(
Collectors
.
toList
()));
// 地址
// 地址
Optional
<
FeignAddressVO
>
sendAndReceiveAddress
=
addressService
.
getSendAndReceiveAddress
(
orderChild
.
getSendAddressId
(),
orderChild
.
getReceiveAddressId
());
Optional
<
FeignAddressVO
>
sendAndReceiveAddress
=
addressService
.
getSendAndReceiveAddress
(
if
(
sendAndReceiveAddress
.
isPresent
()){
orderChild
.
getSendAddressId
(),
orderChild
.
getReceiveAddressId
());
if
(
sendAndReceiveAddress
.
isPresent
())
{
result
.
setSendAddressInfo
(
addressStruct
.
convert
(
sendAndReceiveAddress
.
get
().
getSendAddress
()));
result
.
setSendAddressInfo
(
addressStruct
.
convert
(
sendAndReceiveAddress
.
get
().
getSendAddress
()));
}
}
if
(
sendAndReceiveAddress
.
isPresent
()){
if
(
sendAndReceiveAddress
.
isPresent
())
{
result
.
setReceiveAddressInfo
(
addressStruct
.
convert
(
sendAndReceiveAddress
.
get
().
getReceiveAddress
()));
result
.
setReceiveAddressInfo
(
addressStruct
.
convert
(
sendAndReceiveAddress
.
get
().
getReceiveAddress
()));
}
}
...
@@ -968,7 +1018,6 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -968,7 +1018,6 @@ public class OrderChildServiceImpl implements OrderChildService {
param
.
setUserNo
(
userNo
);
param
.
setUserNo
(
userNo
);
return
orderChildDao
.
pageOrderChildOfDriver
(
param
);
return
orderChildDao
.
pageOrderChildOfDriver
(
param
);
}
}
@Override
@Override
...
@@ -986,9 +1035,10 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -986,9 +1035,10 @@ public class OrderChildServiceImpl implements OrderChildService {
Long
userNo
=
loginUserInfo
.
getUserNo
();
Long
userNo
=
loginUserInfo
.
getUserNo
();
String
childNo
=
param
.
getChildNo
();
String
childNo
=
param
.
getChildNo
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(!
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
&&
!
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
)){
if
(!
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)
&&
!
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
...
@@ -1003,21 +1053,26 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1003,21 +1053,26 @@ public class OrderChildServiceImpl implements OrderChildService {
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
Long
userNo
=
loginUserInfo
.
getUserNo
();
Long
userNo
=
loginUserInfo
.
getUserNo
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(!
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
&&
!
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
)){
if
(!
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)
&&
!
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
OrderChildPoundInfoVO
result
=
orderChildPoundStruct
.
convert
(
orderChild
);
OrderChildPoundInfoVO
result
=
orderChildPoundStruct
.
convert
(
orderChild
);
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
REJECT
.
getCode
())){
if
(
Objects
.
equals
(
orderChild
.
getPoundStatus
(),
OrderChildPoundAuditEnum
.
Status
.
REJECT
.
getCode
()))
{
result
.
setPoundRemark
(
orderChildPoundAuditDao
.
getPoundAuditDetail
(
childNo
).
orNull
().
getRemark
());
result
.
setPoundRemark
(
orderChildPoundAuditDao
.
getPoundAuditDetail
(
childNo
).
orNull
().
getRemark
());
}
}
List
<
OrderChildImage
>
imageList
=
orderChildImageDao
.
listLoadAndUnload
(
childNo
).
orElse
(
new
ArrayList
<>());
List
<
OrderChildImage
>
imageList
=
orderChildImageDao
.
listLoadAndUnload
(
childNo
).
orElse
(
new
ArrayList
<>());
result
.
setLoadImageList
(
imageList
.
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
OrderChildImage
.
Type
.
LOAD
.
getCode
())).
map
(
item
->
item
.
getImage
()).
collect
(
Collectors
.
toList
()));
result
.
setLoadImageList
(
imageList
.
stream
().
filter
(
result
.
setUnloadImageList
(
imageList
.
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
OrderChildImage
.
Type
.
UNLOAD
.
getCode
())).
map
(
item
->
item
.
getImage
()).
collect
(
Collectors
.
toList
()));
item
->
Objects
.
equals
(
item
.
getType
(),
OrderChildImage
.
Type
.
LOAD
.
getCode
())).
map
(
item
->
item
.
getImage
()).
collect
(
Collectors
.
toList
()));
result
.
setUnloadImageList
(
imageList
.
stream
().
filter
(
item
->
Objects
.
equals
(
item
.
getType
(),
OrderChildImage
.
Type
.
UNLOAD
.
getCode
())).
map
(
item
->
item
.
getImage
()).
collect
(
Collectors
.
toList
()));
return
result
;
return
result
;
}
}
...
@@ -1027,9 +1082,10 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1027,9 +1082,10 @@ public class OrderChildServiceImpl implements OrderChildService {
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
Long
userNo
=
loginUserInfo
.
getUserNo
();
Long
userNo
=
loginUserInfo
.
getUserNo
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
if
(!
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
&&
!
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
)){
if
(!
Objects
.
equals
(
orderChild
.
getDriverUserNo
(),
userNo
)
&&
!
Objects
.
equals
(
orderChild
.
getTruckOwnUserNo
(),
userNo
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
}
}
...
@@ -1038,11 +1094,10 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1038,11 +1094,10 @@ public class OrderChildServiceImpl implements OrderChildService {
return
result
;
return
result
;
}
}
/**
/**
* 更新货单数据
* 更新货单数据
*/
*/
private
void
updateOrderGoodsAmount
(
OrderGoods
orderGoods
,
BigDecimal
weight
){
private
void
updateOrderGoodsAmount
(
OrderGoods
orderGoods
,
BigDecimal
weight
)
{
Integer
status
=
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
();
Integer
status
=
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
();
...
@@ -1053,25 +1108,27 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1053,25 +1108,27 @@ public class OrderChildServiceImpl implements OrderChildService {
/**
/**
* 取消返吨数
* 取消返吨数
*/
*/
private
void
updateOrderGoodsAmountReturn
(
OrderChild
orderChild
,
OrderGoods
orderGoods
){
private
void
updateOrderGoodsAmountReturn
(
OrderChild
orderChild
,
OrderGoods
orderGoods
)
{
int
count
=
orderChildDao
.
countValidByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
())
-
1
;
int
count
=
orderChildDao
.
countValidByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
())
-
1
;
Integer
status
=
null
;
Integer
status
=
null
;
if
(
count
==
0
){
if
(
count
==
0
)
{
status
=
OrderGoodsStatusEnum
.
Status
.
PAYING
.
getCode
();
status
=
OrderGoodsStatusEnum
.
Status
.
PAYING
.
getCode
();
}
}
else
{
else
{
status
=
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
();
status
=
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
();
}
}
orderGoodsService
.
updateOrderGoodsReduceWeightAndStatus
(
orderGoods
.
getId
(),
orderChild
.
getWeight
().
negate
(),
status
);
orderGoodsService
.
updateOrderGoodsReduceWeightAndStatus
(
orderGoods
.
getId
(),
orderChild
.
getWeight
().
negate
(),
status
);
}
}
/**
/**
* 装车补偿
* 装车补偿
*/
*/
private
void
updateOrderGoodsAmountLoad
(
OrderGoods
orderGoods
,
BigDecimal
dif
){
private
void
updateOrderGoodsAmountLoad
(
OrderGoods
orderGoods
,
BigDecimal
dif
)
{
if
(
dif
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
){
return
;}
if
(
dif
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
return
;
}
Integer
status
=
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
();
Integer
status
=
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
();
...
@@ -1081,8 +1138,10 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1081,8 +1138,10 @@ public class OrderChildServiceImpl implements OrderChildService {
/**
/**
* 更新定向单状态 (接单)
* 更新定向单状态 (接单)
*/
*/
private
void
updateOrderGoodsDirect
(
OrderGoodsTruckBind
orderGoodsTruckBind
){
private
void
updateOrderGoodsDirect
(
OrderGoodsTruckBind
orderGoodsTruckBind
)
{
if
(
orderGoodsTruckBind
==
null
)
{
return
;}
if
(
orderGoodsTruckBind
==
null
)
{
return
;
}
orderGoodsTruckBind
.
setStatus
(
OrderGoodsTruckBind
.
Status
.
ORDER
.
getCode
());
orderGoodsTruckBind
.
setStatus
(
OrderGoodsTruckBind
.
Status
.
ORDER
.
getCode
());
orderGoodsTruckBindDao
.
updateStatus
(
orderGoodsTruckBind
);
orderGoodsTruckBindDao
.
updateStatus
(
orderGoodsTruckBind
);
...
@@ -1091,7 +1150,7 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1091,7 +1150,7 @@ public class OrderChildServiceImpl implements OrderChildService {
/**
/**
* 更新定向派单状态 (拒绝)
* 更新定向派单状态 (拒绝)
*/
*/
private
void
updateOrderGoodsDirectReject
(
OrderGoodsTruckBind
orderGoodsTruckBind
){
private
void
updateOrderGoodsDirectReject
(
OrderGoodsTruckBind
orderGoodsTruckBind
)
{
orderGoodsTruckBind
.
setStatus
(
OrderGoodsTruckBind
.
Status
.
CANCEL
.
getCode
());
orderGoodsTruckBind
.
setStatus
(
OrderGoodsTruckBind
.
Status
.
CANCEL
.
getCode
());
orderGoodsTruckBindDao
.
updateStatus
(
orderGoodsTruckBind
);
orderGoodsTruckBindDao
.
updateStatus
(
orderGoodsTruckBind
);
}
}
...
@@ -1099,8 +1158,10 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1099,8 +1158,10 @@ public class OrderChildServiceImpl implements OrderChildService {
/**
/**
* 更新定向派单状态 (取消)
* 更新定向派单状态 (取消)
*/
*/
private
void
updateOrderGoodsDirectCancel
(
OrderGoodsTruckBind
orderGoodsTruckBind
){
private
void
updateOrderGoodsDirectCancel
(
OrderGoodsTruckBind
orderGoodsTruckBind
)
{
if
(
orderGoodsTruckBind
==
null
)
{
return
;}
if
(
orderGoodsTruckBind
==
null
)
{
return
;
}
orderGoodsTruckBind
.
setStatus
(
OrderGoodsTruckBind
.
Status
.
CANCEL
.
getCode
());
orderGoodsTruckBind
.
setStatus
(
OrderGoodsTruckBind
.
Status
.
CANCEL
.
getCode
());
orderGoodsTruckBindDao
.
updateStatus
(
orderGoodsTruckBind
);
orderGoodsTruckBindDao
.
updateStatus
(
orderGoodsTruckBind
);
...
@@ -1109,52 +1170,62 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1109,52 +1170,62 @@ public class OrderChildServiceImpl implements OrderChildService {
/**
/**
* 更新货单完成状态
* 更新货单完成状态
*/
*/
private
void
updateOrderGoodsComplete
(
OrderGoods
orderGoods
,
long
count
){
private
void
updateOrderGoodsComplete
(
OrderGoods
orderGoods
,
long
count
)
{
if
(
count
>
1
)
{
return
;}
if
(
count
>
1
)
{
return
;
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
){
orderGoodsDao
.
updateOrderGoodsStatusByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
());
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsTruckBindEnum
.
Status
.
EXPIRE
.
getCode
());
}
}
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
orderGoodsDao
.
updateOrderGoodsStatusByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
());
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsTruckBindEnum
.
Status
.
EXPIRE
.
getCode
());
}
}
}
/**
/**
* 拉运吨数检测
* 拉运吨数检测
*/
*/
private
boolean
loadCheck
(
BigDecimal
weight
,
BigDecimal
truckLoad
){
private
boolean
loadCheck
(
BigDecimal
weight
,
BigDecimal
truckLoad
)
{
if
(
weight
.
compareTo
(
truckLoad
.
multiply
(
new
BigDecimal
(
"1.5"
)))
>
0
)
{
return
false
;}
if
(
weight
.
compareTo
(
truckLoad
.
multiply
(
new
BigDecimal
(
"1.5"
)))
>
0
)
{
return
false
;
}
return
true
;
return
true
;
}
}
/**
/**
* 取消检测
* 取消检测
*/
*/
private
boolean
cancelCountCheck
(
Long
userNo
){
private
boolean
cancelCountCheck
(
Long
userNo
)
{
LocalDateTime
startTime
=
DateUtils
.
parseDateTime
(
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
(),
"yyyy-MM-dd"
).
get
()
+
" 00:00:00"
).
get
();
LocalDateTime
startTime
=
DateUtils
.
parseDateTime
(
LocalDateTime
endTime
=
DateUtils
.
parseDateTime
(
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
(),
"yyyy-MM-dd"
).
get
()
+
" 23:59:59"
).
get
();
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
(),
"yyyy-MM-dd"
).
get
()
+
" 00:00:00"
).
get
();
LocalDateTime
endTime
=
DateUtils
.
parseDateTime
(
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
(),
"yyyy-MM-dd"
).
get
()
+
" 23:59:59"
).
get
();
long
count
=
orderChildDao
.
countOfCancel
(
userNo
,
startTime
,
endTime
);
long
count
=
orderChildDao
.
countOfCancel
(
userNo
,
startTime
,
endTime
);
return
count
<
10
;
return
count
<
10
;
}
}
/**
/**
* 运单拉运吨数计算
* 运单拉运吨数计算
*/
*/
private
BigDecimal
orderChildWeightCalc
(
OrderChild
orderChild
){
private
BigDecimal
orderChildWeightCalc
(
OrderChild
orderChild
)
{
if
(
orderChild
.
getLoadNet
()
==
null
)
{
return
orderChild
.
getTruckLoad
();}
if
(
orderChild
.
getLoadNet
()
==
null
)
{
else
{
return
orderChild
.
getLoadNet
();}
return
orderChild
.
getTruckLoad
();
}
else
{
return
orderChild
.
getLoadNet
();
}
}
}
/**
/**
* 运费计算
* 运费计算
*/
*/
private
BigDecimal
orderChildFreightCalc
(
OrderChild
orderChild
){
private
BigDecimal
orderChildFreightCalc
(
OrderChild
orderChild
)
{
BigDecimal
totalFreight
=
orderChild
.
getFreightPrice
().
multiply
(
orderChild
.
getWeight
());
BigDecimal
totalFreight
=
orderChild
.
getFreightPrice
().
multiply
(
orderChild
.
getWeight
());
if
(
orderChild
.
getUnloadNet
()
!=
null
){
if
(
orderChild
.
getUnloadNet
()
!=
null
)
{
BigDecimal
dif
=
orderChild
.
getUnloadNet
().
subtract
(
orderChild
.
getWeight
());
BigDecimal
dif
=
orderChild
.
getUnloadNet
().
subtract
(
orderChild
.
getWeight
());
if
(
dif
.
compareTo
(
BigDecimal
.
ZERO
)
<
0
){
if
(
dif
.
compareTo
(
BigDecimal
.
ZERO
)
<
0
)
{
totalFreight
=
totalFreight
.
add
(
orderChild
.
getLossPrice
().
multiply
(
dif
));
totalFreight
=
totalFreight
.
add
(
orderChild
.
getLossPrice
().
multiply
(
dif
));
}
}
}
}
...
@@ -1162,41 +1233,40 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1162,41 +1233,40 @@ public class OrderChildServiceImpl implements OrderChildService {
return
totalFreight
.
setScale
(
0
,
RoundingMode
.
HALF_UP
);
return
totalFreight
.
setScale
(
0
,
RoundingMode
.
HALF_UP
);
}
}
/**
/**
* 更新出车状态 (接单, 运单重车)
* 更新出车状态 (接单, 运单重车)
*/
*/
private
void
updateDriverOrderStatusLock
(
Long
driverUserNo
,
Integer
truckId
){
private
void
updateDriverOrderStatusLock
(
Long
driverUserNo
,
Integer
truckId
)
{
driverService
.
updateOrderStatus
(
driverUserNo
,
DriverInfoEnum
.
DriverStatus
.
YES
.
getCode
(),
truckId
,
3
);
driverService
.
updateOrderStatus
(
driverUserNo
,
DriverInfoEnum
.
DriverStatus
.
YES
.
getCode
(),
truckId
,
3
);
}
}
/**
/**
* 更新出车状态(运单卸车,运单空车)
* 更新出车状态(运单卸车,运单空车)
*/
*/
private
void
updateDriverOrderStatusUnload
(
Long
driverUserNo
,
Integer
truckId
){
private
void
updateDriverOrderStatusUnload
(
Long
driverUserNo
,
Integer
truckId
)
{
driverService
.
updateOrderStatus
(
driverUserNo
,
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
truckId
,
2
);
driverService
.
updateOrderStatus
(
driverUserNo
,
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
truckId
,
2
);
}
}
/**
/**
* 更新出车状态 (运单取消,空车)
* 更新出车状态 (运单取消,空车)
*/
*/
private
void
updateDriverOrderStatusCancel
(
Long
driverUserNo
,
Integer
truckId
){
private
void
updateDriverOrderStatusCancel
(
Long
driverUserNo
,
Integer
truckId
)
{
driverService
.
updateOrderStatus
(
driverUserNo
,
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
truckId
,
1
);
driverService
.
updateOrderStatus
(
driverUserNo
,
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
truckId
,
1
);
}
}
/**
/**
* 更新出车状态 (司机确认收货,空车)
* 更新出车状态 (司机确认收货,空车)
*/
*/
private
void
updateDriverOrderStatusDriverConfirm
(
Integer
truckId
){
private
void
updateDriverOrderStatusDriverConfirm
(
Integer
truckId
)
{
driverService
.
updateOrderStatus
(
0L
,
0
,
truckId
,
1
);
driverService
.
updateOrderStatus
(
0L
,
0
,
truckId
,
1
);
}
}
/**
/**
* 创建运单号
* 创建运单号
*/
*/
private
String
childNoGenerate
(){
private
String
childNoGenerate
()
{
return
"CYD"
+
uniqueOrderNumService
.
getUniqueOrderNum
(
LocalDateTimeUtils
.
convertLocalDateTimeToString
(
LocalDateTime
.
now
(),
LocalDateTimeUtils
.
DATE_DAY
));
return
"CYD"
+
uniqueOrderNumService
.
getUniqueOrderNum
(
LocalDateTimeUtils
.
convertLocalDateTimeToString
(
LocalDateTime
.
now
(),
LocalDateTimeUtils
.
DATE_DAY
));
}
}
@Override
@Override
...
@@ -1211,19 +1281,21 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1211,19 +1281,21 @@ public class OrderChildServiceImpl implements OrderChildService {
@Override
@Override
public
List
<
OrderChildPCVO
>
getOrderChildInfoByOrderGoodsNo
(
String
orderGoodsNo
)
{
public
List
<
OrderChildPCVO
>
getOrderChildInfoByOrderGoodsNo
(
String
orderGoodsNo
)
{
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
getOrderChildInfoByOrderGoodsNo
(
orderGoodsNo
)
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
getOrderChildInfoByOrderGoodsNo
(
orderGoodsNo
)
.
orElseThrow
(
.
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
return
orderChildStruct
.
convertList
(
orderChildren
);
return
orderChildStruct
.
convertList
(
orderChildren
);
}
}
@Override
@Override
public
CarrierOrderChildDetailVO
getCarrierOrderChildDetail
(
String
childNo
)
{
public
CarrierOrderChildDetailVO
getCarrierOrderChildDetail
(
String
childNo
)
{
//运单数据
//运单数据
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
CarrierOrderChildDetailVO
carrierOrderChildDetailVO
=
orderChildStruct
.
carrierConvert
(
orderChild
);
CarrierOrderChildDetailVO
carrierOrderChildDetailVO
=
orderChildStruct
.
carrierConvert
(
orderChild
);
//货单数据
//货单数据
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_NO_FOUND
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_NO_FOUND
);
carrierOrderChildDetailVO
.
setExtractWeight
(
orderGoods
.
getExtractWeight
());
carrierOrderChildDetailVO
.
setExtractWeight
(
orderGoods
.
getExtractWeight
());
//磅单审核数据
//磅单审核数据
...
@@ -1235,34 +1307,36 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1235,34 +1307,36 @@ public class OrderChildServiceImpl implements OrderChildService {
carrierOrderChildDetailVO
.
setChildLogs
(
orderChildLogStruct
.
convert
(
orderChildLog
));
carrierOrderChildDetailVO
.
setChildLogs
(
orderChildLogStruct
.
convert
(
orderChildLog
));
//应付运费
//应付运费
BigDecimal
payableFreight
=
BigDecimal
.
ZERO
;
BigDecimal
payableFreight
=
BigDecimal
.
ZERO
;
if
(
Objects
.
nonNull
(
orderChild
.
getLoadNet
())){
if
(
Objects
.
nonNull
(
orderChild
.
getLoadNet
()))
{
payableFreight
=
orderChild
.
getLoadNet
()
payableFreight
=
orderChild
.
getLoadNet
().
multiply
(
orderChild
.
getFreightPrice
()).
setScale
(
0
,
.
multiply
(
orderChild
.
getFreightPrice
())
BigDecimal
.
ROUND_HALF_UP
);
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
);
}
}
//亏吨扣款(元)
//亏吨扣款(元)
BigDecimal
lossDeduction
=
BigDecimal
.
ZERO
;
BigDecimal
lossDeduction
=
BigDecimal
.
ZERO
;
if
(
Objects
.
nonNull
(
orderChild
.
getLoadNet
())
&&
Objects
.
nonNull
(
orderChild
.
getUnloadNet
()))
{
if
(
Objects
.
nonNull
(
orderChild
.
getLoadNet
())
&&
Objects
.
nonNull
(
orderChild
.
getUnloadNet
()))
{
if
(
orderChild
.
getLoadNet
().
compareTo
(
orderChild
.
getUnloadNet
())
>
0
)
{
if
(
orderChild
.
getLoadNet
().
compareTo
(
orderChild
.
getUnloadNet
())
>
0
)
{
lossDeduction
=
carrierOrderChildDetailVO
.
getLossPrice
()
lossDeduction
=
carrierOrderChildDetailVO
.
getLossPrice
()
.
multiply
(
.
multiply
(
orderChild
.
getLoadNet
().
subtract
(
orderChild
.
getUnloadNet
()))
orderChild
.
getLoadNet
().
subtract
(
orderChild
.
getUnloadNet
())).
setScale
(
0
,
.
setScale
(
0
,
BigDecimal
.
ROUND_HALF_UP
);
BigDecimal
.
ROUND_HALF_UP
);
}
}
}
}
//实付运费(元)
//实付运费(元)
BigDecimal
realFreight
=
payableFreight
.
subtract
(
lossDeduction
);
BigDecimal
realFreight
=
payableFreight
.
subtract
(
lossDeduction
);
carrierOrderChildDetailVO
.
setPayableFreight
(
payableFreight
);
carrierOrderChildDetailVO
.
setPayableFreight
(
payableFreight
);
carrierOrderChildDetailVO
.
setLossDeduction
(
lossDeduction
);
carrierOrderChildDetailVO
.
setLossDeduction
(
lossDeduction
);
carrierOrderChildDetailVO
.
setRealFreight
(
realFreight
);
carrierOrderChildDetailVO
.
setRealFreight
(
realFreight
);
//磅单图片
//磅单图片
List
<
OrderChildImage
>
loadImages
=
orderChildImageDao
.
getImages
(
childNo
,
OrderChildImage
.
Type
.
LOAD
.
getCode
());
List
<
OrderChildImage
>
loadImages
=
orderChildImageDao
.
getImages
(
childNo
,
OrderChildImage
.
Type
.
LOAD
.
getCode
());
List
<
OrderChildImage
>
unloadImages
=
orderChildImageDao
.
getImages
(
childNo
,
OrderChildImage
.
Type
.
UNLOAD
.
getCode
());
List
<
OrderChildImage
>
unloadImages
=
orderChildImageDao
.
getImages
(
childNo
,
carrierOrderChildDetailVO
.
setLoadImageList
(
loadImages
.
stream
().
map
(
OrderChildImage:
:
getImage
).
collect
(
Collectors
.
toList
()));
OrderChildImage
.
Type
.
UNLOAD
.
getCode
());
carrierOrderChildDetailVO
.
setUnloadImageList
(
unloadImages
.
stream
().
map
(
OrderChildImage:
:
getImage
).
collect
(
Collectors
.
toList
()));
carrierOrderChildDetailVO
.
setLoadImageList
(
loadImages
.
stream
().
map
(
OrderChildImage:
:
getImage
).
collect
(
Collectors
.
toList
()));
carrierOrderChildDetailVO
.
setUnloadImageList
(
unloadImages
.
stream
().
map
(
OrderChildImage:
:
getImage
).
collect
(
Collectors
.
toList
()));
return
carrierOrderChildDetailVO
;
return
carrierOrderChildDetailVO
;
}
}
...
@@ -1281,14 +1355,13 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1281,14 +1355,13 @@ public class OrderChildServiceImpl implements OrderChildService {
@Override
@Override
public
OrderChildBussInfoVO
getOrderChildBussInfo
(
String
truckNo
)
{
public
OrderChildBussInfoVO
getOrderChildBussInfo
(
String
truckNo
)
{
List
<
OrderChild
>
childList
=
orderChildDao
.
getOrderChildBussInfo
(
truckNo
);
List
<
OrderChild
>
childList
=
orderChildDao
.
getOrderChildBussInfo
(
truckNo
);
if
(
CollectionUtils
.
isEmpty
(
childList
))
{
if
(
CollectionUtils
.
isEmpty
(
childList
))
{
OrderChildBussInfoVO
vo
=
OrderChildBussInfoVO
.
builder
().
completeNum
(
0
).
historyLoadWeight
(
new
BigDecimal
(
"0"
))
OrderChildBussInfoVO
vo
=
OrderChildBussInfoVO
.
builder
().
completeNum
(
0
).
historyLoadWeight
(
.
completeCarryWeight
(
new
BigDecimal
(
"0"
)).
loseWeight
(
new
BigDecimal
(
"0"
)).
loseRate
(
new
BigDecimal
(
"0"
))
new
BigDecimal
(
"0"
)).
completeCarryWeight
(
new
BigDecimal
(
"0"
)).
loseWeight
(
.
overRate
(
new
BigDecimal
(
"0"
)).
build
();
new
BigDecimal
(
"0"
)).
loseRate
(
new
BigDecimal
(
"0"
))
.
overRate
(
new
BigDecimal
(
"0"
)).
build
();
return
vo
;
return
vo
;
}
}
//运单完成数量
//运单完成数量
int
complateNum
=
childList
.
size
();
int
complateNum
=
childList
.
size
();
//历史装车总量
//历史装车总量
...
@@ -1309,25 +1382,325 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -1309,25 +1382,325 @@ public class OrderChildServiceImpl implements OrderChildService {
}
}
//亏吨数量总计
//亏吨数量总计
BigDecimal
loseWeight
=
BigDecimal
.
ZERO
;
BigDecimal
loseWeight
=
BigDecimal
.
ZERO
;
BigDecimal
overWeight
=
BigDecimal
.
ZERO
;
BigDecimal
overWeight
=
BigDecimal
.
ZERO
;
//卸车总量 大于 装车总量
//卸车总量 大于 装车总量
if
(
complateCarryWeight
.
subtract
(
historyLoadWeight
).
compareTo
(
BigDecimal
.
ZERO
)
>=
0
)
{
if
(
complateCarryWeight
.
subtract
(
historyLoadWeight
).
compareTo
(
BigDecimal
.
ZERO
)
>=
0
)
{
overWeight
=
complateCarryWeight
.
subtract
(
historyLoadWeight
);
//超吨
overWeight
=
complateCarryWeight
.
subtract
(
historyLoadWeight
);
//超吨
}
else
{
}
else
{
loseWeight
=
historyLoadWeight
.
subtract
(
complateCarryWeight
);
//亏吨
loseWeight
=
historyLoadWeight
.
subtract
(
complateCarryWeight
);
//亏吨
}
}
BigDecimal
loseRate
=
BigDecimal
.
ZERO
;
BigDecimal
loseRate
=
BigDecimal
.
ZERO
;
BigDecimal
overRate
=
BigDecimal
.
ZERO
;
BigDecimal
overRate
=
BigDecimal
.
ZERO
;
//亏吨率
//亏吨率
if
(
historyLoadWeight
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
if
(
historyLoadWeight
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
loseRate
=
loseWeight
.
divide
(
historyLoadWeight
,
2
,
RoundingMode
.
HALF_UP
).
multiply
(
new
BigDecimal
(
"100"
));
loseRate
=
loseWeight
.
divide
(
historyLoadWeight
,
2
,
RoundingMode
.
HALF_UP
).
multiply
(
new
BigDecimal
(
"100"
));
overRate
=
overWeight
.
divide
(
historyLoadWeight
,
2
,
RoundingMode
.
HALF_UP
).
multiply
(
new
BigDecimal
(
"100"
));
overRate
=
overWeight
.
divide
(
historyLoadWeight
,
2
,
RoundingMode
.
HALF_UP
).
multiply
(
new
BigDecimal
(
"100"
));
}
}
OrderChildBussInfoVO
vo
=
OrderChildBussInfoVO
.
builder
().
completeNum
(
complateNum
).
historyLoadWeight
(
historyLoadWeight
).
completeCarryWeight
(
complateCarryWeight
)
OrderChildBussInfoVO
vo
=
OrderChildBussInfoVO
.
builder
().
completeNum
(
complateNum
).
historyLoadWeight
(
.
loseWeight
(
loseWeight
).
loseRate
(
loseRate
).
overRate
(
overRate
).
build
();
historyLoadWeight
).
completeCarryWeight
(
complateCarryWeight
).
loseWeight
(
loseWeight
).
loseRate
(
loseRate
).
overRate
(
overRate
).
build
();
return
vo
;
return
vo
;
}
}
@Override
public
List
<
String
>
getOrderChildTruckByOrderNo
(
String
orderNo
)
{
List
<
OrderChild
>
list
=
orderChildDao
.
getOrderChildByOrderNo
(
orderNo
);
List
<
String
>
truckList
=
list
.
stream
().
map
(
OrderChild:
:
getTruckNo
).
collect
(
Collectors
.
toList
());
return
truckList
;
}
@Override
public
IPage
<
OutputMonitorOrderChildVO
>
getMonitorOrerChildListsByParam
(
PageMonitorOrderChildQCParam
param
)
{
/* Integer loadWarningTime = 40 ;
Integer arriveWarningTime = 10 ;
Integer receiveWarningTime = 60 ;
LocalDateTime now = LocalDateTime.now();
Page<OrderChild> page = orderChildDao.pageOrderChild(param);
List<OrderChild> records = page.getRecords();
List<OrderChildPCVO> list = orderChildStruct.convertList(page.getRecords());
Result<List<OutputMonitorOrderChildDTO>> result = new Result<>();
PageHelper.startPage(qc.getPage(), qc.getPageSize(), qc.getPage() == 1);
PageInfo<OrderChild> pageInfo = new PageInfo<>(orderChildList);
result.setPageNum(pageInfo.getPages());
result.setTotal(pageInfo.getTotal());
if(CollectionUtils.isEmpty(orderChildList)){
result.setData(null);
return result;
}
//聚合合同 获取热值
List<String> contractNos = orderChildList.stream().map(it -> it.getContractNo()).collect(Collectors.toList());
List<OrderContractQualityIndicator> orderContractQualityIndicators = orderContractQualityIndicatorDao
.getListOfCalorificValueByContractNoList(contractNos, "calorificValue");
Map<String, OrderContractQualityIndicator> contractQualityIndicatorMap = orderContractQualityIndicators
.stream().collect(Collectors.toMap(OrderContractQualityIndicator::getContractNo, o -> o, (v1, v2) -> v2));
//聚合运单 获取运单预估时间
List<String> childNoList = orderChildList.stream().map(OrderChild::getChildNo).collect(Collectors.toList());
List<OrderChildExpect> orderChildExpect = orderChildExpectDao.getOrderChildExpectByChildNos(childNoList,0);
Map<String, OrderChildExpect> orderChildExpectMap = orderChildExpect.stream().collect(Collectors.toMap
(OrderChildExpect::getChildNo, o -> o, (v1, v2) -> v2));
List<OutputMonitorOrderChildVO> monitorOrderChildList = records.stream().map(child -> {
OutputMonitorOrderChildVO monitorOrderChild = new OutputMonitorOrderChildVO();
monitorOrderChild.setChildNo(child.getChildNo());
monitorOrderChild.setDriverMobile(child.getDriverMobile());
monitorOrderChild.setDriverName(child.getDriverName());
monitorOrderChild.setLoadTime(DateUtils.formatDateTime(child.getLoadTime()).get());
monitorOrderChild.setPayTime(DateUtils.formatDateTime(child.getPayTime()).get());
monitorOrderChild.setTruckNo(child.getTruckNo());
monitorOrderChild.setSendAddress(child.getSendAddress());
monitorOrderChild.setSendAddressId(child.getSendAddressId());
monitorOrderChild.setStatus(child.getStatus());
BigDecimal poundTonnage = child.getLoadNet();
if(BigDecimal.ZERO.compareTo(child.getLoadNet()) <= 0){
poundTonnage = child.getUnloadNet();
}
monitorOrderChild.setLoadNet(poundTonnage);
if(null != orderChildExpectMap.get(child.getChildNo())){
OrderChildExpect expect = orderChildExpectMap.get(child.getChildNo());
if(StringUtil.isNotEmpty(expect.getExpectArriveTime())){
monitorOrderChild.setExpectArriveTime(expect.getExpectArriveTime());
LocalDateTime expectArriveTime = LocalDateTimeUtils.parseTime(expect.getExpectArriveTime());
LocalDateTime expectArriveWarringTime = LocalDateTimeUtils.plus(expectArriveTime,
arriveWarningTime, ChronoUnit.MINUTES);
if(expectArriveWarringTime.isBefore(now)
&& child.getStatus() < OrderChildStatusEnum.ARRIVE_SEND.getValue()){
monitorOrderChild.setArriveWarning(1);
}else{
monitorOrderChild.setArriveWarning(0);
}
}
if(StringUtil.isNotEmpty(expect.getExpectReceiveTime())){
monitorOrderChild.setExpectReceiveTime(expect.getExpectReceiveTime());
LocalDateTime expectReceiveTime = LocalDateTimeUtils.parseTime(expect.getExpectReceiveTime());
LocalDateTime expectReceiveWarringTime = LocalDateTimeUtils.plus(expectReceiveTime,
receiveWarningTime, ChronoUnit.MINUTES);
if(expectReceiveWarringTime.isBefore(now)
&& child.getStatus() >= OrderChildStatusEnum.OWNER_LOAD.getValue()
&& child.getStatus() < OrderChildStatusEnum.ARRIVE_RECEIVE.getValue()){
monitorOrderChild.setReceiveWarning(1);
}else{
monitorOrderChild.setReceiveWarning(0);
}
}
monitorOrderChild.setExpectTransportTime(expect.getExpectTransportTime());
}
if(StringUtil.isNotEmpty(child.getArriveTime())
&& child.getStatus() >= OrderChildStatusEnum.ARRIVE_SEND.getValue()
&& child.getStatus() < OrderChildStatusEnum.OWNER_LOAD.getValue()){
LocalDateTime arriveTime = LocalDateTimeUtils.parseTime(child.getArriveTime());
LocalDateTime arriveWarringTime = LocalDateTimeUtils.plus(arriveTime, loadWarningTime, ChronoUnit
.MINUTES);
if(arriveWarringTime.isBefore(now)){
monitorOrderChild.setLoadWarning(1);
}else{
monitorOrderChild.setLoadWarning(0);
}
}
List<OrderChildExpect> orderChildExpects = orderChildExpectDao.getOrderChildExpectByChildNo(child
.getChildNo(),1);
boolean expectFlag = true ;
if(CollectionUtils.isNotEmpty(orderChildExpects)){
String exceptTime = orderChildExpects.get(0).getCreateTime();
LocalDateTime beginTime = LocalDateTimeUtils.plus(now,-5, ChronoUnit.MINUTES);
if(beginTime.isBefore(LocalDateTimeUtils.parseTime(exceptTime))){
expectFlag = false;
}
}
if(expectFlag){
orderChildExpectService.orderChildExpect(child.getChildNo(),child.getTruckNo(),child.getStatus(),
child.getOrderNo(),1);
orderChildExpects = orderChildExpectDao.getOrderChildExpectByChildNo(child.getChildNo(),1);
}
if(CollectionUtils.isNotEmpty(orderChildExpects) && orderChildExpects.size() > 1){
OrderChildExpect oneExpect = orderChildExpects.get(0);
if(StringUtil.isNotEmpty(oneExpect.getExpectArriveTime())){
monitorOrderChild.setExpectArriveTimeRealTime(oneExpect.getExpectArriveTime());
}
if(StringUtil.isNotEmpty(oneExpect.getExpectReceiveTime())){
monitorOrderChild.setExpectReceiveTimeRealTime(oneExpect.getExpectReceiveTime());
}
OrderChildExpect twoExpect = orderChildExpects.get(1);
if(Objects.nonNull(oneExpect.getExpectArriveTimeSecond()) && Objects.nonNull(twoExpect
.getExpectArriveTimeSecond())){
if(twoExpect.getExpectArriveTimeSecond() < oneExpect.getExpectArriveTimeSecond()){
monitorOrderChild.setArriveTrend(0);
}else{
monitorOrderChild.setArriveTrend(1);
}
}
if(Objects.nonNull(oneExpect.getExpectReceiveTimeSecond()) && Objects.nonNull(twoExpect
.getExpectReceiveTimeSecond())) {
if(oneExpect.getExpectReceiveTimeSecond() < twoExpect.getExpectReceiveTimeSecond()){
monitorOrderChild.setReceiveTrend(0);
}else{
monitorOrderChild.setReceiveTrend(1);
}
}
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return monitorOrderChild;
}).collect(Collectors.toList());
result.setData(monitorOrderChildList);
return result;*/
return
null
;
}
/**
* 定时任务更新预估运单时间
*
* @return
*/
public
void
orderChildExpect
()
{
LocalDateTime
now
=
LocalDateTime
.
now
();
//查询平台车辆的定位信息
Map
<
String
,
TruckTraceDTO
>
truckTraceMap
=
redisTemplate
.
opsForHash
().
entries
(
RedisConstants
.
ZJXL_TRUCK_TRACE_LIST
);
//查询平台未完结的运单
List
<
Integer
>
list
=
Arrays
.
asList
(
new
Integer
[]{
OrderChildEnum
.
Status
.
CREATED
.
getCode
(),
OrderChildEnum
.
Status
.
PAY
.
getCode
(),
OrderChildEnum
.
Status
.
GO_TO_SEND
.
getCode
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
(),
OrderChildEnum
.
Status
.
LOAD
.
getCode
(),
OrderChildEnum
.
Status
.
GO_TO_RECEIVE
.
getCode
(),
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
(),
OrderChildEnum
.
Status
.
UNLOAD
.
getCode
(),
OrderChildEnum
.
Status
.
UNSETTLE
.
getCode
()});
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
listOrderChild
(
list
);
for
(
OrderChild
child
:
orderChildList
)
{
String
childNo
=
child
.
getChildNo
();
String
truckNo
=
child
.
getTruckNo
();
TruckTraceDTO
truckTraceDTO
=
truckTraceMap
.
get
(
truckNo
);
BigDecimal
truckLongitudeX
=
null
;
BigDecimal
truckLatitudeY
=
null
;
if
(
Objects
.
nonNull
(
truckTraceDTO
))
{
truckLongitudeX
=
truckTraceDTO
.
getLocation
()[
0
];
truckLatitudeY
=
truckTraceDTO
.
getLocation
()[
1
];
}
Integer
childStatus
=
child
.
getStatus
();
String
orderGoodsNo
=
child
.
getOrderGoodsNo
();
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderGoodsNo
).
get
();
//发货地/收货地坐标
BigDecimal
siteLongitudeX
;
BigDecimal
siteLatitudeY
;
//未到达货源地,取货源地坐标
if
(
childStatus
<
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
())
{
siteLongitudeX
=
orderGoods
.
getSendLongitude
();
siteLatitudeY
=
orderGoods
.
getSendLatitude
();
}
else
{
//取目的地坐标
siteLongitudeX
=
orderGoods
.
getReceiveLongitude
();
siteLatitudeY
=
orderGoods
.
getReceiveLatitude
();
}
//调高德获取预估时间
if
(
Objects
.
nonNull
(
truckLongitudeX
)
&&
Objects
.
nonNull
(
truckLatitudeY
))
{
OrderChildExpectDTO
expect
=
new
OrderChildExpectDTO
();
expect
.
setChildNo
(
childNo
);
List
<
GdRouteDTO
>
gdRouteDTOS
=
getRoute
(
truckNo
,
truckLongitudeX
,
truckLatitudeY
,
siteLongitudeX
,
siteLatitudeY
);
Integer
plusTime
=
0
;
if
(
CollectionUtils
.
isNotEmpty
(
gdRouteDTOS
))
{
plusTime
=
gdRouteDTOS
.
get
(
0
).
getDuration
();
}
expect
.
setExpectTransportTimeSecond
(
plusTime
);
LocalDateTime
expectTime
=
now
.
plusSeconds
(
plusTime
);
if
(
childStatus
<
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
())
{
expect
.
setExpectArriveTime
(
expectTime
);
expect
.
setExpectArriveTimeSecond
(
plusTime
);
}
else
{
expect
.
setExpectReceiveTime
(
expectTime
);
expect
.
setExpectReceiveTimeSecond
(
plusTime
);
}
cacheOrderChildExpectData
(
childNo
,
expect
);
}
}
}
/**
* @return
* @Author kavin
* @Description 缓存实时计算的运单预计时间
* @Param [orderChildNo, expect]
**/
public
void
cacheOrderChildExpectData
(
String
orderChildNo
,
OrderChildExpectDTO
expect
)
{
String
orderChildExpectDataKey
=
getOrderChildExpectDataKey
(
orderChildNo
);
//计算结果20分钟过期。定时每5分钟执行一次。所以在此记录过期前,该运单会生成四条记录。保留最新的两条记录即可,剩下两条不再结果集中记录。
redisTemplate
.
opsForValue
().
set
(
orderChildExpectDataKey
,
expect
,
20
,
TimeUnit
.
MINUTES
);
if
(
redisTemplate
.
hasKey
(
RedisConstants
.
ORDER_CHILD_EXPECT_TIME_DATA_KEY_MAP
))
{
List
<
String
>
keyList
=
(
List
<
String
>)
redisTemplate
.
opsForHash
().
get
(
RedisConstants
.
ORDER_CHILD_EXPECT_TIME_DATA_KEY_MAP
,
orderChildNo
);
if
(
CollectionUtils
.
isNotEmpty
(
keyList
))
{
//保留最新的两条记录的key。此次的key在0位置。
keyList
.
add
(
0
,
orderChildExpectDataKey
);
keyList
=
keyList
.
stream
().
limit
(
2
).
collect
(
Collectors
.
toList
());
}
else
{
keyList
=
new
ArrayList
<>();
keyList
.
add
(
orderChildExpectDataKey
);
}
redisTemplate
.
opsForHash
().
put
(
RedisConstants
.
ORDER_CHILD_EXPECT_TIME_DATA_KEY_MAP
,
orderChildNo
,
keyList
);
}
else
{
List
<
String
>
keyList
=
new
ArrayList
<>();
keyList
.
add
(
orderChildExpectDataKey
);
redisTemplate
.
opsForHash
().
put
(
RedisConstants
.
ORDER_CHILD_EXPECT_TIME_DATA_KEY_MAP
,
orderChildNo
,
keyList
);
}
}
/**
* @Author kavin
* @Description 获取运单实时监控位置计算时间的数据key
* @Param [orderChildNo]
* @return
**/
public
String
getOrderChildExpectDataKey
(
String
orderChildNo
)
{
String
id
=
UUID
.
randomUUID
().
toString
();
return
RedisConstants
.
ORDER_CHILD_EXPECT_TIME_DATA
+
orderChildNo
+
":"
+
id
;
}
/**
* @Author kavin
* @Description 通过高德获取时间
* @Param [truckNo, beginLongitude, beginLatitude, endLongitude, endLatitude]
* @return
**/
public
List
<
GdRouteDTO
>
getRoute
(
String
truckNo
,
BigDecimal
beginLongitude
,
BigDecimal
beginLatitude
,
BigDecimal
endLongitude
,
BigDecimal
endLatitude
)
{
List
<
GdRouteDTO
>
gdRouteDTOS
=
null
;
try
{
gdRouteDTOS
=
gdService
.
getRoute
(
beginLongitude
,
beginLatitude
,
endLongitude
,
endLatitude
);
}
catch
(
ServiceSystemException
e
)
{
log
.
info
(
"orderChildExpect==高德地图调用失败,车辆{},异常原因{}"
,
truckNo
,
e
.
getMessage
());
}
return
gdRouteDTOS
;
}
}
}
performance-web/src/main/java/com/clx/performance/utils/HttpUtils.java
浏览文件 @
8f770e79
package
com
.
clx
.
performance
.
utils
;
package
com
.
clx
.
performance
.
utils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.NameValuePair
;
import
org.apache.http.NameValuePair
;
import
org.apache.http.ParseException
;
import
org.apache.http.client.ClientProtocolException
;
import
org.apache.http.client.HttpClient
;
import
org.apache.http.client.HttpClient
;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.client.entity.UrlEncodedFormEntity
;
import
org.apache.http.client.entity.UrlEncodedFormEntity
;
import
org.apache.http.client.methods.HttpDelete
;
import
org.apache.http.client.methods.*
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.client.methods.HttpPut
;
import
org.apache.http.conn.ClientConnectionManager
;
import
org.apache.http.conn.ClientConnectionManager
;
import
org.apache.http.conn.ConnectTimeoutException
;
import
org.apache.http.conn.scheme.Scheme
;
import
org.apache.http.conn.scheme.Scheme
;
import
org.apache.http.conn.scheme.SchemeRegistry
;
import
org.apache.http.conn.scheme.SchemeRegistry
;
import
org.apache.http.conn.ssl.SSLSocketFactory
;
import
org.apache.http.conn.ssl.SSLSocketFactory
;
import
org.apache.http.entity.ByteArrayEntity
;
import
org.apache.http.entity.ByteArrayEntity
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.DefaultHttpClient
;
import
org.apache.http.impl.client.DefaultHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
org.apache.http.message.BasicNameValuePair
;
import
org.apache.http.message.BasicNameValuePair
;
import
org.apache.http.util.EntityUtils
;
import
javax.net.ssl.SSLContext
;
import
javax.net.ssl.SSLContext
;
import
javax.net.ssl.TrustManager
;
import
javax.net.ssl.TrustManager
;
import
javax.net.ssl.X509TrustManager
;
import
javax.net.ssl.X509TrustManager
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.UnsupportedEncodingException
;
import
java.io.UnsupportedEncodingException
;
import
java.net.SocketTimeoutException
;
import
java.net.URLEncoder
;
import
java.net.URLEncoder
;
import
java.nio.charset.Charset
;
import
java.security.KeyManagementException
;
import
java.security.KeyManagementException
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.cert.X509Certificate
;
import
java.security.cert.X509Certificate
;
...
@@ -30,8 +41,17 @@ import java.util.ArrayList;
...
@@ -30,8 +41,17 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
@Slf4j
public
class
HttpUtils
{
public
class
HttpUtils
{
private
static
PoolingHttpClientConnectionManager
connectionManager
;
private
static
String
DEFAULT_STR
=
""
;
private
static
String
UTF_8
=
"UTF-8"
;
private
static
final
int
CONNECT_TIMEOUT
=
10000
;
private
static
final
int
SOCKET_TIMEOUT
=
100000
;
private
static
final
int
REQUESTCONNECT_TIMEOUT
=
2000
;
private
static
final
int
MAX_TOTAL
=
50
;
private
static
final
int
CONNECT_DEFAULT_ROUTE
=
5
;
/**
/**
...
@@ -307,4 +327,84 @@ public class HttpUtils {
...
@@ -307,4 +327,84 @@ public class HttpUtils {
throw
new
RuntimeException
(
ex
);
throw
new
RuntimeException
(
ex
);
}
}
}
}
public
static
String
httpGetRequest
(
String
url
)
throws
Exception
{
HttpGet
httpGet
=
new
HttpGet
(
url
);
return
getResult
(
httpGet
);
}
private
static
void
init
()
{
if
(
connectionManager
==
null
)
{
connectionManager
=
new
PoolingHttpClientConnectionManager
();
connectionManager
.
setMaxTotal
(
50
);
connectionManager
.
setDefaultMaxPerRoute
(
5
);
}
}
private
static
CloseableHttpClient
getHttpClient
()
{
init
();
RequestConfig
.
Builder
builder
=
RequestConfig
.
custom
();
RequestConfig
config
=
builder
.
setSocketTimeout
(
100000
).
setConnectTimeout
(
10000
).
setConnectionRequestTimeout
(
2000
).
build
();
CloseableHttpClient
client
=
HttpClients
.
custom
().
setMaxConnPerRoute
(
5
).
disableConnectionState
().
setDefaultRequestConfig
(
config
).
setConnectionManager
(
connectionManager
).
build
();
return
client
;
}
private
static
String
getResult
(
HttpRequestBase
request
)
throws
IOException
{
CloseableHttpClient
httpClient
=
getHttpClient
();
CloseableHttpResponse
response
=
null
;
InputStream
in
=
null
;
String
var6
;
try
{
response
=
httpClient
.
execute
(
request
);
HttpEntity
entity
=
response
.
getEntity
();
in
=
response
.
getEntity
().
getContent
();
if
(
entity
==
null
)
{
return
DEFAULT_STR
;
}
String
result
=
EntityUtils
.
toString
(
entity
,
Charset
.
forName
(
UTF_8
));
response
.
close
();
var6
=
result
;
}
catch
(
ConnectTimeoutException
var37
)
{
log
.
error
(
"connect timeout {}"
,
var37
);
return
DEFAULT_STR
;
}
catch
(
SocketTimeoutException
var38
)
{
log
.
error
(
"read timeout {}"
,
var38
);
return
DEFAULT_STR
;
}
catch
(
ClientProtocolException
var39
)
{
log
.
error
(
"protocol exception {}"
,
var39
);
return
DEFAULT_STR
;
}
catch
(
ParseException
var40
)
{
log
.
error
(
"parse exception {}"
,
var40
);
return
DEFAULT_STR
;
}
catch
(
IOException
var41
)
{
log
.
error
(
"network exception {}"
,
var41
);
return
DEFAULT_STR
;
}
catch
(
Exception
var42
)
{
log
.
error
(
"other exception {}"
,
var42
);
return
DEFAULT_STR
;
}
finally
{
if
(
response
!=
null
)
{
try
{
response
.
close
();
}
catch
(
IOException
var36
)
{
var36
.
printStackTrace
();
}
}
if
(
in
!=
null
)
{
try
{
in
.
close
();
}
catch
(
IOException
var35
)
{
var35
.
printStackTrace
();
}
}
}
return
var6
;
}
}
}
performance-web/src/main/java/com/clx/performance/utils/gd/GdService.java
0 → 100644
浏览文件 @
8f770e79
package
com
.
clx
.
performance
.
utils
.
gd
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.clx.performance.dto.gd.GdPosDTO
;
import
com.clx.performance.dto.gd.GdRouteDTO
;
import
com.clx.performance.utils.HttpUtils
;
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.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @Author: aiqingguo
* @Description:
* @Date: 2023/2/2 17:25
* @Version: 1.0
*/
@Slf4j
@Service
public
class
GdService
{
private
static
final
String
DIRECTION_API
=
"https://restapi.amap.com/v5/direction/driving"
;
//路线规划
private
static
final
String
GEO_API
=
"https://restapi.amap.com/v3/geocode/geo"
;
//地理编码
private
static
final
String
REGEO_API
=
"https://restapi.amap.com/v3/geocode/regeo"
;
//逆地理编码
private
String
gaodeKey
=
"b2550e16bbc7bf9f6cd168e0f21709fc"
;
public
List
<
GdRouteDTO
>
getRoute
(
BigDecimal
originLongitude
,
BigDecimal
originLatitude
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
)
{
return
getRoute
(
gaodeKey
,
originLongitude
,
originLatitude
,
destinationLongitude
,
destinationLatitude
);
}
public
static
List
<
GdRouteDTO
>
getRoute
(
String
key
,
BigDecimal
originLongitude
,
BigDecimal
originLatitude
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
)
{
log
.
info
(
"高德线路规划开始"
);
List
<
GdRouteDTO
>
routeList
=
new
ArrayList
<>();
String
url
=
DIRECTION_API
+
"?origin="
+
originLongitude
.
doubleValue
()+
","
+
originLatitude
.
doubleValue
()
+
"&destination="
+
destinationLongitude
.
doubleValue
()+
","
+
destinationLatitude
.
doubleValue
()
+
"&output=json&key="
+
key
+
"&extensions=base&show_fields=cost,tmcs"
;
//解析返回的结果
String
resultStr
;
try
{
resultStr
=
HttpUtils
.
httpGetRequest
(
url
);
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常"
);
}
if
(
StringUtils
.
isBlank
(
resultStr
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 返回结果空"
);}
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
resultStr
);
if
(
Objects
.
isNull
(
jsonObject
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 返回结果转换异常, result:"
+
resultStr
);}
// 无效key{"status":"0","info":"INVALID_USER_KEY","infocode":"10001"}
// 没有权限使用相应的服务或者请求接口的路径拼写错误 {"status":"0","info":"SERVICE_NOT_AVAILABLE","infocode":"10002"}
// 访问已超出日访问量 {"status":"0","info":"DAILY_QUERY_OVER_LIMIT","infocode":"10003"}
// 单位时间内访问过于频繁 {"status":"0","info":"ACCESS_TOO_FREQUENT","infocode":"10004"}
// IP访问超限 {"status":"0","info":"IP_QUERY_OVER_LIMIT","infocode":"10010"}
// 账号维度日调用量超出限制 {"status":"0","info":"USER_DAILY_QUERY_OVER_LIMIT","infocode":"10044"}
// 线路规划失败 {"status":"0","info":"ROUTE_FAIL","infocode":"20802"}
// 起点终点距离过长 {"status":"0","info":"OVER_DIRECTION_RANGE","infocode":"20803"}
// 余额耗尽 {"status":"0","info":"QUOTA_PLAN_RUN_OUT","infocode":"40000"}
// 购买服务到期 {"status":"0","info":"SERVICE_EXPIRED","infocode":"40002"}
Integer
status
=
jsonObject
.
getInteger
(
"status"
);
if
(!
Objects
.
equals
(
1
,
status
))
{
Integer
infocode
=
jsonObject
.
getInteger
(
"infocode"
);
if
(
Objects
.
equals
(
10001
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 无效key, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10002
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 没有权限使用相应的服务或者请求接口的路径拼写错误, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10003
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 访问已超出日访问量, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10004
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 单位时间内访问过于频繁, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10010
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, IP访问超限, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10044
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 账号维度日调用量超出限制, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
40000
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 余额耗尽, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
40002
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 购买服务到期, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
20802
,
status
))
{
log
.
info
(
"调用高德线路规划接口异常, 线路规划失败"
);
return
routeList
;
}
else
if
(
Objects
.
equals
(
20803
,
status
))
{
log
.
info
(
"调用高德线路规划接口异常, 起点终点距离过长"
);
return
routeList
;
}
else
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 状态异常, result:"
+
resultStr
);}
}
// 解析线路
JSONObject
route
=
jsonObject
.
getJSONObject
(
"route"
);
if
(
Objects
.
isNull
(
route
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, result:"
+
resultStr
);}
JSONArray
pathList
=
route
.
getJSONArray
(
"paths"
);
if
(
Objects
.
isNull
(
pathList
))
{
return
routeList
;}
if
(
pathList
.
size
()
==
0
)
{
return
routeList
;}
for
(
int
i
=
0
;
i
<
pathList
.
size
();
i
++){
JSONObject
item
=
pathList
.
getJSONObject
(
i
);
GdRouteDTO
line
=
new
GdRouteDTO
();
line
.
setDistance
(
item
.
getInteger
(
"distance"
));
line
.
setDuration
(
item
.
getJSONObject
(
"cost"
).
getInteger
(
"duration"
));
List
<
GdPosDTO
>
posList
=
new
ArrayList
<>();
JSONArray
steps
=
item
.
getJSONArray
(
"steps"
);
Integer
duration
=
0
;
for
(
int
j
=
0
;
j
<
steps
.
size
();
j
++){
JSONArray
tmcs
=
steps
.
getJSONObject
(
j
).
getJSONArray
(
"tmcs"
);
JSONObject
cost
=
steps
.
getJSONObject
(
j
).
getJSONObject
(
"cost"
);
for
(
int
k
=
0
;
k
<
tmcs
.
size
();
k
++){
String
tmcPolyline
=
tmcs
.
getJSONObject
(
k
).
getString
(
"tmc_polyline"
);
String
[]
split
=
tmcPolyline
.
split
(
";"
);
for
(
int
m
=
0
;
m
<
split
.
length
;
m
++){
String
[]
split1
=
split
[
m
].
split
(
","
);
GdPosDTO
pos
=
new
GdPosDTO
();
pos
.
setLongitude
(
new
BigDecimal
(
split1
[
0
]));
pos
.
setLatitude
(
new
BigDecimal
(
split1
[
1
]));
if
(
k
==
0
&&
m
==
0
){
pos
.
setDuration
(
duration
);
if
(
Objects
.
nonNull
(
cost
)
&&
Objects
.
nonNull
(
cost
.
getString
(
"duration"
))){
duration
+=
Integer
.
parseInt
(
cost
.
getString
(
"duration"
));
}
}
if
(
j
==
steps
.
size
()-
1
&&
k
==
tmcs
.
size
()-
1
&&
m
==
split
.
length
-
1
){
pos
.
setDuration
(
duration
);
}
posList
.
add
(
pos
);
}
}
}
line
.
setPosList
(
posList
);
routeList
.
add
(
line
);
}
// 按距离升序
routeList
.
sort
(
Comparator
.
comparingInt
(
GdRouteDTO:
:
getDistance
));
log
.
info
(
"高德线路规划结束, route:{}"
,
routeList
.
size
());
return
routeList
;
}
public
String
getLocation
(
String
address
)
{
return
getLocation
(
gaodeKey
,
address
);
}
public
static
String
getLocation
(
String
key
,
String
address
)
{
log
.
info
(
"高德地理编码开始"
);
String
url
=
GEO_API
+
"?output=json&address="
+
address
+
"&key="
+
key
;
//解析返回的结果
String
resultStr
;
try
{
resultStr
=
HttpUtils
.
httpGetRequest
(
url
);
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常"
);
}
log
.
info
(
"高德地理编码返回结果:"
+
resultStr
);
if
(
StringUtils
.
isBlank
(
resultStr
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 返回结果空"
);}
JSONObject
retJSONObject
=
JSONObject
.
parseObject
(
resultStr
);
if
(
Objects
.
isNull
(
retJSONObject
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 返回结果转换异常, result:"
+
resultStr
);}
Integer
status
=
retJSONObject
.
getInteger
(
"status"
);
if
(!
Objects
.
equals
(
1
,
status
))
{
if
(
Objects
.
equals
(
10001
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 无效key, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10002
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 没有权限使用相应的服务或者请求接口的路径拼写错误, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10003
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 访问已超出日访问量, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10004
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 单位时间内访问过于频繁, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10010
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, IP访问超限, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10044
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 账号维度日调用量超出限制, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
40000
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 余额耗尽, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
40002
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 购买服务到期, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
20802
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 路线计算失败, result:"
+
resultStr
);
}
else
if
(
Objects
.
equals
(
20803
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 起点终点距离过长, result:"
+
resultStr
);
}
else
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, 状态异常, result:"
+
resultStr
);}
}
// 解析
JSONArray
geocodes
=
retJSONObject
.
getJSONArray
(
"geocodes"
);
if
(
Objects
.
isNull
(
geocodes
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常, result:"
+
resultStr
);}
JSONObject
item
=
geocodes
.
getJSONObject
(
0
);
String
location
=
item
.
getString
(
"location"
);
log
.
info
(
"高德地理编码结束, location:{}"
,
location
);
return
location
;
}
public
String
getLonLat
(
String
location
)
{
return
getLonLat
(
gaodeKey
,
location
);
}
public
static
String
getLonLat
(
String
key
,
String
location
)
{
log
.
info
(
"高德逆地理编码开始"
);
String
url
=
REGEO_API
+
"?output=json&location="
+
location
+
"&key="
+
key
;
//解析返回的结果
String
resultStr
;
try
{
resultStr
=
HttpUtils
.
httpGetRequest
(
url
);
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德地理编码接口异常"
);
}
log
.
info
(
"高德逆地理编码返回结果:"
+
resultStr
);
if
(
StringUtils
.
isBlank
(
resultStr
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 返回结果空"
);}
JSONObject
retJSONObject
=
JSONObject
.
parseObject
(
resultStr
);
if
(
Objects
.
isNull
(
retJSONObject
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 返回结果转换异常, result:"
+
resultStr
);}
Integer
status
=
retJSONObject
.
getInteger
(
"status"
);
if
(!
Objects
.
equals
(
1
,
status
))
{
if
(
Objects
.
equals
(
10001
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 无效key, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10002
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 没有权限使用相应的服务或者请求接口的路径拼写错误, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10003
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 访问已超出日访问量, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10004
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 单位时间内访问过于频繁, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10010
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, IP访问超限, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
10044
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 账号维度日调用量超出限制, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
40000
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 余额耗尽, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
40002
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 购买服务到期, result:"
+
resultStr
);}
else
if
(
Objects
.
equals
(
20802
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 路线计算失败, result:"
+
resultStr
);
}
else
if
(
Objects
.
equals
(
20803
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 起点终点距离过长, result:"
+
resultStr
);
}
else
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, 状态异常, result:"
+
resultStr
);}
}
// 解析
JSONObject
regeocode
=
retJSONObject
.
getJSONObject
(
"regeocode"
);
if
(
Objects
.
isNull
(
regeocode
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德逆地理编码接口异常, result:"
+
resultStr
);}
String
detailAddress
=
regeocode
.
getString
(
"formatted_address"
);
log
.
info
(
"高德逆地理编码结束, detailAddress:{}"
,
detailAddress
);
return
detailAddress
;
}
public
BigDecimal
getDistanceRoute
(
BigDecimal
originLongitude
,
BigDecimal
originLatitude
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
)
{
return
distanceRoute
(
gaodeKey
,
originLongitude
,
originLatitude
,
destinationLongitude
,
destinationLatitude
);
}
public
static
BigDecimal
distanceRoute
(
String
key
,
BigDecimal
originLongitude
,
BigDecimal
originLatitude
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
)
{
log
.
info
(
"高德线路规划开始"
);
BigDecimal
distance
=
BigDecimal
.
ZERO
;
String
url
=
DIRECTION_API
+
"?origin="
+
originLongitude
.
doubleValue
()
+
","
+
originLatitude
.
doubleValue
()
+
"&destination="
+
destinationLongitude
.
doubleValue
()
+
","
+
destinationLatitude
.
doubleValue
()
+
"&output=json&key="
+
key
+
"&extensions=base"
;
//解析返回的结果
String
resultStr
;
try
{
resultStr
=
HttpUtils
.
httpGetRequest
(
url
);
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常"
);
}
if
(
StringUtils
.
isBlank
(
resultStr
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 返回结果空"
);
}
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
resultStr
);
if
(
Objects
.
isNull
(
jsonObject
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 返回结果转换异常, result:"
+
resultStr
);
}
// 无效key{"status":"0","info":"INVALID_USER_KEY","infocode":"10001"}
// 没有权限使用相应的服务或者请求接口的路径拼写错误 {"status":"0","info":"SERVICE_NOT_AVAILABLE","infocode":"10002"}
// 访问已超出日访问量 {"status":"0","info":"DAILY_QUERY_OVER_LIMIT","infocode":"10003"}
// 单位时间内访问过于频繁 {"status":"0","info":"ACCESS_TOO_FREQUENT","infocode":"10004"}
// IP访问超限 {"status":"0","info":"IP_QUERY_OVER_LIMIT","infocode":"10010"}
// 账号维度日调用量超出限制 {"status":"0","info":"USER_DAILY_QUERY_OVER_LIMIT","infocode":"10044"}
// 线路规划失败 {"status":"0","info":"ROUTE_FAIL","infocode":"20802"}
// 起点终点距离过长 {"status":"0","info":"OVER_DIRECTION_RANGE","infocode":"20803"}
// 余额耗尽 {"status":"0","info":"QUOTA_PLAN_RUN_OUT","infocode":"40000"}
// 购买服务到期 {"status":"0","info":"SERVICE_EXPIRED","infocode":"40002"}
Integer
status
=
jsonObject
.
getInteger
(
"status"
);
if
(!
Objects
.
equals
(
1
,
status
))
{
Integer
infocode
=
jsonObject
.
getInteger
(
"infocode"
);
if
(
Objects
.
equals
(
10001
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 无效key, result:"
+
resultStr
);
}
else
if
(
Objects
.
equals
(
10002
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 没有权限使用相应的服务或者请求接口的路径拼写错误, result:"
+
resultStr
);
}
else
if
(
Objects
.
equals
(
10003
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 访问已超出日访问量, result:"
+
resultStr
);
}
else
if
(
Objects
.
equals
(
10004
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 单位时间内访问过于频繁, result:"
+
resultStr
);
}
else
if
(
Objects
.
equals
(
10010
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, IP访问超限, result:"
+
resultStr
);
}
else
if
(
Objects
.
equals
(
10044
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 账号维度日调用量超出限制, result:"
+
resultStr
);
}
else
if
(
Objects
.
equals
(
40000
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 余额耗尽, result:"
+
resultStr
);
}
else
if
(
Objects
.
equals
(
40002
,
status
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 购买服务到期, result:"
+
resultStr
);
}
else
if
(
Objects
.
equals
(
20802
,
status
))
{
log
.
info
(
"调用高德线路规划接口异常, 线路规划失败"
);
return
distance
;
}
else
if
(
Objects
.
equals
(
20803
,
status
))
{
log
.
info
(
"调用高德线路规划接口异常, 起点终点距离过长"
);
return
distance
;
}
else
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, 状态异常, result:"
+
resultStr
);
}
}
// 解析线路
JSONObject
route
=
jsonObject
.
getJSONObject
(
"route"
);
if
(
Objects
.
isNull
(
route
))
{
throw
new
ServiceSystemException
(
ResultCodeEnum
.
FAIL
,
"调用高德线路规划接口异常, result:"
+
resultStr
);
}
JSONArray
pathList
=
route
.
getJSONArray
(
"paths"
);
if
(
Objects
.
isNull
(
pathList
))
{
return
distance
;
}
if
(
pathList
.
size
()
==
0
)
{
return
distance
;
}
JSONObject
pathObject
=
pathList
.
getJSONObject
(
0
);
Integer
distanceTemp
=
pathObject
.
getInteger
(
"distance"
);
distance
=
up2NumPoint
(
new
BigDecimal
(
distanceTemp
).
movePointLeft
(
3
));
return
distance
;
}
public
static
BigDecimal
up2NumPoint
(
BigDecimal
value
)
{
return
!
Objects
.
isNull
(
value
)
&&
BigDecimal
.
ZERO
.
compareTo
(
value
)
!=
0
?
value
.
setScale
(
2
,
4
)
:
BigDecimal
.
ZERO
;
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论