Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
295ce22a
提交
295ce22a
authored
1月 18, 2024
作者:
liuhaiquan
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/v9.6_network_small_version_20240102'
上级
43368b20
761ceeb0
显示空白字符变更
内嵌
并排
正在显示
39 个修改的文件
包含
1468 行增加
和
540 行删除
+1468
-540
TransportSyncTypeEnum.java
...java/com/clx/performance/enums/TransportSyncTypeEnum.java
+39
-0
ThirdOrderChildInvoiceStatusDTO.java
...aram/feign/transport/ThirdOrderChildInvoiceStatusDTO.java
+18
-0
ThirdOrderChildInvoiceStatusParam.java
...am/feign/transport/ThirdOrderChildInvoiceStatusParam.java
+21
-0
ThirdOrderChildRiskStatusDTO.java
...e/param/feign/transport/ThirdOrderChildRiskStatusDTO.java
+25
-0
ThirdOrderChildRiskStatusParam.java
...param/feign/transport/ThirdOrderChildRiskStatusParam.java
+5
-13
OrderTruckBindCancelParam.java
.../com/clx/performance/vo/mq/OrderTruckBindCancelParam.java
+20
-0
CarrierPageSettlementDriverDetailVO.java
...c/carrier/settle/CarrierPageSettlementDriverDetailVO.java
+2
-0
OrderCancelComponent.java
...a/com/clx/performance/component/OrderCancelComponent.java
+91
-87
OwnerAccountComponent.java
.../com/clx/performance/component/OwnerAccountComponent.java
+55
-0
RabbitBeanConfig.java
...ain/java/com/clx/performance/config/RabbitBeanConfig.java
+51
-0
RabbitKeyConstants.java
...java/com/clx/performance/constant/RabbitKeyConstants.java
+13
-0
OrderCancelFeignController.java
...formance/controller/feign/OrderCancelFeignController.java
+1
-7
OrderCancelController.java
.../clx/performance/controller/pc/OrderCancelController.java
+6
-6
OwnerAccountController.java
...rformance/controller/pc/owner/OwnerAccountController.java
+1
-1
TransportSyncController.java
...ance/controller/pc/transport/TransportSyncController.java
+12
-3
TempController.java
...a/com/clx/performance/controller/temp/TempController.java
+12
-0
OrderChildSyncTransportInvoiceRecordDao.java
...formance/dao/OrderChildSyncTransportInvoiceRecordDao.java
+17
-0
OrderGoodsTruckBindDao.java
.../java/com/clx/performance/dao/OrderGoodsTruckBindDao.java
+2
-0
OrderChildSyncTransportInvoiceRecordDaoImpl.java
...dao/impl/OrderChildSyncTransportInvoiceRecordDaoImpl.java
+24
-0
OrderGoodsTruckBindDaoImpl.java
.../clx/performance/dao/impl/OrderGoodsTruckBindDaoImpl.java
+9
-0
OrderCancelResult.java
.../main/java/com/clx/performance/dto/OrderCancelResult.java
+15
-0
OrderGoodsCancelDTO.java
...ain/java/com/clx/performance/dto/OrderGoodsCancelDTO.java
+23
-0
TransportFeignService.java
...java/com/clx/performance/feign/TransportFeignService.java
+5
-6
OrderChildSyncTransportInvoiceExceptionJob.java
...mance/job/OrderChildSyncTransportInvoiceExceptionJob.java
+106
-0
OrderChildSyncTransportListener.java
...performance/listener/OrderChildSyncTransportListener.java
+274
-0
OrderGoodsDriverBindListener.java
...lx/performance/listener/OrderGoodsDriverBindListener.java
+53
-0
OrderChildSyncTransportInvoiceRecordMapper.java
...ce/mapper/OrderChildSyncTransportInvoiceRecordMapper.java
+12
-0
OrderChildSyncTransportInvoiceRecord.java
...rformance/model/OrderChildSyncTransportInvoiceRecord.java
+55
-0
OrderCancelService.java
.../java/com/clx/performance/service/OrderCancelService.java
+2
-2
OrderChildSyncTransportInvoiceRecordService.java
.../service/OrderChildSyncTransportInvoiceRecordService.java
+12
-0
OrderCancelServiceImpl.java
.../clx/performance/service/impl/OrderCancelServiceImpl.java
+248
-241
OrderChildSyncTransportInvoiceRecordServiceImpl.java
...impl/OrderChildSyncTransportInvoiceRecordServiceImpl.java
+13
-0
OrderGoodsServiceImpl.java
...m/clx/performance/service/impl/OrderGoodsServiceImpl.java
+120
-76
OwnerAccountServiceImpl.java
...clx/performance/service/impl/OwnerAccountServiceImpl.java
+0
-3
NetworkDriverRunningWaterRecordServiceImpl.java
...pl/settle/NetworkDriverRunningWaterRecordServiceImpl.java
+10
-1
SettlementMqHandlerServiceImpl.java
...e/service/impl/settle/SettlementMqHandlerServiceImpl.java
+1
-1
SettlementServiceImpl.java
...erformance/service/impl/settle/SettlementServiceImpl.java
+75
-93
NetworkDriverRunningWaterRecordProvider.java
...vider/settle/NetworkDriverRunningWaterRecordProvider.java
+4
-0
GoodsOrderStrategy.java
...java/com/clx/performance/strategy/GoodsOrderStrategy.java
+16
-0
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/TransportSyncTypeEnum.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Objects
;
import
java.util.Optional
;
public
enum
TransportSyncTypeEnum
{
;
@Getter
@AllArgsConstructor
public
enum
Type
{
NO_PASS
(
1
,
"未通过风控异常"
),
EXCEPTION
(
2
,
"同步异常"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
Type
>
getByCode
(
Integer
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
Objects
.
equals
(
e
.
getCode
(),
code
)).
findFirst
();
}
public
static
Optional
<
Type
>
getByName
(
String
name
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
Objects
.
equals
(
e
.
getMsg
(),
name
)).
findFirst
();
}
public
static
Integer
getCodeByName
(
String
name
)
{
return
getByName
(
name
).
map
(
TransportSyncTypeEnum
.
Type
::
getCode
).
orElse
(
3
);
}
}
}
performance-api/src/main/java/com/clx/performance/param/feign/transport/ThirdOrderChildInvoiceStatusDTO.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
param
.
feign
.
transport
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
ThirdOrderChildInvoiceStatusDTO
{
@ApiModelProperty
(
value
=
"开票状态:0未开票 1已开票 2运单不存在"
)
private
Integer
status
;
}
performance-api/src/main/java/com/clx/performance/param/feign/transport/ThirdOrderChildInvoiceStatusParam.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
param
.
feign
.
transport
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.validation.constraints.NotBlank
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
ThirdOrderChildInvoiceStatusParam
{
@ApiModelProperty
(
value
=
"运单编号"
)
@NotBlank
(
message
=
"运单编号不能为空"
)
private
String
childNo
;
}
performance-api/src/main/java/com/clx/performance/param/feign/transport/ThirdOrderChildRiskStatusDTO.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
param
.
feign
.
transport
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
ThirdOrderChildRiskStatusDTO
{
@ApiModelProperty
(
value
=
"运单编号"
)
private
String
childNo
;
@ApiModelProperty
(
value
=
"合规状态:0不合规 1合规 2未同步 "
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"风控原因"
)
private
String
riskReason
;
}
performance-api/src/main/java/com/clx/performance/param/feign/transport/ThirdOrderChildRiskStatusParam.java
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
param
.
feign
.
transport
;
package
com
.
clx
.
performance
.
param
.
feign
.
transport
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.*
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
javax.validation.constraints.NotBlank
;
import
lombok.ToString
;
@Getter
@Getter
@Setter
@Setter
@ToString
@Builder
@NoArgsConstructor
public
class
ThirdOrderChildRiskStatusParam
{
public
class
ThirdOrderChildRiskStatusParam
{
@ApiModelProperty
(
value
=
"运单编号"
)
@ApiModelProperty
(
value
=
"运单编号"
)
@NotBlank
(
message
=
"运单编号不能为空"
)
private
String
childNo
;
private
String
childNo
;
@ApiModelProperty
(
value
=
"合规状态:0不合规 1合规 2未同步 "
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"风控原因"
)
private
String
riskReason
;
}
}
performance-api/src/main/java/com/clx/performance/vo/mq/OrderTruckBindCancelParam.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
vo
.
mq
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
OrderTruckBindCancelParam
{
//货单编号
private
String
orderGoodsNo
;
//订单编号
private
String
orderNo
;
}
performance-api/src/main/java/com/clx/performance/vo/pc/carrier/settle/CarrierPageSettlementDriverDetailVO.java
浏览文件 @
295ce22a
...
@@ -59,6 +59,8 @@ public class CarrierPageSettlementDriverDetailVO {
...
@@ -59,6 +59,8 @@ public class CarrierPageSettlementDriverDetailVO {
@MoneyOutConvert
@MoneyOutConvert
@ApiModelProperty
(
value
=
"预付运费金额"
)
@ApiModelProperty
(
value
=
"预付运费金额"
)
private
BigDecimal
prepayFreight
;
private
BigDecimal
prepayFreight
;
@ApiModelProperty
(
value
=
"预付运费标示 0:未预付 1:已预付"
)
private
Integer
prepayFreightFlag
;
@MoneyOutConvert
@MoneyOutConvert
@ApiModelProperty
(
value
=
"结算金额"
)
@ApiModelProperty
(
value
=
"结算金额"
)
private
BigDecimal
settlementFreight
;
private
BigDecimal
settlementFreight
;
...
...
performance-web/src/main/java/com/clx/performance/component/OrderCancelComponent.java
浏览文件 @
295ce22a
...
@@ -11,19 +11,16 @@ import com.clx.order.vo.feign.FeignOrderInfoVO;
...
@@ -11,19 +11,16 @@ import com.clx.order.vo.feign.FeignOrderInfoVO;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.d
ao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.d
to.OrderCancelResult
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.extranal.user.DriverService
;
import
com.clx.performance.extranal.user.DriverService
;
import
com.clx.performance.extranal.user.OrderService
;
import
com.clx.performance.extranal.user.OrderService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.param.pc.owner.ThawAccountParam
;
import
com.clx.performance.service.IntegralMqService
;
import
com.clx.performance.service.OrderChildLogService
;
import
com.clx.performance.service.OrderChildLogService
;
import
com.clx.performance.service.OrderGoodsService
;
import
com.clx.performance.service.OrderGoodsService
;
import
com.clx.performance.service.OrderGoodsTruckBindService
;
import
com.clx.performance.service.OrderGoodsTruckBindService
;
import
com.clx.performance.service.OwnerAccountService
;
import
com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService
;
import
com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService
;
import
com.clx.performance.service.child.OrderChildPostService
;
import
com.clx.performance.service.child.OrderChildPostService
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
...
@@ -39,6 +36,7 @@ import org.springframework.stereotype.Component;
...
@@ -39,6 +36,7 @@ import org.springframework.stereotype.Component;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.*
;
import
java.util.*
;
import
java.util.function.BiFunction
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Component
@Component
...
@@ -66,11 +64,6 @@ public class OrderCancelComponent implements InitializingBean {
...
@@ -66,11 +64,6 @@ public class OrderCancelComponent implements InitializingBean {
@Autowired
@Autowired
private
BreakContractSettlementOwnerService
breakContractSettlementOwnerService
;
private
BreakContractSettlementOwnerService
breakContractSettlementOwnerService
;
public
static
Map
<
Integer
,
String
>
statusCodeMap
=
new
HashMap
<>();
@Autowired
private
IntegralMqService
integralMqService
;
@Autowired
@Autowired
private
OrderChildLogService
orderChildLogService
;
private
OrderChildLogService
orderChildLogService
;
...
@@ -84,80 +77,52 @@ public class OrderCancelComponent implements InitializingBean {
...
@@ -84,80 +77,52 @@ public class OrderCancelComponent implements InitializingBean {
private
OrderGoodsService
orderGoodsService
;
private
OrderGoodsService
orderGoodsService
;
@Autowired
@Autowired
SettlementOwnerDetailDao
settlementOwnerDetailDao
;
private
OwnerAccountComponent
ownerAccountComponent
;
@Autowired
public
static
Map
<
Integer
,
String
>
statusCodeMap
=
new
HashMap
<>();
OwnerAccountService
ownerAccountService
;
public
static
Map
<
Integer
,
BiFunction
<
String
,
Integer
,
OrderCancelResult
>>
cancelTypeMap
=
new
HashMap
<>();
/**
* 货主取消订单
* @param param
* @return
*/
public
List
<
String
>
ownerProcess
(
OrderCancelParam
param
)
{
public
List
<
String
>
ownerProcess
(
OrderCancelParam
param
)
{
String
orderNo
=
param
.
getOrderNo
();
String
orderNo
=
param
.
getOrderNo
();
List
<
OrderGoods
>
orderGoodsList
=
null
;
Integer
orderStatusCode
=
OrderEnum
.
Status
.
CANCELED
.
getCode
();
Integer
orderStatusCode
=
OrderEnum
.
Status
.
CANCELED
.
getCode
();
String
now
=
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
(),
"yyyy-MM-dd HH:mm:ss"
).
get
();
List
<
String
>
childNoList
=
new
LinkedList
<>();
switch
(
param
.
getCancelType
())
{
//根据不同的取消类型执行不同的取消逻辑
case
1
:
//单纯取消订单
OrderCancelResult
result
=
cancelTypeMap
.
get
(
param
.
getCancelType
()).
apply
(
orderNo
,
orderStatusCode
);
log
.
info
(
"1:货主单纯取消订单"
);
orderStatusCode
=
result
.
getOrderStatusCode
();
if
(
CollectionUtil
.
isNotEmpty
(
orderChildDao
.
getOrderChildByOrderNo
(
orderNo
)))
{
this
.
breakContractSettlementOwner
(
orderNo
,
orderStatusCode
,
param
.
getCancelType
());
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
log
.
info
(
"执行货主取消订单更改状态"
);
}
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(
CollectionUtil
.
isNotEmpty
(
orderGoodsList
))
{
List
<
Integer
>
ids
=
new
LinkedList
<>();
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
if
(
orderGoods
.
getPendingOrderWay
().
equals
(
PendingOrderWayStatusEnum
.
Status
.
DX
.
getCode
()))
{
orderGoodsTruckBindService
.
updateCancelTruckBind
(
orderGoods
.
getOrderGoodsNo
());
}
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
ids
.
add
(
orderGoods
.
getId
());
}
orderGoodsDao
.
batchUpdateOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
(),
ids
);
}
//1网运单 2普通单
Integer
invoiceType
=
settlementOwnerDetailDao
.
getInvoiceType
(
orderNo
);
log
.
info
(
"invoiceType={}"
,
invoiceType
);
ThawAccountParam
thawAccountParam
=
new
ThawAccountParam
();
if
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
ORDINARY
.
getCode
().
equals
(
invoiceType
))
{
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
ORDINARY
.
getCode
());
}
else
{
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
NETWORK
.
getCode
());
}
}
thawAccountParam
.
setOrderNo
(
orderNo
);
ownerAccountComponent
.
thawOwnerAccountByOrderNo
(
orderNo
);
log
.
info
(
"执行解冻账户,参数:{}"
,
JSONUtil
.
parse
(
thawAccountParam
));
List
<
String
>
childNoList
=
result
.
getChildNoList
();
ownerAccountService
.
ownerAccountThaw
(
thawAccountParam
);
if
(
CollectionUtil
.
isNotEmpty
(
childNoList
))
{
break
;
for
(
String
childNo
:
childNoList
)
{
case
2
:
//取消未拉运吨数的货单
// 订单取消
log
.
info
(
"2:货主取消未拉运吨数的货单"
);
orderChildPostService
.
orderCancel
(
childNo
);
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
orderGoods
.
getExtractWeight
())
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
}
if
(
orderGoods
.
getPendingOrderWay
().
equals
(
PendingOrderWayStatusEnum
.
Status
.
DX
.
getCode
()))
{
orderGoodsTruckBindService
.
updateCancelTruckBind
(
orderGoods
.
getOrderGoodsNo
());
}
}
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
())
;
return
childNoList
;
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
break
;
/**
* 货主取消未拉运+未到达货源地吨数
case
3
:
//取消未拉运+未到达货源地吨数
* @param orderNo
* @param orderStatusCode
* @return
*/
private
OrderCancelResult
cancelOrderAndOrderGoodsAndOrderChild
(
String
orderNo
,
Integer
orderStatusCode
)
{
log
.
info
(
"3:货主取消未拉运+未到达货源地吨数"
);
log
.
info
(
"3:货主取消未拉运+未到达货源地吨数"
);
String
now
=
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
()).
get
();
List
<
String
>
childNoList
=
new
LinkedList
<>();
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
log
.
info
(
"执行货主取消未拉运+未到达货源地吨数,当前运单个数"
+
orderChildren
.
size
());
log
.
info
(
"执行货主取消未拉运+未到达货源地吨数,当前运单个数"
+
orderChildren
.
size
());
for
(
OrderChild
orderChild
:
orderChildren
)
{
for
(
OrderChild
orderChild
:
orderChildren
)
{
...
@@ -176,12 +141,12 @@ public class OrderCancelComponent implements InitializingBean {
...
@@ -176,12 +141,12 @@ public class OrderCancelComponent implements InitializingBean {
log
.
info
(
"childNoList:{}"
,
childNoList
);
log
.
info
(
"childNoList:{}"
,
childNoList
);
orderChildDao
.
batchUpdateOrderChildStatus
(
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
"货主取消"
,
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
"货主取消"
,
now
,
now
,
childNoList
);
now
,
now
,
childNoList
);
orderChildMap
=
orderChildren
.
stream
()
orderChildMap
=
orderChildren
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
}
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
OrderGoods
update
=
new
OrderGoods
();
...
@@ -208,27 +173,64 @@ public class OrderCancelComponent implements InitializingBean {
...
@@ -208,27 +173,64 @@ public class OrderCancelComponent implements InitializingBean {
orderGoodsDao
.
updateEntityByKey
(
update
);
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
return
OrderCancelResult
.
builder
().
orderStatusCode
(
orderStatusCode
).
childNoList
(
childNoList
).
build
();
break
;
default
:
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"参数有误"
);
}
}
this
.
breakContractSettlementOwner
(
orderNo
,
orderStatusCode
,
param
.
getCancelType
());
/**
* 货主取消未拉运吨数的货单
* @param orderNo
* @param orderStatusCode
* @return
*/
public
OrderCancelResult
cancelOrderAndOrderGoods
(
String
orderNo
,
Integer
orderStatusCode
)
{
log
.
info
(
"2:货主取消未拉运吨数的货单"
);
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
orderGoods
.
getExtractWeight
())
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
if
(
orderGoods
.
getPendingOrderWay
().
equals
(
PendingOrderWayStatusEnum
.
Status
.
DX
.
getCode
()))
{
orderGoodsTruckBindService
.
updateCancelTruckBind
(
orderGoods
.
getOrderGoodsNo
());
}
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
log
.
info
(
"执行货主取消订单更改状态"
);
orderGoodsDao
.
updateEntityByKey
(
update
);
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
}
for
(
String
childNo
:
childNoList
)
{
return
OrderCancelResult
.
builder
().
orderStatusCode
(
orderStatusCode
).
build
();
// 订单取消
orderChildPostService
.
orderCancel
(
childNo
);
}
}
return
childNoList
;
/**
* 货主只取消订单
* @param orderNo
* @param orderStatusCode
* @return
*/
private
OrderCancelResult
cancelOrder
(
String
orderNo
,
Integer
orderStatusCode
)
{
List
<
OrderGoods
>
orderGoodsList
;
log
.
info
(
"1:货主只取消订单"
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildDao
.
getOrderChildByOrderNo
(
orderNo
)))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(
CollectionUtil
.
isNotEmpty
(
orderGoodsList
))
{
List
<
Integer
>
ids
=
new
LinkedList
<>();
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
if
(
orderGoods
.
getPendingOrderWay
().
equals
(
PendingOrderWayStatusEnum
.
Status
.
DX
.
getCode
()))
{
orderGoodsTruckBindService
.
updateCancelTruckBind
(
orderGoods
.
getOrderGoodsNo
());
}
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
ids
.
add
(
orderGoods
.
getId
());
}
orderGoodsDao
.
batchUpdateOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
(),
ids
);
}
return
OrderCancelResult
.
builder
().
orderStatusCode
(
orderStatusCode
).
build
();
}
}
public
void
backFillTonnage
(
OrderGoods
orderGoods
,
BigDecimal
weight
)
{
public
void
backFillTonnage
(
OrderGoods
orderGoods
,
BigDecimal
weight
)
{
...
@@ -424,6 +426,8 @@ public class OrderCancelComponent implements InitializingBean {
...
@@ -424,6 +426,8 @@ public class OrderCancelComponent implements InitializingBean {
statusCodeMap
.
put
(
OrderEnum
.
Status
.
POST_ORDER
.
getCode
(),
OrderEnum
.
Status
.
POST_ORDER
.
getName
());
statusCodeMap
.
put
(
OrderEnum
.
Status
.
POST_ORDER
.
getCode
(),
OrderEnum
.
Status
.
POST_ORDER
.
getName
());
statusCodeMap
.
put
(
OrderEnum
.
Status
.
ON_ORDER
.
getCode
(),
OrderEnum
.
Status
.
ON_ORDER
.
getName
());
statusCodeMap
.
put
(
OrderEnum
.
Status
.
ON_ORDER
.
getCode
(),
OrderEnum
.
Status
.
ON_ORDER
.
getName
());
statusCodeMap
.
put
(
OrderEnum
.
Status
.
IN_TRANSIT
.
getCode
(),
OrderEnum
.
Status
.
IN_TRANSIT
.
getName
());
statusCodeMap
.
put
(
OrderEnum
.
Status
.
IN_TRANSIT
.
getCode
(),
OrderEnum
.
Status
.
IN_TRANSIT
.
getName
());
cancelTypeMap
.
put
(
1
,
this
::
cancelOrder
);
cancelTypeMap
.
put
(
2
,
this
::
cancelOrderAndOrderGoods
);
cancelTypeMap
.
put
(
3
,
this
::
cancelOrderAndOrderGoodsAndOrderChild
);
}
}
}
}
performance-web/src/main/java/com/clx/performance/component/OwnerAccountComponent.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
component
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.performance.enums.OwnerAccountEnum
;
import
com.clx.performance.param.pc.owner.ThawAccountParam
;
import
com.clx.performance.service.OwnerAccountService
;
import
com.clx.performance.service.settle.SettlementOwnerDetailService
;
import
com.clx.performance.service.settle.SettlementOwnerService
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
@Component
@Slf4j
@AllArgsConstructor
public
class
OwnerAccountComponent
{
private
final
SettlementOwnerDetailService
settlementOwnerDetailService
;
private
final
OwnerAccountService
ownerAccountService
;
private
final
SettlementOwnerService
settlementOwnerService
;
private
final
OrderFeign
orderFeign
;
public
void
thawOwnerAccountByOrderNo
(
String
orderNo
)
{
Boolean
flag
=
settlementOwnerDetailService
.
thawAndLockSettlement
(
orderNo
);
if
(
flag
)
{
log
.
info
(
"当前存在在途运单"
);
orderFeign
.
saveOrderSettlementJobRecord
(
orderNo
);
return
;
}
//TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
Integer
invoiceType
=
settlementOwnerDetailService
.
getInvoiceType
(
orderNo
);
//1 网运单 2 普通单
log
.
info
(
"invoiceType={}"
,
invoiceType
);
ThawAccountParam
thawAccountParam
=
new
ThawAccountParam
();
thawAccountParam
.
setOrderNo
(
orderNo
);
if
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
ORDINARY
.
getCode
().
equals
(
invoiceType
))
{
log
.
info
(
"执行普通单解冻"
);
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
ORDINARY
.
getCode
());
}
else
{
log
.
info
(
"执行网运单解冻"
);
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
NETWORK
.
getCode
());
}
log
.
info
(
"执行解冻账户,参数:{}"
,
JSONUtil
.
parse
(
thawAccountParam
));
ownerAccountService
.
ownerAccountThaw
(
thawAccountParam
);
//通知结算单锁定
settlementOwnerService
.
updateStatusByOrderNo
(
orderNo
,
1
,
10
,
20
);
}
}
performance-web/src/main/java/com/clx/performance/config/RabbitBeanConfig.java
浏览文件 @
295ce22a
...
@@ -115,4 +115,55 @@ public class RabbitBeanConfig {
...
@@ -115,4 +115,55 @@ public class RabbitBeanConfig {
public
Binding
orderCancelExchangeBind
()
{
public
Binding
orderCancelExchangeBind
()
{
return
BindingBuilder
.
bind
(
orderCancelQueue
()).
to
(
orderCancelExchange
()).
with
(
RabbitKeyConstants
.
ORDER_CANCEL_ROUTE_KEY
);
return
BindingBuilder
.
bind
(
orderCancelQueue
()).
to
(
orderCancelExchange
()).
with
(
RabbitKeyConstants
.
ORDER_CANCEL_ROUTE_KEY
);
}
}
/**
* 运单同步网络货运队列
* @return
*/
@Bean
public
Queue
orderChildSyncTransportQueue
()
{
return
new
Queue
(
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_QUEUE
,
true
,
false
,
false
);
}
/**
* 运单同步网络货运交换机
**/
@Bean
public
DirectExchange
orderChildSyncTransportExchange
()
{
return
new
DirectExchange
(
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_EXCHANGE
);
}
/**
* 运单同步网络货运绑定
*/
@Bean
public
Binding
orderChildSyncTransportExchangeBind
()
{
return
BindingBuilder
.
bind
(
orderChildSyncTransportQueue
()).
to
(
orderChildSyncTransportExchange
()).
with
(
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY
);
}
/**
* 处理延迟消息orderGoodsTruckBind
* @return
*/
@Bean
public
Queue
orderGoodsTruckBindQueue
()
{
return
new
Queue
(
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_QUEUE
,
true
,
false
,
false
);
}
/**
* 处理延迟消息orderGoodsTruckBind
**/
@Bean
public
CustomExchange
orderGoodsTruckBindExchange
()
{
Map
<
String
,
Object
>
arguments
=
new
HashMap
<>();
//设置路由模式 direct模式
arguments
.
put
(
"x-delayed-type"
,
"direct"
);
return
new
CustomExchange
(
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_EXCHANGE
,
"x-delayed-message"
,
true
,
false
,
arguments
);
}
//绑定交换机,队列和routingKey
@Bean
public
Binding
orderGoodsTruckBindBindingDelayedExchange
(
@Qualifier
(
"orderGoodsTruckBindQueue"
)
Queue
queue
,
@Qualifier
(
"orderGoodsTruckBindExchange"
)
CustomExchange
customExchange
)
{
return
BindingBuilder
.
bind
(
queue
).
to
(
customExchange
).
with
(
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_ROUTE_KEY
).
noargs
();
}
}
}
performance-web/src/main/java/com/clx/performance/constant/RabbitKeyConstants.java
浏览文件 @
295ce22a
...
@@ -63,11 +63,24 @@ public class RabbitKeyConstants {
...
@@ -63,11 +63,24 @@ public class RabbitKeyConstants {
public
static
final
String
ORDER_LARGE_SCREEN_QUEUE
=
"clx-order.order.large.screen.queue"
;
public
static
final
String
ORDER_LARGE_SCREEN_QUEUE
=
"clx-order.order.large.screen.queue"
;
public
static
final
String
ORDER_CHILD_SYNC_TRANSPORT_QUEUE
=
"clx-order.order.child.sync.transport.queue"
;
public
static
final
String
ORDER_CHILD_SYNC_TRANSPORT_EXCHANGE
=
"clx-order.order.child.sync.transport.exchange"
;
public
static
final
String
ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY
=
"clx-order.order.child.sync.transport.route.key"
;
public
static
final
String
ORDER_THAW_SETTLEMENT_LAZY_EXCHANGE
=
"clx-order.thaw.settlement.lazy.exchange"
;
public
static
final
String
ORDER_THAW_SETTLEMENT_LAZY_ROUTE_KEY
=
"clx-order.thaw.settlement.lazy.route.key"
;
// 预付运费和保证金 自动冻结 触发消息队列
// 预付运费和保证金 自动冻结 触发消息队列
public
static
final
String
FREEZE_TRIGGER_EXCHANGE
=
"clx-order.freeze.trigger.exchange"
;
public
static
final
String
FREEZE_TRIGGER_EXCHANGE
=
"clx-order.freeze.trigger.exchange"
;
public
static
final
String
FREEZE_TRIGGER_QUEUE
=
"clx-order.freeze.trigger.queue"
;
public
static
final
String
FREEZE_TRIGGER_QUEUE
=
"clx-order.freeze.trigger.queue"
;
public
static
final
String
FREEZE_TRIGGER_ROUTING_KEY
=
"clx-order.freeze.trigger.routing.key"
;
public
static
final
String
FREEZE_TRIGGER_ROUTING_KEY
=
"clx-order.freeze.trigger.routing.key"
;
public
static
final
String
ORDER_TRUCK_BIND_LAZY_EXCHANGE
=
"clx-order.truck.bind.lazy.exchange"
;
public
static
final
String
ORDER_TRUCK_BIND_LAZY_QUEUE
=
"clx-order.truck.bind.lazy.queue"
;
public
static
final
String
ORDER_TRUCK_BIND_LAZY_ROUTE_KEY
=
"clx-order.truck.bind.lazy.route.key"
;
}
}
performance-web/src/main/java/com/clx/performance/controller/feign/OrderCancelFeignController.java
浏览文件 @
295ce22a
...
@@ -2,7 +2,6 @@ package com.clx.performance.controller.feign;
...
@@ -2,7 +2,6 @@ package com.clx.performance.controller.feign;
import
com.clx.performance.param.pc.OrderCancelFeignParam
;
import
com.clx.performance.param.pc.OrderCancelFeignParam
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.service.OrderCancelService
;
import
com.clx.performance.service.OrderCancelService
;
import
com.msl.common.result.Result
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
...
@@ -26,14 +25,9 @@ public class OrderCancelFeignController {
...
@@ -26,14 +25,9 @@ public class OrderCancelFeignController {
private
final
OrderCancelService
orderCancelService
;
private
final
OrderCancelService
orderCancelService
;
@ApiOperation
(
value
=
"承运
单
发起订单取消货主端进行确认"
,
notes
=
"<br>By:胡宇帆"
)
@ApiOperation
(
value
=
"承运
端
发起订单取消货主端进行确认"
,
notes
=
"<br>By:胡宇帆"
)
@PostMapping
(
"/orderCancel"
)
@PostMapping
(
"/orderCancel"
)
public
Result
<
Object
>
orderCancel
(
@RequestBody
OrderCancelFeignParam
param
)
{
public
Result
<
Object
>
orderCancel
(
@RequestBody
OrderCancelFeignParam
param
)
{
// OrderCancelParam cancelParam = new OrderCancelParam();
// cancelParam.setOrderNo(param.getOrderNo());
// cancelParam.setCancelType(3);
// cancelParam.setCreateByType(1);
// orderCancelService.platformCancelOrderPrePC(cancelParam);
orderCancelService
.
ownerConfirmCancelOrderPre
(
param
.
getOrderNo
());
orderCancelService
.
ownerConfirmCancelOrderPre
(
param
.
getOrderNo
());
return
Result
.
ok
();
return
Result
.
ok
();
}
}
...
...
performance-web/src/main/java/com/clx/performance/controller/pc/OrderCancelController.java
浏览文件 @
295ce22a
...
@@ -34,12 +34,12 @@ public class OrderCancelController {
...
@@ -34,12 +34,12 @@ public class OrderCancelController {
private
final
OrderCancelService
orderCancelService
;
private
final
OrderCancelService
orderCancelService
;
@ApiOperation
(
value
=
"承运端取消订单"
,
notes
=
"<br>By:胡宇帆"
)
//
@ApiOperation(value = "承运端取消订单", notes = "<br>By:胡宇帆")
@PostMapping
(
"/platformCancelOrderPre"
)
//
@PostMapping("/platformCancelOrderPre")
public
Result
<
Object
>
platformCancelOrderPre
(
@RequestBody
OrderCancelParam
param
)
{
//
public Result<Object> platformCancelOrderPre(@RequestBody OrderCancelParam param) {
orderCancelService
.
platformCancelOrderPre
(
param
);
//
orderCancelService.platformCancelOrderPre(param);
return
Result
.
ok
();
//
return Result.ok();
}
//
}
@ApiOperation
(
value
=
"货主端取消订单"
,
notes
=
"<br>By:胡宇帆"
)
@ApiOperation
(
value
=
"货主端取消订单"
,
notes
=
"<br>By:胡宇帆"
)
@PostMapping
(
"/ownCancelOrderPre"
)
@PostMapping
(
"/ownCancelOrderPre"
)
...
...
performance-web/src/main/java/com/clx/performance/controller/pc/owner/OwnerAccountController.java
浏览文件 @
295ce22a
...
@@ -162,7 +162,7 @@ public class OwnerAccountController {
...
@@ -162,7 +162,7 @@ public class OwnerAccountController {
@ApiOperation
(
value
=
"创建账户"
,
notes
=
"<br>By:胡宇帆"
)
@ApiOperation
(
value
=
"创建账户"
,
notes
=
"<br>By:胡宇帆"
)
@PostMapping
(
"/createAccount"
)
@PostMapping
(
"/createAccount"
)
public
Result
<
Object
>
createAccount
(
CreteAccountParam
param
)
{
public
Result
<
Object
>
createAccount
(
@RequestBody
CreteAccountParam
param
)
{
ownerAccountService
.
createAccount
(
param
);
ownerAccountService
.
createAccount
(
param
);
return
Result
.
ok
();
return
Result
.
ok
();
}
}
...
...
performance-web/src/main/java/com/clx/performance/controller/pc/transport/TransportSyncController.java
浏览文件 @
295ce22a
...
@@ -18,7 +18,7 @@ import com.clx.performance.model.OrderGoods;
...
@@ -18,7 +18,7 @@ import com.clx.performance.model.OrderGoods;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.param.feign.transport.ThirdOrderChildBrokerParam
;
import
com.clx.performance.param.feign.transport.ThirdOrderChildBrokerParam
;
import
com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatus
Param
;
import
com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatus
DTO
;
import
com.clx.performance.service.TransportSyncService
;
import
com.clx.performance.service.TransportSyncService
;
import
com.clx.performance.service.settle.OrderChildSyncTransportRecordService
;
import
com.clx.performance.service.settle.OrderChildSyncTransportRecordService
;
import
com.clx.performance.service.settle.SettlementOwnerService
;
import
com.clx.performance.service.settle.SettlementOwnerService
;
...
@@ -56,6 +56,9 @@ public class TransportSyncController {
...
@@ -56,6 +56,9 @@ public class TransportSyncController {
private
final
SettlementOwnerService
settlementOwnerService
;
private
final
SettlementOwnerService
settlementOwnerService
;
private
final
OrderChildSyncTransportRecordService
childSyncTransportRecordService
;
/**
/**
* 支付结果
* 支付结果
* @param param
* @param param
...
@@ -103,11 +106,17 @@ public class TransportSyncController {
...
@@ -103,11 +106,17 @@ public class TransportSyncController {
log
.
info
(
"riskStatusNotify 原始报文:{}"
,
bean
);
log
.
info
(
"riskStatusNotify 原始报文:{}"
,
bean
);
String
decrypt
=
ThirdComponent
.
decrypt
(
bean
.
getData
());
String
decrypt
=
ThirdComponent
.
decrypt
(
bean
.
getData
());
log
.
info
(
"riskStatusNotify 解密后:{}"
,
decrypt
);
log
.
info
(
"riskStatusNotify 解密后:{}"
,
decrypt
);
ThirdOrderChildRiskStatus
Param
invoicingStatusNotifyDTO
=
JSONUtil
.
toBean
(
decrypt
,
ThirdOrderChildRiskStatusParam
.
class
);
ThirdOrderChildRiskStatus
DTO
invoicingStatusNotifyDTO
=
JSONUtil
.
toBean
(
decrypt
,
ThirdOrderChildRiskStatusDTO
.
class
);
return
ThirdComponent
.
encrypt
(
JSON
.
toJSONString
(
Result
.
ok
()));
return
ThirdComponent
.
encrypt
(
JSON
.
toJSONString
(
Result
.
ok
()));
}
}
@ApiOperation
(
value
=
"addOrderChildSyncTransportRecord"
,
notes
=
"<br>By:胡宇帆"
)
@GetMapping
(
"/addOrderChildSyncTransportRecord"
)
public
Result
<
Object
>
syncTest
(
@RequestParam
(
"id"
)
Integer
id
)
{
SettlementDriverDetail
driverDetail
=
settlementDriverDetailDao
.
getEntityByKey
(
id
).
get
();
childSyncTransportRecordService
.
addOrderChildSyncTransportRecord
(
driverDetail
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"syncTest"
,
notes
=
"<br>By:胡宇帆"
)
@ApiOperation
(
value
=
"syncTest"
,
notes
=
"<br>By:胡宇帆"
)
@GetMapping
(
"/syncTest"
)
@GetMapping
(
"/syncTest"
)
...
...
performance-web/src/main/java/com/clx/performance/controller/temp/TempController.java
浏览文件 @
295ce22a
...
@@ -5,6 +5,7 @@ import com.clx.performance.extranal.transport.TransportService;
...
@@ -5,6 +5,7 @@ import com.clx.performance.extranal.transport.TransportService;
import
com.clx.performance.feign.TransportFeignService
;
import
com.clx.performance.feign.TransportFeignService
;
import
com.clx.performance.param.feign.transport.OrderChildPaySyncParam
;
import
com.clx.performance.param.feign.transport.OrderChildPaySyncParam
;
import
com.clx.performance.param.feign.transport.OwnerSettlementSyncParam
;
import
com.clx.performance.param.feign.transport.OwnerSettlementSyncParam
;
import
com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatusParam
;
import
com.clx.performance.service.TempService
;
import
com.clx.performance.service.TempService
;
import
com.clx.performance.service.child.FeignOrderChildService
;
import
com.clx.performance.service.child.FeignOrderChildService
;
import
com.clx.performance.vo.pc.child.OrderChildLineStatisticsVO
;
import
com.clx.performance.vo.pc.child.OrderChildLineStatisticsVO
;
...
@@ -109,4 +110,15 @@ public class TempController {
...
@@ -109,4 +110,15 @@ public class TempController {
return
Result
.
ok
();
return
Result
.
ok
();
}
}
@ApiOperation
(
value
=
"获取风控状态 (临时接口)"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/getRiskStatus"
,
method
=
RequestMethod
.
POST
)
public
Result
<
Void
>
getRiskStatus
(
String
childNo
)
{
ThirdOrderChildRiskStatusParam
param
=
ThirdOrderChildRiskStatusParam
.
builder
().
build
();
param
.
setChildNo
(
childNo
);
HttpDTO
httpDTO
=
transportFeignService
.
getRiskStatus
(
param
);
String
decrypt
=
ThirdComponent
.
decrypt
(
httpDTO
.
getData
());
log
.
info
(
"{}"
,
decrypt
);
return
Result
.
ok
();
}
}
}
performance-web/src/main/java/com/clx/performance/dao/OrderChildSyncTransportInvoiceRecordDao.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
dao
;
import
com.msl.common.dao.BaseDao
;
import
com.clx.performance.mapper.OrderChildSyncTransportInvoiceRecordMapper
;
import
com.clx.performance.model.OrderChildSyncTransportInvoiceRecord
;
import
java.util.List
;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
public
interface
OrderChildSyncTransportInvoiceRecordDao
extends
BaseDao
<
OrderChildSyncTransportInvoiceRecordMapper
,
OrderChildSyncTransportInvoiceRecord
,
Integer
>
{
List
<
OrderChildSyncTransportInvoiceRecord
>
selectListForJob
();
}
performance-web/src/main/java/com/clx/performance/dao/OrderGoodsTruckBindDao.java
浏览文件 @
295ce22a
...
@@ -31,6 +31,8 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
...
@@ -31,6 +31,8 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
);
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
);
void
updateOrderGoodsBindStatus
(
List
<
String
>
orderGoodsList
,
Integer
code
);
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
,
List
<
String
>
truckList
);
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
,
List
<
String
>
truckList
);
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
,
String
truckNo
);
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
,
String
truckNo
);
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildSyncTransportInvoiceRecordDaoImpl.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
dao
.
impl
;
import
com.clx.performance.enums.TransportSyncTypeEnum
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao
;
import
com.clx.performance.mapper.OrderChildSyncTransportInvoiceRecordMapper
;
import
com.clx.performance.model.OrderChildSyncTransportInvoiceRecord
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
@Repository
public
class
OrderChildSyncTransportInvoiceRecordDaoImpl
extends
BaseDaoImpl
<
OrderChildSyncTransportInvoiceRecordMapper
,
OrderChildSyncTransportInvoiceRecord
,
Integer
>
implements
OrderChildSyncTransportInvoiceRecordDao
{
@Override
public
List
<
OrderChildSyncTransportInvoiceRecord
>
selectListForJob
()
{
return
baseMapper
.
selectList
(
null
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/OrderGoodsTruckBindDaoImpl.java
浏览文件 @
295ce22a
...
@@ -87,6 +87,15 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
...
@@ -87,6 +87,15 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
);
);
}
}
@Override
public
void
updateOrderGoodsBindStatus
(
List
<
String
>
orderGoodsList
,
Integer
code
)
{
update
(
lUdWrapper
()
.
in
(
OrderGoodsTruckBind:
:
getOrderGoodsNo
,
orderGoodsList
)
.
eq
(
OrderGoodsTruckBind:
:
getStatus
,
OrderGoodsTruckBindEnum
.
Status
.
NORMAL
.
getCode
())
.
set
(
OrderGoodsTruckBind:
:
getStatus
,
code
)
);
}
@Override
@Override
public
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
,
List
<
String
>
truckList
)
{
public
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
,
List
<
String
>
truckList
)
{
update
(
lUdWrapper
()
update
(
lUdWrapper
()
...
...
performance-web/src/main/java/com/clx/performance/dto/OrderCancelResult.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
dto
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.util.List
;
@Data
@Builder
public
class
OrderCancelResult
{
private
Integer
orderStatusCode
;
private
List
<
String
>
childNoList
;
}
performance-web/src/main/java/com/clx/performance/dto/OrderGoodsCancelDTO.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
dto
;
import
com.clx.order.param.feign.RollbackOrderWeightParam
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.param.pc.OrderGoodsCancelParam
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.util.List
;
@Data
@Builder
public
class
OrderGoodsCancelDTO
{
private
OrderGoodsCancelParam
orderGoodsCancelParam
;
private
Integer
orderGoodsStatus
;
private
OrderGoods
orderGoods
;
private
List
<
String
>
childNoList
;
}
performance-web/src/main/java/com/clx/performance/feign/TransportFeignService.java
浏览文件 @
295ce22a
...
@@ -10,8 +10,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
...
@@ -10,8 +10,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
java.util.List
;
@FeignClient
(
name
=
"transport-service-yitu"
,
url
=
"${transport-service.host}"
,
configuration
=
FeignInterceptor
.
class
)
@FeignClient
(
name
=
"transport-service-yitu"
,
url
=
"${transport-service.host}"
,
configuration
=
FeignInterceptor
.
class
)
public
interface
TransportFeignService
{
public
interface
TransportFeignService
{
...
@@ -25,10 +23,10 @@ public interface TransportFeignService {
...
@@ -25,10 +23,10 @@ public interface TransportFeignService {
/**
/**
* 获取风控状态
* 获取风控状态
* @return
* @return
* @see
com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatusParam
* @see
ThirdOrderChildRiskStatusDTO
*/
*/
@RequestMapping
(
value
=
"/transport-service/thirdParty/order/getRiskStatus"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/transport-service/thirdParty/order/getRiskStatus"
,
method
=
RequestMethod
.
POST
)
HttpDTO
getRiskStatus
(
@RequestBody
@NotBlank
(
message
=
"运单编号不能为空"
)
String
childNo
);
HttpDTO
getRiskStatus
(
@RequestBody
ThirdOrderChildRiskStatusParam
param
);
/**
/**
* 运单支付运费同步
* 运单支付运费同步
...
@@ -38,10 +36,11 @@ public interface TransportFeignService {
...
@@ -38,10 +36,11 @@ public interface TransportFeignService {
/**
/**
* 获取运单开票状态
* 获取运单开票状态
* @return 0-未申请,10-已申请,20-审核失败,30-已开票
* @return
* @see ThirdOrderChildInvoiceStatusDTO
*/
*/
@RequestMapping
(
value
=
"/transport-service/thirdParty/order/getInvoiceStatus"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/transport-service/thirdParty/order/getInvoiceStatus"
,
method
=
RequestMethod
.
POST
)
Result
<
Integer
>
getInvoiceStatus
(
@RequestBody
@NotBlank
(
message
=
"运单编号不能为空"
)
String
childNo
);
HttpDTO
getInvoiceStatus
(
@RequestBody
ThirdOrderChildInvoiceStatusParam
param
);
/**
/**
* 货主结算单同步 (只推同一货主)
* 货主结算单同步 (只推同一货主)
...
...
performance-web/src/main/java/com/clx/performance/job/OrderChildSyncTransportInvoiceExceptionJob.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
job
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.json.JSON
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.performance.component.ThirdComponent
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
import
com.clx.performance.dao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.dto.OrderChildSyncDTO
;
import
com.clx.performance.dto.OrderChildSyncResultDTO
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.TransportSyncTypeEnum
;
import
com.clx.performance.enums.settle.SettlementOwnerEnum
;
import
com.clx.performance.feign.TransportFeignService
;
import
com.clx.performance.listener.OrderChildSyncTransportListener
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChildSyncTransportInvoiceRecord
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatusParam
;
import
com.msl.common.result.Result
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.LinkedList
;
import
java.util.List
;
@Slf4j
@Component
@AllArgsConstructor
public
class
OrderChildSyncTransportInvoiceExceptionJob
{
private
final
OrderChildSyncTransportInvoiceRecordDao
orderChildSyncTransportInvoiceRecordDao
;
private
final
OrderChildSyncTransportListener
orderChildPaySync
;
private
final
OrderChildDao
orderChildDao
;
private
final
TransportFeignService
transportFeignService
;
private
final
SettlementOwnerDetailDao
settlementOwnerDetailDao
;
private
final
SettlementDriverDetailDao
settlementDriverDetailDao
;
/**
* 同步网络货运
*/
@XxlJob
(
"orderChildSyncTransportInvoiceExceptionJob"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
orderChildSyncTransportInvoiceExceptionJob
()
{
//只查询同步异常的网络货运任务
List
<
OrderChildSyncTransportInvoiceRecord
>
recordList
=
orderChildSyncTransportInvoiceRecordDao
.
selectListForJob
();
if
(
CollectionUtil
.
isEmpty
(
recordList
))
{
return
;
}
List
<
Integer
>
ids
=
new
LinkedList
<>();
for
(
OrderChildSyncTransportInvoiceRecord
record
:
recordList
)
{
log
.
info
(
"orderChildSyncTransportInvoiceExceptionJob执行:{}"
,
JSONUtil
.
parse
(
record
));
String
data
=
transportFeignService
.
getRiskStatus
(
ThirdOrderChildRiskStatusParam
.
builder
().
childNo
(
record
.
getChildNo
()).
build
()).
getData
();
String
decrypt
=
ThirdComponent
.
decrypt
(
data
);
Result
result
=
JSONUtil
.
toBean
(
decrypt
,
Result
.
class
);
if
(
result
.
succeed
())
{
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
record
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getByChildNo
(
record
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
JSON
json
=
JSONUtil
.
parse
(
result
.
getData
());
Object
status
=
json
.
getByPath
(
"status"
);
ids
.
add
(
record
.
getId
());
OrderChildSyncDTO
bean
=
new
OrderChildSyncDTO
();
bean
.
setCode
(
0
);
OrderChildSyncResultDTO
dto
=
new
OrderChildSyncResultDTO
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
record
.
getChildNo
()).
get
();
log
.
info
(
"查询网络货运结果数据:{}"
,
JSONUtil
.
parse
(
result
));
if
(
ObjectUtil
.
equal
(
status
,
1
))
{
dto
.
setStatus
(
1
);
bean
.
setData
(
dto
);
orderChildPaySync
.
extracted
(
orderChild
,
bean
,
""
,
settlementOwnerDetail
,
SettlementOwnerEnum
.
InvoiceType
.
ONLINE
.
getCode
(),
settlementDriverDetail
);
}
else
if
(
ObjectUtil
.
equal
(
status
,
0
)){
dto
.
setStatus
(
2
);
bean
.
setData
(
dto
);
orderChildPaySync
.
extracted
(
orderChild
,
bean
,
""
,
settlementOwnerDetail
,
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
(),
settlementDriverDetail
);
}
else
if
(
ObjectUtil
.
equal
(
status
,
2
)){
orderChildPaySync
.
transportOrderChildProcess
(
orderChild
);
}
else
{
Object
riskReason
=
json
.
getByPath
(
"riskReason"
);
OrderChildSyncTransportInvoiceRecord
entity
=
new
OrderChildSyncTransportInvoiceRecord
();
entity
.
setChildNo
(
json
.
getByPath
(
"childNo"
).
toString
());
entity
.
setType
(
TransportSyncTypeEnum
.
Type
.
NO_PASS
.
getCode
());
entity
.
setRemark
(
riskReason
==
null
?
""
:
riskReason
.
toString
());
orderChildSyncTransportInvoiceRecordDao
.
saveEntity
(
entity
);
}
}
}
orderChildSyncTransportInvoiceRecordDao
.
deleteByKeys
(
ids
);
}
}
performance-web/src/main/java/com/clx/performance/listener/OrderChildSyncTransportListener.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
listener
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.performance.component.IdGenerateSnowFlake
;
import
com.clx.performance.component.ThirdComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OwnerAccountDao
;
import
com.clx.performance.dao.OwnerRunningWaterRecordDao
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
import
com.clx.performance.dao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.dto.OrderChildSyncDTO
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.enums.settle.SettlementDriverEnum
;
import
com.clx.performance.enums.settle.SettlementOwnerDetailEnum
;
import
com.clx.performance.enums.settle.SettlementOwnerEnum
;
import
com.clx.performance.enums.settle.SettlementWayEnum
;
import
com.clx.performance.feign.TransportFeignService
;
import
com.clx.performance.model.*
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.param.feign.transport.ThirdOrderChildBrokerParam
;
import
com.clx.performance.service.TransportSyncService
;
import
com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.msl.common.dto.HttpDTO
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.Objects
;
/**
* 承运同步网络货运运单
*/
@Slf4j
@Component
@AllArgsConstructor
public
class
OrderChildSyncTransportListener
{
private
final
OrderGoodsDao
orderGoodsDao
;
private
final
TransportSyncService
transportSyncService
;
private
final
TransportFeignService
transportFeignService
;
private
final
OwnerRunningWaterRecordDao
ownerRunningWaterRecordDao
;
private
final
NetworkDriverRunningWaterRecordService
networkDriverRunningWaterRecordService
;
private
final
OwnerAccountDao
ownerAccountDao
;
private
final
IdGenerateSnowFlake
idGenerateSnowFlake
;
private
final
SettlementOwnerDetailDao
settlementOwnerDetailDao
;
private
final
SettlementDriverDetailDao
settlementDriverDetailDao
;
private
final
OrderChildSyncTransportInvoiceRecordDao
orderChildSyncTransportInvoiceRecordDao
;
private
final
SettlementMqService
settlementMqService
;
@RabbitListener
(
queues
=
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_QUEUE
)
public
void
onMessage
(
String
message
)
{
OrderChild
orderChild
=
JSONUtil
.
toBean
(
message
,
OrderChild
.
class
);
//是否通过风控,调用网络货运
try
{
transportOrderChildProcess
(
orderChild
);
}
catch
(
Exception
e
)
{
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运失败,运单号{}, 错误信息{}"
,
orderChild
.
getChildNo
(),
e
.
getMessage
());
OrderChildSyncTransportInvoiceRecord
entity
=
new
OrderChildSyncTransportInvoiceRecord
();
entity
.
setChildNo
(
orderChild
.
getChildNo
());
entity
.
setType
(
TransportSyncTypeEnum
.
Type
.
EXCEPTION
.
getCode
());
entity
.
setRemark
(
e
.
getMessage
());
orderChildSyncTransportInvoiceRecordDao
.
saveEntity
(
entity
);
}
}
public
void
transportOrderChildProcess
(
OrderChild
orderChild
)
{
Integer
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
();
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
settlementOwnerDetail
.
setInvoiceFreight
(
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
get
();
ThirdOrderChildBrokerParam
param
=
transportSyncService
.
generateOrderChildSync
(
orderChild
,
orderGoods
,
settlementOwnerDetail
,
settlementDriverDetail
);
HttpDTO
httpDTOResult
=
transportFeignService
.
orderChildSync
(
param
);
String
decrypt
=
ThirdComponent
.
decrypt
(
httpDTOResult
.
getData
());
OrderChildSyncDTO
bean
=
JSONUtil
.
toBean
(
decrypt
,
OrderChildSyncDTO
.
class
);
extracted
(
orderChild
,
bean
,
JSONUtil
.
parse
(
bean
).
toString
(),
settlementOwnerDetail
,
invoiceType
,
settlementDriverDetail
);
}
public
void
extracted
(
OrderChild
orderChild
,
OrderChildSyncDTO
bean
,
String
remark
,
SettlementOwnerDetail
settlementOwnerDetail
,
Integer
invoiceType
,
SettlementDriverDetail
settlementDriverDetail
)
{
if
(
null
!=
bean
&&
bean
.
getCode
()
==
0
)
{
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运成功,运单号为{}"
,
orderChild
.
getChildNo
());
if
(
null
!=
bean
.
getData
()
&&
bean
.
getData
().
getStatus
()
==
1
)
{
//通过风控
List
<
OwnerRunningWaterRecord
>
runningWaterRecordList
=
ownerRunningWaterRecordDao
.
getOwnerRunningWaterRecord
(
orderChild
.
getOrderNo
());
BigDecimal
frozen
=
runningWaterRecordList
.
stream
().
filter
(
item
->
{
return
item
.
getRunningWaterType
().
equals
(
OwnerAccountEnum
.
RunningWaterStatus
.
FROZEN
.
getCode
())
&&
item
.
getAccountType
().
equals
(
OwnerAccountEnum
.
AccountTypeStatus
.
PREPAID_FREIGHT_ACCOUNT
.
getCode
())
;
}).
map
(
OwnerRunningWaterRecord:
:
getAlterationBalance
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
BigDecimal
takeOut
=
runningWaterRecordList
.
stream
().
filter
(
item
->
{
return
item
.
getRunningWaterType
().
equals
(
OwnerAccountEnum
.
RunningWaterStatus
.
TAKE_OUT
.
getCode
())
&&
item
.
getAccountType
().
equals
(
OwnerAccountEnum
.
AccountTypeStatus
.
PREPAID_FREIGHT_ACCOUNT
.
getCode
())
;
}).
map
(
OwnerRunningWaterRecord:
:
getAlterationBalance
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
//设置预付运费金额
BigDecimal
ans
=
getPrepayFreightPay
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
,
frozen
);
BigDecimal
subtract
=
frozen
.
subtract
(
takeOut
);
log
.
info
(
"冻结预付运费:{}, 扣除的流水总和:{}"
,
frozen
,
takeOut
);
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ONLINE
.
getCode
();
settlementDriverDetail
.
setPrepayFreight
(
ans
);
//冻结的预付运费为0 或者 此刻预付运费也可能为0,那么就不用生成扣除相关流水逻辑
if
(
subtract
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
||
ans
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
}
else
{
if
(
subtract
.
subtract
(
ans
).
compareTo
(
BigDecimal
.
ZERO
)
>=
0
)
{
//账户扣钱并生成扣除流水
generateTakeOutRunningWatter
(
orderChild
,
ans
,
settlementOwnerDetail
,
settlementDriverDetail
);
try
{
//网络货运钱包账户
networkDriverRunningWaterRecordService
.
generateNetworkDriverRunningWaterRecord
(
settlementDriverDetail
,
NetworkDriverAccountEnum
.
RunningWaterStatus
.
SETTLEMENT
.
getCode
()
);
//生成提现记录
networkDriverRunningWaterRecordService
.
generateNetworkCaseOutRecord
(
settlementDriverDetail
);
}
catch
(
Exception
e
)
{
log
.
info
(
"运单同步网络货运生成司机运单结算流水失败:{}"
,
e
.
getMessage
());
}
}
else
{
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
}
}
}
else
{
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO
.
getCode
());
}
}
else
{
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运失败,变为普通单,运单号{}, 错误信息{}"
,
orderChild
.
getChildNo
(),
remark
);
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO
.
getCode
());
}
// 结算金额
settlementOwnerDetail
.
setSettlementFreight
(
settlementFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
if
(
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
().
equals
(
invoiceType
))
{
if
(
settlementOwnerDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO_REQUIRE
.
getCode
());
}
}
else
{
if
(
settlementDriverDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO_REQUIRE
.
getCode
());
}
}
settlementOwnerDetail
.
setInvoiceType
(
invoiceType
);
settlementDriverDetail
.
setInvoiceType
(
invoiceType
);
log
.
info
(
"当前货主结算信息{},车主结算信息:{}"
,
JSONUtil
.
parse
(
settlementOwnerDetail
),
JSONUtil
.
parse
(
settlementDriverDetail
));
settlementOwnerDetailDao
.
updateInvoiceType
(
settlementOwnerDetail
);
settlementDriverDetailDao
.
updateInvoiceTypeAndPrepayFreightFlag
(
settlementDriverDetail
);
// 发送mq 通过开票标识
settlementMqService
.
invoiceTypeSync
(
orderChild
.
getChildNo
(),
invoiceType
);
}
private
void
generateTakeOutRunningWatter
(
OrderChild
orderChild
,
BigDecimal
ans
,
SettlementOwnerDetail
settlementOwnerDetail
,
SettlementDriverDetail
settlementDriverDetail
)
{
OwnerAccount
account
=
null
;
while
(
true
)
{
account
=
ownerAccountDao
.
getAccountByOwnerUserNoAndAccountType
(
orderChild
.
getOwnerUserNo
(),
OwnerAccountEnum
.
AccountTypeStatus
.
PREPAID_FREIGHT_ACCOUNT
.
getCode
());
OwnerAccount
update
=
new
OwnerAccount
();
update
.
setId
(
account
.
getId
());
update
.
setAccountBalance
(
ans
);
update
.
setModifiedTime
(
account
.
getModifiedTime
());
update
.
setFrozenBalance
(
ans
);
Integer
i
=
ownerAccountDao
.
updateOwnerAccountForConfirm
(
update
);
if
(
null
!=
i
&&
i
>
0
)
{
break
;
}
}
account
=
ownerAccountDao
.
getAccountByOwnerUserNoAndAccountType
(
orderChild
.
getOwnerUserNo
(),
OwnerAccountEnum
.
AccountTypeStatus
.
PREPAID_FREIGHT_ACCOUNT
.
getCode
());
settlementOwnerDetail
.
setPrepayFreight
(
ans
);
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
PAYED
.
getCode
());
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO_REQUIRE
.
getCode
());
OwnerRunningWaterRecord
runningWaterRecord
=
new
OwnerRunningWaterRecord
();
runningWaterRecord
.
setOwnerUserName
(
orderChild
.
getOwnerName
());
runningWaterRecord
.
setMobile
(
orderChild
.
getDriverMobile
());
runningWaterRecord
.
setCreateBy
(
"系统"
);
runningWaterRecord
.
setOrderNo
(
orderChild
.
getOrderNo
());
runningWaterRecord
.
setOrderChildId
(
orderChild
.
getId
());
runningWaterRecord
.
setOrderChildNo
(
orderChild
.
getChildNo
());
runningWaterRecord
.
setRelationId
(
null
);
runningWaterRecord
.
setAlterationBalance
(
ans
);
runningWaterRecord
.
setFrozenBalance
(
account
.
getFrozenBalance
());
runningWaterRecord
.
setUsableBalance
(
account
.
getUsableBalance
());
runningWaterRecord
.
setTakeOutBalance
(
ans
);
runningWaterRecord
.
setAccountBalance
(
account
.
getAccountBalance
());
runningWaterRecord
.
setOwnerUserNo
(
account
.
getOwnerUserNo
());
runningWaterRecord
.
setAccountType
(
OwnerAccountEnum
.
AccountTypeStatus
.
PREPAID_FREIGHT_ACCOUNT
.
getCode
());
runningWaterRecord
.
setRunningWaterType
(
OwnerAccountEnum
.
RunningWaterStatus
.
TAKE_OUT
.
getCode
());
runningWaterRecord
.
setRunningWaterNo
(
idGenerateSnowFlake
.
nextId
(
IdTypeEnum
.
Type
.
TAKE_OUT
.
getCode
()));
ownerRunningWaterRecordDao
.
saveEntity
(
runningWaterRecord
);
}
private
BigDecimal
getPrepayFreightPay
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
,
BigDecimal
accountFrozenFreight
)
{
//订单结算方式为“装车净重”时
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
LOAD
.
getCode
()))
{
BigDecimal
subtract
=
settlementOwnerDetail
.
getFreight
().
subtract
(
settlementOwnerDetail
.
getLossFreight
());
if
(
accountFrozenFreight
.
compareTo
(
subtract
)
>=
0
)
{
return
subtract
;
}
else
{
return
BigDecimal
.
ZERO
;
}
}
else
{
if
(
accountFrozenFreight
.
compareTo
(
settlementOwnerDetail
.
getFreight
())
>=
0
)
{
return
settlementOwnerDetail
.
getFreight
();
}
else
{
return
BigDecimal
.
ZERO
;
}
}
}
/**
* 结算金额
*/
private
BigDecimal
settlementFreightCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
LOAD
.
getCode
()))
{
//订单结算方式为“装车净重”时,结算金额=实际净重*平台运费报价-预付运费-货损金额。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getPrepayFreight
()).
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
else
{
//订单结算方式为“卸车净重”时,结算金额=实际净重*平台运费报价-预付运费
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
()).
subtract
(
settlementOwnerDetail
.
getPrepayFreight
());
}
}
/**
* 开票金额
*/
private
BigDecimal
invoiceFreightCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
LOAD
.
getCode
()))
{
//订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
else
{
//订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
());
}
}
}
performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDriverBindListener.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
listener
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.order.enums.VehicleUsageEnum
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.enums.OrderGoodsTruckBindEnum
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.vo.mq.OrderTruckBindCancelParam
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Component
@Slf4j
@AllArgsConstructor
public
class
OrderGoodsDriverBindListener
{
private
final
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
private
final
OrderGoodsDao
orderGoodsDao
;
@RabbitListener
(
queues
=
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_QUEUE
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
onMessage
(
String
message
)
throws
Exception
{
OrderTruckBindCancelParam
param
=
JSONUtil
.
toBean
(
message
,
OrderTruckBindCancelParam
.
class
);
log
.
info
(
"OrderGoodsDriverBindListener请求参数{}"
,
JSONUtil
.
parse
(
param
));
if
(
StringUtils
.
isNotBlank
(
param
.
getOrderGoodsNo
()))
{
String
orderGoodsNo
=
param
.
getOrderGoodsNo
();
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderGoodsNo
).
get
();
if
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
().
equals
(
orderGoods
.
getVehicleUsage
()))
{
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
}
}
else
if
(
StringUtils
.
isNotBlank
(
param
.
getOrderNo
()))
{
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
param
.
getOrderNo
());
List
<
String
>
orderGoodsNoList
=
orderGoodsList
.
stream
().
filter
(
i
->
VehicleUsageEnum
.
Status
.
OWN
.
getCode
().
equals
(
i
.
getVehicleUsage
()))
.
map
(
OrderGoods:
:
getOrderGoodsNo
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isEmpty
(
orderGoodsNoList
))
{
return
;
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNoList
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
}
}
}
performance-web/src/main/java/com/clx/performance/mapper/OrderChildSyncTransportInvoiceRecordMapper.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.clx.performance.model.OrderChildSyncTransportInvoiceRecord
;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
public
interface
OrderChildSyncTransportInvoiceRecordMapper
extends
BaseMapper
<
OrderChildSyncTransportInvoiceRecord
>
{
}
performance-web/src/main/java/com/clx/performance/model/OrderChildSyncTransportInvoiceRecord.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
model
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.msl.common.config.KeyColumn
;
import
com.msl.common.model.HasKey
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
java.time.LocalDateTime
;
import
java.io.Serializable
;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"order_child_sync_transport_invoice_record"
)
public
class
OrderChildSyncTransportInvoiceRecord
implements
HasKey
<
Integer
>
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
@TableField
(
"child_no"
)
@ApiModelProperty
(
"运单编号"
)
private
String
childNo
;
@TableField
(
"remark"
)
@ApiModelProperty
(
"备注"
)
private
String
remark
;
@TableField
(
"type"
)
@ApiModelProperty
(
"备注 1: 未风控 2: 同步异常"
)
private
Integer
type
;
@TableField
(
"create_time"
)
@ApiModelProperty
(
"创建时间"
)
private
LocalDateTime
createTime
;
@TableField
(
"modified_time"
)
@ApiModelProperty
(
"修改时间"
)
private
LocalDateTime
modifiedTime
;
@Override
@KeyColumn
(
"id"
)
public
Integer
gainKey
()
{
return
this
.
id
;
}
}
performance-web/src/main/java/com/clx/performance/service/OrderCancelService.java
浏览文件 @
295ce22a
...
@@ -28,10 +28,10 @@ public interface OrderCancelService {
...
@@ -28,10 +28,10 @@ public interface OrderCancelService {
* 平台取消订单前置(只修改订单状态)
* 平台取消订单前置(只修改订单状态)
* @param param
* @param param
*/
*/
void
platformCancelOrderPre
(
OrderCancelParam
param
);
//
void platformCancelOrderPre(OrderCancelParam param);
/**
/**
* 修改订单状态后执行
规划
吨数
* 修改订单状态后执行
归还
吨数
* @param param
* @param param
*/
*/
void
orderCancelProcess
(
OrderCancelParam
param
);
void
orderCancelProcess
(
OrderCancelParam
param
);
...
...
performance-web/src/main/java/com/clx/performance/service/OrderChildSyncTransportInvoiceRecordService.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
service
;
import
com.msl.common.service.BaseService
;
import
com.clx.performance.model.OrderChildSyncTransportInvoiceRecord
;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
public
interface
OrderChildSyncTransportInvoiceRecordService
{
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderCancelServiceImpl.java
浏览文件 @
295ce22a
...
@@ -13,6 +13,7 @@ import com.clx.order.vo.feign.FeignOrderVO;
...
@@ -13,6 +13,7 @@ import com.clx.order.vo.feign.FeignOrderVO;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderCancelComponent
;
import
com.clx.performance.component.OrderCancelComponent
;
import
com.clx.performance.component.OwnerAccountComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
...
@@ -28,6 +29,7 @@ import com.clx.performance.param.pc.owner.ThawAccountParam;
...
@@ -28,6 +29,7 @@ import com.clx.performance.param.pc.owner.ThawAccountParam;
import
com.clx.performance.service.*
;
import
com.clx.performance.service.*
;
import
com.clx.performance.service.child.OrderChildPostService
;
import
com.clx.performance.service.child.OrderChildPostService
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.mq.OrderTruckBindCancelParam
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
import
com.clx.user.enums.owner.FreezeSettingEnum
;
import
com.clx.user.enums.owner.FreezeSettingEnum
;
import
com.clx.user.vo.feign.OwnerInfoFeignVO
;
import
com.clx.user.vo.feign.OwnerInfoFeignVO
;
...
@@ -82,14 +84,13 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -82,14 +84,13 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private
final
OwnerInfoService
ownerInfoService
;
private
final
OwnerInfoService
ownerInfoService
;
private
final
OwnerAccountComponent
ownerAccountComponent
;
private
final
SettlementOwnerDetailDao
settlementOwnerDetailDao
;
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
ownerConfirmCancelOrderPre
(
String
orderNo
)
{
public
void
ownerConfirmCancelOrderPre
(
String
orderNo
)
{
String
now
=
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
()
,
"yyyy-MM-dd HH:mm:ss"
).
get
();
String
now
=
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
()).
get
();
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
Integer
orderStatusCode
=
OrderEnum
.
Status
.
CANCELED
.
getCode
();
Integer
orderStatusCode
=
OrderEnum
.
Status
.
CANCELED
.
getCode
();
if
(
CollectionUtil
.
isEmpty
(
orderGoodsList
))
{
if
(
CollectionUtil
.
isEmpty
(
orderGoodsList
))
{
...
@@ -98,24 +99,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -98,24 +99,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if
(!
result
.
succeed
())
{
if
(!
result
.
succeed
())
{
throw
new
RuntimeException
(
"货主取消订单失败,原因:远程调用取消订单失败"
);
throw
new
RuntimeException
(
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
}
//TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
//1网运单 2普通单
Integer
invoiceType
=
settlementOwnerDetailDao
.
getInvoiceType
(
orderNo
);
log
.
info
(
"invoiceType={}"
,
invoiceType
);
ThawAccountParam
thawAccountParam
=
new
ThawAccountParam
();
if
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
ORDINARY
.
getCode
().
equals
(
invoiceType
))
{
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
ORDINARY
.
getCode
());
}
else
{
}
else
{
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
NETWORK
.
getCode
());
}
thawAccountParam
.
setOrderNo
(
orderNo
);
log
.
info
(
"执行解冻账户,参数:{}"
,
JSONUtil
.
parse
(
thawAccountParam
));
ownerAccountService
.
ownerAccountThaw
(
thawAccountParam
);
this
.
ownerConfirmCancelProcess
(
orderNo
);
return
;
}
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
null
);
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
null
);
if
(
CollectionUtil
.
isEmpty
(
orderChildrenList
))
{
if
(
CollectionUtil
.
isEmpty
(
orderChildrenList
))
{
...
@@ -131,21 +115,6 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -131,21 +115,6 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
}
orderGoodsDao
.
batchUpdateOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
(),
orderGoodsDao
.
batchUpdateOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
(),
ids
);
ids
);
//TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
//1网运单 2普通单
Integer
invoiceType
=
settlementOwnerDetailDao
.
getInvoiceType
(
orderNo
);
log
.
info
(
"invoiceType={}"
,
invoiceType
);
ThawAccountParam
thawAccountParam
=
new
ThawAccountParam
();
if
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
ORDINARY
.
getCode
().
equals
(
invoiceType
))
{
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
ORDINARY
.
getCode
());
}
else
{
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
NETWORK
.
getCode
());
}
thawAccountParam
.
setOrderNo
(
orderNo
);
log
.
info
(
"执行解冻账户,参数:{}"
,
JSONUtil
.
parse
(
thawAccountParam
));
ownerAccountService
.
ownerAccountThaw
(
thawAccountParam
);
}
else
{
}
else
{
List
<
OrderChild
>
arriveSendChildList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
List
<
OrderChild
>
arriveSendChildList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
...
@@ -207,13 +176,25 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -207,13 +176,25 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
}
}
}
}
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
);
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
);
if
(!
result
.
succeed
())
{
if
(!
result
.
succeed
())
{
throw
new
RuntimeException
(
"货主取消订单失败,原因:远程调用取消订单失败"
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
}
this
.
ownerConfirmCancelProcess
(
orderNo
);
//进行解冻账户
ownerAccountComponent
.
thawOwnerAccountByOrderNo
(
orderNo
);
OrderTruckBindCancelParam
bindCancelParam
=
new
OrderTruckBindCancelParam
();
bindCancelParam
.
setOrderNo
(
orderNo
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
bindCancelParam
).
toString
().
getBytes
()).
build
();
message
.
getMessageProperties
().
setHeader
(
"x-delay"
,
2000
);
//执行解绑自有车辆处理逻辑,将绑定记录正常改为取消
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_EXCHANGE
,
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_ROUTE_KEY
,
message
);
this
.
ownerConfirmCancelProcess
(
orderNo
);
}
}
...
@@ -273,8 +254,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -273,8 +254,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
param
.
setResidueWeight
(
residueWeight
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
}
else
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
param
.
setResidueWeight
(
residueWeight
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
...
@@ -332,9 +312,9 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -332,9 +312,9 @@ public class OrderCancelServiceImpl implements OrderCancelService {
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"远程调用更新订单余量失败"
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"远程调用更新订单余量失败"
);
}
}
if
(!
orderFeign
.
saveOrderSettlementJobRecord
(
orderNo
).
succeed
())
{
//
if (!orderFeign.saveOrderSettlementJobRecord(orderNo).succeed()) {
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用结算单锁定失败"
);
//
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用结算单锁定失败");
}
//
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
e
.
getMessage
());
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
e
.
getMessage
());
...
@@ -349,6 +329,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -349,6 +329,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
ownerCancelOrderPre
(
OrderCancelParam
param
)
{
public
void
ownerCancelOrderPre
(
OrderCancelParam
param
)
{
String
orderNo
=
param
.
getOrderNo
();
String
orderNo
=
param
.
getOrderNo
();
List
<
String
>
childNoList
=
orderCancelComponent
.
ownerProcess
(
param
);
List
<
String
>
childNoList
=
orderCancelComponent
.
ownerProcess
(
param
);
param
.
setChildNoList
(
childNoList
);
param
.
setChildNoList
(
childNoList
);
OrderCancelReasonParam
orderCancelReasonParam
=
new
OrderCancelReasonParam
();
OrderCancelReasonParam
orderCancelReasonParam
=
new
OrderCancelReasonParam
();
...
@@ -357,10 +338,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -357,10 +338,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
orderCancelReasonParam
.
setCreateNo
(
loginUserInfo
.
getUserNo
());
orderCancelReasonParam
.
setCreateNo
(
loginUserInfo
.
getUserNo
());
orderCancelReasonParam
.
setCreateName
(
loginUserInfo
.
getUserName
());
orderCancelReasonParam
.
setCreateName
(
loginUserInfo
.
getUserName
());
orderFeign
.
orderCancelReason
(
orderCancelReasonParam
);
orderFeign
.
orderCancelReason
(
orderCancelReasonParam
);
//TODO 注意判断普通单还是网运单 普通单类型 2 网运单 1
log
.
info
(
"执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}"
,
orderNo
);
log
.
info
(
"执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}"
,
orderNo
);
...
@@ -368,139 +347,149 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -368,139 +347,149 @@ public class OrderCancelServiceImpl implements OrderCancelService {
rabbitTemplate
.
send
(
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_CANCEL_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CANCEL_ROUTE_KEY
,
message
RabbitKeyConstants
.
ORDER_CANCEL_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CANCEL_ROUTE_KEY
,
message
);
);
}
/**
* 平台取消订单前置(只修改订单相关状态)
*
* @param param
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
platformCancelOrderPre
(
OrderCancelParam
param
)
{
String
orderNo
=
param
.
getOrderNo
();
List
<
OrderGoods
>
orderGoodsList
=
null
;
Integer
orderStatusCode
=
OrderEnum
.
Status
.
CANCELED
.
getCode
();
String
now
=
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
(),
"yyyy-MM-dd HH:mm:ss"
).
get
();
switch
(
param
.
getCancelType
())
{
case
1
:
//单纯取消订单
if
(
CollectionUtil
.
isNotEmpty
(
orderChildDao
.
getOrderChildByOrderNo
(
orderNo
)))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(
CollectionUtil
.
isNotEmpty
(
orderGoodsList
))
{
List
<
Integer
>
ids
=
new
LinkedList
<>();
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
if
(
orderGoods
.
getPendingOrderWay
().
equals
(
PendingOrderWayStatusEnum
.
Status
.
DX
.
getCode
()))
{
orderGoodsTruckBindService
.
updateCancelTruckBind
(
orderGoods
.
getOrderGoodsNo
());
}
ids
.
add
(
orderGoods
.
getId
());
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
}
orderGoodsDao
.
batchUpdateOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
(),
ids
);
}
break
;
case
2
:
//取消未拉运吨数的货单
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
//提取和剩余吨数一样,代表一直没人拉
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
orderGoods
.
getExtractWeight
())
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
if
(
orderGoods
.
getPendingOrderWay
().
equals
(
PendingOrderWayStatusEnum
.
Status
.
DX
.
getCode
()))
{
orderGoodsTruckBindService
.
updateCancelTruckBind
(
orderGoods
.
getOrderGoodsNo
());
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
}
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
orderGoodsDao
.
updateEntityByKey
(
update
);
OrderTruckBindCancelParam
bindCancelParam
=
new
OrderTruckBindCancelParam
(
);
}
bindCancelParam
.
setOrderNo
(
orderNo
);
break
;
Message
message2
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
bindCancelParam
).
toString
().
getBytes
()).
build
()
;
case
3
:
//取消未拉运+未到达货源地吨数
message2
.
getMessageProperties
().
setHeader
(
"x-delay"
,
2000
);
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
//执行解绑自有车辆处理逻辑,将绑定记录正常改为取消
if
(
CollectionUtil
.
isEmpty
(
orderChildren
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
List
<
String
>
childNoList
=
new
LinkedList
<>();
for
(
OrderChild
orderChild
:
orderChildren
)
{
//释放车辆
driverService
.
updateOrderStatus
(
orderChild
.
getDriverUserNo
(),
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
orderChild
.
getTruckId
(),
1
);
childNoList
.
add
(
orderChild
.
getChildNo
());
}
if
(
CollectionUtil
.
isNotEmpty
(
childNoList
))
{
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
"平台取消"
,
now
,
now
,
childNoList
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildren
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
if
(
CollectionUtil
.
isEmpty
(
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())))
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
BigDecimal
reduce
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())
.
stream
().
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
//当前产生可取消运单的吨数加货单剩余吨数如果等于货单提取的吨数,那么就是已取消
if
(
orderGoods
.
getExtractWeight
().
compareTo
(
orderGoods
.
getResidueTransportWeight
().
add
(
reduce
))
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
}
if
(
orderGoods
.
getPendingOrderWay
().
equals
(
PendingOrderWayStatusEnum
.
Status
.
DX
.
getCode
()))
{
orderGoodsTruckBindService
.
updateCancelTruckBind
(
orderGoods
.
getOrderGoodsNo
());
}
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
break
;
default
:
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"参数有误"
);
}
log
.
info
(
"记录订单取消原因"
);
OrderCancelReasonParam
orderCancelReasonParam
=
new
OrderCancelReasonParam
();
orderCancelReasonParam
.
setOrderNo
(
orderNo
);
orderCancelReasonParam
.
setReason
(
param
.
getCancelReason
());
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
orderCancelReasonParam
.
setCreateNo
(
loginUserInfo
.
getUserNo
());
orderCancelReasonParam
.
setCreateName
(
loginUserInfo
.
getUserName
());
orderFeign
.
orderCancelReason
(
orderCancelReasonParam
);
//TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
log
.
info
(
"执行订单状态更改"
);
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
log
.
info
(
"执行承运端订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}"
,
orderNo
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
param
).
toString
().
getBytes
()).
build
();
rabbitTemplate
.
send
(
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_
CANCEL_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CANCEL_ROUTE_KEY
,
message
RabbitKeyConstants
.
ORDER_
TRUCK_BIND_LAZY_EXCHANGE
,
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_ROUTE_KEY
,
message2
);
);
}
}
// /**
// * 平台取消订单前置(只修改订单相关状态)
// *
// * @param param
// */
// @Override
// @Transactional(rollbackFor = Exception.class)
// public void platformCancelOrderPre(OrderCancelParam param) {
// String orderNo = param.getOrderNo();
// List<OrderGoods> orderGoodsList = null;
// Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode();
// String now = DateUtils.formatDateTime(LocalDateTime.now()).get();
// switch (param.getCancelType()) {
// case 1: //单纯取消订单
// if (CollectionUtil.isNotEmpty(orderChildDao.getOrderChildByOrderNo(orderNo))) {
// throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前订单已发生变化,请重新选择取消方式");
// }
// orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
//
// if (CollectionUtil.isNotEmpty(orderGoodsList)) {
// List<Integer> ids = new LinkedList<>();
// for (OrderGoods orderGoods : orderGoodsList) {
// if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
// orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
// }
// ids.add(orderGoods.getId());
// goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
//
// }
// orderGoodsDao.batchUpdateOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode(),
// ids);
// }
// break;
// case 2: //取消未拉运吨数的货单
// orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
//
// for (OrderGoods orderGoods : orderGoodsList) {
// OrderGoods update = new OrderGoods();
// update.setId(orderGoods.getId());
// //提取和剩余吨数一样,代表一直没人拉
// if (orderGoods.getResidueTransportWeight().compareTo(orderGoods.getExtractWeight()) == 0) {
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
// } else {
// orderStatusCode = OrderEnum.Status.COMPLETED.getCode();
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
// }
// if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
// orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
// goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
// }
// goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
//
// orderGoodsDao.updateEntityByKey(update);
// }
// break;
//
// case 3: //取消未拉运+未到达货源地吨数
// List<OrderChild> orderChildren = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
// if (CollectionUtil.isEmpty(orderChildren)) {
// throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前订单已发生变化,请重新选择取消方式");
// }
// List<String > childNoList = new LinkedList<>();
// for (OrderChild orderChild : orderChildren) {
// //释放车辆
// driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
// childNoList.add(orderChild.getChildNo());
// }
// if (CollectionUtil.isNotEmpty(childNoList)) {
// orderChildDao.batchUpdateOrderChildStatus(
// OrderChildEnum.Status.OWNER_CANCEL.getCode(), "平台取消",
// now, now, childNoList);
// }
//
// orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
// Map<String, List<OrderChild>> orderChildMap = orderChildren.stream()
// .collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
//
// for (OrderGoods orderGoods : orderGoodsList) {
// OrderGoods update = new OrderGoods();
// update.setId(orderGoods.getId());
// if (CollectionUtil.isEmpty(orderChildMap.get(orderGoods.getOrderGoodsNo()))) {
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
// } else {
// BigDecimal reduce = orderChildMap.get(orderGoods.getOrderGoodsNo())
// .stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
// //当前产生可取消运单的吨数加货单剩余吨数如果等于货单提取的吨数,那么就是已取消
// if (orderGoods.getExtractWeight().compareTo(orderGoods.getResidueTransportWeight().add(reduce)) == 0) {
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
// } else {
// orderStatusCode = OrderEnum.Status.COMPLETED.getCode();
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
// }
// }
//
// if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
// orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
// }
// goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
//
// orderGoodsDao.updateEntityByKey(update);
// }
//
// break;
//
// default:
// throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "参数有误");
//
// }
//
// log.info("记录订单取消原因");
// OrderCancelReasonParam orderCancelReasonParam = new OrderCancelReasonParam();
// orderCancelReasonParam.setOrderNo(orderNo);
// orderCancelReasonParam.setReason(param.getCancelReason());
// UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
// orderCancelReasonParam.setCreateNo(loginUserInfo.getUserNo());
// orderCancelReasonParam.setCreateName(loginUserInfo.getUserName());
// orderFeign.orderCancelReason(orderCancelReasonParam);
// //TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
//
// log.info("执行订单状态更改");
// if (!orderFeign.updateOrderStatusByOrderNo(orderNo, orderStatusCode).succeed()) {
// throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用取消订单失败");
// }
// log.info("执行承运端订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
//
// Message message = MessageBuilder.withBody(JSONUtil.parse(param).toString().getBytes()).build();
// rabbitTemplate.send(
// RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
// );
// }
/**
/**
* 执行订单取消后归还吨数
* 执行订单取消后归还吨数
*
*
...
@@ -523,18 +512,90 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -523,18 +512,90 @@ public class OrderCancelServiceImpl implements OrderCancelService {
List
<
OrderGoods
>
orderGoodsList
=
null
;
List
<
OrderGoods
>
orderGoodsList
=
null
;
switch
(
param
.
getCancelType
())
{
switch
(
param
.
getCancelType
())
{
case
1
:
//单纯取消订单及货单
case
1
:
//单纯取消订单及货单
orderGoodsList
=
getOrderGoods
(
orderNo
,
orderInfoFeign
,
truckDemandMap
,
vehicleUsageMap
,
rollbackOrderWeightParam
,
truckDemand
);
break
;
case
2
:
//取消未拉运吨数的货单及订单
orderGoodsList
=
getGoods
(
orderNo
,
orderInfoFeign
,
truckDemandMap
,
vehicleUsageMap
,
rollbackOrderWeightParam
,
truckDemand
);
break
;
case
3
:
//取消未拉运+未到达货源地吨数
orderGoodsList
=
getOrderGoods
(
param
,
orderNo
,
orderInfoFeign
,
truckDemandMap
,
vehicleUsageMap
,
rollbackOrderWeightParam
,
truckDemand
);
break
;
default
:
return
;
}
if
(!
orderFeign
.
rollbackOrderWeight
(
rollbackOrderWeightParam
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"远程调用更新订单余量失败"
);
}
// if (!orderFeign.saveOrderSettlementJobRecord(orderNo).succeed()) {
// throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用结算单锁定失败");
// }
//订单取消恢复货单的剩余吨数为0
orderGoodsService
.
batchUpdateResidueWeight
(
orderGoodsList
);
//触发自动冻结的mq消费逻辑
triggerAutoFreeze
(
orderInfoFeign
.
getOwnerUserNo
(),
orderNo
);
}
private
List
<
OrderGoods
>
getOrderGoods
(
OrderCancelParam
param
,
String
orderNo
,
FeignOrderVO
orderInfoFeign
,
Map
<
Integer
,
BigDecimal
>
truckDemandMap
,
Map
<
Integer
,
BigDecimal
>
vehicleUsageMap
,
RollbackOrderWeightParam
rollbackOrderWeightParam
,
Integer
truckDemand
)
{
List
<
OrderGoods
>
orderGoodsList
;
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
new
HashMap
<>();
if
(
CollectionUtil
.
isNotEmpty
(
param
.
getChildNoList
()))
{
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectInOrderChildNoList
(
param
.
getChildNoList
());
orderChildMap
=
orderChildren
.
stream
().
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
}
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
.
add
(
orderGoods
.
getResidueTransportWeight
()));
if
(
CollectionUtil
.
isNotEmpty
(
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())))
{
BigDecimal
childSum
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
()).
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
update
.
setAlreadyTransportWeight
(
orderGoods
.
getAlreadyTransportWeight
()
.
subtract
(
childSum
)
);
update
.
setResidueTransportWeight
(
orderGoods
.
getResidueTransportWeight
().
add
(
childSum
));
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
childSum
));
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
}
}
else
{
}
else
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
.
add
(
orderGoods
.
getResidueTransportWeight
()));
if
(
CollectionUtil
.
isNotEmpty
(
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())))
{
BigDecimal
childSum
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
()).
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
update
.
setAlreadyTransportWeight
(
orderGoods
.
getAlreadyTransportWeight
()
.
subtract
(
childSum
)
);
update
.
setResidueTransportWeight
(
orderGoods
.
getResidueTransportWeight
().
add
(
childSum
));
vehicleUsageMap
.
put
(
orderGoods
.
getTruckDemand
(),
vehicleUsageMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
childSum
));
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
}
}
}
//归还吨数
//归还吨数
...
@@ -559,9 +620,11 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -559,9 +620,11 @@ public class OrderCancelServiceImpl implements OrderCancelService {
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
}
break
;
return
orderGoodsList
;
case
2
:
//取消未拉运吨数的货单及订单
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
private
List
<
OrderGoods
>
getGoods
(
String
orderNo
,
FeignOrderVO
orderInfoFeign
,
Map
<
Integer
,
BigDecimal
>
truckDemandMap
,
Map
<
Integer
,
BigDecimal
>
vehicleUsageMap
,
RollbackOrderWeightParam
rollbackOrderWeightParam
,
Integer
truckDemand
)
{
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
...
@@ -598,64 +661,23 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -598,64 +661,23 @@ public class OrderCancelServiceImpl implements OrderCancelService {
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
}
break
;
return
orderGoodsList
;
case
3
:
//取消未拉运+未到达货源地吨数
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
new
HashMap
<>();
if
(
CollectionUtil
.
isNotEmpty
(
param
.
getChildNoList
()))
{
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectInOrderChildNoList
(
param
.
getChildNoList
());
orderChildMap
=
orderChildren
.
stream
().
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
}
}
private
List
<
OrderGoods
>
getOrderGoods
(
String
orderNo
,
FeignOrderVO
orderInfoFeign
,
Map
<
Integer
,
BigDecimal
>
truckDemandMap
,
Map
<
Integer
,
BigDecimal
>
vehicleUsageMap
,
RollbackOrderWeightParam
rollbackOrderWeightParam
,
Integer
truckDemand
)
{
List
<
OrderGoods
>
orderGoodsList
;
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
.
add
(
orderGoods
.
getResidueTransportWeight
()));
if
(
CollectionUtil
.
isNotEmpty
(
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())))
{
BigDecimal
childSum
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
()).
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
update
.
setAlreadyTransportWeight
(
orderGoods
.
getAlreadyTransportWeight
()
.
subtract
(
childSum
)
);
update
.
setResidueTransportWeight
(
orderGoods
.
getResidueTransportWeight
().
add
(
childSum
));
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
childSum
));
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
}
}
else
{
}
else
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
.
add
(
orderGoods
.
getResidueTransportWeight
()));
if
(
CollectionUtil
.
isNotEmpty
(
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())))
{
BigDecimal
childSum
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
()).
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
update
.
setAlreadyTransportWeight
(
orderGoods
.
getAlreadyTransportWeight
()
.
subtract
(
childSum
)
);
update
.
setResidueTransportWeight
(
orderGoods
.
getResidueTransportWeight
().
add
(
childSum
));
vehicleUsageMap
.
put
(
orderGoods
.
getTruckDemand
(),
vehicleUsageMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
childSum
));
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
}
}
}
//归还吨数
//归还吨数
...
@@ -680,27 +702,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -680,27 +702,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
}
break
;
return
orderGoodsList
;
default
:
return
;
}
if
(!
orderFeign
.
rollbackOrderWeight
(
rollbackOrderWeightParam
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"远程调用更新订单余量失败"
);
}
if
(!
orderFeign
.
saveOrderSettlementJobRecord
(
orderNo
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用结算单锁定失败"
);
}
//订单取消恢复货单的剩余吨数为0
orderGoodsService
.
batchUpdateResidueWeight
(
orderGoodsList
);
//触发自动冻结的mq消费逻辑
triggerAutoFreeze
(
orderInfoFeign
.
getOwnerUserNo
(),
orderNo
);
}
}
//订单取消增加自动冻结的消息触发
//订单取消增加自动冻结的消息触发
...
@@ -722,6 +724,11 @@ public class OrderCancelServiceImpl implements OrderCancelService {
...
@@ -722,6 +724,11 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
}
}
}
/**
* 客服取消订单
* @param orderChildNo
* @param remark
*/
@Override
@Override
public
void
artificialCancelOrder
(
String
orderChildNo
,
String
remark
)
{
public
void
artificialCancelOrder
(
String
orderChildNo
,
String
remark
)
{
LocalDateTime
now
=
LocalDateTime
.
now
();
LocalDateTime
now
=
LocalDateTime
.
now
();
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildSyncTransportInvoiceRecordServiceImpl.java
0 → 100644
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
service
.
impl
;
import
com.clx.performance.service.OrderChildSyncTransportInvoiceRecordService
;
import
org.springframework.stereotype.Service
;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
@Service
public
class
OrderChildSyncTransportInvoiceRecordServiceImpl
implements
OrderChildSyncTransportInvoiceRecordService
{
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java
浏览文件 @
295ce22a
...
@@ -14,10 +14,12 @@ import com.clx.order.vo.feign.FeignOrderVO;
...
@@ -14,10 +14,12 @@ import com.clx.order.vo.feign.FeignOrderVO;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderCancelComponent
;
import
com.clx.performance.component.OrderCancelComponent
;
import
com.clx.performance.component.OrderGoodsStatusLazyComponent
;
import
com.clx.performance.component.OrderGoodsStatusLazyComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsDriverTruckDao
;
import
com.clx.performance.dao.OrderGoodsDriverTruckDao
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.dto.OrderGoodsCancelDTO
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.extranal.user.DriverService
;
import
com.clx.performance.extranal.user.DriverService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChild
;
...
@@ -36,6 +38,7 @@ import com.clx.performance.struct.OrderGoodsStruct;
...
@@ -36,6 +38,7 @@ import com.clx.performance.struct.OrderGoodsStruct;
import
com.clx.performance.vo.app.OrderGoodsAPPVO
;
import
com.clx.performance.vo.app.OrderGoodsAPPVO
;
import
com.clx.performance.vo.feign.FreightEstimateVO
;
import
com.clx.performance.vo.feign.FreightEstimateVO
;
import
com.clx.performance.vo.feign.OrderGoodsFeignVO
;
import
com.clx.performance.vo.feign.OrderGoodsFeignVO
;
import
com.clx.performance.vo.mq.OrderTruckBindCancelParam
;
import
com.clx.performance.vo.pc.OrderGoodsEditVO
;
import
com.clx.performance.vo.pc.OrderGoodsEditVO
;
import
com.clx.performance.vo.pc.OrderGoodsVO
;
import
com.clx.performance.vo.pc.OrderGoodsVO
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
...
@@ -50,16 +53,18 @@ import com.msl.user.utils.TokenUtil;
...
@@ -50,16 +53,18 @@ import com.msl.user.utils.TokenUtil;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.LinkedList
;
import
java.util.function.Consumer
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -69,7 +74,7 @@ import java.util.stream.Collectors;
...
@@ -69,7 +74,7 @@ import java.util.stream.Collectors;
*/
*/
@Service
@Service
@Slf4j
@Slf4j
public
class
OrderGoodsServiceImpl
implements
OrderGoodsService
{
public
class
OrderGoodsServiceImpl
implements
OrderGoodsService
,
InitializingBean
{
@Autowired
@Autowired
private
OrderGoodsDao
orderGoodsDao
;
private
OrderGoodsDao
orderGoodsDao
;
...
@@ -108,6 +113,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
...
@@ -108,6 +113,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
private
OrderChildLogService
orderChildLogService
;
private
OrderChildLogService
orderChildLogService
;
@Autowired
@Autowired
private
OrderChildPostService
orderChildPostService
;
private
OrderChildPostService
orderChildPostService
;
@Autowired
private
RabbitTemplate
rabbitTemplate
;
private
static
Map
<
Integer
,
Consumer
<
OrderGoodsCancelDTO
>>
orderGoodsCancelMap
=
new
HashMap
<>();
@Override
@Override
public
OrderGoodsVO
getOrderGoodsInfoByOrderGoodsNoForPC
(
String
orderGoodsNo
)
{
public
OrderGoodsVO
getOrderGoodsInfoByOrderGoodsNoForPC
(
String
orderGoodsNo
)
{
...
@@ -504,23 +513,82 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
...
@@ -504,23 +513,82 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
public
void
orderGoodsCancel
(
OrderGoodsCancelParam
goodsCancelParam
)
{
public
void
orderGoodsCancel
(
OrderGoodsCancelParam
goodsCancelParam
)
{
String
orderGoodsNo
=
goodsCancelParam
.
getOrderGoodsNo
();
String
orderGoodsNo
=
goodsCancelParam
.
getOrderGoodsNo
();
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderGoodsNo
).
orElseThrow
(
PerformanceResultEnum
.
HTTP_ERROR
,
"数据错误"
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderGoodsNo
).
orElseThrow
(
PerformanceResultEnum
.
HTTP_ERROR
,
"数据错误"
);
String
now
=
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
(),
"yyyy-MM-dd HH:mm:ss"
).
get
();
List
<
OrderChild
>
orderChildList
=
null
;
BigDecimal
residueWeight
=
null
;
BigDecimal
sum
=
BigDecimal
.
ZERO
;
List
<
String
>
childNoList
=
new
LinkedList
<>();
List
<
String
>
childNoList
=
new
LinkedList
<>();
Integer
orderGoodsStatus
=
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
();
//封装取消策略参数
OrderGoodsCancelDTO
build
=
OrderGoodsCancelDTO
.
builder
().
orderGoodsCancelParam
(
goodsCancelParam
)
.
orderGoodsStatus
(
orderGoodsStatus
).
orderGoods
(
orderGoods
)
.
childNoList
(
childNoList
).
build
();
//根据不同取消策略调用不同方法
orderGoodsCancelMap
.
get
(
goodsCancelParam
.
getCancelOperateType
()).
accept
(
build
);
OrderCancelReasonParam
orderCancelReasonParam
=
new
OrderCancelReasonParam
();
orderCancelReasonParam
.
setOrderNo
(
goodsCancelParam
.
getOrderNo
());
orderCancelReasonParam
.
setOrderGoodsNo
(
goodsCancelParam
.
getOrderGoodsNo
());
orderCancelReasonParam
.
setReason
(
goodsCancelParam
.
getCancelReason
());
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
orderCancelReasonParam
.
setCreateNo
(
loginUserInfo
.
getUserNo
());
orderCancelReasonParam
.
setCreateName
(
loginUserInfo
.
getUserName
());
//删除绑定记录
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
//记录取消意见
orderFeign
.
orderCancelReason
(
orderCancelReasonParam
);
if
(
CollectionUtil
.
isNotEmpty
(
childNoList
))
{
for
(
String
childNo
:
childNoList
)
{
// 货单取消
orderChildPostService
.
orderGoodsCancel
(
childNo
);
}
}
OrderTruckBindCancelParam
bindCancelParam
=
new
OrderTruckBindCancelParam
();
bindCancelParam
.
setOrderGoodsNo
(
orderGoodsNo
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
bindCancelParam
).
toString
().
getBytes
()).
build
();
message
.
getMessageProperties
().
setHeader
(
"x-delay"
,
2000
);
//执行解绑自有车辆处理逻辑,将绑定记录正常改为取消
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_EXCHANGE
,
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_ROUTE_KEY
,
message
);
orderGoodsLogService
.
saveLog
(
orderGoodsNo
,
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
(),
OrderGoodsLogsEnum
.
Type
.
CANCEL
.
getName
(),
""
);
}
private
void
cancelOperateThreeTypeStrategy
(
OrderGoodsCancelDTO
dto
)
{
String
now
=
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
()).
get
();
BigDecimal
sum
=
BigDecimal
.
ZERO
;
OrderGoods
orderGoods
=
dto
.
getOrderGoods
();
List
<
String
>
childNoList
=
dto
.
getChildNoList
();
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
Integer
cancelOperateType
=
goodsCancelParam
.
getCancelOperateType
();
Integer
orderGoodsStatus
=
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
();
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
switch
(
cancelOperateType
)
{
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
(),
dto
.
getOrderGoodsCancelParam
().
getTruckList
());
case
1
:
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
());
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前货单已产生运单"
);
List
<
OrderChild
>
filterOrderChildList
=
orderChildList
.
stream
().
filter
(
item
->
item
.
getStatus
()
<
OrderChildEnum
.
Status
.
LOAD
.
getCode
()).
collect
(
Collectors
.
toList
());
for
(
OrderChild
orderChild
:
filterOrderChildList
)
{
driverService
.
updateOrderStatus
(
orderChild
.
getDriverUserNo
(),
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
orderChild
.
getTruckId
(),
1
);
childNoList
.
add
(
orderChild
.
getChildNo
());
sum
=
sum
.
add
(
orderChild
.
getWeight
());
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
OWNER
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
OWNER
.
getMsg
()
);
}
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
"系统取消"
,
now
,
now
,
childNoList
);
orderChildList
.
removeAll
(
filterOrderChildList
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildList
))
{
dto
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
}
}
residueWeight
=
orderGoods
.
getResidueTransportWeight
(
);
BigDecimal
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
...
@@ -535,20 +603,22 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
...
@@ -535,20 +603,22 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
()
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
OrderGoods
update
=
new
OrderGoods
();
orderGoodsDao
.
updateOrderGoodsSetResidueWeightAndAlreadyWeightAndStatus
(
orderGoods
.
getResidueTransportWeight
(),
update
.
setId
(
orderGoods
.
getId
());
sum
,
dto
.
getOrderGoodsStatus
(),
orderGoods
.
getId
());
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
}
update
.
setOrderGoodsStatus
(
orderGoodsStatus
);
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
break
;
case
2
:
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
());
private
void
cancelOperateTwoTypeStrategy
(
OrderGoodsCancelDTO
dto
)
{
BigDecimal
sum
=
BigDecimal
.
ZERO
;
String
now
=
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
()).
get
();
OrderGoods
orderGoods
=
dto
.
getOrderGoods
();
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
());
List
<
String
>
childNoList
=
dto
.
getChildNoList
();
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
List
<
OrderChild
>
filterOrderChildList
=
orderChildList
.
stream
().
filter
(
item
->
item
.
getStatus
()
<
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()).
collect
(
Collectors
.
toList
());
List
<
OrderChild
>
filterOrderChildList
=
orderChildList
.
stream
().
filter
(
item
->
item
.
getStatus
()
<
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
filterOrderChildList
))
{
if
(
CollectionUtils
.
isNotEmpty
(
filterOrderChildList
))
{
...
@@ -563,15 +633,15 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
...
@@ -563,15 +633,15 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
}
}
orderChildDao
.
batchUpdateOrderChildStatus
(
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
now
,
now
,
childNoList
);
now
,
now
,
childNoList
);
}
}
orderChildList
.
removeAll
(
filterOrderChildList
);
orderChildList
.
removeAll
(
filterOrderChildList
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildList
))
{
if
(
CollectionUtil
.
isNotEmpty
(
orderChildList
))
{
orderGoodsStatus
=
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
(
);
dto
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
()
);
}
}
}
}
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
BigDecimal
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
...
@@ -587,7 +657,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
...
@@ -587,7 +657,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
}
}
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
()
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
...
@@ -597,32 +667,16 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
...
@@ -597,32 +667,16 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
break
;
}
case
3
:
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
(),
goodsCancelParam
.
getTruckList
());
private
void
cancelOperateOneTypeStrategy
(
OrderGoodsCancelDTO
dto
)
{
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
OrderGoods
orderGoods
=
dto
.
getOrderGoods
();
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
());
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
List
<
OrderChild
>
filterOrderChildList
=
orderChildList
.
stream
().
filter
(
item
->
item
.
getStatus
()
<
OrderChildEnum
.
Status
.
LOAD
.
getCode
()).
collect
(
Collectors
.
toList
());
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前货单已产生运单"
);
for
(
OrderChild
orderChild
:
filterOrderChildList
)
{
driverService
.
updateOrderStatus
(
orderChild
.
getDriverUserNo
(),
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
orderChild
.
getTruckId
(),
1
);
childNoList
.
add
(
orderChild
.
getChildNo
());
sum
=
sum
.
add
(
orderChild
.
getWeight
());
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
OWNER
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
OWNER
.
getMsg
()
);
}
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
"系统取消"
,
now
,
now
,
childNoList
);
orderChildList
.
removeAll
(
filterOrderChildList
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildList
))
{
orderGoodsStatus
=
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
();
}
}
}
BigDecimal
residueWeight
=
dto
.
getOrderGoods
().
getResidueTransportWeight
();
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
...
@@ -637,34 +691,16 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
...
@@ -637,34 +691,16 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
()
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
orderGoodsDao
.
updateOrderGoodsSetResidueWeightAndAlreadyWeightAndStatus
(
orderGoods
.
getResidueTransportWeight
(),
sum
,
orderGoodsStatus
,
orderGoods
.
getId
());
OrderGoods
update
=
new
OrderGoods
();
}
update
.
setId
(
orderGoods
.
getId
());
break
;
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
default
:
update
.
setOrderGoodsStatus
(
dto
.
getOrderGoodsStatus
());
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"参数类型有误"
);
orderGoodsDao
.
updateEntityByKey
(
update
);
}
OrderCancelReasonParam
orderCancelReasonParam
=
new
OrderCancelReasonParam
();
orderCancelReasonParam
.
setOrderNo
(
goodsCancelParam
.
getOrderNo
());
orderCancelReasonParam
.
setOrderGoodsNo
(
goodsCancelParam
.
getOrderGoodsNo
());
orderCancelReasonParam
.
setReason
(
goodsCancelParam
.
getCancelReason
());
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
orderCancelReasonParam
.
setCreateNo
(
loginUserInfo
.
getUserNo
());
orderCancelReasonParam
.
setCreateName
(
loginUserInfo
.
getUserName
());
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
orderFeign
.
orderCancelReason
(
orderCancelReasonParam
);
for
(
String
childNo
:
childNoList
)
{
// 货单取消
orderChildPostService
.
orderGoodsCancel
(
childNo
);
}
}
orderGoodsLogService
.
saveLog
(
orderGoodsNo
,
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
(),
OrderGoodsLogsEnum
.
Type
.
CANCEL
.
getName
(),
""
);
}
}
/**
/**
...
@@ -811,4 +847,12 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
...
@@ -811,4 +847,12 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
List
<
Integer
>
collect
=
list
.
stream
().
map
(
OrderGoods:
:
getId
).
collect
(
Collectors
.
toList
());
List
<
Integer
>
collect
=
list
.
stream
().
map
(
OrderGoods:
:
getId
).
collect
(
Collectors
.
toList
());
orderGoodsDao
.
batchUpdateResidueWeight
(
collect
,
BigDecimal
.
ZERO
);
orderGoodsDao
.
batchUpdateResidueWeight
(
collect
,
BigDecimal
.
ZERO
);
}
}
@Override
public
void
afterPropertiesSet
()
throws
Exception
{
orderGoodsCancelMap
.
put
(
1
,
this
::
cancelOperateOneTypeStrategy
);
orderGoodsCancelMap
.
put
(
2
,
this
::
cancelOperateTwoTypeStrategy
);
orderGoodsCancelMap
.
put
(
3
,
this
::
cancelOperateThreeTypeStrategy
);
}
}
}
performance-web/src/main/java/com/clx/performance/service/impl/OwnerAccountServiceImpl.java
浏览文件 @
295ce22a
...
@@ -1213,7 +1213,4 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
...
@@ -1213,7 +1213,4 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
}
}
}
}
public
static
void
main
(
String
[]
args
)
{
}
}
}
performance-web/src/main/java/com/clx/performance/service/impl/settle/NetworkDriverRunningWaterRecordServiceImpl.java
浏览文件 @
295ce22a
package
com
.
clx
.
performance
.
service
.
impl
.
settle
;
package
com
.
clx
.
performance
.
service
.
impl
.
settle
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.component.IdGenerateSnowFlake
;
import
com.clx.performance.component.IdGenerateSnowFlake
;
...
@@ -217,7 +218,15 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
...
@@ -217,7 +218,15 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
public
IPage
<
APPNetworkDriverRunningWaterRecordVO
>
runningWaterList
(
NetworkDriverPageParam
param
)
{
public
IPage
<
APPNetworkDriverRunningWaterRecordVO
>
runningWaterList
(
NetworkDriverPageParam
param
)
{
Long
userNo
=
TokenUtil
.
getLoginUserInfo
().
getUserNo
();
Long
userNo
=
TokenUtil
.
getLoginUserInfo
().
getUserNo
();
param
.
setUserNo
(
userNo
);
param
.
setUserNo
(
userNo
);
return
networkDriverRunningWaterRecordDao
.
runningWaterList
(
param
);
IPage
<
APPNetworkDriverRunningWaterRecordVO
>
page
=
networkDriverRunningWaterRecordDao
.
runningWaterList
(
param
);
if
(
NetworkDriverAccountEnum
.
FundType
.
EXPENDITURE
.
getCode
().
equals
(
param
.
getFundType
()))
{
if
(
CollectionUtil
.
isNotEmpty
(
page
.
getRecords
()))
{
for
(
APPNetworkDriverRunningWaterRecordVO
record
:
page
.
getRecords
())
{
record
.
setAlterationBalance
(
record
.
getAlterationBalance
().
negate
());
}
}
}
return
page
;
}
}
@Override
@Override
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqHandlerServiceImpl.java
浏览文件 @
295ce22a
...
@@ -131,7 +131,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
...
@@ -131,7 +131,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
}
}
}
}
else
{
else
{
log
.
info
(
"
月
结初始化货主结算单"
);
log
.
info
(
"
拉运完成
结初始化货主结算单"
);
settlementOwner
=
settlementOwnerDao
.
selectUnlockOfSettlementPeriodImmediate
(
settlementOwnerDetail
.
getOrderNo
(),
settlementOwnerDetail
.
getInvoiceType
()).
orNull
();
settlementOwner
=
settlementOwnerDao
.
selectUnlockOfSettlementPeriodImmediate
(
settlementOwnerDetail
.
getOrderNo
(),
settlementOwnerDetail
.
getInvoiceType
()).
orNull
();
if
(
settlementOwner
==
null
){
// 拉运完成初始化
if
(
settlementOwner
==
null
){
// 拉运完成初始化
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementServiceImpl.java
浏览文件 @
295ce22a
...
@@ -2,56 +2,41 @@ package com.clx.performance.service.impl.settle;
...
@@ -2,56 +2,41 @@ package com.clx.performance.service.impl.settle;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.performance.component.IdGenerateSnowFlake
;
import
com.clx.performance.component.IdGenerateSnowFlake
;
import
com.clx.performance.co
mponent.ThirdComponent
;
import
com.clx.performance.co
nstant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OwnerAccountDao
;
import
com.clx.performance.dao.OwnerAccountDao
;
import
com.clx.performance.dao.OwnerRunningWaterRecordDao
;
import
com.clx.performance.dao.OwnerRunningWaterRecordDao
;
import
com.clx.performance.dao.settle.NetworkDriverAccountDao
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
import
com.clx.performance.dao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.dao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.dto.OrderChildSyncDTO
;
import
com.clx.performance.enums.IdTypeEnum
;
import
com.clx.performance.enums.IdTypeEnum
;
import
com.clx.performance.enums.NetworkDriverAccountEnum
;
import
com.clx.performance.enums.OwnerAccountEnum
;
import
com.clx.performance.enums.OwnerAccountEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.settle.SettlementDriverEnum
;
import
com.clx.performance.enums.settle.SettlementDriverEnum
;
import
com.clx.performance.enums.settle.SettlementOwnerDetailEnum
;
import
com.clx.performance.enums.settle.SettlementOwnerDetailEnum
;
import
com.clx.performance.enums.settle.SettlementOwnerEnum
;
import
com.clx.performance.enums.settle.SettlementOwnerEnum
;
import
com.clx.performance.enums.settle.SettlementWayEnum
;
import
com.clx.performance.enums.settle.SettlementWayEnum
;
import
com.clx.performance.feign.TransportFeignService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.OwnerAccount
;
import
com.clx.performance.model.OwnerAccount
;
import
com.clx.performance.model.OwnerRunningWaterRecord
;
import
com.clx.performance.model.OwnerRunningWaterRecord
;
import
com.clx.performance.model.settle.NetworkCaseOutRecord
;
import
com.clx.performance.model.settle.NetworkDriverAccount
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.param.feign.transport.ThirdOrderChildBrokerParam
;
import
com.clx.performance.service.TransportSyncService
;
import
com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.clx.performance.service.settle.SettlementService
;
import
com.clx.performance.service.settle.SettlementService
;
import
com.clx.performance.vo.feign.transport.ThirdOrderChildBrokerResultVO
;
import
com.msl.common.dto.HttpDTO
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.result.Result
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Objects
;
@Slf4j
@Slf4j
@Service
@Service
public
class
SettlementServiceImpl
implements
SettlementService
{
public
class
SettlementServiceImpl
implements
SettlementService
{
@Autowired
@Autowired
private
OrderChildDao
orderChildDao
;
private
OrderChildDao
orderChildDao
;
@Autowired
@Autowired
...
@@ -61,22 +46,13 @@ public class SettlementServiceImpl implements SettlementService {
...
@@ -61,22 +46,13 @@ public class SettlementServiceImpl implements SettlementService {
@Autowired
@Autowired
private
SettlementMqService
settlementMqService
;
private
SettlementMqService
settlementMqService
;
@Autowired
@Autowired
private
TransportSyncService
transportSyncService
;
@Autowired
private
OrderGoodsDao
orderGoodsDao
;
@Autowired
private
OwnerRunningWaterRecordDao
ownerRunningWaterRecordDao
;
private
OwnerRunningWaterRecordDao
ownerRunningWaterRecordDao
;
@Autowired
@Autowired
private
IdGenerateSnowFlake
idGenerateSnowFlake
;
private
IdGenerateSnowFlake
idGenerateSnowFlake
;
@Autowired
private
TransportFeignService
transportFeignService
;
@Autowired
@Autowired
private
OwnerAccountDao
ownerAccountDao
;
private
OwnerAccountDao
ownerAccountDao
;
@Autowired
@Autowired
private
NetworkDriverRunningWaterRecordService
networkDriverRunningWaterRecordServic
e
;
private
RabbitTemplate
rabbitTemplat
e
;
@Override
@Override
...
@@ -96,71 +72,77 @@ public class SettlementServiceImpl implements SettlementService {
...
@@ -96,71 +72,77 @@ public class SettlementServiceImpl implements SettlementService {
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
}
else
{
}
else
{
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
get
();
//TODO 发送MQ异步
//是否通过风控,调用网络货运
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
orderChild
).
toString
().
getBytes
()).
build
();
ThirdOrderChildBrokerParam
param
=
transportSyncService
.
generateOrderChildSync
(
orderChild
,
orderGoods
,
settlementOwnerDetail
,
settlementDriverDetail
);
rabbitTemplate
.
send
(
HttpDTO
httpDTOResult
=
transportFeignService
.
orderChildSync
(
param
);
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY
,
message
String
decrypt
=
ThirdComponent
.
decrypt
(
httpDTOResult
.
getData
());
OrderChildSyncDTO
bean
=
JSONUtil
.
toBean
(
decrypt
,
OrderChildSyncDTO
.
class
);
log
.
info
(
"OrderChildSyncDTO信息为:{}"
,
JSONUtil
.
parse
(
bean
));
if
(
bean
.
getCode
()
==
0
)
{
Integer
status
=
bean
.
getData
().
getStatus
();
if
(
status
==
1
)
{
//通过风控
List
<
OwnerRunningWaterRecord
>
runningWaterRecordList
=
ownerRunningWaterRecordDao
.
getOwnerRunningWaterRecord
(
orderChild
.
getOrderNo
());
BigDecimal
frozen
=
runningWaterRecordList
.
stream
().
filter
(
item
->
{
return
item
.
getRunningWaterType
().
equals
(
OwnerAccountEnum
.
RunningWaterStatus
.
FROZEN
.
getCode
())
&&
item
.
getAccountType
().
equals
(
OwnerAccountEnum
.
AccountTypeStatus
.
PREPAID_FREIGHT_ACCOUNT
.
getCode
())
;
}).
map
(
OwnerRunningWaterRecord:
:
getAlterationBalance
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
BigDecimal
takeOut
=
runningWaterRecordList
.
stream
().
filter
(
item
->
{
return
item
.
getRunningWaterType
().
equals
(
OwnerAccountEnum
.
RunningWaterStatus
.
TAKE_OUT
.
getCode
())
&&
item
.
getAccountType
().
equals
(
OwnerAccountEnum
.
AccountTypeStatus
.
PREPAID_FREIGHT_ACCOUNT
.
getCode
())
;
}).
map
(
OwnerRunningWaterRecord:
:
getAlterationBalance
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
//设置预付运费金额
BigDecimal
ans
=
getPrepayFreightPay
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
,
frozen
);
BigDecimal
subtract
=
frozen
.
subtract
(
takeOut
);
log
.
info
(
"冻结预付运费:{}, 扣除的流水总和:{}"
,
frozen
,
takeOut
);
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ONLINE
.
getCode
();
settlementDriverDetail
.
setPrepayFreight
(
ans
);
//冻结的预付运费为0 或者 此刻预付运费也可能为0,那么就不用生成扣除相关流水逻辑
if
(
subtract
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
||
ans
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
}
else
{
if
(
subtract
.
subtract
(
ans
).
compareTo
(
BigDecimal
.
ZERO
)
>=
0
)
{
//账户扣钱并生成扣除流水
generateTakeOutRunningWatter
(
orderChild
,
ans
,
settlementOwnerDetail
,
settlementDriverDetail
);
try
{
//网络货运钱包账户
networkDriverRunningWaterRecordService
.
generateNetworkDriverRunningWaterRecord
(
settlementDriverDetail
,
NetworkDriverAccountEnum
.
RunningWaterStatus
.
SETTLEMENT
.
getCode
()
);
);
//生成提现记录
return
;
networkDriverRunningWaterRecordService
.
generateNetworkCaseOutRecord
(
settlementDriverDetail
);
// OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).get();
}
catch
(
Exception
e
)
{
// //是否通过风控,调用网络货运
log
.
info
(
"运单同步网络货运生成司机运单结算流水失败:{}"
,
e
.
getMessage
());
// ThirdOrderChildBrokerParam param = transportSyncService.generateOrderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
}
// HttpDTO httpDTOResult = transportFeignService.orderChildSync(param);
// String decrypt = ThirdComponent.decrypt(httpDTOResult.getData());
}
else
{
// OrderChildSyncDTO bean = JSONUtil.toBean(decrypt, OrderChildSyncDTO.class);
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
// log.info("OrderChildSyncDTO信息为:{}", JSONUtil.parse(bean));
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
// if (bean.getCode() == 0) {
// Integer status = bean.getData().getStatus();
}
// if (status == 1) {
}
// //通过风控
// List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo());
}
else
{
// BigDecimal frozen = runningWaterRecordList.stream().filter(item -> {
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
// return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.FROZEN.getCode())
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
// && item.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode())
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO
.
getCode
());
// ;
}
// }).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
}
else
{
//
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SYNC_ERROR
);
// BigDecimal takeOut = runningWaterRecordList.stream().filter(item -> {
// return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode())
}
// && item.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode())
// ;
// }).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
// //设置预付运费金额
// BigDecimal ans = getPrepayFreightPay(orderChild.getSettlementWay(), settlementOwnerDetail, frozen);
// BigDecimal subtract = frozen.subtract(takeOut);
// log.info("冻结预付运费:{}, 扣除的流水总和:{}", frozen, takeOut);
// invoiceType = SettlementOwnerEnum.InvoiceType.ONLINE.getCode();
// settlementDriverDetail.setPrepayFreight(ans);
// //冻结的预付运费为0 或者 此刻预付运费也可能为0,那么就不用生成扣除相关流水逻辑
// if (subtract.compareTo(BigDecimal.ZERO) <= 0 || ans.compareTo(BigDecimal.ZERO) == 0) {
// settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
// settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
// } else {
// if (subtract.subtract(ans).compareTo(BigDecimal.ZERO) >= 0) {
// //账户扣钱并生成扣除流水
// generateTakeOutRunningWatter(orderChild, ans, settlementOwnerDetail, settlementDriverDetail);
// try {
// //网络货运钱包账户
// networkDriverRunningWaterRecordService.generateNetworkDriverRunningWaterRecord(
// settlementDriverDetail,
// NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode()
// );
// //生成提现记录
// networkDriverRunningWaterRecordService.generateNetworkCaseOutRecord(settlementDriverDetail);
// }catch (Exception e) {
// log.info("运单同步网络货运生成司机运单结算流水失败:{}", e.getMessage());
// }
//
// } else {
// settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
// settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
//
// }
// }
//
// } else {
// settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
// settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
// settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode());
// }
// } else {
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_SYNC_ERROR);
//
// }
}
}
// 结算金额
// 结算金额
...
...
performance-web/src/main/java/com/clx/performance/sqlProvider/settle/NetworkDriverRunningWaterRecordProvider.java
浏览文件 @
295ce22a
...
@@ -62,7 +62,11 @@ public class NetworkDriverRunningWaterRecordProvider {
...
@@ -62,7 +62,11 @@ public class NetworkDriverRunningWaterRecordProvider {
}
}
if
(
ObjectUtil
.
isNotNull
(
param
.
getFundType
()))
{
if
(
ObjectUtil
.
isNotNull
(
param
.
getFundType
()))
{
WHERE
(
"a.fund_type = #{param.fundType}"
);
WHERE
(
"a.fund_type = #{param.fundType}"
);
}
else
{
WHERE
(
"a.fund_type != "
+
NetworkDriverAccountEnum
.
FundType
.
FROZEN
.
getCode
());
}
}
WHERE
(
"a.running_water_type != "
+
NetworkDriverAccountEnum
.
RunningWaterStatus
.
CASE_OUT_FROZEN
.
getCode
());
ORDER_BY
(
"a.create_time desc"
);
ORDER_BY
(
"a.create_time desc"
);
}}.
toString
();
}}.
toString
();
return
sql
;
return
sql
;
...
...
performance-web/src/main/java/com/clx/performance/strategy/GoodsOrderStrategy.java
浏览文件 @
295ce22a
...
@@ -11,12 +11,15 @@ import com.clx.performance.dao.OrderGoodsTruckBindDao;
...
@@ -11,12 +11,15 @@ import com.clx.performance.dao.OrderGoodsTruckBindDao;
import
com.clx.performance.model.OrderGoodsTruckBind
;
import
com.clx.performance.model.OrderGoodsTruckBind
;
import
com.clx.performance.utils.SpringContextUtils
;
import
com.clx.performance.utils.SpringContextUtils
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.utils.DateUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.env.Environment
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.*
;
import
java.util.*
;
...
@@ -25,6 +28,9 @@ import java.util.stream.Collectors;
...
@@ -25,6 +28,9 @@ import java.util.stream.Collectors;
@Slf4j
@Slf4j
public
abstract
class
GoodsOrderStrategy
{
public
abstract
class
GoodsOrderStrategy
{
@Autowired
private
Environment
environment
;
/**
/**
* 不同的用车需求执行不同的策略 1:one 2:two 3:three
* 不同的用车需求执行不同的策略 1:one 2:two 3:three
...
@@ -43,6 +49,16 @@ public abstract class GoodsOrderStrategy {
...
@@ -43,6 +49,16 @@ public abstract class GoodsOrderStrategy {
if
(
Objects
.
equals
(
orderInfo
.
getStopFlag
(),
OrderStopEnum
.
Status
.
YES
.
getCode
()))
{
if
(
Objects
.
equals
(
orderInfo
.
getStopFlag
(),
OrderStopEnum
.
Status
.
YES
.
getCode
()))
{
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"订单已暂停,无法进行提量"
);
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"订单已暂停,无法进行提量"
);
}
}
String
transportBeginTime
=
orderInfo
.
getTransportBeginTime
();
if
(!
"test"
.
equals
(
environment
.
getActiveProfiles
()[
0
]))
{
for
(
OrderGoodsChildParams
param
:
orderGoodsParams
.
getOrderGoodsChildParams
())
{
String
pendingOrderTime
=
param
.
getPendingOrderTime
();
if
(
DateUtils
.
parseDateTime
(
pendingOrderTime
).
get
().
isBefore
(
DateUtils
.
parseDateTime
(
transportBeginTime
).
get
()))
{
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"挂单时间不能早于拉运开始时间"
);
}
}
}
//多个定向单不允许车辆重复
//多个定向单不允许车辆重复
List
<
OrderGoodsChildParams
>
orderGoodsChildParams
=
orderGoodsParams
.
getOrderGoodsChildParams
();
List
<
OrderGoodsChildParams
>
orderGoodsChildParams
=
orderGoodsParams
.
getOrderGoodsChildParams
();
Set
<
String
>
set
=
new
HashSet
<>();
Set
<
String
>
set
=
new
HashSet
<>();
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论