diff --git a/laws-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysDictMapper.xml b/laws-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysDictMapper.xml
index 5183b785..323e3aa7 100644
--- a/laws-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysDictMapper.xml
+++ b/laws-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysDictMapper.xml
@@ -5,7 +5,7 @@
diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java
index 9f5995fd..037a15a7 100644
--- a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java
+++ b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java
@@ -1324,22 +1324,6 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
.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工作簿
Workbook workbook = this.createWorkBookWithLawsTags(fieldList);
@@ -2093,6 +2077,14 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
// 创建一个工作表
Sheet sheet = workbook.createSheet("导入模板");
+
+ // 创建数据格式
+ DataFormat fmt = workbook.createDataFormat();
+
+ // 创建一个单元格样式并设置数据格式为文本
+ CellStyle textStyle = workbook.createCellStyle();
+ textStyle.setDataFormat(fmt.getFormat("@"));
+
// 设置列宽
for (int i = 0; i < fieldList.size(); i++) {
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);
row2.setHeightInPoints(95);
diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java b/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java
index 593d9047..9fc65fbf 100644
--- a/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java
+++ b/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java
@@ -90,8 +90,12 @@ public class ImportUtil {
for (int i = 3; i < sheet.getPhysicalNumberOfRows(); i++) {
Map keyMap = new HashMap<>();
int line = i + 1;
+ String standardNumber = "";
+ String standardClass = "";
+ String yearNumber = "";
StringBuilder errMsg = new StringBuilder("第" + line + "行");
Map parameterMap = new HashMap<>();
+ boolean standardValidFlag = false;
for (int j = 0; j < headerList.size(); j++) {
String row = CellReference.convertNumToColString(j);
// 获取当前单元格
@@ -99,6 +103,93 @@ public class ImportUtil {
// 获取当前单元格内容对应的字段
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 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 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 (!this.mustInputValid(cell)) {
@@ -112,6 +203,9 @@ public class ImportUtil {
continue;
}
String cellValue = cell.toString().trim();
+ if (StrUtil.isBlank(cellValue)) {
+ continue;
+ }
// 企标编号校验
if (FieldCommon.STANDARD_NUMBER.equals(tag.getDbFieldName())) {
@@ -154,9 +248,8 @@ public class ImportUtil {
}
}
}
- // TODO 国标编号校验
- // TODO 外标编号校验
- // 校验编号唯一性
+
+ // 企标编号校验
if (TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(tag.getIsModel())) {
LawsEnterpriseStandard lawsEnterpriseStandard = lawsEnterpriseStandardService.queryByStandardNumber(cellValue);
if (lawsEnterpriseStandard != null) {
@@ -164,24 +257,6 @@ public class ImportUtil {
errMsg.append("第").append(row).append("列输入的").append(tag.getDbFieldTxt()).append("已存在 ");
}
}
- if (TableNameEnum.DOMESTIC_REGULATIONS.getValue().equals(tag.getIsModel())) {
- QueryWrapper 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 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())) {
@@ -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());
} else {
insertDataList.add(parameterMap);