diff --git a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java index b7aaeb73..54cd5c7d 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java @@ -2,6 +2,7 @@ package com.jero.modules.split.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ZipUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -2679,7 +2680,9 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl sysDictTreeList = sysDictService.list(new LambdaQueryWrapper().eq(SysDict::getAttributeType, "2")); // 组织结构 - List sysDepartList = sysDepartService.list(); + List departList = sysDepartService.list(); + Map> departMap = departList.stream().collect(Collectors.groupingBy(SysDepart::getDepartName)); + Map departPartMap = SysDepart.buildPaths(departList); // 适用零部件 List partNameList = new ArrayList<>(); //存放数据验证结果信息 @@ -3175,8 +3178,27 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl first = sysDepartList.stream().filter(o -> v.equals(o.getDepartName())).findFirst(); - if (!first.isPresent()) { + String[] splitValue = v.split("/"); + List sysDeparts = departMap.get(splitValue[splitValue.length - 1]); + if (sysDeparts != null) { + if (sysDeparts.size() == 1) { + continue; + } + if (sysDeparts.size() > 1) { + // 叶子节点名称重复,需要寻找全路径 + String nodeId = departPartMap.get(value); + if (StrUtil.isBlank(nodeId)) { + if(MessageUtils.getLanguage().getValue().equals(LanguageEnum.CN.getValue())) { + errorMsg += fieldName + "中组织机构" + v + "不存在;"; + } else { + errorMsg += fieldName + " " + v + "Not exist;"; + } + countError++; + valueList = Collections.emptyList(); + break; + } + } + } else { if(MessageUtils.getLanguage().getValue().equals(LanguageEnum.CN.getValue())) { errorMsg += fieldName + "中组织机构" + v + "不存在;"; } else { @@ -3185,9 +3207,23 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl first = sysDepartList.stream().filter(o -> v.equals(o.getDepartName())).findFirst(); +// if (!first.isPresent()) { +// if(MessageUtils.getLanguage().getValue().equals(LanguageEnum.CN.getValue())) { +// errorMsg += fieldName + "中组织机构" + v + "不存在;"; +// } else { +// errorMsg += fieldName + " " + v + "Not exist;"; +// } +// countError++; +// valueList = Collections.emptyList(); +// break; +// }else { +// valueList.add(first.get().getId()); +// } } } }else if (FieldTypeEnum.TREE_BOX.getValue().equals(fieldShowType)) { @@ -3346,6 +3382,55 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl> sysDepartMap, Map sysDepartPathMap) { + String[] cellValues = cellValue.split(","); + for (String value : cellValues) { + String[] splitValue = value.split("/"); + List sysDeparts = sysDepartMap.get(splitValue[splitValue.length - 1]); + if (sysDeparts != null) { + if (sysDeparts.size() == 1) continue; + if (sysDeparts.size() > 1) { + // 叶子节点名称重复,需要寻找全路径 + String nodeId = sysDepartPathMap.get(value); + if (StrUtil.isBlank(nodeId)) { + return false; + } + } + } else { + return false; + } + } + return true; + } + + + // 多选部门转换 + public String convertMultiOrgId(String cellValue, Map> sysDepartMap, Map sysDepartPathMap) { + if (StrUtil.isBlank(cellValue)) { + return null; + } + StringBuilder result = new StringBuilder(); + String[] cellValues = cellValue.split(","); + for (String value : cellValues) { + String[] splitValue = value.split("/"); + List sysDeparts = sysDepartMap.get(splitValue[splitValue.length - 1]); + if (sysDeparts != null) { + if (sysDeparts.size() == 1) { + result.append(sysDeparts.get(0).getId()).append(","); + } + if (sysDeparts.size() > 1) { + // 叶子节点名称重复,需要寻找全路径 + String nodeId = sysDepartPathMap.get(value); + result.append(nodeId).append(","); + } + } + } + // 去除掉最后的逗号 + return result.substring(0, result.length() - 1); + } + private List partNameGetLevelPath(List partNames) { List list = new ArrayList<>(); // 一级节点