From 5f466027b1edcf80af1dc60ec5d5257823da66c3 Mon Sep 17 00:00:00 2001 From: gaojiabao Date: Thu, 16 Mar 2023 09:02:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=91=E6=96=87=E5=8E=9F=E6=96=87=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SarBussionessStandServiceImpl.java | 911 ++++++++++++++---- .../SarStandardsInfoMapper.xml | 10 - 2 files changed, 700 insertions(+), 221 deletions(-) diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java index d1e9d797..b0a446c6 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java @@ -244,7 +244,6 @@ public class SarBussionessStandServiceImpl extends ServiceImpl oldArr = new ArrayList(); - List oldArr1 = new ArrayList(); - //记录同一数据下文件名重复的 - Set fileEOArrayList= new HashSet<>(); + // 记录无法处理的id + Set fileEOArrayList= new HashSet<>(); //海外国内的文件数据处理 处理逻辑对比 文件的名称 一致的情况下 则看老数据库 是否有对应的分类 原文 译文 if(type.equals("海外")) { List SarStandardsInfoList = sarStandardsInfoDao.selectListInfo("FOREIGN"); @@ -2782,7 +2780,7 @@ public class SarBussionessStandServiceImpl extends ServiceImpl asList = Arrays.asList(fileIdArr); if (asList.size() > 0) { // 判断 新系统中的文件是否有名称是一样的 如果有 则跳过 进行记录 没有则 往下走 - List attFileEOS = newFileNameRepetition(asList); + Set attFileEOS = newFileNameRepetition(asList); if (attFileEOS.isEmpty()) { for (String fileId : asList) { //循环调用每一个 文件 获取文件名称 @@ -2796,13 +2794,13 @@ public class SarBussionessStandServiceImpl extends ServiceImpl attFileEOS1 = newFileNameRepetitionInfo(asList); + // 不相等的数据 notRepeatedFile 重复的文件 attFileEOS + List notRepeatedFile = duplicateFiles(attFileEOS1, attFileEOS); + if(!notRepeatedFile.isEmpty()){ + //不重复数据在老库中是否存在 selectOldSystemFileBuildId + for (AttFileEO file: notRepeatedFile){ + String theSame = isTheSame(file.getOldFileName(), bid); + //1 有相同 -1 无相同 + if(theSame.equals("1")){ + //证明找到文件名称一致的了 + OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); + //原文译文 进行判断 + if(sortSign != null) { + if (sortSign.getSortSign().contains("译")) { + if (StringUtils.isNotBlank(yi)) { + yi = yi+"," + file.getId(); + } else { + yi = file.getId(); + } + } else { + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan+"," + file.getId(); + } else { + yuan = file.getId(); + } + } + } + } + } + + } else { + //相同文件处理 + List arrayList = new ArrayList<>(); + for (AttFileEO data : attFileEOS) { + arrayList.add(data); + } + String theSame = isTheSame(arrayList.get(0).getOldFileName(), bid); + if (theSame.equals("1")) { + File file1 = new File("E:/data/slrs/file/" + arrayList.get(0).getFilePath() + arrayList.get(0).getFileName()); + File file2 = new File("E:/data/slrs/file/" + arrayList.get(1).getFilePath() + arrayList.get(1).getFileName()); + //判断两个文件大小 //相等 则不做处理 + long length1 = file1.length(); + long length2 = file2.length(); + if (length1 > length2) { + //1 中文 2英文 + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(1).getId(); + } else { + yi = arrayList.get(1).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(0).getId(); + } else { + yuan = arrayList.get(0).getId(); + } + } + if (length1 < length2) { + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(0).getId(); + } else { + yi = arrayList.get(0).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(1).getId(); + } else { + yuan = arrayList.get(1).getId(); + } + } + } + } + }else { + fileEOArrayList.add(SarStandardsInfo.getStandId()); + } + } } }else { @@ -2830,13 +2909,13 @@ public class SarBussionessStandServiceImpl extends ServiceImpl asList = Arrays.asList(fileIdArr); if (asList.size() > 0) { // 判断 新系统中的文件是否有名称是一样的 如果有 则跳过 进行记录 没有则 往下走 - List attFileEOS = newFileNameRepetition(asList); + Set attFileEOS = newFileNameRepetition(asList); if (attFileEOS.isEmpty()) { for (String fileId : asList) { //循环调用每一个 文件 获取文件名称 @@ -2873,13 +2952,13 @@ public class SarBussionessStandServiceImpl extends ServiceImpl attFileEOS1 = newFileNameRepetitionInfo(asList); + // 不相等的数据 notRepeatedFile 重复的文件 attFileEOS + List notRepeatedFile = duplicateFiles(attFileEOS1, attFileEOS); + if(!notRepeatedFile.isEmpty()){ + //不重复数据在老库中是否存在 selectOldSystemFileBuildId + for (AttFileEO file: notRepeatedFile){ + String theSame = isTheSame(file.getOldFileName(), SarStandardsInfo.getBuildId()); + //1 有相同 -1 无相同 + if(theSame.equals("1")){ + //证明找到文件名称一致的了 + OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); + //原文译文 进行判断 + if(sortSign != null) { + if (sortSign.getSortSign().contains("译")) { + if (StringUtils.isNotBlank(yi)) { + yi = yi+"," + file.getId(); + } else { + yi = file.getId(); + } + } else { + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan+"," + file.getId(); + } else { + yuan = file.getId(); + } + } + } + } + } + + }else { + //相同文件处理 + List arrayList = new ArrayList<>(); + for (AttFileEO data : attFileEOS) { + arrayList.add(data); + } + String theSame = isTheSame(arrayList.get(0).getOldFileName(), SarStandardsInfo.getBuildId()); + if (theSame.equals("1")) { + File file1 = new File( "E:/data/slrs/file/" + arrayList.get(0).getFilePath() + arrayList.get(0).getFileName()); + File file2 = new File( "E:/data/slrs/file/" + arrayList.get(1).getFilePath() + arrayList.get(1).getFileName()); + //判断两个文件大小 //相等 则不做处理 + long length1 = file1.length(); + long length2 = file2.length(); + if (length1 > length2) { + //1 中文 2英文 + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(1).getId(); + } else { + yi = arrayList.get(1).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(0).getId(); + } else { + yuan = arrayList.get(0).getId(); + } + } + if (length1 < length2) { + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(0).getId(); + } else { + yi = arrayList.get(0).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(1).getId(); + } else { + yuan = arrayList.get(1).getId(); + } + } + } + } + }else { + fileEOArrayList.add(SarStandardsInfo.getStandId()); + } + } } }else { @@ -2908,13 +3068,13 @@ public class SarBussionessStandServiceImpl extends ServiceImpl SarStandardsInfoList = sarStandardsInfoDao.selectListInfo("INLAND"); for (OldSystem SarStandardsInfo : SarStandardsInfoList) { @@ -2975,7 +3134,7 @@ public class SarBussionessStandServiceImpl extends ServiceImpl asList = Arrays.asList(fileIdArr); if (asList.size() > 0) { // 判断 新系统中的文件是否有名称是一样的 如果有 则跳过 进行记录 没有则 往下走 - List attFileEOS = newFileNameRepetition(asList); + Set attFileEOS = newFileNameRepetition(asList); if (attFileEOS.isEmpty()) { for (String fileId : asList) { //循环调用每一个 文件 获取文件名称 @@ -2989,31 +3148,111 @@ public class SarBussionessStandServiceImpl extends ServiceImpl attFileEOS1 = newFileNameRepetitionInfo(asList); + // 不相等的数据 notRepeatedFile 重复的文件 attFileEOS + List notRepeatedFile = duplicateFiles(attFileEOS1, attFileEOS); + if(!notRepeatedFile.isEmpty()){ + //不重复数据在老库中是否存在 selectOldSystemFileBuildId + for (AttFileEO file: notRepeatedFile){ + String theSame = isTheSame(file.getOldFileName(), bid); + //1 有相同 -1 无相同 + if(theSame.equals("1")){ + //证明找到文件名称一致的了 + OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); + //原文译文 进行判断 + if(sortSign != null) { + if (sortSign.getSortSign().contains("译")) { + if (StringUtils.isNotBlank(yi)) { + yi = yi+"," + file.getId(); + } else { + yi = file.getId(); + } + } else { + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan+"," + file.getId(); + } else { + yuan = file.getId(); + } + } + } + } + } + + } else { + //相同文件处理 + List arrayList = new ArrayList<>(); + for (AttFileEO data : attFileEOS) { + arrayList.add(data); + } + String theSame = isTheSame(arrayList.get(0).getOldFileName(), bid); + if (theSame.equals("1")) { + File file1 = new File("E:/data/slrs/file/" + arrayList.get(0).getFilePath() + arrayList.get(0).getFileName()); + File file2 = new File("E:/data/slrs/file/" + arrayList.get(1).getFilePath() + arrayList.get(1).getFileName()); + //判断两个文件大小 //相等 则不做处理 + long length1 = file1.length(); + long length2 = file2.length(); + if (length1 > length2) { + //1 中文 2英文 + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(1).getId(); + } else { + yi = arrayList.get(1).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(0).getId(); + } else { + yuan = arrayList.get(0).getId(); + } + } + if (length1 < length2) { + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(0).getId(); + } else { + yi = arrayList.get(0).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(1).getId(); + } else { + yuan = arrayList.get(1).getId(); + } + } + } + } + }else { + fileEOArrayList.add(SarStandardsInfo.getStandId()); + } + } } }else { - //循环调用每一个 文件 获取文件名称 String id = SarStandardsInfo.getFileId(); AttFileEO byId = attFileEOService.getFileInfo(id); String theSame = isTheSame(byId.getOldFileName(), bid); @@ -3024,17 +3263,16 @@ public class SarBussionessStandServiceImpl extends ServiceImpl asList = Arrays.asList(fileIdArr); if (asList.size() > 0) { // 判断 新系统中的文件是否有名称是一样的 如果有 则跳过 进行记录 没有则 往下走 - List attFileEOS = newFileNameRepetition(asList); + Set attFileEOS = newFileNameRepetition(asList); if (attFileEOS.isEmpty()) { for (String fileId : asList) { //循环调用每一个 文件 获取文件名称 @@ -3068,13 +3306,13 @@ public class SarBussionessStandServiceImpl extends ServiceImpl attFileEOS1 = newFileNameRepetitionInfo(asList); + // 不相等的数据 notRepeatedFile 重复的文件 attFileEOS + List notRepeatedFile = duplicateFiles(attFileEOS1, attFileEOS); + if(!notRepeatedFile.isEmpty()){ + //不重复数据在老库中是否存在 selectOldSystemFileBuildId + for (AttFileEO file: notRepeatedFile){ + String theSame = isTheSame(file.getOldFileName(), SarStandardsInfo.getBuildId()); + //1 有相同 -1 无相同 + if(theSame.equals("1")){ + //证明找到文件名称一致的了 + OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); + //原文译文 进行判断 + if(sortSign != null) { + if (sortSign.getSortSign().contains("译")) { + if (StringUtils.isNotBlank(yi)) { + yi = yi+"," + file.getId(); + } else { + yi = file.getId(); + } + } else { + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan+"," + file.getId(); + } else { + yuan = file.getId(); + } + } + } + } + } + + }else { + //相同文件处理 + List arrayList = new ArrayList<>(); + for (AttFileEO data : attFileEOS) { + arrayList.add(data); + } + String theSame = isTheSame(arrayList.get(0).getOldFileName(), SarStandardsInfo.getBuildId()); + if (theSame.equals("1")) { + File file1 = new File( "E:/data/slrs/file/" + arrayList.get(0).getFilePath() + arrayList.get(0).getFileName()); + File file2 = new File( "E:/data/slrs/file/" + arrayList.get(1).getFilePath() + arrayList.get(1).getFileName()); + //判断两个文件大小 //相等 则不做处理 + long length1 = file1.length(); + long length2 = file2.length(); + if (length1 > length2) { + //1 中文 2英文 + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(1).getId(); + } else { + yi = arrayList.get(1).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(0).getId(); + } else { + yuan = arrayList.get(0).getId(); + } + } + if (length1 < length2) { + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(0).getId(); + } else { + yi = arrayList.get(0).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(1).getId(); + } else { + yuan = arrayList.get(1).getId(); + } + } + } + } + }else { + fileEOArrayList.add(SarStandardsInfo.getStandId()); + } + } } }else { @@ -3103,13 +3422,13 @@ public class SarBussionessStandServiceImpl extends ServiceImpl SarBussionessStandList = sarBussionessStandEODao.selectListInfo(); - //企业的文件数据处理 - for (OldSystem sarBussionessStand: SarBussionessStandList){ + for (OldSystem sarBussionessStand : SarBussionessStandList) { String yi = ""; String yuan = ""; OldSystem old = new OldSystem(); - // 通过 关联id 去查询这条数据 查询到 即当前数据 - if(StringUtils.isNotBlank(sarBussionessStand.getBuildId())){ - if(sarBussionessStand.getBuildId().contains(",")){ - String[] buildIdArr = sarBussionessStand.getBuildId().split(","); - List buildIdList = Arrays.asList(buildIdArr); - if(!buildIdList.isEmpty()){ - for (String bId: buildIdList){ - List oldSystem1 = sarStandardsInfoDao.selectOldSystemInfoByBuidId(bId); - OldSystem oldSystem =oldSystem1.get(0); - if(oldSystem.getLoreDocId().equals(bId)) { - //通过,号分割文件,通过id去查询文件 获取文件名称 - if(StringUtils.isNotBlank(sarBussionessStand.getFileId())){ - if(sarBussionessStand.getFileId().contains(",")){ - String[] fileIdArr = sarBussionessStand.getFileId().split(","); - List asList = Arrays.asList(fileIdArr); - if(asList.size()>0) { - // 判断 新系统中的文件是否有名称是一样的 如果有 则跳过 进行记录 没有则 往下走 - List attFileEOS = newFileNameRepetition(asList); - if(attFileEOS.isEmpty()) { - for (String fileId : asList) { - //循环调用每一个 文件 获取文件名称 - String id = fileId; - AttFileEO byId = attFileEOService.getFileInfo(id); - String theSame = isTheSame(byId.getOldFileName(),bId); - if (theSame.equals("1")) { - //证明找到文件名称一致的了 - OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); - //原文译文 进行判断 - if(sortSign != null) { - if (sortSign.getSortSign().contains("译")) { - if (StringUtils.isNotBlank(yi)) { - yi = "," + fileId; - } else { - yi = fileId; - } + if (StringUtils.isNotBlank(sarBussionessStand.getBuildId())) { + if(sarBussionessStand.getBuildId().contains(",")){ + String[] buildIdArr = sarBussionessStand.getBuildId().split(","); + List buildIdList = Arrays.asList(buildIdArr); + if(!buildIdList.isEmpty()){ + for (String bid: buildIdList){ + List OldSystem1 = sarStandardsInfoDao.selectOldSystemInfoByBuidId(bid); + OldSystem oldSystem =OldSystem1.get(0); + if (oldSystem.getLoreDocId().equals(bid)) { + //通过,号分割文件,通过id去查询文件 获取文件名称 + if (StringUtils.isNotBlank(sarBussionessStand.getFileId())) { + if(sarBussionessStand.getFileId().contains(",")) { + String[] fileIdArr = sarBussionessStand.getFileId().split(","); + List asList = Arrays.asList(fileIdArr); + if (asList.size() > 0) { + // 判断 新系统中的文件是否有名称是一样的 如果有 则跳过 进行记录 没有则 往下走 + Set attFileEOS = newFileNameRepetition(asList); + if (attFileEOS.isEmpty()) { + for (String fileId : asList) { + //循环调用每一个 文件 获取文件名称 + String id = fileId; + AttFileEO byId = attFileEOService.getFileInfo(id); + String theSame = isTheSame(byId.getOldFileName(),bid); + if (theSame.equals("1")) { + //证明找到文件名称一致的了 + OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); + //原文译文 进行判断 + if(sortSign != null) { + if (sortSign.getSortSign().contains("译")) { + if (StringUtils.isNotBlank(yi)) { + yi = yi+"," + fileId; } else { - if (StringUtils.isNotBlank(yuan)) { - yuan = "," + fileId; - } else { - yuan = fileId; - } + yi = fileId; + } + } else { + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan+"," + fileId; + } else { + yuan = fileId; + } + } + } + } + } + } else { + int numberCount = 0; + //只允许2个文件名称相同 + for (AttFileEO data : attFileEOS) { + numberCount = 0; + for (AttFileEO file : attFileEOS) { + if (data.getOldFileName().equals(file.getOldFileName())) { + numberCount = numberCount+1; + } + } + } + if(numberCount==2){ + //1:文件名称重复的情况下 判断文件的大小 大的为中文 小的为英文,一样大则存入 + List attFileEOS1 = newFileNameRepetitionInfo(asList); + // 不相等的数据 notRepeatedFile 重复的文件 attFileEOS + List notRepeatedFile = duplicateFiles(attFileEOS1, attFileEOS); + if(!notRepeatedFile.isEmpty()){ + //不重复数据在老库中是否存在 selectOldSystemFileBuildId + for (AttFileEO file: notRepeatedFile){ + String theSame = isTheSame(file.getOldFileName(), bid); + //1 有相同 -1 无相同 + if(theSame.equals("1")){ + //证明找到文件名称一致的了 + OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); + //原文译文 进行判断 + if(sortSign != null) { + if (sortSign.getSortSign().contains("译")) { + if (StringUtils.isNotBlank(yi)) { + yi = yi+"," + file.getId(); + } else { + yi = file.getId(); + } + } else { + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan+"," + file.getId(); + } else { + yuan = file.getId(); + } + } + } + } + } + + } else { + //相同文件处理 + List arrayList = new ArrayList<>(); + for (AttFileEO data : attFileEOS) { + arrayList.add(data); + } + String theSame = isTheSame(arrayList.get(0).getOldFileName(), bid); + if (theSame.equals("1")) { + File file1 = new File("E:/data/slrs/file/" + arrayList.get(0).getFilePath() + arrayList.get(0).getFileName()); + File file2 = new File("E:/data/slrs/file/" + arrayList.get(1).getFilePath() + arrayList.get(1).getFileName()); + //判断两个文件大小 //相等 则不做处理 + long length1 = file1.length(); + long length2 = file2.length(); + if (length1 > length2) { + //1 中文 2英文 + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(1).getId(); + } else { + yi = arrayList.get(1).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(0).getId(); + } else { + yuan = arrayList.get(0).getId(); + } + } + if (length1 < length2) { + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(0).getId(); + } else { + yi = arrayList.get(0).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(1).getId(); + } else { + yuan = arrayList.get(1).getId(); } } } } }else { - //记录 同一条数据名称一样的 - for (AttFileEO fileEO:attFileEOS) { - //记录重复 此id企业或者海外的id - fileEO.setResId(sarBussionessStand.getStandId()); - fileEOArrayList.add(fileEO); - } + fileEOArrayList.add(sarBussionessStand.getStandId()); } } - }else { - //循环调用每一个 文件 获取文件名称 - String id = sarBussionessStand.getFileId(); - AttFileEO byId = attFileEOService.getFileInfo(id); - String theSame = isTheSame(byId.getOldFileName(), bId); - if (theSame.equals("1")) { - //证明找到文件名称一致的了 - OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); - //原文译文 进行判断 - if(sortSign != null) { - if (sortSign.getSortSign().contains("译")) { - if (StringUtils.isNotBlank(yi)) { - yi = "," + sarBussionessStand.getFileId(); - } else { - yi = sarBussionessStand.getFileId(); - } + } + }else { + String id = sarBussionessStand.getFileId(); + AttFileEO byId = attFileEOService.getFileInfo(id); + String theSame = isTheSame(byId.getOldFileName(), bid); + if (theSame.equals("1")) { + //证明找到文件名称一致的了 + OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); + //原文译文 进行判断 + if(sortSign != null) { + if (sortSign.getSortSign().contains("译")) { + if (StringUtils.isNotBlank(yi)) { + yi = yi+"," + sarBussionessStand.getFileId(); } else { - if (StringUtils.isNotBlank(yuan)) { - yuan = "," + sarBussionessStand.getFileId(); - } else { - yuan = sarBussionessStand.getFileId(); - } - + yi = sarBussionessStand.getFileId(); + } + } else { + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan+"," + sarBussionessStand.getFileId(); + } else { + yuan = sarBussionessStand.getFileId(); } } } @@ -3242,78 +3634,157 @@ public class SarBussionessStandServiceImpl extends ServiceImpl oldSystem1 = sarStandardsInfoDao.selectOldSystemInfoByBuidId(sarBussionessStand.getBuildId()); - OldSystem oldSystem = oldSystem1.get(0); - if (oldSystem.getLoreDocId().equals(sarBussionessStand.getBuildId())) { - //通过,号分割文件,通过id去查询文件 获取文件名称 - if (StringUtils.isNotBlank(sarBussionessStand.getFileId())) { - if (sarBussionessStand.getFileId().contains(",")) { - String[] fileIdArr = sarBussionessStand.getFileId().split(","); - List asList = Arrays.asList(fileIdArr); - if (asList.size() > 0) { - // 判断 新系统中的文件是否有名称是一样的 如果有 则跳过 进行记录 没有则 往下走 - List attFileEOS = newFileNameRepetition(asList); - if (attFileEOS.isEmpty()) { - for (String fileId : asList) { - //循环调用每一个 文件 获取文件名称 - String id = fileId; - AttFileEO byId = attFileEOService.getFileInfo(id); - String theSame = isTheSame(byId.getOldFileName(), sarBussionessStand.getBuildId()); - if (theSame.equals("1")) { - //证明找到文件名称一致的了 - OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); - //原文译文 进行判断 - if(sortSign != null) { - if (sortSign.getSortSign().contains("译")) { - if (StringUtils.isNotBlank(yi)) { - yi = "," + fileId; - } else { - yi = fileId; - } + } + }else { + List OldSystem1 = sarStandardsInfoDao.selectOldSystemInfoByBuidId(sarBussionessStand.getBuildId()); + OldSystem oldSystem =OldSystem1.get(0); + if (oldSystem.getLoreDocId().equals(sarBussionessStand.getBuildId())) { + //通过,号分割文件,通过id去查询文件 获取文件名称 + if (StringUtils.isNotBlank(sarBussionessStand.getFileId())) { + if(sarBussionessStand.getFileId().contains(",")) { + String[] fileIdArr = sarBussionessStand.getFileId().split(","); + List asList = Arrays.asList(fileIdArr); + if (asList.size() > 0) { + // 判断 新系统中的文件是否有名称是一样的 如果有 则跳过 进行记录 没有则 往下走 + Set attFileEOS = newFileNameRepetition(asList); + if (attFileEOS.isEmpty()) { + for (String fileId : asList) { + //循环调用每一个 文件 获取文件名称 + String id = fileId; + AttFileEO byId = attFileEOService.getFileInfo(id); + String theSame = isTheSame(byId.getOldFileName(), sarBussionessStand.getBuildId()); + if (theSame.equals("1")) { + //证明找到文件名称一致的了 + OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); + //原文译文 进行判断 + if(sortSign != null) { + if (sortSign.getSortSign().contains("译")) { + if (StringUtils.isNotBlank(yi)) { + yi = yi+"," + fileId; } else { - if (StringUtils.isNotBlank(yuan)) { - yuan = "," + fileId; - } else { - yuan = fileId; - } + yi = fileId; + } + } else { + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan+"," + fileId; + } else { + yuan = fileId; + } + } + } + } + } + } else { + int numberCount = 0; + //只允许2个文件名称相同 + for (AttFileEO data : attFileEOS) { + numberCount = 0; + for (AttFileEO file : attFileEOS) { + if (data.getOldFileName().equals(file.getOldFileName())) { + numberCount = numberCount+1; + } + } + } + if(numberCount==2){ + //1:文件名称重复的情况下 判断文件的大小 大的为中文 小的为英文,一样大则存入 + List attFileEOS1 = newFileNameRepetitionInfo(asList); + // 不相等的数据 notRepeatedFile 重复的文件 attFileEOS + List notRepeatedFile = duplicateFiles(attFileEOS1, attFileEOS); + if(!notRepeatedFile.isEmpty()){ + //不重复数据在老库中是否存在 selectOldSystemFileBuildId + for (AttFileEO file: notRepeatedFile){ + String theSame = isTheSame(file.getOldFileName(), sarBussionessStand.getBuildId()); + //1 有相同 -1 无相同 + if(theSame.equals("1")){ + //证明找到文件名称一致的了 + OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); + //原文译文 进行判断 + if(sortSign != null) { + if (sortSign.getSortSign().contains("译")) { + if (StringUtils.isNotBlank(yi)) { + yi = yi+"," + file.getId(); + } else { + yi = file.getId(); + } + } else { + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan+"," + file.getId(); + } else { + yuan = file.getId(); + } + } + } + } + } + + }else { + //相同文件处理 + List arrayList = new ArrayList<>(); + for (AttFileEO data : attFileEOS) { + arrayList.add(data); + } + String theSame = isTheSame(arrayList.get(0).getOldFileName(), sarBussionessStand.getBuildId()); + if (theSame.equals("1")) { + File file1 = new File( "E:/data/slrs/file/" + arrayList.get(0).getFilePath() + arrayList.get(0).getFileName()); + File file2 = new File( "E:/data/slrs/file/" + arrayList.get(1).getFilePath() + arrayList.get(1).getFileName()); + //判断两个文件大小 //相等 则不做处理 + long length1 = file1.length(); + long length2 = file2.length(); + if (length1 > length2) { + //1 中文 2英文 + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(1).getId(); + } else { + yi = arrayList.get(1).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(0).getId(); + } else { + yuan = arrayList.get(0).getId(); + } + } + if (length1 < length2) { + if (StringUtils.isNotBlank(yi)) { + yi = yi + "," + arrayList.get(0).getId(); + } else { + yi = arrayList.get(0).getId(); + } + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan + "," + arrayList.get(1).getId(); + } else { + yuan = arrayList.get(1).getId(); } } } } - } else { - //记录 同一条数据名称一样的 - for (AttFileEO fileEO : attFileEOS) { - //记录重复 此id企业或者海外的id - fileEO.setResId(sarBussionessStand.getStandId()); - fileEOArrayList.add(fileEO); - } + }else { + fileEOArrayList.add(sarBussionessStand.getStandId()); } } - } else { - String id = sarBussionessStand.getFileId(); - AttFileEO byId = attFileEOService.getFileInfo(id); - String theSame = isTheSame(byId.getOldFileName(), sarBussionessStand.getBuildId()); - if (theSame.equals("1")) { - //证明找到文件名称一致的了 - OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); - //原文译文 进行判断 - if(sortSign != null) { - if (sortSign.getSortSign().contains("译")) { - if (StringUtils.isNotBlank(yi)) { - yi = "," + sarBussionessStand.getFileId(); - } else { - yi = sarBussionessStand.getFileId(); - } + } + }else { + //循环调用每一个 文件 获取文件名称 + String id = sarBussionessStand.getFileId(); + AttFileEO byId = attFileEOService.getFileInfo(id); + String theSame = isTheSame(byId.getOldFileName(), sarBussionessStand.getBuildId()); + if (theSame.equals("1")) { + //证明找到文件名称一致的了 + OldSystem sortSign = sarStandardsInfoDao.loreDepotSort(oldSystem.getSortId()); + //原文译文 进行判断 + if(sortSign != null) { + if (sortSign.getSortSign().contains("译")) { + if (StringUtils.isNotBlank(yi)) { + yi = yi+"," + sarBussionessStand.getFileId(); } else { - if (StringUtils.isNotBlank(yuan)) { - yuan = "," + sarBussionessStand.getFileId(); - } else { - yuan = sarBussionessStand.getFileId(); - } - + yi = sarBussionessStand.getFileId(); + } + } else { + if (StringUtils.isNotBlank(yuan)) { + yuan = yuan+"," + sarBussionessStand.getFileId(); + } else { + yuan = sarBussionessStand.getFileId(); } } } @@ -3322,7 +3793,8 @@ public class SarBussionessStandServiceImpl extends ServiceImpl loreAttacheList= sarStandardsInfoDao.selectOldSystemFileBuildId(buildId); - if(loreAttacheList.size()>0){ - for (OldSystem src : loreAttacheList) { - if(StringUtils.isNotBlank(src.getFileSrc())){ - // 通过 / 去分割 / 的最后一位 - String[] split = src.getFileSrc().split("/"); - List asList = Arrays.asList(split); - //集合的最后一个就是名称 - int size = asList.size(); - String s = asList.get(size-1); - if (s.equals(oldFileName)){ - return "1"; - } - } - } - } - return "-1";*/ List loreAttacheList= sarStandardsInfoDao.selectOldSystemFileBuildId(buildId); if(loreAttacheList.size()>0){ for (OldSystem src : loreAttacheList) { @@ -3415,18 +3870,52 @@ public class SarBussionessStandServiceImpl extends ServiceImpl newFileNameRepetition(List asList){ + public Set newFileNameRepetition(List asList){ List attFileEOS = new ArrayList<>(); - List attFileEOArrayList = new ArrayList<>(); - for (String fileId : asList){ - AttFileEO byId = attFileEOService.getFileInfo(fileId); - attFileEOS.add(byId); + Set attFileEOArrayList = new HashSet<>(); + if(asList.size()>0) { + for (String fileId : asList) { + AttFileEO byId = attFileEOService.getFileInfo(fileId); + attFileEOS.add(byId); + } } - for (AttFileEO data:attFileEOS) { - for (AttFileEO file:attFileEOS){ - if(!data.getId().equals(file.getId())){ - if(data.getOldFileName().equals(file.getOldFileName())){ - attFileEOArrayList.add(data); + if(attFileEOS.size()>0) { + for (AttFileEO data : attFileEOS) { + for (AttFileEO file : attFileEOS) { + if (!data.getId().equals(file.getId())) { + if (data.getOldFileName().equals(file.getOldFileName())) { + attFileEOArrayList.add(data); + } + } + } + } + } + return attFileEOArrayList; + } + + public List newFileNameRepetitionInfo(List asList){ + List attFileEOS = new ArrayList<>(); + if(asList.size()>0) { + for (String fileId : asList) { + AttFileEO byId = attFileEOService.getFileInfo(fileId); + attFileEOS.add(byId); + } + } + return attFileEOS; + } + + public List duplicateFiles(List attFileEOList,Set chongfu){ + //非重复的文件处理 + List attFileEOArrayList = new ArrayList<>(); + for (AttFileEO data : attFileEOList){ + attFileEOArrayList.add(data); + } + + for (AttFileEO data : attFileEOList){ + for (AttFileEO file : chongfu){ + if(data.getId().equals(file.getId())){ + if(!attFileEOArrayList.isEmpty()) { + attFileEOArrayList.remove(data); } } } diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardsInfo/SarStandardsInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardsInfo/SarStandardsInfoMapper.xml index 5f96b8b2..c40ce3d5 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardsInfo/SarStandardsInfoMapper.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardsInfo/SarStandardsInfoMapper.xml @@ -1944,16 +1944,6 @@ - -