| | |
| | | return fields.stream().map(field -> { |
| | | if (!names.add(field.name())) throw new ServiceException("拼接字段不能重复"); |
| | | Long id = field.fieldDefinitionId(); |
| | | if ("battery".equals(field.category()) && resolveDefinitions) |
| | | id = current.stream().filter(item -> field.fieldDefinitionId() == null |
| | | ? item.getFieldName().equals(field.name()) : item.getFieldId().equals(field.fieldDefinitionId())) |
| | | // 控制台字段只有名称;没有明确共享身份时不得凭同名绑定组字段。 |
| | | if ("battery".equals(field.category()) && resolveDefinitions && id != null) |
| | | id = current.stream().filter(item -> item.getFieldId().equals(field.fieldDefinitionId())) |
| | | .findFirst().orElseThrow(() -> new ServiceException("共享字段不存在:" + field.name())).getFieldId(); |
| | | if (id != null && !ids.add(id)) throw new ServiceException("共享字段不能重复"); |
| | | return new SpliceField(field.name(), field.category(), field.unit(), id, field.displayName()); |