From af4368c6b1936e2ddcaa8440cf8dc096f4f6fe37 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Mon, 6 Nov 2023 11:58:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9B=BD=E6=A0=87=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/mapper/xml/SysDictMapper.xml | 2 +- .../service/impl/LawsCommonServiceImpl.java | 30 +++-- .../modules/laws/common/util/ImportUtil.java | 119 ++++++++++++++---- 3 files changed, 112 insertions(+), 39 deletions(-) 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);