Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
b1ffdcff
提交
b1ffdcff
authored
1月 22, 2024
作者:
liuhaiquan
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'v10.7_borrowing_and_repayment_20240118' of…
Merge branch 'v10.7_borrowing_and_repayment_20240118' of
https://t.clxkj.cn/clx-java/clx-performance
into v10.7_borrowing_and_repayment_20240118
上级
f6b8fc25
00d6efad
隐藏空白字符变更
内嵌
并排
正在显示
90 个修改的文件
包含
4371 行增加
和
811 行删除
+4371
-811
PerformanceResultEnum.java
...java/com/clx/performance/enums/PerformanceResultEnum.java
+7
-0
TransportSyncTypeEnum.java
...java/com/clx/performance/enums/TransportSyncTypeEnum.java
+39
-0
BorrowerConfigEnum.java
...om/clx/performance/enums/borrower/BorrowerConfigEnum.java
+44
-0
BorrowerEnum.java
...java/com/clx/performance/enums/borrower/BorrowerEnum.java
+44
-0
NbBankRecordEnum.java
...va/com/clx/performance/enums/nbbank/NbBankRecordEnum.java
+33
-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
BorrowerAddParam.java
...m/clx/performance/param/pc/borrower/BorrowerAddParam.java
+32
-0
BorrowerConfigAddParam.java
...performance/param/pc/borrower/BorrowerConfigAddParam.java
+27
-0
BorrowerConfigDeleteUpdateParam.java
...ce/param/pc/borrower/BorrowerConfigDeleteUpdateParam.java
+26
-0
BorrowerConfigStatusUpdateParam.java
...ce/param/pc/borrower/BorrowerConfigStatusUpdateParam.java
+29
-0
BorrowerConfigUpdateParam.java
...formance/param/pc/borrower/BorrowerConfigUpdateParam.java
+32
-0
BorrowerDeleteUpdateParam.java
...formance/param/pc/borrower/BorrowerDeleteUpdateParam.java
+26
-0
BorrowerStatusUpdateParam.java
...formance/param/pc/borrower/BorrowerStatusUpdateParam.java
+29
-0
BorrowerUpdateParam.java
...lx/performance/param/pc/borrower/BorrowerUpdateParam.java
+36
-0
PageBorrowerConfigParam.java
...erformance/param/pc/borrower/PageBorrowerConfigParam.java
+23
-0
PageBorrowerParam.java
.../clx/performance/param/pc/borrower/PageBorrowerParam.java
+20
-0
OrderTruckBindCancelParam.java
.../com/clx/performance/vo/mq/OrderTruckBindCancelParam.java
+20
-0
BorrowerConfigVO.java
.../com/clx/performance/vo/pc/borrower/BorrowerConfigVO.java
+48
-0
BorrowerVO.java
...n/java/com/clx/performance/vo/pc/borrower/BorrowerVO.java
+46
-0
CarrierPageSettlementDriverDetailVO.java
...c/carrier/settle/CarrierPageSettlementDriverDetailVO.java
+2
-0
NbBankOrderPayResultVO.java
.../clx/performance/vo/pc/nbbank/NbBankOrderPayResultVO.java
+33
-0
NbBankOrderPayStatusResultVO.java
...erformance/vo/pc/nbbank/NbBankOrderPayStatusResultVO.java
+38
-0
pom.xml
performance-web/pom.xml
+6
-0
OrderCancelComponent.java
...a/com/clx/performance/component/OrderCancelComponent.java
+139
-135
OwnerAccountComponent.java
.../com/clx/performance/component/OwnerAccountComponent.java
+55
-0
RabbitBeanConfig.java
...ain/java/com/clx/performance/config/RabbitBeanConfig.java
+51
-0
NbBankConfig.java
.../java/com/clx/performance/config/nbbank/NbBankConfig.java
+16
-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
CarrierBorrowerConfigController.java
.../pc/borrower/carrier/CarrierBorrowerConfigController.java
+80
-0
CarrierBorrowerController.java
...roller/pc/borrower/carrier/CarrierBorrowerController.java
+80
-0
OwnerAccountController.java
...rformance/controller/pc/owner/OwnerAccountController.java
+1
-1
TransportSyncController.java
...ance/controller/pc/transport/TransportSyncController.java
+12
-3
TempBankController.java
...m/clx/performance/controller/temp/TempBankController.java
+50
-0
TempController.java
...a/com/clx/performance/controller/temp/TempController.java
+12
-0
NbBankController.java
...x/performance/controller/thirdparty/NbBankController.java
+91
-0
OrderChildSyncTransportInvoiceRecordDao.java
...formance/dao/OrderChildSyncTransportInvoiceRecordDao.java
+17
-0
OrderGoodsTruckBindDao.java
.../java/com/clx/performance/dao/OrderGoodsTruckBindDao.java
+2
-0
BorrowerConfigDao.java
...a/com/clx/performance/dao/borrower/BorrowerConfigDao.java
+31
-0
BorrowerDao.java
...in/java/com/clx/performance/dao/borrower/BorrowerDao.java
+31
-0
OrderChildSyncTransportInvoiceRecordDaoImpl.java
...dao/impl/OrderChildSyncTransportInvoiceRecordDaoImpl.java
+24
-0
OrderGoodsTruckBindDaoImpl.java
.../clx/performance/dao/impl/OrderGoodsTruckBindDaoImpl.java
+9
-0
BorrowerConfigDaoImpl.java
.../performance/dao/impl/borrower/BorrowerConfigDaoImpl.java
+94
-0
BorrowerDaoImpl.java
...om/clx/performance/dao/impl/borrower/BorrowerDaoImpl.java
+92
-0
NbBankRecordRecordDaoImpl.java
...erformance/dao/impl/nbbank/NbBankRecordRecordDaoImpl.java
+21
-0
NbBankRecordDao.java
.../java/com/clx/performance/dao/nbbank/NbBankRecordDao.java
+17
-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
+110
-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
BorrowerConfigMapper.java
...clx/performance/mapper/borrower/BorrowerConfigMapper.java
+31
-0
BorrowerMapper.java
...a/com/clx/performance/mapper/borrower/BorrowerMapper.java
+31
-0
NbBankRecordMapper.java
...com/clx/performance/mapper/nbbank/NbBankRecordMapper.java
+18
-0
OrderChildSyncTransportInvoiceRecord.java
...rformance/model/OrderChildSyncTransportInvoiceRecord.java
+55
-0
Borrower.java
...ain/java/com/clx/performance/model/borrower/Borrower.java
+47
-0
BorrowerConfig.java
...va/com/clx/performance/model/borrower/BorrowerConfig.java
+48
-0
NbBankRecord.java
...n/java/com/clx/performance/model/nbbank/NbBankRecord.java
+49
-0
OrderCancelService.java
.../java/com/clx/performance/service/OrderCancelService.java
+2
-2
OrderChildSyncTransportInvoiceRecordService.java
.../service/OrderChildSyncTransportInvoiceRecordService.java
+12
-0
BorrowerConfigService.java
...x/performance/service/borrower/BorrowerConfigService.java
+26
-0
BorrowerService.java
...com/clx/performance/service/borrower/BorrowerService.java
+25
-0
OrderCancelServiceImpl.java
.../clx/performance/service/impl/OrderCancelServiceImpl.java
+397
-390
OrderChildSyncTransportInvoiceRecordServiceImpl.java
...impl/OrderChildSyncTransportInvoiceRecordServiceImpl.java
+13
-0
OrderGoodsServiceImpl.java
...m/clx/performance/service/impl/OrderGoodsServiceImpl.java
+193
-149
OwnerAccountServiceImpl.java
...clx/performance/service/impl/OwnerAccountServiceImpl.java
+0
-3
BorrowerConfigServiceImpl.java
...ance/service/impl/borrower/BorrowerConfigServiceImpl.java
+135
-0
BorrowerServiceImpl.java
...erformance/service/impl/borrower/BorrowerServiceImpl.java
+124
-0
NetworkDriverRunningWaterRecordServiceImpl.java
...pl/settle/NetworkDriverRunningWaterRecordServiceImpl.java
+19
-1
SettlementMqHandlerServiceImpl.java
...e/service/impl/settle/SettlementMqHandlerServiceImpl.java
+1
-1
SettlementServiceImpl.java
...erformance/service/impl/settle/SettlementServiceImpl.java
+76
-94
NbBankNotifyServiceImpl.java
...rvice/impl/thirdparty/nbbank/NbBankNotifyServiceImpl.java
+113
-0
NbBankServiceImpl.java
...nce/service/impl/thirdparty/nbbank/NbBankServiceImpl.java
+129
-0
NbBankThirdpartyServiceImpl.java
...e/impl/thirdparty/nbbank/NbBankThirdpartyServiceImpl.java
+482
-0
NbBankNotifyService.java
...rmance/service/thirdparty/nbbank/NbBankNotifyService.java
+7
-0
NbBankService.java
.../performance/service/thirdparty/nbbank/NbBankService.java
+20
-0
NbBankThirdpartyService.java
...ce/service/thirdparty/nbbank/NbBankThirdpartyService.java
+18
-0
BorrowerConfigSqlProvider.java
...mance/sqlProvider/borrower/BorrowerConfigSqlProvider.java
+35
-0
BorrowerSqlProvider.java
...performance/sqlProvider/borrower/BorrowerSqlProvider.java
+31
-0
NetworkDriverRunningWaterRecordProvider.java
...vider/settle/NetworkDriverRunningWaterRecordProvider.java
+4
-0
GoodsOrderStrategy.java
...java/com/clx/performance/strategy/GoodsOrderStrategy.java
+16
-0
BorrowerConfigStruct.java
...clx/performance/struct/borrower/BorrowerConfigStruct.java
+18
-0
BorrowerStruct.java
...a/com/clx/performance/struct/borrower/BorrowerStruct.java
+18
-0
config-nbbank.json
performance-web/src/main/resources/bank/config-nbbank.json
+32
-0
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/PerformanceResultEnum.java
浏览文件 @
b1ffdcff
...
...
@@ -113,6 +113,13 @@ public enum PerformanceResultEnum implements ResultEnum {
SLIDER_CHECK_FAIL
(
1911
,
"滑块验证错误"
),
ORDER_CHILD_SYNC_ERROR
(
1912
,
"承运同步网络货运异常"
),
BORROWER_NAME_EXIST
(
1701
,
"数据重复,请核实后重新提交"
),
BORROWER_CONFIG_BORROWER_ID_EXIST
(
1701
,
"数据重复,请核实后重新提交"
),
NB_BANK_API_ERROR
(
1800
,
"宁波银行api调用失败"
),
NB_BANK_NOTIFY_ERROR
(
1801
,
"宁波银行回调失败"
),
NB_BANK_PAY_TYPE_ERROR
(
1802
,
"支付方式不支持"
),
;
private
final
int
code
;
private
final
String
msg
;
...
...
performance-api/src/main/java/com/clx/performance/enums/TransportSyncTypeEnum.java
0 → 100644
浏览文件 @
b1ffdcff
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/enums/borrower/BorrowerConfigEnum.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
enums
.
borrower
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Optional
;
public
enum
BorrowerConfigEnum
{
;
@Getter
@AllArgsConstructor
public
enum
Status
{
ENABLE
(
1
,
"启用"
),
DISABLE
(
2
,
"禁用"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
Status
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
==
code
).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
Status:
:
getMsg
).
orElse
(
null
);
}
}
@Getter
@AllArgsConstructor
public
enum
DeleteStatus
{
NO
(
0
,
"否"
),
YES
(
1
,
"是"
),
;
private
final
Integer
code
;
private
final
String
msg
;
}
}
performance-api/src/main/java/com/clx/performance/enums/borrower/BorrowerEnum.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
enums
.
borrower
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Optional
;
public
enum
BorrowerEnum
{
;
@Getter
@AllArgsConstructor
public
enum
Status
{
ENABLE
(
1
,
"启用"
),
DISABLE
(
2
,
"禁用"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
Status
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
==
code
).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
Status:
:
getMsg
).
orElse
(
null
);
}
}
@Getter
@AllArgsConstructor
public
enum
DeleteStatus
{
NO
(
0
,
"否"
),
YES
(
1
,
"是"
),
;
private
final
Integer
code
;
private
final
String
msg
;
}
}
performance-api/src/main/java/com/clx/performance/enums/nbbank/NbBankRecordEnum.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
enums
.
nbbank
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Optional
;
public
enum
NbBankRecordEnum
{
;
@Getter
@AllArgsConstructor
public
enum
Type
{
DIRECT_BANK_TRANSFER_ORDER
(
1
,
"转账直连下单"
),
UNION_PAY_DIRECT_ORDER
(
2
,
"银联订单支付收款模式"
),
QUERY_ORDER
(
3
,
"交易结果查询"
),
NOTIFY_MERCHANT
(
4
,
"异步通知交易结果"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
Type
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
==
code
).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
Type:
:
getMsg
).
orElse
(
null
);
}
}
}
performance-api/src/main/java/com/clx/performance/param/feign/transport/ThirdOrderChildInvoiceStatusDTO.java
0 → 100644
浏览文件 @
b1ffdcff
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
浏览文件 @
b1ffdcff
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
浏览文件 @
b1ffdcff
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
浏览文件 @
b1ffdcff
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
lombok.*
;
import
javax.validation.constraints.NotBlank
;
@Getter
@Setter
@ToString
@NoArgsConstructor
@Builder
public
class
ThirdOrderChildRiskStatusParam
{
@ApiModelProperty
(
value
=
"运单编号"
)
@NotBlank
(
message
=
"运单编号不能为空"
)
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/pc/borrower/BorrowerAddParam.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
param
.
pc
.
borrower
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.validation.constraints.NotBlank
;
/**
* @Author: aiqingguo
* @Date: 2023-10-11 17:30:57
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
BorrowerAddParam
{
@ApiModelProperty
(
value
=
"借出方"
,
example
=
"张三"
)
@NotBlank
(
message
=
"借出方不能为空"
)
private
String
name
;
@ApiModelProperty
(
value
=
"所属银行"
,
example
=
"工商银行"
)
@NotBlank
(
message
=
"所属银行不能为空"
)
private
String
bankName
;
@ApiModelProperty
(
value
=
"银行账号"
,
example
=
"10000000000000000"
)
@NotBlank
(
message
=
"不能为空"
)
private
String
bankCardNo
;
}
performance-api/src/main/java/com/clx/performance/param/pc/borrower/BorrowerConfigAddParam.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
param
.
pc
.
borrower
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqingguo
* @Date: 2023-10-11 17:30:57
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
BorrowerConfigAddParam
{
@ApiModelProperty
(
value
=
"借出方id"
,
example
=
"1"
)
private
Integer
borrowerId
;
@ApiModelProperty
(
value
=
"类型:1资金 2虚拟货币"
,
example
=
"1"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"借款天数"
,
example
=
"1"
)
private
Integer
day
;
}
performance-api/src/main/java/com/clx/performance/param/pc/borrower/BorrowerConfigDeleteUpdateParam.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
param
.
pc
.
borrower
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
/**
* @Author: aiqingguo
* @Date: 2023-10-11 17:30:57
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
BorrowerConfigDeleteUpdateParam
{
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
@NotNull
(
message
=
"id不能为空"
)
private
Integer
id
;
}
performance-api/src/main/java/com/clx/performance/param/pc/borrower/BorrowerConfigStatusUpdateParam.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
param
.
pc
.
borrower
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
/**
* @Author: aiqingguo
* @Date: 2023-10-11 17:30:57
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
BorrowerConfigStatusUpdateParam
{
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
@NotNull
(
message
=
"id不能为空"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"状态:1启用 2禁用"
,
example
=
"1"
)
@NotNull
(
message
=
"状态不能为空"
)
private
Integer
status
;
}
performance-api/src/main/java/com/clx/performance/param/pc/borrower/BorrowerConfigUpdateParam.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
param
.
pc
.
borrower
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
/**
* @Author: aiqingguo
* @Date: 2023-10-11 17:30:57
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
BorrowerConfigUpdateParam
{
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
@NotNull
(
message
=
"id不能为空"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"借出方id"
,
example
=
"1"
)
private
Integer
borrowerId
;
@ApiModelProperty
(
value
=
"类型:1资金 2虚拟货币"
,
example
=
"1"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"借款天数"
,
example
=
"1"
)
private
Integer
day
;
}
performance-api/src/main/java/com/clx/performance/param/pc/borrower/BorrowerDeleteUpdateParam.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
param
.
pc
.
borrower
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
/**
* @Author: aiqingguo
* @Date: 2023-10-11 17:30:57
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
BorrowerDeleteUpdateParam
{
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
@NotNull
(
message
=
"id不能为空"
)
private
Integer
id
;
}
performance-api/src/main/java/com/clx/performance/param/pc/borrower/BorrowerStatusUpdateParam.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
param
.
pc
.
borrower
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
/**
* @Author: aiqingguo
* @Date: 2023-10-11 17:30:57
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
BorrowerStatusUpdateParam
{
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
@NotNull
(
message
=
"id不能为空"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"状态:1启用 2禁用"
,
example
=
"1"
)
@NotNull
(
message
=
"状态不能为空"
)
private
Integer
status
;
}
performance-api/src/main/java/com/clx/performance/param/pc/borrower/BorrowerUpdateParam.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
param
.
pc
.
borrower
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
/**
* @Author: aiqingguo
* @Date: 2023-10-11 17:30:57
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
BorrowerUpdateParam
{
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
@NotNull
(
message
=
"id不能为空"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"借出方"
,
example
=
"张三"
)
@NotBlank
(
message
=
"借出方不能为空"
)
private
String
name
;
@ApiModelProperty
(
value
=
"所属银行"
,
example
=
"工商银行"
)
@NotBlank
(
message
=
"所属银行不能为空"
)
private
String
bankName
;
@ApiModelProperty
(
value
=
"银行账号"
,
example
=
"10000000000000000"
)
@NotBlank
(
message
=
"银行账号不能为空"
)
private
String
bankCardNo
;
}
performance-api/src/main/java/com/clx/performance/param/pc/borrower/PageBorrowerConfigParam.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
param
.
pc
.
borrower
;
import
com.msl.common.base.PageParam
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@NoArgsConstructor
@ToString
public
class
PageBorrowerConfigParam
extends
PageParam
{
@ApiModelProperty
(
value
=
"借出方"
,
example
=
"张三"
)
private
String
borrowerName
;
@ApiModelProperty
(
value
=
"状态:1启用 2禁用"
,
example
=
""
)
private
Integer
status
;
}
\ No newline at end of file
performance-api/src/main/java/com/clx/performance/param/pc/borrower/PageBorrowerParam.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
param
.
pc
.
borrower
;
import
com.msl.common.base.PageParam
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@NoArgsConstructor
@ToString
public
class
PageBorrowerParam
extends
PageParam
{
@ApiModelProperty
(
value
=
"借出方"
,
example
=
"张三"
)
private
String
name
;
}
\ No newline at end of file
performance-api/src/main/java/com/clx/performance/vo/mq/OrderTruckBindCancelParam.java
0 → 100644
浏览文件 @
b1ffdcff
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/borrower/BorrowerConfigVO.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
vo
.
pc
.
borrower
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
java.time.LocalDateTime
;
/**
* @Author: aiqinguo
* @Description: 借款配置
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@ApiModel
(
description
=
"借款配置"
)
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
BorrowerConfigVO
{
@ApiModelProperty
(
value
=
"id"
,
example
=
""
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"借出方id"
,
example
=
""
)
private
Integer
borrowerId
;
@ApiModelProperty
(
value
=
"借出方"
,
example
=
""
)
private
String
borrowerName
;
@ApiModelProperty
(
value
=
"类型:1资金 2虚拟货币"
,
example
=
""
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"借款天数"
,
example
=
""
)
private
Integer
day
;
@ApiModelProperty
(
value
=
"状态:1启用 2禁用"
,
example
=
""
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"操作人编码"
,
example
=
""
)
private
Long
opUserNo
;
@ApiModelProperty
(
value
=
"操作人"
,
example
=
""
)
private
String
opUserName
;
@ApiModelProperty
(
value
=
"操作时间"
,
example
=
""
)
private
String
opTime
;
@ApiModelProperty
(
value
=
"创建时间"
,
example
=
""
)
private
String
createTime
;
}
\ No newline at end of file
performance-api/src/main/java/com/clx/performance/vo/pc/borrower/BorrowerVO.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
vo
.
pc
.
borrower
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
java.time.LocalDateTime
;
/**
* @Author: aiqinguo
* @Description: 借出方
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@ApiModel
(
description
=
"借出方"
)
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
BorrowerVO
{
@ApiModelProperty
(
value
=
"id"
,
example
=
""
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"借出方"
,
example
=
""
)
private
String
name
;
@ApiModelProperty
(
value
=
"所属银行"
,
example
=
""
)
private
String
bankName
;
@ApiModelProperty
(
value
=
"银行账号"
,
example
=
""
)
private
String
bankCardNo
;
@ApiModelProperty
(
value
=
"状态:1启用 2禁用"
,
example
=
""
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"操作人编码"
,
example
=
""
)
private
Long
opUserNo
;
@ApiModelProperty
(
value
=
"操作人"
,
example
=
""
)
private
String
opUserName
;
@ApiModelProperty
(
value
=
"操作时间"
,
example
=
""
)
private
String
opTime
;
@ApiModelProperty
(
value
=
"创建时间"
,
example
=
""
)
private
String
createTime
;
}
\ No newline at end of file
performance-api/src/main/java/com/clx/performance/vo/pc/carrier/settle/CarrierPageSettlementDriverDetailVO.java
浏览文件 @
b1ffdcff
...
...
@@ -59,6 +59,8 @@ public class CarrierPageSettlementDriverDetailVO {
@MoneyOutConvert
@ApiModelProperty
(
value
=
"预付运费金额"
)
private
BigDecimal
prepayFreight
;
@ApiModelProperty
(
value
=
"预付运费标示 0:未预付 1:已预付"
)
private
Integer
prepayFreightFlag
;
@MoneyOutConvert
@ApiModelProperty
(
value
=
"结算金额"
)
private
BigDecimal
settlementFreight
;
...
...
performance-api/src/main/java/com/clx/performance/vo/pc/nbbank/NbBankOrderPayResultVO.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
vo
.
pc
.
nbbank
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqinguo
* @Description: 订单支付
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
NbBankOrderPayResultVO
{
@ApiModelProperty
(
value
=
"金额(分)"
,
example
=
""
)
private
Integer
amount
;
@ApiModelProperty
(
value
=
"流水号"
,
example
=
"20231129145541"
)
private
String
merSeqNo
;
@ApiModelProperty
(
value
=
"第三方流水号"
,
example
=
"20231129145541065503563czKTBzy"
)
private
String
transSeqNo
;
@ApiModelProperty
(
value
=
"转账编号"
,
example
=
""
)
private
String
signNo
;
}
\ No newline at end of file
performance-api/src/main/java/com/clx/performance/vo/pc/nbbank/NbBankOrderPayStatusResultVO.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
vo
.
pc
.
nbbank
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqinguo
* @Description: 订单状态
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
NbBankOrderPayStatusResultVO
{
@ApiModelProperty
(
value
=
"金额(分)"
,
example
=
""
)
private
Integer
amount
;
@ApiModelProperty
(
value
=
"实收金额(分)"
,
example
=
""
)
private
Integer
realAmount
;
@ApiModelProperty
(
value
=
"流水号"
,
example
=
"20231129145541"
)
private
String
merSeqNo
;
@ApiModelProperty
(
value
=
"第三方流水号"
,
example
=
"20231129145541065503563czKTBzy"
)
private
String
transSeqNo
;
@ApiModelProperty
(
value
=
"转账编号"
,
example
=
""
)
private
String
signNo
;
@ApiModelProperty
(
value
=
"交易状态"
,
example
=
""
)
private
Integer
transStatus
;
}
\ No newline at end of file
performance-web/pom.xml
浏览文件 @
b1ffdcff
...
...
@@ -255,6 +255,12 @@
<version>
1.0.0
</version>
</dependency>
<dependency>
<groupId>
com.nbopen
</groupId>
<artifactId>
openBasicSDK
</artifactId>
<version>
1.7.0
</version>
</dependency>
</dependencies>
...
...
performance-web/src/main/java/com/clx/performance/component/OrderCancelComponent.java
浏览文件 @
b1ffdcff
...
...
@@ -11,19 +11,16 @@ import com.clx.order.vo.feign.FeignOrderInfoVO;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.dao.OrderChildDao
;
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.extranal.user.DriverService
;
import
com.clx.performance.extranal.user.OrderService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
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.OrderGoodsService
;
import
com.clx.performance.service.OrderGoodsTruckBindService
;
import
com.clx.performance.service.OwnerAccountService
;
import
com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService
;
import
com.clx.performance.service.child.OrderChildPostService
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
...
...
@@ -39,6 +36,7 @@ import org.springframework.stereotype.Component;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.*
;
import
java.util.function.BiFunction
;
import
java.util.stream.Collectors
;
@Component
...
...
@@ -66,11 +64,6 @@ public class OrderCancelComponent implements InitializingBean {
@Autowired
private
BreakContractSettlementOwnerService
breakContractSettlementOwnerService
;
public
static
Map
<
Integer
,
String
>
statusCodeMap
=
new
HashMap
<>();
@Autowired
private
IntegralMqService
integralMqService
;
@Autowired
private
OrderChildLogService
orderChildLogService
;
...
...
@@ -84,151 +77,160 @@ public class OrderCancelComponent implements InitializingBean {
private
OrderGoodsService
orderGoodsService
;
@Autowired
SettlementOwnerDetailDao
settlementOwnerDetailDao
;
private
OwnerAccountComponent
ownerAccountComponent
;
@Autowired
OwnerAccountService
ownerAccountService
;
public
static
Map
<
Integer
,
String
>
statusCodeMap
=
new
HashMap
<>();
public
static
Map
<
Integer
,
BiFunction
<
String
,
Integer
,
OrderCancelResult
>>
cancelTypeMap
=
new
HashMap
<>();
/**
* 货主取消订单
* @param param
* @return
*/
public
List
<
String
>
ownerProcess
(
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
();
List
<
String
>
childNoList
=
new
LinkedList
<>();
switch
(
param
.
getCancelType
())
{
case
1
:
//单纯取消订单
log
.
info
(
"1:货主单纯取消订单"
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildDao
.
getOrderChildByOrderNo
(
orderNo
)))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
//根据不同的取消类型执行不同的取消逻辑
OrderCancelResult
result
=
cancelTypeMap
.
get
(
param
.
getCancelType
()).
apply
(
orderNo
,
orderStatusCode
);
orderStatusCode
=
result
.
getOrderStatusCode
();
this
.
breakContractSettlementOwner
(
orderNo
,
orderStatusCode
,
param
.
getCancelType
());
log
.
info
(
"执行货主取消订单更改状态"
);
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
ownerAccountComponent
.
thawOwnerAccountByOrderNo
(
orderNo
);
List
<
String
>
childNoList
=
result
.
getChildNoList
();
if
(
CollectionUtil
.
isNotEmpty
(
childNoList
))
{
for
(
String
childNo
:
childNoList
)
{
// 订单取消
orderChildPostService
.
orderCancel
(
childNo
);
}
}
return
childNoList
;
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
);
log
.
info
(
"执行解冻账户,参数:{}"
,
JSONUtil
.
parse
(
thawAccountParam
));
ownerAccountService
.
ownerAccountThaw
(
thawAccountParam
);
break
;
case
2
:
//取消未拉运吨数的货单
log
.
info
(
"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
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
/**
* 货主取消未拉运+未到达货源地吨数
* @param orderNo
* @param orderStatusCode
* @return
*/
private
OrderCancelResult
cancelOrderAndOrderGoodsAndOrderChild
(
String
orderNo
,
Integer
orderStatusCode
)
{
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
());
log
.
info
(
"执行货主取消未拉运+未到达货源地吨数,当前运单个数"
+
orderChildren
.
size
());
for
(
OrderChild
orderChild
:
orderChildren
)
{
log
.
info
(
"取消的运单:{}"
,
JSONUtil
.
parse
(
orderChild
));
//释放车辆
driverService
.
updateOrderStatus
(
orderChild
.
getDriverUserNo
(),
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
orderChild
.
getTruckId
(),
1
);
childNoList
.
add
(
orderChild
.
getChildNo
());
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
OWNER
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
OWNER
.
getMsg
()
);
}
break
;
case
3
:
//取消未拉运+未到达货源地吨数
log
.
info
(
"3:货主取消未拉运+未到达货源地吨数"
);
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
log
.
info
(
"执行货主取消未拉运+未到达货源地吨数,当前运单个数"
+
orderChildren
.
size
());
for
(
OrderChild
orderChild
:
orderChildren
)
{
log
.
info
(
"取消的运单:{}"
,
JSONUtil
.
parse
(
orderChild
));
//释放车辆
driverService
.
updateOrderStatus
(
orderChild
.
getDriverUserNo
(),
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
orderChild
.
getTruckId
(),
1
);
childNoList
.
add
(
orderChild
.
getChildNo
());
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
OWNER
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
OWNER
.
getMsg
()
);
}
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
new
HashMap
<>();
if
(
CollectionUtil
.
isNotEmpty
(
childNoList
))
{
log
.
info
(
"childNoList:{}"
,
childNoList
);
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
"货主取消"
,
now
,
now
,
childNoList
);
orderChildMap
=
orderChildren
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
new
HashMap
<>();
if
(
CollectionUtil
.
isNotEmpty
(
childNoList
))
{
log
.
info
(
"childNoList:{}"
,
childNoList
);
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
"货主取消"
,
now
,
now
,
childNoList
);
orderChildMap
=
orderChildren
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
}
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
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
=
BigDecimal
.
ZERO
;
for
(
OrderChild
orderChild
:
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
()))
{
reduce
=
reduce
.
add
(
orderChild
.
getWeight
());
}
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
);
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
=
BigDecimal
.
ZERO
;
for
(
OrderChild
orderChild
:
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
()))
{
reduce
=
reduce
.
add
(
orderChild
.
getWeight
());
}
break
;
default
:
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"参数有误"
);
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
);
}
return
OrderCancelResult
.
builder
().
orderStatusCode
(
orderStatusCode
).
childNoList
(
childNoList
).
build
();
}
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
(
"执行货主取消订单更改状态"
);
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
for
(
String
childNo
:
childNoList
)
{
// 订单取消
orderChildPostService
.
orderCancel
(
childNo
);
orderGoodsDao
.
updateEntityByKey
(
update
);
}
return
OrderCancelResult
.
builder
().
orderStatusCode
(
orderStatusCode
).
build
();
}
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
)
{
...
...
@@ -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
.
ON_ORDER
.
getCode
(),
OrderEnum
.
Status
.
ON_ORDER
.
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
浏览文件 @
b1ffdcff
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
浏览文件 @
b1ffdcff
...
...
@@ -115,4 +115,55 @@ public class RabbitBeanConfig {
public
Binding
orderCancelExchangeBind
()
{
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/config/nbbank/NbBankConfig.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
config
.
nbbank
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
@Getter
@Setter
@ConfigurationProperties
(
prefix
=
"nbbank"
)
public
class
NbBankConfig
{
private
String
appKey
=
"77667c76_3503_4c04_95f7_fc10938c7942"
;
}
performance-web/src/main/java/com/clx/performance/constant/RabbitKeyConstants.java
浏览文件 @
b1ffdcff
...
...
@@ -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_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_QUEUE
=
"clx-order.freeze.trigger.queue"
;
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
浏览文件 @
b1ffdcff
...
...
@@ -2,7 +2,6 @@ package com.clx.performance.controller.feign;
import
com.clx.performance.param.pc.OrderCancelFeignParam
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.service.OrderCancelService
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.Api
;
...
...
@@ -26,14 +25,9 @@ public class OrderCancelFeignController {
private
final
OrderCancelService
orderCancelService
;
@ApiOperation
(
value
=
"承运
单
发起订单取消货主端进行确认"
,
notes
=
"<br>By:胡宇帆"
)
@ApiOperation
(
value
=
"承运
端
发起订单取消货主端进行确认"
,
notes
=
"<br>By:胡宇帆"
)
@PostMapping
(
"/orderCancel"
)
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
());
return
Result
.
ok
();
}
...
...
performance-web/src/main/java/com/clx/performance/controller/pc/OrderCancelController.java
浏览文件 @
b1ffdcff
...
...
@@ -34,12 +34,12 @@ public class OrderCancelController {
private
final
OrderCancelService
orderCancelService
;
@ApiOperation
(
value
=
"承运端取消订单"
,
notes
=
"<br>By:胡宇帆"
)
@PostMapping
(
"/platformCancelOrderPre"
)
public
Result
<
Object
>
platformCancelOrderPre
(
@RequestBody
OrderCancelParam
param
)
{
orderCancelService
.
platformCancelOrderPre
(
param
);
return
Result
.
ok
();
}
//
@ApiOperation(value = "承运端取消订单", notes = "<br>By:胡宇帆")
//
@PostMapping("/platformCancelOrderPre")
//
public Result<Object> platformCancelOrderPre(@RequestBody OrderCancelParam param) {
//
orderCancelService.platformCancelOrderPre(param);
//
return Result.ok();
//
}
@ApiOperation
(
value
=
"货主端取消订单"
,
notes
=
"<br>By:胡宇帆"
)
@PostMapping
(
"/ownCancelOrderPre"
)
...
...
performance-web/src/main/java/com/clx/performance/controller/pc/borrower/carrier/CarrierBorrowerConfigController.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
controller
.
pc
.
borrower
.
carrier
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.param.pc.borrower.*
;
import
com.clx.performance.service.borrower.BorrowerConfigService
;
import
com.clx.performance.vo.pc.borrower.BorrowerConfigVO
;
import
com.clx.performance.vo.pc.borrower.BorrowerVO
;
import
com.msl.common.base.PageData
;
import
com.msl.common.convertor.aspect.UnitCovert
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
@Slf4j
@RestController
@RequestMapping
(
value
=
"/pc/carrier/borrowerConfig"
)
@Validated
@Api
(
tags
=
"承运端-借出方借款配置"
)
@AllArgsConstructor
public
class
CarrierBorrowerConfigController
{
private
final
BorrowerConfigService
borrowerConfigService
;
@ApiOperation
(
value
=
"新增借出方配置"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/saveBorrowerConfig"
)
@UnitCovert
public
Result
<
Void
>
saveBorrowerConfig
(
@RequestBody
@Validated
BorrowerConfigAddParam
param
)
{
borrowerConfigService
.
saveBorrowerConfig
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"更新借出方配置"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/updateBorrowerConfig"
)
public
Result
<
Void
>
updateBorrowerConfig
(
@RequestBody
@Validated
BorrowerConfigUpdateParam
param
)
{
borrowerConfigService
.
updateBorrowerConfig
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"更新借出方配置状态"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/updateStatus"
)
public
Result
<
Void
>
updateStatus
(
@RequestBody
@Validated
BorrowerConfigStatusUpdateParam
param
)
{
borrowerConfigService
.
updateStatus
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"更新删除借出方配置"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/updateDelete"
)
public
Result
<
Void
>
updateDelete
(
@RequestBody
@Validated
BorrowerConfigDeleteUpdateParam
param
)
{
borrowerConfigService
.
updateDelete
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"分页搜索借出方配置列表"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/pageBorrower"
)
public
Result
<
PageData
<
BorrowerConfigVO
>>
pageBorrowerConfig
(
@RequestBody
@Validated
PageBorrowerConfigParam
param
)
{
IPage
<
BorrowerConfigVO
>
page
=
borrowerConfigService
.
pageBorrowerConfig
(
param
);
return
Result
.
page
(
page
.
getRecords
(),
page
.
getTotal
(),
page
.
getPages
());
}
@ApiOperation
(
value
=
"查询所有借出方配置列表"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/ListBorrowerConfig"
)
public
Result
<
List
<
BorrowerConfigVO
>>
ListBorrowerConfig
()
{
return
Result
.
ok
(
borrowerConfigService
.
ListBorrowerConfig
());
}
}
performance-web/src/main/java/com/clx/performance/controller/pc/borrower/carrier/CarrierBorrowerController.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
controller
.
pc
.
borrower
.
carrier
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.param.pc.borrower.*
;
import
com.clx.performance.service.borrower.BorrowerService
;
import
com.clx.performance.service.impl.borrower.BorrowerServiceImpl
;
import
com.clx.performance.vo.pc.borrower.BorrowerVO
;
import
com.msl.common.base.PageData
;
import
com.msl.common.convertor.aspect.UnitCovert
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
@Slf4j
@RestController
@RequestMapping
(
value
=
"/pc/carrier/borrower"
)
@Validated
@Api
(
tags
=
"承运端-借出方配置"
)
@AllArgsConstructor
public
class
CarrierBorrowerController
{
private
final
BorrowerService
borrowerService
;
@ApiOperation
(
value
=
"新增借出方"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/saveBorrower"
)
@UnitCovert
public
Result
<
Void
>
saveBorrower
(
@RequestBody
@Validated
BorrowerAddParam
param
)
{
borrowerService
.
saveBorrower
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"更新借出方"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/updateBorrower"
)
public
Result
<
Void
>
updateBorrower
(
@RequestBody
@Validated
BorrowerUpdateParam
param
)
{
borrowerService
.
updateBorrower
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"更新借出方状态"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/updateStatus"
)
public
Result
<
Void
>
updateStatus
(
@RequestBody
@Validated
BorrowerStatusUpdateParam
param
)
{
borrowerService
.
updateStatus
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"更新删除借出方"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/updateDelete"
)
public
Result
<
Void
>
updateDelete
(
@RequestBody
@Validated
BorrowerDeleteUpdateParam
param
)
{
borrowerService
.
updateDelete
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"分页搜索借出方列表"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/pageBorrower"
)
public
Result
<
PageData
<
BorrowerVO
>>
pageBorrower
(
@RequestBody
@Validated
PageBorrowerParam
param
)
{
IPage
<
BorrowerVO
>
page
=
borrowerService
.
pageBorrower
(
param
);
return
Result
.
page
(
page
.
getRecords
(),
page
.
getTotal
(),
page
.
getPages
());
}
@ApiOperation
(
value
=
"查询所有借出方列表"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/ListBorrower"
)
public
Result
<
List
<
BorrowerVO
>>
ListBorrower
()
{
return
Result
.
ok
(
borrowerService
.
ListBorrower
());
}
}
performance-web/src/main/java/com/clx/performance/controller/pc/owner/OwnerAccountController.java
浏览文件 @
b1ffdcff
...
...
@@ -162,7 +162,7 @@ public class OwnerAccountController {
@ApiOperation
(
value
=
"创建账户"
,
notes
=
"<br>By:胡宇帆"
)
@PostMapping
(
"/createAccount"
)
public
Result
<
Object
>
createAccount
(
CreteAccountParam
param
)
{
public
Result
<
Object
>
createAccount
(
@RequestBody
CreteAccountParam
param
)
{
ownerAccountService
.
createAccount
(
param
);
return
Result
.
ok
();
}
...
...
performance-web/src/main/java/com/clx/performance/controller/pc/transport/TransportSyncController.java
浏览文件 @
b1ffdcff
...
...
@@ -18,7 +18,7 @@ import com.clx.performance.model.OrderGoods;
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.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.settle.OrderChildSyncTransportRecordService
;
import
com.clx.performance.service.settle.SettlementOwnerService
;
...
...
@@ -56,6 +56,9 @@ public class TransportSyncController {
private
final
SettlementOwnerService
settlementOwnerService
;
private
final
OrderChildSyncTransportRecordService
childSyncTransportRecordService
;
/**
* 支付结果
* @param param
...
...
@@ -103,11 +106,17 @@ public class TransportSyncController {
log
.
info
(
"riskStatusNotify 原始报文:{}"
,
bean
);
String
decrypt
=
ThirdComponent
.
decrypt
(
bean
.
getData
());
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
()));
}
@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:胡宇帆"
)
@GetMapping
(
"/syncTest"
)
...
...
performance-web/src/main/java/com/clx/performance/controller/temp/TempBankController.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
controller
.
temp
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankService
;
import
com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO
;
import
com.clx.performance.vo.pc.nbbank.NbBankOrderPayStatusResultVO
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @Author: aiqingguo
* @Description: 临时接口
* @Date: 2023-8-21 12:10:16
* @Version: 1.0
*/
@Slf4j
@RestController
@RequestMapping
(
value
=
"/temp/bank"
)
public
class
TempBankController
{
@Autowired
private
NbBankService
bankService
;
@ApiOperation
(
value
=
"directBankTransferOrder"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/directBankTransferOrder"
,
method
=
RequestMethod
.
POST
)
public
Result
<
NbBankOrderPayResultVO
>
directBankTransferOrder
()
throws
Exception
{
return
Result
.
ok
(
bankService
.
orderPay
(
1
));
}
@ApiOperation
(
value
=
"unionPayDirectOrder"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/unionPayDirectOrder"
,
method
=
RequestMethod
.
POST
)
public
Result
<
NbBankOrderPayResultVO
>
unionPayDirectOrder
()
throws
Exception
{
return
Result
.
ok
(
bankService
.
orderPay
(
2
));
}
@ApiOperation
(
value
=
"queryOrder"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/queryOrderTest"
,
method
=
RequestMethod
.
POST
)
public
Result
<
NbBankOrderPayStatusResultVO
>
queryOrderTest
(
String
merSeqNo
)
throws
Exception
{
return
Result
.
ok
(
bankService
.
getOrderStatus
(
merSeqNo
));
}
}
performance-web/src/main/java/com/clx/performance/controller/temp/TempController.java
浏览文件 @
b1ffdcff
...
...
@@ -5,6 +5,7 @@ import com.clx.performance.extranal.transport.TransportService;
import
com.clx.performance.feign.TransportFeignService
;
import
com.clx.performance.param.feign.transport.OrderChildPaySyncParam
;
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.child.FeignOrderChildService
;
import
com.clx.performance.vo.pc.child.OrderChildLineStatisticsVO
;
...
...
@@ -109,4 +110,15 @@ public class TempController {
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/controller/thirdparty/NbBankController.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
controller
.
thirdparty
;
import
com.alibaba.fastjson.JSON
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankNotifyService
;
import
com.nbopen.api.*
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.HashMap
;
import
java.util.Map
;
@Slf4j
@RestController
@RequestMapping
(
value
=
"/nbbank"
)
@Api
(
tags
=
"宁波银行回调 (易付通)"
)
public
class
NbBankController
{
@Autowired
private
NbBankNotifyService
nbBankNotifyService
;
@ApiOperation
(
value
=
"notify"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/notify"
,
method
=
RequestMethod
.
POST
)
public
Object
notify
(
@RequestBody
Map
<
String
,
Object
>
body
)
throws
Exception
{
try
{
nbBankNotifyService
.
payNotify
(
JSON
.
toJSONString
(
body
));
return
getResultSuc
();
}
catch
(
Exception
e
){
e
.
printStackTrace
();
return
getResultFail
();
}
}
private
Object
getResultSuc
()
throws
Exception
{
Map
<
String
,
String
>
data
=
new
HashMap
<>();
data
.
put
(
"errorCode"
,
"000000"
);
data
.
put
(
"errorMsg"
,
"成功"
);
RequestApiData
requestApiData
=
new
RequestApiData
();
requestApiData
.
setAppkey
(
"77667c76_3503_4c04_95f7_fc10938c7942"
);
requestApiData
.
setData
(
data
);
requestApiData
.
setServiceId
(
"notifyMerchant"
);
RequestHead
requestHead
=
new
RequestHead
();
requestHead
.
setRqsJrnlNo
(
NBOpenSDK
.
getRandom
());
SDKRequest
request
=
new
SDKRequest
();
request
.
setData
(
requestApiData
);
request
.
setHead
(
requestHead
);
log
.
info
(
"加密前: "
+
JSON
.
toJSONString
(
request
));
SDKResponse
result
=
NBOpenSDK
.
encryptMessage
(
request
);
log
.
info
(
"加密后: "
+
JSON
.
toJSONString
(
result
));
return
result
.
getData
();
}
private
Object
getResultFail
()
throws
Exception
{
Map
<
String
,
String
>
data
=
new
HashMap
<>();
data
.
put
(
"errorCode"
,
"ER001"
);
data
.
put
(
"errorMsg"
,
"失败"
);
RequestApiData
requestApiData
=
new
RequestApiData
();
requestApiData
.
setAppkey
(
"77667c76_3503_4c04_95f7_fc10938c7942"
);
requestApiData
.
setData
(
data
);
requestApiData
.
setServiceId
(
"notifyMerchant"
);
RequestHead
requestHead
=
new
RequestHead
();
requestHead
.
setRqsJrnlNo
(
NBOpenSDK
.
getRandom
());
SDKRequest
request
=
new
SDKRequest
();
request
.
setData
(
requestApiData
);
request
.
setHead
(
requestHead
);
log
.
info
(
"加密前: "
+
JSON
.
toJSONString
(
request
));
SDKResponse
result
=
NBOpenSDK
.
encryptMessage
(
request
);
log
.
info
(
"加密后: "
+
JSON
.
toJSONString
(
result
));
return
result
.
getData
();
}
}
performance-web/src/main/java/com/clx/performance/dao/OrderChildSyncTransportInvoiceRecordDao.java
0 → 100644
浏览文件 @
b1ffdcff
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
浏览文件 @
b1ffdcff
...
...
@@ -31,6 +31,8 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
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
,
String
truckNo
);
...
...
performance-web/src/main/java/com/clx/performance/dao/borrower/BorrowerConfigDao.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
dao
.
borrower
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.mapper.borrower.BorrowerConfigMapper
;
import
com.clx.performance.model.borrower.BorrowerConfig
;
import
com.clx.performance.param.pc.borrower.PageBorrowerConfigParam
;
import
com.clx.performance.vo.pc.borrower.BorrowerConfigVO
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.BaseDao
;
import
java.util.List
;
/**
* @Author: aiqinguo
* @Description: 借款配置
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
public
interface
BorrowerConfigDao
extends
BaseDao
<
BorrowerConfigMapper
,
BorrowerConfig
,
Integer
>
{
boolean
update
(
BorrowerConfig
item
);
boolean
updateStatus
(
BorrowerConfig
item
);
boolean
updateDelete
(
BorrowerConfig
item
);
Optional
<
BorrowerConfig
>
selectByBorrowerId
(
Integer
borrowerId
);
List
<
BorrowerConfig
>
listEnable
();
IPage
<
BorrowerConfigVO
>
pageByParam
(
PageBorrowerConfigParam
param
);
}
performance-web/src/main/java/com/clx/performance/dao/borrower/BorrowerDao.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
dao
.
borrower
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.mapper.borrower.BorrowerMapper
;
import
com.clx.performance.model.borrower.Borrower
;
import
com.clx.performance.param.pc.borrower.PageBorrowerParam
;
import
com.clx.performance.vo.pc.borrower.BorrowerVO
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.BaseDao
;
import
java.util.List
;
/**
* @Author: aiqinguo
* @Description: 借出方
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
public
interface
BorrowerDao
extends
BaseDao
<
BorrowerMapper
,
Borrower
,
Integer
>
{
boolean
update
(
Borrower
item
);
boolean
updateStatus
(
Borrower
item
);
boolean
updateDelete
(
Borrower
item
);
Optional
<
Borrower
>
selectByName
(
String
name
);
List
<
Borrower
>
listEnable
();
IPage
<
BorrowerVO
>
pageByParam
(
PageBorrowerParam
param
);
}
performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildSyncTransportInvoiceRecordDaoImpl.java
0 → 100644
浏览文件 @
b1ffdcff
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
浏览文件 @
b1ffdcff
...
...
@@ -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
public
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
,
List
<
String
>
truckList
)
{
update
(
lUdWrapper
()
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/borrower/BorrowerConfigDaoImpl.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
dao
.
impl
.
borrower
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.dao.borrower.BorrowerConfigDao
;
import
com.clx.performance.enums.borrower.BorrowerConfigEnum
;
import
com.clx.performance.enums.borrower.BorrowerEnum
;
import
com.clx.performance.mapper.borrower.BorrowerConfigMapper
;
import
com.clx.performance.model.borrower.Borrower
;
import
com.clx.performance.model.borrower.BorrowerConfig
;
import
com.clx.performance.param.pc.borrower.PageBorrowerConfigParam
;
import
com.clx.performance.vo.pc.borrower.BorrowerConfigVO
;
import
com.clx.performance.vo.pc.borrower.BorrowerVO
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @Author: aiqinguo
* @Description: 借款配置
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Repository
public
class
BorrowerConfigDaoImpl
extends
BaseDaoImpl
<
BorrowerConfigMapper
,
BorrowerConfig
,
Integer
>
implements
BorrowerConfigDao
{
@Override
public
boolean
update
(
BorrowerConfig
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
BorrowerConfig:
:
getId
,
item
.
getId
())
.
set
(
BorrowerConfig:
:
getBorrowerId
,
item
.
getBorrowerId
())
.
set
(
BorrowerConfig:
:
getBorrowerName
,
item
.
getBorrowerName
())
.
set
(
BorrowerConfig:
:
getType
,
item
.
getType
())
.
set
(
BorrowerConfig:
:
getDay
,
item
.
getDay
())
.
set
(
BorrowerConfig:
:
getOpUserNo
,
item
.
getOpUserNo
())
.
set
(
BorrowerConfig:
:
getOpUserName
,
item
.
getOpUserName
())
.
set
(
BorrowerConfig:
:
getOpTime
,
item
.
getOpTime
())
);
}
@Override
public
boolean
updateStatus
(
BorrowerConfig
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
BorrowerConfig:
:
getId
,
item
.
getId
())
.
set
(
BorrowerConfig:
:
getStatus
,
item
.
getStatus
())
.
set
(
BorrowerConfig:
:
getOpUserNo
,
item
.
getOpUserNo
())
.
set
(
BorrowerConfig:
:
getOpUserName
,
item
.
getOpUserName
())
.
set
(
BorrowerConfig:
:
getOpTime
,
item
.
getOpTime
())
);
}
@Override
public
boolean
updateDelete
(
BorrowerConfig
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
BorrowerConfig:
:
getId
,
item
.
getId
())
.
set
(
BorrowerConfig:
:
getDeleteStatus
,
item
.
getDeleteStatus
())
.
set
(
BorrowerConfig:
:
getOpUserNo
,
item
.
getOpUserNo
())
.
set
(
BorrowerConfig:
:
getOpUserName
,
item
.
getOpUserName
())
.
set
(
BorrowerConfig:
:
getOpTime
,
item
.
getOpTime
())
);
}
@Override
public
Optional
<
BorrowerConfig
>
selectByBorrowerId
(
Integer
borrowerId
)
{
return
Optional
.
of
(
borrowerId
)
.
map
(
item
->
lQrWrapper
()
.
eq
(
BorrowerConfig:
:
getBorrowerId
,
item
)
.
eq
(
BorrowerConfig:
:
getDeleteStatus
,
BorrowerConfigEnum
.
DeleteStatus
.
NO
.
getCode
())
.
last
(
"limit 1"
)
)
.
map
(
super
::
getOne
);
}
@Override
public
List
<
BorrowerConfig
>
listEnable
()
{
return
list
(
lQrWrapper
()
.
eq
(
BorrowerConfig:
:
getDeleteStatus
,
BorrowerConfigEnum
.
DeleteStatus
.
NO
.
getCode
())
.
eq
(
BorrowerConfig:
:
getStatus
,
BorrowerConfigEnum
.
Status
.
ENABLE
.
getCode
())
);
}
@Override
public
IPage
<
BorrowerConfigVO
>
pageByParam
(
PageBorrowerConfigParam
param
)
{
Page
<
BorrowerConfigVO
>
page
=
Page
.
of
(
param
.
getPage
(),
param
.
getPageSize
());
return
baseMapper
.
pageByParam
(
page
,
param
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/borrower/BorrowerDaoImpl.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
dao
.
impl
.
borrower
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.dao.borrower.BorrowerDao
;
import
com.clx.performance.enums.borrower.BorrowerEnum
;
import
com.clx.performance.mapper.borrower.BorrowerMapper
;
import
com.clx.performance.model.borrower.Borrower
;
import
com.clx.performance.param.pc.borrower.PageBorrowerParam
;
import
com.clx.performance.vo.pc.borrower.BorrowerVO
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @Author: aiqinguo
* @Description: 借出方
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Repository
public
class
BorrowerDaoImpl
extends
BaseDaoImpl
<
BorrowerMapper
,
Borrower
,
Integer
>
implements
BorrowerDao
{
@Override
public
boolean
update
(
Borrower
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
Borrower:
:
getId
,
item
.
getId
())
.
set
(
Borrower:
:
getName
,
item
.
getName
())
.
set
(
Borrower:
:
getBankName
,
item
.
getBankName
())
.
set
(
Borrower:
:
getBankCardNo
,
item
.
getBankCardNo
())
.
set
(
Borrower:
:
getOpUserNo
,
item
.
getOpUserNo
())
.
set
(
Borrower:
:
getOpUserName
,
item
.
getOpUserName
())
.
set
(
Borrower:
:
getOpTime
,
item
.
getOpTime
())
);
}
@Override
public
boolean
updateStatus
(
Borrower
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
Borrower:
:
getId
,
item
.
getId
())
.
set
(
Borrower:
:
getStatus
,
item
.
getStatus
())
.
set
(
Borrower:
:
getOpUserNo
,
item
.
getOpUserNo
())
.
set
(
Borrower:
:
getOpUserName
,
item
.
getOpUserName
())
.
set
(
Borrower:
:
getOpTime
,
item
.
getOpTime
())
);
}
@Override
public
boolean
updateDelete
(
Borrower
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
Borrower:
:
getId
,
item
.
getId
())
.
set
(
Borrower:
:
getDeleteStatus
,
item
.
getDeleteStatus
())
.
set
(
Borrower:
:
getOpUserNo
,
item
.
getOpUserNo
())
.
set
(
Borrower:
:
getOpUserName
,
item
.
getOpUserName
())
.
set
(
Borrower:
:
getOpTime
,
item
.
getOpTime
())
);
}
@Override
public
Optional
<
Borrower
>
selectByName
(
String
name
)
{
return
Optional
.
of
(
name
)
.
map
(
item
->
lQrWrapper
()
.
eq
(
Borrower:
:
getName
,
item
)
.
eq
(
Borrower:
:
getDeleteStatus
,
BorrowerEnum
.
DeleteStatus
.
NO
.
getCode
())
.
last
(
"limit 1"
)
)
.
map
(
super
::
getOne
);
}
@Override
public
List
<
Borrower
>
listEnable
()
{
return
list
(
lQrWrapper
()
.
eq
(
Borrower:
:
getDeleteStatus
,
BorrowerEnum
.
DeleteStatus
.
NO
.
getCode
())
.
eq
(
Borrower:
:
getStatus
,
BorrowerEnum
.
Status
.
ENABLE
.
getCode
())
);
}
@Override
public
IPage
<
BorrowerVO
>
pageByParam
(
PageBorrowerParam
param
)
{
Page
<
BorrowerVO
>
page
=
Page
.
of
(
param
.
getPage
(),
param
.
getPageSize
());
return
baseMapper
.
pageByParam
(
page
,
param
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/nbbank/NbBankRecordRecordDaoImpl.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
dao
.
impl
.
nbbank
;
import
com.clx.performance.dao.nbbank.NbBankRecordDao
;
import
com.clx.performance.mapper.nbbank.NbBankRecordMapper
;
import
com.clx.performance.model.nbbank.NbBankRecord
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
/**
* @Author: aiqinguo
* @Description: 借出方
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Repository
public
class
NbBankRecordRecordDaoImpl
extends
BaseDaoImpl
<
NbBankRecordMapper
,
NbBankRecord
,
Integer
>
implements
NbBankRecordDao
{
}
performance-web/src/main/java/com/clx/performance/dao/nbbank/NbBankRecordDao.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
dao
.
nbbank
;
import
com.clx.performance.mapper.nbbank.NbBankRecordMapper
;
import
com.clx.performance.model.nbbank.NbBankRecord
;
import
com.msl.common.dao.BaseDao
;
/**
* @Author: aiqinguo
* @Description: 借出方
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
public
interface
NbBankRecordDao
extends
BaseDao
<
NbBankRecordMapper
,
NbBankRecord
,
Integer
>
{
}
performance-web/src/main/java/com/clx/performance/dto/OrderCancelResult.java
0 → 100644
浏览文件 @
b1ffdcff
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
浏览文件 @
b1ffdcff
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
浏览文件 @
b1ffdcff
...
...
@@ -10,8 +10,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod
;
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
)
public
interface
TransportFeignService
{
...
...
@@ -25,10 +23,10 @@ public interface TransportFeignService {
/**
* 获取风控状态
* @return
* @see
com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatusParam
* @see
ThirdOrderChildRiskStatusDTO
*/
@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 {
/**
* 获取运单开票状态
* @return 0-未申请,10-已申请,20-审核失败,30-已开票
* @return
* @see ThirdOrderChildInvoiceStatusDTO
*/
@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
浏览文件 @
b1ffdcff
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);
dto
.
setStatus
(
2
);
bean
.
setData
(
dto
);
orderChildPaySync
.
extracted
(
orderChild
,
bean
,
""
,
settlementOwnerDetail
,
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
(),
settlementDriverDetail
);
}
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
浏览文件 @
b1ffdcff
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
浏览文件 @
b1ffdcff
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
浏览文件 @
b1ffdcff
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/mapper/borrower/BorrowerConfigMapper.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
mapper
.
borrower
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.model.borrower.BorrowerConfig
;
import
com.clx.performance.param.pc.borrower.PageBorrowerConfigParam
;
import
com.clx.performance.sqlProvider.borrower.BorrowerConfigSqlProvider
;
import
com.clx.performance.vo.pc.borrower.BorrowerConfigVO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.SelectProvider
;
/**
* @Author: aiqinguo
* @Description: 借款配置
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Mapper
public
interface
BorrowerConfigMapper
extends
BaseMapper
<
BorrowerConfig
>
{
/**
* @see BorrowerConfigSqlProvider#pageByParam(Page, PageBorrowerConfigParam)
*/
@SelectProvider
(
type
=
BorrowerConfigSqlProvider
.
class
,
method
=
"pageByParam"
)
IPage
<
BorrowerConfigVO
>
pageByParam
(
@Param
(
"page"
)
Page
<
BorrowerConfigVO
>
page
,
@Param
(
"param"
)
PageBorrowerConfigParam
param
);
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/mapper/borrower/BorrowerMapper.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
mapper
.
borrower
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.model.borrower.Borrower
;
import
com.clx.performance.param.pc.borrower.PageBorrowerParam
;
import
com.clx.performance.sqlProvider.borrower.BorrowerSqlProvider
;
import
com.clx.performance.vo.pc.borrower.BorrowerVO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.SelectProvider
;
/**
* @Author: aiqinguo
* @Description: 借出方
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Mapper
public
interface
BorrowerMapper
extends
BaseMapper
<
Borrower
>
{
/**
* @see BorrowerSqlProvider#pageByParam(Page, PageBorrowerParam)
*/
@SelectProvider
(
type
=
BorrowerSqlProvider
.
class
,
method
=
"pageByParam"
)
IPage
<
BorrowerVO
>
pageByParam
(
@Param
(
"page"
)
Page
<
BorrowerVO
>
page
,
@Param
(
"param"
)
PageBorrowerParam
param
);
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/mapper/nbbank/NbBankRecordMapper.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
mapper
.
nbbank
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.clx.performance.model.nbbank.NbBankRecord
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @Author: aiqinguo
* @Description: 宁波银行请求记录
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Mapper
public
interface
NbBankRecordMapper
extends
BaseMapper
<
NbBankRecord
>
{
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/model/OrderChildSyncTransportInvoiceRecord.java
0 → 100644
浏览文件 @
b1ffdcff
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/model/borrower/Borrower.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
model
.
borrower
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.msl.common.config.KeyColumn
;
import
com.msl.common.model.HasKey
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
java.time.LocalDateTime
;
/**
* @Author: aiqinguo
* @Description: 借出方
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName
(
autoResultMap
=
true
)
public
class
Borrower
implements
HasKey
<
Integer
>
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
//id
private
String
name
;
//借出方
private
String
bankName
;
//所属银行
private
String
bankCardNo
;
//银行账号
private
Integer
deleteStatus
;
//删除状态: 0-否;1-是
private
Integer
status
;
//状态:1启用 2禁用
private
Long
opUserNo
;
//操作人编码
private
String
opUserName
;
//操作人
private
LocalDateTime
opTime
;
//操作时间
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
modifiedTime
;
//修改时间
@KeyColumn
(
"id"
)
@Override
public
Integer
gainKey
()
{
return
id
;
}
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/model/borrower/BorrowerConfig.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
model
.
borrower
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.msl.common.config.KeyColumn
;
import
com.msl.common.model.HasKey
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
java.time.LocalDateTime
;
/**
* @Author: aiqinguo
* @Description: 借款配置
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName
(
autoResultMap
=
true
)
public
class
BorrowerConfig
implements
HasKey
<
Integer
>
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
//id
private
Integer
borrowerId
;
//借出方id
private
String
borrowerName
;
//借出方
private
Integer
type
;
//类型:1资金 2虚拟货币
private
Integer
day
;
//借款天数
private
Integer
deleteStatus
;
//删除状态: 0-否;1-是
private
Integer
status
;
//状态:1启用 2禁用
private
Long
opUserNo
;
//操作人编码
private
String
opUserName
;
//操作人
private
LocalDateTime
opTime
;
//操作时间
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
modifiedTime
;
//修改时间
@KeyColumn
(
"id"
)
@Override
public
Integer
gainKey
()
{
return
id
;
}
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/model/nbbank/NbBankRecord.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
model
.
nbbank
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.msl.common.config.KeyColumn
;
import
com.msl.common.model.HasKey
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
java.time.LocalDateTime
;
/**
* @Author: aiqinguo
* @Description: 宁波银行请求记录
* @Date: 2024/01/20 13:28:28
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName
(
autoResultMap
=
true
)
public
class
NbBankRecord
implements
HasKey
<
Integer
>
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
//id
private
Integer
type
;
//类型:1转账直连下单 2银联订单支付收款模式 3交易结果查询 4异步通知交易结果
private
String
merId
;
//商户号
private
String
merSeqNo
;
//流水号
private
String
transSeqNo
;
//第三方流水号
private
Integer
amount
;
//金额 (分)
private
String
param
;
//参数
private
String
result
;
//方法
private
String
errorCode
;
//错误码
private
String
errorMsg
;
//错误信息
private
String
transStatus
;
//交易状态
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
modifiedTime
;
//修改时间
@KeyColumn
(
"id"
)
@Override
public
Integer
gainKey
()
{
return
id
;
}
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/service/OrderCancelService.java
浏览文件 @
b1ffdcff
...
...
@@ -28,10 +28,10 @@ public interface OrderCancelService {
* 平台取消订单前置(只修改订单状态)
* @param param
*/
void
platformCancelOrderPre
(
OrderCancelParam
param
);
//
void platformCancelOrderPre(OrderCancelParam param);
/**
* 修改订单状态后执行
规划
吨数
* 修改订单状态后执行
归还
吨数
* @param param
*/
void
orderCancelProcess
(
OrderCancelParam
param
);
...
...
performance-web/src/main/java/com/clx/performance/service/OrderChildSyncTransportInvoiceRecordService.java
0 → 100644
浏览文件 @
b1ffdcff
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/borrower/BorrowerConfigService.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
service
.
borrower
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.param.pc.borrower.*
;
import
com.clx.performance.vo.pc.borrower.BorrowerConfigVO
;
import
com.clx.performance.vo.pc.borrower.BorrowerVO
;
import
java.util.List
;
/**
* @Author: aiqinguo
* @Description: 借出方
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
public
interface
BorrowerConfigService
{
void
saveBorrowerConfig
(
BorrowerConfigAddParam
param
);
void
updateBorrowerConfig
(
BorrowerConfigUpdateParam
param
);
void
updateStatus
(
BorrowerConfigStatusUpdateParam
param
);
void
updateDelete
(
BorrowerConfigDeleteUpdateParam
param
);
IPage
<
BorrowerConfigVO
>
pageBorrowerConfig
(
PageBorrowerConfigParam
param
);
List
<
BorrowerConfigVO
>
ListBorrowerConfig
();
}
performance-web/src/main/java/com/clx/performance/service/borrower/BorrowerService.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
service
.
borrower
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.param.pc.borrower.*
;
import
com.clx.performance.vo.pc.borrower.BorrowerVO
;
import
java.util.List
;
/**
* @Author: aiqinguo
* @Description: 借出方
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
public
interface
BorrowerService
{
void
saveBorrower
(
BorrowerAddParam
param
);
void
updateBorrower
(
BorrowerUpdateParam
param
);
void
updateStatus
(
BorrowerStatusUpdateParam
param
);
void
updateDelete
(
BorrowerDeleteUpdateParam
param
);
IPage
<
BorrowerVO
>
pageBorrower
(
PageBorrowerParam
param
);
List
<
BorrowerVO
>
ListBorrower
();
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderCancelServiceImpl.java
浏览文件 @
b1ffdcff
...
...
@@ -13,6 +13,7 @@ import com.clx.order.vo.feign.FeignOrderVO;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderCancelComponent
;
import
com.clx.performance.component.OwnerAccountComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
...
...
@@ -28,6 +29,7 @@ import com.clx.performance.param.pc.owner.ThawAccountParam;
import
com.clx.performance.service.*
;
import
com.clx.performance.service.child.OrderChildPostService
;
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.owner.FreezeSettingEnum
;
import
com.clx.user.vo.feign.OwnerInfoFeignVO
;
...
...
@@ -82,14 +84,13 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private
final
OwnerInfoService
ownerInfoService
;
private
final
SettlementOwnerDetailDao
settlementOwnerDetailDao
;
private
final
OwnerAccountComponent
ownerAccountComponent
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
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
);
Integer
orderStatusCode
=
OrderEnum
.
Status
.
CANCELED
.
getCode
();
if
(
CollectionUtil
.
isEmpty
(
orderGoodsList
))
{
...
...
@@ -98,122 +99,102 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if
(!
result
.
succeed
())
{
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
{
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
NETWORK
.
getCode
());
}
thawAccountParam
.
setOrderNo
(
orderNo
);
log
.
info
(
"执行解冻账户,参数:{}"
,
JSONUtil
.
parse
(
thawAccountParam
));
ownerAccountService
.
ownerAccountThaw
(
thawAccountParam
);
this
.
ownerConfirmCancelProcess
(
orderNo
);
return
;
}
}
else
{
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
null
);
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
null
);
if
(
CollectionUtil
.
isEmpty
(
orderChildrenList
))
{
//说明此刻未产生运单
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
());
if
(
CollectionUtil
.
isEmpty
(
orderChildrenList
))
{
//说明此刻未产生运单
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
());
ids
.
add
(
orderGoods
.
getId
());
}
orderGoodsDao
.
batchUpdateOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
(),
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
());
orderGoodsDao
.
batchUpdateOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
(),
ids
);
}
else
{
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
NETWORK
.
getCode
());
}
thawAccountParam
.
setOrderNo
(
orderNo
);
log
.
info
(
"执行解冻账户,参数:{}"
,
JSONUtil
.
parse
(
thawAccountParam
));
ownerAccountService
.
ownerAccountThaw
(
thawAccountParam
);
List
<
OrderChild
>
arriveSendChildList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
}
else
{
List
<
OrderChild
>
arriveSendChildList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
List
<
String
>
childNoList
=
new
LinkedList
<>();
for
(
OrderChild
orderChild
:
arriveSendChildList
)
{
//释放车辆
driverService
.
updateOrderStatus
(
orderChild
.
getDriverUserNo
(),
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
orderChild
.
getTruckId
(),
1
);
childNoList
.
add
(
orderChild
.
getChildNo
());
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getMsg
()
);
}
List
<
String
>
childNoList
=
new
LinkedList
<>();
for
(
OrderChild
orderChild
:
arriveSendChildList
)
{
//释放车辆
driverService
.
updateOrderStatus
(
orderChild
.
getDriverUserNo
(),
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
orderChild
.
getTruckId
(),
1
);
childNoList
.
add
(
orderChild
.
getChildNo
());
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getMsg
()
);
}
if
(
CollectionUtil
.
isNotEmpty
(
childNoList
))
{
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
now
,
now
,
childNoList
);
}
if
(
CollectionUtil
.
isNotEmpty
(
childNoList
))
{
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
now
,
now
,
childNoList
);
}
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildrenList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildrenList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
List
<
OrderChild
>
orderChildren
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
());
if
(
CollectionUtil
.
isEmpty
(
orderChildren
))
{
//没有运单,直接是取消
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
//货单还有余量,是已完结
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
List
<
OrderChild
>
orderChildren
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
());
if
(
CollectionUtil
.
isEmpty
(
orderChildren
))
{
//没有运单,直接是取消
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
List
<
OrderChild
>
orderChildrenListComplete
=
orderChildDao
.
selectOrderChildListByOrderGoodsNoAndStatusGE
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
if
(
CollectionUtil
.
isNotEmpty
(
orderChildrenListComplete
))
{
//没有余量,需要判断已完成的运单量是不等于货单的全部提取量,等于则是已完成,否则是已完结
BigDecimal
reduce
=
orderChildrenListComplete
.
stream
().
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
if
(
reduce
.
compareTo
(
orderGoods
.
getExtractWeight
())
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
());
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
//货单还有余量,是已完结
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
else
{
List
<
OrderChild
>
orderChildrenListComplete
=
orderChildDao
.
selectOrderChildListByOrderGoodsNoAndStatusGE
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
if
(
CollectionUtil
.
isNotEmpty
(
orderChildrenListComplete
))
{
//没有余量,需要判断已完成的运单量是不等于货单的全部提取量,等于则是已完成,否则是已完结
BigDecimal
reduce
=
orderChildrenListComplete
.
stream
().
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
if
(
reduce
.
compareTo
(
orderGoods
.
getExtractWeight
())
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
());
}
else
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
}
else
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
//虽然没有余量,但是可以取消的运单都是未到达货源地的
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
}
else
{
//虽然没有余量,但是可以取消的运单都是未到达货源地的
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
}
}
if
(
orderGoods
.
getPendingOrderWay
().
equals
(
PendingOrderWayStatusEnum
.
Status
.
DX
.
getCode
()))
{
orderGoodsTruckBindService
.
updateCancelTruckBind
(
orderGoods
.
getOrderGoodsNo
());
if
(
orderGoods
.
getPendingOrderWay
().
equals
(
PendingOrderWayStatusEnum
.
Status
.
DX
.
getCode
()))
{
orderGoodsTruckBindService
.
updateCancelTruckBind
(
orderGoods
.
getOrderGoodsNo
());
}
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
);
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 {
param
.
setResidueWeight
(
residueWeight
);
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
}
else
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
param
.
setResidueWeight
(
residueWeight
);
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
...
...
@@ -332,9 +312,9 @@ public class OrderCancelServiceImpl implements OrderCancelService {
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"远程调用更新订单余量失败"
);
}
if
(!
orderFeign
.
saveOrderSettlementJobRecord
(
orderNo
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用结算单锁定失败"
);
}
//
if (!orderFeign.saveOrderSettlementJobRecord(orderNo).succeed()) {
//
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用结算单锁定失败");
//
}
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
e
.
getMessage
());
...
...
@@ -349,6 +329,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
ownerCancelOrderPre
(
OrderCancelParam
param
)
{
String
orderNo
=
param
.
getOrderNo
();
List
<
String
>
childNoList
=
orderCancelComponent
.
ownerProcess
(
param
);
param
.
setChildNoList
(
childNoList
);
OrderCancelReasonParam
orderCancelReasonParam
=
new
OrderCancelReasonParam
();
...
...
@@ -357,10 +338,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
orderCancelReasonParam
.
setCreateNo
(
loginUserInfo
.
getUserNo
());
orderCancelReasonParam
.
setCreateName
(
loginUserInfo
.
getUserName
());
orderFeign
.
orderCancelReason
(
orderCancelReasonParam
);
//TODO 注意判断普通单还是网运单 普通单类型 2 网运单 1
log
.
info
(
"执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}"
,
orderNo
);
...
...
@@ -368,139 +347,149 @@ public class OrderCancelServiceImpl implements OrderCancelService {
rabbitTemplate
.
send
(
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
);
}
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
);
}
OrderTruckBindCancelParam
bindCancelParam
=
new
OrderTruckBindCancelParam
();
bindCancelParam
.
setOrderNo
(
orderNo
);
Message
message2
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
bindCancelParam
).
toString
().
getBytes
()).
build
();
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
();
message2
.
getMessageProperties
().
setHeader
(
"x-delay"
,
2000
);
//执行解绑自有车辆处理逻辑,将绑定记录正常改为取消
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,178 +512,25 @@ public class OrderCancelServiceImpl implements OrderCancelService {
List
<
OrderGoods
>
orderGoodsList
=
null
;
switch
(
param
.
getCancelType
())
{
case
1
:
//单纯取消订单及货单
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
}
}
else
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
}
}
//归还吨数
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
else
{
BigDecimal
platformResidueSum
=
vehicleUsageMap
.
get
(
1
);
BigDecimal
ownResidueSum
=
vehicleUsageMap
.
get
(
2
);
BigDecimal
residueSum
=
platformResidueSum
.
add
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
rollbackOrderWeightParam
.
setResidueWeight
(
residueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
orderGoodsList
=
getOrderGoods
(
orderNo
,
orderInfoFeign
,
truckDemandMap
,
vehicleUsageMap
,
rollbackOrderWeightParam
,
truckDemand
);
break
;
case
2
:
//取消未拉运吨数的货单及订单
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
}
}
else
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
}
}
//归还吨数
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
else
{
BigDecimal
platformResidueSum
=
vehicleUsageMap
.
get
(
1
);
BigDecimal
ownResidueSum
=
vehicleUsageMap
.
get
(
2
);
BigDecimal
residueSum
=
platformResidueSum
.
add
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
rollbackOrderWeightParam
.
setResidueWeight
(
residueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
orderGoodsList
=
getGoods
(
orderNo
,
orderInfoFeign
,
truckDemandMap
,
vehicleUsageMap
,
rollbackOrderWeightParam
,
truckDemand
);
break
;
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
));
}
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
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
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
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
);
}
}
}
//归还吨数
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
else
{
BigDecimal
platformResidueSum
=
vehicleUsageMap
.
get
(
1
);
BigDecimal
ownResidueSum
=
vehicleUsageMap
.
get
(
2
);
BigDecimal
residueSum
=
platformResidueSum
.
add
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
rollbackOrderWeightParam
.
setResidueWeight
(
residueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
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
,
"货主取消订单失败,原因:远程调用结算单锁定失败"
);
}
// if (!orderFeign.saveOrderSettlementJobRecord(orderNo).succeed()) {
// throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用结算单锁定失败");
// }
//订单取消恢复货单的剩余吨数为0
orderGoodsService
.
batchUpdateResidueWeight
(
orderGoodsList
);
...
...
@@ -703,6 +539,172 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
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
);
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
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
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
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
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
);
}
}
}
//归还吨数
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
else
{
BigDecimal
platformResidueSum
=
vehicleUsageMap
.
get
(
1
);
BigDecimal
ownResidueSum
=
vehicleUsageMap
.
get
(
2
);
BigDecimal
residueSum
=
platformResidueSum
.
add
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
rollbackOrderWeightParam
.
setResidueWeight
(
residueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
return
orderGoodsList
;
}
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
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
}
}
else
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
}
}
//归还吨数
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
else
{
BigDecimal
platformResidueSum
=
vehicleUsageMap
.
get
(
1
);
BigDecimal
ownResidueSum
=
vehicleUsageMap
.
get
(
2
);
BigDecimal
residueSum
=
platformResidueSum
.
add
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
rollbackOrderWeightParam
.
setResidueWeight
(
residueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
return
orderGoodsList
;
}
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
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
}
}
else
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
}
}
//归还吨数
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
else
{
BigDecimal
platformResidueSum
=
vehicleUsageMap
.
get
(
1
);
BigDecimal
ownResidueSum
=
vehicleUsageMap
.
get
(
2
);
BigDecimal
residueSum
=
platformResidueSum
.
add
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
rollbackOrderWeightParam
.
setResidueWeight
(
residueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
return
orderGoodsList
;
}
//订单取消增加自动冻结的消息触发
private
void
triggerAutoFreeze
(
Long
ownerUserNo
,
String
orderNo
){
try
{
...
...
@@ -722,6 +724,11 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
}
/**
* 客服取消订单
* @param orderChildNo
* @param remark
*/
@Override
public
void
artificialCancelOrder
(
String
orderChildNo
,
String
remark
)
{
LocalDateTime
now
=
LocalDateTime
.
now
();
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildSyncTransportInvoiceRecordServiceImpl.java
0 → 100644
浏览文件 @
b1ffdcff
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
浏览文件 @
b1ffdcff
...
...
@@ -14,10 +14,12 @@ import com.clx.order.vo.feign.FeignOrderVO;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderCancelComponent
;
import
com.clx.performance.component.OrderGoodsStatusLazyComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsDriverTruckDao
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.dto.OrderGoodsCancelDTO
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.extranal.user.DriverService
;
import
com.clx.performance.model.OrderChild
;
...
...
@@ -36,6 +38,7 @@ import com.clx.performance.struct.OrderGoodsStruct;
import
com.clx.performance.vo.app.OrderGoodsAPPVO
;
import
com.clx.performance.vo.feign.FreightEstimateVO
;
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.OrderGoodsVO
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
...
...
@@ -50,16 +53,18 @@ import com.msl.user.utils.TokenUtil;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
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.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.*
;
import
java.util.function.Consumer
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -69,7 +74,7 @@ import java.util.stream.Collectors;
*/
@Service
@Slf4j
public
class
OrderGoodsServiceImpl
implements
OrderGoodsService
{
public
class
OrderGoodsServiceImpl
implements
OrderGoodsService
,
InitializingBean
{
@Autowired
private
OrderGoodsDao
orderGoodsDao
;
...
...
@@ -108,6 +113,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
private
OrderChildLogService
orderChildLogService
;
@Autowired
private
OrderChildPostService
orderChildPostService
;
@Autowired
private
RabbitTemplate
rabbitTemplate
;
private
static
Map
<
Integer
,
Consumer
<
OrderGoodsCancelDTO
>>
orderGoodsCancelMap
=
new
HashMap
<>();
@Override
public
OrderGoodsVO
getOrderGoodsInfoByOrderGoodsNoForPC
(
String
orderGoodsNo
)
{
...
...
@@ -504,150 +513,16 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
public
void
orderGoodsCancel
(
OrderGoodsCancelParam
goodsCancelParam
)
{
String
orderGoodsNo
=
goodsCancelParam
.
getOrderGoodsNo
();
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
<>();
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
Integer
cancelOperateType
=
goodsCancelParam
.
getCancelOperateType
();
Integer
orderGoodsStatus
=
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
();
switch
(
cancelOperateType
)
{
case
1
:
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
());
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前货单已产生运单"
);
}
residueWeight
=
orderGoods
.
getResidueTransportWeight
();
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
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
());
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
List
<
OrderChild
>
filterOrderChildList
=
orderChildList
.
stream
().
filter
(
item
->
item
.
getStatus
()
<
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
filterOrderChildList
))
{
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
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getMsg
()
);
}
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
now
,
now
,
childNoList
);
}
orderChildList
.
removeAll
(
filterOrderChildList
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildList
))
{
orderGoodsStatus
=
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
();
}
}
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
break
;
case
3
:
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
(),
goodsCancelParam
.
getTruckList
());
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
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
))
{
orderGoodsStatus
=
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
();
}
}
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
orderGoodsDao
.
updateOrderGoodsSetResidueWeightAndAlreadyWeightAndStatus
(
orderGoods
.
getResidueTransportWeight
(),
sum
,
orderGoodsStatus
,
orderGoods
.
getId
());
}
break
;
default
:
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"参数类型有误"
);
//封装取消策略参数
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
());
...
...
@@ -655,18 +530,179 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
orderCancelReasonParam
.
setCreateNo
(
loginUserInfo
.
getUserNo
());
orderCancelReasonParam
.
setCreateName
(
loginUserInfo
.
getUserName
());
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
//删除绑定记录
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
//记录取消意见
orderFeign
.
orderCancelReason
(
orderCancelReasonParam
);
for
(
String
childNo
:
childNoList
)
{
// 货单取消
orderChildPostService
.
orderGoodsCancel
(
childNo
);
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
();
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
(),
dto
.
getOrderGoodsCancelParam
().
getTruckList
());
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
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
());
}
}
BigDecimal
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
orderGoodsDao
.
updateOrderGoodsSetResidueWeightAndAlreadyWeightAndStatus
(
orderGoods
.
getResidueTransportWeight
(),
sum
,
dto
.
getOrderGoodsStatus
(),
orderGoods
.
getId
());
}
}
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
))
{
List
<
OrderChild
>
filterOrderChildList
=
orderChildList
.
stream
().
filter
(
item
->
item
.
getStatus
()
<
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
filterOrderChildList
))
{
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
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getMsg
()
);
}
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
now
,
now
,
childNoList
);
}
orderChildList
.
removeAll
(
filterOrderChildList
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildList
))
{
dto
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
}
BigDecimal
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
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
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前货单已产生运单"
);
}
BigDecimal
residueWeight
=
dto
.
getOrderGoods
().
getResidueTransportWeight
();
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setOrderGoodsStatus
(
dto
.
getOrderGoodsStatus
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
/**
* 查看当前货单可取消吨数
* @param goodsCancelParam
...
...
@@ -811,4 +847,12 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
List
<
Integer
>
collect
=
list
.
stream
().
map
(
OrderGoods:
:
getId
).
collect
(
Collectors
.
toList
());
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
浏览文件 @
b1ffdcff
...
...
@@ -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/borrower/BorrowerConfigServiceImpl.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
service
.
impl
.
borrower
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.dao.borrower.BorrowerConfigDao
;
import
com.clx.performance.dao.borrower.BorrowerDao
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.borrower.BorrowerConfigEnum
;
import
com.clx.performance.model.borrower.Borrower
;
import
com.clx.performance.model.borrower.BorrowerConfig
;
import
com.clx.performance.param.pc.borrower.*
;
import
com.clx.performance.service.borrower.BorrowerConfigService
;
import
com.clx.performance.struct.borrower.BorrowerConfigStruct
;
import
com.clx.performance.vo.pc.borrower.BorrowerConfigVO
;
import
com.msl.common.base.Optional
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.user.data.UserSessionData
;
import
com.msl.user.utils.TokenUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @Author: aiqinguo
* @Description: 借出方
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Slf4j
@Service
public
class
BorrowerConfigServiceImpl
implements
BorrowerConfigService
{
@Autowired
private
BorrowerDao
borrowerDao
;
@Autowired
private
BorrowerConfigDao
borrowerConfigDao
;
@Autowired
private
BorrowerConfigStruct
borrowerConfigStruct
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
saveBorrowerConfig
(
BorrowerConfigAddParam
param
)
{
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
// 重复验证
Optional
<
BorrowerConfig
>
borrowerConfigOptional
=
borrowerConfigDao
.
selectByBorrowerId
(
param
.
getBorrowerId
());
if
(
borrowerConfigOptional
.
isPresent
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
BORROWER_CONFIG_BORROWER_ID_EXIST
);
}
Borrower
borrower
=
borrowerDao
.
getEntityByKey
(
param
.
getBorrowerId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
BorrowerConfig
borrowerConfig
=
new
BorrowerConfig
();
borrowerConfig
.
setBorrowerId
(
borrower
.
getId
());
borrowerConfig
.
setBorrowerName
(
borrower
.
getName
());
borrowerConfig
.
setType
(
param
.
getType
());
borrowerConfig
.
setDay
(
param
.
getDay
());
borrowerConfig
.
setOpUserNo
(
loginUserInfo
.
getUserNo
());
borrowerConfig
.
setOpUserName
(
loginUserInfo
.
getUserName
());
borrowerConfig
.
setOpTime
(
LocalDateTime
.
now
());
borrowerConfigDao
.
saveEntity
(
borrowerConfig
);
}
@Override
public
void
updateBorrowerConfig
(
BorrowerConfigUpdateParam
param
)
{
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
BorrowerConfig
borrowerConfig
=
borrowerConfigDao
.
getEntityByKey
(
param
.
getId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
// 重复验证
Optional
<
BorrowerConfig
>
borrowerConfigOptional
=
borrowerConfigDao
.
selectByBorrowerId
(
param
.
getBorrowerId
());
if
(
borrowerConfigOptional
.
isPresent
()
&&
!
Objects
.
equals
(
borrowerConfig
.
getId
(),
borrowerConfigOptional
.
get
().
getId
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
BORROWER_CONFIG_BORROWER_ID_EXIST
);
}
Borrower
borrower
=
borrowerDao
.
getEntityByKey
(
param
.
getBorrowerId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
borrowerConfig
.
setBorrowerId
(
borrower
.
getId
());
borrowerConfig
.
setBorrowerName
(
borrower
.
getName
());
borrowerConfig
.
setType
(
param
.
getType
());
borrowerConfig
.
setDay
(
param
.
getDay
());
borrowerConfig
.
setOpUserNo
(
loginUserInfo
.
getUserNo
());
borrowerConfig
.
setOpUserName
(
loginUserInfo
.
getUserName
());
borrowerConfig
.
setOpTime
(
LocalDateTime
.
now
());
borrowerConfigDao
.
update
(
borrowerConfig
);
}
@Override
public
void
updateStatus
(
BorrowerConfigStatusUpdateParam
param
)
{
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
BorrowerConfig
borrowerConfig
=
borrowerConfigDao
.
getEntityByKey
(
param
.
getId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
borrowerConfig
.
setStatus
(
param
.
getStatus
());
borrowerConfig
.
setOpUserNo
(
loginUserInfo
.
getUserNo
());
borrowerConfig
.
setOpUserName
(
loginUserInfo
.
getUserName
());
borrowerConfig
.
setOpTime
(
LocalDateTime
.
now
());
borrowerConfigDao
.
updateStatus
(
borrowerConfig
);
}
@Override
public
void
updateDelete
(
BorrowerConfigDeleteUpdateParam
param
)
{
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
BorrowerConfig
borrowerConfig
=
borrowerConfigDao
.
getEntityByKey
(
param
.
getId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
borrowerConfig
.
setDeleteStatus
(
BorrowerConfigEnum
.
DeleteStatus
.
YES
.
getCode
());
borrowerConfig
.
setOpUserNo
(
loginUserInfo
.
getUserNo
());
borrowerConfig
.
setOpUserName
(
loginUserInfo
.
getUserName
());
borrowerConfig
.
setOpTime
(
LocalDateTime
.
now
());
borrowerConfigDao
.
updateDelete
(
borrowerConfig
);
}
@Override
public
IPage
<
BorrowerConfigVO
>
pageBorrowerConfig
(
PageBorrowerConfigParam
param
)
{
return
borrowerConfigDao
.
pageByParam
(
param
);
}
@Override
public
List
<
BorrowerConfigVO
>
ListBorrowerConfig
()
{
return
borrowerConfigStruct
.
convert
(
borrowerConfigDao
.
listEnable
());
}
}
performance-web/src/main/java/com/clx/performance/service/impl/borrower/BorrowerServiceImpl.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
service
.
impl
.
borrower
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.dao.borrower.BorrowerDao
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.borrower.BorrowerEnum
;
import
com.clx.performance.model.borrower.Borrower
;
import
com.clx.performance.param.pc.borrower.*
;
import
com.clx.performance.service.borrower.BorrowerService
;
import
com.clx.performance.struct.borrower.BorrowerStruct
;
import
com.clx.performance.vo.pc.borrower.BorrowerVO
;
import
com.msl.common.base.Optional
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.user.data.UserSessionData
;
import
com.msl.user.utils.TokenUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @Author: aiqinguo
* @Description: 借出方
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Slf4j
@Service
public
class
BorrowerServiceImpl
implements
BorrowerService
{
@Autowired
private
BorrowerDao
borrowerDao
;
@Autowired
private
BorrowerStruct
borrowerStruct
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
saveBorrower
(
BorrowerAddParam
param
)
{
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
// 重复验证
Optional
<
Borrower
>
borrowerOptional
=
borrowerDao
.
selectByName
(
param
.
getName
());
if
(
borrowerOptional
.
isPresent
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
BORROWER_NAME_EXIST
);
}
Borrower
borrower
=
new
Borrower
();
borrower
.
setName
(
param
.
getName
());
borrower
.
setBankName
(
param
.
getBankName
());
borrower
.
setBankCardNo
(
param
.
getBankCardNo
());
borrower
.
setOpUserNo
(
loginUserInfo
.
getUserNo
());
borrower
.
setOpUserName
(
loginUserInfo
.
getUserName
());
borrower
.
setOpTime
(
LocalDateTime
.
now
());
borrowerDao
.
saveEntity
(
borrower
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateBorrower
(
BorrowerUpdateParam
param
)
{
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
Borrower
borrower
=
borrowerDao
.
getEntityByKey
(
param
.
getId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
Optional
<
Borrower
>
borrowerOptional
=
borrowerDao
.
selectByName
(
param
.
getName
());
if
(
borrowerOptional
.
isPresent
()
&&
!
Objects
.
equals
(
borrower
.
getId
(),
borrowerOptional
.
get
().
getId
()))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
BORROWER_NAME_EXIST
);
}
borrower
.
setName
(
param
.
getName
());
borrower
.
setBankName
(
param
.
getBankName
());
borrower
.
setBankCardNo
(
param
.
getBankCardNo
());
borrower
.
setOpUserNo
(
loginUserInfo
.
getUserNo
());
borrower
.
setOpUserName
(
loginUserInfo
.
getUserName
());
borrower
.
setOpTime
(
LocalDateTime
.
now
());
borrowerDao
.
update
(
borrower
);
}
@Override
public
void
updateStatus
(
BorrowerStatusUpdateParam
param
)
{
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
Borrower
borrower
=
borrowerDao
.
getEntityByKey
(
param
.
getId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
borrower
.
setStatus
(
param
.
getStatus
());
borrower
.
setOpUserNo
(
loginUserInfo
.
getUserNo
());
borrower
.
setOpUserName
(
loginUserInfo
.
getUserName
());
borrower
.
setOpTime
(
LocalDateTime
.
now
());
borrowerDao
.
updateStatus
(
borrower
);
}
@Override
public
void
updateDelete
(
BorrowerDeleteUpdateParam
param
)
{
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
Borrower
borrower
=
borrowerDao
.
getEntityByKey
(
param
.
getId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
borrower
.
setDeleteStatus
(
BorrowerEnum
.
DeleteStatus
.
YES
.
getCode
());
borrower
.
setOpUserNo
(
loginUserInfo
.
getUserNo
());
borrower
.
setOpUserName
(
loginUserInfo
.
getUserName
());
borrower
.
setOpTime
(
LocalDateTime
.
now
());
borrowerDao
.
updateDelete
(
borrower
);
}
@Override
public
IPage
<
BorrowerVO
>
pageBorrower
(
PageBorrowerParam
param
)
{
return
borrowerDao
.
pageByParam
(
param
);
}
@Override
public
List
<
BorrowerVO
>
ListBorrower
()
{
return
borrowerStruct
.
convert
(
borrowerDao
.
listEnable
());
}
}
performance-web/src/main/java/com/clx/performance/service/impl/settle/NetworkDriverRunningWaterRecordServiceImpl.java
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
service
.
impl
.
settle
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.component.IdGenerateSnowFlake
;
...
...
@@ -217,7 +218,24 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
public
IPage
<
APPNetworkDriverRunningWaterRecordVO
>
runningWaterList
(
NetworkDriverPageParam
param
)
{
Long
userNo
=
TokenUtil
.
getLoginUserInfo
().
getUserNo
();
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
());
}
}
}
else
if
(
param
.
getFundType
()
==
null
)
{
if
(
CollectionUtil
.
isNotEmpty
(
page
.
getRecords
()))
{
for
(
APPNetworkDriverRunningWaterRecordVO
record
:
page
.
getRecords
())
{
if
(
NetworkDriverAccountEnum
.
RunningWaterStatus
.
CASE_OUT_SUCCESS
.
getCode
().
equals
(
record
.
getRunningWaterType
())){
record
.
setAlterationBalance
(
record
.
getAlterationBalance
().
negate
());
}
}
}
}
return
page
;
}
@Override
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqHandlerServiceImpl.java
浏览文件 @
b1ffdcff
...
...
@@ -131,7 +131,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
}
}
else
{
log
.
info
(
"
月
结初始化货主结算单"
);
log
.
info
(
"
拉运完成
结初始化货主结算单"
);
settlementOwner
=
settlementOwnerDao
.
selectUnlockOfSettlementPeriodImmediate
(
settlementOwnerDetail
.
getOrderNo
(),
settlementOwnerDetail
.
getInvoiceType
()).
orNull
();
if
(
settlementOwner
==
null
){
// 拉运完成初始化
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementServiceImpl.java
浏览文件 @
b1ffdcff
...
...
@@ -2,56 +2,41 @@ package com.clx.performance.service.impl.settle;
import
cn.hutool.json.JSONUtil
;
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.OrderGoodsDao
;
import
com.clx.performance.dao.OwnerAccountDao
;
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.SettlementOwnerDetailDao
;
import
com.clx.performance.dto.OrderChildSyncDTO
;
import
com.clx.performance.enums.IdTypeEnum
;
import
com.clx.performance.enums.NetworkDriverAccountEnum
;
import
com.clx.performance.enums.OwnerAccountEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
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.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.OwnerAccount
;
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.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.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
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.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
@Slf4j
@Service
public
class
SettlementServiceImpl
implements
SettlementService
{
@Autowired
private
OrderChildDao
orderChildDao
;
@Autowired
...
...
@@ -61,22 +46,13 @@ public class SettlementServiceImpl implements SettlementService {
@Autowired
private
SettlementMqService
settlementMqService
;
@Autowired
private
TransportSyncService
transportSyncService
;
@Autowired
private
OrderGoodsDao
orderGoodsDao
;
@Autowired
private
OwnerRunningWaterRecordDao
ownerRunningWaterRecordDao
;
@Autowired
private
IdGenerateSnowFlake
idGenerateSnowFlake
;
@Autowired
private
TransportFeignService
transportFeignService
;
@Autowired
private
OwnerAccountDao
ownerAccountDao
;
@Autowired
private
NetworkDriverRunningWaterRecordService
networkDriverRunningWaterRecordServic
e
;
private
RabbitTemplate
rabbitTemplat
e
;
@Override
...
...
@@ -96,71 +72,77 @@ public class SettlementServiceImpl implements SettlementService {
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
}
else
{
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
);
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
()
);
//生成提现记录
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
);
}
//TODO 发送MQ异步
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
orderChild
).
toString
().
getBytes
()).
build
();
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY
,
message
);
return
;
// 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);
// 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()
// );
// //生成提现记录
// 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/service/impl/thirdparty/nbbank/NbBankNotifyServiceImpl.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
service
.
impl
.
thirdparty
.
nbbank
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.nbbank.NbBankRecordEnum
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankNotifyService
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankService
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankThirdpartyService
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.nbopen.api.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
@Slf4j
@Service
public
class
NbBankNotifyServiceImpl
implements
NbBankNotifyService
{
@Autowired
private
NbBankService
bankService
;
@Autowired
private
NbBankThirdpartyService
nbBankThirdpartyService
;
/**
* 支付回调
* 6.2异步通知交易结果
* 解密后
* {
* "data": {
* "clearDate": "20231205",
* "merId": "EFT33021200556315",
* "merSeqNo": "20231205165038",
* "payMethod": "L",
* "pyerInfList": [
* {
* "coreSeqNo": "",
* "customerId": "",
* "pyerAcctBankName": "",
* "pyerAcctBankNo": "",
* "pyerAcctName": "黑玫瑰",
* "pyerAcctNo": "86041110000076809",
* "signNo": "00",
* "transAmt": "0.01",
* "transDtTm": "2023-12-05 16:54:22"
* }
* ],
* "realTrxAmt": "0.01",
* "transDate": "20231205",
* "transSeqNo": "2023120516503906838128gg6DOzjP",
* "transStatus": "00",
* "trxAmt": "0.01"
* },
* "head": {
* "rqsJrnlNo": "16071726224843844",
* "rspCode": "000000",
* "rspDate": "2023-12-05",
* "rspMsg": "处理成功",
* "rspTime": "17:13:43:943"
* }
* }
*/
@Override
public
void
payNotify
(
String
body
)
{
log
.
info
(
"宁波银行回调, data:{}"
,
JSON
.
toJSONString
(
body
));
try
{
RequestApiData
requestApiData
=
new
RequestApiData
();
requestApiData
.
setAppkey
(
"77667c76_3503_4c04_95f7_fc10938c7942"
);
requestApiData
.
setData
(
JSON
.
parseObject
(
body
));
requestApiData
.
setServiceId
(
"notifyMerchant"
);
RequestHead
requestHead
=
new
RequestHead
();
requestHead
.
setRqsJrnlNo
(
NBOpenSDK
.
getRandom
());
SDKRequest
request
=
new
SDKRequest
();
request
.
setData
(
requestApiData
);
request
.
setHead
(
requestHead
);
log
.
info
(
"宁波银行, 回调:{}"
,
JSON
.
toJSONString
(
request
));
SDKResponse
response
=
NBOpenSDK
.
decryptMessage
(
request
);
log
.
info
(
"宁波银行, 回调解密:{}"
,
JSON
.
toJSONString
(
response
));
JSONObject
responseJson
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
response
));
JSONObject
data
=
responseJson
.
getJSONObject
(
"data"
);
nbBankThirdpartyService
.
recordSave
(
NbBankRecordEnum
.
Type
.
NOTIFY_MERCHANT
.
getCode
(),
request
,
response
);
if
(!
StringUtils
.
equals
(
data
.
getString
(
"errorCode"
),
"000000"
)){
log
.
info
(
"宁波银行, 下单失败(notifyMerchant), code:{}, msg:{}"
,
data
.
getString
(
"errorCode"
),
data
.
getString
(
"errorMsg"
));
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
NB_BANK_API_ERROR
);
}
String
merSeqNo
=
data
.
getString
(
"merSeqNo"
);
String
transSeqNo
=
data
.
getString
(
"transSeqNo"
);
BigDecimal
trxAmt
=
data
.
getBigDecimal
(
"trxAmt"
);
BigDecimal
realTrxAmt
=
data
.
getBigDecimal
(
"realTrxAmt"
);
String
transStatus
=
data
.
getString
(
"transStatus"
);
String
signNo
=
data
.
getString
(
"signNo"
);
// 回调
bankService
.
orderPayCallback
(
merSeqNo
,
transSeqNo
,
trxAmt
,
realTrxAmt
,
transStatus
,
signNo
);
}
catch
(
Exception
e
){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
NB_BANK_NOTIFY_ERROR
);
}
}
}
performance-web/src/main/java/com/clx/performance/service/impl/thirdparty/nbbank/NbBankServiceImpl.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
service
.
impl
.
thirdparty
.
nbbank
;
import
com.alibaba.fastjson.JSONObject
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankService
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankThirdpartyService
;
import
com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO
;
import
com.clx.performance.vo.pc.nbbank.NbBankOrderPayStatusResultVO
;
import
com.msl.common.exception.ServiceSystemException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
/**
* 易付通
*/
@Slf4j
@Service
public
class
NbBankServiceImpl
implements
NbBankService
{
@Autowired
private
NbBankThirdpartyService
bankThirdpartyService
;
/**
* 订单支付
* @return
* 第三方流水号
*/
@Override
public
NbBankOrderPayResultVO
orderPay
(
Integer
payType
)
{
if
(
payType
==
1
){
String
merSeqNo
=
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyyMMddHHmmss"
));
JSONObject
data
=
bankThirdpartyService
.
directBankTransferOrder
(
merSeqNo
,
"EFT33021200556315"
,
1
);
String
transSeqNo
=
data
.
getString
(
"transSeqNo"
);
String
signNo
=
data
.
getString
(
"signNo"
);
NbBankOrderPayResultVO
result
=
new
NbBankOrderPayResultVO
();
result
.
setAmount
(
1
);
result
.
setMerSeqNo
(
merSeqNo
);
result
.
setTransSeqNo
(
transSeqNo
);
result
.
setSignNo
(
signNo
);
return
result
;
}
else
if
(
payType
==
2
){
String
merSeqNo
=
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyyMMddHHmmss"
));
JSONObject
data
=
bankThirdpartyService
.
unionPayDirectOrder
(
merSeqNo
,
"EFT33021200556315"
,
1
,
"313332082914"
,
"86041110000076809"
,
"黑玫瑰"
);
String
transSeqNo
=
data
.
getString
(
"transSeqNo"
);
NbBankOrderPayResultVO
result
=
new
NbBankOrderPayResultVO
();
result
.
setAmount
(
1
);
result
.
setMerSeqNo
(
merSeqNo
);
result
.
setTransSeqNo
(
transSeqNo
);
return
result
;
}
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
NB_BANK_PAY_TYPE_ERROR
);
}
/**
* 获取交易状态
* @return
*/
@Override
public
NbBankOrderPayStatusResultVO
getOrderStatus
(
String
merSeqNo
)
{
JSONObject
data
=
bankThirdpartyService
.
queryOrder
(
merSeqNo
);
NbBankOrderPayStatusResultVO
result
=
new
NbBankOrderPayStatusResultVO
();
String
transStatus
=
data
.
getString
(
"transStatus"
);
if
(
StringUtils
.
equals
(
transStatus
,
"00"
)){
result
.
setTransStatus
(
1
);}
//交易成功
else
if
(
StringUtils
.
equals
(
transStatus
,
"01"
)){
result
.
setTransStatus
(
2
);}
//交易失败
else
if
(
StringUtils
.
equals
(
transStatus
,
"02"
)){
result
.
setTransStatus
(
3
);}
//交易已受理
else
if
(
StringUtils
.
equals
(
transStatus
,
"80"
)){
result
.
setTransStatus
(
4
);}
//订单初始状态
else
if
(
StringUtils
.
equals
(
transStatus
,
"90"
)){
result
.
setTransStatus
(
5
);}
//交易不存在
else
if
(
StringUtils
.
equals
(
transStatus
,
"99"
)){
result
.
setTransStatus
(
6
);}
//交易超时,须发起交易结果查询
BigDecimal
trxAmt
=
data
.
getBigDecimal
(
"trxAmt"
);
BigDecimal
realTrxAmt
=
data
.
getBigDecimal
(
"realTrxAmt"
);
String
transSeqNo
=
data
.
getString
(
"transSeqNo"
);
String
signNo
=
data
.
getString
(
"signNo"
);
result
.
setAmount
(
trxAmt
==
null
?
null
:
trxAmt
.
movePointLeft
(
2
).
intValue
());
result
.
setRealAmount
(
trxAmt
==
null
?
null
:
realTrxAmt
.
movePointLeft
(
2
).
intValue
());
result
.
setMerSeqNo
(
merSeqNo
);
result
.
setTransSeqNo
(
transSeqNo
);
result
.
setSignNo
(
signNo
);
return
result
;
}
@Override
public
void
orderPayCallback
(
String
merSeqNo
,
String
transSeqNo
,
BigDecimal
trxAmt
,
BigDecimal
realTrxAmt
,
String
transStatus
,
String
signNo
)
{
log
.
info
(
"宁波银行支付回调, merSeqNo:{}, transSeqNo:{}, trxAmt:{}, realTrxAmt:{}, transSeqNo:{}, signNo:{}"
,
merSeqNo
,
transSeqNo
,
trxAmt
,
realTrxAmt
,
transStatus
,
signNo
);
if
(
StringUtils
.
equals
(
transStatus
,
"00"
)){
//交易成功
}
if
(
StringUtils
.
equals
(
transStatus
,
"01"
)){
//交易失败
}
if
(
StringUtils
.
equals
(
transStatus
,
"02"
)){
//交易已受理
}
if
(
StringUtils
.
equals
(
transStatus
,
"80"
)){
//订单初始状态
}
if
(
StringUtils
.
equals
(
transStatus
,
"90"
)){
//交易不存在
}
if
(
StringUtils
.
equals
(
transStatus
,
"99"
)){
//交易超时,须发起交易结果查询
}
}
}
performance-web/src/main/java/com/clx/performance/service/impl/thirdparty/nbbank/NbBankThirdpartyServiceImpl.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
service
.
impl
.
thirdparty
.
nbbank
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.clx.performance.config.nbbank.NbBankConfig
;
import
com.clx.performance.dao.nbbank.NbBankRecordDao
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.nbbank.NbBankRecordEnum
;
import
com.clx.performance.model.nbbank.NbBankRecord
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankThirdpartyService
;
import
com.clx.performance.utils.LocalDateTimeUtils
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.nbopen.api.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.io.ClassPathResource
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.Objects
;
/**
* 易付通
*/
@Slf4j
@Service
public
class
NbBankThirdpartyServiceImpl
implements
NbBankThirdpartyService
{
@Autowired
private
NbBankConfig
nbBankConfig
;
@Autowired
private
NbBankRecordDao
nbBankRecordDao
;
static
{
ClassPathResource
classPathResource
=
new
ClassPathResource
(
"bank/config-nbbank.json"
);
InputStream
inputStream
;
try
{
inputStream
=
classPathResource
.
getInputStream
();
boolean
initResult
=
NBOpenSDK
.
init
(
inputStream
);
log
.
info
(
"NBSDK初始化状态:{}"
,
initResult
);
log
.
info
(
"sdk版本信息:{}"
,
NBOpenSDK
.
getVersionInfo
());
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
/**
* 下单
* 5.5转账直连下单
* 商户号:EFT33021200556315
* 银行转账:86041110000075918(户名:客户客户)
* 订单支付:结算账号(86041110000075926(户名:客户客户))
* 响应结果:
*{
* "data": {
* "acctNm": "客户客户",
* "acctOpenBankNm": "宁波银行股份有限公司",
* "bankId": "313332082914",
* "cardNo": "86041110000075918",
* "errorCode": "000000",
* "errorMsg": "成功",
* "signNo": "2976409",
* "transSeqNo": "20231129142846065496766yDTQtg2",
* "virtualDays": "2024-05-26"
* },
* "head": {
* "rqsJrnlNo": "15543427719351510",
* "rspCode": "000000",
* "rspDate": "2023-11-29",
* "rspMsg": "交易成功",
* "rspTime": "14:28:49:600"
* }
* }
*
* @Param
* merSeqNo: 商户流水
* merId: 商户号
* amount: 订单金额(分)
*/
@Override
public
JSONObject
directBankTransferOrder
(
String
merSeqNo
,
String
merId
,
Integer
amount
)
{
try
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"transId"
,
"IP01"
);
//交易识别码 必填
jsonObject
.
put
(
"merId"
,
merId
);
//商户号 必填
jsonObject
.
put
(
"merSeqNo"
,
merSeqNo
);
//商户流水 必填
jsonObject
.
put
(
"merDtTm"
,
LocalDateTimeUtils
.
formatTime
());
//商户时间 必填
jsonObject
.
put
(
"trxAmt"
,
new
BigDecimal
(
amount
).
movePointLeft
(
2
));
//订单金额 必填
jsonObject
.
put
(
"orderDesc"
,
"运输"
);
//订单详情 必填
jsonObject
.
put
(
"productName"
,
"运费"
);
//商品名称 必填
jsonObject
.
put
(
"productId"
,
"001"
);
//商品编号 必填
jsonObject
.
put
(
"productNum"
,
"1"
);
//商品数量 必填
// jsonObject.put("closeDtTm", "2023-11-29 13:39:16"); //关单时间
// jsonObject.put("mobilePhone", "13000000000"); //手机号
HashMap
<
String
,
String
>
httpHeader
=
new
HashMap
<>();
RequestApiData
requestApiData
=
new
RequestApiData
();
requestApiData
.
setAppkey
(
nbBankConfig
.
getAppKey
());
requestApiData
.
setData
(
jsonObject
);
requestApiData
.
setProductId
(
"YFT"
);
requestApiData
.
setServiceId
(
"directBankTransferOrder"
);
requestApiData
.
setHttpHeader
(
httpHeader
);
RequestHead
requestHead
=
new
RequestHead
();
requestHead
.
setRqsJrnlNo
(
NBOpenSDK
.
getRandom
());
SDKRequest
request
=
new
SDKRequest
();
request
.
setData
(
requestApiData
);
request
.
setHead
(
requestHead
);
log
.
info
(
"宁波银行, 下单(directBankTransferOrder), 参数: {}"
,
JSON
.
toJSONString
(
request
));
SDKResponse
response
=
NBOpenSDK
.
send
(
request
);
log
.
info
(
"宁波银行, 下单(directBankTransferOrder), 结果: {}"
,
JSON
.
toJSONString
(
response
));
recordSave
(
NbBankRecordEnum
.
Type
.
DIRECT_BANK_TRANSFER_ORDER
.
getCode
(),
request
,
response
);
JSONObject
responseJson
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
response
));
JSONObject
data
=
responseJson
.
getJSONObject
(
"data"
);
if
(!
StringUtils
.
equals
(
data
.
getString
(
"errorCode"
),
"000000"
)){
log
.
info
(
"宁波银行, 下单失败(directBankTransferOrder), code:{}, msg:{}"
,
data
.
getString
(
"errorCode"
),
data
.
getString
(
"errorMsg"
));
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
NB_BANK_API_ERROR
);
}
return
data
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
NB_BANK_API_ERROR
);
}
/**
* 订单支付收款模式
* 易付通接口编程-含订单支付
* 5.13银联订单支付收款模式
* 商户号:EFT33021200556315
* 银行转账:86041110000075918(户名:客户客户)
* 订单支付:结算账号(86041110000075926(户名:客户客户))
* 86041110000076809:黑玫瑰
* 响应结果:
* {
* "data": {
* "errorCode": "000000",
* "errorMsg": "成功",
* "frontUrl": "",
* "merId": "EFT33021200556315",
* "merSeqNo": "20231129133913",
* "signData": "",
* "transSeqNo": "2023112913391406547689VYvNioNz"
* },
* "head": {
* "rqsJrnlNo": "14414965925389704",
* "rspCode": "000000",
* "rspDate": "2023-11-29",
* "rspMsg": "交易成功",
* "rspTime": "13:39:16:035"
* }
* }
*
* @Param
* merSeqNo: 商户流水
* merId: 商户号
* amount: 订单金额(分)
* payAcctOpenBankId: 开户行号
* payAcctNo: 付款账号
* payAcctNm: 付款户名
*/
@Override
public
JSONObject
unionPayDirectOrder
(
String
merSeqNo
,
String
merId
,
Integer
amount
,
String
payAcctOpenBankId
,
String
payAcctNo
,
String
payAcctNm
)
{
try
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"transId"
,
"IP01"
);
//交易识别码 必填
jsonObject
.
put
(
"merId"
,
merId
);
//商户号 必填
jsonObject
.
put
(
"merSeqNo"
,
merSeqNo
);
//商户流水 必填
jsonObject
.
put
(
"merDtTm"
,
LocalDateTimeUtils
.
formatTime
());
//商户时间 必填
jsonObject
.
put
(
"trxAmt"
,
new
BigDecimal
(
amount
).
movePointLeft
(
2
));
//订单金额 必填
jsonObject
.
put
(
"orderDesc"
,
"运输"
);
//订单详情 必填
jsonObject
.
put
(
"productName"
,
"运费"
);
//商品名称 必填
jsonObject
.
put
(
"productId"
,
"001"
);
//商品编号 必填
jsonObject
.
put
(
"productNum"
,
"1"
);
//商品数量 必填
jsonObject
.
put
(
"bankType"
,
"00"
);
//账户类型 必填
jsonObject
.
put
(
"payAcctOpenBankId"
,
payAcctOpenBankId
);
//开户行号 必填
jsonObject
.
put
(
"payAcctNo"
,
payAcctNo
);
//付款账号 必填
jsonObject
.
put
(
"payAcctNm"
,
payAcctNm
);
//付款户名 必填
// jsonObject.put("mobilePhone", "13000000000"); //手机号
HashMap
<
String
,
String
>
httpHeader
=
new
HashMap
<>();
RequestApiData
requestApiData
=
new
RequestApiData
();
requestApiData
.
setAppkey
(
nbBankConfig
.
getAppKey
());
requestApiData
.
setData
(
jsonObject
);
requestApiData
.
setProductId
(
"YFT"
);
requestApiData
.
setServiceId
(
"unionPayDirectOrder"
);
requestApiData
.
setHttpHeader
(
httpHeader
);
RequestHead
requestHead
=
new
RequestHead
();
requestHead
.
setRqsJrnlNo
(
NBOpenSDK
.
getRandom
());
SDKRequest
request
=
new
SDKRequest
();
request
.
setData
(
requestApiData
);
request
.
setHead
(
requestHead
);
log
.
info
(
"宁波银行, 下单(unionPayDirectOrder), 参数: {}"
,
JSON
.
toJSONString
(
request
));
SDKResponse
response
=
NBOpenSDK
.
send
(
request
);
log
.
info
(
"宁波银行, 下单(unionPayDirectOrder), 结果: {}"
,
JSON
.
toJSONString
(
response
));
recordSave
(
NbBankRecordEnum
.
Type
.
UNION_PAY_DIRECT_ORDER
.
getCode
(),
request
,
response
);
JSONObject
responseJson
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
response
));
JSONObject
data
=
responseJson
.
getJSONObject
(
"data"
);
if
(!
StringUtils
.
equals
(
data
.
getString
(
"errorCode"
),
"000000"
)){
log
.
info
(
"宁波银行, 下单失败(unionPayDirectOrder), code:{}, msg:{}"
,
data
.
getString
(
"errorCode"
),
data
.
getString
(
"errorMsg"
));
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
NB_BANK_API_ERROR
);
}
return
data
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
NB_BANK_API_ERROR
);
}
/**
* 结果查询
* 6.1交易结果查询
* 商户号:EFT33021200556315
* 返回结果: 90:交易不存在
* {
* "data": {
* "chargesAmt": "",
* "chargesType": "",
* "clearDate": "",
* "errorCode": "000000",
* "errorMsg": "成功",
* "merId": "EFT33021200556315",
* "merSeqNo": "20231129135754",
* "payeeAcctBankName": "",
* "payeeAcctBankNo": "",
* "payeeAcctName": "",
* "payeeAcctNo": "",
* "payMethod": "",
* "pyerInfList": [
* {
* "customerId": "",
* "pyerAcctBankName": "",
* "pyerAcctName": "",
* "pyerAcctNo": "",
* "signNo": "",
* "transAmt": "",
* "transDtTm": ""
* }
* ],
* "realTrxAmt": "",
* "transSeqNo": "",
* "transStatus": "90",
* "trxAmt": ""
* },
* "head": {
* "rqsJrnlNo": "15541586367762936",
* "rspCode": "000000",
* "rspDate": "2023-11-29",
* "rspMsg": "交易成功",
* "rspTime": "13:57:54:343"
* }
* }
* 返回结果: 02:交易已受理
* {
* "data": {
* "chargesAmt": "",
* "chargesType": "",
* "clearDate": "20231129",
* "errorCode": "000000",
* "errorMsg": "成功",
* "merId": "EFT33021200556315",
* "merSeqNo": "20231129142845",
* "payeeAcctBankName": "宁波银行股份有限公司",
* "payeeAcctBankNo": "313332082914",
* "payeeAcctName": "客户客户",
* "payeeAcctNo": "860411100000759182976409",
* "payMethod": "4",
* "pyerInfList": [
* {
* "customerId": "",
* "pyerAcctBankName": "",
* "pyerAcctName": "",
* "pyerAcctNo": "",
* "signNo": "",
* "transAmt": "",
* "transDtTm": ""
* }
* ],
* "realTrxAmt": "0",
* "transSeqNo": "20231129142846065496766yDTQtg2",
* "transStatus": "02",
* "trxAmt": "1.23"
* },
* "head": {
* "rqsJrnlNo": "15543431902274569",
* "rspCode": "000000",
* "rspDate": "2023-11-29",
* "rspMsg": "交易成功",
* "rspTime": "14:28:51:431"
* }
* }
*
* transStatus:
* 00:交易成功
* 01:交易失败
* 02:交易已受理
* 80:订单初始状态
* 90:交易不存在
* 99:交易超时,须发起交易结果查询
*/
@Override
public
JSONObject
queryOrder
(
String
merSeqNo
)
{
try
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"transId"
,
"IP01"
);
//交易识别码 必填
jsonObject
.
put
(
"merId"
,
"EFT33021200556315"
);
//商户号 必填
jsonObject
.
put
(
"merSeqNo"
,
merSeqNo
);
//商户流水 必填
HashMap
<
String
,
String
>
httpHeader
=
new
HashMap
<>();
RequestApiData
requestApiData
=
new
RequestApiData
();
requestApiData
.
setAppkey
(
nbBankConfig
.
getAppKey
());
requestApiData
.
setData
(
jsonObject
);
requestApiData
.
setProductId
(
"YFT"
);
requestApiData
.
setServiceId
(
"queryOrder"
);
requestApiData
.
setHttpHeader
(
httpHeader
);
RequestHead
requestHead
=
new
RequestHead
();
requestHead
.
setRqsJrnlNo
(
NBOpenSDK
.
getRandom
());
SDKRequest
request
=
new
SDKRequest
();
request
.
setData
(
requestApiData
);
request
.
setHead
(
requestHead
);
log
.
info
(
"宁波银行, 查询交易结果(queryOrder), 参数: {}"
,
JSON
.
toJSONString
(
request
));
SDKResponse
response
=
NBOpenSDK
.
send
(
request
);
log
.
info
(
"宁波银行, 查询交易结果(queryOrder), 结果: {}"
,
JSON
.
toJSONString
(
response
));
recordSave
(
NbBankRecordEnum
.
Type
.
QUERY_ORDER
.
getCode
(),
request
,
response
);
JSONObject
responseJson
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
response
));
JSONObject
data
=
responseJson
.
getJSONObject
(
"data"
);
if
(!
StringUtils
.
equals
(
data
.
getString
(
"errorCode"
),
"000000"
)){
log
.
info
(
"宁波银行, 下单失败(queryOrder), code:{}, msg:{}"
,
data
.
getString
(
"errorCode"
),
data
.
getString
(
"errorMsg"
));
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
NB_BANK_API_ERROR
);
}
return
data
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
NB_BANK_API_ERROR
);
}
@Override
public
void
recordSave
(
Integer
type
,
SDKRequest
request
,
SDKResponse
response
)
{
if
(
Objects
.
equals
(
type
,
NbBankRecordEnum
.
Type
.
DIRECT_BANK_TRANSFER_ORDER
.
getCode
()))
{
RequestApiData
requestData
=
(
RequestApiData
)
(
request
.
getData
());
JSONObject
requestDataJson
=
(
JSONObject
)
(
requestData
.
getData
());
JSONObject
responseJson
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
response
));
JSONObject
responseDataJson
=
responseJson
.
getJSONObject
(
"data"
);
recordSave
(
type
,
requestDataJson
.
getString
(
"merId"
)
,
requestDataJson
.
getString
(
"merSeqNo"
)
,
responseDataJson
.
getString
(
"transSeqNo"
)
,
requestDataJson
.
getBigDecimal
(
"trxAmt"
).
movePointRight
(
2
).
intValue
()
,
JSON
.
toJSONString
(
request
)
,
JSON
.
toJSONString
(
response
)
,
responseDataJson
.
getString
(
"errorCode"
)
,
responseDataJson
.
getString
(
"errorMsg"
)
,
null
);
}
else
if
(
Objects
.
equals
(
type
,
NbBankRecordEnum
.
Type
.
UNION_PAY_DIRECT_ORDER
.
getCode
()))
{
RequestApiData
requestData
=
(
RequestApiData
)
(
request
.
getData
());
JSONObject
requestDataJson
=
(
JSONObject
)
(
requestData
.
getData
());
JSONObject
responseJson
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
response
));
JSONObject
responseDataJson
=
responseJson
.
getJSONObject
(
"data"
);
recordSave
(
type
,
requestDataJson
.
getString
(
"merId"
)
,
requestDataJson
.
getString
(
"merSeqNo"
)
,
responseDataJson
.
getString
(
"transSeqNo"
)
,
requestDataJson
.
getBigDecimal
(
"trxAmt"
).
movePointRight
(
2
).
intValue
()
,
JSON
.
toJSONString
(
request
)
,
JSON
.
toJSONString
(
response
)
,
responseDataJson
.
getString
(
"errorCode"
)
,
responseDataJson
.
getString
(
"errorMsg"
)
,
null
);
}
else
if
(
Objects
.
equals
(
type
,
NbBankRecordEnum
.
Type
.
QUERY_ORDER
.
getCode
()))
{
JSONObject
responseJson
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
response
));
JSONObject
responseDataJson
=
responseJson
.
getJSONObject
(
"data"
);
recordSave
(
type
,
responseDataJson
.
getString
(
"merId"
)
,
responseDataJson
.
getString
(
"merSeqNo"
)
,
responseDataJson
.
getString
(
"transSeqNo"
)
,
responseDataJson
.
getBigDecimal
(
"trxAmt"
).
movePointRight
(
2
).
intValue
()
,
JSON
.
toJSONString
(
request
)
,
JSON
.
toJSONString
(
response
)
,
null
,
null
,
responseDataJson
.
getString
(
"transStatus"
)
);
}
else
if
(
Objects
.
equals
(
type
,
NbBankRecordEnum
.
Type
.
NOTIFY_MERCHANT
.
getCode
()))
{
JSONObject
responseJson
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
response
));
JSONObject
responseDataJson
=
responseJson
.
getJSONObject
(
"data"
);
recordSave
(
type
,
responseDataJson
.
getString
(
"merId"
)
,
responseDataJson
.
getString
(
"merSeqNo"
)
,
responseDataJson
.
getString
(
"transSeqNo"
)
,
responseDataJson
.
getBigDecimal
(
"trxAmt"
).
movePointRight
(
2
).
intValue
()
,
JSON
.
toJSONString
(
request
)
,
JSON
.
toJSONString
(
response
)
,
null
,
null
,
responseDataJson
.
getString
(
"transStatus"
)
);
}
}
@Transactional
(
propagation
=
Propagation
.
REQUIRES_NEW
)
public
void
recordSave
(
Integer
type
,
String
merId
,
String
merSeqNo
,
String
transSeqNo
,
Integer
amount
,
String
param
,
String
result
,
String
errorCode
,
String
errorMsg
,
String
transStatus
){
NbBankRecord
record
=
new
NbBankRecord
();
record
.
setType
(
type
);
record
.
setMerId
(
merId
);
record
.
setMerSeqNo
(
merSeqNo
);
record
.
setTransSeqNo
(
transSeqNo
);
record
.
setAmount
(
amount
);
record
.
setParam
(
param
);
record
.
setResult
(
result
);
record
.
setErrorCode
(
errorCode
);
record
.
setErrorMsg
(
errorMsg
);
record
.
setTransStatus
(
transStatus
);
nbBankRecordDao
.
saveEntity
(
record
);
}
}
performance-web/src/main/java/com/clx/performance/service/thirdparty/nbbank/NbBankNotifyService.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
service
.
thirdparty
.
nbbank
;
public
interface
NbBankNotifyService
{
void
payNotify
(
String
data
);
}
performance-web/src/main/java/com/clx/performance/service/thirdparty/nbbank/NbBankService.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
service
.
thirdparty
.
nbbank
;
import
com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO
;
import
com.clx.performance.vo.pc.nbbank.NbBankOrderPayStatusResultVO
;
import
java.math.BigDecimal
;
public
interface
NbBankService
{
NbBankOrderPayResultVO
orderPay
(
Integer
payType
);
NbBankOrderPayStatusResultVO
getOrderStatus
(
String
merSeqNo
);
void
orderPayCallback
(
String
merSeqNo
,
String
transSeqNo
,
BigDecimal
trxAmt
,
BigDecimal
realTrxAmt
,
String
transStatus
,
String
signNo
);
}
performance-web/src/main/java/com/clx/performance/service/thirdparty/nbbank/NbBankThirdpartyService.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
service
.
thirdparty
.
nbbank
;
import
com.alibaba.fastjson.JSONObject
;
import
com.nbopen.api.SDKRequest
;
import
com.nbopen.api.SDKResponse
;
public
interface
NbBankThirdpartyService
{
JSONObject
directBankTransferOrder
(
String
merSeqNo
,
String
merId
,
Integer
amount
);
JSONObject
unionPayDirectOrder
(
String
merSeqNo
,
String
merId
,
Integer
amount
,
String
payAcctOpenBankId
,
String
payAcctNo
,
String
payAcctNm
);
JSONObject
queryOrder
(
String
merSeqNo
);
void
recordSave
(
Integer
type
,
SDKRequest
request
,
SDKResponse
response
);
}
performance-web/src/main/java/com/clx/performance/sqlProvider/borrower/BorrowerConfigSqlProvider.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
sqlProvider
.
borrower
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.param.pc.borrower.PageBorrowerConfigParam
;
import
com.clx.performance.vo.pc.borrower.BorrowerConfigVO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.jdbc.SQL
;
import
java.util.Objects
;
public
class
BorrowerConfigSqlProvider
{
public
String
pageByParam
(
@Param
(
"page"
)
Page
<
BorrowerConfigVO
>
page
,
@Param
(
"param"
)
PageBorrowerConfigParam
param
)
{
return
new
SQL
(){{
SELECT
(
" id, borrower_id as borrowerId, borrower_name as borrowerName, "
+
" type, day, "
+
" delete_status as deleteStatus, status, "
+
" op_user_no as opUserNo, op_user_name as opUserName, date_format(op_time, '%Y-%m-%d %H:%i:%s') as opTime, "
+
" date_format(create_time, '%Y-%m-%d %H:%i:%s') as createTime, "
+
" date_format(modified_time, '%Y-%m-%d %H:%i:%s') as modifiedTime "
);
FROM
(
"borrower_config"
);
WHERE
(
"delete_status = 0"
);
if
(
StringUtils
.
isNotBlank
(
param
.
getBorrowerName
()))
{
WHERE
(
"borrower_name = #{param.borrowerName}"
);}
if
(
Objects
.
nonNull
(
param
.
getStatus
()))
{
WHERE
(
"status = #{param.status}"
);}
ORDER_BY
(
"create_time desc"
);
}}.
toString
();
}
}
performance-web/src/main/java/com/clx/performance/sqlProvider/borrower/BorrowerSqlProvider.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
sqlProvider
.
borrower
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.param.pc.borrower.PageBorrowerParam
;
import
com.clx.performance.vo.pc.borrower.BorrowerVO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.jdbc.SQL
;
public
class
BorrowerSqlProvider
{
public
String
pageByParam
(
@Param
(
"page"
)
Page
<
BorrowerVO
>
page
,
@Param
(
"param"
)
PageBorrowerParam
param
)
{
return
new
SQL
(){{
SELECT
(
" id, name, bank_name as bankName, bank_card_no as bankCardNo, "
+
" delete_status, status, "
+
" op_user_no as opUserNo, op_user_name as opUserName, date_format(op_time, '%Y-%m-%d %H:%i:%s') as opTime, "
+
" date_format(create_time, '%Y-%m-%d %H:%i:%s') as createTime, "
+
" date_format(modified_time, '%Y-%m-%d %H:%i:%s') as modifiedTime "
);
FROM
(
"borrower"
);
WHERE
(
"delete_status = 0"
);
if
(
StringUtils
.
isNotBlank
(
param
.
getName
()))
{
WHERE
(
"name = #{param.name}"
);}
ORDER_BY
(
"create_time desc"
);
}}.
toString
();
}
}
performance-web/src/main/java/com/clx/performance/sqlProvider/settle/NetworkDriverRunningWaterRecordProvider.java
浏览文件 @
b1ffdcff
...
...
@@ -62,7 +62,11 @@ public class NetworkDriverRunningWaterRecordProvider {
}
if
(
ObjectUtil
.
isNotNull
(
param
.
getFundType
()))
{
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"
);
}}.
toString
();
return
sql
;
...
...
performance-web/src/main/java/com/clx/performance/strategy/GoodsOrderStrategy.java
浏览文件 @
b1ffdcff
...
...
@@ -11,12 +11,15 @@ import com.clx.performance.dao.OrderGoodsTruckBindDao;
import
com.clx.performance.model.OrderGoodsTruckBind
;
import
com.clx.performance.utils.SpringContextUtils
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.utils.DateUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
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.annotation.Autowired
;
import
org.springframework.core.env.Environment
;
import
java.time.LocalDateTime
;
import
java.util.*
;
...
...
@@ -25,6 +28,9 @@ import java.util.stream.Collectors;
@Slf4j
public
abstract
class
GoodsOrderStrategy
{
@Autowired
private
Environment
environment
;
/**
* 不同的用车需求执行不同的策略 1:one 2:two 3:three
...
...
@@ -43,6 +49,16 @@ public abstract class GoodsOrderStrategy {
if
(
Objects
.
equals
(
orderInfo
.
getStopFlag
(),
OrderStopEnum
.
Status
.
YES
.
getCode
()))
{
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
();
Set
<
String
>
set
=
new
HashSet
<>();
...
...
performance-web/src/main/java/com/clx/performance/struct/borrower/BorrowerConfigStruct.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
struct
.
borrower
;
import
com.clx.performance.model.borrower.BorrowerConfig
;
import
com.clx.performance.vo.pc.borrower.BorrowerConfigVO
;
import
com.msl.common.utils.DateStructUtil
;
import
com.msl.common.utils.DateUtils
;
import
org.mapstruct.Mapper
;
import
java.util.List
;
@Mapper
(
componentModel
=
"spring"
,
uses
=
DateStructUtil
.
class
,
imports
=
{
DateUtils
.
class
})
public
interface
BorrowerConfigStruct
{
BorrowerConfigVO
convert
(
BorrowerConfig
item
);
List
<
BorrowerConfigVO
>
convert
(
List
<
BorrowerConfig
>
list
);
}
performance-web/src/main/java/com/clx/performance/struct/borrower/BorrowerStruct.java
0 → 100644
浏览文件 @
b1ffdcff
package
com
.
clx
.
performance
.
struct
.
borrower
;
import
com.clx.performance.model.borrower.Borrower
;
import
com.clx.performance.vo.pc.borrower.BorrowerVO
;
import
com.msl.common.utils.DateStructUtil
;
import
com.msl.common.utils.DateUtils
;
import
org.mapstruct.Mapper
;
import
java.util.List
;
@Mapper
(
componentModel
=
"spring"
,
uses
=
DateStructUtil
.
class
,
imports
=
{
DateUtils
.
class
})
public
interface
BorrowerStruct
{
BorrowerVO
convert
(
Borrower
item
);
List
<
BorrowerVO
>
convert
(
List
<
Borrower
>
list
);
}
performance-web/src/main/resources/bank/config-nbbank.json
0 → 100644
浏览文件 @
b1ffdcff
{
"api"
:
[
{
"appKey"
:
"77667c76_3503_4c04_95f7_fc10938c7942"
,
"publicUrl"
:
"https://open-test.nbcb.com.cn/sit/nbcb/api"
,
"platfromPublicKeyPath"
:
"/app/clx-performance/nbbank/bankPubKey-test.cer"
,
"merchantPrivateKeyPath"
:
"/app/clx-performance/nbbank/77667c76_3503_4c04_95f7_fc10938c7942.sm2"
,
"merchantPrivateKeyPwd"
:
"cfca"
,
"connectTimeout"
:
10000
,
"readTimeout"
:
30000
,
"merchantName"
:
""
,
"subMerchantName"
:
""
,
"subMerchantId"
:
""
,
"isProxy"
:
false
,
"proxyIp"
:
""
,
"proxyPort"
:
80
}
],
"file"
:
[
{
"uid"
:
"TEST"
,
"publicFileUrl"
:
"https://file-test.nbcb.com.cn/sit"
,
"clientIp"
:
"127.0.0.1"
,
"passwd"
:
"nbcb123456"
,
"apiVersion"
:
"201809101526"
,
"isProxy"
:
false
,
"proxyIp"
:
""
,
"proxyPort"
:
80
}
]
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论