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