zhanghua
2023-12-16 18653f874dc47c7a9ff007d57a59dac873deebdf
ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java
@@ -23,6 +23,7 @@
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;
@@ -69,110 +70,113 @@
    @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());
@@ -193,10 +197,11 @@
//        }
//        if (CollUtil.isNotEmpty(relations)) {
//            umsAdminRoleRelationService.saveBatch(relations, IService.DEFAULT_BATCH_SIZE);
        }
        log.info("同步任务结束");
            }
            log.info("同步任务结束");
//        log.info(TAG + "update user size " + dingList.size());
//        getEmployeeAvatar();
        }
    }
    /**