diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthDept.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthDept.java index 4519bd2e..afb70b89 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthDept.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/entity/ESAuthDept.java @@ -33,11 +33,23 @@ public class ESAuthDept { @ApiModelProperty(value = "标准分类") private String standardType; + @Excel(name = "旧上级组织") + @ApiModelProperty(value = "上级组织") + private String oldHigherDeptName; + + @Excel(name = "旧组织部门") + @ApiModelProperty(value = "组织部门") + private String oldDeptName; + + @Excel(name = "再上一级组织(部分存在)") + @ApiModelProperty(value = "再上一级组织(部分存在)") + private String higherHigherDeptName; + @Excel(name = "上级组织") @ApiModelProperty(value = "上级组织") private String higherDeptName; - @Excel(name = "组织部门") + @Excel(name = "新部门") @ApiModelProperty(value = "组织部门") private String deptName; @@ -51,6 +63,9 @@ public class ESAuthDept { standardNumber == null && standardName == null && standardType == null && + oldHigherDeptName == null && + oldDeptName == null && + higherHigherDeptName == null && higherDeptName == null && deptName == null; } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java index ea327acf..da324bfb 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsEnterpriseStandardServiceImpl.java @@ -246,7 +246,7 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl map = StandardSplitUtils.simpleSplitStandardNumber(newBzh, cybzh); fb.setStandardClass(map.get(FieldCommon.STANDARD_CLASS)); @@ -580,6 +580,7 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl datalist; + List correctDataList = new ArrayList<>(); try { // 获取当前时间戳(毫秒) long startTime = System.currentTimeMillis(); @@ -594,6 +595,10 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl StrUtil.isNotBlank(data.getStandardType())) .filter(data -> data.getStandardType().startsWith("企业标准")).collect(Collectors.toList()); log.info("企标相关数据条数:{}", datalist.size()); + // 过滤掉新部门为空的数据 + datalist = datalist.stream().filter(dr -> dr.getDeptName() != null && !dr.getDeptName().isEmpty()).collect(Collectors.toList()); + log.info("过滤掉新部门为空的数据后数据条数:{}", datalist.size()); + // 获取当前时间戳(毫秒) long endTime = System.currentTimeMillis(); // 计算执行时间(毫秒) @@ -607,13 +612,10 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl sysDeptWrapper = new LambdaQueryWrapper<>(); - sysDeptWrapper.eq(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + sysDeptWrapper.eq(SysDepart::getDelFlag, YesOrNoEnum.NO.getValue()); sysDeptWrapper.eq(SysDepart::getStatus, 1); List curDeptList = sysDepartService.list(sysDeptWrapper); - curDeptList.add(sysDepartService.getById("0")); - - List drList = oldSystemDepartRelationService.list(); - Map drMap = drList.stream().collect(Collectors.toMap(o -> o.getOldOrgName() + "-" + o.getOldOrgSuperior(), o -> o)); + Map> curDeptNameMap = curDeptList.stream().collect(Collectors.groupingBy(SysDepart::getDepartName)); for (ESAuthDept ad : datalist) { try { @@ -621,17 +623,49 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl sysDeparts = curDeptNameMap.get(ad.getDeptName()); + if (sysDeparts == null || sysDeparts.isEmpty()) { + throw new JeroBootException("系统中未找到同名的现部门"); } else { - EnterpriseStandardAuthDept authDept = new EnterpriseStandardAuthDept(); - authDept.setStandardId(es.getId()); - authDept.setAuthDept(oldSystemDepartRelation.getCurOrgId()); - esAuthDeptService.save(authDept); + if (sysDeparts.size() > 1) { + // 根据上级部门名称再次匹配 + for (SysDepart sysDepart : sysDeparts) { + String parentDeptName = ad.getHigherDeptName(); + List sysParentDeparts = curDeptNameMap.get(parentDeptName); + if (sysParentDeparts == null || sysParentDeparts.isEmpty()) { + throw new JeroBootException("匹配到多个同名部门,但系统中未找到同名的上级部门"); + } + if (sysParentDeparts.size() > 1) { + String parentParentDeptName = ad.getHigherHigherDeptName(); + if (StrUtil.isBlank(parentParentDeptName)) { + throw new JeroBootException("匹配到多个同名部门,匹配到多个同名上级部门,但缺失上级部门的上级部门"); + } + List sysParentParentDeparts = curDeptNameMap.get(parentParentDeptName); + if (sysParentParentDeparts.size() == 1) { + EnterpriseStandardAuthDept authDept = new EnterpriseStandardAuthDept(); + authDept.setStandardId(es.getId()); + authDept.setAuthDept(sysDepart.getId()); + correctDataList.add(authDept); + break; + } else { + throw new JeroBootException("匹配到多个同名部门,但无法通过上级部门的上级部门名称确定具体部门"); + } + } else { + EnterpriseStandardAuthDept authDept = new EnterpriseStandardAuthDept(); + authDept.setStandardId(es.getId()); + authDept.setAuthDept(sysDepart.getId()); + correctDataList.add(authDept); + break; + } + } + } else { + EnterpriseStandardAuthDept authDept = new EnterpriseStandardAuthDept(); + SysDepart sysDepart = sysDeparts.get(0); + authDept.setStandardId(es.getId()); + authDept.setAuthDept(sysDepart.getId()); + correctDataList.add(authDept); + } } } catch (Exception e) { log.error("导入部门对应出现错误:{}", e.getMessage()); @@ -643,6 +677,8 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl esWrapper = new LambdaQueryWrapper<>(); esWrapper.eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()); @@ -847,9 +883,9 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl allDatalist, List errImportList) { List gbDatalist = allDatalist.stream().filter(o -> o.getBzfl().contains("国家标准/") || // “/”是为了避免匹配到“美国国家标准”这个外标 - o.getBzfl().contains("团体标准") || - o.getBzfl().contains("地方标准") || - o.getBzfl().contains("行业标准")).collect(Collectors.toList()); + o.getBzfl().contains("团体标准") || + o.getBzfl().contains("地方标准") || + o.getBzfl().contains("行业标准")).collect(Collectors.toList()); log.info("国标相关数据条数:{}", gbDatalist.size()); // 过滤字段 根据标准号字段去重 @@ -891,7 +927,7 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl map = StandardSplitUtils.simpleSplitStandardNumber(newBzh, cybzh); gb.setStandardClass(map.get(FieldCommon.STANDARD_CLASS));