From 2eae41593cbbbbcf3725ced54ac12b7aae7ef844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Tue, 3 Jun 2025 02:33:28 +0800 Subject: [PATCH] 1 --- .../command/control/FilledSolutionStopCommand.java | 1 + .../gd/app/command/control/SolutionAddCommand.java | 1 + .../com/iflytop/gd/app/core/CraftsContext.java | 13 +++++- .../gd/app/model/bo/status/device/DeviceState.java | 2 +- .../model/bo/status/device/HeatModuleState.java | 3 ++ .../gd/app/model/bo/status/device/TrayState.java | 13 +----- .../iflytop/gd/app/service/api/CraftsService.java | 46 ++++++++++++++++------ .../gd/app/service/crafts/CraftsStepService.java | 20 +++++----- .../device/DeviceCommandTempUtilService.java | 18 +++++++++ .../service/device/module/CapModuleService.java | 18 ++++++++- .../device/module/SolutionModuleService.java | 1 + .../scheduled/FetchTemperatureScheduledTask.java | 2 +- src/main/resources/sql/init.sql | 8 ++-- 13 files changed, 102 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/iflytop/gd/app/command/control/FilledSolutionStopCommand.java b/src/main/java/com/iflytop/gd/app/command/control/FilledSolutionStopCommand.java index 3f0513c..9b32888 100644 --- a/src/main/java/com/iflytop/gd/app/command/control/FilledSolutionStopCommand.java +++ b/src/main/java/com/iflytop/gd/app/command/control/FilledSolutionStopCommand.java @@ -39,6 +39,7 @@ public class FilledSolutionStopCommand extends BaseCommandHandler { } }); } + Thread.sleep(1000); solutionModuleService.dualRobotOrigin(); }); } diff --git a/src/main/java/com/iflytop/gd/app/command/control/SolutionAddCommand.java b/src/main/java/com/iflytop/gd/app/command/control/SolutionAddCommand.java index b8e94cb..553622b 100644 --- a/src/main/java/com/iflytop/gd/app/command/control/SolutionAddCommand.java +++ b/src/main/java/com/iflytop/gd/app/command/control/SolutionAddCommand.java @@ -86,6 +86,7 @@ public class SolutionAddCommand extends BaseCommandHandler { CommandUtil.wait(futuresList.toArray(new CommandFuture[0])); } } + Thread.sleep(1000); solutionModuleService.dualRobotOrigin(); deviceStateService.getCommandMutexState().get().setSolutionAddCommandExecuting(false); deviceStateService.getDeviceState().getSolutionModule().setPumping(false); diff --git a/src/main/java/com/iflytop/gd/app/core/CraftsContext.java b/src/main/java/com/iflytop/gd/app/core/CraftsContext.java index a98743f..547f3bd 100644 --- a/src/main/java/com/iflytop/gd/app/core/CraftsContext.java +++ b/src/main/java/com/iflytop/gd/app/core/CraftsContext.java @@ -2,9 +2,12 @@ package com.iflytop.gd.app.core; import cn.hutool.json.JSONUtil; import com.iflytop.gd.app.model.bo.CraftsStep; +import com.iflytop.gd.app.model.bo.status.device.CraftsState; +import com.iflytop.gd.app.model.bo.status.device.TrayState; import com.iflytop.gd.app.model.entity.Crafts; import com.iflytop.gd.app.model.entity.Ores; import com.iflytop.gd.app.service.crafts.CraftsStepService; +import com.iflytop.gd.app.service.device.DeviceStateService; import com.iflytop.gd.app.ws.server.WebSocketSender; import com.iflytop.gd.common.constant.WebSocketMessageType; import com.iflytop.gd.common.enums.HeatModuleCode; @@ -34,6 +37,7 @@ public class CraftsContext implements Runnable { private final StateMachine sm; private final WebSocketSender webSocketService; private final CraftsStepService craftsStepService; + private final DeviceStateService deviceStateService; private int currentIndex = 0; /** @@ -43,23 +47,30 @@ public class CraftsContext implements Runnable { Crafts craft, StateMachineFactory factory, WebSocketSender webSocketService, - CraftsStepService craftsStepService) { + CraftsStepService craftsStepService, + DeviceStateService deviceStateService) { this.heatModuleCode = heatModuleCode; this.ores = ores; this.craft = craft; this.craftsStepList = JSONUtil.parseArray(craft.getSteps()).toList(CraftsStep.class); this.webSocketService = webSocketService; this.craftsStepService = craftsStepService; + this.deviceStateService = deviceStateService; this.sm = factory.getStateMachine(heatModuleCode.toString()); sm.addStateListener(new StateMachineListenerAdapter<>() { @Override public void stateEntered(State state) { + CraftsState craftsState = deviceStateService.getDeviceState().getTrayStateByHeatModuleCode(heatModuleCode).getCrafts(); + craftsState.setState(state.getId()); + craftsState.setCurrentIndex(currentIndex); + Map dataMap = new HashMap<>(); dataMap.put("heatId", heatModuleCode); dataMap.put("state", state.getId()); dataMap.put("index", currentIndex); webSocketService.push(WebSocketMessageType.CRAFTS_STATE, dataMap); + } }); Mono.from(sm.startReactively()).block(); diff --git a/src/main/java/com/iflytop/gd/app/model/bo/status/device/DeviceState.java b/src/main/java/com/iflytop/gd/app/model/bo/status/device/DeviceState.java index 5032b11..52cdc4d 100644 --- a/src/main/java/com/iflytop/gd/app/model/bo/status/device/DeviceState.java +++ b/src/main/java/com/iflytop/gd/app/model/bo/status/device/DeviceState.java @@ -75,7 +75,7 @@ public class DeviceState { public synchronized TrayState getTrayStateByHeatModuleCode(HeatModuleCode heatModuleCode) { for (TrayState t : tray) { - if (heatModuleCode.equals(t.getHeatModuleId())) { + if (t.getHeatModuleId().equals(heatModuleCode)) { return t; } } diff --git a/src/main/java/com/iflytop/gd/app/model/bo/status/device/HeatModuleState.java b/src/main/java/com/iflytop/gd/app/model/bo/status/device/HeatModuleState.java index b4e37bc..b250e74 100644 --- a/src/main/java/com/iflytop/gd/app/model/bo/status/device/HeatModuleState.java +++ b/src/main/java/com/iflytop/gd/app/model/bo/status/device/HeatModuleState.java @@ -30,6 +30,9 @@ public class HeatModuleState { @Schema(description = "当前加热类型") private HeatingType heatingType = HeatingType.stop; + @Schema(description = "是否正在加热,true为正在加热,false为未加热")//可能去掉这个状态 + private boolean heating = false; + @Schema(description = "是否启动散热,true为正在散热,false为未在散热") private boolean fanOpen = false; diff --git a/src/main/java/com/iflytop/gd/app/model/bo/status/device/TrayState.java b/src/main/java/com/iflytop/gd/app/model/bo/status/device/TrayState.java index 6fd5c14..425783d 100644 --- a/src/main/java/com/iflytop/gd/app/model/bo/status/device/TrayState.java +++ b/src/main/java/com/iflytop/gd/app/model/bo/status/device/TrayState.java @@ -1,22 +1,13 @@ package com.iflytop.gd.app.model.bo.status.device; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.iflytop.gd.common.enums.HeatModuleCode; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.annotation.PostConstruct; import lombok.Data; -import lombok.RequiredArgsConstructor; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; import java.util.UUID; @Schema(description = "托盘") @Data -@Component -@Scope("prototype") -@RequiredArgsConstructor -@JsonIgnoreProperties(value = {"advisors", "frozen", "preFiltered", "proxyTargetClass", "targetSource", "exposeProxy", "advisorCount", "proxiedInterfaces", "targetClass"}) public class TrayState { @Schema(description = "托盘唯一id") private String uuid = UUID.randomUUID().toString(); @@ -36,13 +27,11 @@ public class TrayState { @Schema(description = "当前托盘的工艺") private CraftsState crafts = null; - @PostConstruct - private void init(){ + public TrayState() { for (int i = 0; i < tubes.length; i++) { TubeState tubeState = new TubeState(); tubeState.setTubeNum(i + 1); tubes[i] = tubeState; } } - } diff --git a/src/main/java/com/iflytop/gd/app/service/api/CraftsService.java b/src/main/java/com/iflytop/gd/app/service/api/CraftsService.java index c17fdac..dc4ff5b 100644 --- a/src/main/java/com/iflytop/gd/app/service/api/CraftsService.java +++ b/src/main/java/com/iflytop/gd/app/service/api/CraftsService.java @@ -4,12 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iflytop.gd.app.core.CraftsContext; import com.iflytop.gd.app.mapper.CraftsMapper; +import com.iflytop.gd.app.model.bo.status.device.CraftsState; import com.iflytop.gd.app.model.bo.status.device.HeatModuleState; +import com.iflytop.gd.app.model.bo.status.device.TrayState; import com.iflytop.gd.app.model.entity.Crafts; import com.iflytop.gd.app.model.entity.Ores; import com.iflytop.gd.app.model.vo.CraftStatusVO; import com.iflytop.gd.app.model.vo.SetCraftsVO; import com.iflytop.gd.app.service.crafts.CraftsStepService; +import com.iflytop.gd.app.service.device.DeviceStateService; import com.iflytop.gd.app.service.device.module.HeatModuleService; import com.iflytop.gd.app.ws.server.WebSocketSender; import com.iflytop.gd.common.enums.HeatModuleCode; @@ -20,6 +23,7 @@ import com.iflytop.gd.common.result.ResultCode; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.statemachine.config.StateMachineFactory; import org.springframework.stereotype.Service; @@ -44,10 +48,14 @@ public class CraftsService extends ServiceImpl { private final WebSocketSender webSocketService; private final CraftsStepService craftsStepService; private final OresService oresService; + private final DeviceStateService deviceStateService; + private final ObjectProvider craftsStateObjectProvider; + private final ConcurrentHashMap contextMap = new ConcurrentHashMap<>(); private final ConcurrentHashMap> futureMap = new ConcurrentHashMap<>(); private ExecutorService executor; + @PostConstruct public void init() { this.executor = Executors.newCachedThreadPool(); @@ -98,6 +106,9 @@ public class CraftsService extends ServiceImpl { if (ores == null) { throw new AppException(ResultCode.INVALID_PARAMETER); } + if(deviceStateService.getDeviceState().getSolutionModule().getTrayStatus() == 0){ + throw new AppException(ResultCode.SOLUTION_MODULE_NO_TRAY); + } //判断是否指定加热区id if (heatModuleCode == null) { //如果没有指定加热区id,则自动获取一个 @@ -109,23 +120,23 @@ public class CraftsService extends ServiceImpl { heatModuleCode = heatModuleState.getModuleCode(); } } else { - if (futureMap.containsKey(heatModuleCode)) {//校验指定加热模块是否正在执行工艺 - log.error("工艺正在执行中,不可重复开始执行。"); - throw new AppException(ResultCode.CRAFT_RUNNING); - } +// if (futureMap.containsKey(heatModuleCode)) {//校验指定加热模块是否正在执行工艺 +// log.error("工艺正在执行中,不可重复开始执行。"); +// throw new AppException(ResultCode.CRAFT_RUNNING); +// } } log.info("准备开始工艺,加热模块{},工艺{}", heatModuleCode, craft.getName()); //TODO 传感器校验heatModuleCode是否被占用 // 校验已有上下文状态,仅允许在 READY、STOPPED 或 FINISHED 状态下重置 - CraftsContext existing = contextMap.get(heatModuleCode); - if (existing != null) { - CraftStates state = existing.getSm().getState().getId(); - if (state == CraftStates.RUNNING || state == CraftStates.PAUSED) { - throw new AppException(ResultCode.CRAFT_RUNNING); - } - clearCraftContext(heatModuleCode); - } +// CraftsContext existing = contextMap.get(heatModuleCode); +// if (existing != null) { +// CraftStates state = existing.getSm().getState().getId(); +// if (state == CraftStates.RUNNING || state == CraftStates.PAUSED) { +// throw new AppException(ResultCode.CRAFT_RUNNING); +// } +// clearCraftContext(heatModuleCode); +// } CraftsContext ctx = new CraftsContext( heatModuleCode, @@ -133,12 +144,21 @@ public class CraftsService extends ServiceImpl { craft, stateMachineFactory, webSocketService, - craftsStepService + craftsStepService, + deviceStateService ); contextMap.put(heatModuleCode, ctx); Future future = executor.submit(ctx); futureMap.put(heatModuleCode, future); + TrayState trayState = deviceStateService.getDeviceState().getTrayInSolutionModule(); + CraftsState craftsState = craftsStateObjectProvider.getObject(); + craftsState.setCraft(craft); + craftsState.setOres(ores); + craftsState.setState(CraftStates.READY); + craftsState.setCurrentIndex(0); + trayState.setCrafts(craftsState); + SetCraftsVO setCraftsVO = new SetCraftsVO(); setCraftsVO.setHeatId(heatModuleCode); setCraftsVO.setCraftsName(craft.getName()); diff --git a/src/main/java/com/iflytop/gd/app/service/crafts/CraftsStepService.java b/src/main/java/com/iflytop/gd/app/service/crafts/CraftsStepService.java index 62554b7..24bf55c 100644 --- a/src/main/java/com/iflytop/gd/app/service/crafts/CraftsStepService.java +++ b/src/main/java/com/iflytop/gd/app/service/crafts/CraftsStepService.java @@ -195,29 +195,30 @@ public class CraftsStepService { Point3D heatAreaCapClawPointPoint3D = heatModuleService.getHeatAreaCapClawPointPoint3D(heatModuleCode);//获取指定加热模块拍子上方点位 Point3D capStorageCapClawPoint3D = devicePositionService.getPosition(DevicePositionCode.capStorageCapClawPoint).getPoint3D();//获取拍子存放区上方点位; + capModuleService.capUpBalanceNoWait();//提升拍子存放区至拍子夹取的高度 gantryModuleService.gantryMove(liquidAreaTrayPoint3D); //将机械臂移动至加液模块上方 gantryModuleService.clawMove(clawTrayPick);//将夹爪打开,准备夹取托盘 gantryModuleService.gantryZMove(solutionModuleTrayMoveHeight);//下降z轴,使夹爪落入托盘孔位 gantryModuleService.clawMove(clawTrayGrip);//将夹爪收紧,夹住托盘 gantryModuleService.gantryZMove(0);//抬升z轴 deviceStateService.getDeviceState().getSolutionModule().setTrayStatus(0);//加液模块是否有托盘 - deviceCommandTempUtilService.moveTrayHeatModuleAvoidDown(null);//TODO 结构有问题临时避让 开始,移动托盘之前先降下所有加热模块 +// deviceCommandTempUtilService.moveTrayHeatModuleAvoidDown(null);//TODO 结构有问题临时避让 开始,移动托盘之前先降下所有加热模块 gantryModuleService.gantryMove(heatArea4TrayClawPoint3D);//将携带托盘的机械臂移动至4号加热模块上方 gantryModuleService.gantryMove(heatAreaTrayClawPoint3D);//将携带托盘的机械臂移动至加热模块上方 // deviceCommandUtilService.heaterMotorMove( heatModuleId, trayLift);//抬升加热位托盘 TODO 结构有问题临时避让 屏蔽 - deviceCommandTempUtilService.moveTrayHeatModuleAvoidUp(heatModuleCode);//TODO 结构有问题临时避让 完毕,可以升起了,顺带提升目标加热模块 + deviceCommandTempUtilService.moveTrayHeatModuleAvoidUpNoWait(heatModuleCode);Thread.sleep(3200);//TODO 结构有问题临时避让 完毕,可以升起了,顺带提升目标加热模块 gantryModuleService.gantryZMove(heatModuleTrayMoveHeight);//下降z轴,使托盘落入加热模块 gantryModuleService.clawMove(clawTrayPick);//将夹爪打开,释放托盘 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(1);//加热模块是否存在托盘 gantryModuleService.gantryZMove(0);//抬升z轴 - capModuleService.capUpBalance();//提升拍子存放区至拍子夹取的高度 gantryModuleService.gantryMove(capStorageCapClawPoint3D);//移动机械臂至拍子存放区上方 gantryModuleService.clawMove(clawCapPick);//将夹爪打开,准备夹取拍子 gantryModuleService.gantryZMove(capModuleCapMoveHeight);//下降z轴,使夹爪落入拍子升降模块拍子孔位 gantryModuleService.clawMove(clawCapGrip);//将夹爪收紧,夹住拍子 gantryModuleService.gantryZMove(0);//抬升z轴 gantryModuleService.gantryMove(heatAreaCapClawPointPoint3D);//将携带拍子的机械臂移动至加热模块拍子上方 + capModuleService.capUpBalanceNoWait(); //提升拍子存放区 gantryModuleService.gantryZMove(heatModuleCapMoveHeight);//下降z轴,使夹拍子落入加热模块 gantryModuleService.clawMove(clawCapPick);//将夹爪打开,释放拍子 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setCapExist(true);//加热模块是否存在拍子 @@ -226,11 +227,8 @@ public class CraftsStepService { // trayState.setInHeatModule(true); heatModuleService.heaterMotorMove(heatModuleCode, trayLower);//下降加热模块托盘 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayUp(0);//加热模块托盘升降状态 - capModuleService.capUpBalance(); //提升拍子存放区 gantryModuleService.gantryMove(capStorageCapClawPoint3D);//移动机械臂至拍子存放区上方 - heatModuleService.heaterMotorMove(heatModuleCode, trayLower);//下降加热位托盘 - deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(1); solutionModuleService.releaseSolutionModule();//释放加液区 } @@ -258,15 +256,15 @@ public class CraftsStepService { // TrayState trayState = deviceStateService.getTrayInSolutionModule(); solutionModuleService.requestSolutionModule();//申请使用加液区并等待 - capModuleService.capUpBalance(); //提升拍子存放区至拍子夹取的高度 + capModuleService.capUpBalanceNoWait(); //提升拍子存放区至拍子夹取的高度 gantryModuleService.gantryMove(heatAreaCapClawPointPoint3D);//将机械臂移动至加热模块拍子上方 heatModuleService.heaterMotorMove(heatModuleCode, trayLift);//抬升指定加热位托盘 gantryModuleService.clawMove(clawCapPick);//将夹爪打开,准备夹取拍子 gantryModuleService.gantryZMove(heatModuleCapMoveHeight);//下降z轴,使夹爪落入加热模块拍子孔位 gantryModuleService.clawMove(clawCapGrip);//将夹爪收紧,夹住拍子 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setCapExist(false);//加热模块是否存在拍子 - gantryModuleService.gantryZMove(0);//抬升z轴 - capModuleService.capMotorMoveByNum(-1);//拍子存放模块下降1个拍子位置 + capModuleService.capMotorMoveByNumNoWait(-1);//拍子存放模块下降1个拍子位置 + gantryModuleService.gantryZMove(0); Thread.sleep(2000);//抬升z轴 gantryModuleService.gantryMove(capStorageCapClawPoint3D);//将携带拍子的机械臂移动至存放区上方 gantryModuleService.gantryZMove(capModuleCapMoveHeight);//下降z轴,使夹拍子落入存放区 gantryModuleService.clawMove(clawCapPick);//将夹爪打开,释放夹取的拍子 @@ -279,10 +277,10 @@ public class CraftsStepService { gantryModuleService.clawMove(clawTrayGrip);//将夹爪收紧,夹住托盘 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(0);//加热模块是否存在托盘 // trayState.setInHeatModule(false);//托盘是否在加热模块中 - gantryModuleService.gantryZMove(0);//抬升z轴 + deviceCommandTempUtilService.moveTrayHeatModuleAvoidDownNoWait(heatModuleCode);//TODO 临时避让下降 + gantryModuleService.gantryZMove(0);Thread.sleep(2500);//抬升z轴 // deviceCommandUtilService.heaterMotorMove( heatModuleId, trayLower);//下降加热模块托盘 // deviceStateService.setHeatModuleStateTrayUp(heatModuleId, 0);//加热模块托盘升降状态 - deviceCommandTempUtilService.moveTrayHeatModuleAvoidDown(heatModuleCode);//TODO 临时避让下降 gantryModuleService.gantryMove(heatArea4TrayClawPoint3D);//将携带托盘的机械臂移动至4号加热模块上方 gantryModuleService.gantryMove(liquidAreaTrayPoint3D); //将携带托盘的机械臂移动至加液模块上方 deviceCommandTempUtilService.moveTrayHeatModuleAvoidUp(null, heatModuleCode);//TODO 临时避 恢复抬起状态 diff --git a/src/main/java/com/iflytop/gd/app/service/device/DeviceCommandTempUtilService.java b/src/main/java/com/iflytop/gd/app/service/device/DeviceCommandTempUtilService.java index 677b7fa..ea301ee 100644 --- a/src/main/java/com/iflytop/gd/app/service/device/DeviceCommandTempUtilService.java +++ b/src/main/java/com/iflytop/gd/app/service/device/DeviceCommandTempUtilService.java @@ -38,6 +38,15 @@ public class DeviceCommandTempUtilService { * 临时移动托盘的时候,加热模块升降避让 * 该方法会恢复之前升起的状态 */ + public void moveTrayHeatModuleAvoidUpNoWait(HeatModuleCode targetHeatModuleCode, HeatModuleCode... exceptionHeatModuleCodes) throws Exception { + moveTrayHeatModuleAvoidUpNoWait(null, null, targetHeatModuleCode, exceptionHeatModuleCodes); + } + + /** + * 避让抬升 + * 临时移动托盘的时候,加热模块升降避让 + * 该方法会恢复之前升起的状态 + */ public void moveTrayHeatModuleAvoidUp(HeatModuleCode targetHeatModuleCode, HeatModuleCode... exceptionHeatModuleCodes) throws Exception { moveTrayHeatModuleAvoidUp(null, null, targetHeatModuleCode, exceptionHeatModuleCodes); } @@ -94,6 +103,15 @@ public class DeviceCommandTempUtilService { * 临时移动托盘的时候,加热模块升降避让 * 该方法会下降所有升起的加热模块并且记录 */ + public void moveTrayHeatModuleAvoidDownNoWait(HeatModuleCode targetHeatModuleCode, HeatModuleCode... exceptionHeatModuleCodes) throws Exception { + moveTrayHeatModuleAvoidDownNoWait(null, null, targetHeatModuleCode, exceptionHeatModuleCodes); + } + + /** + * 避让下降 + * 临时移动托盘的时候,加热模块升降避让 + * 该方法会下降所有升起的加热模块并且记录 + */ public void moveTrayHeatModuleAvoidDown(HeatModuleCode targetHeatModuleCode, HeatModuleCode... exceptionHeatModuleCodes) throws Exception { moveTrayHeatModuleAvoidDown(null, null, targetHeatModuleCode, exceptionHeatModuleCodes); } diff --git a/src/main/java/com/iflytop/gd/app/service/device/module/CapModuleService.java b/src/main/java/com/iflytop/gd/app/service/device/module/CapModuleService.java index 10e9609..b3df5f7 100644 --- a/src/main/java/com/iflytop/gd/app/service/device/module/CapModuleService.java +++ b/src/main/java/com/iflytop/gd/app/service/device/module/CapModuleService.java @@ -30,6 +30,13 @@ public class CapModuleService { /** * 将拍子升降区抬升至可以获取的位置 */ + public void capUpBalanceNoWait() throws Exception { + capUpBalanceNoWait(null, null); + } + + /** + * 将拍子升降区抬升至可以获取的位置 + */ public void capUpBalance() throws Exception { capUpBalance(null, null); } @@ -79,7 +86,7 @@ public class CapModuleService { } } if (capNum == 0) { - throw new AppException(ResultCode.CAP_MODULE_NO_CAP); + return; } double capLiftingHeight = devicePositionService.getPosition(DevicePositionCode.capLiftingHeight).getDistance();//每个拍子高度 double capLiftingHeightSum = (6 - capNum) * capLiftingHeight + 21; @@ -169,6 +176,15 @@ public class CapModuleService { * * @param num 1为上升1格,-1为下降1格 */ + public void capMotorMoveByNumNoWait(int num) throws Exception { + capMotorMoveByNumNoWait(null, null, num); + } + + /** + * 调整拍子升降电机位置 + * + * @param num 1为上升1格,-1为下降1格 + */ public void capMotorMoveByNum(int num) throws Exception { capMotorMoveByNum(null, null, num); } diff --git a/src/main/java/com/iflytop/gd/app/service/device/module/SolutionModuleService.java b/src/main/java/com/iflytop/gd/app/service/device/module/SolutionModuleService.java index 1c7f3bd..49d2197 100644 --- a/src/main/java/com/iflytop/gd/app/service/device/module/SolutionModuleService.java +++ b/src/main/java/com/iflytop/gd/app/service/device/module/SolutionModuleService.java @@ -69,6 +69,7 @@ public class SolutionModuleService { * 释放加液区 */ public synchronized void releaseSolutionModule() throws InterruptedException { + log.info("释放加液模块占用"); deviceStateService.getDeviceState().getSolutionModule().setIdle(true); // 唤醒队列中的第一个线程 if (!waitingQueue.isEmpty()) { diff --git a/src/main/java/com/iflytop/gd/app/service/scheduled/FetchTemperatureScheduledTask.java b/src/main/java/com/iflytop/gd/app/service/scheduled/FetchTemperatureScheduledTask.java index 63b8278..ee79617 100644 --- a/src/main/java/com/iflytop/gd/app/service/scheduled/FetchTemperatureScheduledTask.java +++ b/src/main/java/com/iflytop/gd/app/service/scheduled/FetchTemperatureScheduledTask.java @@ -19,7 +19,7 @@ public class FetchTemperatureScheduledTask { private final GDDeviceStatusService gdDeviceStatusService; private final DeviceStateService deviceStateService; - @Scheduled(fixedRate = 30000) + @Scheduled(fixedRate = 300000) public void fetchTemperature() { try { if (!deviceStateService.getDeviceState().isVirtual()) { diff --git a/src/main/resources/sql/init.sql b/src/main/resources/sql/init.sql index c789160..fea1fb0 100644 --- a/src/main/resources/sql/init.sql +++ b/src/main/resources/sql/init.sql @@ -56,10 +56,10 @@ CREATE TABLE IF NOT EXISTS container ); INSERT OR IGNORE INTO container (id, type, code, solution_id, pump_id, scale,capacity_total, capacity_used) -VALUES (1, 0, 'container_01', 1, 'acid_pump_01', 120,5000, 0), - (2, 0, 'container_02', 2, 'acid_pump_02', 100,5000, 2500), - (3, 0, 'container_03', 3, 'acid_pump_03', 111,5000, 2600), - (4, 0, 'container_04', 4, 'acid_pump_04', 107,5000, 4000), +VALUES (1, 0, 'container_01', 1, 'acid_pump_01', 364,5000, 0), + (2, 0, 'container_02', 2, 'acid_pump_02', 133,5000, 2500), + (3, 0, 'container_03', 3, 'acid_pump_03', 160,5000, 2600), + (4, 0, 'container_04', 4, 'acid_pump_04', 163,5000, 4000), (5, 0, 'container_05', 5, 'acid_pump_05', 117,5000, 2400), (6, 0, 'container_06', 6, 'acid_pump_06', 105,5000, 4500), (7, 0, 'container_07', 7, 'acid_pump_07', 187,5000, 4900),