feat: icd属性增加实例字段处理

haikang
huangfeng 1 year ago
parent 45a9d262c9
commit faa3721fc5

@ -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` (

@ -57,18 +57,20 @@ public class IcdConfigType {
@Transient
private List<IcdConfigTypeInst> 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) {

@ -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<String> 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);
}
}

@ -51,6 +51,7 @@ public class IcdFileConfigServiceImpl implements IcdFileConfigService {
Collection<IcdConfigTypeAtt> attList = config.getAttMap().values();
for (IcdConfigTypeAtt item : attList) {
item.setIcdConfigTypeId(config.getId());
item.buildInsts();
}
attRepository.saveAll(attList);
}

@ -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<IcdConfigTypeInst> 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<IcdConfigTypeAtt> attList = attRepository.findByIcdConfigTypeId(type.getId());
List<String> 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<IcdConfigTypeAtt> 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<Rptparamindex> optionalRpt = rptparamindexRepository.findById(paramindex);
if (!optionalRpt.isPresent()) {

@ -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) {

Loading…
Cancel
Save