fuliqi
2023-12-04 38b44e0c9996f06524903417f1d0a3f746b4550b
ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java
@@ -52,11 +52,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,40 +72,44 @@
    @Autowired
    private UmsAdminRoleRelationService umsAdminRoleRelationService;
    // @Scheduled(cron = "0 0 00 * * ?")
    //@Scheduled(cron = "0 0 00 * * ?")
    @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 查询 通讯录人员信息
@@ -134,7 +138,7 @@
            }
        }
        ArrayList<UmsAdminRoleRelation> relations = new ArrayList<>();
        log.info(TAG + " elapsed time:" + timer.interval());
//        log.info(TAG + " elapsed time:" + timer.interval());
        for (DingUserInfo dingUserInfo : dingList) {
            //1.添加用户
            UmsAdmin user = new UmsAdmin();
@@ -185,7 +189,8 @@
        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 +209,6 @@
    @Override
    public void run(ApplicationArguments args) throws Exception {
         run();
//         run();
    }
}