fix: 老法规导入BUG修正
企标使用新版正则表达式 修复重复文件数据的BUG
This commit is contained in:
+7
-6
@@ -157,11 +157,11 @@ public class EnterpriseStandardUtil {
|
||||
public static Map<String, String> splitStandardNumber(String standardNumber) {
|
||||
// 定义多个正则表达式来匹配不同的标准号格式
|
||||
String[] regexPatterns = {
|
||||
"([A-Za-z]{1,2})[-\\/]([A-Za-z]{1,2})\\s+([A-Za-z0-9]{1,3})[-—–]?(\\d{4,5}(?:\\.\\d+)?)[-—–](\\d{4})", // 下面四种综合的正则
|
||||
"([A-Za-z]{1,2})\\/([A-Za-z]{1,2}) (\\d)(\\d{4})-(\\d{4})",// 正常格式
|
||||
"([A-Za-z]{1,2})\\/([A-Za-z]{1,2}) (\\d{1,3})(\\.\\d+)?-(\\d{4})", // 带小数的格式
|
||||
"([A-Za-z]{1,2})\\/([A-Za-z]{1,2})\\s+([A-Za-z0-9]{1,3})-(\\d{4})", // 类别代号J11这种格式
|
||||
"([A-Za-z]{1,2})[-\\/]([A-Za-z]{1,2})\\s+([A-Za-z0-9]{1,3})[-—–]\\d{4,5}(\\.\\d+)?-(\\d{4})"
|
||||
"([A-Z]+)/([A-Z]+)\\s+([0-9A-Z])(\\d+(?:\\.\\d+)?)[-—](\\w+)",
|
||||
// "([A-Za-z]{1,2})[-\\/]([A-Za-z]{1,2})\\s+([A-Za-z0-9]{1,3})[-—–]?(\\d{4,5}(?:\\.\\d+)?)[-—–]([A-Za-z0-9]+)", // 下面四种综合的正则
|
||||
// "([A-Za-z]{1,2})\\/([A-Za-z]{1,2}) (\\d)(\\d{4})-([A-Za-z0-9]+)",// 正常格式
|
||||
// "([A-Za-z]{1,2})\\/([A-Za-z]{1,2}) (\\d)(\\.\\d+)?-([A-Za-z0-9]+)", // 带小数的格式
|
||||
// "([A-Za-z]{1,2})\\/([A-Za-z]{1,2})\\s+([A-Za-z0-9])-([A-Za-z0-9]+)",
|
||||
};
|
||||
|
||||
Map<String, String> map = new HashMap<>();
|
||||
@@ -173,13 +173,14 @@ public class EnterpriseStandardUtil {
|
||||
String esCode = matcher.group(1);
|
||||
String eNameCode = matcher.group(2);
|
||||
String sCategoryCode = matcher.group(3);
|
||||
String sequenceNumber = matcher.group(4);
|
||||
String yearNum = matcher.group(5);
|
||||
|
||||
map.put(FieldCommon.ENTERPRISE_STANDARD_CODE, esCode);
|
||||
map.put(FieldCommon.ENTERPRISE_NAME_CODE, eNameCode);
|
||||
map.put(FieldCommon.STANDARD_CATEGORY_CODE, sCategoryCode);
|
||||
map.put(FieldCommon.STANDARD_NUMBER_TEMP, sequenceNumber);
|
||||
map.put(FieldCommon.YEAR_NUMBER, yearNum);
|
||||
|
||||
isMatched = true;
|
||||
break; // 匹配成功,跳出循环
|
||||
}
|
||||
|
||||
+6
@@ -306,6 +306,12 @@ public class LawsEnterpriseStandard implements Serializable {
|
||||
@ApiModelProperty(value = "顺序号")
|
||||
private String standardNumberTemp;
|
||||
|
||||
/**
|
||||
* 老法规系统Id
|
||||
*/
|
||||
@ApiModelProperty(value = "老法规系统Id")
|
||||
private String oldSystemId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1809789807789012221L;
|
||||
}
|
||||
|
||||
+52
-6
@@ -17,6 +17,8 @@ import com.jero.modules.laws.common.constant.FieldCommon;
|
||||
import com.jero.modules.laws.enterprise.entity.OldSystemImportDTO;
|
||||
import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider;
|
||||
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
|
||||
import com.jero.modules.laws.home.common.LawsHomeSearchCommon;
|
||||
import com.jero.modules.laws.home.service.ILawsHomeSearchService;
|
||||
import com.jero.modules.laws.oldSystem.entity.OldSystemDepartRelation;
|
||||
import com.jero.modules.laws.oldSystem.service.OldSystemDepartRelationService;
|
||||
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
|
||||
@@ -32,6 +34,7 @@ import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.service.ISysDepartService;
|
||||
import com.jero.modules.system.service.ISysUserService;
|
||||
import io.minio.errors.MinioException;
|
||||
import lombok.Cleanup;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.compress.utils.IOUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -96,6 +99,9 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
@Resource
|
||||
private IOSSFileService ossFileService;
|
||||
|
||||
@Resource
|
||||
private ILawsHomeSearchService lawsHomeSearchService;
|
||||
|
||||
@Override
|
||||
public LawsEnterpriseStandard queryByStandardNumber(String standardNumber) {
|
||||
if (StringUtils.isBlank(standardNumber)) {
|
||||
@@ -128,7 +134,9 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
try {
|
||||
// 获取当前时间戳(毫秒)
|
||||
long startTime = System.currentTimeMillis();
|
||||
allDatalist = ExcelImportUtil.importExcel(file.getInputStream(), OldSystemImportDTO.class, params);
|
||||
@Cleanup
|
||||
InputStream inputStream = file.getInputStream();
|
||||
allDatalist = ExcelImportUtil.importExcel(inputStream, OldSystemImportDTO.class, params);
|
||||
// 删除空行
|
||||
for (int i = 0; i < allDatalist.size(); i++) {
|
||||
OldSystemImportDTO oldSystemImportDTO = allDatalist.get(i);
|
||||
@@ -179,6 +187,7 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
} else {
|
||||
this.oldSysGBImport(gbDatalist, errImportList);
|
||||
}
|
||||
break;
|
||||
case "3":
|
||||
// 判断是否需要跳过
|
||||
if (esDatalist.isEmpty()) {
|
||||
@@ -188,7 +197,7 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
}
|
||||
// 导入国标
|
||||
// 判断是否需要跳过
|
||||
if (gbDatalist.isEmpty()) {
|
||||
if (gbDatalist.isEmpty()) {
|
||||
log.info("国标数据为空,跳过导入");
|
||||
} else {
|
||||
this.oldSysGBImport(gbDatalist, errImportList);
|
||||
@@ -312,6 +321,8 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
Map<String, List<OSSFile>> standardNumberToFileMap = ossFileList.stream().collect(Collectors.groupingBy(OSSFile::getStandardNo));
|
||||
|
||||
// 4. 遍历待保存或更新的列表,设置ID
|
||||
StringBuilder oldIds = new StringBuilder();
|
||||
StringBuilder newIds = new StringBuilder();
|
||||
for (LawsDomesticStandard entity : gbList) {
|
||||
LawsDomesticStandard existingEntity = standardNumberToEntityMap.get(entity.getStandardNumber());
|
||||
if (existingEntity != null) {
|
||||
@@ -319,6 +330,12 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
this.removeById(existingEntity.getId());
|
||||
// 删除替代
|
||||
lawsReplacedStandardService.removeRelation(existingEntity.getStandardNumber(), 1);
|
||||
// 删除文件关联
|
||||
LambdaUpdateWrapper<OSSFile> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.eq(OSSFile::getStandardId, existingEntity.getId());
|
||||
ossFileService.remove(wrapper);
|
||||
// 拼接老id
|
||||
oldIds.append(existingEntity.getId()).append(",");
|
||||
}
|
||||
String tdbzh = entity.getSubstituteStandardNumber();
|
||||
String btdbzh = entity.getReplacedByStandardNumber();
|
||||
@@ -341,6 +358,7 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
OSSFile ossFile = standardNumberToFileMap.get(entity.getStandardNumber()).get(0);
|
||||
ossFile.setStandardId(standardId);
|
||||
ossFileService.save(ossFile);
|
||||
entity.setId(standardId);
|
||||
}
|
||||
log.info("老法规国标覆盖导入完成");
|
||||
// 获取当前时间戳(毫秒)
|
||||
@@ -348,6 +366,16 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
// 计算执行时间(毫秒)
|
||||
long executionTime = endTime - startTime;
|
||||
log.info("代码执行时间:" + executionTime + " 毫秒");
|
||||
// es中删除数据
|
||||
if (oldIds.length() > 0) {
|
||||
oldIds = new StringBuilder(oldIds.substring(0, oldIds.length() - 1));
|
||||
lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD, oldIds.toString(), LawsHomeSearchCommon.LAWS_ES_DELETE);
|
||||
}
|
||||
// 同步es数据库
|
||||
if (newIds.length() > 0) {
|
||||
newIds = new StringBuilder(newIds.substring(0, newIds.length() - 1));
|
||||
lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD, newIds.toString(), LawsHomeSearchCommon.LAWS_ES_ADD);
|
||||
}
|
||||
}
|
||||
|
||||
private void oldSysESImport(List<OldSystemImportDTO> esDatalist, List<OldSystemImportDTO> errImportList) {
|
||||
@@ -361,7 +389,7 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
for (OldSystemImportDTO dto : esDatalist) {
|
||||
try {
|
||||
LawsEnterpriseStandard es = new LawsEnterpriseStandard();
|
||||
es.setId(dto.getId());
|
||||
es.setOldSystemId(dto.getId());
|
||||
es.setStandardNumber(dto.getBzh());
|
||||
es.setStandardName(dto.getBzmc());
|
||||
es.setStandardEnglishName(dto.getBzywmc());
|
||||
@@ -377,7 +405,7 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
String standardNumber = dto.getBzh();
|
||||
// 如果标准号中有错误符号 则需要修正一下
|
||||
// 正则表达式用于检测是否存在错误的“-”作为分隔符
|
||||
String regex = "([A-Za-z]{1,2})-([A-Za-z]{1,2}) (\\d{4,5}(\\.\\d+)?)-(\\d{4})";
|
||||
String regex = "([A-Za-z]{1,2})-([A-Za-z]{1,2}) (\\d{4,5}(\\.\\d+)?)-([A-Za-z0-9]+)";
|
||||
|
||||
// 使用Pattern和Matcher检测是否匹配
|
||||
Pattern pattern = Pattern.compile(regex);
|
||||
@@ -392,6 +420,7 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
es.setStandardCode(map.get(FieldCommon.ENTERPRISE_STANDARD_CODE));
|
||||
es.setNameCode(map.get(FieldCommon.ENTERPRISE_NAME_CODE));
|
||||
es.setCategoryCode(map.get(FieldCommon.STANDARD_CATEGORY_CODE));
|
||||
es.setStandardNumberTemp(map.get(FieldCommon.STANDARD_NUMBER_TEMP));
|
||||
es.setYearNumber(map.get(FieldCommon.YEAR_NUMBER));
|
||||
}
|
||||
|
||||
@@ -443,18 +472,22 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
Map<String, List<OSSFile>> standardNumberToFileMap = ossFileList.stream().collect(Collectors.groupingBy(OSSFile::getStandardNo));
|
||||
|
||||
// 4. 遍历待保存或更新的列表,设置ID
|
||||
StringBuilder oldIds = new StringBuilder();
|
||||
StringBuilder newIds = new StringBuilder();
|
||||
for (LawsEnterpriseStandard entity : esList) {
|
||||
String curStandardNumber = entity.getStandardNumber();
|
||||
LawsEnterpriseStandard existingEntity = standardNumberToEntityMap.get(entity.getStandardNumber());
|
||||
if (existingEntity != null) {
|
||||
// 如果存在,则先删后增
|
||||
this.removeById(existingEntity.getId());
|
||||
// 代替
|
||||
lawsReplacedStandardService.removeRelation(existingEntity.getStandardNumber(), 1);
|
||||
// 删除文件关联
|
||||
LambdaUpdateWrapper<OSSFile> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.eq(OSSFile::getStandardId, existingEntity.getId());
|
||||
ossFileService.remove(wrapper);
|
||||
// 代替
|
||||
lawsReplacedStandardService.removeRelation(existingEntity.getStandardNumber(), 1);
|
||||
// 拼接老id
|
||||
oldIds.append(existingEntity.getId()).append(",");
|
||||
}
|
||||
String tdbzh = entity.getSubstituteStandardNumber();
|
||||
String btdbzh = entity.getReplacedByStandardNumber();
|
||||
@@ -482,6 +515,9 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
ossFile.setStandardId(standardId);
|
||||
ossFileService.save(ossFile);
|
||||
}
|
||||
entity.setId(standardId);
|
||||
// 拼接新id
|
||||
newIds.append(standardId).append(",");
|
||||
}
|
||||
log.info("老法规企标覆盖导入完成");
|
||||
// 获取当前时间戳(毫秒)
|
||||
@@ -489,6 +525,16 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
// 计算执行时间(毫秒)
|
||||
long executionTime = endTime - startTime;
|
||||
log.info("代码执行时间:" + executionTime + " 毫秒");
|
||||
// es中删除数据
|
||||
if (oldIds.length() > 0) {
|
||||
oldIds = new StringBuilder(oldIds.substring(0, oldIds.length() - 1));
|
||||
lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_ENTERPRISE_STANDARD, oldIds.toString(), LawsHomeSearchCommon.LAWS_ES_DELETE);
|
||||
}
|
||||
// 同步es数据库
|
||||
if (newIds.length() > 0) {
|
||||
newIds = new StringBuilder(newIds.substring(0, newIds.length() - 1));
|
||||
lawsHomeSearchService.updateEsData(LawsHomeSearchCommon.LAWS_ENTERPRISE_STANDARD, newIds.toString(), LawsHomeSearchCommon.LAWS_ES_ADD);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user