|
@@ -392,6 +392,59 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
|
|
|
return finishedIdSet;
|
|
|
}
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public Map<String, Long> createOrGetOrgByOrgInfo(List<String> orgInfoList, SysUser requestUser) {
|
|
|
+ for (String orgInfo : orgInfoList) {
|
|
|
+
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Map<String, Long> createOrGetOrg(Map<String, Long> map, String orgInfo, SysUser requestUser) {
|
|
|
+ // 父机构id
|
|
|
+ Long schoolId = requestUser.getSchoolId();
|
|
|
+ Long parentId = requestUser.getSchoolId();
|
|
|
+
|
|
|
+ String[] arr = orgInfo.split(SystemConstant.ORG_SPLIT);
|
|
|
+ for (int i = 0; i < arr.length; i++) {
|
|
|
+ SysOrg targetOrg;
|
|
|
+ String orgDetailName = "";
|
|
|
+ String orgName = arr[i];
|
|
|
+
|
|
|
+ // 拼机构元素详细名称
|
|
|
+ for (int j = 0; j <= i; j++) {
|
|
|
+ orgDetailName = orgDetailName + arr[j] + SystemConstant.ORG_SPLIT;
|
|
|
+ }
|
|
|
+ if (orgDetailName.length() > 0) {
|
|
|
+ orgDetailName = orgDetailName.substring(0, orgDetailName.length() - SystemConstant.ORG_SPLIT.length());
|
|
|
+ }
|
|
|
+ if (!map.containsKey(orgDetailName)) {
|
|
|
+ // 在map中没有找到,就去数据库查找
|
|
|
+ targetOrg = this.getOne(new QueryWrapper<SysOrg>()
|
|
|
+ .lambda()
|
|
|
+ .eq(SysOrg::getSchoolId, schoolId)
|
|
|
+ .eq(SysOrg::getName, orgName)
|
|
|
+ .eq(SysOrg::getParentId, parentId));
|
|
|
+
|
|
|
+ // 如果在数据库中也没有找到这个机构元素,则新建当前机构元素并保存在数据库
|
|
|
+ if (Objects.isNull(targetOrg)) {
|
|
|
+ targetOrg = this.saveOrgElement(parentId, orgName, requestUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 不管是已有的还是新建的机构,都保存在map中方便后面查询 格式:(k -> 化学学院/核化学/聚变化学 v -> 11111111111)
|
|
|
+ map.put(orgDetailName, targetOrg.getId());
|
|
|
+ // 更新parentId为该机构元素的id,并作为数组下一个节点的父机构id
|
|
|
+ parentId = targetOrg.getId();
|
|
|
+ } else {
|
|
|
+ // 如果map中本身就有该机构元素,则直接获取该机构元素id作为 数组下一个节点的父机构id
|
|
|
+ parentId = map.get(orgDetailName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 根据子机构id深度优先搜索其父机构们
|
|
|
*
|
|
@@ -442,4 +495,24 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
|
|
|
}
|
|
|
return finishedIdSet;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增机构元素
|
|
|
+ *
|
|
|
+ * @param parentId 父机构id
|
|
|
+ * @param orgName 机构名称
|
|
|
+ * @param requestUser 请求用户
|
|
|
+ * @return 新增后的机构id
|
|
|
+ */
|
|
|
+ private SysOrg saveOrgElement(Long parentId, String orgName, SysUser requestUser) {
|
|
|
+ SysOrg sysOrg = new SysOrg();
|
|
|
+ sysOrg.setSchoolId(requestUser.getSchoolId());
|
|
|
+ sysOrg.insertInfo(requestUser.getId());
|
|
|
+ sysOrg.setParentId(parentId);
|
|
|
+ sysOrg.setName(orgName);
|
|
|
+ sysOrg.setEnable(true);
|
|
|
+ sysOrg.setType(OrgTypeEnum.TEMP);
|
|
|
+ this.save(sysOrg);
|
|
|
+ return sysOrg;
|
|
|
+ }
|
|
|
}
|