Browse Source

增加加液日志的推送

master
王梦远 1 week ago
parent
commit
9de7e12682
  1. 3
      src/main/java/com/iflytop/colortitration/app/command/control/solution/ShakeStartCommand.java
  2. 13
      src/main/java/com/iflytop/colortitration/app/command/control/solution/SolutionAddCommand.java
  3. 4
      src/main/java/com/iflytop/colortitration/app/websocket/server/WebSocketMessageType.java
  4. 13
      src/main/java/com/iflytop/colortitration/app/websocket/server/WebSocketSender.java

3
src/main/java/com/iflytop/colortitration/app/command/control/solution/ShakeStartCommand.java

@ -5,6 +5,7 @@ import com.iflytop.colortitration.app.common.enums.MultipleModuleCode;
import com.iflytop.colortitration.app.core.command.BaseCommandHandler;
import com.iflytop.colortitration.app.model.dto.CommandDTO;
import com.iflytop.colortitration.app.service.module.TitrationModuleService;
import com.iflytop.colortitration.app.websocket.server.WebSocketSender;
import com.iflytop.colortitration.common.exception.AppException;
import com.iflytop.colortitration.common.result.ResultCode;
import lombok.RequiredArgsConstructor;
@ -23,6 +24,7 @@ import java.util.concurrent.CompletableFuture;
@CommandMapping("shake_start")
public class ShakeStartCommand extends BaseCommandHandler {
private final TitrationModuleService titrationModuleService;
private final WebSocketSender webSocketSender;
@Override
public CompletableFuture<Void> handle(CommandDTO commandDTO) {
@ -34,6 +36,7 @@ public class ShakeStartCommand extends BaseCommandHandler {
}
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(motorCode);
return runAsync(() -> {
webSocketSender.pushLog(titrationModuleCode.name(), "摇匀:", time + "秒");
titrationModuleService.shakeStart(titrationModuleCode, speed, time);
});
}

13
src/main/java/com/iflytop/colortitration/app/command/control/solution/SolutionAddCommand.java

@ -5,8 +5,11 @@ import com.iflytop.colortitration.app.common.enums.MultipleModuleCode;
import com.iflytop.colortitration.app.core.command.BaseCommandHandler;
import com.iflytop.colortitration.app.model.dto.CommandDTO;
import com.iflytop.colortitration.app.service.module.TitrationModuleService;
import com.iflytop.colortitration.app.websocket.server.WebSocketSender;
import com.iflytop.colortitration.common.exception.AppException;
import com.iflytop.colortitration.common.model.entity.Solutions;
import com.iflytop.colortitration.common.result.ResultCode;
import com.iflytop.colortitration.common.service.SolutionsService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -23,23 +26,23 @@ import java.util.concurrent.CompletableFuture;
@CommandMapping("solution_add_start")
public class SolutionAddCommand extends BaseCommandHandler {
private final TitrationModuleService titrationModuleService;
private final WebSocketSender webSocketSender;
private final SolutionsService solutionService;
@Override
public CompletableFuture<Void> handle(CommandDTO commandDTO) {
String moduleCodeStr = commandDTO.getStringParam("titrationModuleCode");
Long solutionId = commandDTO.getLongParam("solutionId");
Solutions solution = solutionService.getById(solutionId);
Double volume = commandDTO.getDoubleParam("volume");
String type = commandDTO.getStringParam("type");
if (type.equals("drop")) {
volume = 0.5;
}
if (StringUtils.isEmpty(moduleCodeStr) || solutionId == null || StringUtils.isEmpty(type)) {
if (StringUtils.isEmpty(moduleCodeStr) || solutionId == null) {
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失
}
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(moduleCodeStr);
Double finalVolume = volume;
return runAsync(() -> {
//移动滴定电机到滴定位
webSocketSender.pushLog(titrationModuleCode.name(), "加液:", solution.getName() + " " + finalVolume + "ml");
titrationModuleService.titrationMotorMoveToSolution(titrationModuleCode);
titrationModuleService.addSolutionStart(titrationModuleCode, solutionId, finalVolume);
});

4
src/main/java/com/iflytop/colortitration/app/websocket/server/WebSocketMessageType.java

@ -10,6 +10,10 @@ public class WebSocketMessageType {
*/
public static final String ALARM = "alarm";
/**
* 滴定日志
*/
public static final String LOG = "log";
/**
* 自检移动电机测试
*/
public static final String SELF_MOVE_TEST = "self_move_test";

13
src/main/java/com/iflytop/colortitration/app/websocket/server/WebSocketSender.java

@ -2,9 +2,12 @@ package com.iflytop.colortitration.app.websocket.server;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Slf4j
@Component
@ -27,6 +30,16 @@ public class WebSocketSender {
push(WebSocketMessageType.CMD_DEBUG, data);
}
public void pushLog(String code, String type, String content) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDate = LocalDateTime.now().format(formatter);
WebsocketResult websocketResult = new WebsocketResult();
websocketResult.setType(WebSocketMessageType.LOG);
websocketResult.setData(formattedDate + "模块" + StringUtils.substring(code, code.length() - 1) + type + content);
websocketResult.setTimestamp(Instant.now().toEpochMilli());
WebSocketServer.sendMessageToClients(JSONUtil.toJsonStr(websocketResult));
}
public void pushCMDResponse(Object data) {
push(WebSocketMessageType.CMD_RESPONSE, data);
}

Loading…
Cancel
Save