| | |
| | | * @return 同步结果 |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | |
| | | public AjaxResult syncOaUsers(List<UserSyncDTO> oaUsers) |
| | | { |
| | | try |
| | |
| | | return AjaxResult.warn("传入的用户数据为空"); |
| | | } |
| | | |
| | | log.info("开始同步 {} 条OA用户数据到 MySQL 数据库...", oaUsers.size()); |
| | | // log.info("开始同步 {} 条OA用户数据到 MySQL 数据库...", oaUsers.size()); |
| | | |
| | | int createdCount = 0; |
| | | int updatedCount = 0; |
| | |
| | | // 用户已存在,更新信息 |
| | | updateExistingUser(existingUser, dto, deptId); |
| | | updatedCount++; |
| | | log.info("更新用户: {} ({}), oaUserId: {}", |
| | | dto.getNickName(), dto.getUserName(), dto.getOaUserId()); |
| | | // log.info("更新用户: {} ({}), oaUserId: {}", |
| | | // dto.getNickName(), dto.getUserName(), dto.getOaUserId()); |
| | | } |
| | | else |
| | | { |
| | |
| | | userByName.setUpdateBy("sync"); |
| | | sysUserMapper.updateUser(userByName); |
| | | updatedCount++; |
| | | log.info("更新已存在用户名的用户: {} ({}), 设置oaUserId: {}", |
| | | dto.getNickName(), dto.getUserName(), dto.getOaUserId()); |
| | | // log.info("更新已存在用户名的用户: {} ({}), 设置oaUserId: {}", |
| | | // dto.getNickName(), dto.getUserName(), dto.getOaUserId()); |
| | | } |
| | | else |
| | | { |
| | | // 创建新用户 |
| | | createNewUser(dto, deptId); |
| | | createdCount++; |
| | | log.info("创建新用户: {} ({}), oaUserId: {}, deptId: {}", |
| | | dto.getNickName(), dto.getUserName(), dto.getOaUserId(), deptId); |
| | | // log.info("创建新用户: {} ({}), oaUserId: {}, deptId: {}", |
| | | // dto.getNickName(), dto.getUserName(), dto.getOaUserId(), deptId); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | String message = String.format("同步完成!创建用户: %d, 更新用户: %d, 跳过: %d, 失败: %d", |
| | | createdCount, updatedCount, skippedCount, errorCount); |
| | | log.info(message); |
| | | // log.info(message); |
| | | |
| | | Map<String, Object> result = new HashMap<>(); |
| | | result.put("created", createdCount); |
| | |
| | | |
| | | if (StringUtils.isNotEmpty(dto.getPhonenumber())) |
| | | { |
| | | existingUser.setPhonenumber(dto.getPhonenumber()); |
| | | // 校验手机号是否已被其他用户使用(排除自己) |
| | | SysUser phoneCheck = sysUserMapper.checkPhoneUnique(dto.getPhonenumber()); |
| | | if (StringUtils.isNotNull(phoneCheck) && !phoneCheck.getUserId().equals(existingUser.getUserId())) |
| | | { |
| | | log.warn("更新用户 {} 失败,手机号 {} 已被用户 {} 使用,跳过手机号更新", |
| | | existingUser.getUserName(), dto.getPhonenumber(), phoneCheck.getUserName()); |
| | | } |
| | | else |
| | | { |
| | | existingUser.setPhonenumber(dto.getPhonenumber()); |
| | | } |
| | | } |
| | | |
| | | if (StringUtils.isNotEmpty(dto.getSex())) |
| | |
| | | } |
| | | |
| | | existingUser.setUpdateBy("sync"); |
| | | if (StringUtils.isNotEmpty(dto.getOaOrderClass())) |
| | | { |
| | | existingUser.setOaOrderClass(dto.getOaOrderClass()); |
| | | } |
| | | if (StringUtils.isNotEmpty(dto.getCanViewAllConsult())) |
| | | { |
| | | existingUser.setCanViewAllConsult(dto.getCanViewAllConsult()); |
| | | } |
| | | if (StringUtils.isNotEmpty(dto.getCanCreateTask())) |
| | | { |
| | | existingUser.setCanCreateTask(dto.getCanCreateTask()); |
| | | } |
| | | // 同步企业微信用户ID |
| | | if (StringUtils.isNotEmpty(dto.getOaWeixinUserId())) |
| | | { |
| | | existingUser.setQyWechatUserId(dto.getOaWeixinUserId()); |
| | | existingUser.setQyWechatUpdateTime(new Date()); |
| | | } |
| | | sysUserMapper.updateUser(existingUser); |
| | | } |
| | | |
| | |
| | | newUser.setUserName(dto.getUserName()); |
| | | newUser.setNickName(dto.getNickName()); |
| | | newUser.setOaUserId(dto.getOaUserId()); |
| | | if (StringUtils.isNotEmpty(dto.getOaOrderClass())) |
| | | { |
| | | newUser.setOaOrderClass(dto.getOaOrderClass()); |
| | | } |
| | | if (StringUtils.isNotEmpty(dto.getCanViewAllConsult())) |
| | | { |
| | | newUser.setCanViewAllConsult(dto.getCanViewAllConsult()); |
| | | } |
| | | if (StringUtils.isNotEmpty(dto.getCanCreateTask())) |
| | | { |
| | | newUser.setCanCreateTask(dto.getCanCreateTask()); |
| | | } |
| | | |
| | | // 设置企业微信用户ID |
| | | if (StringUtils.isNotEmpty(dto.getOaWeixinUserId())) |
| | | { |
| | | newUser.setQyWechatUserId(dto.getOaWeixinUserId()); |
| | | newUser.setQyWechatUpdateTime(new Date()); |
| | | } |
| | | |
| | | if (deptId != null) |
| | | { |
| | |
| | | |
| | | if (StringUtils.isNotEmpty(dto.getPhonenumber())) |
| | | { |
| | | // 校验手机号是否已被其他用户使用 |
| | | SysUser phoneCheck = sysUserMapper.checkPhoneUnique(dto.getPhonenumber()); |
| | | if (StringUtils.isNotNull(phoneCheck)) |
| | | { |
| | | log.warn("创建用户失败,手机号 {} 已被用户 {} 使用,跳过用户 {}", |
| | | dto.getPhonenumber(), phoneCheck.getUserName(), dto.getUserName()); |
| | | return; // 跳过创建 |
| | | } |
| | | newUser.setPhonenumber(dto.getPhonenumber()); |
| | | } |
| | | |