|
|
@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.dgtly.common.exception.BusinessException;
|
|
|
import com.dgtly.common.utils.ShiroSaltUtil;
|
|
|
import com.dgtly.common.utils.security.EncryptPassWordClass;
|
|
|
-import com.dgtly.sync.domain.MetaDiySalesorgtree;
|
|
|
import com.dgtly.sync.domain.MetaEmployeeDiy;
|
|
|
import com.dgtly.sync.domain.SyncFailDetail;
|
|
|
import com.dgtly.sync.domain.SyncLog;
|
|
|
@@ -33,9 +32,6 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(AnalysisSysUserService.class);
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
@Autowired
|
|
|
private SyncFailDetailMapper syncFailDetailMapper;
|
|
|
@Autowired
|
|
|
@@ -665,6 +661,160 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
return syncLog;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public SyncLog analysisSysYSLUser(String packageId) {
|
|
|
+ MetaEmployeeDiy param = new MetaEmployeeDiy();
|
|
|
+ if (packageId == null || packageId.trim().equals("")) {
|
|
|
+ Long l = new Date().getTime();
|
|
|
+ packageId = l.toString();
|
|
|
+ } else {
|
|
|
+ param.setPackageId(packageId);
|
|
|
+ }
|
|
|
+
|
|
|
+ param.setBusinessUnit("YSL");
|
|
|
+ param.setStext3("雅士利");
|
|
|
+
|
|
|
+ List<MetaEmployeeDiy> metaEmployeeDiys = metaEmployeeDiyMapper.selectMetaEmployeeDiyList(param);
|
|
|
+ SyncLog syncLog = new SyncLog();
|
|
|
+ syncLog.setSyncType("sysuserysl");
|
|
|
+ syncLog.setStartTime(new Date());
|
|
|
+
|
|
|
+ Set<String> loginNameList = sysUserService.selectAllUserLoginName();
|
|
|
+
|
|
|
+ syncLog.setPackageId(packageId);
|
|
|
+ syncLog.setTotalCount((long) metaEmployeeDiys.size());
|
|
|
+ List<SyncFailDetail> failDetails = new ArrayList<>();
|
|
|
+ long successCount = 0;
|
|
|
+ long failCount = 0;
|
|
|
+
|
|
|
+ Long deptId = Long.parseLong(configService.selectConfigByKey("libang.user.ysl.deptid"));
|
|
|
+ Long roleId = Long.parseLong(configService.selectConfigByKey("libang.user.ysl.roleid"));
|
|
|
+ Long[] roleIds = {roleId};
|
|
|
+ if (metaEmployeeDiys.size() > 0) {
|
|
|
+
|
|
|
+ Set<String> companyPostNameSet = getConfigValueSet("ysl_comp_postname");
|
|
|
+ Set<String> officePostNameSet = getConfigValueSet("ysl_office_postname");
|
|
|
+ Set<String> empPostNameSet = getConfigValueSet("ysl_emp_postname");
|
|
|
+ Map<Integer, Map<String, Map<String, String>>> salesTreeMap = getDiyYSLSalesOrgTree();
|
|
|
+ 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());
|
|
|
+ String postName = m.getEmployeePostName();
|
|
|
+ userExt.setPostName(postName);
|
|
|
+
|
|
|
+ if (companyPostNameSet.contains(postName)) {
|
|
|
+ userExt.setSalesLevel("ysl_diy");
|
|
|
+ userExt.setOrgName(m.getStext4());
|
|
|
+ setExtOrgCodeY9(salesTreeMap, 3, userExt);
|
|
|
+ } else if (officePostNameSet.contains(postName)) {
|
|
|
+ userExt.setSalesLevel("ysl_office");
|
|
|
+ userExt.setOrgName(m.getStext5());
|
|
|
+ setExtOrgCodeY9(salesTreeMap, 4, userExt);
|
|
|
+ } else if (empPostNameSet.contains(postName)) {
|
|
|
+ userExt.setSalesLevel("ysl_emp");
|
|
|
+ userExt.setOrgName(m.getStext5());
|
|
|
+ setExtOrgCodeY9(salesTreeMap, 4, userExt);
|
|
|
+ } else {
|
|
|
+ log.error("YSL用户对应的岗位未找到!当前用户信息: " + m.getLoginName() + " , 岗位名称: " + postName);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**======== 构建diy用户扩展信息表 end===============*/
|
|
|
+ if (loginNameList.contains(user.getLoginName())) {
|
|
|
+ /** 更新 */
|
|
|
+ SysUser userInDb = sysUserService.selectUserByLoginName(user.getLoginName());
|
|
|
+ if (!userInDb.getSysUserExt().getSalesLevel().equals("diy_level")) {
|
|
|
+ user.setSysUserExt(userExt);
|
|
|
+ }
|
|
|
+ user.setUpdateTime(new Date());
|
|
|
+ sysUserService.updateUserInfoAndSalesExt(user);
|
|
|
+ } else {
|
|
|
+ /** 插入 */
|
|
|
+
|
|
|
+ userExt.setIdentity("4");
|
|
|
+
|
|
|
+ //修改密码并加密
|
|
|
+ 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.setPackageId(packageId);
|
|
|
+ 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.setPackageId(packageId);
|
|
|
+ syncFailDetail.setFailReason(e.getMessage());
|
|
|
+ syncFailDetail.setDataJson(JSONObject.toJSONString(m));
|
|
|
+ syncFailDetail.setFailLevel("1");
|
|
|
+ syncFailDetail.setExceptionType(e.getClass().getSimpleName());
|
|
|
+ failDetails.add(syncFailDetail);
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("解析ysl用户出错", 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("解析ysl用户插入解析日志出错", e);
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new BusinessException("解析ysl用户插入解析日志出错", e);
|
|
|
+ } finally {
|
|
|
+ syncLogService.insertSyncLog(syncLog);
|
|
|
+ }
|
|
|
+ return syncLog;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取字典的set
|
|
|
* @param dictType
|
|
|
@@ -891,6 +1041,20 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取销售组织架构树
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<Integer,Map<String,Map<String,String>>> getDiyYSLSalesOrgTree(){
|
|
|
+ Map<String,Map<String,String>> map3= metaDiySalesorgtreeMapper.selectSalesTreeByOrgCode(3, "4000");
|
|
|
+
|
|
|
+ Map<String,Map<String,String>> map4= metaDiySalesorgtreeMapper.selectSalesTreeByOrgCode(4, "4000");
|
|
|
+ Map<Integer,Map<String,Map<String,String>>>res = new HashMap<>();
|
|
|
+ res.put(3,map3);
|
|
|
+ res.put(4,map4);
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 根据销售的部门等级及销售组织名称获取销售的组织code
|
|
|
* @param salesTree
|