Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
8
8timerapiv200
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
8timerv2
8timerapiv200
Commits
1def50d0
Commit
1def50d0
authored
Jun 10, 2020
by
邓实川
Committed by
chenzg
Jul 05, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
客户管理接口
parent
1de703b7
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
335 additions
and
115 deletions
+335
-115
src/main/java/cn/timer/api/bean/crm/CrmBusinessGroupManager.java
+0
-60
src/main/java/cn/timer/api/bean/crm/CrmBusinessGroupMember.java
+3
-0
src/main/java/cn/timer/api/bean/crm/CrmClientAssociate.java
+1
-1
src/main/java/cn/timer/api/controller/crm/CrmController.java
+316
-30
src/main/java/cn/timer/api/dao/crm/CrmBusinessGroupManagerMapper.java
+0
-24
src/main/java/cn/timer/api/utils/CheckUtil.java
+15
-0
No files found.
src/main/java/cn/timer/api/bean/crm/CrmBusinessGroupManager.java
deleted
100644 → 0
View file @
1de703b7
/**
* Title: CrmBusinessManager.java
* Description:
* @author dsc
* @date 2020年6月9日
* @version 1.0
*/
package
cn
.
timer
.
api
.
bean
.
crm
;
import
javax.persistence.Entity
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* Title: CrmBusinessGroupManager.java
*
* @Description:
* @author dsc
* @date 2020年6月9日
* @version 1.0
*/
@Entity
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table
(
name
=
"crm_business_group_manager"
)
@ApiModel
(
"业务组管理员表"
)
public
class
CrmBusinessGroupManager
extends
Model
<
CrmBusinessGroupManager
>
{
private
static
final
long
serialVersionUID
=
-
957497237692110042L
;
@Id
@GeneratedValue
@TableId
(
type
=
IdType
.
AUTO
)
@ApiModelProperty
(
value
=
"编号"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"组id"
)
private
Integer
gid
;
@ApiModelProperty
(
value
=
"员工id"
)
private
Integer
empNum
;
@ApiModelProperty
(
value
=
"企业id"
)
private
Integer
orgCode
;
}
src/main/java/cn/timer/api/bean/crm/CrmBusinessGroupMember.java
View file @
1def50d0
...
...
@@ -54,6 +54,9 @@ public class CrmBusinessGroupMember extends Model<CrmBusinessGroupMember>{
@ApiModelProperty
(
value
=
"员工id"
)
private
Integer
empNum
;
@ApiModelProperty
(
value
=
"0-普通成员 1-管理员"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"企业id"
)
private
Integer
orgCode
;
}
src/main/java/cn/timer/api/bean/crm/CrmClientAssociate.java
View file @
1def50d0
...
...
@@ -37,7 +37,7 @@ import lombok.NoArgsConstructor;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table
(
name
=
"crm_client_associate
s
"
)
@Table
(
name
=
"crm_client_associate"
)
@ApiModel
(
"客户协作人表"
)
public
class
CrmClientAssociate
extends
Model
<
CrmClientAssociate
>
{
...
...
src/main/java/cn/timer/api/controller/crm/CrmController.java
View file @
1def50d0
...
...
@@ -16,6 +16,7 @@ import java.util.List;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
...
...
@@ -25,7 +26,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DateUtil
;
...
...
@@ -35,7 +38,6 @@ import cn.timer.api.bean.clazz.ClientTypeClass;
import
cn.timer.api.bean.clazz.IndustryClass
;
import
cn.timer.api.bean.clazz.SysRegion
;
import
cn.timer.api.bean.crm.CrmBusinessGroup
;
import
cn.timer.api.bean.crm.CrmBusinessGroupManager
;
import
cn.timer.api.bean.crm.CrmBusinessGroupMember
;
import
cn.timer.api.bean.crm.CrmClientAssociate
;
import
cn.timer.api.bean.crm.CrmClientContacts
;
...
...
@@ -45,6 +47,7 @@ import cn.timer.api.bean.crm.CrmSeaRule;
import
cn.timer.api.bean.yggl.YgglMainEmp
;
import
cn.timer.api.config.annotation.CurrentUser
;
import
cn.timer.api.config.annotation.UserBean
;
import
cn.timer.api.dao.crm.CrmClientDataMapper
;
import
cn.timer.api.utils.CheckUtil
;
import
cn.timer.api.utils.Result
;
import
cn.timer.api.utils.ResultUtil
;
...
...
@@ -66,6 +69,9 @@ import io.swagger.annotations.ApiOperation;
@RequestMapping
(
value
=
"/crm"
,
produces
=
{
"application/json"
})
public
class
CrmController
{
@Autowired
private
CrmClientDataMapper
crmClientDataMapper
;
private
Integer
getEmpNum
(
UserBean
userBean
)
{
return
userBean
.
getEmpNum
();
}
...
...
@@ -129,11 +135,11 @@ public class CrmController {
Integer
gid
=
crmBusinessGroup
.
getId
();
Integer
[]
memberIds
=
crmBusinessGroup
.
getMemberIds
();
for
(
Integer
empId
:
memberIds
)
{
CrmBusinessGroupMember
.
builder
().
gid
(
gid
).
empNum
(
empId
).
orgCode
(
orgCode
).
build
().
insert
();
CrmBusinessGroupMember
.
builder
().
gid
(
gid
).
empNum
(
empId
).
orgCode
(
orgCode
).
type
(
0
).
build
().
insert
();
}
Integer
[]
managerIds
=
crmBusinessGroup
.
getManagerIds
();
for
(
Integer
empId
:
managerIds
)
{
CrmBusinessGroupM
anager
.
builder
().
gid
(
gid
).
empNum
(
empId
).
orgCode
(
orgCode
).
build
().
insert
();
CrmBusinessGroupM
ember
.
builder
().
gid
(
gid
).
empNum
(
empId
).
orgCode
(
orgCode
).
type
(
1
).
build
().
insert
();
}
CrmSeaRule
crmSeaRule
=
crmBusinessGroup
.
getCrmSeaRules
();
...
...
@@ -151,11 +157,11 @@ public class CrmController {
CrmBusinessGroup:
:
getSort
,
CrmBusinessGroup:
:
getName
,
CrmBusinessGroup:
:
getModifyTime
));
for
(
CrmBusinessGroup
crmBusinessGroup
:
list
)
{
Integer
gid
=
crmBusinessGroup
.
getId
();
List
<
CrmBusinessGroupM
anager
>
crmBusinessGroupManagers
=
CrmBusinessGroupManager
.
builder
().
build
()
.
selectList
(
new
QueryWrapper
<
CrmBusinessGroupManager
>().
lambda
(
)
.
eq
(
CrmBusinessGroupM
anager:
:
getGid
,
gid
).
select
(
CrmBusinessGroupManag
er:
:
getEmpNum
));
List
<
CrmBusinessGroupM
ember
>
crmBusinessGroupManagers
=
CrmBusinessGroupMember
.
builder
().
build
().
selectList
(
new
QueryWrapper
<
CrmBusinessGroupMember
>().
lambda
().
eq
(
CrmBusinessGroupMember:
:
getGid
,
gid
)
.
eq
(
CrmBusinessGroupM
ember:
:
getType
,
1
).
select
(
CrmBusinessGroupMemb
er:
:
getEmpNum
));
List
<
Map
<
String
,
Object
>>
managers
=
new
ArrayList
<
Map
<
String
,
Object
>>();
for
(
CrmBusinessGroupM
anag
er
crmBusinessGroupManager
:
crmBusinessGroupManagers
)
{
for
(
CrmBusinessGroupM
emb
er
crmBusinessGroupManager
:
crmBusinessGroupManagers
)
{
Integer
empNum
=
crmBusinessGroupManager
.
getEmpNum
();
String
name
=
getEmpName
(
getOrgCode
(
userBean
),
empNum
);
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
...
...
@@ -380,6 +386,21 @@ public class CrmController {
return
ResultUtil
.
data
(
crmClientDatas
,
"查询成功"
);
}
private
List
<
Integer
>
MyJoinGroup
(
Integer
empNum
,
Integer
orgCode
)
{
List
<
CrmBusinessGroupMember
>
members
=
CrmBusinessGroupMember
.
builder
().
build
()
.
selectList
(
new
QueryWrapper
<
CrmBusinessGroupMember
>().
lambda
()
.
eq
(
CrmBusinessGroupMember:
:
getEmpNum
,
empNum
).
eq
(
CrmBusinessGroupMember:
:
getOrgCode
,
orgCode
));
return
members
.
stream
().
map
(
CrmBusinessGroupMember:
:
getGid
).
collect
(
Collectors
.
toList
());
}
private
List
<
Integer
>
MyManageGroup
(
Integer
empNum
,
Integer
orgCode
)
{
List
<
CrmBusinessGroupMember
>
managers
=
CrmBusinessGroupMember
.
builder
().
build
()
.
selectList
(
new
QueryWrapper
<
CrmBusinessGroupMember
>().
lambda
()
.
eq
(
CrmBusinessGroupMember:
:
getEmpNum
,
empNum
).
eq
(
CrmBusinessGroupMember:
:
getOrgCode
,
orgCode
)
.
eq
(
CrmBusinessGroupMember:
:
getType
,
1
));
return
managers
.
stream
().
map
(
CrmBusinessGroupMember:
:
getGid
).
collect
(
Collectors
.
toList
());
}
@GetMapping
(
"getSeaCilentTotal"
)
@ApiOperation
(
value
=
"获取公海客户列表(全)"
,
httpMethod
=
"GET"
,
notes
=
"接口发布说明"
)
public
Result
<
List
<
CrmClientData
>>
getSeaCilentTotal
(
@CurrentUser
UserBean
userBean
,
...
...
@@ -388,29 +409,55 @@ public class CrmController {
Integer
empNum
=
getEmpNum
(
userBean
);
Integer
orgCode
=
getOrgCode
(
userBean
);
// 当前用户加入的组
List
<
CrmBusinessGroupMember
>
members
=
CrmBusinessGroupMember
.
builder
().
build
()
.
selectList
(
new
QueryWrapper
<
CrmBusinessGroupMember
>().
lambda
()
.
eq
(
CrmBusinessGroupMember:
:
getEmpNum
,
empNum
).
eq
(
CrmBusinessGroupMember:
:
getOrgCode
,
orgCode
));
List
<
Integer
>
gids1
=
members
.
stream
().
map
(
CrmBusinessGroupMember:
:
getGid
).
collect
(
Collectors
.
toList
());
List
<
Integer
>
gids1
=
MyJoinGroup
(
empNum
,
orgCode
);
// 当前用户管理的组
List
<
CrmBusinessGroupManager
>
managers
=
CrmBusinessGroupManager
.
builder
().
build
()
.
selectList
(
new
QueryWrapper
<
CrmBusinessGroupManager
>().
lambda
()
.
eq
(
CrmBusinessGroupManager:
:
getEmpNum
,
empNum
)
.
eq
(
CrmBusinessGroupManager:
:
getOrgCode
,
orgCode
));
List
<
Integer
>
gids2
=
managers
.
stream
().
map
(
CrmBusinessGroupManager:
:
getGid
).
collect
(
Collectors
.
toList
());
List
<
Integer
>
gids2
=
MyManageGroup
(
empNum
,
orgCode
);
List
<
Integer
>
myGids
=
CheckUtil
.
distinct
(
gids1
,
gids2
,
true
);
// 当前用户所有业务组id
List
<
CrmClientData
>
crmClientDatas
=
new
ArrayList
<
CrmClientData
>();
for
(
Integer
gid
:
myGids
)
{
crmClientDatas
.
add
(
CrmClientData
.
builder
().
build
()
.
select
One
(
new
QueryWrapper
<
CrmClientData
>().
lambda
().
eq
(
CrmClientData:
:
getBelongGroup
,
gid
)
List
<
CrmClientData
>
datas
=
CrmClientData
.
builder
().
build
()
.
select
List
(
new
QueryWrapper
<
CrmClientData
>().
lambda
().
eq
(
CrmClientData:
:
getBelongGroup
,
gid
)
.
eq
(
CrmClientData:
:
getBelongUser
,
0
)
.
eq
(
type
!=
null
&&
type
>=
0
,
CrmClientData:
:
getClientType
,
type
)
.
eq
(
groupId
!=
null
&&
groupId
>=
0
,
CrmClientData:
:
getBelongGroup
,
groupId
)
.
eq
(
status
!=
null
&&
status
>=
0
,
CrmClientData:
:
getClientStatus
,
status
)
.
like
(!
StrUtil
.
isBlank
(
like
),
CrmClientData:
:
getClientName
,
like
).
or
()
.
like
(!
StrUtil
.
isBlank
(
like
),
CrmClientData:
:
getClientCellphone
,
like
)));
}
// TODO
.
like
(!
StrUtil
.
isBlank
(
like
),
CrmClientData:
:
getClientCellphone
,
like
));
for
(
CrmClientData
data
:
datas
)
crmClientDatas
.
add
(
data
);
}
return
ResultUtil
.
data
(
crmClientDatas
,
"查询成功"
);
}
@GetMapping
(
"getAllCilentTotal"
)
@ApiOperation
(
value
=
"获取所有客户列表(全)"
,
httpMethod
=
"GET"
,
notes
=
"接口发布说明"
)
public
Result
<
Object
>
getAllCilentTotal
(
@CurrentUser
UserBean
userBean
,
@RequestParam
(
required
=
false
)
Integer
type
,
@RequestParam
(
required
=
false
)
Integer
groupId
,
@RequestParam
(
required
=
false
)
Integer
status
,
@RequestParam
(
required
=
false
)
String
like
,
@RequestParam
(
required
=
false
)
String
startCreateTime
,
@RequestParam
(
required
=
false
)
String
endCreateTime
,
@RequestParam
(
required
=
false
)
String
startFollowTime
,
@RequestParam
(
required
=
false
)
String
endFollowTime
)
{
Integer
empNum
=
getEmpNum
(
userBean
);
Integer
orgCode
=
getOrgCode
(
userBean
);
// 当前用户管理的组
List
<
Integer
>
gids
=
MyManageGroup
(
empNum
,
orgCode
);
List
<
Object
>
crmClientDatas
=
new
ArrayList
<
Object
>();
for
(
Integer
gid
:
gids
)
{
List
<
CrmClientData
>
datas
=
CrmClientData
.
builder
().
build
()
.
selectList
(
new
QueryWrapper
<
CrmClientData
>().
lambda
().
eq
(
CrmClientData:
:
getBelongGroup
,
gid
)
.
eq
(
groupId
!=
null
&&
groupId
>=
0
,
CrmClientData:
:
getBelongGroup
,
groupId
)
.
eq
(
type
!=
null
&&
type
>=
0
,
CrmClientData:
:
getClientType
,
type
)
.
eq
(
status
!=
null
&&
status
>=
0
,
CrmClientData:
:
getClientStatus
,
status
)
.
ge
(
StringUtils
.
isNotBlank
(
startCreateTime
),
CrmClientData:
:
getCreateTime
,
startCreateTime
)
.
le
(
StringUtils
.
isNotBlank
(
endCreateTime
),
CrmClientData:
:
getCreateTime
,
endCreateTime
)
.
ge
(
StringUtils
.
isNotBlank
(
startFollowTime
),
CrmClientData:
:
getCreateTime
,
startFollowTime
)
.
le
(
StringUtils
.
isNotBlank
(
endFollowTime
),
CrmClientData:
:
getCreateTime
,
endFollowTime
)
.
like
(!
StrUtil
.
isBlank
(
like
),
CrmClientData:
:
getClientName
,
like
).
or
()
.
like
(!
StrUtil
.
isBlank
(
like
),
CrmClientData:
:
getClientCellphone
,
like
));
for
(
CrmClientData
data
:
datas
)
crmClientDatas
.
add
(
data
);
}
return
ResultUtil
.
data
(
crmClientDatas
,
"查询成功"
);
}
...
...
@@ -505,6 +552,13 @@ public class CrmController {
.
eq
(
CrmClientFollow:
:
getOrgCode
,
orgCode
).
eq
(
CrmClientFollow:
:
getCid
,
cid
)),
"获取成功"
);
}
// 根据组id和员工号查询组管理员
private
CrmBusinessGroupMember
getGroupManager
(
Integer
groupId
,
Integer
empNum
)
{
return
CrmBusinessGroupMember
.
builder
().
build
().
selectOne
(
new
QueryWrapper
<
CrmBusinessGroupMember
>().
lambda
().
eq
(
CrmBusinessGroupMember:
:
getGid
,
groupId
)
.
eq
(
CrmBusinessGroupMember:
:
getEmpNum
,
empNum
).
eq
(
CrmBusinessGroupMember:
:
getType
,
1
));
}
@PostMapping
(
"addClientArchive"
)
@ApiOperation
(
value
=
"客户封档/解封"
,
httpMethod
=
"POST"
,
notes
=
"接口发布说明"
)
public
Result
<
Void
>
addClientArchive
(
@CurrentUser
UserBean
userBean
,
@RequestParam
Integer
cid
)
{
...
...
@@ -512,8 +566,9 @@ public class CrmController {
CrmClientData
crmClientData
=
CrmClientData
.
builder
().
id
(
cid
).
build
().
selectById
();
if
(
crmClientData
==
null
)
return
ResultUtil
.
error
(
"请确认该客户是否存在"
);
if
(!
crmClientData
.
getBelongUser
().
equals
(
empNum
))
return
ResultUtil
.
error
(
"不是当前客户归属人"
);
if
(!
crmClientData
.
getBelongUser
().
equals
(
empNum
)
&&
getGroupManager
(
crmClientData
.
getBelongGroup
(),
empNum
)
==
null
)
return
ResultUtil
.
error
(
"不是当前客户归属人或组管理员"
);
Integer
status
=
crmClientData
.
getClientStatus
();
if
(
status
!=
null
&&
status
!=
5
)
{
crmClientData
.
setClientStatus
(
5
);
...
...
@@ -531,13 +586,14 @@ public class CrmController {
@ApiOperation
(
value
=
"指派客户归属人"
,
httpMethod
=
"POST"
,
notes
=
"接口发布说明"
)
public
Result
<
Void
>
designateClientBelonger
(
@CurrentUser
UserBean
userBean
,
@RequestParam
Integer
cid
,
@RequestParam
Integer
belongUser
)
{
Integer
empNum
=
getEmpNum
(
userBean
);
if
(
cid
==
null
)
return
ResultUtil
.
error
(
"请传入id再试"
);
CrmClientData
oldData
=
CrmClientData
.
builder
().
id
(
cid
).
build
().
selectById
();
if
(
oldData
==
null
)
return
ResultUtil
.
error
(
"请确认该客户数据是否存在"
);
if
(!
oldData
.
getBelongUser
().
equals
(
getEmpNum
(
userBean
))
)
return
ResultUtil
.
error
(
"不是当前客户归属人"
);
if
(!
oldData
.
getBelongUser
().
equals
(
empNum
)
&&
getGroupManager
(
oldData
.
getBelongGroup
(),
empNum
)
==
null
)
return
ResultUtil
.
error
(
"不是当前客户归属人
或组管理员
"
);
if
(
oldData
.
getClientStatus
()
==
5
)
return
ResultUtil
.
error
(
"请解封后继续编辑操作"
);
...
...
@@ -560,23 +616,253 @@ public class CrmController {
@Transactional
@ApiOperation
(
value
=
"释放客户到公海"
,
httpMethod
=
"POST"
,
notes
=
"接口发布说明"
)
public
Result
<
Void
>
freeClientToSea
(
@CurrentUser
UserBean
userBean
,
@RequestParam
Integer
cid
)
{
Integer
empNum
=
getEmpNum
(
userBean
);
if
(
cid
==
null
)
return
ResultUtil
.
error
(
"请传入id再试"
);
CrmClientData
oldData
=
CrmClientData
.
builder
().
id
(
cid
).
build
().
selectById
();
if
(
oldData
==
null
)
return
ResultUtil
.
error
(
"请确认该客户数据是否存在"
);
if
(!
oldData
.
getBelongUser
().
equals
(
getEmpNum
(
userBean
)))
return
ResultUtil
.
error
(
"不是当前客户归属人"
);
if
(
oldData
.
getBelongUser
()
==
0
)
return
ResultUtil
.
error
(
"该客户已在公海列表"
);
if
((!
oldData
.
getOrgCode
().
equals
(
getOrgCode
(
userBean
))
||
!
oldData
.
getBelongUser
().
equals
(
empNum
))
&&
getGroupManager
(
oldData
.
getBelongGroup
(),
empNum
)
==
null
)
return
ResultUtil
.
error
(
"不是当前客户归属人或组管理员"
);
if
(
oldData
.
getClientStatus
()
==
5
)
return
ResultUtil
.
error
(
"请解封后继续编辑操作"
);
oldData
.
setBelongUser
(
0
);
// 0-进入客户公海
oldData
.
setBelongUserName
(
null
);
if
(
oldData
.
updateById
()
&&
CrmClientAssociate
.
builder
().
build
()
.
delete
(
new
QueryWrapper
<
CrmClientAssociate
>().
lambda
().
eq
(
CrmClientAssociate:
:
getCid
,
cid
)))
// 删除协作人列表
CrmClientAssociate
.
builder
().
build
()
.
delete
(
new
QueryWrapper
<
CrmClientAssociate
>().
lambda
().
eq
(
CrmClientAssociate:
:
getCid
,
cid
));
if
(
oldData
.
updateById
())
return
ResultUtil
.
success
(
"释放成功"
);
return
ResultUtil
.
error
(
"释放失败"
);
}
// TODO
@PostMapping
(
"receiveSeaClient"
)
@ApiOperation
(
value
=
"接收公海客户"
,
httpMethod
=
"POST"
,
notes
=
"接口发布说明"
)
public
Result
<
Void
>
receiveSeaClient
(
@CurrentUser
UserBean
userBean
,
@RequestParam
Integer
cid
)
{
Integer
empNum
=
getEmpNum
(
userBean
);
Integer
orgCode
=
getOrgCode
(
userBean
);
if
(
cid
==
null
)
return
ResultUtil
.
error
(
"请传入id再试"
);
CrmClientData
oldData
=
CrmClientData
.
builder
().
id
(
cid
).
build
().
selectById
();
if
(
oldData
==
null
)
return
ResultUtil
.
error
(
"请确认该客户数据是否存在"
);
// 当前用户所有组id
List
<
Integer
>
myGids
=
CheckUtil
.
distinct
(
MyJoinGroup
(
empNum
,
orgCode
),
MyManageGroup
(
empNum
,
orgCode
),
true
);
if
(!
myGids
.
contains
(
oldData
.
getBelongGroup
()))
return
ResultUtil
.
error
(
"不是当前业务组成员"
);
oldData
.
setBelongUser
(
empNum
);
oldData
.
setBelongUserName
(
getEmpName
(
orgCode
,
empNum
));
if
(
oldData
.
updateById
())
return
ResultUtil
.
success
(
"接收成功"
);
return
ResultUtil
.
error
(
"接收失败"
);
}
@Transactional
@PostMapping
(
"designateClientBelongers"
)
@ApiOperation
(
value
=
"转移客户归属人(批量客户)"
,
httpMethod
=
"POST"
,
notes
=
"接口发布说明"
)
public
Result
<
Void
>
designateClientBelongers
(
@CurrentUser
UserBean
userBean
,
@RequestParam
List
<
Integer
>
cids
,
@RequestParam
Integer
belonger
)
{
// 所选的客户列表
List
<
CrmClientData
>
crmClientDatas
=
crmClientDataMapper
.
selectBatchIds
(
cids
);
// 业务组id列表
List
<
Integer
>
gids
=
crmClientDatas
.
stream
().
map
(
CrmClientData:
:
getBelongGroup
).
collect
(
Collectors
.
toList
());
Integer
gid
=
gids
.
get
(
0
);
// 当前操作人是否管理员
CrmBusinessGroupMember
nowManager
=
CrmBusinessGroupMember
.
builder
().
build
()
.
selectOne
(
new
QueryWrapper
<
CrmBusinessGroupMember
>().
lambda
().
eq
(
CrmBusinessGroupMember:
:
getGid
,
gid
)
.
eq
(
CrmBusinessGroupMember:
:
getEmpNum
,
getEmpNum
(
userBean
))
.
eq
(
CrmBusinessGroupMember:
:
getType
,
1
));
if
(
nowManager
==
null
)
return
ResultUtil
.
error
(
"没有操作权限,请联系组管理员进行操作"
);
// 是否有不同组的客户
if
(
gids
.
stream
().
distinct
().
count
()
>
1
)
return
ResultUtil
.
error
(
"请确认是否同一业务组客户"
);
// 转移人业务组信息
CrmBusinessGroupMember
crmBusinessGroupMember
=
CrmBusinessGroupMember
.
builder
().
build
()
.
selectOne
(
new
QueryWrapper
<
CrmBusinessGroupMember
>().
lambda
().
eq
(
CrmBusinessGroupMember:
:
getGid
,
gid
)
.
eq
(
CrmBusinessGroupMember:
:
getEmpNum
,
belonger
));
if
(
crmBusinessGroupMember
==
null
)
return
ResultUtil
.
error
(
"请确认转移目标是当前业务组成员"
);
for
(
CrmClientData
crmClientData
:
crmClientDatas
)
{
crmClientData
.
setBelongUser
(
belonger
);
crmClientData
.
setBelongUserName
(
getEmpName
(
getOrgCode
(
userBean
),
belonger
));
crmClientData
.
updateById
();
}
return
ResultUtil
.
success
(
"转移成功"
);
}
/**
*
* @param userBean
* @param type 统计图类型(暂时不要)
* @param groupId 业务组id
* @param memberId 业务员id
* @param startCreateTime 创建时间-开始时间
* @param endCreateTime 创建时间-结束时间
* @return 对应客户数据count
*/
@GetMapping
(
"getAllCartogram"
)
@ApiOperation
(
value
=
"获取统计图(全)"
,
httpMethod
=
"GET"
,
notes
=
"接口发布说明"
)
public
Result
<
Object
>
getAllCartogram
(
@CurrentUser
UserBean
userBean
,
@RequestParam
(
required
=
false
)
Integer
groupId
,
@RequestParam
(
required
=
false
)
Integer
belonger
,
@RequestParam
(
required
=
false
)
String
startCreateTime
,
@RequestParam
(
required
=
false
)
String
endCreateTime
)
{
Integer
orgCode
=
getOrgCode
(
userBean
);
List
<
Object
>
listAll
=
new
ArrayList
<
Object
>();
listAll
.
add
(
cartogram
(
orgCode
,
groupId
,
1
,
belonger
,
startCreateTime
,
endCreateTime
));
// 图1
listAll
.
add
(
cartogram
(
orgCode
,
groupId
,
2
,
belonger
,
startCreateTime
,
endCreateTime
));
// 图2
listAll
.
add
(
cartogram
(
orgCode
,
groupId
,
3
,
belonger
,
startCreateTime
,
endCreateTime
));
// 图3
listAll
.
add
(
cartogram
(
orgCode
,
groupId
,
4
,
belonger
,
startCreateTime
,
endCreateTime
));
// 图4
List
<
List
<
Map
<
String
,
Object
>>>
cartogram5
=
new
ArrayList
<
List
<
Map
<
String
,
Object
>>>();
// 图5
cartogram5
.
add
(
cartogram2
(
orgCode
,
groupId
,
1
,
belonger
,
startCreateTime
,
endCreateTime
));
cartogram5
.
add
(
cartogram2
(
orgCode
,
groupId
,
2
,
belonger
,
startCreateTime
,
endCreateTime
));
cartogram5
.
add
(
cartogram2
(
orgCode
,
groupId
,
3
,
belonger
,
startCreateTime
,
endCreateTime
));
listAll
.
add
(
cartogram5
);
List
<
List
<
Map
<
String
,
Object
>>>
cartogram6
=
new
ArrayList
<
List
<
Map
<
String
,
Object
>>>();
// 图6
for
(
String
regionName
:
getRegionNameList
())
{
cartogram6
.
add
(
cartogram3
(
orgCode
,
groupId
,
regionName
,
belonger
,
startCreateTime
,
endCreateTime
));
}
listAll
.
add
(
cartogram6
);
return
ResultUtil
.
data
(
listAll
,
"获取成功"
);
}
// 获取省份名
private
List
<
String
>
getRegionNameList
()
{
List
<
SysRegion
>
list
=
SysRegion
.
builder
().
build
()
.
selectList
(
new
LambdaQueryWrapper
<
SysRegion
>().
eq
(
SysRegion:
:
getLevel
,
1
));
return
list
.
stream
().
map
(
SysRegion:
:
getRegionName
).
collect
(
Collectors
.
toList
());
}
// 获取公司全部业务员
private
List
<
Integer
>
getAllBusinessGroupMember
(
Integer
orgCode
,
Integer
groupId
)
{
List
<
CrmBusinessGroupMember
>
list
=
CrmBusinessGroupMember
.
builder
().
build
()
.
selectList
(
new
QueryWrapper
<
CrmBusinessGroupMember
>().
lambda
()
.
eq
(
CrmBusinessGroupMember:
:
getOrgCode
,
orgCode
)
.
eq
(
groupId
!=
null
&&
groupId
>=
0
,
CrmBusinessGroupMember:
:
getGid
,
groupId
));
return
list
.
stream
().
map
(
CrmBusinessGroupMember:
:
getEmpNum
).
collect
(
Collectors
.
toList
()).
stream
().
distinct
()
.
collect
(
Collectors
.
toList
());
// list.stream().filter(CheckUtil.distinctByKey(CrmBusinessGroupMember::getEmpNum)).collect(Collectors.toList());
}
// 封装条形图数据Map
private
Map
<
String
,
Object
>
selectMap
(
Integer
orgCode
,
Integer
belonger
,
Integer
status
,
String
startCreateTime
,
String
endCreateTime
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
Integer
num
=
CrmClientData
.
builder
().
build
()
.
selectCount
(
new
QueryWrapper
<
CrmClientData
>().
lambda
().
eq
(
CrmClientData:
:
getOrgCode
,
orgCode
)
.
eq
(
CrmClientData:
:
getClientStatus
,
status
).
eq
(
CrmClientData:
:
getBelongUser
,
belonger
)
.
ge
(
StringUtils
.
isNotBlank
(
startCreateTime
),
CrmClientData:
:
getCreateTime
,
startCreateTime
)
.
le
(
StringUtils
.
isNotBlank
(
endCreateTime
),
CrmClientData:
:
getCreateTime
,
endCreateTime
));
String
name
=
getEmpName
(
orgCode
,
belonger
);
map
.
put
(
"name"
,
name
);
map
.
put
(
"num"
,
num
);
return
map
;
}
// 封装⚪形图数据Map1
private
Map
<
String
,
Object
>
selectMap1
(
Integer
orgCode
,
Integer
belonger
,
Integer
level
,
String
startCreateTime
,
String
endCreateTime
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
Integer
num
=
CrmClientData
.
builder
().
build
()
.
selectCount
(
new
QueryWrapper
<
CrmClientData
>().
lambda
().
eq
(
CrmClientData:
:
getOrgCode
,
orgCode
)
.
eq
(
CrmClientData:
:
getClientType
,
level
).
eq
(
CrmClientData:
:
getBelongUser
,
belonger
)
.
ge
(
StringUtils
.
isNotBlank
(
startCreateTime
),
CrmClientData:
:
getCreateTime
,
startCreateTime
)
.
le
(
StringUtils
.
isNotBlank
(
endCreateTime
),
CrmClientData:
:
getCreateTime
,
endCreateTime
));
map
.
put
(
"level"
,
level
);
map
.
put
(
"num"
,
num
);
return
map
;
}
// 封装⚪形图数据Map2
private
Map
<
String
,
Object
>
selectMap2
(
Integer
orgCode
,
Integer
belonger
,
String
province
,
String
startCreateTime
,
String
endCreateTime
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
Integer
num
=
CrmClientData
.
builder
().
build
()
.
selectCount
(
new
QueryWrapper
<
CrmClientData
>().
lambda
().
eq
(
CrmClientData:
:
getOrgCode
,
orgCode
)
.
eq
(
CrmClientData:
:
getProvince
,
province
).
eq
(
CrmClientData:
:
getBelongUser
,
belonger
)
.
ge
(
StringUtils
.
isNotBlank
(
startCreateTime
),
CrmClientData:
:
getCreateTime
,
startCreateTime
)
.
le
(
StringUtils
.
isNotBlank
(
endCreateTime
),
CrmClientData:
:
getCreateTime
,
endCreateTime
));
map
.
put
(
"province"
,
province
);
map
.
put
(
"num"
,
num
);
return
map
;
}
/**
* 统计图1,2,3,4
*
* @param orgCode 企业id(必填)
* @param groupId 组id (可不填)
* @param status 分类 1 2 3 4 (必填)
* @param belonger 业务员id (可不填)
* @return
*/
private
List
<
Map
<
String
,
Object
>>
cartogram
(
Integer
orgCode
,
Integer
groupId
,
Integer
status
,
Integer
belonger
,
String
startCreateTime
,
String
endCreateTime
)
{
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<
Map
<
String
,
Object
>>();
if
(
belonger
==
null
)
{
List
<
Integer
>
members
=
getAllBusinessGroupMember
(
orgCode
,
groupId
);
for
(
Integer
memberId
:
members
)
{
list
.
add
(
selectMap
(
orgCode
,
memberId
,
status
,
startCreateTime
,
endCreateTime
));
}
}
else
{
list
.
add
(
selectMap
(
orgCode
,
belonger
,
status
,
startCreateTime
,
endCreateTime
));
}
return
list
;
}
/**
* 统计图5
*
* @param orgCode 企业id(必填)
* @param groupId 组id (可不填)
* @param level 客户等级分类 (必填)
* @param belonger 业务员id (可不填)
* @return
*/
private
List
<
Map
<
String
,
Object
>>
cartogram2
(
Integer
orgCode
,
Integer
groupId
,
Integer
level
,
Integer
belonger
,
String
startCreateTime
,
String
endCreateTime
)
{
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<
Map
<
String
,
Object
>>();
if
(
belonger
==
null
)
{
List
<
Integer
>
members
=
getAllBusinessGroupMember
(
orgCode
,
groupId
);
for
(
Integer
memberId
:
members
)
{
Map
<
String
,
Object
>
map
=
selectMap1
(
orgCode
,
memberId
,
level
,
startCreateTime
,
endCreateTime
);
list
.
add
(
map
);
}
}
else
{
list
.
add
(
selectMap1
(
orgCode
,
belonger
,
level
,
startCreateTime
,
endCreateTime
));
}
return
list
;
}
/**
* 统计图6
*
* @param orgCode 企业id(必填)
* @param groupId 组id (可不填)
* @param level 客户等级分类 (必填)
* @param belonger 业务员id (可不填)
* @return
*/
private
List
<
Map
<
String
,
Object
>>
cartogram3
(
Integer
orgCode
,
Integer
groupId
,
String
province
,
Integer
belonger
,
String
startCreateTime
,
String
endCreateTime
)
{
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<
Map
<
String
,
Object
>>();
if
(
belonger
==
null
)
{
List
<
Integer
>
members
=
getAllBusinessGroupMember
(
orgCode
,
groupId
);
for
(
Integer
memberId
:
members
)
{
list
.
add
(
selectMap2
(
orgCode
,
memberId
,
province
,
startCreateTime
,
endCreateTime
));
}
}
else
{
list
.
add
(
selectMap2
(
orgCode
,
belonger
,
province
,
startCreateTime
,
endCreateTime
));
}
return
list
;
}
// TODO 统计图
}
src/main/java/cn/timer/api/dao/crm/CrmBusinessGroupManagerMapper.java
deleted
100644 → 0
View file @
1de703b7
/**
* Title: CrmBusinessGroupManagerMapper.java
* Description:
* @author dsc
* @date 2020年6月9日
* @version 1.0
*/
package
cn
.
timer
.
api
.
dao
.
crm
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
cn.timer.api.bean.crm.CrmBusinessGroupManager
;
/**
* Title: CrmBusinessGroupManagerMapper.java
*
* @Description:
* @author dsc
* @date 2020年6月9日
* @version 1.0
*/
public
interface
CrmBusinessGroupManagerMapper
extends
BaseMapper
<
CrmBusinessGroupManager
>
{
}
src/main/java/cn/timer/api/utils/CheckUtil.java
View file @
1def50d0
...
...
@@ -9,6 +9,10 @@ package cn.timer.api.utils;
import
java.lang.reflect.Field
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.function.Function
;
import
java.util.function.Predicate
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -87,6 +91,17 @@ public class CheckUtil {
return
list1
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
}
/**
* 字段条件去重
* @param <T>
* @param keyExtractor
* @return
*/
public
static
<
T
>
Predicate
<
T
>
distinctByKey
(
Function
<?
super
T
,
Object
>
keyExtractor
)
{
Map
<
Object
,
Boolean
>
seen
=
new
ConcurrentHashMap
<>();
return
object
->
seen
.
putIfAbsent
(
keyExtractor
.
apply
(
object
),
Boolean
.
TRUE
)
==
null
;
}
// public static void main(String[] args) {
// List<String> list1 = new ArrayList<String>();
// list1.add("a");
...
...
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