From 92814031ec099e11721bbfa024faaff4b0cd4cfc Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 15 Apr 2024 11:48:42 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E8=B0=83=E6=95=B4excel=E5=AF=BC?= =?UTF-8?q?=E5=85=A5Sensor=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/entity/N103Point.java | 3 -- .../java/com/xydl/cac/entity/N103Sensor.java | 20 ---------- src/main/java/com/xydl/cac/entity/NPoint.java | 3 ++ .../java/com/xydl/cac/entity/NSensor.java | 3 ++ .../com/xydl/cac/excel/CacExcelListener.java | 31 +++++++-------- .../xydl/cac/service/N103PointService.java | 1 - .../xydl/cac/service/N103SensorService.java | 3 -- .../com/xydl/cac/service/NPointService.java | 4 ++ .../com/xydl/cac/service/NSensorService.java | 3 ++ .../service/impl/N103PointServiceImpl.java | 13 ------- .../service/impl/N103SensorServiceImpl.java | 39 +------------------ .../cac/service/impl/NPointServiceImpl.java | 25 ++++++++++-- .../cac/service/impl/NSensorServiceImpl.java | 35 +++++++++++++++++ .../cac/service/impl/ReportServiceImpl.java | 5 ++- 14 files changed, 89 insertions(+), 99 deletions(-) diff --git a/src/main/java/com/xydl/cac/entity/N103Point.java b/src/main/java/com/xydl/cac/entity/N103Point.java index dbb8672..dc9ef34 100644 --- a/src/main/java/com/xydl/cac/entity/N103Point.java +++ b/src/main/java/com/xydl/cac/entity/N103Point.java @@ -49,7 +49,4 @@ public class N103Point { @Column(name = "part_name") private String partName; - @Transient - NPoint nPoint; - } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/N103Sensor.java b/src/main/java/com/xydl/cac/entity/N103Sensor.java index 7f29c58..8782a88 100644 --- a/src/main/java/com/xydl/cac/entity/N103Sensor.java +++ b/src/main/java/com/xydl/cac/entity/N103Sensor.java @@ -35,24 +35,4 @@ public class N103Sensor { @Column(name = "grp_no") private Integer grpNo; - @Transient - NSensor nSensor; - - @Transient - private List 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; - } - } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/NPoint.java b/src/main/java/com/xydl/cac/entity/NPoint.java index dffe1bc..4654f1d 100644 --- a/src/main/java/com/xydl/cac/entity/NPoint.java +++ b/src/main/java/com/xydl/cac/entity/NPoint.java @@ -54,4 +54,7 @@ public class NPoint { @Transient private List data; + @Transient + N103Point n103Point; + } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/NSensor.java b/src/main/java/com/xydl/cac/entity/NSensor.java index 5710cbd..cf27262 100644 --- a/src/main/java/com/xydl/cac/entity/NSensor.java +++ b/src/main/java/com/xydl/cac/entity/NSensor.java @@ -82,6 +82,9 @@ public class NSensor { @Transient private List points; + @Transient + N103Sensor n103Sensor; + public String addPoint(NPoint point) { if (points == null) { points = new ArrayList<>(); diff --git a/src/main/java/com/xydl/cac/excel/CacExcelListener.java b/src/main/java/com/xydl/cac/excel/CacExcelListener.java index f202ae6..800efa1 100644 --- a/src/main/java/com/xydl/cac/excel/CacExcelListener.java +++ b/src/main/java/com/xydl/cac/excel/CacExcelListener.java @@ -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 { - N103SensorService n103SensorService; + NSensorService sensorService; ModevTypePointRepository typePointRepository; HashMap typeMap = new HashMap<>(); int base = 16385; int type; - LinkedHashMap sensorList = new LinkedHashMap<>(); + LinkedHashMap sensorList = new LinkedHashMap<>(); List errorList = new ArrayList<>(); HashMap doneMap = new HashMap<>(); - public CacExcelListener(N103SensorService service, ModevTypePointRepository pointRepository, + public CacExcelListener(NSensorService service, ModevTypePointRepository pointRepository, List 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 { 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 { 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 { .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 { String msg = errorList.stream().collect(Collectors.joining(",")); throw new RuntimeException(msg); } else { - n103SensorService.importFrom(sensorList.values()); + sensorService.importFrom(sensorList.values()); } } } diff --git a/src/main/java/com/xydl/cac/service/N103PointService.java b/src/main/java/com/xydl/cac/service/N103PointService.java index e0482fd..98f0768 100644 --- a/src/main/java/com/xydl/cac/service/N103PointService.java +++ b/src/main/java/com/xydl/cac/service/N103PointService.java @@ -6,5 +6,4 @@ public interface N103PointService { void importOne(N103Point item); - void clearAll(Integer sensor103Id, Integer sensorId); } diff --git a/src/main/java/com/xydl/cac/service/N103SensorService.java b/src/main/java/com/xydl/cac/service/N103SensorService.java index 2b133ec..adc4252 100644 --- a/src/main/java/com/xydl/cac/service/N103SensorService.java +++ b/src/main/java/com/xydl/cac/service/N103SensorService.java @@ -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 collection); - void importOne(N103Sensor item); } diff --git a/src/main/java/com/xydl/cac/service/NPointService.java b/src/main/java/com/xydl/cac/service/NPointService.java index bf06231..ea0fffd 100644 --- a/src/main/java/com/xydl/cac/service/NPointService.java +++ b/src/main/java/com/xydl/cac/service/NPointService.java @@ -19,4 +19,8 @@ public interface NPointService { NPoint detail(Integer id) throws Exception; + void importOne(NPoint item); + + void clearAll(Integer sensorId, Integer sensor103Id); + } diff --git a/src/main/java/com/xydl/cac/service/NSensorService.java b/src/main/java/com/xydl/cac/service/NSensorService.java index b9e0b72..5d05398 100644 --- a/src/main/java/com/xydl/cac/service/NSensorService.java +++ b/src/main/java/com/xydl/cac/service/NSensorService.java @@ -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 collection); + void importOne(NSensor sensor); String importFromModev() throws Exception; diff --git a/src/main/java/com/xydl/cac/service/impl/N103PointServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/N103PointServiceImpl.java index 6858773..1da25bb 100644 --- a/src/main/java/com/xydl/cac/service/impl/N103PointServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/N103PointServiceImpl.java @@ -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); - } } diff --git a/src/main/java/com/xydl/cac/service/impl/N103SensorServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/N103SensorServiceImpl.java index ddeebff..9034004 100644 --- a/src/main/java/com/xydl/cac/service/impl/N103SensorServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/N103SensorServiceImpl.java @@ -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 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 list = repository.findByNsensorId(nSensor.getId()); + List 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 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); - } - } } } diff --git a/src/main/java/com/xydl/cac/service/impl/NPointServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/NPointServiceImpl.java index 7164d1e..579f397 100644 --- a/src/main/java/com/xydl/cac/service/impl/NPointServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/NPointServiceImpl.java @@ -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 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); + } + } } diff --git a/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java index 833c271..9fdd1e1 100644 --- a/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java @@ -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 collection) { + for (NSensor item : collection) { + this.importOne(item); + } + } + @Override public void importOne(NSensor item) { List 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 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 diff --git a/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java index f798f4c..765f6c4 100644 --- a/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java @@ -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)