From 0a46f1b1bee0bd5a2cdb3d5de0a8d4f5c295532e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Tue, 29 Jul 2025 11:29:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=88=9D=E5=A7=8B=E5=8C=96=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iflytop/handacid/app/core/state/ChannelState.java | 5 +++++ .../iflytop/handacid/app/core/state/DeviceState.java | 3 ++- .../iflytop/handacid/app/model/bo/ChannelSolution.java | 10 ++++++++-- .../iflytop/handacid/app/service/DeviceInitService.java | 17 +++++++++++++++++ .../iflytop/handacid/common/model/entity/Channel.java | 2 +- 5 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/iflytop/handacid/app/core/state/ChannelState.java b/src/main/java/com/iflytop/handacid/app/core/state/ChannelState.java index 4ed2fb9..37621d8 100644 --- a/src/main/java/com/iflytop/handacid/app/core/state/ChannelState.java +++ b/src/main/java/com/iflytop/handacid/app/core/state/ChannelState.java @@ -29,4 +29,9 @@ public class ChannelState { @Schema(description = "通道配置的溶液") private ChannelSolution solution; + public ChannelState(ChannelCode channelCode, Double remainingVolume, ChannelSolution solution) { + this.channelCode = channelCode; + this.remainingVolume = remainingVolume; + this.solution = solution; + } } diff --git a/src/main/java/com/iflytop/handacid/app/core/state/DeviceState.java b/src/main/java/com/iflytop/handacid/app/core/state/DeviceState.java index e78465e..113633d 100644 --- a/src/main/java/com/iflytop/handacid/app/core/state/DeviceState.java +++ b/src/main/java/com/iflytop/handacid/app/core/state/DeviceState.java @@ -1,6 +1,7 @@ package com.iflytop.handacid.app.core.state; import cn.hutool.json.JSONObject; +import com.iflytop.handacid.app.common.enums.ChannelCode; import com.iflytop.handacid.common.model.entity.User; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -15,7 +16,7 @@ import java.util.Map; @Component public class DeviceState { @Schema(description = "通道状态") - private final Map channelStateMap = new HashMap<>(); + private final Map channelStateMap = new HashMap<>(); @Schema(description = "虚拟模式,true为虚拟") private volatile boolean virtual = false; diff --git a/src/main/java/com/iflytop/handacid/app/model/bo/ChannelSolution.java b/src/main/java/com/iflytop/handacid/app/model/bo/ChannelSolution.java index fe74982..0b03b9a 100644 --- a/src/main/java/com/iflytop/handacid/app/model/bo/ChannelSolution.java +++ b/src/main/java/com/iflytop/handacid/app/model/bo/ChannelSolution.java @@ -6,11 +6,17 @@ import lombok.Data; @Data public class ChannelSolution { - private Long id; + private Long solutionId; @Schema(description = "溶液名称") - private String name; + private String solutionName; @Schema(description = "溶液浓度") private String concentration; + + public ChannelSolution(Long solutionId, String solutionName, String concentration) { + this.solutionId = solutionId; + this.solutionName = solutionName; + this.concentration = concentration; + } } diff --git a/src/main/java/com/iflytop/handacid/app/service/DeviceInitService.java b/src/main/java/com/iflytop/handacid/app/service/DeviceInitService.java index b4e4a25..f31e208 100644 --- a/src/main/java/com/iflytop/handacid/app/service/DeviceInitService.java +++ b/src/main/java/com/iflytop/handacid/app/service/DeviceInitService.java @@ -1,12 +1,19 @@ package com.iflytop.handacid.app.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.iflytop.handacid.app.common.enums.ChannelCode; +import com.iflytop.handacid.app.core.state.ChannelState; import com.iflytop.handacid.app.core.state.DeviceState; +import com.iflytop.handacid.app.model.bo.ChannelSolution; +import com.iflytop.handacid.common.model.entity.Channel; +import com.iflytop.handacid.common.service.ChannelService; import com.iflytop.handacid.hardware.service.AppEventBusService; import com.iflytop.handacid.hardware.type.appevent.A8kCanBusOnConnectEvent; import com.iflytop.handacid.hardware.type.appevent.AppEvent; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.stereotype.Service; @Slf4j @@ -16,6 +23,8 @@ public class DeviceInitService { private final AppEventBusService eventBus; private boolean isLink = false; private final DeviceState deviceState; + private final ObjectProvider channelStateObjectProvider; + private final ChannelService channelService; @PostConstruct public void init() { @@ -39,8 +48,16 @@ public class DeviceInitService { } } + public void initDeviceState() { log.info("初始化 initDeviceState"); + for (ChannelCode code : ChannelCode.values()) { + //初始化通道 + Channel channel = channelService.getOne(new LambdaQueryWrapper<>(new Channel()).eq(Channel::getCode, code)); + ChannelSolution channelSolution = new ChannelSolution(channel.getSolutionId(), channel.getSolutionName(), channel.getConcentration()); + ChannelState channelState = channelStateObjectProvider.getObject(code, channel.getVolume(), channelSolution); + deviceState.getChannelStateMap().put(code, channelState); + } log.info("初始化 initDeviceState完毕"); } diff --git a/src/main/java/com/iflytop/handacid/common/model/entity/Channel.java b/src/main/java/com/iflytop/handacid/common/model/entity/Channel.java index 64f7de8..f8eaf63 100644 --- a/src/main/java/com/iflytop/handacid/common/model/entity/Channel.java +++ b/src/main/java/com/iflytop/handacid/common/model/entity/Channel.java @@ -17,7 +17,7 @@ public class Channel extends BaseEntity { @Schema(description = "酸液ID") private Long solutionId; @Schema(description = "酸液名称") - private Long solutionName; + private String solutionName; @Schema(description = "酸液浓度") private String concentration; @Schema(description = "通道code")