|
|
@@ -505,6 +505,170 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @description: 处理应用服务本部的人,只给门店拜访权限
|
|
|
+ * @param: []
|
|
|
+ * @return: com.dgtly.sync.domain.SyncLog
|
|
|
+ * @author: njs
|
|
|
+ * @date: 2025/5/8 14:02
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public SyncLog analysisSysApplicationServiceUser() {
|
|
|
+ //解析逻辑件DIY用户逻辑.jpg
|
|
|
+ MetaEmployee param = new MetaEmployee();
|
|
|
+ param.setBusinessUnit("应用服务本部");
|
|
|
+ Long l = new Date().getTime();
|
|
|
+ String packageId = l.toString();
|
|
|
+ List<MetaEmployee> MetaEmployees = MetaEmployeeDiyMapper.selectMetaEmployeeDiyCopy1List(param);
|
|
|
+ SyncLog syncLog = new SyncLog();
|
|
|
+ syncLog.setSyncType("sysuserApplicationService");
|
|
|
+ syncLog.setStartTime(new Date());
|
|
|
+ Set<String> loginNameList = sysUserService.selectAllUserLoginName();
|
|
|
+ syncLog.setTotalCount((long)MetaEmployees.size());
|
|
|
+ List<SyncFailDetail> failDetails = new ArrayList<>();
|
|
|
+ long successCount = 0;
|
|
|
+ long failCount = 0;
|
|
|
+ Long deptId = Long.parseLong(configService.selectConfigByKey("libang.user.applicationService.deptid"));
|
|
|
+ Long roleId = Long.parseLong(configService.selectConfigByKey("libang.user.applicationService.roleid"));
|
|
|
+ Long[] roleIds = {roleId};
|
|
|
+ Map<Integer,Map<String,Map<String,String>>> salesTreeMap = getDiySalesOrgTree();
|
|
|
+ if(MetaEmployees.size()>0){
|
|
|
+ for(MetaEmployee m:MetaEmployees) {
|
|
|
+ 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("applicationService_level");
|
|
|
+ userExt.setOrgName(m.getStext3());
|
|
|
+ setExtOrgCodeOn2(salesTreeMap, userExt);
|
|
|
+ if (StringUtils.isEmpty(userExt.getOrgCode())){
|
|
|
+ log.error("应用服务本部用户对应的销售部未找到!当前用户信息: " + m.getLoginName() + " , 销售部名称: " + userExt.getOrgName());
|
|
|
+ SyncFailDetail syncFailDetail = new SyncFailDetail();
|
|
|
+ syncFailDetail.setPackageId(packageId);
|
|
|
+ syncFailDetail.setFailReason("应用服务本部用户对应的销售部未找到!当前用户信息: " + 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());
|
|
|
+ }
|
|
|
+ System.out.println("解析应用服务本部用户不一致情况原/新"+sysUser.getSysUserExt().getPostCode()+"/"+userExt.getPostCode());
|
|
|
+ SysUserRole role=new SysUserRole();
|
|
|
+ role.setUserId(sysUser.getUserId());
|
|
|
+ userRoleMapper.deleteUserRoleInfo(role);
|
|
|
+ user.setUserId(sysUser.getUserId());
|
|
|
+ insertUserRole(user);
|
|
|
+
|
|
|
+ if(!"applicationService_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.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("解析应用服务本部用户出错", e);
|
|
|
+ failCount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ syncLog.setSuccessCount(successCount);
|
|
|
+ syncLog.setFaileCount(failCount);
|
|
|
+ }else{
|
|
|
+ syncLog.setSuccessCount(0L);
|
|
|
+ syncLog.setFaileCount(0L);
|
|
|
+ }
|
|
|
+ try{
|
|
|
+ syncLog.setPackageId(packageId);
|
|
|
+ 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;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 解析CW用户数据 异步执行
|