fix: 国标导入报错
This commit is contained in:
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
<!-- 通过字典code获取字典数据 -->
|
<!-- 通过字典code获取字典数据 -->
|
||||||
<select id="queryDictItemsByCode" parameterType="String" resultType="com.jero.common.system.vo.DictModel">
|
<select id="queryDictItemsByCode" parameterType="String" resultType="com.jero.common.system.vo.DictModel">
|
||||||
select s.item_value as "value",s.item_text as "text" from sys_dict_item s
|
select s.item_value as "value",s.item_text as "text" from sys_dict_item s
|
||||||
where dict_id = (select id from sys_dict where dict_code = #{code})
|
where dict_id = (select id from sys_dict where dict_code = #{code}) and del_flag = 0
|
||||||
order by s.sort_order asc
|
order by s.sort_order asc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|||||||
+14
-16
@@ -1324,22 +1324,6 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 去除国标导入逻辑不需要显示的字段
|
|
||||||
if (TableNameEnum.DOMESTIC_REGULATIONS.getTableName().equals(tableName)) {
|
|
||||||
fieldList = fieldList.stream()
|
|
||||||
.filter(lawsTag -> !lawsTag.getDbFieldName().equals(FieldCommon.STANDARD_CLASS))
|
|
||||||
.filter(lawsTag -> !lawsTag.getDbFieldName().equals(FieldCommon.YEAR_NUMBER))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 去除外标导入逻辑不需要显示的字段
|
|
||||||
if (TableNameEnum.FOREIGN_REGULATIONS.getTableName().equals(tableName)) {
|
|
||||||
fieldList = fieldList.stream()
|
|
||||||
.filter(lawsTag -> !lawsTag.getDbFieldName().equals(FieldCommon.STANDARD_CLASS))
|
|
||||||
.filter(lawsTag -> !lawsTag.getDbFieldName().equals(FieldCommon.YEAR_NUMBER))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 创建一个Excel工作簿
|
// 创建一个Excel工作簿
|
||||||
Workbook workbook = this.createWorkBookWithLawsTags(fieldList);
|
Workbook workbook = this.createWorkBookWithLawsTags(fieldList);
|
||||||
|
|
||||||
@@ -2093,6 +2077,14 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
|||||||
|
|
||||||
// 创建一个工作表
|
// 创建一个工作表
|
||||||
Sheet sheet = workbook.createSheet("导入模板");
|
Sheet sheet = workbook.createSheet("导入模板");
|
||||||
|
|
||||||
|
// 创建数据格式
|
||||||
|
DataFormat fmt = workbook.createDataFormat();
|
||||||
|
|
||||||
|
// 创建一个单元格样式并设置数据格式为文本
|
||||||
|
CellStyle textStyle = workbook.createCellStyle();
|
||||||
|
textStyle.setDataFormat(fmt.getFormat("@"));
|
||||||
|
|
||||||
// 设置列宽
|
// 设置列宽
|
||||||
for (int i = 0; i < fieldList.size(); i++) {
|
for (int i = 0; i < fieldList.size(); i++) {
|
||||||
sheet.setColumnWidth(i, 15 * 256);
|
sheet.setColumnWidth(i, 15 * 256);
|
||||||
@@ -2134,6 +2126,12 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 确保所有新建的单元格都应用这个文本格式
|
||||||
|
for (int i = 0; i < fieldList.size(); i++) {
|
||||||
|
// 在后续创建单元格时应用文本样式
|
||||||
|
sheet.setDefaultColumnStyle(i, textStyle);
|
||||||
|
}
|
||||||
|
|
||||||
// 创建第二行并合并单元格
|
// 创建第二行并合并单元格
|
||||||
Row row2 = sheet.createRow(1);
|
Row row2 = sheet.createRow(1);
|
||||||
row2.setHeightInPoints(95);
|
row2.setHeightInPoints(95);
|
||||||
|
|||||||
@@ -90,8 +90,12 @@ public class ImportUtil {
|
|||||||
for (int i = 3; i < sheet.getPhysicalNumberOfRows(); i++) {
|
for (int i = 3; i < sheet.getPhysicalNumberOfRows(); i++) {
|
||||||
Map<String, Integer> keyMap = new HashMap<>();
|
Map<String, Integer> keyMap = new HashMap<>();
|
||||||
int line = i + 1;
|
int line = i + 1;
|
||||||
|
String standardNumber = "";
|
||||||
|
String standardClass = "";
|
||||||
|
String yearNumber = "";
|
||||||
StringBuilder errMsg = new StringBuilder("第" + line + "行");
|
StringBuilder errMsg = new StringBuilder("第" + line + "行");
|
||||||
Map<String, Object> parameterMap = new HashMap<>();
|
Map<String, Object> parameterMap = new HashMap<>();
|
||||||
|
boolean standardValidFlag = false;
|
||||||
for (int j = 0; j < headerList.size(); j++) {
|
for (int j = 0; j < headerList.size(); j++) {
|
||||||
String row = CellReference.convertNumToColString(j);
|
String row = CellReference.convertNumToColString(j);
|
||||||
// 获取当前单元格
|
// 获取当前单元格
|
||||||
@@ -99,6 +103,93 @@ public class ImportUtil {
|
|||||||
// 获取当前单元格内容对应的字段
|
// 获取当前单元格内容对应的字段
|
||||||
LawsTag tag = headerList.get(j);
|
LawsTag tag = headerList.get(j);
|
||||||
|
|
||||||
|
// 将国标和外标的三个标准号组成元素取出
|
||||||
|
if (!standardValidFlag) {
|
||||||
|
if ((TableNameEnum.DOMESTIC_REGULATIONS.getValue().equals(tag.getIsModel()) ||
|
||||||
|
TableNameEnum.FOREIGN_REGULATIONS.getValue().equals(tag.getIsModel())) &&
|
||||||
|
FieldCommon.STANDARD_NUMBER_TEMP.equals(tag.getDbFieldName()) ||
|
||||||
|
FieldCommon.STANDARD_CLASS.equals(tag.getDbFieldName()) ||
|
||||||
|
FieldCommon.YEAR_NUMBER.equals(tag.getDbFieldName())
|
||||||
|
) {
|
||||||
|
if (FieldCommon.STANDARD_NUMBER_TEMP.equals(tag.getDbFieldName())) {
|
||||||
|
if (cell == null) {
|
||||||
|
log.error("第" + row + "列" + tag.getDbFieldTxt() + "为必填 ");
|
||||||
|
errMsg.append("第").append(row).append("列").append(tag.getDbFieldTxt()).append("为必填 ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
standardNumber = cell.toString().trim();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("第" + row + "列" + tag.getDbFieldTxt() + "填写错误 ");
|
||||||
|
errMsg.append("第").append(row).append("列").append(tag.getDbFieldTxt()).append("填写错误 ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (FieldCommon.STANDARD_CLASS.equals(tag.getDbFieldName())) {
|
||||||
|
if (cell == null) {
|
||||||
|
log.error("第" + row + "列" + tag.getDbFieldTxt() + "为必填 ");
|
||||||
|
errMsg.append("第").append(row).append("列").append(tag.getDbFieldTxt()).append("为必填 ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
standardClass = cell.toString().trim();
|
||||||
|
}
|
||||||
|
if (FieldCommon.YEAR_NUMBER.equals(tag.getDbFieldName())) {
|
||||||
|
if (cell == null) {
|
||||||
|
// 当前年
|
||||||
|
Calendar date = Calendar.getInstance();
|
||||||
|
yearNumber = String.valueOf(date.get(Calendar.YEAR));
|
||||||
|
} else {
|
||||||
|
yearNumber = String.valueOf(Integer.parseInt(cell.toString().trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 如果三个都不为空则校验标准号
|
||||||
|
if (StrUtil.isNotBlank(standardNumber) && StrUtil.isNotBlank(standardClass) && StrUtil.isNotBlank(yearNumber)) {
|
||||||
|
if ((TableNameEnum.DOMESTIC_REGULATIONS.getValue().equals(tag.getIsModel()))) {
|
||||||
|
// 校验standardClass
|
||||||
|
if (!this.dictValid("standard_type", standardClass)) {
|
||||||
|
log.error("第" + row + "列" + tag.getDbFieldTxt() + "填写错误 ");
|
||||||
|
errMsg.append("第").append(row).append("列").append(tag.getDbFieldTxt()).append("填写错误 ");
|
||||||
|
} else {
|
||||||
|
String domesticStandardNumber = standardNumber + " " + standardClass + "-" + yearNumber;
|
||||||
|
QueryWrapper<LawsDomesticStandard> domesticStandardQueryWrapper = new QueryWrapper<>();
|
||||||
|
domesticStandardQueryWrapper.eq(FieldCommon.STANDARD_NUMBER, domesticStandardNumber);
|
||||||
|
LawsDomesticStandard lawsDomesticStandard = lawsDomeStandardService.getOne(domesticStandardQueryWrapper);
|
||||||
|
standardValidFlag = true;
|
||||||
|
if (lawsDomesticStandard != null) {
|
||||||
|
log.error("第" + line + "行的标准编号已存在 ");
|
||||||
|
errMsg.append("第").append(line).append("行的标准编号已存在");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
standardClass = this.convertDictValue("standard_type" , standardClass);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((TableNameEnum.FOREIGN_REGULATIONS.getValue().equals(tag.getIsModel()))) {
|
||||||
|
// 校验standardClass
|
||||||
|
if (!this.dictValid("standard_type_overseas", standardClass)) {
|
||||||
|
log.error("第" + row + "列" + tag.getDbFieldTxt() + "填写错误 ");
|
||||||
|
errMsg.append("第").append(row).append("列").append(tag.getDbFieldTxt()).append("填写错误 ");
|
||||||
|
} else {
|
||||||
|
String foreignStandardNumber = standardNumber + " " + standardClass + "-" + yearNumber;
|
||||||
|
QueryWrapper<LawsOverseasStandard> domesticStandardQueryWrapper = new QueryWrapper<>();
|
||||||
|
domesticStandardQueryWrapper.eq(FieldCommon.STANDARD_NUMBER, foreignStandardNumber);
|
||||||
|
LawsOverseasStandard lawsOverseasStandard = overseasStandardService.getOne(domesticStandardQueryWrapper);
|
||||||
|
standardValidFlag = true;
|
||||||
|
if (lawsOverseasStandard != null) {
|
||||||
|
log.error("第" + line + "行的标准编号已存在 ");
|
||||||
|
errMsg.append("第").append(line).append("行的标准编号已存在");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
standardClass = this.convertDictValue("standard_type_overseas" , standardClass);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 将转好的值加入Map
|
||||||
|
parameterMap.put(FieldCommon.STANDARD_NUMBER_TEMP, standardNumber);
|
||||||
|
parameterMap.put(FieldCommon.STANDARD_CLASS, standardClass);
|
||||||
|
parameterMap.put(FieldCommon.YEAR_NUMBER, yearNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 必填验证
|
// 必填验证
|
||||||
if (YesOrNoEnum.YES.getValue().equals(tag.getFieldMustInput())) {
|
if (YesOrNoEnum.YES.getValue().equals(tag.getFieldMustInput())) {
|
||||||
if (!this.mustInputValid(cell)) {
|
if (!this.mustInputValid(cell)) {
|
||||||
@@ -112,6 +203,9 @@ public class ImportUtil {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String cellValue = cell.toString().trim();
|
String cellValue = cell.toString().trim();
|
||||||
|
if (StrUtil.isBlank(cellValue)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// 企标编号校验
|
// 企标编号校验
|
||||||
if (FieldCommon.STANDARD_NUMBER.equals(tag.getDbFieldName())) {
|
if (FieldCommon.STANDARD_NUMBER.equals(tag.getDbFieldName())) {
|
||||||
@@ -154,9 +248,8 @@ public class ImportUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO 国标编号校验
|
|
||||||
// TODO 外标编号校验
|
// 企标编号校验
|
||||||
// 校验编号唯一性
|
|
||||||
if (TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(tag.getIsModel())) {
|
if (TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(tag.getIsModel())) {
|
||||||
LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.queryByStandardNumber(cellValue);
|
LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.queryByStandardNumber(cellValue);
|
||||||
if (lawsEnterpriseStandard != null) {
|
if (lawsEnterpriseStandard != null) {
|
||||||
@@ -164,24 +257,6 @@ public class ImportUtil {
|
|||||||
errMsg.append("第").append(row).append("列输入的").append(tag.getDbFieldTxt()).append("已存在 ");
|
errMsg.append("第").append(row).append("列输入的").append(tag.getDbFieldTxt()).append("已存在 ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (TableNameEnum.DOMESTIC_REGULATIONS.getValue().equals(tag.getIsModel())) {
|
|
||||||
QueryWrapper<LawsDomesticStandard> domesticStandardQueryWrapper = new QueryWrapper<>();
|
|
||||||
domesticStandardQueryWrapper.eq(FieldCommon.STANDARD_NUMBER, cellValue);
|
|
||||||
LawsDomesticStandard lawsDomesticStandard = lawsDomeStandardService.getOne(domesticStandardQueryWrapper);
|
|
||||||
if (lawsDomesticStandard != null) {
|
|
||||||
log.error("第" + row + "列输入的" + tag.getDbFieldTxt() + "已存在 ");
|
|
||||||
errMsg.append("第").append(row).append("列输入的").append(tag.getDbFieldTxt()).append("已存在 ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (TableNameEnum.FOREIGN_REGULATIONS.getValue().equals(tag.getIsModel())) {
|
|
||||||
QueryWrapper<LawsOverseasStandard> foreignStandardQueryWrapper = new QueryWrapper<>();
|
|
||||||
foreignStandardQueryWrapper.eq(FieldCommon.STANDARD_NUMBER, cellValue);
|
|
||||||
LawsOverseasStandard lawsOverseasStandard = overseasStandardService.getOne(foreignStandardQueryWrapper);
|
|
||||||
if (lawsOverseasStandard != null) {
|
|
||||||
log.error("第" + row + "列输入的" + tag.getDbFieldTxt() + "已存在 ");
|
|
||||||
errMsg.append("第").append(row).append("列输入的").append(tag.getDbFieldTxt()).append("已存在 ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 字段长度校验
|
// 字段长度校验
|
||||||
if (FieldShowTypeEnum.TEXT_BOX.getValue().equals(tag.getFieldShowType())) {
|
if (FieldShowTypeEnum.TEXT_BOX.getValue().equals(tag.getFieldShowType())) {
|
||||||
@@ -304,7 +379,7 @@ public class ImportUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (errMsg.toString().contains("列")) {
|
if (errMsg.toString().contains("列") || errMsg.toString().contains("重复") || errMsg.toString().contains("已存在")) {
|
||||||
errMsgList.add(errMsg.toString());
|
errMsgList.add(errMsg.toString());
|
||||||
} else {
|
} else {
|
||||||
insertDataList.add(parameterMap);
|
insertDataList.add(parameterMap);
|
||||||
|
|||||||
Reference in New Issue
Block a user