fix: 调整icd绑定使用新表

dev
huangfeng 1 year ago
parent 11723c61f1
commit 41b7400048

@ -15,4 +15,7 @@ public interface NSensorRepository extends JpaRepository<NSensor, Integer>, JpaS
List<NSensor> findByZsbId(Integer zsbId); List<NSensor> findByZsbId(Integer zsbId);
List<NSensor> findByIcdIdIsNotNull();
List<NSensor> findByIcdIdAndIdIsNot(Integer icdid, Integer id);
} }

@ -124,7 +124,7 @@ public class DataServiceImpl implements DataService {
@Override @Override
public void clearAllBind() { public void clearAllBind() {
String sql = "UPDATE modev SET icdid=null"; String sql = "UPDATE n_sensor SET icd_id=null";
jdbcTemplate.execute(sql); jdbcTemplate.execute(sql);
} }
} }

@ -78,7 +78,7 @@ public class NSensorServiceImpl implements NSensorService {
entity.setIcdId(icdid); entity.setIcdId(icdid);
repository.save(entity); repository.save(entity);
} else { } else {
throw new BusinessException("未找到该传感器"); throw new BusinessException("未找到该传监测装置");
} }
} }

@ -8,7 +8,6 @@ import com.xydl.cac.model.ColumnModel;
import com.xydl.cac.model.Response; import com.xydl.cac.model.Response;
import com.xydl.cac.repository.*; import com.xydl.cac.repository.*;
import com.xydl.cac.service.DataService; import com.xydl.cac.service.DataService;
import com.xydl.cac.service.NSensorService;
import com.xydl.cac.service.ParamBindService; import com.xydl.cac.service.ParamBindService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -36,10 +35,6 @@ public class ParamBindServiceImpl implements ParamBindService {
@Resource @Resource
NSensorRepository sensorRepository; NSensorRepository sensorRepository;
@Resource @Resource
ModevRepository modevRepository;
@Resource
ModevTypeRepository modevTypeRepository;
@Resource
IcdConfigTypeRepository typeRepository; IcdConfigTypeRepository typeRepository;
@Resource @Resource
IcdConfigTypeInstRepository instRepository; IcdConfigTypeInstRepository instRepository;
@ -89,16 +84,11 @@ public class ParamBindServiceImpl implements ParamBindService {
@Override @Override
public Response preview(BindingModel item) throws Exception { public Response preview(BindingModel item) throws Exception {
Optional<Modev> optionalModev = modevRepository.findById(item.getEqmid()); Optional<NSensor> optionalNSensor = sensorRepository.findById(item.getEqmid());
if (!optionalModev.isPresent()) { if (!optionalNSensor.isPresent()) {
throw new BusinessException("未找到该监测装置, eqmid=" + item.getEqmid()); throw new BusinessException("未找到该监测装置, eqmid=" + item.getEqmid());
} }
Modev modev = optionalModev.get(); NSensor sensor = optionalNSensor.get();
Optional<ModevType> optionalModevType = modevTypeRepository.findById(modev.getModevtid());
if (!optionalModevType.isPresent()) {
throw new BusinessException("该监测装置类型不正确, 请先修正");
}
ModevType modevType = optionalModevType.get();
Optional<IcdConfigTypeInst> optionalInst = instRepository.findById(item.getIcdid()); Optional<IcdConfigTypeInst> optionalInst = instRepository.findById(item.getIcdid());
if (!optionalInst.isPresent()) { if (!optionalInst.isPresent()) {
throw new BusinessException("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid()); throw new BusinessException("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid());
@ -129,8 +119,8 @@ public class ParamBindServiceImpl implements ParamBindService {
Response resp = Response.success(attList); Response resp = Response.success(attList);
if (StringUtils.isBlank(type.getTableName())) { if (StringUtils.isBlank(type.getTableName())) {
msgList.add("该ICD配置类型还未设置对应的tableName"); msgList.add("该ICD配置类型还未设置对应的tableName");
} else if (!type.getTableName().equals(modevType.getTablename())) { } else if (!type.getTableName().equals(sensor.getTableName())) {
msgList.add("该ICD配置类型的tableName(" + type.getTableName() + ")和该监测装置类型的tableName(" + modevType.getTablename() + ")不一致"); msgList.add("该ICD配置类型的tableName(" + type.getTableName() + ")和该监测装置类型的tableName(" + sensor.getTableName() + ")不一致");
} }
if (msgList.size() > 0) { if (msgList.size() > 0) {
String message = msgList.stream().collect(Collectors.joining("\n\r")); String message = msgList.stream().collect(Collectors.joining("\n\r"));
@ -141,11 +131,11 @@ public class ParamBindServiceImpl implements ParamBindService {
@Override @Override
public void bind(BindingModel item) throws Exception { public void bind(BindingModel item) throws Exception {
Optional<Modev> optionalModev = modevRepository.findById(item.getEqmid()); Optional<NSensor> optionalNSensor = sensorRepository.findById(item.getEqmid());
if (!optionalModev.isPresent()) { if (!optionalNSensor.isPresent()) {
throw new BusinessException("未找到该监测装置, eqmid=" + item.getEqmid()); throw new BusinessException("未找到该监测装置, eqmid=" + item.getEqmid());
} }
Modev modev = optionalModev.get(); NSensor sensor = optionalNSensor.get();
Optional<IcdConfigTypeInst> optionalInst = instRepository.findById(item.getIcdid()); Optional<IcdConfigTypeInst> optionalInst = instRepository.findById(item.getIcdid());
if (!optionalInst.isPresent()) { if (!optionalInst.isPresent()) {
@ -158,71 +148,65 @@ public class ParamBindServiceImpl implements ParamBindService {
} }
IcdConfigType type = optionalType.get(); IcdConfigType type = optionalType.get();
List<Modev> list = modevRepository.findByIcdidAndIdIsNot(item.getIcdid(), item.getEqmid()); List<NSensor> list = sensorRepository.findByIcdIdAndIdIsNot(item.getIcdid(), item.getEqmid());
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("该逻辑设备实例已被" + list.get(0).getName() + "绑定"); throw new BusinessException("该逻辑设备实例已被" + list.get(0).getName() + "绑定");
} }
List<IcdConfigTypeAtt> attList = attRepository.findByIcdConfigTypeId(type.getId()); List<IcdConfigTypeAtt> attList = attRepository.findByIcdConfigTypeId(type.getId());
Optional<ModevType> optionalModevType = modevTypeRepository.findById(modev.getModevtid());
if (optionalModevType.isPresent()) { if (StringUtils.isNotBlank(sensor.getTableName())) {
ModevType modevType = optionalModevType.get(); List<ColumnModel> columnList = dataService.getDataTableColumns(sensor.getTableName());
if (StringUtils.isNotBlank(modevType.getTablename())) { for (IcdConfigTypeAtt att : attList) {
List<ColumnModel> columnList = dataService.getDataTableColumns(modevType.getTablename()); if (StringUtils.isNotBlank(att.getColName())) {
for (IcdConfigTypeAtt att : attList) { boolean found = false;
if (StringUtils.isNotBlank(att.getColName())) { for (ColumnModel col : columnList) {
boolean found = false; if (col.getName().equals(att.getColName())) {
for (ColumnModel col : columnList) { found = true;
if (col.getName().equals(att.getColName())) { break;
found = true;
break;
}
}
if (!found) {
throw new BusinessException("当前监控设备对应的表" + modevType.getTablename() + "里不存在配置属性"
+ att.getDoName() + "绑定的字段" + att.getColName());
} }
} }
if (!found) {
throw new BusinessException("当前监控设备对应的表" + sensor.getTableName() + "里不存在配置属性"
+ att.getDoName() + "绑定的字段" + att.getColName());
}
} }
} }
} }
modev.setIcdid(item.getIcdid()); sensor.setIcdId(item.getIcdid());
modevRepository.save(modev); sensorRepository.save(sensor);
} }
@Override @Override
public void unbind(Integer eqmid) throws Exception { public void unbind(Integer eqmid) throws Exception {
Optional<Modev> optionalModev = modevRepository.findById(eqmid); Optional<NSensor> optionalNSensor = sensorRepository.findById(eqmid);
if (!optionalModev.isPresent()) { if (!optionalNSensor.isPresent()) {
throw new BusinessException("未找到该监测装置, eqmid=" + eqmid); throw new BusinessException("未找到该监测装置, eqmid=" + eqmid);
} }
Modev modev = optionalModev.get(); NSensor sensor = optionalNSensor.get();
modev.setIcdid(null); sensor.setIcdId(null);
modevRepository.save(modev); sensorRepository.save(sensor);
} }
@Override @Override
public BindDetail getBind(Integer eqmid) throws Exception { public BindDetail getBind(Integer eqmid) throws Exception {
Optional<Modev> optionalModev = modevRepository.findById(eqmid); Optional<NSensor> optionalNSensor = sensorRepository.findById(eqmid);
if (!optionalModev.isPresent()) { if (!optionalNSensor.isPresent()) {
throw new BusinessException("未找到该监测装置"); throw new BusinessException("未找到该监测装置");
} }
Modev modev = optionalModev.get(); NSensor sensor = optionalNSensor.get();
BindDetail result = new BindDetail(); BindDetail result = new BindDetail();
result.setEqmid(eqmid); result.setEqmid(eqmid);
Optional<ModevType> optionalModevType = modevTypeRepository.findById(modev.getModevtid()); if (StringUtils.isNotBlank(sensor.getTableName())) {
if (optionalModevType.isPresent()) { List<ColumnModel> columnList = dataService.getDataTableColumns(sensor.getTableName());
ModevType modevType = optionalModevType.get(); result.setColumnList(columnList);
if (StringUtils.isNotBlank(modevType.getTablename())) {
List<ColumnModel> columnList = dataService.getDataTableColumns(modevType.getTablename());
result.setColumnList(columnList);
}
} }
if (modev.getIcdid() != null) {
result.setIcdid(modev.getIcdid()); if (sensor.getIcdId() != null) {
Optional<IcdConfigTypeInst> optionalInst = instRepository.findById(modev.getIcdid()); result.setIcdid(sensor.getIcdId());
Optional<IcdConfigTypeInst> optionalInst = instRepository.findById(sensor.getIcdId());
if (optionalInst.isPresent()) { if (optionalInst.isPresent()) {
IcdConfigTypeInst inst = optionalInst.get(); IcdConfigTypeInst inst = optionalInst.get();
Optional<IcdConfigType> optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); Optional<IcdConfigType> optionalType = typeRepository.findById(inst.getIcdConfigTypeId());
@ -241,26 +225,26 @@ public class ParamBindServiceImpl implements ParamBindService {
@Override @Override
public String generateParamindex() throws Exception { public String generateParamindex() throws Exception {
List<Modev> modevList = modevRepository.findByIcdidIsNotNull(); List<NSensor> sensorList = sensorRepository.findByIcdIdIsNotNull();
if (!CollectionUtils.isEmpty(modevList)) { if (!CollectionUtils.isEmpty(sensorList)) {
for (Modev item : modevList) { for (NSensor item : sensorList) {
generateOne(item); generateOne(item);
} }
return "已对" + modevList.size() + "条绑定数据生成对应的61850参引数据"; return "已对" + sensorList.size() + "条绑定数据生成对应的61850参引数据";
} else { } else {
throw new BusinessException("无任何绑定数据"); throw new BusinessException("无任何绑定数据");
} }
} }
private void generateOne(Modev item) throws Exception { private void generateOne(NSensor item) throws Exception {
Optional<IcdConfigTypeInst> optionalInst = instRepository.findById(item.getIcdid()); Optional<IcdConfigTypeInst> optionalInst = instRepository.findById(item.getIcdId());
if (!optionalInst.isPresent()) { if (!optionalInst.isPresent()) {
throw new BusinessException("未找到该ICD逻辑设备实例, eqmid=" + item.getId() + ", icdid=" + item.getIcdid()); throw new BusinessException("未找到该ICD逻辑设备实例, eqmid=" + item.getId() + ", icdid=" + item.getIcdId());
} }
IcdConfigTypeInst inst = optionalInst.get(); IcdConfigTypeInst inst = optionalInst.get();
Optional<IcdConfigType> optionalType = typeRepository.findById(inst.getIcdConfigTypeId()); Optional<IcdConfigType> optionalType = typeRepository.findById(inst.getIcdConfigTypeId());
if (!optionalType.isPresent()) { if (!optionalType.isPresent()) {
throw new BusinessException("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdid()); throw new BusinessException("未找到该实例对应的ICD配置类型, icdid=" + item.getIcdId());
} }
IcdConfigType type = optionalType.get(); IcdConfigType type = optionalType.get();
String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass() String param = type.getIedName() + type.getLdeviceInst() + "/" + type.getLnClass()

Loading…
Cancel
Save