|
@@ -334,6 +334,166 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param
|
|
|
+ * @description: 解析零售下事业部人员
|
|
|
+ * @param:
|
|
|
+ * @return:
|
|
|
+ * @author: njs
|
|
|
+ * @date: 2023/5/10 10:12
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public SyncLog analysisSysDivisionUser() {
|
|
|
+ //解析零售下事业部人员直接sql查
|
|
|
+ List<MetaEmployeeDiy> metaEmployeeDiys = metaEmployeeDiyMapper.selectMetaEmployeeDiyListByDivision();
|
|
|
+ SyncLog syncLog = new SyncLog();
|
|
|
+ syncLog.setSyncType("sysuser");
|
|
|
+ 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.division.deptid"));
|
|
|
+ Long roleId = Long.parseLong(configService.selectConfigByKey("libang.user.division.roleid"));
|
|
|
+ Long[] roleIds = {roleId};
|
|
|
+ Map<Integer,Map<String,Map<String,String>>> salesTreeMap = getDiySalesOrgTree();
|
|
|
+ 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);
|
|
|
+ if (m.getStatus() == 0) {
|
|
|
+ user.setStatus("1");
|
|
|
+ user.setDelFlag("2");
|
|
|
+ } else {
|
|
|
+ user.setStatus("0");
|
|
|
+ }
|
|
|
+ /** =============用户基本信息构建 end===============*/
|
|
|
+
|
|
|
+
|
|
|
+ /**======== 构建diy用户扩展信息表 start===============*/
|
|
|
+ SysUserExt userExt = new SysUserExt();
|
|
|
+ userExt.setBossEmployeeId(m.getBossEmployeeId());
|
|
|
+ userExt.setBossName(m.getBossName());
|
|
|
+ userExt.setSapEmployeeId(m.getSapEmployeeId());
|
|
|
+ userExt.setPostCode(m.getEmployeePost());
|
|
|
+ userExt.setDuty(m.getDuty());
|
|
|
+ userExt.setDutyName(m.getDutyName());
|
|
|
+ String postName = m.getEmployeePostName();
|
|
|
+ userExt.setPostName(postName);
|
|
|
+ userExt.setSalesLevel("division_level");
|
|
|
+ userExt.setOrgName(m.getStext3());
|
|
|
+ setExtOrgCodeOn2(salesTreeMap, userExt);
|
|
|
+ if (StringUtils.isEmpty(userExt.getOrgCode())){
|
|
|
+ log.error("DIY-事业部用户对应的销售部未找到!当前用户信息: " + m.getLoginName() + " , 销售部名称: " + userExt.getOrgName());
|
|
|
+ SyncFailDetail syncFailDetail = new SyncFailDetail();
|
|
|
+ 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,m);
|
|
|
+ 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("1".equals(sysUser.getIsSync())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(!userExt.getSalesLevel().equals(sysUser.getSysUserExt().getSalesLevel())){
|
|
|
+ sysUserService.deleteByLoginName(user.getLoginName());
|
|
|
+ }
|
|
|
+ //if(!sysUser.getSysUserExt().getPostCode().equals(userExt.getPostCode())){
|
|
|
+ System.out.println("解析DIY-事业部部门不一致情况原/新"+sysUser.getSysUserExt().getPostCode()+"/"+userExt.getPostCode());
|
|
|
+ SysUserRole role=new SysUserRole();
|
|
|
+ role.setUserId(sysUser.getUserId());
|
|
|
+ userRoleMapper.deleteUserRoleInfo(role);
|
|
|
+ user.setUserId(sysUser.getUserId());
|
|
|
+ insertUserRole(user);
|
|
|
+ //}
|
|
|
+
|
|
|
+ if(!"division_level".equals(sysUser.getSysUserExt().getSalesLevel())){
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ }
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
+ sysUserService.updateUserInfoAndSalesExt(user);
|
|
|
+ } else {
|
|
|
+ /** 插入 */
|
|
|
+ //修改密码并加密
|
|
|
+ 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("解析DIY-事业部用户出错", 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("解析DIY-事业部用户插入解析日志出错",e);
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new BusinessException("解析DIY-事业部用户插入解析日志出错",e);
|
|
|
+ }finally {
|
|
|
+ syncLogService.insertSyncLog(syncLog);
|
|
|
+ }
|
|
|
+ return syncLog;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 解析CW用户数据 异步执行
|
|
|
* @param packageId
|
|
@@ -1107,11 +1267,13 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
* @return
|
|
|
*/
|
|
|
public Map<Integer,Map<String,Map<String,String>>> getDiySalesOrgTree(){
|
|
|
+ Map<String,Map<String,String>> map2= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(2, "DIY");
|
|
|
Map<String,Map<String,String>> map3= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(3, "DIY");
|
|
|
Map<String,Map<String,String>> map4= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(4, "DIY");
|
|
|
Map<String,Map<String,String>> map5= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(5, "DIY");
|
|
|
Map<String,Map<String,String>> map6= metaDiySalesorgtreeMapper.selectSalesTreeByLevel(6, "DIY");
|
|
|
Map<Integer,Map<String,Map<String,String>>>res = new HashMap<>();
|
|
|
+ res.put(2,map2);
|
|
|
res.put(3,map3);
|
|
|
res.put(4,map4);
|
|
|
res.put(5,map5);
|
|
@@ -1293,6 +1455,24 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
}
|
|
|
return false;
|
|
|
|
|
|
+ }
|
|
|
+ //事业部人员组织架构
|
|
|
+ public boolean setExtOrgCodeOn2(Map<Integer,Map<String,Map<String,String>>> salesTree,SysUserExt userExt){
|
|
|
+ if(userExt.getOrgName()==null||userExt.getOrgName().trim().equals("")){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ String orgname = userExt.getOrgName();
|
|
|
+ Map<String,Map<String,String>> temp = salesTree.get(2);
|
|
|
+ //遍历区公司名称
|
|
|
+ for (String key : temp.keySet()) {
|
|
|
+ if(orgname.indexOf(key)!=-1){
|
|
|
+ userExt.setOrgCode(temp.get(key).get("orgcode"));
|
|
|
+ userExt.setOrgName(key);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
public int getLevel(SysUserExt userExt,Map<Integer,Map<String,Map<String,String>>> salesTree){
|