diff --git a/nl-module-base/nl-module-base-server/src/main/java/cn/code/nl/module/base/service/codegen/CodeGenServiceImpl.java b/nl-module-base/nl-module-base-server/src/main/java/cn/code/nl/module/base/service/codegen/CodeGenServiceImpl.java index ba869821..5ca18d0b 100644 --- a/nl-module-base/nl-module-base-server/src/main/java/cn/code/nl/module/base/service/codegen/CodeGenServiceImpl.java +++ b/nl-module-base/nl-module-base-server/src/main/java/cn/code/nl/module/base/service/codegen/CodeGenServiceImpl.java @@ -61,12 +61,14 @@ public class CodeGenServiceImpl implements CodeGenService { * 根据段类型分发处理,生成段值 */ private String buildSegment(CodeRuleDO rule, SegmentConfig segment) { - return switch (segment.getType()) { - case "PREFIX" -> buildPrefixSegment((PrefixSegment) segment); - case "DATE" -> buildDateSegment((DateSegment) segment); - case "SEQUENCE" -> buildSequenceSegment(rule, (SequenceSegment) segment); - default -> throw new IllegalArgumentException("不支持的段类型: " + segment.getType()); - }; + if (segment instanceof PrefixSegment) { + return buildPrefixSegment((PrefixSegment) segment); + } else if (segment instanceof DateSegment) { + return buildDateSegment((DateSegment) segment); + } else if (segment instanceof SequenceSegment) { + return buildSequenceSegment(rule, (SequenceSegment) segment); + } + throw new IllegalArgumentException("不支持的段类型: " + segment.getClass().getSimpleName()); } /** diff --git a/nl-module-base/nl-module-base-server/src/main/java/cn/code/nl/module/base/service/codegen/dto/SegmentConfig.java b/nl-module-base/nl-module-base-server/src/main/java/cn/code/nl/module/base/service/codegen/dto/SegmentConfig.java index 495bbf56..df20c511 100644 --- a/nl-module-base/nl-module-base-server/src/main/java/cn/code/nl/module/base/service/codegen/dto/SegmentConfig.java +++ b/nl-module-base/nl-module-base-server/src/main/java/cn/code/nl/module/base/service/codegen/dto/SegmentConfig.java @@ -5,22 +5,18 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; import lombok.Data; /** - * 分段配置基类,使用 Jackson 多态序列化/反序列化 + * 分段配置基类,使用 Jackson 多态序列化/反序列化。 + * 注意:type 字段由 @JsonTypeInfo 自动管理,不要在子类中重复定义, + * 否则会导致序列化时 type 被覆盖为 null,反序列化时找不到子类型。 * * @author zhouz */ @Data -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type") +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", visible = true) @JsonSubTypes({ @JsonSubTypes.Type(value = PrefixSegment.class, name = "PREFIX"), @JsonSubTypes.Type(value = DateSegment.class, name = "DATE"), @JsonSubTypes.Type(value = SequenceSegment.class, name = "SEQUENCE") }) public abstract class SegmentConfig { - - /** - * 段类型:PREFIX / DATE / SEQUENCE - */ - private String type; - }