perf: 调整excel导入Sensor结构

dev
huangfeng 1 year ago
parent 22b6bd6874
commit 92814031ec

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

@ -35,24 +35,4 @@ public class N103Sensor {
@Column(name = "grp_no") @Column(name = "grp_no")
private Integer grpNo; 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 @Transient
private List<Object> data; private List<Object> data;
@Transient
N103Point n103Point;
} }

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

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

@ -6,5 +6,4 @@ public interface N103PointService {
void importOne(N103Point item); 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 com.xydl.cac.entity.N103Sensor;
import java.util.Collection;
public interface N103SensorService { public interface N103SensorService {
void importFrom(Collection<N103Sensor> collection);
void importOne(N103Sensor item); void importOne(N103Sensor item);
} }

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

@ -1,9 +1,7 @@
package com.xydl.cac.service.impl; package com.xydl.cac.service.impl;
import com.xydl.cac.entity.N103Point; import com.xydl.cac.entity.N103Point;
import com.xydl.cac.entity.NPoint;
import com.xydl.cac.repository.N103PointRepository; import com.xydl.cac.repository.N103PointRepository;
import com.xydl.cac.repository.NPointRepository;
import com.xydl.cac.service.N103PointService; import com.xydl.cac.service.N103PointService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -18,20 +16,9 @@ public class N103PointServiceImpl implements N103PointService {
@Resource @Resource
N103PointRepository repository; N103PointRepository repository;
@Resource
NPointRepository nPointRepository;
@Override @Override
public void importOne(N103Point item) { public void importOne(N103Point item) {
NPoint nPoint = item.getNPoint();
nPointRepository.save(nPoint);
item.setNpointId(nPoint.getId());
repository.save(item); 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; package com.xydl.cac.service.impl;
import com.xydl.cac.entity.N103Point;
import com.xydl.cac.entity.N103Sensor; 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.repository.N103SensorRepository;
import com.xydl.cac.service.N103PointService;
import com.xydl.cac.service.N103SensorService; import com.xydl.cac.service.N103SensorService;
import com.xydl.cac.service.NSensorService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -23,44 +17,13 @@ import java.util.*;
public class N103SensorServiceImpl implements N103SensorService { public class N103SensorServiceImpl implements N103SensorService {
@Resource @Resource
N103SensorRepository repository; N103SensorRepository repository;
@Resource
NSensorService nSensorService;
@Resource
N103PointService n103PointService;
@Async
@Override
public void importFrom(Collection<N103Sensor> collection) {
for (N103Sensor item : collection) {
this.importOne(item);
}
}
@Override @Override
public void importOne(N103Sensor item) { public void importOne(N103Sensor item) {
NSensor nSensor = item.getNSensor(); List<N103Sensor> list = repository.findByNsensorId(item.getNsensorId());
nSensorService.importOne(nSensor);
item.setNsensorId(nSensor.getId());
List<N103Sensor> list = repository.findByNsensorId(nSensor.getId());
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
item.setId(list.get(0).getId()); item.setId(list.get(0).getId());
} }
repository.save(item); 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; package com.xydl.cac.service.impl;
import com.xydl.cac.entity.N103Point;
import com.xydl.cac.entity.NPoint; import com.xydl.cac.entity.NPoint;
import com.xydl.cac.entity.NSensor;
import com.xydl.cac.exception.BusinessException; import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.repository.N103PointRepository;
import com.xydl.cac.repository.NPointRepository; import com.xydl.cac.repository.NPointRepository;
import com.xydl.cac.repository.NSensorRepository;
import com.xydl.cac.service.NPointService; import com.xydl.cac.service.NPointService;
import com.xydl.cac.service.NSensorService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
@ -25,6 +24,8 @@ public class NPointServiceImpl implements NPointService {
@Resource @Resource
NPointRepository repository; NPointRepository repository;
@Resource
N103PointRepository n103PointRepository;
@Override @Override
public List<NPoint> listAll(Integer sensorId) { public List<NPoint> listAll(Integer sensorId) {
@ -67,4 +68,22 @@ public class NPointServiceImpl implements NPointService {
} }
return optional.get(); 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.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -31,6 +32,10 @@ public class NSensorServiceImpl implements NSensorService {
@Resource @Resource
NSensorRepository repository; NSensorRepository repository;
@Resource @Resource
NPointService pointService;
@Resource
N103SensorService n103SensorService;
@Resource
DataService dataService; DataService dataService;
@Resource @Resource
ZsbService zsbService; 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 @Override
public void importOne(NSensor item) { public void importOne(NSensor item) {
List<NSensor> list = repository.findBySensorCode(item.getSensorCode()); List<NSensor> list = repository.findBySensorCode(item.getSensorCode());
@ -216,6 +229,28 @@ public class NSensorServiceImpl implements NSensorService {
item.setId(list.get(0).getId()); item.setId(list.get(0).getId());
} }
repository.save(item); 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 @Override

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

Loading…
Cancel
Save