Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
a335f0dc
提交
a335f0dc
authored
6月 22, 2024
作者:
艾庆国
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
承运与无车承运对接
上级
669f0a58
全部展开
显示空白字符变更
内嵌
并排
正在显示
28 个修改的文件
包含
551 行增加
和
131 行删除
+551
-131
SettlementOwnerDetailEnum.java
...x/performance/enums/settle/SettlementOwnerDetailEnum.java
+16
-0
SettlementInvoiceStatusSyncMqParam.java
...performance/vo/mq/SettlementInvoiceStatusSyncMqParam.java
+22
-0
SettlementInvoiceTypeSyncMqParam.java
...x/performance/vo/mq/SettlementInvoiceTypeSyncMqParam.java
+22
-0
SettlementPayStatusSyncMqParam.java
...clx/performance/vo/mq/SettlementPayStatusSyncMqParam.java
+22
-0
SettlementStatisticsMqParam.java
...om/clx/performance/vo/mq/SettlementStatisticsMqParam.java
+2
-2
RabbitSettlementConfig.java
...va/com/clx/performance/config/RabbitSettlementConfig.java
+39
-1
RabbitKeySettlementConstants.java
...lx/performance/constant/RabbitKeySettlementConstants.java
+18
-1
TempSettlementController.java
...performance/controller/temp/TempSettlementController.java
+36
-8
SettlementOwnerDetailDaoImpl.java
...ormance/dao/impl/settle/SettlementOwnerDetailDaoImpl.java
+11
-0
SettlementOwnerDetailDao.java
.../clx/performance/dao/settle/SettlementOwnerDetailDao.java
+1
-0
EventListenerComponent.java
...ava/com/clx/performance/event/EventListenerComponent.java
+2
-7
OrderChildPaySyncTransportJob.java
...om/clx/performance/job/OrderChildPaySyncTransportJob.java
+4
-17
SettlementJob.java
...ava/com/clx/performance/job/settlement/SettlementJob.java
+50
-41
OrderChildSyncTransportListener.java
...performance/listener/OrderChildSyncTransportListener.java
+8
-8
SettlementInvoiceStatusSyncListener.java
.../listener/settle/SettlementInvoiceStatusSyncListener.java
+43
-0
SettlementInvoiceTypeSyncListener.java
...ce/listener/settle/SettlementInvoiceTypeSyncListener.java
+8
-8
SettlementPayStatusSyncListener.java
...ance/listener/settle/SettlementPayStatusSyncListener.java
+43
-0
SettlementStatisticsListener.java
...ormance/listener/settle/SettlementStatisticsListener.java
+43
-0
SettlementOwnerDetail.java
...m/clx/performance/model/settle/SettlementOwnerDetail.java
+1
-0
SettlementCommonServiceImpl.java
...ance/service/impl/settle/SettlementCommonServiceImpl.java
+71
-0
SettlementDriverDetailServiceImpl.java
...ervice/impl/settle/SettlementDriverDetailServiceImpl.java
+0
-7
SettlementMqHandlerServiceImpl.java
...e/service/impl/settle/SettlementMqHandlerServiceImpl.java
+0
-0
SettlementMqServiceImpl.java
...formance/service/impl/settle/SettlementMqServiceImpl.java
+42
-7
SettlementOwnerDetailServiceImpl.java
...service/impl/settle/SettlementOwnerDetailServiceImpl.java
+16
-15
SettlementServiceImpl.java
...erformance/service/impl/settle/SettlementServiceImpl.java
+3
-4
SettlementCommonService.java
...x/performance/service/settle/SettlementCommonService.java
+13
-0
SettlementMqHandlerService.java
...erformance/service/settle/SettlementMqHandlerService.java
+8
-4
SettlementMqService.java
...m/clx/performance/service/settle/SettlementMqService.java
+7
-1
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/settle/SettlementOwnerDetailEnum.java
浏览文件 @
a335f0dc
...
...
@@ -49,6 +49,22 @@ public enum SettlementOwnerDetailEnum {
return
getByCode
(
code
).
map
(
FinalPaymentStatus:
:
getMsg
).
orElse
(
null
);
}
}
@Getter
@AllArgsConstructor
public
enum
InvoiceChannel
{
BROKER
(
1
,
"无车承运"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
InvoiceChannel
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
Objects
.
equals
(
e
.
getCode
(),
code
)).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
InvoiceChannel:
:
getMsg
).
orElse
(
null
);
}
}
}
performance-api/src/main/java/com/clx/performance/vo/mq/SettlementInvoiceStatusSyncMqParam.java
0 → 100644
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
vo
.
mq
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqingguo
* @Description: 结算
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
SettlementInvoiceStatusSyncMqParam
{
private
String
childNo
;
//运单编号
}
performance-api/src/main/java/com/clx/performance/vo/mq/SettlementInvoiceTypeSyncMqParam.java
0 → 100644
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
vo
.
mq
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqingguo
* @Description: 结算
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
SettlementInvoiceTypeSyncMqParam
{
private
String
childNo
;
//运单编号
}
performance-api/src/main/java/com/clx/performance/vo/mq/SettlementPayStatusSyncMqParam.java
0 → 100644
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
vo
.
mq
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqingguo
* @Description: 结算
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
SettlementPayStatusSyncMqParam
{
private
String
childNo
;
//运单编号
}
performance-api/src/main/java/com/clx/performance/vo/mq/Settlement
DetailInvoiceTypeSync
MqParam.java
→
performance-api/src/main/java/com/clx/performance/vo/mq/Settlement
Statistics
MqParam.java
浏览文件 @
a335f0dc
...
...
@@ -7,7 +7,7 @@ import lombok.ToString;
/**
* @Author: aiqingguo
* @Description:
开票标识同步
* @Description:
结算统计
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
...
...
@@ -15,7 +15,7 @@ import lombok.ToString;
@Getter
@ToString
@NoArgsConstructor
public
class
Settlement
DetailInvoiceTypeSync
MqParam
{
public
class
Settlement
Statistics
MqParam
{
private
String
childNo
;
//运单编号
private
Integer
InvoiceType
;
//司机计费明细id
...
...
performance-web/src/main/java/com/clx/performance/config/RabbitSettlementConfig.java
浏览文件 @
a335f0dc
...
...
@@ -72,6 +72,20 @@ public class RabbitSettlementConfig {
public
Binding
settlementDetailInvoiceTypeSyncQueueBinding
()
{
return
BindingBuilder
.
bind
(
settlementDetailInvoiceTypeSyncQueue
()).
to
(
settlementDefaultExchange
()).
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY
);
}
/**
* 开票方式同步
*/
@Bean
public
Queue
settlementInvoiceTypeSyncQueue
()
{
return
new
Queue
(
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_TYPE_SYNC_QUEUE
);
}
@Bean
public
Binding
settlementInvoiceTypeSyncQueueBinding
()
{
return
BindingBuilder
.
bind
(
settlementInvoiceTypeSyncQueue
()).
to
(
settlementDefaultExchange
())
.
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_TYPE_SYNC_ROUTING_KEY
);
}
/**
* 结算
*/
...
...
@@ -80,10 +94,34 @@ public class RabbitSettlementConfig {
return
new
Queue
(
RabbitKeySettlementConstants
.
SETTLEMENT_SETTLE_QUEUE
);
}
@Bean
public
Binding
settlementSettleQueue
Queue
Binding
()
{
public
Binding
settlementSettleQueueBinding
()
{
return
BindingBuilder
.
bind
(
settlementSettleQueue
()).
to
(
settlementDefaultExchange
())
.
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_SETTLE_ROUTING_KEY
);
}
/**
* 支付状态
*/
@Bean
public
Queue
settlementPayStatusSyncQueue
()
{
return
new
Queue
(
RabbitKeySettlementConstants
.
SETTLEMENT_PAY_STATUS_SYNC_QUEUE
);
}
@Bean
public
Binding
settlementPayStatusSyncQueueBinding
()
{
return
BindingBuilder
.
bind
(
settlementPayStatusSyncQueue
()).
to
(
settlementDefaultExchange
())
.
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_PAY_STATUS_SYNC_ROUTING_KEY
);
}
/**
* 开票状态
*/
@Bean
public
Queue
settlementInvoiceSyncQueue
()
{
return
new
Queue
(
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_STATUS_SYNC_QUEUE
);
}
@Bean
public
Binding
settlementInvoiceSyncQueueBinding
()
{
return
BindingBuilder
.
bind
(
settlementInvoiceSyncQueue
()).
to
(
settlementDefaultExchange
())
.
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_STATUS_SYNC_ROUTING_KEY
);
}
}
performance-web/src/main/java/com/clx/performance/constant/RabbitKeySettlementConstants.java
浏览文件 @
a335f0dc
...
...
@@ -40,15 +40,32 @@ public class RabbitKeySettlementConstants {
public
static
final
String
SETTLEMENT_DETAIL_ADD_ROUTING_KEY
=
PREFIX
+
"settlementDetail.add"
+
QUEUE_ROUTING_KEY
;
/**
*
同步开票标识
*
计费统计
*/
public
static
final
String
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_QUEUE
=
PREFIX
+
"settlementDetailInvoiceType.sync"
+
QUEUE
;
public
static
final
String
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY
=
PREFIX
+
"settlementDetailInvoiceType.sync"
+
QUEUE_ROUTING_KEY
;
/**
* 同步开票标识
*/
public
static
final
String
SETTLEMENT_INVOICE_TYPE_SYNC_QUEUE
=
PREFIX
+
"settlementInvoiceType.sync"
+
QUEUE
;
public
static
final
String
SETTLEMENT_INVOICE_TYPE_SYNC_ROUTING_KEY
=
PREFIX
+
"settlementInvoiceType.sync"
+
QUEUE_ROUTING_KEY
;
/**
* 结算
*/
public
static
final
String
SETTLEMENT_SETTLE_QUEUE
=
PREFIX
+
"settlement.settle"
+
QUEUE
;
public
static
final
String
SETTLEMENT_SETTLE_ROUTING_KEY
=
PREFIX
+
"settlement.settle"
+
QUEUE_ROUTING_KEY
;
/**
* 开票状态同步
*/
public
static
final
String
SETTLEMENT_INVOICE_STATUS_SYNC_QUEUE
=
PREFIX
+
"settlementInvoiceStatus.sync"
+
QUEUE
;
public
static
final
String
SETTLEMENT_INVOICE_STATUS_SYNC_ROUTING_KEY
=
PREFIX
+
"settlementInvoiceStatus.sync"
+
QUEUE_ROUTING_KEY
;
/**
* 支付状态同步
*/
public
static
final
String
SETTLEMENT_PAY_STATUS_SYNC_QUEUE
=
PREFIX
+
"settlementPayStatus.sync"
+
QUEUE
;
public
static
final
String
SETTLEMENT_PAY_STATUS_SYNC_ROUTING_KEY
=
PREFIX
+
"settlementPayStatus.sync"
+
QUEUE_ROUTING_KEY
;
}
performance-web/src/main/java/com/clx/performance/controller/temp/TempSettlementController.java
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
controller
.
temp
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.listener.OrderChildSyncTransportListener
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -21,23 +21,51 @@ import org.springframework.web.bind.annotation.RestController;
*/
@Slf4j
@RestController
@RequestMapping
(
value
=
"/temp/
broker
"
)
@RequestMapping
(
value
=
"/temp/
settlement
"
)
public
class
TempSettlementController
{
@Autowired
private
OrderChildDao
orderChildDao
;
@Autowired
private
SettlementMqService
settlementMqService
;
@Autowired
private
OrderChildSyncTransportListener
orderChildSyncTransportListener
;
@ApiOperation
(
value
=
"test"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/test"
,
method
=
RequestMethod
.
GET
)
public
Result
test
(
String
childNo
)
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
@ApiOperation
(
value
=
"运单同步broker"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/orderChildSync"
,
method
=
RequestMethod
.
GET
)
public
Result
orderChildSync
(
String
childNo
)
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
get
();
// 同步broker
orderChildSyncTransportListener
.
transportOrderChildProcess
(
orderChild
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"开票类型同步"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/invoiceTypeSync"
,
method
=
RequestMethod
.
GET
)
public
Result
invoiceTypeSync
(
String
childNo
)
{
settlementMqService
.
invoiceTypeSync
(
childNo
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"开票状态同步"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/invoiceStatusSync"
,
method
=
RequestMethod
.
GET
)
public
Result
invoiceStatusSync
(
String
childNo
)
{
settlementMqService
.
invoiceStatusSync
(
childNo
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"支付状态同步"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/payStatusSync"
,
method
=
RequestMethod
.
GET
)
public
Result
payStatusSync
(
String
childNo
)
{
settlementMqService
.
payStatusSync
(
childNo
);
return
Result
.
ok
();
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementOwnerDetailDaoImpl.java
浏览文件 @
a335f0dc
...
...
@@ -15,6 +15,7 @@ import com.msl.common.dao.impl.BaseDaoImpl;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Repository
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -161,4 +162,14 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
);
}
@Override
public
List
<
SettlementOwnerDetail
>
listInvoiceStatusSync
()
{
return
list
(
lUdWrapper
()
.
gt
(
SettlementOwnerDetail:
:
getCreateTime
,
LocalDateTime
.
now
().
minusMonths
(
3
))
.
eq
(
SettlementOwnerDetail:
:
getInvoiceChannel
,
SettlementOwnerDetailEnum
.
InvoiceChannel
.
BROKER
.
getCode
())
.
eq
(
SettlementOwnerDetail:
:
getInvoiceStatus
,
SettlementOwnerDetailEnum
.
InvoiceStatus
.
NO
.
getCode
())
.
eq
(
SettlementOwnerDetail:
:
getInvoiceType
,
SettlementOwnerEnum
.
InvoiceType
.
ONLINE
.
getCode
())
);
}
}
performance-web/src/main/java/com/clx/performance/dao/settle/SettlementOwnerDetailDao.java
浏览文件 @
a335f0dc
...
...
@@ -48,4 +48,5 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM
void
updateSettlementMerge
(
String
settlementNo
,
List
<
String
>
settlementNos
);
List
<
SettlementOwnerDetail
>
listInvoiceStatusSync
();
}
performance-web/src/main/java/com/clx/performance/event/EventListenerComponent.java
浏览文件 @
a335f0dc
...
...
@@ -8,21 +8,17 @@ import com.clx.performance.constant.RabbitKeyConstants;
import
com.clx.performance.constant.RedissonConstants
;
import
com.clx.performance.dao.loan.OrderChildLoanRetryRecordDao
;
import
com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao
;
import
com.clx.performance.dao.loan.OwnerLoanRecordDao
;
import
com.clx.performance.dao.loan.OwnerRepaymentDao
;
import
com.clx.performance.dao.settle.SettlementDriverDao
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
import
com.clx.performance.dao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.dto.LoanBalanceDTO
;
import
com.clx.performance.dto.OwnerLoanMqDTO
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.loan.OwnerLoanAccountRunningWaterRecordEnum
;
import
com.clx.performance.enums.loan.OwnerLoanRecordEnum
;
import
com.clx.performance.enums.loan.OwnerRePaymentEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.loan.OrderChildLoanRetryRecord
;
import
com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord
;
import
com.clx.performance.model.loan.OwnerLoanRecord
;
import
com.clx.performance.model.loan.OwnerRepayment
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
...
...
@@ -43,7 +39,6 @@ import org.springframework.stereotype.Component;
import
org.springframework.transaction.event.TransactionPhase
;
import
org.springframework.transaction.event.TransactionalEventListener
;
import
java.math.BigDecimal
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -144,8 +139,8 @@ public class EventListenerComponent {
settlementOwnerDetailDao
.
updateInvoiceType
(
settlementOwnerDetail
);
settlementDriverDetailDao
.
updateInvoiceTypeAndPrepayFreightFlag
(
settlementDriverDetail
);
// 发送mq
通过开票标识
settlementMqService
.
invoiceTypeSync
(
settlementDriverDetail
.
getChildNo
(),
settlementDriverDetail
.
getInvoiceType
());
// 发送mq
结算统计
settlementMqService
.
settlementStatistics
(
settlementDriverDetail
.
getChildNo
(),
settlementDriverDetail
.
getInvoiceType
());
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
GET_LOAN_RECORD
,
e
.
getMessage
());
}
finally
{
...
...
performance-web/src/main/java/com/clx/performance/job/OrderChildPaySyncTransportJob.java
浏览文件 @
a335f0dc
...
...
@@ -6,27 +6,17 @@ import com.clx.performance.component.ThirdComponent;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
import
com.clx.performance.dto.OrderChildSyncDTO
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.settle.SettlementDriverEnum
;
import
com.clx.performance.enums.settle.SettlementOwnerEnum
;
import
com.clx.performance.extranal.user.OwnerInfoService
;
import
com.clx.performance.feign.TransportFeignService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.settle.OrderChildSyncTransportRecord
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwner
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.param.feign.transport.OrderChildPaySyncParam
;
import
com.clx.performance.service.settle.SettlementDriverDetailService
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.clx.performance.service.settle.SettlementOwnerDetailService
;
import
com.clx.performance.utils.LocalDateTimeUtils
;
import
com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam
;
import
com.clx.user.vo.feign.OwnerInfoFeignVO
;
import
com.clx.performance.vo.mq.SettlementStatisticsMqParam
;
import
com.msl.common.dto.HttpDTO
;
import
com.xxl.job.core.context.XxlJobHelper
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
...
...
@@ -34,10 +24,7 @@ import lombok.AllArgsConstructor;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
@Slf4j
...
...
@@ -64,7 +51,7 @@ public class OrderChildPaySyncTransportJob {
/**
* 同步网络货运
*/
@XxlJob
(
"orderChildPaySyncTransportJob"
)
//
@XxlJob("orderChildPaySyncTransportJob")
public
void
orderChildPaySyncTransportJob
()
{
List
<
OrderChildSyncTransportRecord
>
recordList
=
orderChildSyncTransportRecordDao
.
selectListForJob
();
if
(
CollectionUtil
.
isEmpty
(
recordList
))
{
...
...
@@ -96,9 +83,9 @@ public class OrderChildPaySyncTransportJob {
public
void
settlementDetailInvoiceTypeSyncJob
()
{
String
jobParam
=
XxlJobHelper
.
getJobParam
();
log
.
info
(
"XxlJobHelper jobParam:{}"
,
jobParam
);
Settlement
DetailInvoiceTypeSyncMqParam
mqParam
=
new
SettlementDetailInvoiceTypeSync
MqParam
();
Settlement
StatisticsMqParam
mqParam
=
new
SettlementStatistics
MqParam
();
mqParam
.
setChildNo
(
jobParam
);
settlementMqHandlerService
.
settlement
DetailInvoiceTypeSync
(
mqParam
);
settlementMqHandlerService
.
settlement
Statistics
(
mqParam
);
}
...
...
performance-web/src/main/java/com/clx/performance/job/settlement/SettlementJob.java
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
job
.
settlement
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao
;
import
com.clx.performance.enums.TransportSyncTypeEnum
;
import
com.clx.performance.enums.settle.SettlementOwnerEnum
;
import
com.clx.performance.extranal.broker.BrokerService
;
import
com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao
;
import
com.clx.performance.dao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.model.OrderChildSyncTransportInvoiceRecord
;
import
com.clx.performance.model.settle.OrderChildSyncTransportRecord
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.
clx.performance.vo.pc.broker.TransportVO
;
import
com.
msl.common.job.JobLog
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.exception.ExceptionUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.
Object
s
;
import
java.util.
stream.Collector
s
;
@Slf4j
@Service
...
...
@@ -25,12 +24,12 @@ import java.util.Objects;
public
class
SettlementJob
{
private
final
OrderChildSyncTransportInvoiceRecordDao
orderChildSyncTransportInvoiceRecordDao
;
private
final
BrokerService
brokerService
;
private
final
SettlementMqService
settlementMqService
;
private
final
SettlementOwnerDetailDao
settlementOwnerDetailDao
;
private
final
OrderChildSyncTransportRecordDao
orderChildSyncTransportRecordDao
;
/**
* 同步无车承运运单
状态
* 同步无车承运运单
开票类型
*/
@XxlJob
(
"settlementInvoiceTypeSync"
)
public
void
settlementInvoiceTypeSync
()
{
...
...
@@ -39,43 +38,53 @@ public class SettlementJob {
log
.
info
(
"待同步无车承运运单状态,size:{}"
,
recordList
.
size
());
if
(
recordList
.
isEmpty
())
{
return
;}
List
<
Integer
>
ids
=
new
LinkedList
<>();
for
(
OrderChildSyncTransportInvoiceRecord
item
:
recordList
)
{
log
.
info
(
"同步无车承运运单状态:{}"
,
JSONUtil
.
parse
(
item
));
try
{
// 获取状态
TransportVO
result
=
brokerService
.
getTransportByChildNo
(
item
.
getChildNo
());
Integer
invoiceType
;
if
(
Objects
.
equals
(
result
.
getRiskStatus
(),
1
)
||
Objects
.
equals
(
result
.
getRiskStatus
(),
2
))
{
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
();
}
else
if
(
Objects
.
equals
(
result
.
getSyncStatus
(),
2
))
{
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
();
}
else
if
(
Objects
.
equals
(
result
.
getSyncStatus
(),
0
))
{
OrderChildSyncTransportInvoiceRecord
entity
=
new
OrderChildSyncTransportInvoiceRecord
();
entity
.
setChildNo
(
item
.
getChildNo
());
entity
.
setType
(
TransportSyncTypeEnum
.
Type
.
EXCEPTION
.
getCode
());
entity
.
setRemark
(
"处理中"
);
orderChildSyncTransportInvoiceRecordDao
.
saveEntity
(
entity
);
continue
;
}
else
{
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ONLINE
.
getCode
();
settlementMqService
.
invoiceTypeSync
(
item
.
getChildNo
());
}
// 发送mq (结算)
settlementMqService
.
settle
(
item
.
getChildNo
(),
invoiceType
);
}
catch
(
Exception
e
){
OrderChildSyncTransportInvoiceRecord
entity
=
new
OrderChildSyncTransportInvoiceRecord
();
entity
.
setChildNo
(
item
.
getChildNo
());
entity
.
setType
(
TransportSyncTypeEnum
.
Type
.
EXCEPTION
.
getCode
());
entity
.
setRemark
(
"接口调用失败"
);
orderChildSyncTransportInvoiceRecordDao
.
saveEntity
(
entity
);
orderChildSyncTransportInvoiceRecordDao
.
deleteByKeys
(
recordList
.
stream
().
map
(
item
->
item
.
getId
()).
collect
(
Collectors
.
toList
()));
}
/**
* 同步无车承运运单开票状态
*/
@XxlJob
(
"settlementInvoiceStatusSync"
)
public
void
settlementInvoiceStatusSync
()
{
try
{
List
<
SettlementOwnerDetail
>
list
=
settlementOwnerDetailDao
.
listInvoiceStatusSync
();
log
.
info
(
"待同步无车承运运单开票状态, size:{}"
,
list
.
size
());
if
(
list
.
isEmpty
())
{
return
;}
for
(
SettlementOwnerDetail
item
:
list
)
{
settlementMqService
.
invoiceStatusSync
(
item
.
getChildNo
());
}
}
catch
(
Exception
e
)
{
log
.
warn
(
"同步无车承运运单开票状态失败,异常原因:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
JobLog
.
error
(
"同步无车承运运单开票状态失败,异常原因====================="
,
e
);
}
}
orderChildSyncTransportInvoiceRecordDao
.
deleteByKeys
(
ids
);
/**
* 同步无车承运运单支付状态
*/
@XxlJob
(
"settlementPayStatusSync"
)
public
void
settlementPayStatusSync
()
{
try
{
List
<
OrderChildSyncTransportRecord
>
list
=
orderChildSyncTransportRecordDao
.
selectListForJob
();
log
.
info
(
"待同步无车承运运单支付状态, size:{}"
,
list
.
size
());
if
(
list
.
isEmpty
())
{
return
;}
for
(
OrderChildSyncTransportRecord
item
:
list
)
{
settlementMqService
.
payStatusSync
(
item
.
getChildNo
());
}
}
catch
(
Exception
e
)
{
log
.
warn
(
"同步无车承运运单支付状态失败,异常原因:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
JobLog
.
error
(
"同步无车承运运单支付状态失败,异常原因====================="
,
e
);
}
}
}
performance-web/src/main/java/com/clx/performance/listener/OrderChildSyncTransportListener.java
浏览文件 @
a335f0dc
...
...
@@ -105,11 +105,11 @@ public class OrderChildSyncTransportListener {
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
// 开票服务费
settlementOwnerDetail
.
setInvoiceServiceFee
(
invoiceServiceFeeCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
// 开票金额
settlementOwnerDetail
.
setInvoiceFreight
(
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
orderGoods
.
getInvoiceServiceFeeRate
(),
settlementOwnerDetail
));
//
// 开票服务费
//
settlementOwnerDetail.setInvoiceServiceFee(invoiceServiceFeeCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
//
// 开票金额
//
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(),
//
orderGoods.getInvoiceServiceFeeRate(), settlementOwnerDetail));
// // 同步网络货运
// ThirdOrderChildBrokerParam param = transportSyncService.generateOrderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
...
...
@@ -207,6 +207,9 @@ public class OrderChildSyncTransportListener {
settlementOwnerDetail
.
setInvoicingCompanyShorterName
(
invoiceCompany
.
getCompanyShorterName
());
settlementOwnerDetail
.
setInvoicingCompanyGroupCode
(
invoiceCompany
.
getCompanyGroupCode
());
settlementOwnerDetail
.
setInvoiceServiceFeeRate
(
invoiceCompany
.
getServiceFeeRate
()==
null
?
BigDecimal
.
ZERO
:
orderGoods
.
getInvoiceServiceFeeRate
());
settlementDriverDetail
.
setInvoicingCompanyId
(
invoiceCompany
.
getId
());
settlementDriverDetail
.
setInvoicingCompanyShorterName
(
invoiceCompany
.
getCompanyShorterName
());
settlementDriverDetail
.
setInvoicingCompanyGroupCode
(
invoiceCompany
.
getCompanyGroupCode
());
...
...
@@ -214,9 +217,6 @@ public class OrderChildSyncTransportListener {
if
(
settlementDriverDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO_REQUIRE
.
getCode
());
}
// 如果开票标识为“网运单”时,开票费率取货单单所记录的开票费率
settlementOwnerDetail
.
setInvoiceServiceFeeRate
(
orderGoods
.
getInvoiceServiceFeeRate
()==
null
?
BigDecimal
.
ZERO
:
orderGoods
.
getInvoiceServiceFeeRate
());
}
settlementOwnerDetail
.
setInvoiceType
(
invoiceType
);
settlementDriverDetail
.
setInvoiceType
(
invoiceType
);
...
...
performance-web/src/main/java/com/clx/performance/listener/settle/SettlementInvoiceStatusSyncListener.java
0 → 100644
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
listener
.
settle
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.vo.mq.SettlementInvoiceStatusSyncMqParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Author: 艾庆国
* @Description: 开票标识同步 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public
class
SettlementInvoiceStatusSyncListener
{
@Autowired
private
SettlementMqHandlerService
settlementMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_STATUS_SYNC_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"结算-开票状态同步, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
SettlementInvoiceStatusSyncMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"结算-开票状态同步 失败"
,
e
);
}
}
private
void
process
(
SettlementInvoiceStatusSyncMqParam
mq
){
settlementMqHandlerService
.
invoiceStatusSync
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/listener/settle/SettlementInvoiceTypeSyncListener.java
浏览文件 @
a335f0dc
...
...
@@ -5,7 +5,7 @@ import com.alibaba.fastjson.TypeReference;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.vo.mq.Settlement
Detail
InvoiceTypeSyncMqParam
;
import
com.clx.performance.vo.mq.SettlementInvoiceTypeSyncMqParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
...
...
@@ -14,7 +14,7 @@ import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 开票
标识
同步 mq
* @Description: 开票
类型
同步 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
...
...
@@ -25,19 +25,19 @@ public class SettlementInvoiceTypeSyncListener {
@Autowired
private
SettlementMqHandlerService
settlementMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_
DETAIL_INVOICE_TYPE_SY
C_QUEUE
)
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_
INVOICE_TYPE_SYN
C_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"结算-开票
标识
同步, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
Settlement
Detail
InvoiceTypeSyncMqParam
>>(){}).
getData
());
log
.
info
(
"结算-开票
类型
同步, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
SettlementInvoiceTypeSyncMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"结算-开票
标识
同步 失败"
,
e
);
log
.
info
(
"结算-开票
类型
同步 失败"
,
e
);
}
}
private
void
process
(
Settlement
Detail
InvoiceTypeSyncMqParam
mq
){
private
void
process
(
SettlementInvoiceTypeSyncMqParam
mq
){
settlementMqHandlerService
.
settlementDetailI
nvoiceTypeSync
(
mq
);
settlementMqHandlerService
.
i
nvoiceTypeSync
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/listener/settle/SettlementPayStatusSyncListener.java
0 → 100644
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
listener
.
settle
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.vo.mq.SettlementPayStatusSyncMqParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Author: 艾庆国
* @Description: 开票标识同步 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public
class
SettlementPayStatusSyncListener
{
@Autowired
private
SettlementMqHandlerService
settlementMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_PAY_STATUS_SYNC_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"结算-支付状态同步, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
SettlementPayStatusSyncMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"结算-支付状态同步 失败"
,
e
);
}
}
private
void
process
(
SettlementPayStatusSyncMqParam
mq
){
settlementMqHandlerService
.
payStatusSync
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/listener/settle/SettlementStatisticsListener.java
0 → 100644
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
listener
.
settle
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.vo.mq.SettlementStatisticsMqParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Author: 艾庆国
* @Description: 统计 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public
class
SettlementStatisticsListener
{
@Autowired
private
SettlementMqHandlerService
settlementMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"结算-统计, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
SettlementStatisticsMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"结算-统计 失败"
,
e
);
}
}
private
void
process
(
SettlementStatisticsMqParam
mq
){
settlementMqHandlerService
.
settlementStatistics
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/model/settle/SettlementOwnerDetail.java
浏览文件 @
a335f0dc
...
...
@@ -60,6 +60,7 @@ public class SettlementOwnerDetail implements HasKey<Integer> {
private
String
invoicingCompanyShorterName
;
//开票公司简称
private
String
invoicingCompanyGroupCode
;
//开票公司统一社会信用代码
private
Integer
reportFlag
;
//是否上报 0-否;1-是
private
Integer
invoiceChannel
;
//开票渠道:1无车承运
private
Integer
status
;
//状态
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
modifiedTime
;
//修改时间
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementCommonServiceImpl.java
0 → 100644
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
service
.
impl
.
settle
;
import
com.clx.performance.enums.settle.SettlementWayEnum
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.service.settle.SettlementCommonService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.Objects
;
@Slf4j
@Service
public
class
SettlementCommonServiceImpl
implements
SettlementCommonService
{
/**
* 开票服务费金额
*/
@Override
public
BigDecimal
invoiceServiceFeeCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
return
settlementOwnerDetail
.
getFreight
().
subtract
(
settlementOwnerDetail
.
getLossFreight
())
.
divide
(
BigDecimal
.
ONE
.
subtract
(
settlementOwnerDetail
.
getInvoiceServiceFeeRate
()),
0
,
RoundingMode
.
HALF_UP
)
.
multiply
(
settlementOwnerDetail
.
getInvoiceServiceFeeRate
()).
setScale
(
0
,
RoundingMode
.
HALF_UP
);
}
/**
* 开票金额
*/
@Override
public
BigDecimal
invoiceFreightCalc
(
Integer
settlementWay
,
BigDecimal
invoiceServiceFeeRate
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
LOAD
.
getCode
()))
{
//订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
else
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
UNLOAD_LOSS
.
getCode
()))
{
if
(
invoiceServiceFeeRate
!=
null
){
//结算方式为“卸车净重(减货损)”,平台运费报价为“未税”时,开票金额=平台运费单价*实际净重-货损单价*货损吨数+开票服务费。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossPrice
())
.
add
(
settlementOwnerDetail
.
getInvoiceServiceFee
());
}
else
{
//结算方式为“卸车净重(减货损)”,平台运费报价为“含税”时 开票金额=平台运费单价*实际净重-货损单价*货损吨数
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
}
else
{
//订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
());
}
}
@Override
public
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
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
UNLOAD_LOSS
.
getCode
()))
{
//结算方式为“卸车净重(减货损)“,结算金额=开票金额-预付运费金额-借款抵扣金额。
return
settlementOwnerDetail
.
getInvoiceFreight
()
.
subtract
(
settlementOwnerDetail
.
getPrepayFreight
())
.
subtract
(
settlementOwnerDetail
.
getLoanFreight
());
}
else
{
//订单结算方式为“卸车净重”时,结算金额=实际净重*平台运费报价-预付运费
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
()).
subtract
(
settlementOwnerDetail
.
getPrepayFreight
());
}
}
}
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementDriverDetailServiceImpl.java
浏览文件 @
a335f0dc
...
...
@@ -108,13 +108,6 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
}
/**
* 开票金额
*/
private
BigDecimal
invoiceFreightCalc
(
BigDecimal
freight
,
BigDecimal
lossFreight
){
return
freight
.
subtract
(
lossFreight
);
}
/**
* 结算金额
*/
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqHandlerServiceImpl.java
浏览文件 @
a335f0dc
差异被折叠。
点击展开。
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqServiceImpl.java
浏览文件 @
a335f0dc
...
...
@@ -5,9 +5,7 @@ import com.clx.performance.common.MqDelay;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.clx.performance.vo.mq.SettlementDetailAddMqParam
;
import
com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam
;
import
com.clx.performance.vo.mq.SettlementSettleMqParam
;
import
com.clx.performance.vo.mq.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
...
...
@@ -36,13 +34,29 @@ public class SettlementMqServiceImpl implements SettlementMqService {
}
@Override
public
void
invoiceTypeSync
(
String
childNo
,
Integer
invoiceType
)
{
public
void
settlementStatistics
(
String
childNo
,
Integer
invoiceType
)
{
Settlement
DetailInvoiceTypeSyncMqParam
mq
=
new
SettlementDetailInvoiceTypeSync
MqParam
();
Settlement
StatisticsMqParam
mq
=
new
SettlementStatistics
MqParam
();
mq
.
setChildNo
(
childNo
);
mq
.
setInvoiceType
(
invoiceType
);
log
.
info
(
"运单号 {} 开票标识 {} "
,
childNo
,
invoiceType
);
MqDelay
<
MqWrapper
<
SettlementDetailInvoiceTypeSyncMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
MqDelay
<
MqWrapper
<
SettlementStatisticsMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
@Override
public
void
invoiceTypeSync
(
String
childNo
)
{
SettlementInvoiceTypeSyncMqParam
mq
=
new
SettlementInvoiceTypeSyncMqParam
();
mq
.
setChildNo
(
childNo
);
MqDelay
<
MqWrapper
<
SettlementInvoiceTypeSyncMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_TYPE_SYNC_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
...
...
@@ -54,7 +68,6 @@ public class SettlementMqServiceImpl implements SettlementMqService {
SettlementSettleMqParam
mq
=
new
SettlementSettleMqParam
();
mq
.
setChildNo
(
childNo
);
mq
.
setInvoiceType
(
invoiceType
);
log
.
info
(
"运单号 {} 开票标识 {} "
,
childNo
,
invoiceType
);
MqDelay
<
MqWrapper
<
SettlementSettleMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_SETTLE_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
...
...
@@ -62,4 +75,26 @@ public class SettlementMqServiceImpl implements SettlementMqService {
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
@Override
public
void
invoiceStatusSync
(
String
childNo
)
{
SettlementInvoiceStatusSyncMqParam
mq
=
new
SettlementInvoiceStatusSyncMqParam
();
mq
.
setChildNo
(
childNo
);
MqDelay
<
MqWrapper
<
SettlementInvoiceStatusSyncMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_STATUS_SYNC_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
@Override
public
void
payStatusSync
(
String
childNo
)
{
SettlementPayStatusSyncMqParam
mq
=
new
SettlementPayStatusSyncMqParam
();
mq
.
setChildNo
(
childNo
);
MqDelay
<
MqWrapper
<
SettlementPayStatusSyncMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_PAY_STATUS_SYNC_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementOwnerDetailServiceImpl.java
浏览文件 @
a335f0dc
...
...
@@ -14,6 +14,7 @@ import com.clx.performance.model.settle.SettlementDriverDetail;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam
;
import
com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam
;
import
com.clx.performance.service.settle.SettlementCommonService
;
import
com.clx.performance.service.settle.SettlementOwnerDetailService
;
import
com.clx.performance.struct.settle.SettlementOwnerDetailStruct
;
import
com.clx.performance.utils.excel.ExcelData
;
...
...
@@ -48,6 +49,7 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
private
final
SettlementOwnerDetailStruct
settlementOwnerDetailStruct
;
private
final
OrderChildDao
orderChildDao
;
private
final
SettlementDriverDetailDao
settlementDriverDetailDao
;
private
final
SettlementCommonService
settlementCommonService
;
@Override
...
...
@@ -87,9 +89,18 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
}
// // 开票金额
// settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderGoods.getSettlementWay(),settlementOwnerDetail));
//
// 开票服务费
settlementOwnerDetail
.
setInvoiceServiceFeeRate
(
orderGoods
.
getInvoiceServiceFeeRate
()==
null
?
BigDecimal
.
ZERO
:
orderGoods
.
getInvoiceServiceFeeRate
());
// 开票服务费
settlementOwnerDetail
.
setInvoiceServiceFee
(
settlementCommonService
.
invoiceServiceFeeCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
// 开票金额
settlementOwnerDetail
.
setInvoiceFreight
(
settlementCommonService
.
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
orderGoods
.
getInvoiceServiceFeeRate
(),
settlementOwnerDetail
));
// // 结算金额
// settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(orderGoods.getSettlementWay(),settlementOwnerDetail));
//
...
...
@@ -103,6 +114,8 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementOwnerDetail
.
setInvoicingCompanyGroupCode
(
orderChild
.
getInvoicingCompanyGroupCode
());
settlementOwnerDetail
.
setReportFlag
(
orderChild
.
getReportFlag
());
settlementOwnerDetail
.
setInvoiceChannel
(
SettlementOwnerDetailEnum
.
InvoiceChannel
.
BROKER
.
getCode
());
settlementOwnerDetailDao
.
saveEntity
(
settlementOwnerDetail
);
return
settlementOwnerDetail
.
getId
();
}
...
...
@@ -141,18 +154,6 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
}
/**
* 开票金额
*/
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/service/impl/settle/SettlementServiceImpl.java
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
service
.
impl
.
settle
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.order.enums.OrderEnum
;
import
com.clx.order.vo.pc.carrier.InvoicingCompanyVO
;
import
com.clx.performance.component.IdGenerateSnowFlake
;
import
com.clx.performance.config.SettlementConfig
;
...
...
@@ -76,7 +75,7 @@ public class SettlementServiceImpl implements SettlementService {
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateSettlementDetailInvoiceType
(
String
childNo
,
Integer
invoiceType
)
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
get
(
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
...
...
@@ -137,8 +136,8 @@ public class SettlementServiceImpl implements SettlementService {
//普通单解冻
applicationEventPublisher
.
publishEvent
(
new
OwnerLoanThawEvent
(
this
,
childNo
));
// 发送mq
通过开票标识
settlementMqService
.
invoiceTypeSync
(
childNo
,
invoiceType
);
// 发送mq
结算统计
settlementMqService
.
settlementStatistics
(
childNo
,
invoiceType
);
}
...
...
performance-web/src/main/java/com/clx/performance/service/settle/SettlementCommonService.java
0 → 100644
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
service
.
settle
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
java.math.BigDecimal
;
public
interface
SettlementCommonService
{
BigDecimal
invoiceServiceFeeCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
);
BigDecimal
invoiceFreightCalc
(
Integer
settlementWay
,
BigDecimal
invoiceServiceFeeRate
,
SettlementOwnerDetail
settlementOwnerDetail
);
BigDecimal
settlementFreightCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
);
}
performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqHandlerService.java
浏览文件 @
a335f0dc
package
com
.
clx
.
performance
.
service
.
settle
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.vo.mq.SettlementDetailAddMqParam
;
import
com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam
;
import
com.clx.performance.vo.mq.SettlementSettleMqParam
;
import
com.clx.performance.vo.mq.*
;
public
interface
SettlementMqHandlerService
{
void
settlementDetailAdd
(
SettlementDetailAddMqParam
mq
);
void
settlement
DetailInvoiceTypeSync
(
SettlementDetailInvoiceTypeSync
MqParam
mq
);
void
settlement
Statistics
(
SettlementStatistics
MqParam
mq
);
void
settle
(
SettlementSettleMqParam
mq
);
void
invoiceTypeSync
(
SettlementInvoiceTypeSyncMqParam
mq
);
void
invoiceStatusSync
(
SettlementInvoiceStatusSyncMqParam
mq
);
void
payStatusSync
(
SettlementPayStatusSyncMqParam
mq
);
void
settlementDriverNotify
(
String
childNo
,
Integer
payType
,
String
payErrorMsg
);
String
paySettlementDriver
(
SettlementDriverDetail
detail
);
...
...
performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqService.java
浏览文件 @
a335f0dc
...
...
@@ -4,7 +4,13 @@ public interface SettlementMqService {
void
settlementDetailAdd
(
Integer
settlementOwnerDetailId
,
Integer
settlementDriverDetailId
);
void
invoiceTypeSync
(
String
childNo
,
Integer
invoiceType
);
void
settlementStatistics
(
String
childNo
,
Integer
invoiceType
);
void
invoiceTypeSync
(
String
childNo
);
void
settle
(
String
childNo
,
Integer
invoiceType
);
void
invoiceStatusSync
(
String
childNo
);
void
payStatusSync
(
String
childNo
);
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论