diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java index 90fed59..a39f546 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java @@ -74,7 +74,7 @@ public class OutTrayCommand extends BaseCommandHandler { transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 deviceStateService.getDeviceState().getTransferModule().setTrayStatus(false);//设定托盘夹爪为FALSE deviceStateService.getDeviceState().getHeatModuleByCode(targetHeatModuleCode).setTrayStatus(false);//设定目标加热模块托盘状态 - deviceStateService.getDeviceState().getSolutionModule().setFeedAreaTrayStatus(true);//设定上料区托盘状态 + //deviceStateService.getDeviceState().getSolutionModule().setFeedAreaTrayStatus(true);//设定上料区托盘状态 } finally { deviceStateService.getCommandMutexState().get().setTransferCommandExecuting(false); } diff --git a/src/main/java/com/iflytop/sgs/app/controller/UserController.java b/src/main/java/com/iflytop/sgs/app/controller/UserController.java index 6860a30..4f5ba07 100644 --- a/src/main/java/com/iflytop/sgs/app/controller/UserController.java +++ b/src/main/java/com/iflytop/sgs/app/controller/UserController.java @@ -40,6 +40,7 @@ public class UserController { User existingUser = userService.getOne(new LambdaQueryWrapper().eq(User::getUsername, user.getUsername())); if (existingUser == null) { user.setFixedUser(null); + user.setDeleted(Deleted.DISABLE); boolean isSuccess = userService.save(user); if (isSuccess) { return Result.success(); diff --git a/src/main/java/com/iflytop/sgs/app/service/api/ContainerService.java b/src/main/java/com/iflytop/sgs/app/service/api/ContainerService.java index f193334..5700af0 100644 --- a/src/main/java/com/iflytop/sgs/app/service/api/ContainerService.java +++ b/src/main/java/com/iflytop/sgs/app/service/api/ContainerService.java @@ -1,5 +1,6 @@ package com.iflytop.sgs.app.service.api; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iflytop.sgs.app.mapper.ContainerMapper; import com.iflytop.sgs.app.model.entity.Container; @@ -20,5 +21,9 @@ public class ContainerService extends ServiceImpl { return this.list(); } + public Container getBySolutionsId(Long solutionsId) { + return this.getOne(new LambdaQueryWrapper().eq(Container::getSolutionId,solutionsId)); + } + } diff --git a/src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java b/src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java index 18ce734..f3113ef 100644 --- a/src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java +++ b/src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java @@ -70,6 +70,8 @@ public class CraftsStepService { return switch (method) { case "preHeat" -> preHeat(heatModuleCode, params, craftMonitor); case "addLiquid" -> addLiquid(heatModuleCode, params, craftMonitor); + case "addThin" -> addThin(heatModuleCode, params, craftMonitor); + case "addThick" -> addThick(heatModuleCode, params, craftMonitor); case "heat" -> heat(heatModuleCode, params, craftMonitor); case "reduceLiquid" -> reduceLiquid(heatModuleCode, params, craftMonitor); case "clean" -> clean(heatModuleCode, params, craftMonitor); @@ -88,7 +90,7 @@ public class CraftsStepService { heatModuleService.heatRodOpen(HeatModuleCode.heat_module_04, temperature); deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setTargetTemperature(temperature);//设置加热温度 deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setHeatingType(HeatingType.heating);//加热中 - webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(HeatModuleCode.heat_module_04.toString(), "退火区开始预热", temperature)); + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(HeatModuleCode.heat_module_04.toString(), "退火区加热中", temperature)); return true; } @@ -98,6 +100,7 @@ public class CraftsStepService { public boolean addLiquid(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception { try { /*工艺监控*/ + log.info("工艺{},-------------------------------加液------------------------------", heatModuleCode); JSONObject result = new JSONObject(); List finishColumns = new ArrayList<>(); result.set(ResultCode.SUCCESS.getCode(), finishColumns); @@ -106,6 +109,7 @@ public class CraftsStepService { /*工艺监控结束*/ /*获取配置信息*/ + log.info("工艺{},获取配置信息", heatModuleCode); deviceStateService.getDeviceState().getSolutionModule().setPumping(true); Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹爪位置点 @@ -117,7 +121,6 @@ public class CraftsStepService { Integer containerId = params.getInt("containerId");//容器id Double volume = params.getDouble("volume");//量 JSONArray jsonArray = params.getJSONArray("columns");//列数 - //Assert.isTrue(containerId != null && volume != null, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误 Container container = containerService.getById(containerId);//容器id Solutions solutions = solutionsService.getById(container.getSolutionId());//获取溶液 Integer channel = container.getChannel();//获取阀门通道 @@ -131,21 +134,28 @@ public class CraftsStepService { transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_liquid);//申请转运模组并等待 /*预充开始*/ + log.info("工艺{},预充开始", heatModuleCode); log.info("工艺{},加液机械臂上升", heatModuleCode); solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + log.info("工艺{},电磁阀对应通道打开", heatModuleCode); solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开 + log.info("工艺{},加液机械臂下降至预充位置", heatModuleCode); solutionModuleService.solutionMotorMove(preFillPosition);//加液机械臂下降至预充位置 + log.info("工艺{},排空", heatModuleCode); solutionModuleService.liquidPumpMove(-drainDistance);//排空 + log.info("工艺{},电磁阀对应通道打开", heatModuleCode); solutionModuleService.liquidValveSwitchByChannel(channel);//电磁阀对应通道打开 + log.info("工艺{},预充", heatModuleCode); solutionModuleService.liquidPumpMove(preFillDistance);//预充 + log.info("工艺{},加液机械臂上升", heatModuleCode); solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 /*预充结束*/ /*移动至加液区开始*/ + log.info("工艺{},移动至加液区", heatModuleCode); boolean heatTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//获取加热区试管架 if (heatTrayExist) {//加热区存在试管架 log.info("工艺{},加热区存在托盘", heatModuleCode); - log.info("工艺{},机械臂移动至加热区", heatModuleCode); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode.name())); log.info("工艺{},将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离", heatModuleCode); transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离 @@ -158,9 +168,8 @@ public class CraftsStepService { } else {//上料区存在托盘 boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取上料区传感器状态 - Assert.isTrue(feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_NO_TRAY)); + //Assert.isTrue(feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_NO_TRAY)); log.info("工艺{},上料区存在托盘", heatModuleCode); - log.info("工艺{},机械臂移动至上料区", heatModuleCode); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至上料区", feedAreaTrayPoint3D)); log.info("工艺{},将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离", heatModuleCode); transferModuleService.transferXMove(feedAreaTrayPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离 @@ -179,7 +188,161 @@ public class CraftsStepService { deviceStateService.getDeviceState().getSolutionModule().setPumping(true);//正在加液 deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(true);//托盘状态 boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态 - Assert.isTrue(clawTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加液区无托盘 + //Assert.isTrue(clawTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加液区无托盘 + /*移动至加液区结束*/ + + + /*开始加液*/ + log.info("工艺{},开始加液", heatModuleCode); + List columns = new ArrayList<>(); + if (jsonArray != null) { + jsonArray.forEach(item -> { + columns.add(Integer.parseInt(item.toString())); + }); + } else { + TubeState[] tubes = deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).getTubes(); + for (TubeState tube : tubes) { + if (tube.isNeedAddSolution()) { + columns.add(tube.getColumnNum()); + } + + } + } + if (!columns.isEmpty()) { + for (int i = 0; i < columns.size(); i++) { + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "移动加液机械臂到指定试管", i)); + double distance = Math.abs(columns.get(i) - 5) * trayTubeHorizontalSpacingDistance;//机械臂右移距离 + log.info("工艺{},机械臂移动到试管位置{}", heatModuleCode, i); + transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置 + log.info("工艺{},加液机械臂下降", heatModuleCode); + solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeAddPositon);//加液机械臂下降 + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "添加溶液", addLiquidDistance)); + log.info("工艺{},加液", heatModuleCode); + solutionModuleService.liquidPumpMove(addLiquidDistance);//加液 position + log.info("工艺{},加液机械臂上升", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + /*工艺监控开始*/ + finishColumns.add(i); + result.set("columns", finishColumns);//添加到结果 + craftMonitor.setCurrentStepResult(String.valueOf(result)); + craftMonitor.setDeviceState(JSONUtil.toJsonStr(deviceStateService.getDeviceState())); + craftMonitorService.saveOrUpdate(craftMonitor); + /*工艺监控结束*/ + } + } + /*结束加液*/ + + /*移动至加热区*/ + log.info("工艺{},移动至加热区", heatModuleCode); + boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘 + //Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用 + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode)); + log.info("工艺{},加液机械臂上升", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); + transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点 + log.info("工艺{},Z轴下降至夹取点", heatModuleCode); + transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 + log.info("工艺{},X轴移出卡槽", heatModuleCode); + transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴移出卡槽 + transferModuleService.transferZMoveZero();//Z轴抬升至最高 + deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(true);//加热区托盘状态 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(true);//托盘状态 + deviceStateService.getDeviceState().getSolutionModule().setPumping(false);//正在加液 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(false);//托盘状态 + return true; + } finally { + deviceStateService.getDeviceState().getSolutionModule().setPumping(false); + transferModuleService.releaseTransferModule();//释放转运模组 + } + } + + /* + * 加稀硝酸 + * */ + public boolean addThin(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception { + try { + log.info("工艺{},-------------------------------------加稀硝酸-------------------------------------", heatModuleCode); + /*工艺监控*/ + log.info("工艺{},工艺监控", heatModuleCode); + JSONObject result = new JSONObject(); + List finishColumns = new ArrayList<>(); + result.set(ResultCode.SUCCESS.getCode(), finishColumns); + craftMonitor.setCurrentStepResult(String.valueOf(result)); + craftMonitorService.saveOrUpdate(craftMonitor); + /*工艺监控结束*/ + + /*获取配置信息*/ + log.info("工艺{},获取配置信息", heatModuleCode); + deviceStateService.getDeviceState().getSolutionModule().setPumping(true); + Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 + Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹爪位置点 + Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点 + Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点 + Double drainDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.drain_distance);//排空距离 + Double preFillDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.pre_fill_distance);//预充距离 + Double preFillPosition = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownPreFillPositon).getPositon(); + Solutions solutions=solutionsService.getByCode(SolutionCode.thin.name());//获取溶液 + Container container=containerService.getBySolutionsId(solutions.getId());//获取容器 + Double volume = params.getDouble("volume");//量 + JSONArray jsonArray = params.getJSONArray("columns");//列数 + Integer channel = container.getChannel();//获取阀门通道 + Double trayTubeHorizontalSpacingDistance = devicePositionService.getPosition(DevicePositionCode.trayTubeHorizontalSpacingDistance).getDistance(); //托盘试管水平间距 + double scale = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.valueOf(solutions.getCode()));//获取转换比 + Double solutionModuleMotorDownInTubeAddPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeAddPositon).getPositon(); //加液模块电机下降进入试管加液位置 + double addLiquidDistance = volume * scale; + Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D();//加热位1坐标 + Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置 + + /*获取参数结束*/ + + log.info("工艺{},申请转运模组并等待", heatModuleCode); + transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_liquid);//申请转运模组并等待 + + /*预充开始*/ + log.info("工艺{},预充开始", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1 + solutionModuleService.solutionMotorMove(liquidAreaPreFillPoint);//加液机械臂下降至至预充点位 + log.info("工艺{},加液机械臂上升", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + log.info("工艺{},电磁阀对应通道打开", heatModuleCode); + solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开 + log.info("工艺{},加液机械臂下降至预充位置", heatModuleCode); + solutionModuleService.solutionMotorMove(preFillPosition);//加液机械臂下降至预充位置 + log.info("工艺{},排空", heatModuleCode); + solutionModuleService.liquidPumpMove(-drainDistance);//排空 + log.info("工艺{},电磁阀对应通道打开", heatModuleCode); + solutionModuleService.liquidValveSwitchByChannel(channel);//电磁阀对应通道打开 + log.info("工艺{},预充", heatModuleCode); + solutionModuleService.liquidPumpMove(preFillDistance);//预充 + log.info("工艺{},加液机械臂上升", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + /*预充结束*/ + + /*移动至加液区开始*/ + boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取上料区传感器状态 + //Assert.isTrue(feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_NO_TRAY)); + log.info("工艺{},上料区存在托盘", heatModuleCode); + log.info("工艺{},机械臂移动至上料区", heatModuleCode); + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至上料区", feedAreaTrayPoint3D)); + log.info("工艺{},将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离", heatModuleCode); + transferModuleService.transferXMove(feedAreaTrayPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离 + log.info("工艺{},Z轴下降至夹取点,使托盘落入石墨加热盘", heatModuleCode); + transferModuleService.transferZMove(feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 + log.info("工艺{},X轴进入卡槽", heatModuleCode); + transferModuleService.transferXMoveBy(-transferModuleXPickTrayMoveDistance);//X轴进入卡槽 + deviceStateService.getDeviceState().getSolutionModule().setFeedAreaTrayStatus(false);//加热区托盘状态 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInFeedArea(false);//托盘状态 + log.info("工艺{},Z轴抬升至最高", heatModuleCode); + transferModuleService.transferZMoveZero();//Z轴抬升至最高 + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加液区", DevicePositionCode.liquidAreaTrayPoint.name())); + log.info("工艺{},移动至加液时托盘位置点", heatModuleCode); + transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 + deviceStateService.getDeviceState().getSolutionModule().setPumping(true);//正在加液 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(true);//托盘状态 + boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态 + //Assert.isTrue(clawTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加液区无托盘 /*移动至加液区结束*/ @@ -224,7 +387,186 @@ public class CraftsStepService { /*移动至加热区*/ boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘 - Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用 + //Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用 + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode)); + log.info("工艺{},加液机械臂上升", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); + transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点 + log.info("工艺{},Z轴下降至夹取点", heatModuleCode); + transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 + log.info("工艺{},X轴移出卡槽", heatModuleCode); + transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴移出卡槽 + transferModuleService.transferZMoveZero();//Z轴抬升至最高 + deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(true);//加热区托盘状态 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(true);//托盘状态 + deviceStateService.getDeviceState().getSolutionModule().setPumping(false);//正在加液 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(false);//托盘状态 + return true; + } finally { + deviceStateService.getDeviceState().getSolutionModule().setPumping(false); + transferModuleService.releaseTransferModule();//释放转运模组 + } + } + + /* + * 加浓硝酸 + * */ + public boolean addThick(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception { + try { + log.info("工艺{},------------------------------加浓硝酸---------------------------", heatModuleCode); + /*工艺监控*/ + log.info("工艺{},工艺监控", heatModuleCode); + JSONObject result = new JSONObject(); + List finishColumns = new ArrayList<>(); + result.set(ResultCode.SUCCESS.getCode(), finishColumns); + craftMonitor.setCurrentStepResult(String.valueOf(result)); + craftMonitorService.saveOrUpdate(craftMonitor); + /*工艺监控结束*/ + + /*获取配置信息*/ + log.info("工艺{},获取配置信息", heatModuleCode); + deviceStateService.getDeviceState().getSolutionModule().setPumping(true); + Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 + Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点 + Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点 + Double drainDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.drain_distance);//排空距离 + Double preFillDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.pre_fill_distance);//预充距离 + Double preFillPosition = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownPreFillPositon).getPositon(); + Solutions solutions=solutionsService.getByCode(SolutionCode.thick.name());//获取溶液 + Container container=containerService.getBySolutionsId(solutions.getId());//获取容器 + Double volume = params.getDouble("volume");//量 + JSONArray jsonArray = params.getJSONArray("columns");//列数 + Integer channel = container.getChannel();//获取阀门通道 + Double trayTubeHorizontalSpacingDistance = devicePositionService.getPosition(DevicePositionCode.trayTubeHorizontalSpacingDistance).getDistance(); //托盘试管水平间距 + double scale = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.valueOf(solutions.getCode()));//获取转换比 + Double solutionModuleMotorDownInTubeAddPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeAddPositon).getPositon(); //加液模块电机下降进入试管加液位置 + double addLiquidDistance = volume * scale; + Double reduceDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.reduce_distance);//抽液距离 + Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D(); + Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置 + /*获取参数结束*/ + + log.info("工艺{},申请转运模组并等待", heatModuleCode); + transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_liquid);//申请转运模组并等待 + + /*预充开始*/ + log.info("工艺{},预充开始", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1 + solutionModuleService.solutionMotorMove(liquidAreaPreFillPoint);//加液机械臂下降至至预充点位 + log.info("工艺{},加液机械臂上升", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + log.info("工艺{},电磁阀对应通道打开", heatModuleCode); + solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开 + log.info("工艺{},加液机械臂下降至预充位置", heatModuleCode); + solutionModuleService.solutionMotorMove(preFillPosition);//加液机械臂下降至预充位置 + log.info("工艺{},排空", heatModuleCode); + solutionModuleService.liquidPumpMove(-drainDistance);//排空 + log.info("工艺{},电磁阀对应通道打开", heatModuleCode); + solutionModuleService.liquidValveSwitchByChannel(channel);//电磁阀对应通道打开 + log.info("工艺{},预充", heatModuleCode); + solutionModuleService.liquidPumpMove(preFillDistance);//预充 + log.info("工艺{},加液机械臂上升", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + /*预充结束*/ + + /*移动至加液区*/ + boolean heatTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//获取加热区试管架 + //Assert.isTrue(heatTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//目标加热区无托盘 + log.info("工艺{},加热区存在托盘", heatModuleCode); + log.info("工艺{},机械臂移动至加热区", heatModuleCode); + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode.name())); + log.info("工艺{},将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离", heatModuleCode); + transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离 + log.info("工艺{},Z轴下降至夹取点", heatModuleCode); + transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点 + log.info("工艺{},X轴进入卡槽", heatModuleCode); + transferModuleService.transferXMoveBy(-transferModuleXPickTrayMoveDistance);//X轴进入卡槽 + deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(false);//加热区托盘状态 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(false);//托盘状态 + log.info("工艺{},Z轴抬升至最高", heatModuleCode); + transferModuleService.transferZMoveZero();//Z轴抬升至最高 + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加液区", DevicePositionCode.liquidAreaTrayPoint.name())); + log.info("工艺{},移动至加液时托盘位置点", heatModuleCode); + transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(true);//托盘状态 + boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态 + //Assert.isTrue(clawTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加液区无托盘 + /*移动至加液区结束*/ + + + /*开始抽液*/ + log.info("工艺{},开始抽液", heatModuleCode); + List reduceColumns = new ArrayList<>(); + TubeState[] tubes = deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).getTubes(); + for (TubeState tube : tubes) { + if (tube.isNeedAddSolution()) { + reduceColumns.add(tube.getColumnNum()); + } + } + if (!reduceColumns.isEmpty()) { + for (int i = 0; i < reduceColumns.size(); i++) { + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "移动加液机械臂到指定试管", i)); + double distance = Math.abs(reduceColumns.get(i) - 5) * trayTubeHorizontalSpacingDistance;//机械臂右移距离 + log.info("工艺{},机械臂移动到试管位置{}", heatModuleCode, i); + transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置 + log.info("工艺{},加液机械臂下降", heatModuleCode); + solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeAddPositon);//加液机械臂下降 + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "抽取溶液", addLiquidDistance)); + log.info("工艺{},加液", heatModuleCode); + solutionModuleService.liquidPumpMove(-reduceDistance);//加液 position + log.info("工艺{},加液机械臂上升", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + } + } + + /*抽液结束*/ + + /*移动至加液区*/ + log.info("工艺{},移动至加液区", heatModuleCode); + transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 + /*移动至加液区*/ + + /*开始加液*/ + log.info("工艺{},开始加液", heatModuleCode); + List addColumns; + if (jsonArray != null) { + addColumns = new ArrayList<>(); + jsonArray.forEach(item -> { + addColumns.add(Integer.parseInt(item.toString())); + }); + } else { + addColumns = reduceColumns; + } + if (!addColumns.isEmpty()) { + for (int i = 0; i < addColumns.size(); i++) { + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "移动加液机械臂到指定试管", addColumns.get(i))); + double distance = Math.abs(addColumns.get(i) - 5) * trayTubeHorizontalSpacingDistance;//机械臂右移距离 + log.info("工艺{},机械臂移动到试管位置{}", heatModuleCode, i); + transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置 + log.info("工艺{},加液机械臂下降", heatModuleCode); + solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeAddPositon);//加液机械臂下降 + webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "添加溶液", addLiquidDistance)); + log.info("工艺{},加液", heatModuleCode); + solutionModuleService.liquidPumpMove(addLiquidDistance);//加液 position + log.info("工艺{},加液机械臂上升", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + /*工艺监控开始*/ + finishColumns.add(i); + result.set("columns", finishColumns);//添加到结果 + craftMonitor.setCurrentStepResult(String.valueOf(result)); + craftMonitor.setDeviceState(JSONUtil.toJsonStr(deviceStateService.getDeviceState())); + craftMonitorService.saveOrUpdate(craftMonitor); + /*工艺监控结束*/ + } + } + /*结束加液*/ + + /*移动至加热区*/ + log.info("工艺{},移动至加热区", heatModuleCode); + boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘 + //Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用 webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode)); log.info("工艺{},加液机械臂上升", heatModuleCode); solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 @@ -265,7 +607,6 @@ public class CraftsStepService { if (height > 50) { throw new AppException(ResultCode.CRAFT_PARAMS_MISTAKE); } - //Assert.isTrue(height != null && height < 4, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误 Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点 Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点 @@ -275,7 +616,7 @@ public class CraftsStepService { /*获取参数结束*/ boolean heatTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//获取加热区传感器状态 - Assert.isTrue(heatTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//加热区无托盘 + //Assert.isTrue(heatTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//加热区无托盘 log.info("工艺{},申请转运模组并等待", heatModuleCode); transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_liquid);//申请转运模组并等待 log.info("工艺{},加液机械臂上升", heatModuleCode); @@ -343,7 +684,7 @@ public class CraftsStepService { /*移动至加热区开始*/ log.info("工艺{},移动至托盘至加液位置点", heatModuleCode); boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘 - Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用 + //Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用 webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode)); log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点 @@ -379,7 +720,6 @@ public class CraftsStepService { Double temperature = params.getDouble("temperature");//温度 Integer time = params.getInt("time");//秒 - //Assert.isTrue(temperature != null && time != null, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.heating); //设置加热区状态 加热中 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTemperature(temperature);//将加热温度设定为目标温度 log.info("工艺{},开始加热", heatModuleCode); @@ -422,6 +762,7 @@ public class CraftsStepService { * */ public boolean clean(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception { try { + log.info("工艺{},----------------------------------清洗---------------------------------------------", heatModuleCode); /*保存到监控开始*/ JSONObject result = new JSONObject(); craftMonitor.setCurrentStepResult(String.valueOf(result)); @@ -433,9 +774,8 @@ public class CraftsStepService { Double volume = params.getDouble("volume") == null ? 2.0 : params.getDouble("volume");//加水量 Integer cycle = params.getInt("cycle");//次数 Double height = params.getDouble("height");//下降进入试管的高度 - //Assert.isTrue(cycle != null && volume != null && height != null, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误 boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘 - Assert.isTrue(heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//提示工艺加热区无托盘 + //Assert.isTrue(heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//提示工艺加热区无托盘 Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点 Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点 @@ -448,6 +788,8 @@ public class CraftsStepService { Double drainDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.drain_distance);//排空距离 Double preFillDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.pre_fill_distance);//过量预充距离 Double preFillPosition = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownPreFillPositon).getPositon();//机械臂预充时下降距离 + Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D(); + Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置 webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleTrayClawPoint3D)); /*获取参数结束*/ @@ -503,6 +845,9 @@ public class CraftsStepService { /*预充开始*/ log.info("工艺{},清洗-预充开始", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1 + solutionModuleService.solutionMotorMove(liquidAreaPreFillPoint);//加液机械臂下降至至预充点位 solutionModuleService.liquidPumpMove(-drainDistance);//排空 solutionModuleService.solutionMotorMove(preFillPosition);//加液机械臂下降至预充位置 solutionModuleService.liquidValveSwitch(SolutionCode.water);//电磁阀对应通道打开 @@ -512,6 +857,8 @@ public class CraftsStepService { /*清洗开始*/ + log.info("工艺{},清洗开始", heatModuleCode); + transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 for (int i = 0; i < cycle; i++) { /*加*/ log.info("工艺{},电磁阀蒸馏水通道打开", heatModuleCode); @@ -532,6 +879,7 @@ public class CraftsStepService { Thread.sleep(1000); /*抽*/ solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开 + transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 for (int j = 0; j < columns.size(); j++) { double distance = Math.abs(columns.get(j) - 5) * trayTubeHorizontalSpacingDistance;//x轴移动距离 webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动到试管位置", j)); @@ -546,7 +894,7 @@ public class CraftsStepService { log.info("工艺{},加液模块上升至最高,移出试管", heatModuleCode); solutionModuleService.solutionMotorMoveZero();//加液模块上升至最高,移出试管 } - result.set("cycle", i+1);//添加到结果 + result.set("cycle", i + 1);//添加到结果 craftMonitor.setCurrentStepResult(String.valueOf(result)); craftMonitor.setDeviceState(JSONUtil.toJsonStr(deviceStateService.getDeviceState())); craftMonitorService.saveOrUpdate(craftMonitor);//保存到监控 @@ -554,7 +902,6 @@ public class CraftsStepService { } /*清洗结束*/ - log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点 log.info("工艺{},Z轴下降至夹取点,使托盘落入石墨加热盘", heatModuleCode); @@ -588,7 +935,6 @@ public class CraftsStepService { Double temperature = params.getDouble("temperature");//秒 Integer time = params.getInt("time");//秒 - //Assert.isTrue(temperature != null && time != null, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误 webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "打开加热棒", temperature)); heatModuleService.heatRodOpen(heatModuleCode, temperature);//打开加热棒 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.heating); //设置加热区状态 烘干中 @@ -637,9 +983,8 @@ public class CraftsStepService { craftMonitorService.saveOrUpdate(craftMonitor); Double temperature = params.getDouble("temperature");//退火温度 Integer time = params.getInt("time");//秒 - //Assert.isTrue(temperature != null && time != null, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误 boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode); - Assert.isTrue(heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//提示加热模块无托盘 + //Assert.isTrue(heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//提示加热模块无托盘 while (deviceSensorService.getTrayStateByHeatModuleCode(HeatModuleCode.heat_module_04)) {//判断退火区是否被占用 delay(10);//等待10秒 } @@ -793,6 +1138,56 @@ public class CraftsStepService { public void finish(HeatModuleCode heatModuleCode, CraftMonitor craftMonitor) throws Exception { craftMonitorService.removeById(craftMonitor.getId()); List trayList = deviceStateService.getDeviceState().getTrays(); + trayList.removeIf((tray) -> tray.getHeatModuleCode().equals(heatModuleCode)); + // moveToFeedModule(heatModuleCode); + } + /*结束后移动至上料区*/ + public void moveToFeedModule(HeatModuleCode heatModuleCode) throws Exception { + try { + boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//上料区托盘状态 + while (feedTrayExist) { + deviceLightSoundService.openBeep(CmdBeepMode.info); + delay(2); + deviceLightSoundService.closeBeep(); + } + + Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点 + Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 + Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹爪位置点 + + transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_feed);//获取转运模组锁 + log.info("工艺{},加液机械臂上升", heatModuleCode); + solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + log.info("工艺{},Z轴抬升至最高", heatModuleCode); + transferModuleService.transferZMoveZero();//Z轴抬升至最高 + log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); + transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + log.info("工艺{},Z轴下降至夹取点", heatModuleCode); + transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 + log.info("工艺{},X轴移出卡槽", heatModuleCode); + transferModuleService.transferXMoveBy(-transferModuleXPickTrayMoveDistance);//X轴移出卡槽 + log.info("工艺{},Z轴抬升至最高", heatModuleCode); + transferModuleService.transferZMoveZero();//Z轴抬升至最高 + deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(false);//加热区托盘状态 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(false);//托盘状态 + log.info("工艺{},将X轴移动至上料区托盘夹取点", heatModuleCode); + transferModuleService.transferXMove(feedAreaTrayPoint3D.getX());//将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离 + log.info("工艺{},Z轴下降至夹取点", heatModuleCode); + transferModuleService.transferZMove(feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 + log.info("工艺{},X轴进入卡槽", heatModuleCode); + transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴进入卡槽 + log.info("工艺{},Z轴抬升至最高", heatModuleCode); + transferModuleService.transferZMoveZero();//Z轴抬升至最高 + log.info("工艺{},转运模组释放", heatModuleCode); + transferModuleService.releaseTransferModule();//转运模组释放 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInFeedArea(true);//托盘状态 + deviceLightSoundService.openBeep(CmdBeepMode.info); + delay(2); + deviceLightSoundService.closeBeep(); + } finally { + transferModuleService.releaseTransferModule();//转运模组释放 + } + List trayList = deviceStateService.getDeviceState().getTrays(); trayList.removeIf((tray)->tray.getHeatModuleCode().equals(heatModuleCode)); } diff --git a/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java b/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java index b0bf414..e1d538a 100644 --- a/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java +++ b/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java @@ -43,12 +43,12 @@ public class TransferModuleService { // 1. 先把自己加入对应类型的队列尾部 Thread current = Thread.currentThread(); switch (type) { - case move_heat: - heatQueue.add(current); - break; case move_liquid: solutionQueue.add(current); break; + case move_heat: + heatQueue.add(current); + break; case move_anneal: annealQueue.add(current); break; diff --git a/src/main/resources/sql/init.sql b/src/main/resources/sql/init.sql index cfde720..b3834bd 100644 --- a/src/main/resources/sql/init.sql +++ b/src/main/resources/sql/init.sql @@ -7,7 +7,7 @@ CREATE TABLE IF NOT EXISTS user password TEXT, role TEXT, fixed_user TEXT, - deleted TEXT, + deleted TEXT DEFAULT 'DISABLE', create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP );