Forráskód Böngészése

机构中心优化,当判断为新增学校时,如果机构中心的该学校id没有被系统所占用则使用机构中心的id

caozixuan 3 éve
szülő
commit
ef06e53aeb

+ 15 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/OrgCenterDataDisposeService.java

@@ -11,6 +11,21 @@ import java.io.IOException;
  */
 public interface OrgCenterDataDisposeService {
 
+    /**
+     * 机构用户中心同步操作(异步线程)
+     * <p>
+     *     1.禁用全部学校和机构级别为学校的机构。
+     *     2.获取机构中心的学校数据。
+     *     3.遍历机构中心的学校并和系统中学校对比(根据学校代码),
+     *     如果系统中存在则更新系统中的学校(学校id不变);
+     *     如果系统中不存在则将机构中心的学校新增到系统中,
+     *     如果系统中已存在该机构中心的学校id,则新增的学校id使用分布式id,若不存在则使用机构中心的学校id。
+     *     将新增或更新的学校设置为启用状态
+     *     4.根据新增的或更新的学校id查询机构表中对应的学校级别机构。
+     *     5.如果没有学校级别机构则新增学校级机构,并且将该学校下的所有学院级、印刷室级、没有parentId的机构的父机构指向该学校机构;如果有则更新
+     * </p>
+     * @throws IOException 异常
+     */
     @Async
     void updateSchoolInfo() throws IOException;
 }

+ 12 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/OrgCenterDataDisposeServiceImpl.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.common.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.SysOrg;
@@ -57,6 +58,7 @@ public class OrgCenterDataDisposeServiceImpl implements OrgCenterDataDisposeServ
         List<SysOrg> updateSysOrgList = new ArrayList<>();
 
         for (Map map : result) {
+            Long orgCenterAppSchoolId = SystemConstant.convertIdToLong(String.valueOf(map.get("id"))); // 机构中心的id
             String code = String.valueOf(map.get("code"));
             String name = String.valueOf(map.get("name"));
             String logo = String.valueOf(map.get("logo"));
@@ -76,8 +78,16 @@ public class OrgCenterDataDisposeServiceImpl implements OrgCenterDataDisposeServ
                 BasicSchool oldSchool = oldSchoolList.get(0);
                 schoolId = oldSchool.getId();
             } else {
-                // 系统中没有该学校 -》 新增 (系统中如果id被占用会报错)
-                schoolId = SystemConstant.getDbUuid();
+                // 系统中没有该学校 -》 新增 (优先使用机构中心id如果该id在系统中已经被占用则会使用分布式id)
+                if (basicSchoolList.stream().map(BaseEntity::getId).collect(Collectors.toSet()).contains(orgCenterAppSchoolId)){
+                    schoolId = SystemConstant.getDbUuid();
+                }else {
+                    schoolId = orgCenterAppSchoolId;
+                }
+            }
+            // 断言schoolId非空
+            if (!SystemConstant.longNotNull(schoolId)){
+                throw ExceptionResultEnum.ERROR.exception();
             }
 
             // 基础学校数据处理