Browse Source

feat:新增工艺暂停状态

master
白凤吉 1 week ago
parent
commit
4af6e1a9f2
  1. 6
      src/main/java/com/iflytop/colortitration/app/core/crafts/CraftsDispatcher.java
  2. 4
      src/main/java/com/iflytop/colortitration/app/core/state/DeviceState.java

6
src/main/java/com/iflytop/colortitration/app/core/crafts/CraftsDispatcher.java

@ -109,7 +109,7 @@ public class CraftsDispatcher {
public void waitIfPaused() throws InterruptedException {
pauseLock.lock();
try {
while (deviceState.isPaused()) {
while (deviceState.isCraftsPaused()) {
// 如果已暂停当前线程将被挂起直到调用 notifyAll() 唤醒
pauseCondition.await();
}
@ -124,7 +124,7 @@ public class CraftsDispatcher {
public void pause() {
pauseLock.lock();
try {
deviceState.setPaused(true);
deviceState.setCraftsPaused(true);
log.info("所有任务已暂停。");
} finally {
pauseLock.unlock();
@ -137,7 +137,7 @@ public class CraftsDispatcher {
public void resume() {
pauseLock.lock();
try {
deviceState.setPaused(false);
deviceState.setCraftsPaused(false);
pauseCondition.signalAll(); // 唤醒所有等待的线程
log.info("所有任务已恢复。");
} finally {

4
src/main/java/com/iflytop/colortitration/app/core/state/DeviceState.java

@ -18,7 +18,7 @@ import java.util.Map;
@JsonIgnoreProperties(value = {"advisors", "frozen", "preFiltered", "proxyTargetClass", "targetSource", "exposeProxy", "advisorCount", "proxiedInterfaces", "targetClass"})
public class DeviceState {
@Schema(description = "当前设备是否暂停")
private volatile boolean paused = false;
private volatile boolean craftsPaused = false;
@Schema(description = "滴定模块")
private final Map<MultipleModuleCode, TitrationModuleState> titrationModuleStateMap = new HashMap<>();
@ -52,7 +52,9 @@ public class DeviceState {
public JSONObject toJSON() {
JSONObject json = new JSONObject();
json.putOnce("craftsPaused", craftsPaused);
json.putOnce("titrationModule", new ArrayList<>(titrationModuleStateMap.values()));
json.putOnce("heatModuleStateMap", new ArrayList<>(heatModuleStateMap.values()));
json.putOnce("trayTubeState", new ArrayList<>(trayTubeStateMap.values()));
json.putOnce("trayExist1", virtual);
json.putOnce("trayExist2", virtual);

Loading…
Cancel
Save