diff --git a/src/main/java/com/iflytop/sgs/app/cmd/selftest/TransferOriginCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/selftest/LiquidLiftingOriginCommand.java similarity index 88% rename from src/main/java/com/iflytop/sgs/app/cmd/selftest/TransferOriginCommand.java rename to src/main/java/com/iflytop/sgs/app/cmd/selftest/LiquidLiftingOriginCommand.java index 3297982..ab27b54 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/selftest/TransferOriginCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/selftest/LiquidLiftingOriginCommand.java @@ -4,7 +4,6 @@ import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; import com.iflytop.sgs.app.service.device.SelfTestService; import com.iflytop.sgs.app.service.device.module.SolutionModuleService; -import com.iflytop.sgs.app.service.device.module.TransferModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -19,7 +18,7 @@ import java.util.concurrent.CompletableFuture; @Component @RequiredArgsConstructor @CommandMapping("dual_robot_origin")//业务指令注解 -public class TransferOriginCommand extends BaseCommandHandler { +public class LiquidLiftingOriginCommand extends BaseCommandHandler { private final SolutionModuleService solutionModuleService; private final SelfTestService selfTestService; diff --git a/src/main/java/com/iflytop/sgs/app/cmd/selftest/MoveTestCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/selftest/MoveTestCommand.java index 6266d54..f3b519d 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/selftest/MoveTestCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/selftest/MoveTestCommand.java @@ -13,6 +13,8 @@ import com.iflytop.sgs.app.ws.server.WebSocketSender; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import com.iflytop.sgs.common.enums.data.DevicePositionCode; +import com.iflytop.sgs.common.exception.AppException; +import com.iflytop.sgs.common.result.ResultCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -31,31 +33,39 @@ public class MoveTestCommand extends BaseCommandHandler { private final TransferModuleService transferModuleService; private final HeatModuleService heatModuleService; private final DevicePositionService devicePositionService; - + private final DeviceStateService deviceStateService; private final WebSocketSender webSocketService; @Override public CompletableFuture handle(CmdDTO cmdDTO) { + if (deviceStateService.getCommandMutexState().get().isMoveTest()) { + throw new AppException(ResultCode.COMMAND_ALREADY_EXECUTING); + } HeatModuleCode annealHeatModuleCode = HeatModuleCode.heat_module_04; Point3D annealHeatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(annealHeatModuleCode);//获取退火加热模块托盘夹取点 Double solutionModuleMotorDownInTubeExtPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeExtPositon).getPositon();//加液模块电机下降进入试管抽取位置 Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点 Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹爪位置点 + deviceStateService.getCommandMutexState().get().setMoveTest(true); return runAsync(() -> { - webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "1、各项传感器正常", 25)); - solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液机械臂抬升至最高 - transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 - transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), annealHeatModuleTrayClawPoint3D.getX());//将X轴移动至托盘夹取点 - solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), solutionModuleMotorDownInTubeExtPositon);//加液模块下降进入试管抽取位置 - solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液机械臂抬升至最高 - webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "2、加液模块升降电机检测完毕", 50)); - transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D.getX());//将X轴移动至加液时托盘位置点 - transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.getX());//将X轴移动至上料区位置点 - webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "3、x轴电机检测完毕", 75)); - transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点,使托盘落入上料区 - transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 - webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "4、z轴电机检测完毕", 100)); + try { + webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "1、各项传感器正常", 25)); + solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液机械臂抬升至最高 + transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 + transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), annealHeatModuleTrayClawPoint3D.getX());//将X轴移动至托盘夹取点 + solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), solutionModuleMotorDownInTubeExtPositon);//加液模块下降进入试管抽取位置 + solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液机械臂抬升至最高 + webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "2、加液模块升降电机检测完毕", 50)); + transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D.getX());//将X轴移动至加液时托盘位置点 + transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.getX());//将X轴移动至上料区位置点 + webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "3、x轴电机检测完毕", 75)); + transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点,使托盘落入上料区 + transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 + webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "4、z轴电机检测完毕", 100)); + } finally { + deviceStateService.getCommandMutexState().get().setMoveTest(false); + } }); } } diff --git a/src/main/java/com/iflytop/sgs/app/cmd/selftest/TrayOutCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/selftest/TrayOutCommand.java index ba6d741..8cb4213 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/selftest/TrayOutCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/selftest/TrayOutCommand.java @@ -12,6 +12,8 @@ import com.iflytop.sgs.app.service.device.module.TransferModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import com.iflytop.sgs.common.enums.data.DevicePositionCode; +import com.iflytop.sgs.common.exception.AppException; +import com.iflytop.sgs.common.result.ResultCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -36,30 +38,38 @@ public class TrayOutCommand extends BaseCommandHandler { @Override public CompletableFuture handle(CmdDTO cmdDTO) { + if (deviceStateService.getCommandMutexState().get().isTrayOut()) { + throw new AppException(ResultCode.COMMAND_ALREADY_EXECUTING); + } String targetHeatModuleCodeStr = cmdDTO.getStringParam("heatModuleCode"); HeatModuleCode targetHeatModuleCode = HeatModuleCode.valueOf(targetHeatModuleCodeStr); Double doorOpenPosition = devicePositionService.getPosition(DevicePositionCode.doorOpenPosition).getDistance();//获取开门位置 Point3D targetHeatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(targetHeatModuleCode);//获取目标加热模块托盘夹取点 Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹爪位置点 + deviceStateService.getCommandMutexState().get().setTrayOut(true); return runAsync(() -> { - if (!deviceStateService.getDeviceState().getDoorModule().isOpen()) { - doorModuleService.doorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), doorOpenPosition); - deviceStateService.getDeviceState().getDoorModule().setOpen(true); + try{ + if (!deviceStateService.getDeviceState().getDoorModule().isOpen()) { + doorModuleService.doorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), doorOpenPosition); + deviceStateService.getDeviceState().getDoorModule().setOpen(true); + } + solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0); + transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离 + transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 + transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), -transferModuleXPickTrayMoveDistance);//X轴进入卡槽 + deviceStateService.getDeviceState().getHeatModuleByCode(targetHeatModuleCode).setTrayStatus(false);//设定目标加热模块托盘状态 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(targetHeatModuleCode).setInHeatModule(false);//设定托盘不在加热模块中 + deviceStateService.getDeviceState().getTransferModule().setTrayStatus(true);//设定托盘在机械臂上 + transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 + transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.getX());//将X轴移动至上料区位置点 + transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点,使托盘落入上料区 + transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), transferModuleXPickTrayMoveDistance);//X轴移出卡槽 + transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 + deviceStateService.getDeviceState().getSolutionModule().setFeedAreaTrayStatus(true);//设定上料区托盘状态 + }finally { + deviceStateService.getCommandMutexState().get().setTrayOut(false); } - solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0); - transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离 - transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 - transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), -transferModuleXPickTrayMoveDistance);//X轴进入卡槽 - deviceStateService.getDeviceState().getHeatModuleByCode(targetHeatModuleCode).setTrayStatus(false);//设定目标加热模块托盘状态 - deviceStateService.getDeviceState().getTrayByHeatModuleCode(targetHeatModuleCode).setInHeatModule(false);//设定托盘不在加热模块中 - deviceStateService.getDeviceState().getTransferModule().setTrayStatus(true);//设定托盘在机械臂上 - transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 - transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.getX());//将X轴移动至上料区位置点 - transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点,使托盘落入上料区 - transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), transferModuleXPickTrayMoveDistance);//X轴移出卡槽 - transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 - deviceStateService.getDeviceState().getSolutionModule().setFeedAreaTrayStatus(true);//设定上料区托盘状态 }); } } diff --git a/src/main/java/com/iflytop/sgs/app/controller/CraftsController.java b/src/main/java/com/iflytop/sgs/app/controller/CraftsController.java index e584671..12b3388 100644 --- a/src/main/java/com/iflytop/sgs/app/controller/CraftsController.java +++ b/src/main/java/com/iflytop/sgs/app/controller/CraftsController.java @@ -90,7 +90,7 @@ public class CraftsController { @Operation(summary = "暂停执行工艺") @PostMapping("/pause") - public Result pauseCrafts(@Valid @RequestBody PauseCraftsDto pauseCraftsDto) { + public Result pauseCrafts(@Valid @RequestBody PauseCraftsDTO pauseCraftsDto) { craftsService.pauseCrafts(pauseCraftsDto.getHeatId()); return Result.success(); } diff --git a/src/main/java/com/iflytop/sgs/app/controller/SelfTestController.java b/src/main/java/com/iflytop/sgs/app/controller/SelfTestController.java index 29ae145..528113f 100644 --- a/src/main/java/com/iflytop/sgs/app/controller/SelfTestController.java +++ b/src/main/java/com/iflytop/sgs/app/controller/SelfTestController.java @@ -1,18 +1,17 @@ package com.iflytop.sgs.app.controller; import com.iflytop.sgs.app.model.bo.status.SelfTestState; +import com.iflytop.sgs.app.model.dto.SetIgnoreItemDTO; import com.iflytop.sgs.app.model.vo.GetRequireOutTrayVO; import com.iflytop.sgs.app.service.device.DeviceStateService; import com.iflytop.sgs.app.service.device.SelfTestService; import com.iflytop.sgs.common.result.Result; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -50,4 +49,11 @@ public class SelfTestController { deviceStateService.getDeviceState().setSelfTest(isFinish); return Result.success(); } + + @Operation(summary = "设置自检项是否忽略") + @PostMapping("/set-ignore-item") + public Result setIgnoreItem(@Valid @RequestBody SetIgnoreItemDTO setIgnoreItemDTO){ + selfTestService.setIgnoreItem(setIgnoreItemDTO); + return Result.success(); + } } diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/CommandMutexState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/CommandMutexState.java index 050222c..b88b31d 100644 --- a/src/main/java/com/iflytop/sgs/app/model/bo/status/CommandMutexState.java +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/CommandMutexState.java @@ -32,4 +32,7 @@ public class CommandMutexState { private boolean trayDownCommandExecuting = false; private boolean trayLiftingOriginCommandExecuting = false; private boolean trayUpCommandExecuting = false; + + private boolean moveTest = false; + private boolean trayOut = false; } diff --git a/src/main/java/com/iflytop/sgs/app/model/bo/status/SelfTestState.java b/src/main/java/com/iflytop/sgs/app/model/bo/status/SelfTestState.java index cae2310..f75fe69 100644 --- a/src/main/java/com/iflytop/sgs/app/model/bo/status/SelfTestState.java +++ b/src/main/java/com/iflytop/sgs/app/model/bo/status/SelfTestState.java @@ -9,13 +9,25 @@ public class SelfTestState { @Schema(description = "门是否在原点") private boolean doorOrigin = false; - @Schema(description = "转运机械臂x轴是否在原点") + @Schema(description = "门是否忽略自检") + private boolean doorOriginIsIgnore = false; + + @Schema(description = "转运机械臂X轴是否在原点") private boolean transferXOrigin = false; - @Schema(description = "转运机械臂z轴是否在原点") + @Schema(description = "转运机械臂X轴是否忽略自检") + private boolean transferXOriginIsIgnore = false; + + @Schema(description = "转运机械臂Z轴是否在原点") private boolean transferZOrigin = false; + @Schema(description = "转运机械臂Z轴是否忽略自检") + private boolean transferZOriginIsIgnore = false; + @Schema(description = "加液机械臂是否在原点") private boolean dualRobotOrigin = false; + @Schema(description = "加液机械臂是否忽略自检") + private boolean dualRobotOriginIsIgnore = false; + } diff --git a/src/main/java/com/iflytop/sgs/app/model/dto/PauseCraftsDto.java b/src/main/java/com/iflytop/sgs/app/model/dto/PauseCraftsDTO.java similarity index 90% rename from src/main/java/com/iflytop/sgs/app/model/dto/PauseCraftsDto.java rename to src/main/java/com/iflytop/sgs/app/model/dto/PauseCraftsDTO.java index ccd0d37..85c8c04 100644 --- a/src/main/java/com/iflytop/sgs/app/model/dto/PauseCraftsDto.java +++ b/src/main/java/com/iflytop/sgs/app/model/dto/PauseCraftsDTO.java @@ -6,7 +6,7 @@ import lombok.Data; @Schema(description = "暂停执行工艺") @Data -public class PauseCraftsDto { +public class PauseCraftsDTO { @NotNull @Schema(description = "加热区id") private String heatId; diff --git a/src/main/java/com/iflytop/sgs/app/model/dto/SetIgnoreItemDTO.java b/src/main/java/com/iflytop/sgs/app/model/dto/SetIgnoreItemDTO.java new file mode 100644 index 0000000..3f68ac2 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/model/dto/SetIgnoreItemDTO.java @@ -0,0 +1,23 @@ +package com.iflytop.sgs.app.model.dto; + +import com.iflytop.sgs.common.enums.SystemConfigCode; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * 设置自检项忽略 + */ +@Schema(description = "设置自检项忽略") +@Data +public class SetIgnoreItemDTO { + + @NotNull + @Schema(description = "自检项", example = "ignore_door_self_test") + private SystemConfigCode ignoreSelfTestType; + + @NotNull + @Schema(description = "是否忽略") + private Boolean ignore; + +} diff --git a/src/main/java/com/iflytop/sgs/app/service/api/SystemConfigService.java b/src/main/java/com/iflytop/sgs/app/service/api/SystemConfigService.java index c465ad4..b868f07 100644 --- a/src/main/java/com/iflytop/sgs/app/service/api/SystemConfigService.java +++ b/src/main/java/com/iflytop/sgs/app/service/api/SystemConfigService.java @@ -79,12 +79,26 @@ public class SystemConfigService extends ServiceImpl().eq(SystemConfig::getCode, systemConfigCode.name())); return Integer.valueOf(systemConfig.getValue()); } + public String getSystemConfigStringByCode(SystemConfigCode systemConfigCode) { SystemConfig systemConfig = this.getOne(new LambdaQueryWrapper().eq(SystemConfig::getCode, systemConfigCode.name())); return systemConfig.getValue(); } + public Double getSystemConfigDoubleByCode(SystemConfigCode systemConfigCode) { SystemConfig systemConfig = this.getOne(new LambdaQueryWrapper().eq(SystemConfig::getCode, systemConfigCode.name())); return Double.parseDouble(systemConfig.getValue()); } + + public Boolean getSystemConfigBooleanByCode(SystemConfigCode systemConfigCode) { + SystemConfig systemConfig = this.getOne(new LambdaQueryWrapper().eq(SystemConfig::getCode, systemConfigCode.name())); + return Boolean.parseBoolean(systemConfig.getValue()); + } + + public boolean setSystemConfigByCode(SystemConfigCode systemConfigCode, String value) { + SystemConfig systemConfig = this.getOne(new LambdaQueryWrapper().eq(SystemConfig::getCode, systemConfigCode.name())); + systemConfig.setCode(value); + + return this.updateById(systemConfig); + } } diff --git a/src/main/java/com/iflytop/sgs/app/service/device/SelfTestService.java b/src/main/java/com/iflytop/sgs/app/service/device/SelfTestService.java index e66e9a8..d1ca50c 100644 --- a/src/main/java/com/iflytop/sgs/app/service/device/SelfTestService.java +++ b/src/main/java/com/iflytop/sgs/app/service/device/SelfTestService.java @@ -2,7 +2,11 @@ package com.iflytop.sgs.app.service.device; import com.iflytop.sgs.app.model.bo.status.SelfTestState; import com.iflytop.sgs.app.model.bo.status.device.HeatModuleState; +import com.iflytop.sgs.app.model.dto.SetIgnoreItemDTO; import com.iflytop.sgs.app.model.vo.GetRequireOutTrayVO; +import com.iflytop.sgs.app.service.api.SystemConfigService; +import com.iflytop.sgs.common.enums.SystemConfigCode; +import jakarta.annotation.PostConstruct; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -16,9 +20,22 @@ import java.util.List; @RequiredArgsConstructor public class SelfTestService { private final DeviceStateService deviceStateService; + private final SystemConfigService systemConfigService; @Getter private final SelfTestState selfTestState = new SelfTestState(); + @PostConstruct + private void init() { + Boolean doorIsIgnore = systemConfigService.getSystemConfigBooleanByCode(SystemConfigCode.ignore_door_self_test); + selfTestState.setDoorOriginIsIgnore(doorIsIgnore); + Boolean dualRobotIsIgnore = systemConfigService.getSystemConfigBooleanByCode(SystemConfigCode.ignore_dual_robot_self_test); + selfTestState.setDualRobotOriginIsIgnore(dualRobotIsIgnore); + Boolean transferXIsIgnore = systemConfigService.getSystemConfigBooleanByCode(SystemConfigCode.ignore_transfer_x_self_test); + selfTestState.setTransferXOriginIsIgnore(transferXIsIgnore); + Boolean transferZIsIgnore = systemConfigService.getSystemConfigBooleanByCode(SystemConfigCode.ignore_transfer_z_self_test); + selfTestState.setTransferZOriginIsIgnore(transferZIsIgnore); + } + /** * 是否存在需要移除的托盘 */ @@ -27,8 +44,24 @@ public class SelfTestService { List heatModuleStateList = deviceStateService.getDeviceState().getHeatModule(); for (HeatModuleState heatModuleState : heatModuleStateList) { //TODO 只获取存在托盘的 - getRequireOutTrayList.add(new GetRequireOutTrayVO(heatModuleState.getModuleCode(),heatModuleState.isTrayStatus())); + getRequireOutTrayList.add(new GetRequireOutTrayVO(heatModuleState.getModuleCode(), heatModuleState.isTrayStatus())); } return getRequireOutTrayList; } + + /** + * 设置自检项是否忽略 + */ + public void setIgnoreItem(SetIgnoreItemDTO setIgnoreItemDTO) { + systemConfigService.setSystemConfigByCode(setIgnoreItemDTO.getIgnoreSelfTestType(), setIgnoreItemDTO.getIgnore().toString()); + if(setIgnoreItemDTO.getIgnoreSelfTestType().equals(SystemConfigCode.ignore_door_self_test)) { + selfTestState.setDoorOriginIsIgnore(setIgnoreItemDTO.getIgnore()); + } else if (setIgnoreItemDTO.getIgnoreSelfTestType().equals(SystemConfigCode.ignore_dual_robot_self_test)) { + selfTestState.setDualRobotOriginIsIgnore(setIgnoreItemDTO.getIgnore()); + }else if(setIgnoreItemDTO.getIgnoreSelfTestType().equals(SystemConfigCode.ignore_transfer_x_self_test)){ + selfTestState.setTransferXOriginIsIgnore(setIgnoreItemDTO.getIgnore()); + }else if(setIgnoreItemDTO.getIgnoreSelfTestType().equals(SystemConfigCode.ignore_transfer_z_self_test)){ + selfTestState.setTransferZOriginIsIgnore(setIgnoreItemDTO.getIgnore()); + } + } } diff --git a/src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java b/src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java index 5b7fdb9..bf06d5e 100644 --- a/src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java +++ b/src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java @@ -3,7 +3,7 @@ package com.iflytop.sgs.common.enums; import lombok.Getter; /** - * 系统配置累 + * 系统配置 */ @Getter public enum SystemConfigCode { @@ -15,11 +15,15 @@ public enum SystemConfigCode { scale_vacant("空气转换系数"), volume_clean("清洁时加水的量"), number_reduce("抽液时机蠕动泵的转数"), - cycle_clean_max - ("清洁最大次数"), - liquid_max_speed - ("蠕动泵最大转速"); + cycle_clean_max("清洁最大次数"), + liquid_max_speed("蠕动泵最大转速"), + ignore_door_self_test("忽略门自检"), + ignore_dual_robot_self_test("忽略加液升降自检"), + ignore_transfer_x_self_test("忽略转运机械臂X轴自检"), + ignore_transfer_z_self_test("忽略转运机械臂Z轴自检"), + + ; private String description; diff --git a/src/main/resources/sql/init.sql b/src/main/resources/sql/init.sql index 2f5cd32..6580130 100644 --- a/src/main/resources/sql/init.sql +++ b/src/main/resources/sql/init.sql @@ -56,7 +56,11 @@ VALUES ('1', '稀硝酸容量与泵行程比率', 'scale_thin', '1'), ('6', '空气转换系数', 'volume_clean', '1'), ('7', '清洁时加水的量 ml', 'number_reduce', '5'), ('8', '抽液时机蠕动泵的转数', 'cycle_clean_max', '8'), - ('9', '蠕动泵最大转速限制', 'liquid_max_speed', '150'); + ('9', '蠕动泵最大转速限制', 'liquid_max_speed', '150'), + ('10', '忽略门自检', 'ignore_door_self_test', 'false'), + ('11', '忽略加液升降自检', 'ignore_dual_robot_self_test', 'false'), + ('12', '忽略转运机械臂X轴自检', 'ignore_transfer_x_self_test', 'false'), + ('13', '忽略转运机械臂Z轴自检', 'ignore_transfer_z_self_test', 'false'); -- 系统日志 表