fix: 改用ModevTypePoint替换NPoint,并优化校验

haikang
huangfeng 1 year ago
parent 7778118603
commit 4e457a2d75

@ -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;

@ -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<CacLine> {
N103SensorService n103SensorService;
ModevTypePointRepository typePointRepository;
HashMap<String, ModevType> typeMap = new HashMap<>();
int base = 16385;
int type;
LinkedHashMap<String, N103Sensor> sensorList = new LinkedHashMap<>();
List<String> errorList = new ArrayList<>();
HashMap<String, String> doneMap = new HashMap<>();
public CacExcelListener(N103SensorService service, List<ModevType> modevTypeList) {
public CacExcelListener(N103SensorService service, ModevTypePointRepository pointRepository,
List<ModevType> modevTypeList) {
n103SensorService = service;
typePointRepository = pointRepository;
for (ModevType type : modevTypeList) {
typeMap.put(type.getTablename(), type);
}
@ -61,9 +68,13 @@ public class CacExcelListener extends AnalysisEventListener<CacLine> {
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<CacLine> {
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<ModevTypePoint> list = typePointRepository.findByModevtypeIdAndField(modevType.getId(), point.getField());
if (CollectionUtils.isEmpty(list)) {
errorList.add("第" + row + "行的字段" + point.getField() + "需要到监测设备类型" + modevType.getMc() + "下增加相同的属性点配置");
}
doneMap.put(key, "done");
}
}
}
}
}

@ -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<T> extends OnePage<T> {
@ApiModelProperty("装置信息")
private NSensor sensor;
@ApiModelProperty("点表配置")
private List<NPoint> points;
private List<ModevTypePoint> points;
public void initFrom(OnePage page) {
this.setContent(page.getContent());

@ -13,7 +13,7 @@ public interface DataService {
List<ColumnModel> getDataTableColumns(String tableName) throws Exception;
OnePage<Map<String, Object>> getDate(NSensor sensor, List<NPoint> points, ConditionModel model);
OnePage<Map<String, Object>> getDate(NSensor sensor, List<ModevTypePoint> points, ConditionModel model);
void clearAllBind();
}

@ -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<NSensor> collection);
void importOne(NSensor sensor);
}

@ -83,7 +83,7 @@ public class DataServiceImpl implements DataService {
}
@Override
public OnePage<Map<String, Object>> getDate(NSensor sensor, List<NPoint> points, ConditionModel model) {
public OnePage<Map<String, Object>> getDate(NSensor sensor, List<ModevTypePoint> 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();
}

@ -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<NSensor> 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<NPoint> points = pointRepository.findBySensorIdAndType(sensor.getId(), YaoCe);
List<ModevTypePoint> points = modevTypePointService.listAll(sensor.getTypeId());
if (CollectionUtils.isEmpty(points)) {
throw new BusinessException("该装置缺少属性点表信息");
throw new BusinessException("该装置类型" + sensor.getTypeName() + "未配置属性点信息");
}
SensorDetail<Map<String, Object>> result = this.getData(sensor, points, model);
return result;
}
public SensorDetail<Map<String, Object>> getData(NSensor sensor, List<NPoint> points, ConditionModel model) {
List<NPoint> pointList = new ArrayList<>();
for (NPoint point : points) {
public SensorDetail<Map<String, Object>> getData(NSensor sensor, List<ModevTypePoint> points, ConditionModel model) {
List<ModevTypePoint> 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<Map<String, Object>> page = dataService.getDate(sensor, pointList, model);
result.initFrom(page);
for (NPoint point : pointList) {
for (ModevTypePoint point : pointList) {
List<Object> dataList = new ArrayList<>();
for (Map<String, Object> item : result.getContent()) {
Object value = item.get(point.getField());
@ -181,25 +179,6 @@ public class NSensorServiceImpl implements NSensorService {
}
}
@Override
public void importFrom(Collection<NSensor> collection) {
for (NSensor item : collection) {
this.importOne(item);
List<NPoint> points = item.getPoints();
if (points != null) {
for (NPoint point : points) {
point.setSensorId(item.getId());
List<NPoint> 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<NSensor> list = repository.findBySensorCode(item.getSensorCode());

@ -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<Map<String, Object>> detail, OutputStream output) throws Exception {
@ -38,7 +41,7 @@ public class ReportServiceImpl implements ReportService {
List<String> 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<String> 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();

Loading…
Cancel
Save