|
|
@@ -42,35 +42,54 @@ public class ElementService {
|
|
|
throw new BusinessException(404, "项目不存在");
|
|
|
}
|
|
|
|
|
|
- Long elementId = nodeService.createNode(
|
|
|
- Constants.NODE_ELEMENT, dto.getElementKey(), dto.getElementName(), project.getCreatedBy());
|
|
|
+ // 查找已存在的要素定义,或创建新的
|
|
|
+ Long elementId;
|
|
|
+ Node existingElement = nodeService.getByTypeAndKey(Constants.NODE_ELEMENT, dto.getElementKey());
|
|
|
+ if (existingElement != null) {
|
|
|
+ elementId = existingElement.getId();
|
|
|
+ // 检查是否已经关联到该项目
|
|
|
+ if (edgeService.getByTypeAndNodes(Constants.EDGE_HAS_ELEMENT, projectId, elementId) != null) {
|
|
|
+ // 已存在关联,直接返回
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ result.put("elementId", elementId);
|
|
|
+ result.put("elementKey", dto.getElementKey());
|
|
|
+ result.put("existed", true);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 创建新的要素定义
|
|
|
+ elementId = nodeService.createNode(
|
|
|
+ Constants.NODE_ELEMENT, dto.getElementKey(), dto.getElementName(), project.getCreatedBy());
|
|
|
|
|
|
- if (StringUtils.hasText(dto.getElementType())) {
|
|
|
- propertyService.setNodeProperty(elementId, "element_type", dto.getElementType());
|
|
|
- }
|
|
|
- if (StringUtils.hasText(dto.getNamespace())) {
|
|
|
- propertyService.setNodeProperty(elementId, "namespace", dto.getNamespace());
|
|
|
- }
|
|
|
- if (StringUtils.hasText(dto.getFieldName())) {
|
|
|
- propertyService.setNodeProperty(elementId, "field_name", dto.getFieldName());
|
|
|
- }
|
|
|
- if (StringUtils.hasText(dto.getTableColumns())) {
|
|
|
- propertyService.setNodePropertyJson(elementId, "table_columns", dto.getTableColumns());
|
|
|
- }
|
|
|
- if (dto.getRequired() != null) {
|
|
|
- propertyService.setNodeProperty(elementId, "required", String.valueOf(dto.getRequired()));
|
|
|
- }
|
|
|
- if (StringUtils.hasText(dto.getDefaultValue())) {
|
|
|
- propertyService.setNodeProperty(elementId, "default_value", dto.getDefaultValue());
|
|
|
- }
|
|
|
- if (StringUtils.hasText(dto.getDescription())) {
|
|
|
- propertyService.setNodeProperty(elementId, "description", dto.getDescription());
|
|
|
+ if (StringUtils.hasText(dto.getElementType())) {
|
|
|
+ propertyService.setNodeProperty(elementId, "element_type", dto.getElementType());
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(dto.getNamespace())) {
|
|
|
+ propertyService.setNodeProperty(elementId, "namespace", dto.getNamespace());
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(dto.getFieldName())) {
|
|
|
+ propertyService.setNodeProperty(elementId, "field_name", dto.getFieldName());
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(dto.getTableColumns())) {
|
|
|
+ propertyService.setNodePropertyJson(elementId, "table_columns", dto.getTableColumns());
|
|
|
+ }
|
|
|
+ if (dto.getRequired() != null) {
|
|
|
+ propertyService.setNodeProperty(elementId, "required", String.valueOf(dto.getRequired()));
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(dto.getDefaultValue())) {
|
|
|
+ propertyService.setNodeProperty(elementId, "default_value", dto.getDefaultValue());
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(dto.getDescription())) {
|
|
|
+ propertyService.setNodeProperty(elementId, "description", dto.getDescription());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ // 创建项目与要素的关联
|
|
|
int sortOrder = dto.getSortOrder() != null ? dto.getSortOrder() :
|
|
|
edgeService.countByTypeAndFrom(Constants.EDGE_HAS_ELEMENT, projectId);
|
|
|
edgeService.createEdge(Constants.EDGE_HAS_ELEMENT, projectId, elementId, sortOrder);
|
|
|
|
|
|
+ // 为该项目创建新的值节点(node_key使用elementKey,用于视图查询)
|
|
|
Long valueId = nodeService.createNode(
|
|
|
Constants.NODE_VALUE, dto.getElementKey(), dto.getElementName() + "-值", project.getCreatedBy());
|
|
|
propertyService.setNodeProperty(valueId, "value_text", "");
|