perf: 调整excel导入Sensor结构

iec104
huangfeng 1 year ago
parent 22b6bd6874
commit 92814031ec

@ -49,7 +49,4 @@ public class N103Point {
@Column(name = "part_name")
private String partName;
@Transient
NPoint nPoint;
}

@ -35,24 +35,4 @@ public class N103Sensor {
@Column(name = "grp_no")
private Integer grpNo;
@Transient
NSensor nSensor;
@Transient
private List<N103Point> points;
public String addPoint(N103Point point) {
if (points == null) {
points = new ArrayList<>();
}
for (N103Point item : points) {
if (item.getNPoint().getField().equalsIgnoreCase(point.getNPoint().getField())) {
return "第" + point.getNPoint().getRow() + "行和第" + item.getNPoint().getRow() +
"行存在同一标识(" + nSensor.getSensorCode() + ")的相同字段(" + point.getNPoint().getField() + ")";
}
}
points.add(point);
return null;
}
}

@ -54,4 +54,7 @@ public class NPoint {
@Transient
private List<Object> data;
@Transient
N103Point n103Point;
}

@ -82,6 +82,9 @@ public class NSensor {
@Transient
private List<NPoint> points;
@Transient
N103Sensor n103Sensor;
public String addPoint(NPoint point) {
if (points == null) {
points = new ArrayList<>();

@ -4,9 +4,8 @@ import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.xydl.cac.entity.*;
import com.xydl.cac.entity.constants.Constants;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.repository.ModevTypePointRepository;
import com.xydl.cac.service.N103SensorService;
import com.xydl.cac.service.NSensorService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
@ -21,18 +20,18 @@ import static com.xydl.cac.entity.constants.Constants.YaoXin;
public class CacExcelListener extends AnalysisEventListener<CacLine> {
N103SensorService n103SensorService;
NSensorService sensorService;
ModevTypePointRepository typePointRepository;
HashMap<String, ModevType> typeMap = new HashMap<>();
int base = 16385;
int type;
LinkedHashMap<String, N103Sensor> sensorList = new LinkedHashMap<>();
LinkedHashMap<String, NSensor> sensorList = new LinkedHashMap<>();
List<String> errorList = new ArrayList<>();
HashMap<String, String> doneMap = new HashMap<>();
public CacExcelListener(N103SensorService service, ModevTypePointRepository pointRepository,
public CacExcelListener(NSensorService service, ModevTypePointRepository pointRepository,
List<ModevType> modevTypeList) {
n103SensorService = service;
sensorService = service;
typePointRepository = pointRepository;
for (ModevType type : modevTypeList) {
typeMap.put(type.getTablename(), type);
@ -56,9 +55,9 @@ public class CacExcelListener extends AnalysisEventListener<CacLine> {
private void processLine(CacLine line, int row) {
if (StringUtils.isNotBlank(line.getSensorCode()) && StringUtils.isNotBlank(line.getField())) {
N103Sensor sensor103 = sensorList.get(line.getSensorCode());
if (sensor103 == null) {
NSensor sensor = new NSensor();
NSensor sensor = sensorList.get(line.getSensorCode());
if (sensor == null) {
sensor = new NSensor();
sensor.setSensorCode(line.getSensorCode());
if (StringUtils.isBlank(line.getEquipmentCode())) {
@ -98,16 +97,16 @@ public class CacExcelListener extends AnalysisEventListener<CacLine> {
sensor.setPhase(line.getPhase());
sensor.setStatus(Constants.NORMAL);
sensor103 = new N103Sensor();
sensor103.setNSensor(sensor);
N103Sensor n103Sensor = new N103Sensor();
sensor.setN103Sensor(n103Sensor);
if (StringUtils.isNotBlank(line.getGrpNo())) {
try {
sensor103.setGrpNo(Integer.parseInt(line.getGrpNo()));
n103Sensor.setGrpNo(Integer.parseInt(line.getGrpNo()));
} catch (Exception ignore) {
errorList.add("第" + row + "行的组号不是正确的数字类型");
}
}
sensorList.put(line.getSensorCode(), sensor103);
sensorList.put(line.getSensorCode(), sensor);
}
@ -123,13 +122,13 @@ public class CacExcelListener extends AnalysisEventListener<CacLine> {
.row(row)
.build();
N103Point n103Point = N103Point.builder()
.nPoint(point)
.sadr(line.getPointId())
.itemNo(line.getItemNo())
.paramindex(line.getParamindex())
.partName(line.getShortName())
.build();
String err = sensor103.addPoint(n103Point);
point.setN103Point(n103Point);
String err = sensor.addPoint(point);
if (StringUtils.isNotBlank(err)) {
errorList.add(err);
}
@ -155,7 +154,7 @@ public class CacExcelListener extends AnalysisEventListener<CacLine> {
String msg = errorList.stream().collect(Collectors.joining(","));
throw new RuntimeException(msg);
} else {
n103SensorService.importFrom(sensorList.values());
sensorService.importFrom(sensorList.values());
}
}
}

@ -6,5 +6,4 @@ public interface N103PointService {
void importOne(N103Point item);
void clearAll(Integer sensor103Id, Integer sensorId);
}

@ -2,11 +2,8 @@ package com.xydl.cac.service;
import com.xydl.cac.entity.N103Sensor;
import java.util.Collection;
public interface N103SensorService {
void importFrom(Collection<N103Sensor> collection);
void importOne(N103Sensor item);
}

@ -19,4 +19,8 @@ public interface NPointService {
NPoint detail(Integer id) throws Exception;
void importOne(NPoint item);
void clearAll(Integer sensorId, Integer sensor103Id);
}

@ -6,6 +6,7 @@ import com.xydl.cac.model.SensorDetail;
import com.xydl.cac.model.SensorUpdateModel;
import org.springframework.data.domain.Page;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@ -26,6 +27,8 @@ public interface NSensorService {
void bindicd(Integer id, Integer icdid) throws Exception;
void importFrom(Collection<NSensor> collection);
void importOne(NSensor sensor);
String importFromModev() throws Exception;

@ -1,9 +1,7 @@
package com.xydl.cac.service.impl;
import com.xydl.cac.entity.N103Point;
import com.xydl.cac.entity.NPoint;
import com.xydl.cac.repository.N103PointRepository;
import com.xydl.cac.repository.NPointRepository;
import com.xydl.cac.service.N103PointService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -18,20 +16,9 @@ public class N103PointServiceImpl implements N103PointService {
@Resource
N103PointRepository repository;
@Resource
NPointRepository nPointRepository;
@Override
public void importOne(N103Point item) {
NPoint nPoint = item.getNPoint();
nPointRepository.save(nPoint);
item.setNpointId(nPoint.getId());
repository.save(item);
}
@Override
public void clearAll(Integer sensor103Id, Integer sensorId) {
repository.deleteBySensor103Id(sensor103Id);
nPointRepository.deleteBySensorId(sensorId);
}
}

@ -1,15 +1,9 @@
package com.xydl.cac.service.impl;
import com.xydl.cac.entity.N103Point;
import com.xydl.cac.entity.N103Sensor;
import com.xydl.cac.entity.NPoint;
import com.xydl.cac.entity.NSensor;
import com.xydl.cac.repository.N103SensorRepository;
import com.xydl.cac.service.N103PointService;
import com.xydl.cac.service.N103SensorService;
import com.xydl.cac.service.NSensorService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@ -23,44 +17,13 @@ import java.util.*;
public class N103SensorServiceImpl implements N103SensorService {
@Resource
N103SensorRepository repository;
@Resource
NSensorService nSensorService;
@Resource
N103PointService n103PointService;
@Async
@Override
public void importFrom(Collection<N103Sensor> collection) {
for (N103Sensor item : collection) {
this.importOne(item);
}
}
@Override
public void importOne(N103Sensor item) {
NSensor nSensor = item.getNSensor();
nSensorService.importOne(nSensor);
item.setNsensorId(nSensor.getId());
List<N103Sensor> list = repository.findByNsensorId(nSensor.getId());
List<N103Sensor> list = repository.findByNsensorId(item.getNsensorId());
if (!CollectionUtils.isEmpty(list)) {
item.setId(list.get(0).getId());
}
repository.save(item);
// 清空旧的全部属性
n103PointService.clearAll(item.getId(), nSensor.getId());
List<N103Point> points = item.getPoints();
if (points != null) {
for (N103Point point : points) {
point.setSensor103Id(item.getId());
NPoint nPoint = point.getNPoint();
nPoint.setSensorId(nSensor.getId());
n103PointService.importOne(point);
}
}
}
}

@ -1,12 +1,11 @@
package com.xydl.cac.service.impl;
import com.xydl.cac.entity.N103Point;
import com.xydl.cac.entity.NPoint;
import com.xydl.cac.entity.NSensor;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.repository.N103PointRepository;
import com.xydl.cac.repository.NPointRepository;
import com.xydl.cac.repository.NSensorRepository;
import com.xydl.cac.service.NPointService;
import com.xydl.cac.service.NSensorService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
@ -25,6 +24,8 @@ public class NPointServiceImpl implements NPointService {
@Resource
NPointRepository repository;
@Resource
N103PointRepository n103PointRepository;
@Override
public List<NPoint> listAll(Integer sensorId) {
@ -67,4 +68,22 @@ public class NPointServiceImpl implements NPointService {
}
return optional.get();
}
@Override
public void importOne(NPoint item) {
repository.save(item);
N103Point n103Point = item.getN103Point();
if (n103Point != null) {
n103Point.setNpointId(item.getId());
n103PointRepository.save(n103Point);
}
}
@Override
public void clearAll(Integer sensorId, Integer sensor103Id) {
repository.deleteBySensorId(sensorId);
if (sensor103Id != null) {
n103PointRepository.deleteBySensor103Id(sensor103Id);
}
}
}

@ -15,6 +15,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@ -31,6 +32,10 @@ public class NSensorServiceImpl implements NSensorService {
@Resource
NSensorRepository repository;
@Resource
NPointService pointService;
@Resource
N103SensorService n103SensorService;
@Resource
DataService dataService;
@Resource
ZsbService zsbService;
@ -209,6 +214,14 @@ public class NSensorServiceImpl implements NSensorService {
}
}
@Async
@Override
public void importFrom(Collection<NSensor> collection) {
for (NSensor item : collection) {
this.importOne(item);
}
}
@Override
public void importOne(NSensor item) {
List<NSensor> list = repository.findBySensorCode(item.getSensorCode());
@ -216,6 +229,28 @@ public class NSensorServiceImpl implements NSensorService {
item.setId(list.get(0).getId());
}
repository.save(item);
Integer sensor103Id = null;
N103Sensor n103Sensor = item.getN103Sensor();
if (n103Sensor != null) {
n103Sensor.setNsensorId(item.getId());
n103SensorService.importOne(n103Sensor);
sensor103Id = n103Sensor.getId();
}
// 清空旧的全部属性
pointService.clearAll(item.getId(), sensor103Id);
List<NPoint> points = item.getPoints();
if (points != null) {
for (NPoint point : points) {
point.setSensorId(item.getId());
if (point.getN103Point() != null) {
point.getN103Point().setSensor103Id(sensor103Id);
}
pointService.importOne(point);
}
}
}
@Override

@ -11,6 +11,7 @@ import com.xydl.cac.model.SensorDetail;
import com.xydl.cac.repository.ModevTypePointRepository;
import com.xydl.cac.service.ModevTypeService;
import com.xydl.cac.service.N103SensorService;
import com.xydl.cac.service.NSensorService;
import com.xydl.cac.service.ReportService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -29,7 +30,7 @@ import java.util.Map;
public class ReportServiceImpl implements ReportService {
@Resource
N103SensorService n103SensorService;
NSensorService sensorService;
@Resource
ModevTypeService modevTypeService;
@Resource
@ -76,7 +77,7 @@ public class ReportServiceImpl implements ReportService {
@Override
public void importCac(InputStream input) throws Exception {
CacExcelListener listener = new CacExcelListener(n103SensorService, typePointRepository,
CacExcelListener listener = new CacExcelListener(sensorService, typePointRepository,
modevTypeService.listAll());
EasyExcel.read(input, CacLine.class, listener)
.sheet(0)

Loading…
Cancel
Save