diff --git a/modules/apps/vehicle-history-app/src/main/resources/application.yml b/modules/apps/vehicle-history-app/src/main/resources/application.yml index 91d53624..80eeba3f 100644 --- a/modules/apps/vehicle-history-app/src/main/resources/application.yml +++ b/modules/apps/vehicle-history-app/src/main/resources/application.yml @@ -29,10 +29,6 @@ springdoc: lingniu: ingest: - gb32960: - enabled: true - server: - enabled: false sink: kafka: enabled: true diff --git a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppCompositionTest.java b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppCompositionTest.java index d21df7b4..a7140237 100644 --- a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppCompositionTest.java +++ b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppCompositionTest.java @@ -11,7 +11,6 @@ import com.lingniu.ingest.eventhistory.Jt808LocationHistoryController; import com.lingniu.ingest.eventhistory.LocationHistoryController; import com.lingniu.ingest.eventhistory.RawFrameHistoryController; import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder; -import com.lingniu.ingest.protocol.gb32960.config.Gb32960AutoConfiguration; import com.lingniu.ingest.protocol.gb32960.inbound.Gb32960NettyServer; import com.lingniu.ingest.sink.kafka.KafkaEnvelopeDeadLetterSink; import com.lingniu.ingest.sink.kafka.KafkaEventSink; @@ -80,7 +79,6 @@ class VehicleHistoryAppCompositionTest { .withConfiguration(AutoConfigurations.of( TdengineHistoryAutoConfiguration.class, KafkaSinkAutoConfiguration.class, - Gb32960AutoConfiguration.class, EventHistoryAutoConfiguration.class)) .withUserConfiguration(VehicleHistoryKafkaConsumerConfiguration.class) .withAllowBeanDefinitionOverriding(true) @@ -89,8 +87,6 @@ class VehicleHistoryAppCompositionTest { "lingniu.ingest.tdengine-history.enabled=true", "lingniu.ingest.tdengine-history.database=vehicle_history_test", "lingniu.ingest.event-history.enabled=true", - "lingniu.ingest.gb32960.enabled=true", - "lingniu.ingest.gb32960.server.enabled=false", "lingniu.ingest.sink.kafka.enabled=true", "lingniu.ingest.sink.kafka.bootstrap-servers=localhost:9092", "lingniu.ingest.sink.kafka.consumer.enabled=false", @@ -144,8 +140,7 @@ class VehicleHistoryAppCompositionTest { "lingniu.ingest.event-history.enabled=true", "lingniu.ingest.tdengine-history.enabled=false", "lingniu.ingest.sink.kafka.enabled=false", - "lingniu.ingest.sink.kafka.consumer.enabled=false", - "lingniu.ingest.gb32960.enabled=false") + "lingniu.ingest.sink.kafka.consumer.enabled=false") .run(context -> { assertThat(context).hasSingleBean(LocationHistoryController.class); assertThat(context).hasSingleBean(RawFrameHistoryController.class); diff --git a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppDefaultsTest.java b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppDefaultsTest.java index 70424de5..facb6bdf 100644 --- a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppDefaultsTest.java +++ b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/VehicleHistoryAppDefaultsTest.java @@ -25,8 +25,6 @@ class VehicleHistoryAppDefaultsTest { "spring.config.import[0]", "optional:nacos:${spring.application.name}.${NACOS_CONFIG_FILE_EXTENSION:yml}?group=${NACOS_GROUP:DEFAULT_GROUP}&refreshEnabled=${NACOS_REFRESH_ENABLED:true}") .containsEntry("spring.cloud.nacos.config.server-addr", "${NACOS_SERVER_ADDR:127.0.0.1:8848}") - .containsEntry("lingniu.ingest.gb32960.enabled", true) - .containsEntry("lingniu.ingest.gb32960.server.enabled", false) .containsEntry("lingniu.ingest.tdengine-history.enabled", "${TDENGINE_HISTORY_ENABLED:false}") .containsEntry("lingniu.ingest.tdengine-history.database", "${TDENGINE_HISTORY_DATABASE:vehicle_history}") .containsEntry( @@ -104,6 +102,7 @@ class VehicleHistoryAppDefaultsTest { .containsEntry("management.endpoints.web.exposure.include", "health,info,metrics,prometheus"); assertThat(properties.stringPropertyNames()) + .noneMatch(name -> name.startsWith("lingniu.ingest.gb32960.")) .noneMatch(name -> name.startsWith("lingniu.ingest.vehicle-state.")) .noneMatch(name -> name.startsWith("lingniu.ingest.vehicle-stat.")) .noneMatch(name -> name.startsWith("lingniu.ingest.sink.archive.")) diff --git a/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfiguration.java b/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfiguration.java index 6ae8fcf9..d2a8838e 100644 --- a/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfiguration.java +++ b/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfiguration.java @@ -10,8 +10,31 @@ import com.lingniu.ingest.eventhistory.Jt808LocationHistoryController; import com.lingniu.ingest.eventhistory.Jt808RawFrameHistoryController; import com.lingniu.ingest.eventhistory.LocationHistoryController; import com.lingniu.ingest.eventhistory.RawFrameHistoryController; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960BodyParser; +import com.lingniu.ingest.protocol.gb32960.codec.Gb32960CommandParser; import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder; -import com.lingniu.ingest.protocol.gb32960.config.Gb32960AutoConfiguration; +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParserRegistry; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.AlarmV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.DriveMotorV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.EngineV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.ExtremeValueV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.FuelCellV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.PositionV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.TemperatureV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VehicleV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VoltageV2016BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.AlarmV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.BatteryTemperatureV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.DriveMotorV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.EngineV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.FuelCellStackV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.FuelCellV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.MinParallelVoltageV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.PositionV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.SuperCapacitorExtremeV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.SuperCapacitorV2025BlockParser; +import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.VehicleV2025BlockParser; import com.lingniu.ingest.sink.kafka.KafkaSinkAutoConfiguration; import com.lingniu.ingest.tdenginehistory.config.TdengineHistoryAutoConfiguration; import com.lingniu.ingest.tdenginehistory.TdengineHistoryReader; @@ -27,6 +50,7 @@ import org.springframework.beans.factory.annotation.Value; import java.net.URI; import java.nio.file.Path; +import java.util.List; /** * Event History 查询/消费服务自动装配。 @@ -42,7 +66,6 @@ import java.nio.file.Path; */ @AutoConfiguration @AutoConfigureAfter({ - Gb32960AutoConfiguration.class, KafkaSinkAutoConfiguration.class, TdengineHistoryAutoConfiguration.class }) @@ -86,6 +109,34 @@ public class EventHistoryAutoConfiguration { return new ApiExceptionHandler(); } + @Bean + @ConditionalOnMissingBean + public Gb32960MessageDecoder gb32960HistoryMessageDecoder() { + List parsers = List.of( + new VehicleV2016BlockParser(), + new DriveMotorV2016BlockParser(), + new FuelCellV2016BlockParser(), + new EngineV2016BlockParser(), + new PositionV2016BlockParser(), + new ExtremeValueV2016BlockParser(), + new AlarmV2016BlockParser(), + new VoltageV2016BlockParser(), + new TemperatureV2016BlockParser(), + new VehicleV2025BlockParser(), + new DriveMotorV2025BlockParser(), + new FuelCellV2025BlockParser(), + new EngineV2025BlockParser(), + new PositionV2025BlockParser(), + new AlarmV2025BlockParser(), + new MinParallelVoltageV2025BlockParser(), + new BatteryTemperatureV2025BlockParser(), + new FuelCellStackV2025BlockParser(), + new SuperCapacitorV2025BlockParser(), + new SuperCapacitorExtremeV2025BlockParser()); + Gb32960BodyParser bodyParser = new Gb32960BodyParser(new InfoBlockParserRegistry(parsers)); + return new Gb32960MessageDecoder(bodyParser, new Gb32960CommandParser()); + } + @Bean @ConditionalOnBean(Gb32960MessageDecoder.class) @ConditionalOnMissingBean diff --git a/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfigurationTest.java b/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfigurationTest.java index 7d3377fd..b0905dce 100644 --- a/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfigurationTest.java +++ b/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfigurationTest.java @@ -41,7 +41,8 @@ class EventHistoryAutoConfigurationTest { .containsOnlyKeys( "eventHistoryEnvelopeConsumerProcessor", "eventHistoryRawEnvelopeConsumerProcessor"); - assertThat(context).doesNotHaveBean(Gb32960DecodedFrameService.class); + assertThat(context).hasSingleBean(Gb32960MessageDecoder.class); + assertThat(context).hasSingleBean(Gb32960DecodedFrameService.class); assertThat(context).doesNotHaveBean(Gb32960FrameController.class); }); }