17 changed files with 223 additions and 197 deletions
-
2src/main/java/com/iflytop/handacid/HandAcidApplication.java
-
2src/main/java/com/iflytop/handacid/app/command/control/SolutionAddStartCommand.java
-
31src/main/java/com/iflytop/handacid/app/controller/FormulationController.java
-
45src/main/java/com/iflytop/handacid/app/controller/SystemConfigController.java
-
18src/main/java/com/iflytop/handacid/app/core/listener/BleGamepadEventListener.java
-
3src/main/java/com/iflytop/handacid/app/core/state/ChannelState.java
-
12src/main/java/com/iflytop/handacid/app/model/dto/ChannelSetDTO.java
-
41src/main/java/com/iflytop/handacid/app/websocket/client/BleGamepadDriverConfig.java
-
61src/main/java/com/iflytop/handacid/app/websocket/client/SocketClient.java
-
8src/main/java/com/iflytop/handacid/common/enums/SystemConfigType.java
-
7src/main/java/com/iflytop/handacid/common/mapper/FormulationMapper.java
-
30src/main/java/com/iflytop/handacid/common/mapper/FormulationMapper.xml
-
8src/main/java/com/iflytop/handacid/common/model/entity/Formulation.java
-
33src/main/java/com/iflytop/handacid/common/model/vo/FormulationVO.java
-
16src/main/java/com/iflytop/handacid/common/service/FormulationService.java
-
5src/main/resources/sql/init.sql
@ -0,0 +1,12 @@ |
|||
package com.iflytop.handacid.app.model.dto; |
|||
|
|||
import com.iflytop.handacid.app.common.enums.ChannelCode; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class ChannelSetDTO { |
|||
private int[] values; |
|||
private ChannelCode channel; |
|||
|
|||
|
|||
} |
@ -1,41 +0,0 @@ |
|||
package com.iflytop.handacid.app.websocket.client; |
|||
|
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.beans.factory.annotation.Value; |
|||
import org.springframework.context.annotation.Bean; |
|||
import org.springframework.context.annotation.Configuration; |
|||
|
|||
import java.net.URI; |
|||
|
|||
@Slf4j |
|||
@Configuration |
|||
@RequiredArgsConstructor |
|||
public class BleGamepadDriverConfig { |
|||
|
|||
@Value("${iflytophald.ip}") |
|||
String ip; |
|||
@Value("${iflytophald.datach.port}") |
|||
Integer port; |
|||
|
|||
|
|||
@Bean |
|||
SocketClient clientService() { |
|||
URI uri = URI.create(String.format("ws://%s:%d/%s", ip, port, "key")); |
|||
return new SocketClient(uri, s -> { |
|||
|
|||
//蓝牙手柄 加酸按钮 按下 |
|||
//蓝牙手柄 预充按钮 按下 |
|||
//蓝牙手柄 连接成功 |
|||
//蓝牙手柄 连接断开 |
|||
if (s.get("event").equals("press")) { |
|||
|
|||
|
|||
} else if (s.get("event").equals("release")) { |
|||
|
|||
log.info("解除急停{}", s); |
|||
} |
|||
}); |
|||
|
|||
} |
|||
} |
@ -1,61 +0,0 @@ |
|||
package com.iflytop.handacid.app.websocket.client; |
|||
|
|||
import cn.hutool.json.JSONObject; |
|||
import cn.hutool.json.JSONUtil; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.java_websocket.client.WebSocketClient; |
|||
import org.java_websocket.enums.ReadyState; |
|||
import org.java_websocket.handshake.ServerHandshake; |
|||
import org.springframework.scheduling.annotation.Scheduled; |
|||
|
|||
import java.net.URI; |
|||
import java.util.function.Consumer; |
|||
|
|||
/** |
|||
* WebsocketClient |
|||
*/ |
|||
@Slf4j |
|||
public class SocketClient extends WebSocketClient { |
|||
private Consumer<JSONObject> consumer; |
|||
|
|||
public SocketClient(URI serverUri, Consumer<JSONObject> consumer) { |
|||
super(serverUri); |
|||
this.consumer = consumer; |
|||
} |
|||
|
|||
@Override |
|||
public void onOpen(ServerHandshake handshakedata) { |
|||
log.info("device_status_listener_websocket connect success"); |
|||
} |
|||
|
|||
@Override |
|||
public void onMessage(String message) { |
|||
JSONObject jsonObject = JSONUtil.parseObj(message); |
|||
consumer.accept(jsonObject); |
|||
} |
|||
|
|||
@Override |
|||
public void onClose(int code, String reason, boolean remote) { |
|||
log.info("device_status_listener_websocket lost connection..."); |
|||
} |
|||
|
|||
@Override |
|||
public void onError(Exception ex) { |
|||
log.info("device_status_listener_websocket on error"); |
|||
} |
|||
|
|||
//失去连接后重新连接 10s轮询 |
|||
@Scheduled(fixedRate = 10000) |
|||
private void autoConnect() { |
|||
if (!isOpen()) { |
|||
if (getReadyState().equals(ReadyState.NOT_YET_CONNECTED)) { |
|||
try { |
|||
connect(); |
|||
} catch (IllegalStateException ignored) { |
|||
} |
|||
} else if (getReadyState().equals(ReadyState.CLOSED)) { |
|||
reconnect(); |
|||
} |
|||
} |
|||
} |
|||
} |
@ -1,11 +1,16 @@ |
|||
package com.iflytop.handacid.common.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.iflytop.handacid.common.model.entity.Formulation; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import com.iflytop.handacid.common.model.vo.FormulationVO; |
|||
import org.apache.ibatis.annotations.*; |
|||
|
|||
|
|||
/** |
|||
* 配方持久层接口 |
|||
*/ |
|||
@Mapper |
|||
public interface FormulationMapper extends BaseMapper<Formulation> { |
|||
IPage<FormulationVO> selectPageVo(IPage<Formulation> page); |
|||
} |
@ -0,0 +1,30 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.iflytop.handacid.common.mapper.FormulationMapper"> |
|||
|
|||
<!-- 结果映射定义 --> |
|||
<resultMap id="FormulationVoMap" type="com.iflytop.handacid.common.model.vo.FormulationVO"> |
|||
<id column="id" property="id"/> |
|||
<result column="volume" property="volume"/> |
|||
<result column="revolutions" property="revolutions"/> |
|||
<result column="solution_id" property="solutionId"/> |
|||
<result column="solution_name" property="solutionName"/> |
|||
<result column="concentration" property="concentration"/> |
|||
<result column="scale" property="scale"/> |
|||
<result column="create_time" property="createTime"/> |
|||
<result column="update_time" property="updateTime"/> |
|||
<!-- 其他字段映射... --> |
|||
</resultMap> |
|||
|
|||
<!-- 分页查询 --> |
|||
<select id="selectPageVo" resultMap="FormulationVoMap"> |
|||
SELECT f.*, |
|||
s.name AS solution_name, |
|||
s.concentration AS concentration, |
|||
s.scale AS scale |
|||
FROM formulation f |
|||
LEFT JOIN solution s ON f.solution_id = s.id |
|||
<!-- 自动分页由MyBatis-Plus插件处理 --> |
|||
</select> |
|||
|
|||
</mapper> |
@ -0,0 +1,33 @@ |
|||
package com.iflytop.handacid.common.model.vo; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import com.iflytop.handacid.common.base.BaseEntity; |
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
@TableName("formulation") |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@Schema(description = "配方") |
|||
public class FormulationVO extends BaseEntity { |
|||
@NotNull |
|||
@Schema(description = "用量") |
|||
private Double volume; |
|||
@NotNull |
|||
@Schema(description = "酸液ID") |
|||
private Long solutionId; |
|||
|
|||
@Schema(description = "转数") |
|||
private Double revolutions; |
|||
|
|||
@Schema(description = "酸液名称") |
|||
private String solutionName; |
|||
|
|||
@Schema(description = "浓度") |
|||
private String concentration; |
|||
|
|||
@Schema(description = "系数") |
|||
private Double scale; |
|||
} |
@ -1,14 +1,30 @@ |
|||
package com.iflytop.handacid.common.service; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import com.iflytop.handacid.common.base.BasePageQuery; |
|||
import com.iflytop.handacid.common.mapper.FormulationMapper; |
|||
import com.iflytop.handacid.common.model.entity.Formulation; |
|||
import com.iflytop.handacid.common.model.vo.FormulationVO; |
|||
import com.iflytop.handacid.common.result.PageResult; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 配方接口服务 |
|||
*/ |
|||
@Service |
|||
@RequiredArgsConstructor |
|||
public class FormulationService extends ServiceImpl<FormulationMapper, Formulation> { |
|||
private final FormulationMapper formulationMapper; |
|||
public IPage<FormulationVO> selectPageVo(BasePageQuery query) { |
|||
IPage<Formulation> page = new Page<>(); |
|||
page.setSize(query.getPageSize()); |
|||
page.setCurrent(query.getPageNum()); |
|||
return formulationMapper.selectPageVo(page); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue