8 changed files with 155 additions and 10 deletions
-
30src/main/java/com/qyft/ms/app/controller/TestController.java
-
16src/main/java/com/qyft/ms/app/core/event/VirtualDeviceCmdResponseEvent.java
-
12src/main/java/com/qyft/ms/app/core/listener/DeviceInitializerListener.java
-
20src/main/java/com/qyft/ms/app/core/listener/VirtualDeviceCmdResponseEventListener.java
-
7src/main/java/com/qyft/ms/app/device/status/DeviceStatus.java
-
13src/main/java/com/qyft/ms/app/service/TestService.java
-
48src/main/java/com/qyft/ms/app/service/VirtualDeviceService.java
-
19src/main/java/com/qyft/ms/system/service/device/DeviceCommandService.java
@ -0,0 +1,30 @@ |
|||
package com.qyft.ms.app.controller; |
|||
|
|||
import com.qyft.ms.app.device.status.DeviceStatus; |
|||
import com.qyft.ms.system.common.result.Result; |
|||
import io.swagger.v3.oas.annotations.Operation; |
|||
import io.swagger.v3.oas.annotations.tags.Tag; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.web.bind.annotation.PostMapping; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
/** |
|||
* 测试用 |
|||
*/ |
|||
@Tag(name = "测试用") |
|||
@RestController |
|||
@RequestMapping("/api/test") |
|||
@RequiredArgsConstructor |
|||
@Slf4j |
|||
public class TestController { |
|||
private final DeviceStatus deviceStatus; |
|||
|
|||
@Operation(summary = "启动虚拟模式") |
|||
@PostMapping("/virtual") |
|||
public Result<?> changeVirtualMode() { |
|||
deviceStatus.setVirtual(true); |
|||
return Result.success(); |
|||
} |
|||
} |
@ -0,0 +1,16 @@ |
|||
package com.qyft.ms.app.core.event; |
|||
|
|||
import com.qyft.ms.system.model.bo.DeviceCommand; |
|||
import lombok.Getter; |
|||
import org.springframework.context.ApplicationEvent; |
|||
|
|||
@Getter |
|||
public class VirtualDeviceCmdResponseEvent extends ApplicationEvent { |
|||
private final DeviceCommand cmdToDevice; |
|||
|
|||
public VirtualDeviceCmdResponseEvent(Object source, DeviceCommand cmdToDevice) { |
|||
super(source); |
|||
this.cmdToDevice = cmdToDevice; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,20 @@ |
|||
package com.qyft.ms.app.core.listener; |
|||
|
|||
import com.qyft.ms.app.core.event.VirtualDeviceCmdResponseEvent; |
|||
import com.qyft.ms.app.service.VirtualDeviceService; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.context.event.EventListener; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
public class VirtualDeviceCmdResponseEventListener { |
|||
private final VirtualDeviceService virtualDeviceService; |
|||
|
|||
@EventListener |
|||
public void handleDeviceTcpMessageEvent(VirtualDeviceCmdResponseEvent event) { |
|||
virtualDeviceService.completeCommandResponse(event.getCmdToDevice()); |
|||
} |
|||
} |
@ -0,0 +1,13 @@ |
|||
package com.qyft.ms.app.service; |
|||
|
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 测试用 |
|||
*/ |
|||
@Service |
|||
@RequiredArgsConstructor |
|||
public class TestService { |
|||
|
|||
} |
@ -0,0 +1,48 @@ |
|||
package com.qyft.ms.app.service; |
|||
|
|||
import cn.hutool.json.JSONObject; |
|||
import com.qyft.ms.system.model.bo.DeviceCommand; |
|||
import com.qyft.ms.system.service.device.DeviceCommandService; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* 虚拟设备服务 |
|||
*/ |
|||
@Service |
|||
@RequiredArgsConstructor |
|||
public class VirtualDeviceService { |
|||
private final DeviceCommandService deviceCommandService; |
|||
|
|||
public void completeCommandResponse(DeviceCommand cmdToDevice) { |
|||
new Thread(() -> { |
|||
try { |
|||
JSONObject jsonObject = new JSONObject(); |
|||
jsonObject.putOnce("cmdId", cmdToDevice.getCmdId()); |
|||
jsonObject.putOnce("success", true); |
|||
|
|||
String code = cmdToDevice.getCmdCode(); |
|||
String action = cmdToDevice.getAction(); |
|||
String device = cmdToDevice.getDevice(); |
|||
if (code.contains("controlMotorCmd")) { |
|||
if (!action.contains("set")) {//非设置电机参数,也就是电机移动 |
|||
Thread.sleep(300); |
|||
} |
|||
} else if (code.contains("getInfoCmd")) { |
|||
if (device.contains("humidity")) { |
|||
if (action.contains("get")) {//获取温度 |
|||
JSONObject data = new JSONObject(); |
|||
data.putOnce("humidity", 26); |
|||
jsonObject.putOnce("data", data); |
|||
} |
|||
} |
|||
} |
|||
deviceCommandService.completeCommandResponse(jsonObject); |
|||
} catch (InterruptedException e) { |
|||
// 处理中断异常 |
|||
Thread.currentThread().interrupt(); |
|||
} |
|||
}).start(); |
|||
} |
|||
|
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue