diff --git a/src/main/java/neatlogic/module/cmdb/attrvaluehandler/handler/SelectValueHandler.java b/src/main/java/neatlogic/module/cmdb/attrvaluehandler/handler/SelectValueHandler.java index f453c4c6757ace80c347c77e084229a3b2357545..19672ad4524d183004fbad205fef3d96acce5d60 100644 --- a/src/main/java/neatlogic/module/cmdb/attrvaluehandler/handler/SelectValueHandler.java +++ b/src/main/java/neatlogic/module/cmdb/attrvaluehandler/handler/SelectValueHandler.java @@ -175,11 +175,25 @@ public class SelectValueHandler implements IAttrValueHandler { @Override public boolean valid(AttrVo attrVo, JSONArray valueList) { if (CollectionUtils.isNotEmpty(valueList)) { + CiVo ciVo = ciMapper.getCiById(attrVo.getTargetCiId()); for (int i = 0; i < valueList.size(); i++) { String value = valueList.getString(i); try { - Long attrId = Long.valueOf(value); - CiEntityVo ciEntity = ciEntityMapper.getCiEntityBaseInfoById(attrId); + Long id = Long.valueOf(value); + CiEntityVo ciEntity = null; + if (ciVo.getIsVirtual().equals(0)) { + ciEntity = ciEntityMapper.getCiEntityBaseInfoById(id); + } else { + CiEntityVo ciEntityVo = new CiEntityVo(); + ciEntityVo.setCiId(ciVo.getId()); + List idList = new ArrayList<>(); + idList.add(id); + ciEntityVo.setIdList(idList); + List ciEntityList = ciEntityMapper.getVirtualCiEntityBaseInfoByIdList(ciEntityVo); + if (CollectionUtils.isNotEmpty(ciEntityList)) { + ciEntity = ciEntityList.get(0); + } + } if (ciEntity == null) { throw new AttrValueIrregularException(attrVo, value); } diff --git a/src/main/java/neatlogic/module/cmdb/attrvaluehandler/handler/TableValueHandler.java b/src/main/java/neatlogic/module/cmdb/attrvaluehandler/handler/TableValueHandler.java index c5cfdb00d20441e92e89b52c512fdd65de819200..26bd5fba49a2a847a6b159ec3f4c11dbdde4cdbe 100644 --- a/src/main/java/neatlogic/module/cmdb/attrvaluehandler/handler/TableValueHandler.java +++ b/src/main/java/neatlogic/module/cmdb/attrvaluehandler/handler/TableValueHandler.java @@ -166,11 +166,25 @@ public class TableValueHandler implements IAttrValueHandler { @Override public boolean valid(AttrVo attrVo, JSONArray valueList) { if (CollectionUtils.isNotEmpty(valueList)) { + CiVo ciVo = ciMapper.getCiById(attrVo.getTargetCiId()); for (int i = 0; i < valueList.size(); i++) { String value = valueList.getString(i); try { - Long attrId = Long.valueOf(value); - CiEntityVo ciEntity = ciEntityMapper.getCiEntityBaseInfoById(attrId); + Long id = Long.valueOf(value); + CiEntityVo ciEntity = null; + if (ciVo.getIsVirtual().equals(0)) { + ciEntity = ciEntityMapper.getCiEntityBaseInfoById(id); + } else { + CiEntityVo ciEntityVo = new CiEntityVo(); + ciEntityVo.setCiId(ciVo.getId()); + List idList = new ArrayList<>(); + idList.add(id); + ciEntityVo.setIdList(idList); + List ciEntityList = ciEntityMapper.getVirtualCiEntityBaseInfoByIdList(ciEntityVo); + if (CollectionUtils.isNotEmpty(ciEntityList)) { + ciEntity = ciEntityList.get(0); + } + } if (ciEntity == null) { throw new AttrValueIrregularException(attrVo, value); }