Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-api-boot-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanbaoming
jiedao-api-boot-master
Commits
24a33a1d
Commit
24a33a1d
authored
May 25, 2024
by
liuzeheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
业绩判断
parent
393fc04c
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
161 additions
and
3 deletions
+161
-3
OrderServiceImpl.java
...dao/module/order/service/order/impl/OrderServiceImpl.java
+161
-3
No files found.
yudao-module-order/yudao-module-order-core/src/main/java/cn/iocoder/yudao/module/order/service/order/impl/OrderServiceImpl.java
View file @
24a33a1d
...
...
@@ -664,7 +664,8 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
}
// 更新所属客户经理(业务员)
if
(!
OrderStatusEnum
.
DRAFT
.
getValue
().
equals
(
order
.
getStatus
())
&&
Objects
.
nonNull
(
order
.
getCustomerId
())
&&
order
.
getCustomerId
()
>
0
)
{
addOrderCustomerService
(
order
,
customerType
);
//addOrderCustomerService(order, customerType);
addOrderCustomerServiceAndCustomer
(
createReqVO
,
order
,
customerType
);
}
}
}
...
...
@@ -937,8 +938,8 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
}
// 更新所属客户经理(业务员)
if
(
Objects
.
nonNull
(
order
.
getCustomerId
())
&&
order
.
getCustomerId
()
>
0
)
{
addOrderCustomerService
(
order
,
customerType
);
//
addOrderCustomerService(order, customerType);
addOrderCustomerServiceAndCustomer
(
createReqVO
,
order
,
customerType
);
}
}
}
...
...
@@ -1030,6 +1031,163 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
}
private
void
addOrderSalesmanCustomerService
(
OrderCreateReqVO
createReqVO
,
OrderDO
order
)
{
OrderConsigneeDO
orderConsigneeDO
=
orderConsigneeService
.
getOne
(
new
LambdaQueryWrapper
<
OrderConsigneeDO
>().
eq
(
OrderConsigneeDO:
:
getOrderId
,
order
.
getOrderId
()).
orderByDesc
(
OrderConsigneeDO:
:
getId
).
last
(
"limit 1"
));
OrderConsignorDO
orderConsignorDO
=
orderConsignorService
.
getOne
(
new
LambdaQueryWrapper
<
OrderConsignorDO
>().
eq
(
OrderConsignorDO:
:
getOrderId
,
order
.
getOrderId
()).
orderByDesc
(
OrderConsignorDO:
:
getId
).
last
(
"limit 1"
));
CustomerDO
consignorDO
=
customerService
.
getCustomer
(
orderConsignorDO
.
getCustomerId
());
CustomerDO
consigneeDO
=
customerService
.
getCustomer
(
orderConsigneeDO
.
getCustomerId
());
//收货人
if
(
Objects
.
nonNull
(
order
.
getType
())
&&
order
.
getType
().
contains
(
"2"
))
{
// 海外仓归属发货人
order
.
setCustomerId
(
orderConsignorDO
.
getCustomerId
());
order
.
setSalesmanId
(
consignorDO
.
getCustomerService
()!=
null
?
consignorDO
.
getCustomerService
():
0
)
;
}
else
{
if
(
consignorDO
!=
null
&&
!
consignorDO
.
getNoConsignee
()
&&
!
order
.
getHasConsignee
()){
//发货人档案设置控货无收货人且订单无收获人,归属发货人业绩 -- 层级2
if
(
consignorDO
!=
null
){
order
.
setCustomerId
(
orderConsignorDO
.
getCustomerId
());
order
.
setSalesmanId
(
consignorDO
.
getCustomerService
()!=
null
?
consignorDO
.
getCustomerService
():
0
);
}
}
//List<TargetOfferBackVO> offerBackVOList =targetLogMapper.getTargetOfferBackByOrerId(order.getOrderId()) ;
if
(
order
.
getDrawee
()
==
1
)
{
//发货人付款
if
(
order
.
getDrawee
()
==
1
&&
createReqVO
.
getOfferId
()!=
null
)
{
//如果是发货人付款且关联报价单,业绩归属发货人 --层级3 第一个
order
.
setCustomerId
(
orderConsignorDO
.
getCustomerId
());
order
.
setSalesmanId
(
consignorDO
.
getCustomerService
()!=
null
?
consignorDO
.
getCustomerService
():
0
);
}
else
if
(
order
.
getDrawee
()
==
1
&&
consignorDO
.
getDefaultPay
()
){
// 如果是发货人付款且档案设置默认付运费 --层级4 第一个
order
.
setCustomerId
(
orderConsignorDO
.
getCustomerId
());
order
.
setSalesmanId
(
consignorDO
.
getCustomerService
());
}
}
else
if
(
order
.
getDrawee
()
==
2
&&
createReqVO
.
getOfferId
()==
null
&&
!
consignorDO
.
getDefaultPay
())
{
//收货人付款 层级5 第一个
if
(
consigneeDO
!=
null
){
order
.
setCustomerId
(
orderConsigneeDO
.
getCustomerId
());
order
.
setSalesmanId
(
consigneeDO
.
getCustomerService
());
}
else
{
order
.
setSalesmanId
(
0L
);
}
}
else
if
(
order
.
getDrawee
()
==
3
)
{
//自定义付款
List
<
CustomDraweeVO
>
list
=
JSONObject
.
parseArray
(
order
.
getCustomDrawee
(),
CustomDraweeVO
.
class
);
if
(
CollectionUtil
.
isNotEmpty
(
list
)){
List
<
CustomDraweeVO
>
freightList
=
list
.
stream
().
filter
(
s
->
s
.
getName
().
equals
(
"freight"
)
).
collect
(
Collectors
.
toList
());
List
<
CustomDraweeVO
>
clearanceFeeList
=
list
.
stream
().
filter
(
s
->
s
.
getName
().
equals
(
"clearanceFee"
)
).
collect
(
Collectors
.
toList
());
int
freight
=
freightList
.
get
(
0
).
getValue
()
;
//运费
int
clearanceFee
=
clearanceFeeList
.
get
(
0
).
getValue
();
//清关费
if
(
createReqVO
.
getOfferId
()!=
null
&&
(
order
.
getDrawee
()==
3
&&
freight
==
1
)){
//层级3 第二个 订单关联报价单 && 自定义付款 且发货人付运费
order
.
setCustomerId
(
orderConsignorDO
.
getCustomerId
());
order
.
setSalesmanId
(
consignorDO
.
getCustomerService
());
}
else
if
(
createReqVO
.
getOfferId
()!=
null
&&
(
order
.
getDrawee
()==
3
&&
clearanceFee
==
1
)){
//层级3 第三个 订单关联报价单 && 自定义付款 且发货人付清关费
order
.
setCustomerId
(
orderConsignorDO
.
getCustomerId
());
order
.
setSalesmanId
(
consignorDO
.
getCustomerService
());
}
else
if
(
consignorDO
.
getDefaultPay
()
&&
(
order
.
getDrawee
()==
3
&&
freight
==
1
)){
//层级4 第二个 发货人档案设置默认付运费 且发货人付运费 业绩归属 发货人
order
.
setCustomerId
(
orderConsignorDO
.
getCustomerId
());
order
.
setSalesmanId
(
consignorDO
.
getCustomerService
());
}
else
if
(
consignorDO
.
getDefaultPay
()
&&
(
order
.
getDrawee
()==
3
&&
clearanceFee
==
1
)){
// 层级4 第三个 发货人档案设置默认付运费 且发货人付清关费 业绩归属发货人
order
.
setCustomerId
(
orderConsignorDO
.
getCustomerId
());
order
.
setSalesmanId
(
consignorDO
.
getCustomerService
());
}
else
if
(!
consignorDO
.
getDefaultPay
()
&&
(
order
.
getDrawee
()==
3
&&
freight
==
2
)
||
(
order
.
getDrawee
()==
3
&&
clearanceFee
==
2
)){
//层级5 第二、第三点 自定义付款且收款人付运费 或自定义付款且收款人付清关费 ,业绩归属收货人
order
.
setCustomerId
(
orderConsigneeDO
.
getCustomerId
());
if
(
consigneeDO
!=
null
){
order
.
setCustomerId
(
orderConsigneeDO
.
getCustomerId
());
order
.
setSalesmanId
(
consigneeDO
.
getCustomerService
());
}
else
{
order
.
setSalesmanId
(
0L
);
}
}
}
}
else
{
//业绩归属公司
order
.
setSalesmanId
(
0L
);
}
}
}
private
void
addOrderCustomerServiceAndCustomer
(
OrderCreateReqVO
createReqVO
,
OrderDO
order
,
int
customerType
)
{
if
(
Objects
.
nonNull
(
order
.
getParentOrderId
())
&&
order
.
getParentOrderId
()
>
0
&&
!
order
.
getSplitSeparateOrder
())
{
// 拆单子订单,并且未标记为独立订单,则不执行客户经理分配规则,以原单为主
return
;
}
// 判断该订单、该客户是否有未分配客户异常,如果有,则这个订单不计算业绩
List
<
OrderExceptionDO
>
orderExceptionDOList
=
orderExceptionService
.
getOrderExceptionByCustomerId
(
order
.
getCustomerId
());
// 获取当前订单的异常
OrderExceptionDO
currentOrderException
=
orderExceptionDOList
.
stream
()
.
filter
(
orderExceptionDO
->
Objects
.
equals
(
orderExceptionDO
.
getOrderId
(),
order
.
getOrderId
())).
findFirst
().
orElse
(
null
);
CustomerDO
customerDO
=
customerService
.
getById
(
order
.
getCustomerId
());
Long
oldCustomerService
=
null
;
// 老客户经理默认为null
if
(
Objects
.
nonNull
(
customerDO
)
&&
Objects
.
nonNull
(
customerDO
.
getCustomerService
())
&&
customerDO
.
getCustomerService
()
!=
0L
&&
Objects
.
nonNull
(
customerDO
.
getCustomerServiceAssignedTime
())
&&
!
customerDO
.
getIsCustomerServiceConfirmed
()
&&
!
customerDO
.
getIsInOpenSea
())
{
// 如果客户存在,客户经理已分配,有分配时间,但是待确认接收,也不是公海捞取,那么需要判断该客户之前是否有客户经理,没有则业绩属于公司客户,有则业绩归属于上个客户经理
CustomerOperateLogDO
customerOperateLogDO
=
customerOperateLogService
.
getOne
(
new
LambdaQueryWrapper
<
CustomerOperateLogDO
>()
.
eq
(
CustomerOperateLogDO:
:
getCustomerId
,
customerDO
.
getId
())
.
eq
(
CustomerOperateLogDO:
:
getOperateType
,
4
)
// TODO 暂定操作类型4为分配操作,有遗漏后面补充操作类型即可
.
orderByDesc
(
CustomerOperateLogDO:
:
getId
).
last
(
"limit 1"
));
if
(
Objects
.
nonNull
(
customerOperateLogDO
)
&&
Objects
.
nonNull
(
customerOperateLogDO
.
getOldCustomerService
())
&&
customerOperateLogDO
.
getOldCustomerService
()
!=
0L
)
{
oldCustomerService
=
customerOperateLogDO
.
getOldCustomerService
();
}
}
// 没有该订单,该客户的未分配客户经理异常
if
(
Objects
.
isNull
(
currentOrderException
)
&&
Objects
.
nonNull
(
customerDO
)
&&
Objects
.
nonNull
(
customerDO
.
getCustomerService
())
&&
customerDO
.
getCustomerService
()
!=
0L
&&
(
customerDO
.
getIsCustomerServiceConfirmed
()
||
(!
customerDO
.
getIsCustomerServiceConfirmed
()
&&
Objects
.
nonNull
(
oldCustomerService
))))
{
if
(
Objects
.
nonNull
(
oldCustomerService
))
{
// 如果这里的旧客户经理id不为null,说明此客户属于移交新客户经理,但是新客户经理还未接收,业绩算老客户经理的
order
.
setSalesmanId
(
oldCustomerService
);
}
else
{
//order.setSalesmanId(customerDO.getCustomerService());
addOrderSalesmanCustomerService
(
createReqVO
,
order
);
}
AdminUserRespDTO
adminUserRespDTO
=
adminUserApi
.
getUser
(
order
.
getSalesmanId
());
if
(
Objects
.
nonNull
(
adminUserRespDTO
))
{
order
.
setDeptId
(
adminUserRespDTO
.
getDeptId
());
}
}
else
if
(
CollectionUtil
.
isEmpty
(
orderExceptionDOList
)
&&
Objects
.
nonNull
(
customerDO
)
&&
(
Objects
.
isNull
(
customerDO
.
getCustomerService
())
||
(!
customerDO
.
getIsCustomerServiceConfirmed
()
&&
Objects
.
isNull
(
oldCustomerService
))))
{
// 如果客户正在移交新客户经理,但是未接收,并且老客户经理不为null,则不创建客户经理未分配异常
//web下单,业绩为收货人,不产生未分配客户经理异常
if
(
order
.
getUserId
()
!=
null
&&
order
.
getUserId
()
>
0
&&
customerType
==
2
)
{
//order.setSalesmanId(0L);
addOrderSalesmanCustomerService
(
createReqVO
,
order
);
order
.
setDeptId
(
0L
);
log
.
info
(
"web下单,业绩为收货人,不产生未分配客户经理异常 orderNo={}"
,
order
.
getOrderNo
());
}
else
{
// 只有客户的客户经理为空时
String
descZh
=
"归属客户:%s 客户编号:%s"
;
String
descEn
=
"Customer: %s Customer No.: %s"
;
// 该客户没有客户经理, 需要生成异常,判断当前客户是发货人还是收货人
if
(
customerType
==
1
)
{
// 发货人
descZh
=
String
.
format
(
descZh
,
"发货人"
,
customerDO
.
getNumber
());
descEn
=
String
.
format
(
descEn
,
"consignor"
,
customerDO
.
getNumber
());
}
else
{
// 收货人
descZh
=
String
.
format
(
descZh
,
"收货人"
,
customerDO
.
getNumber
());
descEn
=
String
.
format
(
descEn
,
"consignee"
,
customerDO
.
getNumber
());
}
OrderExceptionCreateReqVO
orderExceptionCreateReqVO
=
this
.
genOrderException
(
order
.
getOrderId
(),
order
,
null
,
order
.
getCustomerId
(),
OrderExceptionEnum
.
NOT_CUSTOMER_SERVICE_EXCEPTION
,
descZh
,
descEn
);
orderExceptionService
.
createOrderException
(
orderExceptionCreateReqVO
);
}
}
else
{
// 该订单存在该客户未分配客户经理异常,或者该客户的客户经理待接收,则不再生成未分配客户经理异常,且该订单不产生业绩归属
order
.
setSalesmanId
(
0L
);
order
.
setDeptId
(
0L
);
}
}
private
void
addOrderCustomerService
(
OrderDO
order
,
int
customerType
)
{
if
(
Objects
.
nonNull
(
order
.
getParentOrderId
())
&&
order
.
getParentOrderId
()
>
0
&&
!
order
.
getSplitSeparateOrder
())
{
// 拆单子订单,并且未标记为独立订单,则不执行客户经理分配规则,以原单为主
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment