perf: 优化校验excel报错合并输出

haikang
huangfeng 1 year ago
parent 5bc33e8ca0
commit 928228bd22

@ -56,15 +56,16 @@ public class NSensor {
@Transient
private List<NPoint> 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;
}
}

@ -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<CacLine> {
@ -16,6 +19,7 @@ public class CacExcelListener extends AnalysisEventListener<CacLine> {
int base = 16385;
int type;
LinkedHashMap<String, NSensor> sensorList = new LinkedHashMap<>();
List<String> errorList = new ArrayList<>();
public CacExcelListener(NSensorService service) {
nSensorService = service;
@ -44,11 +48,11 @@ public class CacExcelListener extends AnalysisEventListener<CacLine> {
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<CacLine> {
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<CacLine> {
.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());
}
}
}

Loading…
Cancel
Save