fuliqi
2023-12-16 12ada3a7e6680d5ab92901410e3cedd9b8077e56
ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java
@@ -33,10 +33,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.*;
@Slf4j
@@ -52,11 +49,11 @@
    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
         if (contextRefreshedEvent.getApplicationContext().getParent() == null) {
             Thread thread = new Thread(this::run);
             thread.setUncaughtExceptionHandler(handler);
             thread.start();
         }
//         if (contextRefreshedEvent.getApplicationContext().getParent() == null) {
//             Thread thread = new Thread(this::run);
//             thread.setUncaughtExceptionHandler(handler);
//             thread.start();
//         }
    }
    @Autowired
@@ -72,50 +69,56 @@
    @Autowired
    private UmsAdminRoleRelationService umsAdminRoleRelationService;
    // @Scheduled(cron = "0 0 00 * * ?")
    @Scheduled(cron = "40 50 16 * * ?")
    @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);
        //查询数据库中的部门
        List<UmsDepart> dataOrgList = umsDepartService.list();
        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();
        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());
//        log.info(TAG + "update organization size " + dingOrgList.size());
        TimeInterval timer = DateUtil.timer();
        /**
         //         * 根据组织code 查询 通讯录人员信息
         //         */
        Set<DingUserInfo> dingList = dingCommon.getPersonInfoByOrgCode();
        //查询所有用户
        List<UmsAdmin> userList = umsAdminService.list();
        //查询用户组织关联表
        List<UmsDepartManage> empOrgList = departManageService.list();
        Iterator<DingUserInfo> iterator = dingList.iterator();
        //查询所有用户
        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();
            //判断用户是否存在,输出新用户
@@ -133,9 +136,12 @@
                }
            }
        }
        log.info("dinglistEnd----->{}",dingUsers);
        ArrayList<UmsAdminRoleRelation> relations = new ArrayList<>();
        log.info(TAG + " elapsed time:" + timer.interval());
        for (DingUserInfo dingUserInfo : dingList) {
//        log.info(TAG + " elapsed time:" + timer.interval());
        for (DingUserInfo dingUserInfo : dingUsers) {
            //1.添加用户
            UmsAdmin user = new UmsAdmin();
            //账号
@@ -147,6 +153,9 @@
                user.setNickName(dingUserInfo.getEmployeeName());
            }
            //code
            //accountId
            log.info("员工账户id{}",dingUserInfo.getAccountId());
            user.setAccountId(dingUserInfo.getAccountId());
            //头像
            user.setIcon(dingUserInfo.getGovEmpAvatar());
            //姓名
@@ -164,28 +173,29 @@
            //状态为停用(不可用状态)点击登录后才能使用
            user.setStatus(1);
            umsAdminService.save(user);
            //员工信息,关联组织
            UmsDepartManage departManage = new UmsDepartManage();
            departManage.setDepartId(dingUserInfo.getOrgId());
            departManage.setIsLeader(0);
            departManage.setUserId(dingUserInfo.getUserId());
            departManageService.saveOrUpdate(departManage);
            //角色信息
            List<String> roleCode = dingUserInfo.getRoleCodeList();
            if (CollectionUtils.isNotEmpty(roleCode)) {
                List<UmsRole> roleList = roleService.getRoleListByCodes(roleCode);
                roleList.forEach(item -> {
                    UmsAdminRoleRelation relation = new UmsAdminRoleRelation();
                    relation.setAdminId(dingUserInfo.getUserId());
                    relation.setRoleId(item.getId());
                    relations.add(relation);
                });
            }
//            //员工信息,关联组织
//            UmsDepartManage departManage = new UmsDepartManage();
//            departManage.setDepartId(dingUserInfo.getOrgId());
//            departManage.setIsLeader(0);
//            departManage.setUserId(dingUserInfo.getUserId());
//            departManageService.saveOrUpdate(departManage);
//            //角色信息
//            List<String> roleCode = dingUserInfo.getRoleCodeList();
//            if (CollectionUtils.isNotEmpty(roleCode)) {
//                List<UmsRole> roleList = roleService.getRoleListByCodes(roleCode);
//                roleList.forEach(item -> {
//                    UmsAdminRoleRelation relation = new UmsAdminRoleRelation();
//                    relation.setAdminId(dingUserInfo.getUserId());
//                    relation.setRoleId(item.getId());
//                    relations.add(relation);
//                });
//            }
//        }
//        if (CollUtil.isNotEmpty(relations)) {
//            umsAdminRoleRelationService.saveBatch(relations, IService.DEFAULT_BATCH_SIZE);
        }
        if (CollUtil.isNotEmpty(relations)) {
            umsAdminRoleRelationService.saveBatch(relations, IService.DEFAULT_BATCH_SIZE);
        }
        log.info(TAG + "update user size " + dingList.size());
        log.info("同步任务结束");
//        log.info(TAG + "update user size " + dingList.size());
//        getEmployeeAvatar();
    }
@@ -204,6 +214,6 @@
    @Override
    public void run(ApplicationArguments args) throws Exception {
         run();
//         run();
    }
}