|
|
@@ -18,6 +18,8 @@ import com.dgtly.sync.service.ISyncLogService;
|
|
|
import com.dgtly.system.domain.SysDictData;
|
|
|
import com.dgtly.system.domain.SysUser;
|
|
|
import com.dgtly.system.domain.SysUserExt;
|
|
|
+import com.dgtly.system.domain.SysUserRole;
|
|
|
+import com.dgtly.system.mapper.SysUserRoleMapper;
|
|
|
import com.dgtly.system.service.ISysConfigService;
|
|
|
import com.dgtly.system.service.ISysDictDataService;
|
|
|
import com.dgtly.system.service.ISysUserService;
|
|
|
@@ -50,7 +52,8 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
private MetaDiySalesorgtreeMapper metaDiySalesorgtreeMapper;
|
|
|
@Autowired
|
|
|
private ISyncLogService syncLogService;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private SysUserRoleMapper userRoleMapper;
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -405,9 +408,38 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
userExt.setSalesLevel("company_level");
|
|
|
break;
|
|
|
}
|
|
|
- }else{
|
|
|
- throw new OutOfDIYPostNameException(m);
|
|
|
+ }else {
|
|
|
+ log.error("DIY用户对应的岗位未找到!当前用户信息: " + m.getLoginName() + " , 岗位名称: " + postName);
|
|
|
+ SyncFailDetail syncFailDetail = new SyncFailDetail();
|
|
|
+ syncFailDetail.setPackageId(packageId);
|
|
|
+ syncFailDetail.setFailReason("DIY用户对应的岗位未找到!当前用户信息: " + m.getLoginName() + " , 岗位名称: " + postName);
|
|
|
+ syncFailDetail.setDataJson(JSONObject.toJSONString(m));
|
|
|
+ syncFailDetail.setFailLevel("1");
|
|
|
+ syncFailDetail.setExceptionType("not found post");
|
|
|
+ failDetails.add(syncFailDetail);
|
|
|
+ failCount++;
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
+ this.save(user);
|
|
|
+ continue;
|
|
|
}
|
|
|
+
|
|
|
+ if (StringUtils.isEmpty(userExt.getOrgCode())){
|
|
|
+ log.error("DIY用户对应的销售部未找到!当前用户信息: " + m.getLoginName() + " , 销售部名称: " + userExt.getOrgName());
|
|
|
+ SyncFailDetail syncFailDetail = new SyncFailDetail();
|
|
|
+ syncFailDetail.setPackageId(packageId);
|
|
|
+ syncFailDetail.setFailReason("DIY用户对应的销售部未找到!当前用户信息: " + m.getLoginName() + " , 销售部名称: " + userExt.getOrgName());
|
|
|
+ syncFailDetail.setDataJson(JSONObject.toJSONString(m));
|
|
|
+ syncFailDetail.setFailLevel("1");
|
|
|
+ syncFailDetail.setExceptionType("not found dept");
|
|
|
+ failDetails.add(syncFailDetail);
|
|
|
+ failCount++;
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
+ this.save(user);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// if(userExt.getOrgCode()==null){
|
|
|
@@ -418,6 +450,18 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
loginNameList = loginNameList.stream().map(String::toUpperCase).collect(Collectors.toSet());
|
|
|
if (loginNameList.contains(user.getLoginName().toUpperCase())) {
|
|
|
/** 更新 */
|
|
|
+ SysUser sysUser=sysUserService.selectUserByLoginName(user.getLoginName());
|
|
|
+ if(!sysUser.getSysUserExt().getSalesLevel().equals(userExt.getSalesLevel())){
|
|
|
+ sysUserService.deleteByLoginName(user.getLoginName());
|
|
|
+ }else if(!sysUser.getSysUserExt().getOrgCode().equals(userExt.getOrgCode())){
|
|
|
+ SysUserRole role=new SysUserRole();
|
|
|
+ role.setUserId(sysUser.getUserId());
|
|
|
+ for (Long role_Id : roleIds)
|
|
|
+ {
|
|
|
+ role.setRoleId(role_Id);
|
|
|
+ userRoleMapper.deleteUserRoleInfo(role);
|
|
|
+ }
|
|
|
+ }
|
|
|
SysUser userInDb =sysUserService.selectUserByLoginName(user.getLoginName());
|
|
|
if(!userInDb.getSysUserExt().getSalesLevel().equals("diy_level")){
|
|
|
user.setSysUserExt(userExt);
|
|
|
@@ -592,13 +636,54 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
userExt.setOrgName(m.getStext5());
|
|
|
userExt.setOrgCode(m.getSapEmployeeId());
|
|
|
} else {
|
|
|
- throw new OutOfDIYPostNameException(m);
|
|
|
+ log.error("CW用户对应的岗位未找到!当前用户信息: " + m.getLoginName() + " , 岗位名称: " + postName);
|
|
|
+ SyncFailDetail syncFailDetail = new SyncFailDetail();
|
|
|
+ syncFailDetail.setPackageId(packageId);
|
|
|
+ syncFailDetail.setFailReason("CW用户对应的岗位未找到!当前用户信息: " + m.getLoginName() + " , 岗位名称: " + postName);
|
|
|
+ syncFailDetail.setDataJson(JSONObject.toJSONString(m));
|
|
|
+ syncFailDetail.setFailLevel("1");
|
|
|
+ syncFailDetail.setExceptionType("not found post");
|
|
|
+ failDetails.add(syncFailDetail);
|
|
|
+ failCount++;
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
+ this.save(user);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isEmpty(userExt.getOrgCode())){
|
|
|
+ log.error("CW用户对应的销售部未找到!当前用户信息: " + m.getLoginName() + " , 销售部名称: " + userExt.getOrgName());
|
|
|
+ SyncFailDetail syncFailDetail = new SyncFailDetail();
|
|
|
+ syncFailDetail.setPackageId(packageId);
|
|
|
+ syncFailDetail.setFailReason("CW用户对应的销售部未找到!当前用户信息: " + m.getLoginName() + " , 销售部名称: " + userExt.getOrgName());
|
|
|
+ syncFailDetail.setDataJson(JSONObject.toJSONString(m));
|
|
|
+ syncFailDetail.setFailLevel("1");
|
|
|
+ syncFailDetail.setExceptionType("not found dept");
|
|
|
+ failDetails.add(syncFailDetail);
|
|
|
+ failCount++;
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
+ this.save(user);
|
|
|
+ continue;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**======== 构建diy用户扩展信息表 end===============*/
|
|
|
loginNameList = loginNameList.stream().map(String::toUpperCase).collect(Collectors.toSet());
|
|
|
if (loginNameList.contains(user.getLoginName().toUpperCase())) {
|
|
|
/** 更新 */
|
|
|
+ SysUser sysUser=sysUserService.selectUserByLoginName(user.getLoginName());
|
|
|
+ if(!sysUser.getSysUserExt().getSalesLevel().equals(userExt.getSalesLevel())){
|
|
|
+ sysUserService.deleteByLoginName(user.getLoginName());
|
|
|
+ }else if(!sysUser.getSysUserExt().getOrgCode().equals(userExt.getOrgCode())){
|
|
|
+ SysUserRole role=new SysUserRole();
|
|
|
+ role.setUserId(sysUser.getUserId());
|
|
|
+ for (Long role_Id : roleIds)
|
|
|
+ {
|
|
|
+ role.setRoleId(role_Id);
|
|
|
+ userRoleMapper.deleteUserRoleInfo(role);
|
|
|
+ }
|
|
|
+ }
|
|
|
SysUser userInDb = sysUserService.selectUserByLoginName(user.getLoginName());
|
|
|
if (!userInDb.getSysUserExt().getSalesLevel().equals("diy_level")) {
|
|
|
user.setSysUserExt(userExt);
|
|
|
@@ -759,6 +844,9 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
syncFailDetail.setExceptionType("not found post");
|
|
|
failDetails.add(syncFailDetail);
|
|
|
failCount++;
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
+ this.save(user);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
@@ -772,6 +860,9 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
syncFailDetail.setExceptionType("not found dept");
|
|
|
failDetails.add(syncFailDetail);
|
|
|
failCount++;
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
+ this.save(user);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
@@ -779,6 +870,18 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
loginNameList = loginNameList.stream().map(String::toUpperCase).collect(Collectors.toSet());
|
|
|
if (loginNameList.contains(user.getLoginName().toUpperCase())) {
|
|
|
/** 更新 */
|
|
|
+ SysUser sysUser=sysUserService.selectUserByLoginName(user.getLoginName());
|
|
|
+ if(!sysUser.getSysUserExt().getSalesLevel().equals(userExt.getSalesLevel())){
|
|
|
+ sysUserService.deleteByLoginName(user.getLoginName());
|
|
|
+ }else if(!sysUser.getSysUserExt().getOrgCode().equals(userExt.getOrgCode())){
|
|
|
+ SysUserRole role=new SysUserRole();
|
|
|
+ role.setUserId(sysUser.getUserId());
|
|
|
+ for (Long role_Id : roleIds)
|
|
|
+ {
|
|
|
+ role.setRoleId(role_Id);
|
|
|
+ userRoleMapper.deleteUserRoleInfo(role);
|
|
|
+ }
|
|
|
+ }
|
|
|
user.setSysUserExt(userExt);
|
|
|
user.setUpdateTime(new Date());
|
|
|
sysUserService.updateUserInfoAndSalesExt(user);
|
|
|
@@ -844,6 +947,126 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
return syncLog;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public SyncLog analysisSysClueReporting() {
|
|
|
+ List<String> businessUnitList=new ArrayList<>();
|
|
|
+ businessUnitList.add("CW");
|
|
|
+ businessUnitList.add("YSL");
|
|
|
+ businessUnitList.add("DIY");
|
|
|
+ List<MetaEmployeeDiy> metaEmployeeDiys = metaEmployeeDiyMapper.selectMetaEmployeetClueReporting(businessUnitList);
|
|
|
+ SyncLog syncLog = new SyncLog();
|
|
|
+ syncLog.setSyncType("sysuserClueReporting");
|
|
|
+ syncLog.setStartTime(new Date());
|
|
|
+
|
|
|
+ Set<String> loginNameList = sysUserService.selectAllUserLoginName();
|
|
|
+ syncLog.setTotalCount((long) metaEmployeeDiys.size());
|
|
|
+ List<SyncFailDetail> failDetails = new ArrayList<>();
|
|
|
+ long successCount = 0;
|
|
|
+ long failCount = 0;
|
|
|
+
|
|
|
+ Long deptId = Long.parseLong(configService.selectConfigByKey("libang.user.ClueReporting.deptid"));
|
|
|
+ Long roleId = Long.parseLong(configService.selectConfigByKey("libang.user.ClueReporting.roleid"));
|
|
|
+ Long[] roleIds = {roleId};
|
|
|
+ if (metaEmployeeDiys.size() > 0) {
|
|
|
+ for (MetaEmployeeDiy m : metaEmployeeDiys) {
|
|
|
+ try {
|
|
|
+ /** =============用户基本信息构建 start===============*/
|
|
|
+ SysUser user = new SysUser();
|
|
|
+ user.setCompanyId(1L);
|
|
|
+ user.setDeptId(deptId);
|
|
|
+ user.setLoginName(m.getLoginName());
|
|
|
+ user.setUserName(m.getName());
|
|
|
+ user.setEmail(m.getEmail());
|
|
|
+ user.setPhonenumber(m.getMobile());
|
|
|
+ String sex = "" + (Integer.parseInt(m.getSex()) - 1);
|
|
|
+ user.setSex(sex);
|
|
|
+ user.setRoleIds(roleIds);
|
|
|
+ //同步0
|
|
|
+ user.setIsSync("0");
|
|
|
+ if (m.getStatus() == 0) {
|
|
|
+ user.setStatus("1");
|
|
|
+ user.setDelFlag("2");
|
|
|
+ } else {
|
|
|
+ user.setStatus("0");
|
|
|
+ }
|
|
|
+ /** =============用户基本信息构建 end===============*/
|
|
|
+
|
|
|
+
|
|
|
+ /**======== 构建用户扩展信息表 start===============*/
|
|
|
+ SysUserExt userExt = new SysUserExt();
|
|
|
+ userExt.setBossEmployeeId(m.getBossEmployeeId());
|
|
|
+ userExt.setBossName(m.getBossName());
|
|
|
+ userExt.setSapEmployeeId(m.getSapEmployeeId());
|
|
|
+ userExt.setPostCode(m.getEmployeePost());
|
|
|
+ String postName = m.getEmployeePostName();
|
|
|
+ userExt.setPostName(postName);
|
|
|
+ userExt.setSalesLevel("ClueReporting_level");
|
|
|
+ userExt.setOrgName("品保中心");
|
|
|
+ /**======== 构建用户扩展信息表 end===============*/
|
|
|
+ loginNameList = loginNameList.stream().map(String::toUpperCase).collect(Collectors.toSet());
|
|
|
+ if (loginNameList.contains(user.getLoginName().toUpperCase())) {
|
|
|
+ /** 更新 */
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
+ sysUserService.updateUserInfoAndSalesExt(user);
|
|
|
+ } else {
|
|
|
+ /** 插入 */
|
|
|
+ userExt.setIdentity(UserIdentityUtil.UI_ClueReporting);
|
|
|
+ //修改密码并加密
|
|
|
+ user.setPassword(m.getLoginName());
|
|
|
+ user.setSalt(ShiroSaltUtil.randomSalt());
|
|
|
+ user.setPassword(EncryptPassWordClass.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ sysUserService.insertUserAndSalesExt(user);
|
|
|
+ successCount++;
|
|
|
+ }
|
|
|
+ } catch (OutOfScopeDIYException | NotFountOrgCodeException | OutOfDIYPostNameException | OutOfLeveLException | NotOrgNameException e) {
|
|
|
+ /**
|
|
|
+ * 警告类异常
|
|
|
+ */
|
|
|
+ SyncFailDetail syncFailDetail = new SyncFailDetail();
|
|
|
+ syncFailDetail.setFailReason(e.getMessage());
|
|
|
+ syncFailDetail.setDataJson(JSONObject.toJSONString(m));
|
|
|
+ syncFailDetail.setFailLevel("0");
|
|
|
+ syncFailDetail.setExceptionType(e.getClass().getSimpleName());
|
|
|
+ failDetails.add(syncFailDetail);
|
|
|
+ failCount++;
|
|
|
+ } catch (Exception e) {
|
|
|
+ /**
|
|
|
+ * 错误异常
|
|
|
+ */
|
|
|
+ SyncFailDetail syncFailDetail = new SyncFailDetail();
|
|
|
+ syncFailDetail.setFailReason(e.getMessage());
|
|
|
+ syncFailDetail.setDataJson(JSONObject.toJSONString(m));
|
|
|
+ syncFailDetail.setFailLevel("1");
|
|
|
+ syncFailDetail.setExceptionType(e.getClass().getSimpleName());
|
|
|
+ failDetails.add(syncFailDetail);
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("解析品保中心用户出错", e);
|
|
|
+ failCount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ syncLog.setSuccessCount(successCount);
|
|
|
+ syncLog.setFaileCount(failCount);
|
|
|
+ } else {
|
|
|
+ syncLog.setSuccessCount(0l);
|
|
|
+ syncLog.setFaileCount(0l);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ syncLog.setEndTime(new Date());
|
|
|
+ if (failDetails.size() > 0) {
|
|
|
+ syncFailDetailMapper.batchInsertSyncFailDetail(failDetails);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("解析品保中心用户插入解析日志出错", e);
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new BusinessException("解析品保中心用户插入解析日志出错", e);
|
|
|
+ } finally {
|
|
|
+ syncLogService.insertSyncLog(syncLog);
|
|
|
+ }
|
|
|
+ return syncLog;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取字典的set
|
|
|
* @param dictType
|
|
|
@@ -858,7 +1081,42 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ /**品保中心 diy,cw,ysl 找不到部门的人员线索报备新增**/
|
|
|
+ public void save(SysUser user){
|
|
|
+ Long deptId = Long.parseLong(configService.selectConfigByKey("libang.user.ClueReporting.deptid"));
|
|
|
+ Long roleId = Long.parseLong(configService.selectConfigByKey("libang.user.ClueReporting.roleid"));
|
|
|
+ Set<String> loginNameList = sysUserService.selectAllUserLoginName();
|
|
|
+ Long[] roleIds = {roleId};
|
|
|
+ user.setDeptId(deptId);
|
|
|
+ user.setRoleIds(roleIds);
|
|
|
+ //同步0
|
|
|
+ user.setIsSync("0");
|
|
|
+ SysUserExt userExt =user.getSysUserExt();
|
|
|
+ userExt.setSalesLevel("ClueReporting_level");
|
|
|
+ userExt.setOrgName("品保中心");
|
|
|
+ /**======== 构建用户扩展信息表 end===============*/
|
|
|
+ loginNameList = loginNameList.stream().map(String::toUpperCase).collect(Collectors.toSet());
|
|
|
+ if (loginNameList.contains(user.getLoginName().toUpperCase())) {
|
|
|
+ /** 更新 */
|
|
|
+ SysUser sysUser=sysUserService.selectUserByLoginName(user.getLoginName());
|
|
|
+ sysUserService.deleteByLoginName(user.getLoginName());
|
|
|
+ SysUserRole role=new SysUserRole();
|
|
|
+ role.setUserId(sysUser.getUserId());
|
|
|
+ userRoleMapper.deleteUserRoleInfo(role);
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
+ sysUserService.updateUserInfoAndSalesExt(user);
|
|
|
+ } else {
|
|
|
+ /** 插入 */
|
|
|
+ userExt.setIdentity(UserIdentityUtil.UI_ClueReporting);
|
|
|
+ //修改密码并加密
|
|
|
+ user.setPassword(user.getLoginName());
|
|
|
+ user.setSalt(ShiroSaltUtil.randomSalt());
|
|
|
+ user.setPassword(EncryptPassWordClass.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ sysUserService.insertUserAndSalesExt(user);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
|
|
|
/**
|