|
@@ -1,21 +1,25 @@
|
|
package com.qmth.teachcloud.common.service.impl;
|
|
package com.qmth.teachcloud.common.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.entity.BasicSchool;
|
|
import com.qmth.teachcloud.common.entity.BasicSchool;
|
|
|
|
+import com.qmth.teachcloud.common.entity.SysOrg;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
-import com.qmth.teachcloud.common.enums.OrgCenterTypeEnum;
|
|
|
|
|
|
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
|
|
import com.qmth.teachcloud.common.service.BasicSchoolService;
|
|
import com.qmth.teachcloud.common.service.BasicSchoolService;
|
|
import com.qmth.teachcloud.common.service.CallApiOrgCenterService;
|
|
import com.qmth.teachcloud.common.service.CallApiOrgCenterService;
|
|
import com.qmth.teachcloud.common.service.OrgCenterDataDisposeService;
|
|
import com.qmth.teachcloud.common.service.OrgCenterDataDisposeService;
|
|
|
|
+import com.qmth.teachcloud.common.service.SysOrgService;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
-import java.util.*;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.Objects;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -29,6 +33,8 @@ public class OrgCenterDataDisposeServiceImpl implements OrgCenterDataDisposeServ
|
|
private CallApiOrgCenterService callApiOrgCenterService;
|
|
private CallApiOrgCenterService callApiOrgCenterService;
|
|
@Resource
|
|
@Resource
|
|
private BasicSchoolService basicSchoolService;
|
|
private BasicSchoolService basicSchoolService;
|
|
|
|
+ @Resource
|
|
|
|
+ private SysOrgService sysOrgService;
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Override
|
|
@Override
|
|
@@ -39,8 +45,16 @@ public class OrgCenterDataDisposeServiceImpl implements OrgCenterDataDisposeServ
|
|
}
|
|
}
|
|
// 禁用原有学校
|
|
// 禁用原有学校
|
|
List<BasicSchool> basicSchoolList = basicSchoolService.list();
|
|
List<BasicSchool> basicSchoolList = basicSchoolService.list();
|
|
- basicSchoolService.update(new UpdateWrapper<BasicSchool>().lambda().set(BasicSchool::getEnable, false).gt(BasicSchool::getId,0));
|
|
|
|
|
|
+ basicSchoolService.update(new UpdateWrapper<BasicSchool>().lambda().set(BasicSchool::getEnable, false).gt(BasicSchool::getId, 0));
|
|
|
|
+
|
|
|
|
+ // 禁用原有顶级机构(学校)
|
|
|
|
+ List<SysOrg> sysOrgList = sysOrgService.list();
|
|
|
|
+ sysOrgService.update(new UpdateWrapper<SysOrg>().lambda().set(SysOrg::getEnable, false).eq(SysOrg::getType, OrgTypeEnum.SCHOOL));
|
|
|
|
|
|
|
|
+ // 要更改的学校数据
|
|
|
|
+ List<BasicSchool> updateSchoolList = new ArrayList<>();
|
|
|
|
+ // 要更改的机构数据
|
|
|
|
+ List<SysOrg> updateSysOrgList = new ArrayList<>();
|
|
|
|
|
|
for (Map map : result) {
|
|
for (Map map : result) {
|
|
String code = String.valueOf(map.get("code"));
|
|
String code = String.valueOf(map.get("code"));
|
|
@@ -53,19 +67,20 @@ public class OrgCenterDataDisposeServiceImpl implements OrgCenterDataDisposeServ
|
|
String typeName = String.valueOf(typeMap.get("name"));
|
|
String typeName = String.valueOf(typeMap.get("name"));
|
|
|
|
|
|
List<BasicSchool> oldSchoolList = basicSchoolList.stream().filter(e -> e.getCode().equals(code)).collect(Collectors.toList());
|
|
List<BasicSchool> oldSchoolList = basicSchoolList.stream().filter(e -> e.getCode().equals(code)).collect(Collectors.toList());
|
|
- if (oldSchoolList.size() > 1){
|
|
|
|
|
|
+ if (oldSchoolList.size() > 1) {
|
|
throw ExceptionResultEnum.ERROR.exception("学校信息异常");
|
|
throw ExceptionResultEnum.ERROR.exception("学校信息异常");
|
|
}
|
|
}
|
|
Long schoolId;
|
|
Long schoolId;
|
|
- if (oldSchoolList.size() > 0){
|
|
|
|
|
|
+ if (oldSchoolList.size() > 0) {
|
|
// 系统中原先就有该学校 -》 更新
|
|
// 系统中原先就有该学校 -》 更新
|
|
BasicSchool oldSchool = oldSchoolList.get(0);
|
|
BasicSchool oldSchool = oldSchoolList.get(0);
|
|
schoolId = oldSchool.getId();
|
|
schoolId = oldSchool.getId();
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
// 系统中没有该学校 -》 新增 (系统中如果id被占用会报错)
|
|
// 系统中没有该学校 -》 新增 (系统中如果id被占用会报错)
|
|
schoolId = SystemConstant.getDbUuid();
|
|
schoolId = SystemConstant.getDbUuid();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 基础学校数据处理
|
|
BasicSchool school = new BasicSchool();
|
|
BasicSchool school = new BasicSchool();
|
|
school.setId(schoolId);
|
|
school.setId(schoolId);
|
|
school.setCode(code);
|
|
school.setCode(code);
|
|
@@ -74,7 +89,38 @@ public class OrgCenterDataDisposeServiceImpl implements OrgCenterDataDisposeServ
|
|
school.setAccessKey(accessKey);
|
|
school.setAccessKey(accessKey);
|
|
school.setAccessSecret(accessSecret);
|
|
school.setAccessSecret(accessSecret);
|
|
school.setLogo(logo);
|
|
school.setLogo(logo);
|
|
- basicSchoolService.saveOrUpdate(school);
|
|
|
|
|
|
+ updateSchoolList.add(school);
|
|
|
|
+
|
|
|
|
+ // 学校机构处理
|
|
|
|
+ List<SysOrg> schoolOrgList = sysOrgList.stream().filter(e -> schoolId.equals(e.getSchoolId()) && OrgTypeEnum.SCHOOL.equals(e.getType())).collect(Collectors.toList());
|
|
|
|
+ SysOrg sysOrg = new SysOrg();
|
|
|
|
+ if (schoolOrgList.size() == 0) {
|
|
|
|
+ // 机构表没有该学校作为的顶级机构 -》 新增机构并把该学校所属的学院级机构挂在该学校下
|
|
|
|
+ Long id = SystemConstant.getDbUuid();
|
|
|
|
+ sysOrg.setId(id);
|
|
|
|
+ sysOrg.setSchoolId(schoolId);
|
|
|
|
+ sysOrg.setType(OrgTypeEnum.SCHOOL);
|
|
|
|
+ sysOrg.setName(name);
|
|
|
|
+ sysOrg.setEnable(true);
|
|
|
|
+
|
|
|
|
+ // 处理该学校下的学院级机构的指向关系
|
|
|
|
+ List<SysOrg> collegeOrgList = sysOrgList.stream()
|
|
|
|
+ .filter(e -> schoolId.equals(e.getSchoolId()) &&
|
|
|
|
+ (OrgTypeEnum.COLLEGE.equals(e.getType()) || OrgTypeEnum.PRINTING_HOUSE.equals(e.getType()) || !SystemConstant.longNotNull(e.getParentId())))
|
|
|
|
+ .peek(e -> e.setParentId(id))
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ updateSysOrgList.addAll(collegeOrgList);
|
|
|
|
+ } else if (schoolOrgList.size() == 1) {
|
|
|
|
+ // 机构表有该学校作为的顶级机构 -》 启用
|
|
|
|
+ sysOrg = schoolOrgList.get(0);
|
|
|
|
+ sysOrg.setEnable(true);
|
|
|
|
+ sysOrg.setName(name);
|
|
|
|
+ } else {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("机构数据异常 - 存在多条数据");
|
|
|
|
+ }
|
|
|
|
+ updateSysOrgList.add(sysOrg);
|
|
}
|
|
}
|
|
|
|
+ basicSchoolService.saveOrUpdateBatch(updateSchoolList);
|
|
|
|
+ sysOrgService.saveOrUpdateBatch(updateSysOrgList);
|
|
}
|
|
}
|
|
}
|
|
}
|