diff --git a/src/main/java/com/xydl/cac/entity/NSensor.java b/src/main/java/com/xydl/cac/entity/NSensor.java index bd6c0b6..671976f 100644 --- a/src/main/java/com/xydl/cac/entity/NSensor.java +++ b/src/main/java/com/xydl/cac/entity/NSensor.java @@ -56,15 +56,16 @@ public class NSensor { @Transient private List points; - public void addPoint(NPoint point) { + public String addPoint(NPoint point) { if (points == null) { points = new ArrayList<>(); } for (NPoint item : points) { if (item.getField().equalsIgnoreCase(point.getField())) { - throw new RuntimeException("第" + point.getRow() + "行和第" + item.getRow() + "行存在重复字段"); + return "第" + point.getRow() + "行和第" + item.getRow() + "行存在同一标识的相同字段"; } } points.add(point); + return null; } } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/excel/CacExcelListener.java b/src/main/java/com/xydl/cac/excel/CacExcelListener.java index 2bbc92a..ce51b85 100644 --- a/src/main/java/com/xydl/cac/excel/CacExcelListener.java +++ b/src/main/java/com/xydl/cac/excel/CacExcelListener.java @@ -8,7 +8,10 @@ import com.xydl.cac.entity.constants.Constants; import com.xydl.cac.service.NSensorService; import org.apache.commons.lang3.StringUtils; +import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.List; +import java.util.stream.Collectors; public class CacExcelListener extends AnalysisEventListener { @@ -16,6 +19,7 @@ public class CacExcelListener extends AnalysisEventListener { int base = 16385; int type; LinkedHashMap sensorList = new LinkedHashMap<>(); + List errorList = new ArrayList<>(); public CacExcelListener(NSensorService service) { nSensorService = service; @@ -44,11 +48,11 @@ public class CacExcelListener extends AnalysisEventListener { sensor.setSensorCode(line.getSensorCode()); if (StringUtils.isBlank(line.getEquipmentCode())) { - throw new RuntimeException("第" + row + "行的被监测设备的唯一标识不能为空"); + errorList.add("第" + row + "行的被监测设备的唯一标识不能为空"); } sensor.setEquipmentId(line.getEquipmentCode()); if (StringUtils.isBlank(line.getTableName())) { - throw new RuntimeException("第" + row + "行的表名不能为空"); + errorList.add("第" + row + "行的表名不能为空"); } sensor.setTableName(line.getTableName()); if (StringUtils.isNotBlank(line.getParentName()) && StringUtils.isNotBlank(line.getShortName())) { @@ -64,7 +68,7 @@ public class CacExcelListener extends AnalysisEventListener { Integer pointId = Integer.parseInt(line.getPointId()) + base; if (StringUtils.isBlank(line.getField())) { - throw new RuntimeException("第" + row + "行的字段名不能为空"); + errorList.add("第" + row + "行的字段名不能为空"); } NPoint point = NPoint.builder() .pointId(pointId) @@ -73,12 +77,20 @@ public class CacExcelListener extends AnalysisEventListener { .type(type) .row(row) .build(); - sensor.addPoint(point); + String err = sensor.addPoint(point); + if (StringUtils.isNotBlank(err)) { + errorList.add(err); + } } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { - nSensorService.importFrom(sensorList.values()); + if (errorList.size() > 0) { + String msg = errorList.stream().collect(Collectors.joining(",")); + throw new RuntimeException(msg); + } else { + nSensorService.importFrom(sensorList.values()); + } } }