yeg
2026-09-08 cac822dafb8bffd448b17211f83e0039236d36dc
battery-business/src/main/java/com/battery/business/report/SpliceFieldTemplateService.java
@@ -42,9 +42,9 @@
        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());