|
@@ -45,7 +45,10 @@ public class SalesleadsServiceImpl implements ISalesleadsService {
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
public SalesleadsVo queryById(Long id) {
|
|
public SalesleadsVo queryById(Long id) {
|
|
|
- return baseMapper.selectVoById(id);
|
|
|
|
|
|
|
+ SalesleadsBo bo = new SalesleadsBo();
|
|
|
|
|
+ bo.setId(id);
|
|
|
|
|
+ List<SalesleadsVo> list = baseMapper.selectSalesleadsList(bo);
|
|
|
|
|
+ return list.isEmpty() ? null : list.get(0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -141,13 +144,28 @@ public class SalesleadsServiceImpl implements ISalesleadsService {
|
|
|
// 逐条更新(批量认领场景通常数据量不大)
|
|
// 逐条更新(批量认领场景通常数据量不大)
|
|
|
boolean result = true;
|
|
boolean result = true;
|
|
|
for (Long id : ids) {
|
|
for (Long id : ids) {
|
|
|
|
|
+ Salesleads oldData = baseMapper.selectById(id);
|
|
|
Salesleads update = new Salesleads();
|
|
Salesleads update = new Salesleads();
|
|
|
update.setId(id);
|
|
update.setId(id);
|
|
|
update.setLeader(bo.getLeader());
|
|
update.setLeader(bo.getLeader());
|
|
|
update.setLeaderName(bo.getLeaderName());
|
|
update.setLeaderName(bo.getLeaderName());
|
|
|
|
|
+ update.setIzClue(0); // 认领后转为项目商机
|
|
|
|
|
+ update.setProjectType(CustomerConstants.PROJECT_TYPE_OPPORTUNITY);
|
|
|
|
|
+ update.setStatus("0"); // 转为商机后,状态设为跟进中
|
|
|
boolean success = baseMapper.updateById(update) > 0;
|
|
boolean success = baseMapper.updateById(update) > 0;
|
|
|
result = result && success;
|
|
result = result && success;
|
|
|
if (success) {
|
|
if (success) {
|
|
|
|
|
+ // 处理原负责人逻辑
|
|
|
|
|
+ if (oldData != null && oldData.getLeader() != null && !oldData.getLeader().equals(bo.getLeader())) {
|
|
|
|
|
+ if (Boolean.TRUE.equals(bo.getKeepOldManager())) {
|
|
|
|
|
+ // 保留:将原负责人降级为普通团队成员
|
|
|
|
|
+ demoteLeaderToMember(id, oldData.getLeader(), oldData.getLeaderName());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 否:直接从团队中移除原负责人
|
|
|
|
|
+ teamMemberService.removeMember(CustomerConstants.DATA_TYPE_LEADS, String.valueOf(id), oldData.getLeader());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
syncLeaderToTeamMember(id, bo.getLeader(), bo.getLeaderName());
|
|
syncLeaderToTeamMember(id, bo.getLeader(), bo.getLeaderName());
|
|
|
// 记录日志
|
|
// 记录日志
|
|
|
operationLogService.recordLog(CustomerConstants.DATA_TYPE_LEADS, String.valueOf(id), CustomerConstants.ACTION_TYPE_CLAIM, null, "认领了销售线索", bo.getLeaderName());
|
|
operationLogService.recordLog(CustomerConstants.DATA_TYPE_LEADS, String.valueOf(id), CustomerConstants.ACTION_TYPE_CLAIM, null, "认领了销售线索", bo.getLeaderName());
|
|
@@ -156,6 +174,21 @@ public class SalesleadsServiceImpl implements ISalesleadsService {
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 将原负责人降级为普通成员
|
|
|
|
|
+ */
|
|
|
|
|
+ private void demoteLeaderToMember(Long objectNo, Long oldLeaderId, String oldLeaderName) {
|
|
|
|
|
+ TeamMemberBo memberBo = new TeamMemberBo();
|
|
|
|
|
+ memberBo.setDataType(CustomerConstants.DATA_TYPE_LEADS);
|
|
|
|
|
+ memberBo.setObjectNo(String.valueOf(objectNo));
|
|
|
|
|
+ memberBo.setUserNo(oldLeaderId);
|
|
|
|
|
+ memberBo.setRealName(oldLeaderName);
|
|
|
|
|
+ memberBo.setRoleCode("2"); // 假设 2 是普通成员(后续可根据字典调整)
|
|
|
|
|
+ memberBo.setIzManager(0);
|
|
|
|
|
+ memberBo.setUpdateAccredit(0);
|
|
|
|
|
+ teamMemberService.insertOrUpdateMember(memberBo);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 转移销售线索 - 更换负责人(支持批量)
|
|
* 转移销售线索 - 更换负责人(支持批量)
|
|
|
*/
|
|
*/
|
|
@@ -169,6 +202,7 @@ public class SalesleadsServiceImpl implements ISalesleadsService {
|
|
|
}
|
|
}
|
|
|
boolean result = true;
|
|
boolean result = true;
|
|
|
for (Long id : ids) {
|
|
for (Long id : ids) {
|
|
|
|
|
+ Salesleads oldData = baseMapper.selectById(id);
|
|
|
Salesleads update = new Salesleads();
|
|
Salesleads update = new Salesleads();
|
|
|
update.setId(id);
|
|
update.setId(id);
|
|
|
update.setLeader(bo.getLeader());
|
|
update.setLeader(bo.getLeader());
|
|
@@ -176,6 +210,17 @@ public class SalesleadsServiceImpl implements ISalesleadsService {
|
|
|
boolean success = baseMapper.updateById(update) > 0;
|
|
boolean success = baseMapper.updateById(update) > 0;
|
|
|
result = result && success;
|
|
result = result && success;
|
|
|
if (success) {
|
|
if (success) {
|
|
|
|
|
+ // 处理原负责人逻辑
|
|
|
|
|
+ if (oldData != null && oldData.getLeader() != null && !oldData.getLeader().equals(bo.getLeader())) {
|
|
|
|
|
+ if (Boolean.TRUE.equals(bo.getKeepOldManager())) {
|
|
|
|
|
+ // 保留:将原负责人降级为普通团队成员
|
|
|
|
|
+ demoteLeaderToMember(id, oldData.getLeader(), oldData.getLeaderName());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 否:直接从团队中移除原负责人
|
|
|
|
|
+ teamMemberService.removeMember(CustomerConstants.DATA_TYPE_LEADS, String.valueOf(id), oldData.getLeader());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
syncLeaderToTeamMember(id, bo.getLeader(), bo.getLeaderName());
|
|
syncLeaderToTeamMember(id, bo.getLeader(), bo.getLeaderName());
|
|
|
// 记录日志
|
|
// 记录日志
|
|
|
operationLogService.recordLog(CustomerConstants.DATA_TYPE_LEADS, String.valueOf(id), CustomerConstants.ACTION_TYPE_TRANSFER, null, "转移了销售线索", bo.getLeaderName());
|
|
operationLogService.recordLog(CustomerConstants.DATA_TYPE_LEADS, String.valueOf(id), CustomerConstants.ACTION_TYPE_TRANSFER, null, "转移了销售线索", bo.getLeaderName());
|