diff --git a/src/main/java/neatlogic/module/cmdb/process/exception/AbstractCiTargetCiIdAttrNotFoundException.java b/src/main/java/neatlogic/module/cmdb/process/exception/AbstractCiTargetCiIdAttrNotFoundException.java index 29d1ceae280ca626105b338e21e0c4ad2457ebed..1a4ca8ba08f3a5317ed0d49e344a973a11e64bfe 100644 --- a/src/main/java/neatlogic/module/cmdb/process/exception/AbstractCiTargetCiIdAttrNotFoundException.java +++ b/src/main/java/neatlogic/module/cmdb/process/exception/AbstractCiTargetCiIdAttrNotFoundException.java @@ -8,4 +8,8 @@ public class AbstractCiTargetCiIdAttrNotFoundException extends ApiRuntimeExcepti public AbstractCiTargetCiIdAttrNotFoundException(CiVo ciVo) { super("nmcpe.abstractcitargetciidattrnotfoundexception.abstractcitargetciidattrnotfoundexception", ciVo.getLabel(), ciVo.getName()); } + + public AbstractCiTargetCiIdAttrNotFoundException(CiVo ciVo, String configurationPath, String actualPath) { + super("nmcpe.abstractcitargetciidattrnotfoundexception.abstractcitargetciidattrnotfoundexception_b", ciVo.getLabel(), ciVo.getName(), configurationPath, actualPath); + } } diff --git a/src/main/java/neatlogic/module/cmdb/process/exception/DataConversionAppendPathException.java b/src/main/java/neatlogic/module/cmdb/process/exception/DataConversionAppendPathException.java new file mode 100644 index 0000000000000000000000000000000000000000..74d012acf1ea5bfc65a0921df6e271ebdff4992f --- /dev/null +++ b/src/main/java/neatlogic/module/cmdb/process/exception/DataConversionAppendPathException.java @@ -0,0 +1,11 @@ +package neatlogic.module.cmdb.process.exception; + +import neatlogic.framework.exception.core.ApiRuntimeException; +import neatlogic.framework.util.$; + +public class DataConversionAppendPathException extends ApiRuntimeException { + + public DataConversionAppendPathException(Exception e, String configurationPath, String actualPath) { + super($.t("nmcpe.dataconversionappendpathexception.dataconversionappendpathexception", configurationPath, actualPath, e.getMessage()), e); + } +} diff --git a/src/main/java/neatlogic/module/cmdb/service/cientity/CiEntityServiceImpl.java b/src/main/java/neatlogic/module/cmdb/service/cientity/CiEntityServiceImpl.java index 49532e5b2328cf26ebaaecbafcfdb4f676f7a12d..ea0171124cf8a5edd705761968ef1cde63216a83 100644 --- a/src/main/java/neatlogic/module/cmdb/service/cientity/CiEntityServiceImpl.java +++ b/src/main/java/neatlogic/module/cmdb/service/cientity/CiEntityServiceImpl.java @@ -61,6 +61,7 @@ import neatlogic.module.cmdb.dao.mapper.globalattr.GlobalAttrMapper; import neatlogic.module.cmdb.dao.mapper.transaction.TransactionMapper; import neatlogic.module.cmdb.fulltextindex.enums.CmdbFullTextIndexType; import neatlogic.module.cmdb.group.CiEntityGroupManager; +import neatlogic.module.cmdb.process.exception.DataConversionAppendPathException; import neatlogic.module.cmdb.relativerel.RelativeRelManager; import neatlogic.module.cmdb.service.ci.CiAuthChecker; import neatlogic.module.cmdb.utils.CiEntityBuilder; @@ -582,9 +583,26 @@ public class CiEntityServiceImpl implements CiEntityService, ICiEntityCrossoverS } } for (CiEntityTransactionVo ciEntityTransactionVo : ciEntityTransactionList) { - Long transactionId = saveCiEntity(ciEntityTransactionVo, transactionGroupVo); - if (transactionId > 0L) { - transactionMapper.insertTransactionGroup(transactionGroupVo.getId(), transactionId); + try { + Long transactionId = saveCiEntity(ciEntityTransactionVo, transactionGroupVo); + if (transactionId > 0L) { + transactionMapper.insertTransactionGroup(transactionGroupVo.getId(), transactionId); + } + } catch (Exception e) { + if (CollectionUtils.isNotEmpty(ciEntityTransactionVo.getConfigurationPathList()) + || CollectionUtils.isNotEmpty(ciEntityTransactionVo.getActualPathList())) { + String configurationPath = ""; + if (CollectionUtils.isNotEmpty(ciEntityTransactionVo.getConfigurationPathList())) { + configurationPath = String.join(",", ciEntityTransactionVo.getConfigurationPathList()); + } + String actualPath = ""; + if (CollectionUtils.isNotEmpty(ciEntityTransactionVo.getActualPathList())) { + actualPath = String.join(",", ciEntityTransactionVo.getActualPathList()); + } + throw new DataConversionAppendPathException(e, configurationPath, actualPath); + } else { + throw e; + } } } } @@ -912,14 +930,14 @@ public class CiEntityServiceImpl implements CiEntityService, ICiEntityCrossoverS if (/*ciEntityTransactionVo.getAction().equals(TransactionActionType.INSERT.getValue()) ||*/ ciEntityTransactionVo.getEditMode().equals(EditModeType.GLOBAL.getValue())) { if (attrEntityTransactionVo == null) { if (attrVo.getAllowEdit() == null || attrVo.getAllowEdit().equals(1)) { - throw new AttrEntityValueEmptyException(attrVo.getLabel()); + throw new AttrEntityValueEmptyException(ciVo, attrVo); } } else if (attrEntityTransactionVo.getSaveMode().equals(SaveModeType.REPLACE.getValue()) && CollectionUtils.isEmpty(attrEntityTransactionVo.getValueList())) { - throw new AttrEntityValueEmptyException(attrVo.getLabel()); + throw new AttrEntityValueEmptyException(ciVo, attrVo); } else if (attrEntityTransactionVo.getSaveMode().equals(SaveModeType.MERGE.getValue()) && attrVo.isNeedTargetCi() && CollectionUtils.isEmpty(attrEntityTransactionVo.getValueList())) { List oldList = ciEntityMapper.getAttrEntityByAttrIdAndFromCiEntityId(ciEntityTransactionVo.getCiEntityId(), attrVo.getId(), null); if (CollectionUtils.isEmpty(oldList)) { - throw new AttrEntityValueEmptyException(attrVo.getLabel()); + throw new AttrEntityValueEmptyException(ciVo, attrVo); } } } @@ -1396,7 +1414,7 @@ public class CiEntityServiceImpl implements CiEntityService, ICiEntityCrossoverS if (attrVo.getIsRequired().equals(1)) { if (attrEntityTransactionVo == null || CollectionUtils.isEmpty(attrEntityTransactionVo.getValueList())) { if (attrVo.getAllowEdit() == null || attrVo.getAllowEdit().equals(1)) { - throw new AttrEntityValueEmptyException(attrVo.getLabel()); + throw new AttrEntityValueEmptyException(ciVo, attrVo); } } } @@ -1540,7 +1558,7 @@ public class CiEntityServiceImpl implements CiEntityService, ICiEntityCrossoverS boolean isDelete = CollectionUtils.isEmpty(attrEntityTransactionVo.getValueList()) || (attrEntityTransactionVo.getValueList().size() == 1 && StringUtils.isBlank(attrEntityTransactionVo.getValueList().getString(0))); /*检查必填属性:*/ if (attrVo.getIsRequired().equals(1) && isDelete) { - throw new AttrEntityValueEmptyException(attrVo.getLabel()); + throw new AttrEntityValueEmptyException(ciVo, attrVo); } /* 校验值是否符合数据类型*/