From 4e457a2d750fcb251b08017b5a83c57a381476ec Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 5 Mar 2024 10:41:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=94=B9=E7=94=A8ModevTypePoint?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2NPoint=EF=BC=8C=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xydl/cac/entity/ModevTypePoint.java | 4 ++ .../com/xydl/cac/excel/CacExcelListener.java | 28 +++++++++++++- .../java/com/xydl/cac/model/SensorDetail.java | 4 +- .../com/xydl/cac/service/DataService.java | 2 +- .../com/xydl/cac/service/NSensorService.java | 3 -- .../cac/service/impl/DataServiceImpl.java | 4 +- .../cac/service/impl/NSensorServiceImpl.java | 37 ++++--------------- .../cac/service/impl/ReportServiceImpl.java | 12 ++++-- 8 files changed, 51 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/xydl/cac/entity/ModevTypePoint.java b/src/main/java/com/xydl/cac/entity/ModevTypePoint.java index da0f26f..f3ce217 100644 --- a/src/main/java/com/xydl/cac/entity/ModevTypePoint.java +++ b/src/main/java/com/xydl/cac/entity/ModevTypePoint.java @@ -8,6 +8,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.util.List; @@ -25,10 +27,12 @@ public class ModevTypePoint { @Column(name = "id") private Integer id; + @NotNull(message = "监测设备类型表id不能为空") @ApiModelProperty("监测设备类型表id") @Column(name = "modevtype_id") private Integer modevtypeId; + @NotBlank(message = "字段名不能为空") @ApiModelProperty("对应tablename表的字段名") @Column(name = "field") private String field; diff --git a/src/main/java/com/xydl/cac/excel/CacExcelListener.java b/src/main/java/com/xydl/cac/excel/CacExcelListener.java index f462ac7..a6cb158 100644 --- a/src/main/java/com/xydl/cac/excel/CacExcelListener.java +++ b/src/main/java/com/xydl/cac/excel/CacExcelListener.java @@ -4,8 +4,11 @@ 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 org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.HashMap; @@ -19,14 +22,18 @@ import static com.xydl.cac.entity.constants.Constants.YaoXin; public class CacExcelListener extends AnalysisEventListener { N103SensorService n103SensorService; + ModevTypePointRepository typePointRepository; HashMap typeMap = new HashMap<>(); int base = 16385; int type; LinkedHashMap sensorList = new LinkedHashMap<>(); List errorList = new ArrayList<>(); + HashMap doneMap = new HashMap<>(); - public CacExcelListener(N103SensorService service, List modevTypeList) { + public CacExcelListener(N103SensorService service, ModevTypePointRepository pointRepository, + List modevTypeList) { n103SensorService = service; + typePointRepository = pointRepository; for (ModevType type : modevTypeList) { typeMap.put(type.getTablename(), type); } @@ -61,9 +68,13 @@ public class CacExcelListener extends AnalysisEventListener { if (StringUtils.isBlank(line.getTableName())) { errorList.add("第" + row + "行的表名不能为空"); } else { + ModevType modevType = typeMap.get(line.getTableName()); if (modevType == null) { - errorList.add("第" + row + "行的表名" + line.getTableName() + "未找到对应的监测设备类型"); + if (!doneMap.containsKey(line.getTableName())) { + errorList.add("第" + row + "行的表名" + line.getTableName() + "未找到对应的监测设备类型"); + doneMap.put(line.getTableName(), "done"); + } } else { sensor.setTypeId(modevType.getId()); } @@ -122,6 +133,19 @@ public class CacExcelListener extends AnalysisEventListener { if (StringUtils.isNotBlank(err)) { errorList.add(err); } + if (type == YaoCe) { + ModevType modevType = typeMap.get(line.getTableName()); + if (modevType != null) { + String key = modevType.getTablename() + point.getField(); + if (!doneMap.containsKey(key)) { + List list = typePointRepository.findByModevtypeIdAndField(modevType.getId(), point.getField()); + if (CollectionUtils.isEmpty(list)) { + errorList.add("第" + row + "行的字段" + point.getField() + "需要到监测设备类型" + modevType.getMc() + "下增加相同的属性点配置"); + } + doneMap.put(key, "done"); + } + } + } } } diff --git a/src/main/java/com/xydl/cac/model/SensorDetail.java b/src/main/java/com/xydl/cac/model/SensorDetail.java index a2eeaf3..74812c7 100644 --- a/src/main/java/com/xydl/cac/model/SensorDetail.java +++ b/src/main/java/com/xydl/cac/model/SensorDetail.java @@ -1,6 +1,6 @@ package com.xydl.cac.model; -import com.xydl.cac.entity.NPoint; +import com.xydl.cac.entity.ModevTypePoint; import com.xydl.cac.entity.NSensor; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -12,7 +12,7 @@ public class SensorDetail extends OnePage { @ApiModelProperty("装置信息") private NSensor sensor; @ApiModelProperty("点表配置") - private List points; + private List points; public void initFrom(OnePage page) { this.setContent(page.getContent()); diff --git a/src/main/java/com/xydl/cac/service/DataService.java b/src/main/java/com/xydl/cac/service/DataService.java index 9ef0bff..a1d273c 100644 --- a/src/main/java/com/xydl/cac/service/DataService.java +++ b/src/main/java/com/xydl/cac/service/DataService.java @@ -13,7 +13,7 @@ public interface DataService { List getDataTableColumns(String tableName) throws Exception; - OnePage> getDate(NSensor sensor, List points, ConditionModel model); + OnePage> getDate(NSensor sensor, List points, ConditionModel model); void clearAllBind(); } diff --git a/src/main/java/com/xydl/cac/service/NSensorService.java b/src/main/java/com/xydl/cac/service/NSensorService.java index 19db812..2b427fb 100644 --- a/src/main/java/com/xydl/cac/service/NSensorService.java +++ b/src/main/java/com/xydl/cac/service/NSensorService.java @@ -6,7 +6,6 @@ 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; @@ -27,8 +26,6 @@ public interface NSensorService { void bindicd(Integer id, Integer icdid) throws Exception; - void importFrom(Collection collection); - void importOne(NSensor sensor); } diff --git a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java index 2a24173..beb634d 100644 --- a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java @@ -83,7 +83,7 @@ public class DataServiceImpl implements DataService { } @Override - public OnePage> getDate(NSensor sensor, List points, ConditionModel model) { + public OnePage> getDate(NSensor sensor, List points, ConditionModel model) { String devField = DataTable.getDevidField(sensor.getTableName()); String timeField = DataTable.getTimeField(sensor.getTableName()); OnePage result = new OnePage(); @@ -105,7 +105,7 @@ public class DataServiceImpl implements DataService { } String sqlSelect = "SELECT DATE_FORMAT(" + timeField + ", '%Y-%m-%d %H:%i:%s') as acquisitionTime"; - for (NPoint point : points) { + for (ModevTypePoint point : points) { if (StringUtils.isNotBlank(point.getField())) { sqlSelect = sqlSelect + ", " + point.getField(); } 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 23acfaf..737c86e 100644 --- a/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java @@ -6,7 +6,6 @@ import com.xydl.cac.model.ConditionModel; import com.xydl.cac.model.OnePage; import com.xydl.cac.model.SensorDetail; import com.xydl.cac.model.SensorUpdateModel; -import com.xydl.cac.repository.NPointRepository; import com.xydl.cac.repository.NSensorRepository; import com.xydl.cac.service.*; import lombok.extern.slf4j.Slf4j; @@ -20,7 +19,6 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.*; -import static com.xydl.cac.entity.constants.Constants.YaoCe; @Service @Slf4j @@ -29,8 +27,6 @@ public class NSensorServiceImpl implements NSensorService { @Resource NSensorRepository repository; @Resource - NPointRepository pointRepository; - @Resource UnitService unitService; @Resource DataService dataService; @@ -38,6 +34,8 @@ public class NSensorServiceImpl implements NSensorService { ZsbService zsbService; @Resource ModevTypeService modevTypeService; + @Resource + ModevTypePointService modevTypePointService; @Override public List listAll(Integer zsbid) throws Exception { @@ -135,18 +133,18 @@ public class NSensorServiceImpl implements NSensorService { if (StringUtils.isBlank(sensor.getTableName())) { throw new BusinessException("该装置类型" + sensor.getTypeName() + "缺少table_name信息"); } - List points = pointRepository.findBySensorIdAndType(sensor.getId(), YaoCe); + List points = modevTypePointService.listAll(sensor.getTypeId()); if (CollectionUtils.isEmpty(points)) { - throw new BusinessException("该装置缺少属性点表信息"); + throw new BusinessException("该装置类型" + sensor.getTypeName() + "未配置属性点信息"); } SensorDetail> result = this.getData(sensor, points, model); return result; } - public SensorDetail> getData(NSensor sensor, List points, ConditionModel model) { - List pointList = new ArrayList<>(); - for (NPoint point : points) { + public SensorDetail> getData(NSensor sensor, List points, ConditionModel model) { + List pointList = new ArrayList<>(); + for (ModevTypePoint point : points) { if (StringUtils.isNotBlank(point.getField())) { point.setUnit(unitService.findUnitInCache(point.getField())); pointList.add(point); @@ -158,7 +156,7 @@ public class NSensorServiceImpl implements NSensorService { OnePage> page = dataService.getDate(sensor, pointList, model); result.initFrom(page); - for (NPoint point : pointList) { + for (ModevTypePoint point : pointList) { List dataList = new ArrayList<>(); for (Map item : result.getContent()) { Object value = item.get(point.getField()); @@ -181,25 +179,6 @@ public class NSensorServiceImpl implements NSensorService { } } - @Override - public void importFrom(Collection collection) { - for (NSensor item : collection) { - this.importOne(item); - - List points = item.getPoints(); - if (points != null) { - for (NPoint point : points) { - point.setSensorId(item.getId()); - List plist = pointRepository.findBySensorIdAndField(item.getId(), point.getField()); - if (!CollectionUtils.isEmpty(plist)) { - point.setId(plist.get(0).getId()); - } - pointRepository.save(point); - } - } - } - } - @Override public void importOne(NSensor item) { List list = repository.findBySensorCode(item.getSensorCode()); 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 fea88d2..f798f4c 100644 --- a/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java @@ -4,10 +4,11 @@ import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; -import com.xydl.cac.entity.NPoint; +import com.xydl.cac.entity.ModevTypePoint; import com.xydl.cac.excel.CacExcelListener; import com.xydl.cac.excel.CacLine; 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.ReportService; @@ -31,6 +32,8 @@ public class ReportServiceImpl implements ReportService { N103SensorService n103SensorService; @Resource ModevTypeService modevTypeService; + @Resource + ModevTypePointRepository typePointRepository; @Override public void exportSensor(SensorDetail> detail, OutputStream output) throws Exception { @@ -38,7 +41,7 @@ public class ReportServiceImpl implements ReportService { List head = new ArrayList<>(); head.add("时间"); heads.add(head); - for (NPoint point : detail.getPoints()) { + for (ModevTypePoint point : detail.getPoints()) { head = new ArrayList<>(); head.add(point.getFieldDesc()); heads.add(head); @@ -49,7 +52,7 @@ public class ReportServiceImpl implements ReportService { List line = new ArrayList<>(); Object data = map.get("acquisitionTime"); line.add(String.valueOf(data)); - for (NPoint point : detail.getPoints()) { + for (ModevTypePoint point : detail.getPoints()) { data = map.get(point.getField()); if (data == null) { data = ""; @@ -73,7 +76,8 @@ public class ReportServiceImpl implements ReportService { @Override public void importCac(InputStream input) throws Exception { - CacExcelListener listener = new CacExcelListener(n103SensorService, modevTypeService.listAll()); + CacExcelListener listener = new CacExcelListener(n103SensorService, typePointRepository, + modevTypeService.listAll()); EasyExcel.read(input, CacLine.class, listener) .sheet(0) .doRead();