From ef84fb72975cd3384a27e62fc9347c8cbdf0bdf8 Mon Sep 17 00:00:00 2001 From: jueyue Date: Fri, 10 Aug 2018 10:25:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AA=E8=8E=B7=E5=8F=96=E5=A4=B1=E8=B4=A5,?= =?UTF-8?q?=E7=AE=97=E5=88=B0=E6=A0=A1=E9=AA=8C=E5=A4=B1=E8=B4=A5=E4=B8=AD?= =?UTF-8?q?=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/params/ExcelExportEntity.java | 63 ++++++++++--------- .../excel/imports/ExcelImportService.java | 39 +++++++++--- 2 files changed, 64 insertions(+), 38 deletions(-) diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/params/ExcelExportEntity.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/params/ExcelExportEntity.java index ad198e0..0819ff3 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/params/ExcelExportEntity.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/params/ExcelExportEntity.java @@ -25,6 +25,26 @@ import java.util.List; */ public class ExcelExportEntity extends ExcelBaseEntity implements Comparable { + + public ExcelExportEntity() { + + } + + public ExcelExportEntity(String name) { + super.name = name; + } + + public ExcelExportEntity(String name, Object key) { + super.name = name; + this.key = key; + } + + public ExcelExportEntity(String name, Object key, int width) { + super.name = name; + this.width = width; + this.key = key; + } + /** * 如果是MAP导出,这个是map的key */ @@ -68,47 +88,20 @@ public class ExcelExportEntity extends ExcelBaseEntity implements Comparable list; - public ExcelExportEntity() { - - } - - public ExcelExportEntity(String name) { - super.name = name; - } - - public ExcelExportEntity(String name, Object key) { - super.name = name; - this.key = key; - } - - public ExcelExportEntity(String name, Object key, int width) { - super.name = name; - this.width = width; - this.key = key; - } - public int getExportImageType() { return exportImageType; } @@ -221,6 +214,14 @@ public class ExcelExportEntity extends ExcelBaseEntity implements Comparable titlemap, String targetId, Map pictures, - ImportParams params) throws Exception { + ImportParams params, StringBuilder errorMsg) throws Exception { Collection collection = (Collection) PoiReflectorUtil.fromCache(object.getClass()) .getValue(object, param.getName()); Object entity = PoiPublicUtil.createObject(param.getType(), targetId); @@ -121,7 +121,14 @@ public class ExcelImportService extends ImportBaseService { picId = row.getRowNum() + "_" + i; saveImage(object, picId, param.getExcelParams(), titleString, pictures, params); } else { - saveFieldValue(params, entity, cell, param.getExcelParams(), titleString, row); + try { + saveFieldValue(params, entity, cell, param.getExcelParams(), titleString, row); + } catch (ExcelImportException e) { + // 如果需要去校验就忽略,这个错误,继续执行 + if(params.isNeedVerfiy() && ExcelImportEnum.GET_VALUE_ERROR.equals(e.getType())){ + errorMsg.append(" ").append(titleString).append(ExcelImportEnum.GET_VALUE_ERROR.getMsg()); + } + } } isUsed = true; } @@ -192,6 +199,7 @@ public class ExcelImportService extends ImportBaseService { if (excelCollection.size() > 0 && params.getKeyIndex() == null) { params.setKeyIndex(0); } + StringBuilder errorMsg; while (rows.hasNext() && (row == null || sheet.getLastRowNum() - row.getRowNum() > params.getLastOfInvalidRow())) { @@ -203,6 +211,7 @@ public class ExcelImportService extends ImportBaseService { if (sheet.getLastRowNum() - row.getRowNum() < params.getLastOfInvalidRow()) { break; } + errorMsg = new StringBuilder(); // 判断是集合元素还是不是集合元素,如果是就继续加入这个集合,不是就创建新的对象 // keyIndex 如果为空就不处理,仍然处理这一行 if (params.getKeyIndex() != null @@ -210,7 +219,7 @@ public class ExcelImportService extends ImportBaseService { || StringUtils.isEmpty(getKeyValue(row.getCell(params.getKeyIndex())))) && object != null) { for (ExcelCollectionParams param : excelCollection) { - addListContinue(object, param, row, titlemap, targetId, pictures, params); + addListContinue(object, param, row, titlemap, targetId, pictures, params, errorMsg); } } else { object = PoiPublicUtil.createObject(pojoClass, targetId); @@ -226,7 +235,14 @@ public class ExcelImportService extends ImportBaseService { saveImage(object, picId, excelParams, titleString, pictures, params); } else { - saveFieldValue(params, object, cell, excelParams, titleString, row); + try { + saveFieldValue(params, object, cell, excelParams, titleString, row); + } catch (ExcelImportException e) { + // 如果需要去校验就忽略,这个错误,继续执行 + if(params.isNeedVerfiy() && ExcelImportEnum.GET_VALUE_ERROR.equals(e.getType())){ + errorMsg.append(" ").append(titleString).append(ExcelImportEnum.GET_VALUE_ERROR.getMsg()); + } + } } } } @@ -237,9 +253,9 @@ public class ExcelImportService extends ImportBaseService { ((IExcelDataModel) object).setRowNum(row.getRowNum()); } for (ExcelCollectionParams param : excelCollection) { - addListContinue(object, param, row, titlemap, targetId, pictures, params); + addListContinue(object, param, row, titlemap, targetId, pictures, params, errorMsg); } - if (verifyingDataValidity(object, row, params, pojoClass)) { + if (verifyingDataValidity(object, row, params, pojoClass, errorMsg)) { collection.add(object); } else { failCollection.add(object); @@ -263,7 +279,7 @@ public class ExcelImportService extends ImportBaseService { * 校验数据合法性 */ private boolean verifyingDataValidity(Object object, Row row, ImportParams params, - Class pojoClass) { + Class pojoClass, StringBuilder fieldErrorMsg) { boolean isAdd = true; Cell cell = null; if (params.isNeedVerfiy()) { @@ -296,6 +312,15 @@ public class ExcelImportService extends ImportBaseService { verfiyFail = true; } } + if((params.isNeedVerfiy() || params.getVerifyHandler() != null) && fieldErrorMsg.length() > 0){ + if (object instanceof IExcelModel) { + IExcelModel model = (IExcelModel) object; + model.setErrorMsg((StringUtils.isNoneBlank(model.getErrorMsg()) + ? model.getErrorMsg() + "," : "") + fieldErrorMsg.toString()); + } + isAdd = false; + verfiyFail = true; + } if (cell != null) { cell.setCellStyle(errorCellStyle); failRow.add(row);