From faa3721fc5f7551a804a099390d2bd1a033d185d Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 14 Mar 2024 10:53:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20icd=E5=B1=9E=E6=80=A7=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=E5=AD=97=E6=AE=B5=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/init.sql | 1 + .../com/xydl/cac/entity/IcdConfigType.java | 8 +++-- .../com/xydl/cac/entity/IcdConfigTypeAtt.java | 29 +++++++++++++++++++ .../impl/IcdFileConfigServiceImpl.java | 1 + .../service/impl/ParamBindServiceImpl.java | 13 +++++++-- .../java/com/xydl/cac/util/IcdXmlUtil.java | 2 +- 6 files changed, 48 insertions(+), 6 deletions(-) diff --git a/sql/init.sql b/sql/init.sql index d65a231..d0fdb84 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -15,6 +15,7 @@ CREATE TABLE `icd_config_type_att` ( `param` varchar(200) DEFAULT NULL COMMENT '参数', `description` varchar(200) DEFAULT NULL COMMENT '备注', `col_name` varchar(45) DEFAULT NULL COMMENT '字段名', + `insts` varchar(2000) NOT NULL COMMENT '实例', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ICD配置类型属性表'; CREATE TABLE `icd_config_type_inst` ( diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigType.java b/src/main/java/com/xydl/cac/entity/IcdConfigType.java index 1a95f9e..ae4a00a 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigType.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigType.java @@ -57,18 +57,20 @@ public class IcdConfigType { @Transient private List instList; - public void addAtt(String doName, String desc, String param) { + public void addAtt(String doName, String desc, String param, String inst) { if (attMap == null) { attMap = new LinkedHashMap<>(); } - if (!attMap.containsKey(doName)) { - IcdConfigTypeAtt item = IcdConfigTypeAtt.builder() + IcdConfigTypeAtt item = attMap.get(doName); + if (item == null) { + item = IcdConfigTypeAtt.builder() .doName(doName) .description(desc) .param(param) .build(); attMap.put(doName, item); } + item.addInst(inst); } public void addInst(String inst) { diff --git a/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java b/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java index 42ed674..33998e0 100644 --- a/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java +++ b/src/main/java/com/xydl/cac/entity/IcdConfigTypeAtt.java @@ -10,7 +10,9 @@ import lombok.NoArgsConstructor; import javax.persistence.*; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; @JsonInclude(JsonInclude.Include.NON_NULL) @Data @@ -47,4 +49,31 @@ public class IcdConfigTypeAtt { @Column(name = "col_name") private String colName; + @ApiModelProperty(name = "实例") + @Column(name = "insts") + private String insts; + + @Transient + private List instList; + + public void addInst(String inst) { + if (instList == null) { + instList = new ArrayList<>(); + } + if (!instList.contains(inst)) { + instList.add(inst); + } + } + + public void buildInsts() { + insts = instList.stream().collect(Collectors.joining(",")); + } + + public boolean containInst(String inst) { + if (instList == null) { + instList = Arrays.asList(insts.split(",")); + } + return instList.contains(inst); + } + } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java index 0b71ca0..4620f5b 100644 --- a/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IcdFileConfigServiceImpl.java @@ -51,6 +51,7 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService { Collection attList = config.getAttMap().values(); for (IcdConfigTypeAtt item : attList) { item.setIcdConfigTypeId(config.getId()); + item.buildInsts(); } attRepository.saveAll(attList); } diff --git a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java index e522f41..932fad1 100644 --- a/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ParamBindServiceImpl.java @@ -8,6 +8,7 @@ import com.xydl.cac.model.ColumnModel; import com.xydl.cac.model.Response; import com.xydl.cac.repository.*; import com.xydl.cac.service.DataService; +import com.xydl.cac.service.ModevTypeService; import com.xydl.cac.service.ParamBindService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -36,6 +37,8 @@ public class ParamBindServiceImpl implements ParamBindService { @Resource NSensorRepository sensorRepository; @Resource + ModevTypeService modevTypeService; + @Resource IcdConfigTypeRepository typeRepository; @Resource IcdConfigTypeInstRepository instRepository; @@ -136,6 +139,12 @@ public class ParamBindServiceImpl implements ParamBindService { throw new BusinessException("未找到该监测装置, eqmid=" + item.getEqmid()); } NSensor sensor = optionalNSensor.get(); + if (sensor.getTypeId() == null) { + throw new BusinessException("该装置缺少类型id信息"); + } + ModevType modevType = modevTypeService.detail(sensor.getTypeId()); + sensor.setTableName(modevType.getTablename()); + sensor.setTypeName(modevType.getMc()); Optional optionalInst = instRepository.findById(item.getIcdid()); if (!optionalInst.isPresent()) { throw new BusinessException("未找到该ICD逻辑设备实例, icdid=" + item.getIcdid()); @@ -152,7 +161,7 @@ public class ParamBindServiceImpl implements ParamBindService { List attList = attRepository.findByIcdConfigTypeId(type.getId()); List msgList = new ArrayList<>(); for (IcdConfigTypeAtt att : attList) { - if (StringUtils.isBlank(att.getColName())) { + if (StringUtils.isBlank(att.getColName()) && att.containInst(inst.getInst())) { msgList.add(att.getDoName() + "该属性还未配置绑定字段"); } else { // String paramindex = param + "$" + att.getParam(); @@ -298,7 +307,7 @@ public class ParamBindServiceImpl implements ParamBindService { + inst.getInst(); List attList = attRepository.findByIcdConfigTypeId(type.getId()); for (IcdConfigTypeAtt att : attList) { - if (StringUtils.isNotBlank(att.getColName())) { + if (StringUtils.isNotBlank(att.getColName()) && att.containInst(inst.getInst())) { String paramindex = param + "$" + att.getParam(); Optional optionalRpt = rptparamindexRepository.findById(paramindex); if (!optionalRpt.isPresent()) { diff --git a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java index ae1412d..653ab07 100644 --- a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java +++ b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java @@ -96,7 +96,7 @@ public class IcdXmlUtil { } String param = fc + "$" + doName + "$" + lastname; config.addInst(lnInst); - config.addAtt(doName, doDesc, param); + config.addAtt(doName, doDesc, param, lnInst); } else if ("ST".equals(fc)) { // IcdConfigType config = result.get(key); // if (config == null) {