diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/controller/OldSystemController.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/controller/OldSystemController.java index 160b0602..1bf98636 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/controller/OldSystemController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/controller/OldSystemController.java @@ -200,4 +200,21 @@ public class OldSystemController { oldSystemService.dataFileFix(response); } + + @GetMapping("/fbDataFix") + @AutoLog(value = "老法规系统-海外标准数据修复") + @ApiOperation(value="老法规系统-海外标准数据修复", notes="老法规系统-海外标准数据修复") + @ApiOperationSupport(order = 16) + public void fbDataFix(HttpServletResponse response) { + oldSystemService.fbDataFix(response); + } + + @GetMapping("/fbAuthDeptDataFix") + @AutoLog(value = "老法规系统-外标授权部门数据修复") + @ApiOperation(value="老法规系统-外标授权部门数据修复", notes="老法规系统-外标授权部门数据修复") + @ApiOperationSupport(order = 100) + public Result fbAuthDeptDataFix() { + return Result.OK(oldSystemDeptRelationService.fbAuthDeptDataFix()); + } + } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/OldSystemDepartRelationService.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/OldSystemDepartRelationService.java index d51f33be..35997d38 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/OldSystemDepartRelationService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/OldSystemDepartRelationService.java @@ -23,4 +23,6 @@ public interface OldSystemDepartRelationService extends IService errImportList = new ArrayList<>(); @@ -255,6 +260,71 @@ public class OldSystemDepartRelationServiceImpl extends ServiceImpl needSaveAllData = new ArrayList<>(); + // 获取所有没有被删除的部门 + LambdaQueryWrapper departWrapper = new LambdaQueryWrapper<>(); + departWrapper.eq(SysDepart::getDelFlag, YesOrNoEnum.NO.getValue()); + List departListTree = departService.queryTreeList(); + // 找到所有外标 + List fbList = fbService.list(); + List allFbIdList = fbList.stream().map(LawsOverseasStandard::getId).collect(Collectors.toList()); + // 找到所有已有授权部门权限 + LambdaQueryWrapper esAdWrapper = new LambdaQueryWrapper<>(); + esAdWrapper.in(!allFbIdList.isEmpty(), EnterpriseStandardAuthDept::getStandardId, allFbIdList); + esAdWrapper.isNull(EnterpriseStandardAuthDept::getAuthExpireDate); + List adList = esAdService.list(esAdWrapper); + Map> esAdMap = adList.stream() + .collect(Collectors.groupingBy(EnterpriseStandardAuthDept::getStandardId)); + List fbIdList = adList.stream() + .map(EnterpriseStandardAuthDept::getStandardId).distinct().collect(Collectors.toList()); + // 找到所有授权部门不为空的企标 + List lawsOverseasStandards = fbService.listByIds(fbIdList); + // 遍历企标数据的现有授权部门 + for (LawsOverseasStandard fb : lawsOverseasStandards) { + String curStandardId = fb.getId(); + Set authDeptIdList = esAdMap.get(fb.getId()).stream() + .map(EnterpriseStandardAuthDept::getAuthDept) + .collect(Collectors.toSet()); + // 创建一个部门Id Set 根据现有授权部门的部门Id找到所有子部门Id + Set childDeptIdSet = new HashSet<>(); + // 根据现有授权部门的部门Id找到所有子部门Id + for (String authDeptId : authDeptIdList) { + List childDeptIdList = this.queryChildDeptIdList(authDeptId, departListTree); + if (childDeptIdList.isEmpty()) { + continue; + } + childDeptIdSet.addAll(childDeptIdList); + } + // 根据authDeptIdList去重 + childDeptIdSet.removeAll(authDeptIdList); + // 构造需要保存的数据 + for (String childDeptId : childDeptIdSet) { + EnterpriseStandardAuthDept esAd = new EnterpriseStandardAuthDept(); + esAd.setId(IdWorker.getIdStr()); + esAd.setStandardId(curStandardId); + esAd.setAuthDept(childDeptId); + needSaveAllData.add(esAd); + } + if (childDeptIdSet.isEmpty()) { + log.info("外标编号为{}的企标没有需要修复的数据", fb.getStandardNumber()); + } else { + log.info("外标编号为{}的企标需要修复的数据条数为:{}", fb.getStandardNumber(), childDeptIdSet.size()); + } + } + if (needSaveAllData.isEmpty()) { + return "没有需要修复的数据"; + } + // 根据standardId和authDept去重 + List distinctData = needSaveAllData.stream() + .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> + new TreeSet<>(Comparator.comparing(o -> o.getStandardId() + ";" + o.getAuthDept()))), ArrayList::new)); + log.info("需要保存的数据条数为:{}", distinctData.size()); + esAdService.batchInsertWithTransaction(needSaveAllData, 5000); + return "修复完成,共修复数据" + distinctData.size() + "条"; + } + // 递归查询所有子部门Id private List queryChildDeptIdList(String parentId, List departListTree) { List childDeptIdList = new ArrayList<>(); diff --git a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/impl/OldSystemServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/impl/OldSystemServiceImpl.java index 1dbd786a..b705e2ae 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/impl/OldSystemServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/oldSystem/service/impl/OldSystemServiceImpl.java @@ -71,6 +71,9 @@ import java.util.stream.Collectors; @Transactional(rollbackFor = JeroBootException.class) public class OldSystemServiceImpl implements OldSystemService { + @Resource + private ILawsTreeNodeService lawsTreeNodeService; + @Resource private LawsEnterpriseStandardMapper esMapper; @@ -449,6 +452,35 @@ public class OldSystemServiceImpl implements OldSystemService { } } + @Override + public void fbDataFix(HttpServletResponse response) { + LambdaQueryWrapper treeNodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); + treeNodeLambdaQueryWrapper.eq(LawsTreeNode::getNodeName, "引进标准"); + treeNodeLambdaQueryWrapper.eq(LawsTreeNode::getModuleCode, TableNameEnum.FOREIGN_REGULATIONS.getValue()); + LawsTreeNode node = lawsTreeNodeService.getOne(treeNodeLambdaQueryWrapper); + // 获取引进标准的id + LambdaQueryWrapper nodeRelationLambdaQueryWrapper = new LambdaQueryWrapper<>(); + nodeRelationLambdaQueryWrapper.eq(LawsNodeRelation::getNodeId, node.getId()); + List fbList = lawsNodeRelationService.list(nodeRelationLambdaQueryWrapper); + List fbIdList = fbList.stream().map(LawsNodeRelation::getUniqueRelationFlag).collect(Collectors.toList()); + // 给外标添加汽车研究总院的权限 + LambdaQueryWrapper departLambdaQueryWrapper = new LambdaQueryWrapper<>(); + departLambdaQueryWrapper.eq(SysDepart::getDepartName, "汽车研究总院"); + SysDepart depart = departService.getOne(departLambdaQueryWrapper); + List esAdList = new ArrayList<>(); + for (String fbId : fbIdList) { + EnterpriseStandardAuthDept ad = new EnterpriseStandardAuthDept(); + ad.setAuthDept(depart.getId()); + ad.setStandardId(fbId); + esAdList.add(ad); + log.info("新增海外标准id为{}的权限", fbId); + } + if (!esAdList.isEmpty()) { + log.info("共新增{}条权限数据", esAdList.size()); + esAuthDeptService.saveBatch(esAdList); + } + } + private void oldSysFBDataFileDocPath(List allDatalist, List errImportList) { List fbDatalist = allDatalist.stream().filter(o -> o.getBzfl().contains("ISO") || o.getBzfl().contains("引进") ||