fix: 国标导入报错
This commit is contained in:
+1
-1
@@ -5,7 +5,7 @@
|
||||
<!-- 通过字典code获取字典数据 -->
|
||||
<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
|
||||
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
|
||||
</select>
|
||||
|
||||
|
||||
+14
-16
@@ -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);
|
||||
|
||||
@@ -90,8 +90,12 @@ public class ImportUtil {
|
||||
for (int i = 3; i < sheet.getPhysicalNumberOfRows(); i++) {
|
||||
Map<String, Integer> keyMap = new HashMap<>();
|
||||
int line = i + 1;
|
||||
String standardNumber = "";
|
||||
String standardClass = "";
|
||||
String yearNumber = "";
|
||||
StringBuilder errMsg = new StringBuilder("第" + line + "行");
|
||||
Map<String, Object> 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<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 (!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<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())) {
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user