| | |
| | | import com.ycl.service.user.UmsRoleService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.boot.ApplicationArguments; |
| | | import org.springframework.boot.ApplicationRunner; |
| | | import org.springframework.context.ApplicationListener; |
| | |
| | | @Autowired |
| | | private UmsAdminRoleRelationService umsAdminRoleRelationService; |
| | | |
| | | @Scheduled(cron = "40 50 16 * * ?") |
| | | @Value("${spring.profiles.active}") |
| | | private String env; |
| | | @Scheduled(cron = "0 0 1 * * ?") // 每天零点执行 |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void run() { |
| | | log.info("开始同步任务"); |
| | | //获取全部部门code |
| | | JSONObject topObj = dingCommon.getBookAuthority(); |
| | | //顶级部门id |
| | | log.info("部门code------------>{}",topObj.toJSONString()); |
| | | JSONArray deptTopArr = topObj.getJSONArray("deptVisibleScopes"); |
| | | List<UmsDepart> dingOrgList = dingCommon.getOrgInfo(deptTopArr); |
| | | if ("online".equals(env)) { |
| | | log.info("开始同步任务"); |
| | | //获取全部部门code |
| | | JSONObject topObj = dingCommon.getBookAuthority(); |
| | | //顶级部门id |
| | | log.info("部门code------------>{}", topObj.toJSONString()); |
| | | JSONArray deptTopArr = topObj.getJSONArray("deptVisibleScopes"); |
| | | List<UmsDepart> dingOrgList = dingCommon.getOrgInfo(deptTopArr); |
| | | |
| | | //查询数据库中的部门 |
| | | List<UmsDepart> dataOrgList = umsDepartService.list(); |
| | | if(CollectionUtils.isNotEmpty(dingOrgList)) { |
| | | Iterator<UmsDepart> removeIterOrg = dingOrgList.iterator(); |
| | | while (removeIterOrg.hasNext()) { |
| | | UmsDepart dingOrg = removeIterOrg.next(); |
| | | if (dingOrg.getCode().equals(deptTopArr.getString(0))) { |
| | | dingOrg.setParentId(0L); |
| | | } |
| | | //判断 |
| | | for (UmsDepart org : dataOrgList) { |
| | | if (ObjectUtil.equals(org.getId(), dingOrg.getId()) && ObjectUtil.equals(org.getDepartName(), dingOrg.getDepartName()) && ObjectUtil.equals(org.getParentId(), dingOrg.getParentId())) { |
| | | removeIterOrg.remove(); |
| | | //查询数据库中的部门 |
| | | List<UmsDepart> dataOrgList = umsDepartService.list(); |
| | | if (CollectionUtils.isNotEmpty(dingOrgList)) { |
| | | Iterator<UmsDepart> removeIterOrg = dingOrgList.iterator(); |
| | | while (removeIterOrg.hasNext()) { |
| | | UmsDepart dingOrg = removeIterOrg.next(); |
| | | if (dingOrg.getCode().equals(deptTopArr.getString(0))) { |
| | | dingOrg.setParentId(0L); |
| | | } |
| | | //判断 |
| | | for (UmsDepart org : dataOrgList) { |
| | | if (ObjectUtil.equals(org.getId(), dingOrg.getId()) && ObjectUtil.equals(org.getDepartName(), dingOrg.getDepartName()) && ObjectUtil.equals(org.getParentId(), dingOrg.getParentId())) { |
| | | removeIterOrg.remove(); |
| | | } |
| | | } |
| | | } |
| | | //此时 dingOrgList 中剩下的就是新的组织机构了。 |
| | | dingOrgList.forEach(dingOrg -> { |
| | | if (dingOrg.getCode().equals(deptTopArr.getString(0))) { |
| | | dingOrg.setParentId(0L); |
| | | } |
| | | //umsDepartService.fillPids(dingOrg); |
| | | dingOrg.setStatus((short) 1); |
| | | umsDepartService.saveOrUpdate(dingOrg); |
| | | }); |
| | | } |
| | | //此时 dingOrgList 中剩下的就是新的组织机构了。 |
| | | dingOrgList.forEach(dingOrg -> { |
| | | if (dingOrg.getCode().equals(deptTopArr.getString(0))) { |
| | | dingOrg.setParentId(0L); |
| | | } |
| | | //umsDepartService.fillPids(dingOrg); |
| | | dingOrg.setStatus((short) 1); |
| | | umsDepartService.saveOrUpdate(dingOrg); |
| | | }); |
| | | } |
| | | // log.info(TAG + "update organization size " + dingOrgList.size()); |
| | | TimeInterval timer = DateUtil.timer(); |
| | | /** |
| | | // * 根据组织code 查询 通讯录人员信息 |
| | | // */ |
| | | //查询用户组织关联表 |
| | | List<UmsDepartManage> empOrgList = departManageService.list(); |
| | | //查询所有用户 |
| | | Set<DingUserInfo> dingList = dingCommon.getPersonInfoByOrgCode(); |
| | | Set<DingUserInfo> dingUsers = new HashSet<>(dingList); |
| | | log.info("dinglistStart----->{}",dingList); |
| | | List<UmsAdmin> userList = umsAdminService.list(); |
| | | Iterator<DingUserInfo> iterator = dingUsers.iterator(); |
| | | while (iterator.hasNext()) { |
| | | DingUserInfo dingUserInfo = iterator.next(); |
| | | //判断用户是否存在,输出新用户 |
| | | for (UmsAdmin user : userList) { |
| | | //判断姓名 |
| | | if (ObjectUtil.equals(user.getId(), dingUserInfo.getUserId()) ) { |
| | | iterator.remove(); |
| | | //判断组织 |
| | | TimeInterval timer = DateUtil.timer(); |
| | | /** |
| | | // * 根据组织code 查询 通讯录人员信息 |
| | | // */ |
| | | //查询用户组织关联表 |
| | | List<UmsDepartManage> empOrgList = departManageService.list(); |
| | | //查询所有用户 |
| | | Set<DingUserInfo> dingList = dingCommon.getPersonInfoByOrgCode(); |
| | | Set<DingUserInfo> dingUsers = new HashSet<>(dingList); |
| | | log.info("dinglistStart----->{}", dingList); |
| | | List<UmsAdmin> userList = umsAdminService.list(); |
| | | Iterator<DingUserInfo> iterator = dingUsers.iterator(); |
| | | while (iterator.hasNext()) { |
| | | DingUserInfo dingUserInfo = iterator.next(); |
| | | //判断用户是否存在,输出新用户 |
| | | for (UmsAdmin user : userList) { |
| | | //判断姓名 |
| | | if (ObjectUtil.equals(user.getId(), dingUserInfo.getUserId())) { |
| | | iterator.remove(); |
| | | //判断组织 |
| | | // for (UmsDepartManage emp : empOrgList) { |
| | | // if (ObjectUtil.equals(user.getId(), emp.getUserId()) && ObjectUtil.equals(dingUserInfo.getOrgId(), emp.getDepartId())) { |
| | | // iterator.remove(); |
| | | // break; |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | log.info("dinglistEnd----->{}",dingUsers); |
| | | ArrayList<UmsAdminRoleRelation> relations = new ArrayList<>(); |
| | | log.info("dinglistEnd----->{}", dingUsers); |
| | | ArrayList<UmsAdminRoleRelation> relations = new ArrayList<>(); |
| | | // log.info(TAG + " elapsed time:" + timer.interval()); |
| | | for (DingUserInfo dingUserInfo : dingUsers) { |
| | | //1.添加用户 |
| | | UmsAdmin user = new UmsAdmin(); |
| | | //账号 |
| | | user.setUsername(dingUserInfo.getEmployeeName()); |
| | | //昵称 |
| | | if (StringUtils.isNotBlank(dingUserInfo.getNickNameCn())) { |
| | | user.setNickName(dingUserInfo.getNickNameCn()); |
| | | } else { |
| | | user.setNickName(dingUserInfo.getEmployeeName()); |
| | | } |
| | | //code |
| | | //accountId |
| | | log.info("员工账户id{}",dingUserInfo.getAccountId()); |
| | | user.setAccountId(dingUserInfo.getAccountId()); |
| | | //头像 |
| | | user.setIcon(dingUserInfo.getGovEmpAvatar()); |
| | | //姓名 |
| | | //性别 |
| | | user.setSex(dingUserInfo.getEmpGender().byteValue()); |
| | | //密码 获取初始密码 |
| | | //将密码进行加密操作 |
| | | String encodePassword = passwordEncoder.encode("123456"); |
| | | user.setPassword(encodePassword); |
| | | user.setIsDy(Byte.parseByte("0")); |
| | | user.setMobile(""); |
| | | user.setOpenid(dingUserInfo.getOpenid()); |
| | | //id |
| | | user.setId(dingUserInfo.getUserId()); |
| | | //状态为停用(不可用状态)点击登录后才能使用 |
| | | user.setStatus(1); |
| | | umsAdminService.save(user); |
| | | for (DingUserInfo dingUserInfo : dingUsers) { |
| | | //1.添加用户 |
| | | UmsAdmin user = new UmsAdmin(); |
| | | //账号 |
| | | user.setUsername(dingUserInfo.getEmployeeName()); |
| | | //昵称 |
| | | if (StringUtils.isNotBlank(dingUserInfo.getNickNameCn())) { |
| | | user.setNickName(dingUserInfo.getNickNameCn()); |
| | | } else { |
| | | user.setNickName(dingUserInfo.getEmployeeName()); |
| | | } |
| | | //code |
| | | //accountId |
| | | log.info("员工账户id{}", dingUserInfo.getAccountId()); |
| | | user.setAccountId(dingUserInfo.getAccountId()); |
| | | //头像 |
| | | user.setIcon(dingUserInfo.getGovEmpAvatar()); |
| | | //姓名 |
| | | //性别 |
| | | user.setSex(dingUserInfo.getEmpGender().byteValue()); |
| | | //密码 获取初始密码 |
| | | //将密码进行加密操作 |
| | | String encodePassword = passwordEncoder.encode("123456"); |
| | | user.setPassword(encodePassword); |
| | | user.setIsDy(Byte.parseByte("0")); |
| | | user.setMobile(""); |
| | | user.setOpenid(dingUserInfo.getOpenid()); |
| | | //id |
| | | user.setId(dingUserInfo.getUserId()); |
| | | //状态为停用(不可用状态)点击登录后才能使用 |
| | | user.setStatus(1); |
| | | umsAdminService.save(user); |
| | | // //员工信息,关联组织 |
| | | // UmsDepartManage departManage = new UmsDepartManage(); |
| | | // departManage.setDepartId(dingUserInfo.getOrgId()); |
| | |
| | | // } |
| | | // if (CollUtil.isNotEmpty(relations)) { |
| | | // umsAdminRoleRelationService.saveBatch(relations, IService.DEFAULT_BATCH_SIZE); |
| | | } |
| | | log.info("同步任务结束"); |
| | | } |
| | | log.info("同步任务结束"); |
| | | // log.info(TAG + "update user size " + dingList.size()); |
| | | // getEmployeeAvatar(); |
| | | } |
| | | } |
| | | |
| | | /** |