13 changed files with 408 additions and 49 deletions
-
BINmatrix-spray.db
-
13sql/init.sql
-
119src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java
-
59src/main/java/com/qyft/ms/app/handler/impl/MotorXToHome.java
-
59src/main/java/com/qyft/ms/app/handler/impl/MotorYToHome.java
-
59src/main/java/com/qyft/ms/app/handler/impl/MotorZToHome.java
-
6src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java
-
8src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelineWash.java
-
36src/main/java/com/qyft/ms/app/handler/impl/SlideTrayIn.java
-
34src/main/java/com/qyft/ms/app/handler/impl/SlideTrayOut.java
-
16src/main/java/com/qyft/ms/app/model/entity/Position.java
-
2src/main/resources/application.yml
@ -0,0 +1,59 @@ |
|||||
|
package com.qyft.ms.app.handler.impl; |
||||
|
|
||||
|
import cn.hutool.json.JSONObject; |
||||
|
import cn.hutool.json.JSONUtil; |
||||
|
import com.qyft.ms.app.common.annotation.CommandMapping; |
||||
|
import com.qyft.ms.app.common.command.CommandFuture; |
||||
|
import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance; |
||||
|
import com.qyft.ms.app.common.command.DeviceCommandGenerator; |
||||
|
import com.qyft.ms.app.common.command.FrontCommandAck; |
||||
|
import com.qyft.ms.app.common.constant.CommandStatus; |
||||
|
import com.qyft.ms.app.handler.CommandHandler; |
||||
|
import com.qyft.ms.app.model.bo.CMDToDevice; |
||||
|
import com.qyft.ms.app.model.form.CMDFormV2; |
||||
|
import com.qyft.ms.device.client.TcpClient; |
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.http.MediaType; |
||||
|
import org.springframework.scheduling.annotation.Async; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; |
||||
|
|
||||
|
/** |
||||
|
* x轴回原点 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Component |
||||
|
@RequiredArgsConstructor |
||||
|
@Async("asyncExecutor") |
||||
|
@CommandMapping("motor_x_to_home")//业务指令注解 |
||||
|
public class MotorXToHome implements CommandHandler { |
||||
|
private final TcpClient deviceClient; |
||||
|
|
||||
|
@Override |
||||
|
public void handle(CMDFormV2 cmdForm, ResponseBodyEmitter emitter) throws Exception { |
||||
|
String frontCmdId = cmdForm.getCmdId(); |
||||
|
String frontCmdName = cmdForm.getCmdName(); |
||||
|
//向前端发送接收到指令 |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON); |
||||
|
CMDToDevice motorXToHomeCmdToDevice = DeviceCommandGenerator.motor_x_to_home();//生成指令 回原点 |
||||
|
|
||||
|
CommandFuture motorXToHomeCmdToDeviceFuture = new CommandFuture(); |
||||
|
motorXToHomeCmdToDeviceFuture.setCmdToDevice(motorXToHomeCmdToDevice); |
||||
|
Integer toDeviceCmdId = motorXToHomeCmdToDevice.getCmdId(); |
||||
|
CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, motorXToHomeCmdToDeviceFuture);//将指令放入map |
||||
|
deviceClient.sendToJSON(motorXToHomeCmdToDevice); //发送指令给设备 |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了x轴回原点指令:" + JSONUtil.toJsonStr(motorXToHomeCmdToDevice)), MediaType.APPLICATION_JSON); |
||||
|
|
||||
|
motorXToHomeCmdToDeviceFuture.waitForContinue();//等待设备的反馈 |
||||
|
|
||||
|
JSONObject deviceResult = motorXToHomeCmdToDeviceFuture.getCallbackResult();//拿到设备返回结果 |
||||
|
CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除 |
||||
|
|
||||
|
if (motorXToHomeCmdToDeviceFuture.isReceived()) { |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "x轴回原点指令设备反馈:" + JSONUtil.toJsonStr(deviceResult)), MediaType.APPLICATION_JSON); |
||||
|
} else { |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "x轴回原点指令没有响应:" + JSONUtil.toJsonStr(deviceResult)), MediaType.APPLICATION_JSON); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,59 @@ |
|||||
|
package com.qyft.ms.app.handler.impl; |
||||
|
|
||||
|
import cn.hutool.json.JSONObject; |
||||
|
import cn.hutool.json.JSONUtil; |
||||
|
import com.qyft.ms.app.common.annotation.CommandMapping; |
||||
|
import com.qyft.ms.app.common.command.CommandFuture; |
||||
|
import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance; |
||||
|
import com.qyft.ms.app.common.command.DeviceCommandGenerator; |
||||
|
import com.qyft.ms.app.common.command.FrontCommandAck; |
||||
|
import com.qyft.ms.app.common.constant.CommandStatus; |
||||
|
import com.qyft.ms.app.handler.CommandHandler; |
||||
|
import com.qyft.ms.app.model.bo.CMDToDevice; |
||||
|
import com.qyft.ms.app.model.form.CMDFormV2; |
||||
|
import com.qyft.ms.device.client.TcpClient; |
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.http.MediaType; |
||||
|
import org.springframework.scheduling.annotation.Async; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; |
||||
|
|
||||
|
/** |
||||
|
* z轴回原点 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Component |
||||
|
@RequiredArgsConstructor |
||||
|
@Async("asyncExecutor") |
||||
|
@CommandMapping("motor_y_to_home")//业务指令注解 |
||||
|
public class MotorYToHome implements CommandHandler { |
||||
|
private final TcpClient deviceClient; |
||||
|
|
||||
|
@Override |
||||
|
public void handle(CMDFormV2 cmdForm, ResponseBodyEmitter emitter) throws Exception { |
||||
|
String frontCmdId = cmdForm.getCmdId(); |
||||
|
String frontCmdName = cmdForm.getCmdName(); |
||||
|
//向前端发送接收到指令 |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON); |
||||
|
CMDToDevice motorYToHomeCmdToDevice = DeviceCommandGenerator.motor_y_to_home();//生成指令 回原点 |
||||
|
|
||||
|
CommandFuture motorYToHomeCmdToDeviceFuture = new CommandFuture(); |
||||
|
motorYToHomeCmdToDeviceFuture.setCmdToDevice(motorYToHomeCmdToDevice); |
||||
|
Integer toDeviceCmdId = motorYToHomeCmdToDevice.getCmdId(); |
||||
|
CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, motorYToHomeCmdToDeviceFuture);//将指令放入map |
||||
|
deviceClient.sendToJSON(motorYToHomeCmdToDevice); //发送指令给设备 |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了y轴回原点指令:" + JSONUtil.toJsonStr(motorYToHomeCmdToDevice)), MediaType.APPLICATION_JSON); |
||||
|
|
||||
|
motorYToHomeCmdToDeviceFuture.waitForContinue();//等待设备的反馈 |
||||
|
|
||||
|
JSONObject deviceResult = motorYToHomeCmdToDeviceFuture.getCallbackResult();//拿到设备返回结果 |
||||
|
CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除 |
||||
|
|
||||
|
if (motorYToHomeCmdToDeviceFuture.isReceived()) { |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "y轴回原点指令设备反馈:" + JSONUtil.toJsonStr(deviceResult)), MediaType.APPLICATION_JSON); |
||||
|
} else { |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "y轴回原点指令没有响应:" + JSONUtil.toJsonStr(deviceResult)), MediaType.APPLICATION_JSON); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,59 @@ |
|||||
|
package com.qyft.ms.app.handler.impl; |
||||
|
|
||||
|
import cn.hutool.json.JSONObject; |
||||
|
import cn.hutool.json.JSONUtil; |
||||
|
import com.qyft.ms.app.common.annotation.CommandMapping; |
||||
|
import com.qyft.ms.app.common.command.CommandFuture; |
||||
|
import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance; |
||||
|
import com.qyft.ms.app.common.command.DeviceCommandGenerator; |
||||
|
import com.qyft.ms.app.common.command.FrontCommandAck; |
||||
|
import com.qyft.ms.app.common.constant.CommandStatus; |
||||
|
import com.qyft.ms.app.handler.CommandHandler; |
||||
|
import com.qyft.ms.app.model.bo.CMDToDevice; |
||||
|
import com.qyft.ms.app.model.form.CMDFormV2; |
||||
|
import com.qyft.ms.device.client.TcpClient; |
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.http.MediaType; |
||||
|
import org.springframework.scheduling.annotation.Async; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; |
||||
|
|
||||
|
/** |
||||
|
* z轴回原点 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Component |
||||
|
@RequiredArgsConstructor |
||||
|
@Async("asyncExecutor") |
||||
|
@CommandMapping("motor_z_to_home")//业务指令注解 |
||||
|
public class MotorZToHome implements CommandHandler { |
||||
|
private final TcpClient deviceClient; |
||||
|
|
||||
|
@Override |
||||
|
public void handle(CMDFormV2 cmdForm, ResponseBodyEmitter emitter) throws Exception { |
||||
|
String frontCmdId = cmdForm.getCmdId(); |
||||
|
String frontCmdName = cmdForm.getCmdName(); |
||||
|
//向前端发送接收到指令 |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON); |
||||
|
CMDToDevice motorZToHomeCmdToDevice = DeviceCommandGenerator.motor_z_to_home();//生成指令 回原点 |
||||
|
|
||||
|
CommandFuture motorZToHomeCmdToDeviceFuture = new CommandFuture(); |
||||
|
motorZToHomeCmdToDeviceFuture.setCmdToDevice(motorZToHomeCmdToDevice); |
||||
|
Integer toDeviceCmdId = motorZToHomeCmdToDevice.getCmdId(); |
||||
|
CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, motorZToHomeCmdToDeviceFuture);//将指令放入map |
||||
|
deviceClient.sendToJSON(motorZToHomeCmdToDevice); //发送指令给设备 |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了z轴回原点指令:" + JSONUtil.toJsonStr(motorZToHomeCmdToDevice)), MediaType.APPLICATION_JSON); |
||||
|
|
||||
|
motorZToHomeCmdToDeviceFuture.waitForContinue();//等待设备的反馈 |
||||
|
|
||||
|
JSONObject deviceResult = motorZToHomeCmdToDeviceFuture.getCallbackResult();//拿到设备返回结果 |
||||
|
CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除 |
||||
|
|
||||
|
if (motorZToHomeCmdToDeviceFuture.isReceived()) { |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "z轴回原点指令设备反馈:" + JSONUtil.toJsonStr(deviceResult)), MediaType.APPLICATION_JSON); |
||||
|
} else { |
||||
|
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "z轴回原点指令没有响应:" + JSONUtil.toJsonStr(deviceResult)), MediaType.APPLICATION_JSON); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
package com.qyft.ms.app.model.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import com.qyft.ms.system.common.base.BaseEntity; |
||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
@EqualsAndHashCode(callSuper = false) |
||||
|
@Schema(description = "位置信息") |
||||
|
@TableName("position") |
||||
|
@Data |
||||
|
public class Position extends BaseEntity { |
||||
|
|
||||
|
|
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue