提交 cf9e643c authored 作者: 000516's avatar 000516

更新经销商业代上级为经销商客户经理

上级 816326f8
...@@ -14,4 +14,5 @@ public interface IQinceEmployeeDao { ...@@ -14,4 +14,5 @@ public interface IQinceEmployeeDao {
String getQcIdByEmpCode(String empCode); String getQcIdByEmpCode(String empCode);
void userResigned(String empQcId); void userResigned(String empQcId);
List<QinceEmployeeDto> selectListByEmpcodes(Set<String> keySet); List<QinceEmployeeDto> selectListByEmpcodes(Set<String> keySet);
List<QinceEmployeeDto> selectListByOrgCode(String orgCode);
} }
...@@ -50,4 +50,13 @@ public class QinceEmployeeDaoImpl implements IQinceEmployeeDao { ...@@ -50,4 +50,13 @@ public class QinceEmployeeDaoImpl implements IQinceEmployeeDao {
List<QinceEmployee> qcEmployees = qinceEmployeeMapper.selectList(qw); List<QinceEmployee> qcEmployees = qinceEmployeeMapper.selectList(qw);
return BeanUtils.transitionDtos(qcEmployees, QinceEmployeeDto.class); return BeanUtils.transitionDtos(qcEmployees, QinceEmployeeDto.class);
} }
@Override
public List<QinceEmployeeDto> selectListByOrgCode(String orgCode) {
LambdaQueryWrapper<QinceEmployee> qw = new LambdaQueryWrapper<>();
qw.eq(QinceEmployee::getEmpOrgCode, orgCode);
qw.in(QinceEmployee::getEmpStatus, QinceEmpStatus.NORMAL.getStatus());
List<QinceEmployee> qcEmployees = qinceEmployeeMapper.selectList(qw);
return BeanUtils.transitionDtos(qcEmployees, QinceEmployeeDto.class);
}
} }
...@@ -6,5 +6,8 @@ package com.sfa.job.service.qince; ...@@ -6,5 +6,8 @@ package com.sfa.job.service.qince;
* @describe : * @describe :
*/ */
public interface IQinceEmpAndDeptService { public interface IQinceEmpAndDeptService {
void syncQinceDealerInfo(); void syncQinceEmpLeaderInfo();
void syncQinceDealerUserLeaderInfo();
} }
package com.sfa.job.service.qince.impl; package com.sfa.job.service.qince.impl;
import com.alibaba.fastjson2.JSONObject;
import com.sfa.common.core.utils.StringUtils; import com.sfa.common.core.utils.StringUtils;
import com.sfa.common.core.utils.sdk.FeiShuUtil; import com.sfa.common.core.utils.sdk.FeiShuUtil;
import com.sfa.common.core.utils.sdk.FeiShuUtils; import com.sfa.common.core.utils.sdk.FeiShuUtils;
import com.sfa.job.domain.feishu.dao.IQinceMarketEmployeeDao;
import com.sfa.job.domain.qince.dao.IQinceEmployeeDao; import com.sfa.job.domain.qince.dao.IQinceEmployeeDao;
import com.sfa.job.domain.system.dao.ISysUserDao; import com.sfa.job.domain.system.dao.ISysUserDao;
import com.sfa.job.pojo.feishu.response.QinceMarketEmployeeDto;
import com.sfa.job.pojo.qince.response.QinceEmployeeDto; import com.sfa.job.pojo.qince.response.QinceEmployeeDto;
import com.sfa.job.service.qince.IQinceEmpAndDeptService; import com.sfa.job.service.qince.IQinceEmpAndDeptService;
import com.sfa.job.util.QinCeUtils; import com.sfa.job.util.QinCeUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.HashSet; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -32,37 +33,99 @@ public class QinceEmpAndDeptServiceImpl implements IQinceEmpAndDeptService { ...@@ -32,37 +33,99 @@ public class QinceEmpAndDeptServiceImpl implements IQinceEmpAndDeptService {
private ISysUserDao sysUserDao; private ISysUserDao sysUserDao;
@Autowired @Autowired
private IQinceEmployeeDao qinceEmployeeDao; private IQinceEmployeeDao qinceEmployeeDao;
@Autowired
private IQinceMarketEmployeeDao qinceMarketEmployeeDao;
@Override @Override
public void syncQinceDealerInfo() { public void syncQinceEmpLeaderInfo() {
// 查询飞书的上下级关系(仅区域销售部) // 查询飞书的上下级关系(仅区域销售部)
Map<String, String> empCodeAndLeader = sysUserDao.selectListEmpAndLeader(); Map<String, String> empCodeAndLeader = sysUserDao.selectListEmpAndLeader();
log.info("飞书区域销售部共【{}】人", empCodeAndLeader.size());
List<QinceEmployeeDto> qinceEmployeeDtos = qinceEmployeeDao.selectListByEmpcodes(empCodeAndLeader.keySet()); List<QinceEmployeeDto> qinceEmployeeDtos = qinceEmployeeDao.selectListByEmpcodes(empCodeAndLeader.keySet());
log.info("飞书-区域销售部共【{}】人", qinceEmployeeDtos.size());
Set<String> leaderCodes = new HashSet<>(empCodeAndLeader.values()); Set<String> leaderCodes = new HashSet<>(empCodeAndLeader.values());
List<QinceEmployeeDto> leaderDtos = qinceEmployeeDao.selectListByEmpcodes(leaderCodes); List<QinceEmployeeDto> leaderDtos = qinceEmployeeDao.selectListByEmpcodes(leaderCodes);
Map<String, String> leaderQcIdMap = leaderDtos.stream().collect(Collectors.toMap(m -> m.getEmpCode(), m -> m.getQcId())); Map<String, QinceEmployeeDto> leaderEmpInfoMap = leaderDtos.stream().collect(Collectors.toMap(m -> m.getEmpCode(), m -> m));
log.info("飞书关联勤策-区域销售部共【{}】人", qinceEmployeeDtos.size());
log.info("飞书关联勤策区域销售部共【{}】人", qinceEmployeeDtos.size());
for (QinceEmployeeDto empDto : qinceEmployeeDtos) { for (QinceEmployeeDto empDto : qinceEmployeeDtos) {
String logtext; String leaderCode = empCodeAndLeader.get(empDto.getEmpCode());
try { QinceEmployeeDto leaderEmpInfo = leaderEmpInfoMap.get(leaderCode);
String leaderCode = empCodeAndLeader.get(empDto.getEmpCode()); // 如果上级为空或上级未发生变化,则不处理
String leaderQcId = leaderQcIdMap.get(leaderCode); if (StringUtils.isBlank(leaderCode) || Objects.isNull(leaderEmpInfo) || leaderCode.equals(empDto.getParentCode())) {
// 如果上级为空或上级未发生变化,则不处理 continue;
if (StringUtils.isBlank(leaderCode) || StringUtils.isBlank(leaderQcId) || leaderCode.equals(empDto.getParentCode()) ) {
continue;
}
Map<String, Object> params = qinCeUtils.putUserLeaderParams(empDto.getQcId(), leaderQcId);
String url = qinCeUtils.builderUrl(QinCeUtils.MODIFY_USER, params);
qinCeUtils.postQC(url, params);
logtext = "更新勤策【" + empDto.getEmpCode() + ":" + empDto.getEmpName() + "】的上级Leader信息【" + leaderCode + "】成功";
log.info(logtext);
} catch (Exception e) {
logtext = "更新勤策【" + empDto.getEmpCode() + ":" + empDto.getEmpName() + "】的上级Leader信息失败:" + e.getMessage();
log.error(logtext);
} }
FeiShuUtils.pustRoot(FeiShuUtil.qinceWebhook, logtext); updateQinceUserLeader("区域销售部",empDto,leaderEmpInfo);
} }
} }
/**
* 更新经销商业代人员上级
*/
@Override
public void syncQinceDealerUserLeaderInfo() {
// 查询经销商人客关系
List<QinceMarketEmployeeDto> marketDtos = qinceMarketEmployeeDao.selectByTodayUpdate();
// 查询客户经理的勤策个人信息
if (CollectionUtils.isEmpty(marketDtos)){
log.info("push qc 经销商业代上级: 今日无新增/修改经销商");
return;
}
Set<String> marketEmpCodes = marketDtos.stream().map(m -> m.getFEmpNo()).collect(Collectors.toSet());
List<QinceEmployeeDto> leaderDtos = qinceEmployeeDao.selectListByEmpcodes(marketEmpCodes);
Map<String, QinceEmployeeDto> leaderEmpInfoMap = leaderDtos.stream().collect(Collectors.toMap(m -> m.getEmpCode(), m -> m));
if (CollectionUtils.isEmpty(leaderDtos)){
String logText = "【ERROR】勤员人员信息中,无经销商客户经理信息,经销商包含:" + JSONObject.toJSONString(marketEmpCodes);
log.info(logText);
FeiShuUtils.pustRoot(FeiShuUtil.qinceWebhook, logText);
return;
}
for (QinceMarketEmployeeDto marketDto : marketDtos) {
updateQinceDealerUserLeader(marketDto,leaderEmpInfoMap);
}
}
/**
* 更新业代上级
*/
private void updateQinceDealerUserLeader(QinceMarketEmployeeDto marketDto,Map<String, QinceEmployeeDto> leaderEmpInfoMap){
// 查询勤策-经销商部门下的人员
String dealerCode = marketDto.getDealerCode();
List<QinceEmployeeDto> dealerEmpDtos = qinceEmployeeDao.selectListByOrgCode(dealerCode);
log.info("勤策经销商部门【{}:{}】下共【{}】位业代人员", dealerCode,marketDto.getDealerName(), dealerEmpDtos.size());
String fEmpNo = marketDto.getFEmpNo();
if (Objects.isNull(fEmpNo)){
return;
}
QinceEmployeeDto leaderEmpInfo = leaderEmpInfoMap.get(fEmpNo);
// 对比当前人员上级-经销商客户经理:不同则修改;相同则跳过
for (QinceEmployeeDto dealerEmpDto : dealerEmpDtos) {
if (Objects.nonNull(dealerEmpDto.getParentCode()) && fEmpNo.equals(dealerEmpDto.getParentCode())){
continue;
}
updateQinceUserLeader(marketDto.getDealerName(),dealerEmpDto,leaderEmpInfo);
}
}
/**
* @param empDto 员工对象
* @param leaderEmpInfo 员工上级对象
*/
private void updateQinceUserLeader(String qcDeptName,QinceEmployeeDto empDto,QinceEmployeeDto leaderEmpInfo){
String logtext;
try {
Map<String, Object> params = qinCeUtils.putUserLeaderParams(empDto.getQcId(), leaderEmpInfo.getQcId());
String url = qinCeUtils.builderUrl(QinCeUtils.MODIFY_USER, params);
qinCeUtils.postQC(url, params);
logtext = "【OK】更新勤策「"+qcDeptName+"」部门的【" + empDto.getEmpCode() + ":" + empDto.getEmpName() + "】上级Leader为【" + leaderEmpInfo.getEmpCode() + ":" + leaderEmpInfo.getEmpName() + "】成功";
log.info(logtext);
} catch (Exception e) {
logtext = "【ERROR】更新勤策「"+qcDeptName+"」部门的【" + empDto.getEmpCode() + ":" + empDto.getEmpName() + "】上级Leader信息失败:" + e.getMessage();
log.error(logtext);
}
FeiShuUtils.pustRoot(FeiShuUtil.qinceWebhook, logtext);
}
} }
...@@ -47,9 +47,12 @@ public class QinceCoreTask { ...@@ -47,9 +47,12 @@ public class QinceCoreTask {
* 根据飞书上下级关系,同步勤策上下级信息 * 根据飞书上下级关系,同步勤策上下级信息
*/ */
@XxlJob("qince_modify_emp_leader") @XxlJob("qince_modify_emp_leader")
public void syncQinceDealerInfo() { public void updateQinceEmpLeader() {
log.info("同步勤策员工上下级关系 start"); log.info("同步勤策员工上下级关系 start");
qinceEmpAndDeptService.syncQinceDealerInfo(); // 同步内部员工
qinceEmpAndDeptService.syncQinceEmpLeaderInfo();
// 同步经销商业代
qinceEmpAndDeptService.syncQinceDealerUserLeaderInfo();
log.info("同步勤策员工上下级关系 end"); log.info("同步勤策员工上下级关系 end");
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论