Browse Source

feat:增加加液区托盘变化事件,处理用户放入托盘、取走托盘事件

master
白凤吉 5 months ago
parent
commit
37dd32294f
  1. 35
      src/main/java/com/qyft/gd/device/Listener/LiquidTrayStatusChangedListener.java
  2. 19
      src/main/java/com/qyft/gd/device/event/LiquidTrayStatusChangedEvent.java
  3. 2
      src/main/java/com/qyft/gd/device/model/bo/DeviceOperationalStatus.java
  4. 29
      src/main/java/com/qyft/gd/device/service/DeviceOperationalService.java
  5. 18
      src/main/java/com/qyft/gd/device/service/DeviceStatusService.java
  6. 9
      src/main/java/com/qyft/gd/system/config/AsyncConfig.java

35
src/main/java/com/qyft/gd/device/Listener/LiquidTrayStatusChangedListener.java

@ -0,0 +1,35 @@
package com.qyft.gd.device.Listener;
import com.qyft.gd.device.event.LiquidTrayStatusChangedEvent;
import com.qyft.gd.device.model.bo.DeviceStatus;
import com.qyft.gd.device.service.DeviceOperationalService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
@Slf4j
@Component
@RequiredArgsConstructor
public class LiquidTrayStatusChangedListener {
private final DeviceOperationalService deviceOperationalService;
@EventListener
@Async
public void handleDeviceStatusChanged(LiquidTrayStatusChangedEvent event) {
DeviceStatus deviceStatus = event.getDeviceStatus();
// 在这里处理设备状态变化的逻辑
if (deviceStatus.getDoorStatus()) {//开门
if (deviceStatus.getLiquidArea().getLiquidTray()) {
//放入了托盘
log.info("用户放入了托盘");
deviceOperationalService.putTray();
} else {
//取走了托盘
log.info("用户取走了托盘");
deviceOperationalService.removeTray();
}
}
}
}

19
src/main/java/com/qyft/gd/device/event/LiquidTrayStatusChangedEvent.java

@ -0,0 +1,19 @@
package com.qyft.gd.device.event;
import com.qyft.gd.device.model.bo.DeviceStatus;
import lombok.Getter;
import org.springframework.context.ApplicationEvent;
/**
* 加液区托盘状态发生变化事件
*/
@Getter
public class LiquidTrayStatusChangedEvent extends ApplicationEvent {
private final DeviceStatus deviceStatus;
public LiquidTrayStatusChangedEvent(Object source, DeviceStatus deviceStatus) {
super(source);
this.deviceStatus = deviceStatus;
}
}

2
src/main/java/com/qyft/gd/device/model/bo/DeviceOperationalStatus.java

@ -17,7 +17,7 @@ public class DeviceOperationalStatus {
*/ */
@Data @Data
static class Tray { static class Tray {
@Schema(description = "所加热区id")
@Schema(description = "所加热区id")
private Long heatId; private Long heatId;
@Schema(description = "是否在加液区") @Schema(description = "是否在加液区")
private boolean isSolutionArea; private boolean isSolutionArea;

29
src/main/java/com/qyft/gd/device/service/DeviceOperationalService.java

@ -0,0 +1,29 @@
package com.qyft.gd.device.service;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 设备业务操作处理服务
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class DeviceOperationalService {
private final DeviceStatusService deviceStatusService;
/**
* 用户取走托盘处理
*/
public void removeTray(){
}
/**
* 用户放入托盘处理
*/
public void putTray(){
}
}

18
src/main/java/com/qyft/gd/device/service/DeviceStatusService.java

@ -1,18 +1,25 @@
package com.qyft.gd.device.service; package com.qyft.gd.device.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.qyft.gd.device.event.LiquidTrayStatusChangedEvent;
import com.qyft.gd.device.model.bo.DeviceOperationalStatus; import com.qyft.gd.device.model.bo.DeviceOperationalStatus;
import com.qyft.gd.device.model.bo.DeviceStatus; import com.qyft.gd.device.model.bo.DeviceStatus;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
* 设备传感器状态推送 * 设备传感器状态推送
*/ */
@Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class DeviceStatusService { public class DeviceStatusService {
private final ApplicationEventPublisher eventPublisher;
/** /**
* 设备运行状态 * 设备运行状态
*/ */
@ -22,13 +29,22 @@ public class DeviceStatusService {
* 更新设备业务操作状态 * 更新设备业务操作状态
*/ */
@Getter @Getter
private final DeviceOperationalStatus deviceOperationalStatus = new DeviceOperationalStatus();
public DeviceOperationalStatus deviceOperationalStatus = new DeviceOperationalStatus();
/** /**
* 更新设备状态 * 更新设备状态
*/ */
public void updateDeviceStatus(DeviceStatus newStatus) { public void updateDeviceStatus(DeviceStatus newStatus) {
synchronized (deviceStatus) { synchronized (deviceStatus) {
try {
if (deviceStatus.getLiquidArea() != null) {
if (deviceStatus.getLiquidArea().getLiquidTray() != newStatus.getLiquidArea().getLiquidTray()) {
eventPublisher.publishEvent(new LiquidTrayStatusChangedEvent(this, BeanUtil.copyProperties(newStatus, DeviceStatus.class)));
}
}
} catch (Exception ignored) {
}
BeanUtil.copyProperties(newStatus, deviceStatus); BeanUtil.copyProperties(newStatus, deviceStatus);
} }
} }

9
src/main/java/com/qyft/gd/system/config/AsyncConfig.java

@ -0,0 +1,9 @@
package com.qyft.gd.system.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
@Configuration
@EnableAsync
public class AsyncConfig {
}
Loading…
Cancel
Save