Browse Source

fix:工艺状态返回更多信息

tags/freeze
白凤吉 3 months ago
parent
commit
691a6fc4ec
  1. 1
      src/main/java/com/iflytop/gd/app/controller/CraftsController.java
  2. 5
      src/main/java/com/iflytop/gd/app/core/CraftsContext.java
  3. 12
      src/main/java/com/iflytop/gd/app/mapper/DeviceParamConfigMapper.java
  4. 28
      src/main/java/com/iflytop/gd/app/model/entity/DeviceParamConfig.java
  5. 9
      src/main/java/com/iflytop/gd/app/model/vo/CraftStatusVO.java
  6. 7
      src/main/java/com/iflytop/gd/app/service/CraftsService.java
  7. 16
      src/main/java/com/iflytop/gd/app/service/DeviceParamConfigService.java
  8. 11
      src/main/java/com/iflytop/gd/infrastructure/config/WebSocketServer.java
  9. 10
      src/main/resources/sql/init.sql

1
src/main/java/com/iflytop/gd/app/controller/CraftsController.java

@ -2,7 +2,6 @@ package com.iflytop.gd.app.controller;
import com.iflytop.gd.app.model.dto.*;
import com.iflytop.gd.app.model.entity.Crafts;
import com.iflytop.gd.app.model.vo.CraftStatusVO;
import com.iflytop.gd.app.model.vo.SetCraftsVO;
import com.iflytop.gd.app.service.CraftsService;
import com.iflytop.gd.common.result.Result;

5
src/main/java/com/iflytop/gd/app/core/CraftsContext.java

@ -5,6 +5,7 @@ import com.iflytop.gd.app.common.enums.CraftEvents;
import com.iflytop.gd.app.common.enums.CraftStates;
import com.iflytop.gd.app.model.bo.CraftsStep;
import com.iflytop.gd.app.model.entity.Crafts;
import com.iflytop.gd.app.model.entity.Ores;
import com.iflytop.gd.app.service.CraftsStepService;
import com.iflytop.gd.app.service.WebSocketService;
import com.iflytop.gd.common.constant.WebSocketMessageType;
@ -24,6 +25,7 @@ import java.util.Map;
@Getter
public class CraftsContext implements Runnable {
private final String heatId;
private final Ores ores;
private final Crafts craft;
private final List<CraftsStep> craftsStepList;
private final StateMachine<CraftStates, CraftEvents> sm;
@ -34,12 +36,13 @@ public class CraftsContext implements Runnable {
/**
* 构造方法初始化上下文并启动状态机至 READY
*/
public CraftsContext(String heatId,
public CraftsContext(String heatId, Ores ores,
Crafts craft,
StateMachineFactory<CraftStates, CraftEvents> factory,
WebSocketService ws,
CraftsStepService craftsStepService) {
this.heatId = heatId;
this.ores = ores;
this.craft = craft;
this.craftsStepList = JSONUtil.parseArray(craft.getSteps()).toList(CraftsStep.class);
this.ws = ws;

12
src/main/java/com/iflytop/gd/app/mapper/DeviceParamConfigMapper.java

@ -0,0 +1,12 @@
package com.iflytop.gd.app.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.iflytop.gd.app.model.entity.DeviceParamConfig;
import org.apache.ibatis.annotations.Mapper;
/**
* 设备参数配置持久层接口
*/
@Mapper
public interface DeviceParamConfigMapper extends BaseMapper<DeviceParamConfig> {
}

28
src/main/java/com/iflytop/gd/app/model/entity/DeviceParamConfig.java

@ -0,0 +1,28 @@
package com.iflytop.gd.app.model.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iflytop.gd.infrastructure.repository.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Schema(description = "设备参数配置")
@TableName("device_param_config")
@Data
public class DeviceParamConfig extends BaseEntity {
@NotNull
@Schema(description = "模块标识")
private String mid;
@NotNull
@Schema(description = "寄存器索引")
private String regIndex;
@NotNull
@Schema(description = "寄存器值")
private Integer regVal;
}

9
src/main/java/com/iflytop/gd/app/model/vo/CraftStatusVO.java

@ -16,9 +16,18 @@ public class CraftStatusVO {
@Schema(description = "加热区 ID")
private String heatId;
@Schema(description = "矿石 ID")
private Long oresId;
@Schema(description = "矿石名称")
private String oresName;
@Schema(description = "工艺 ID")
private Long craftsId;
@Schema(description = "工艺名称")
private String craftsName;
@Schema(description = "当前状态")
private CraftStates state;

7
src/main/java/com/iflytop/gd/app/service/CraftsService.java

@ -62,6 +62,7 @@ public class CraftsService extends ServiceImpl<CraftsMapper, Crafts> {
Ores ores = oresService.getById(craft.getOresId());
CraftsContext ctx = new CraftsContext(
heatId,
ores,
craft,
stateMachineFactory,
webSocketService,
@ -146,7 +147,10 @@ public class CraftsService extends ServiceImpl<CraftsMapper, Crafts> {
}
CraftStatusVO vo = new CraftStatusVO();
vo.setHeatId(heatId);
vo.setOresId(ctx.getOres().getId());
vo.setOresName(ctx.getOres().getName());
vo.setCraftsId(ctx.getCraft().getId());
vo.setCraftsName(ctx.getCraft().getName());
vo.setState(ctx.getSm().getState().getId());
vo.setCurrentIndex(ctx.getCurrentIndex());
vo.setSteps(ctx.getCraftsStepList());
@ -162,7 +166,10 @@ public class CraftsService extends ServiceImpl<CraftsMapper, Crafts> {
CraftsContext ctx = entry.getValue();
CraftStatusVO vo = new CraftStatusVO();
vo.setHeatId(heatIdKey);
vo.setOresId(ctx.getOres().getId());
vo.setOresName(ctx.getOres().getName());
vo.setCraftsId(ctx.getCraft().getId());
vo.setCraftsName(ctx.getCraft().getName());
vo.setState(ctx.getSm().getState().getId());
vo.setCurrentIndex(ctx.getCurrentIndex());
vo.setSteps(ctx.getCraftsStepList());

16
src/main/java/com/iflytop/gd/app/service/DeviceParamConfigService.java

@ -0,0 +1,16 @@
package com.iflytop.gd.app.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iflytop.gd.app.mapper.DeviceParamConfigMapper;
import com.iflytop.gd.app.model.entity.DeviceParamConfig;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* 设备参数配置服务
*/
@Service
@RequiredArgsConstructor
public class DeviceParamConfigService extends ServiceImpl<DeviceParamConfigMapper, DeviceParamConfig> {
private final DeviceParamConfigMapper deviceParamConfigMapper;
}

11
src/main/java/com/iflytop/gd/infrastructure/config/WebSocketServer.java

@ -1,6 +1,5 @@
package com.iflytop.gd.infrastructure.config;
import jakarta.websocket.*;
import jakarta.websocket.server.ServerEndpoint;
import lombok.extern.slf4j.Slf4j;
@ -23,7 +22,7 @@ public class WebSocketServer {
try {
session.getBasicRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
log.error("发送给客户端失败 sessionId={}", session.getId(), e);
}
}
}
@ -32,18 +31,22 @@ public class WebSocketServer {
@OnOpen
public void onOpen(Session session) {
sessions.add(session);
log.info("新连接加入,sessionId={}", session.getId());
}
@OnMessage
public void onMessage(String message, Session session) {
log.info("收到消息 sessionId={},内容:{}", session.getId(), message);
}
@OnClose
public void onClose(Session session) {
sessions.remove(session); // 移除关闭连接的 Session
sessions.remove(session);
log.info("连接已关闭,sessionId={}", session.getId());
}
@OnError
public void onError(Throwable error) {
public void onError(Session session, Throwable error) {
log.error("发生错误,sessionId={}", session.getId(), error);
}
}

10
src/main/resources/sql/init.sql

@ -77,3 +77,13 @@ VALUES
(5, '过氧酸', '2025-02-18 02:46:35', '2025-02-18 02:46:35'),
(6, '磷酸', '2025-02-18 02:46:43', '2025-02-18 02:46:43'),
(7, '纯水', '2025-02-18 02:46:50', '2025-02-18 02:46:50');
-- 设备参数配置表
CREATE TABLE IF NOT EXISTS device_param_config (
id INTEGER PRIMARY KEY AUTOINCREMENT,
mid TEXT,
reg_index TEXT,
reg_val INTEGER,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Loading…
Cancel
Save