From e260cdb928cb91bf4b8bf933d963050353cdca55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Sat, 1 Mar 2025 14:12:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qyft/ms/app/common/constant/Commands.java | 117 +++++++++++++++++++++ .../qyft/ms/app/common/constant/SysSettings.java | 27 +++++ .../app/common/constant/WebSocketMessageType.java | 25 +++++ .../ms/app/common/enums/DirectiveTypeEnum.java | 34 ++++++ .../qyft/ms/app/common/result/CMDResultCode.java | 27 +++++ .../com/qyft/ms/app/config/WebSocketConfig.java | 14 +++ .../com/qyft/ms/app/config/WebSocketServer.java | 58 ++++++++++ .../com/qyft/ms/app/controller/CMDController.java | 47 +++++++++ .../com/qyft/ms/app/controller/LogsController.java | 55 ++++++++++ .../ms/app/controller/SysSettingsController.java | 56 ++++++++++ .../java/com/qyft/ms/app/mapper/LogsMapper.java | 12 +++ .../com/qyft/ms/app/mapper/SysSettingsMapper.java | 29 +++++ .../com/qyft/ms/app/model/bo/CraftsStepMethod.java | 52 +++++++++ .../com/qyft/ms/app/model/bo/CraftsStepStatus.java | 35 ++++++ .../java/com/qyft/ms/app/model/bo/TubeSol.java | 23 ++++ .../com/qyft/ms/app/model/dto/BaseDataDTO.java | 14 +++ .../qyft/ms/app/model/dto/CmdInjectFluidDTO.java | 13 +++ .../com/qyft/ms/app/model/dto/ContainerDTO.java | 14 +++ .../com/qyft/ms/app/model/dto/InjectFluid.java | 14 +++ .../java/com/qyft/ms/app/model/dto/LogDTO.java | 10 ++ .../com/qyft/ms/app/model/dto/PauseCraftsDto.java | 11 ++ .../com/qyft/ms/app/model/dto/ResumeCraftsDto.java | 11 ++ .../com/qyft/ms/app/model/dto/StartCraftsDTO.java | 13 +++ .../com/qyft/ms/app/model/dto/StartHeatDTO.java | 13 +++ .../com/qyft/ms/app/model/dto/StopCraftsDto.java | 11 ++ .../com/qyft/ms/app/model/dto/StopTaskDTO.java | 10 ++ .../com/qyft/ms/app/model/dto/SysSettingsDTO.java | 16 +++ .../java/com/qyft/ms/app/model/dto/TaskDTO.java | 10 ++ .../com/qyft/ms/app/model/dto/WebsocketDTO.java | 22 ++++ .../com/qyft/ms/app/model/entity/Container.java | 35 ++++++ .../java/com/qyft/ms/app/model/entity/Crafts.java | 25 +++++ .../java/com/qyft/ms/app/model/entity/Logs.java | 30 ++++++ .../java/com/qyft/ms/app/model/entity/Ores.java | 20 ++++ .../com/qyft/ms/app/model/entity/Solutions.java | 20 ++++ .../com/qyft/ms/app/model/entity/SysSettings.java | 43 ++++++++ .../com/qyft/ms/app/model/entity/TaskSteps.java | 30 ++++++ .../java/com/qyft/ms/app/model/entity/Tasks.java | 35 ++++++ .../java/com/qyft/ms/app/model/form/CMDForm.java | 23 ++++ .../java/com/qyft/ms/app/model/vo/BaseDataVO.java | 27 +++++ .../com/qyft/ms/app/model/vo/ContainerListVO.java | 13 +++ .../com/qyft/ms/app/model/vo/CraftsStepResult.java | 23 ++++ .../com/qyft/ms/app/model/vo/ExecutionResult.java | 22 ++++ .../com/qyft/ms/app/model/vo/OresCraftsListVO.java | 30 ++++++ .../com/qyft/ms/app/model/vo/SysSettingResult.java | 14 +++ .../com/qyft/ms/app/model/vo/SysSettingVO.java | 43 ++++++++ .../java/com/qyft/ms/app/model/vo/TaskListVO.java | 35 ++++++ .../com/qyft/ms/app/model/vo/WebsocketResult.java | 18 ++++ .../java/com/qyft/ms/app/service/CMDService.java | 61 +++++++++++ .../java/com/qyft/ms/app/service/ILogsService.java | 11 ++ .../qyft/ms/app/service/ISysSettingsService.java | 24 +++++ .../com/qyft/ms/app/service/StatusService.java | 37 +++++++ .../com/qyft/ms/app/service/WebSocketService.java | 32 ++++++ .../qyft/ms/app/service/impl/ILogsServiceImpl.java | 29 +++++ .../app/service/impl/ISysSettingsServiceImpl.java | 75 +++++++++++++ .../java/com/qyft/ms/common/constant/Commands.java | 117 --------------------- .../com/qyft/ms/common/constant/SysSettings.java | 27 ----- .../ms/common/constant/WebSocketMessageType.java | 25 ----- .../com/qyft/ms/common/result/CMDResultCode.java | 27 ----- .../java/com/qyft/ms/config/WebSocketConfig.java | 14 --- .../java/com/qyft/ms/config/WebSocketServer.java | 59 ----------- .../java/com/qyft/ms/controller/CMDController.java | 47 --------- .../com/qyft/ms/controller/LogsController.java | 55 ---------- .../qyft/ms/controller/SysSettingsController.java | 56 ---------- .../ms/device/handler/DeviceMessageHandler.java | 4 +- .../qyft/ms/device/service/DeviceStepService.java | 4 +- .../java/com/qyft/ms/enums/DirectiveTypeEnum.java | 34 ------ src/main/java/com/qyft/ms/mapper/LogsMapper.java | 12 --- .../java/com/qyft/ms/mapper/SysSettingsMapper.java | 29 ----- .../com/qyft/ms/model/bo/CraftsStepMethod.java | 52 --------- .../com/qyft/ms/model/bo/CraftsStepStatus.java | 35 ------ src/main/java/com/qyft/ms/model/bo/TubeSol.java | 23 ---- .../java/com/qyft/ms/model/dto/BaseDataDTO.java | 14 --- .../com/qyft/ms/model/dto/CmdInjectFluidDTO.java | 13 --- .../java/com/qyft/ms/model/dto/ContainerDTO.java | 14 --- .../java/com/qyft/ms/model/dto/InjectFluid.java | 14 --- src/main/java/com/qyft/ms/model/dto/LogDTO.java | 10 -- .../java/com/qyft/ms/model/dto/PauseCraftsDto.java | 11 -- .../com/qyft/ms/model/dto/ResumeCraftsDto.java | 11 -- .../java/com/qyft/ms/model/dto/StartCraftsDTO.java | 13 --- .../java/com/qyft/ms/model/dto/StartHeatDTO.java | 13 --- .../java/com/qyft/ms/model/dto/StopCraftsDto.java | 11 -- .../java/com/qyft/ms/model/dto/StopTaskDTO.java | 10 -- .../java/com/qyft/ms/model/dto/SysSettingsDTO.java | 16 --- src/main/java/com/qyft/ms/model/dto/TaskDTO.java | 10 -- .../java/com/qyft/ms/model/dto/WebsocketDTO.java | 22 ---- .../java/com/qyft/ms/model/entity/Container.java | 35 ------ src/main/java/com/qyft/ms/model/entity/Crafts.java | 25 ----- src/main/java/com/qyft/ms/model/entity/Logs.java | 30 ------ src/main/java/com/qyft/ms/model/entity/Ores.java | 20 ---- .../java/com/qyft/ms/model/entity/Solutions.java | 20 ---- .../java/com/qyft/ms/model/entity/SysSettings.java | 43 -------- .../java/com/qyft/ms/model/entity/TaskSteps.java | 30 ------ src/main/java/com/qyft/ms/model/entity/Tasks.java | 35 ------ src/main/java/com/qyft/ms/model/form/CMDForm.java | 23 ---- src/main/java/com/qyft/ms/model/vo/BaseDataVO.java | 27 ----- .../java/com/qyft/ms/model/vo/ContainerListVO.java | 13 --- .../com/qyft/ms/model/vo/CraftsStepResult.java | 23 ---- .../java/com/qyft/ms/model/vo/ExecutionResult.java | 22 ---- .../com/qyft/ms/model/vo/OresCraftsListVO.java | 30 ------ .../com/qyft/ms/model/vo/SysSettingResult.java | 14 --- .../java/com/qyft/ms/model/vo/SysSettingVO.java | 43 -------- src/main/java/com/qyft/ms/model/vo/TaskListVO.java | 35 ------ .../java/com/qyft/ms/model/vo/WebsocketResult.java | 18 ---- src/main/java/com/qyft/ms/service/CMDService.java | 61 ----------- .../java/com/qyft/ms/service/ILogsService.java | 11 -- .../com/qyft/ms/service/ISysSettingsService.java | 24 ----- .../java/com/qyft/ms/service/StatusService.java | 38 ------- .../java/com/qyft/ms/service/WebSocketService.java | 32 ------ .../com/qyft/ms/service/impl/ILogsServiceImpl.java | 29 ----- .../ms/service/impl/ISysSettingsServiceImpl.java | 75 ------------- src/main/resources/mapper/SysSettingsMapper.xml | 4 +- 111 files changed, 1554 insertions(+), 1556 deletions(-) create mode 100644 src/main/java/com/qyft/ms/app/common/constant/Commands.java create mode 100644 src/main/java/com/qyft/ms/app/common/constant/SysSettings.java create mode 100644 src/main/java/com/qyft/ms/app/common/constant/WebSocketMessageType.java create mode 100644 src/main/java/com/qyft/ms/app/common/enums/DirectiveTypeEnum.java create mode 100644 src/main/java/com/qyft/ms/app/common/result/CMDResultCode.java create mode 100644 src/main/java/com/qyft/ms/app/config/WebSocketConfig.java create mode 100644 src/main/java/com/qyft/ms/app/config/WebSocketServer.java create mode 100644 src/main/java/com/qyft/ms/app/controller/CMDController.java create mode 100644 src/main/java/com/qyft/ms/app/controller/LogsController.java create mode 100644 src/main/java/com/qyft/ms/app/controller/SysSettingsController.java create mode 100644 src/main/java/com/qyft/ms/app/mapper/LogsMapper.java create mode 100644 src/main/java/com/qyft/ms/app/mapper/SysSettingsMapper.java create mode 100644 src/main/java/com/qyft/ms/app/model/bo/CraftsStepMethod.java create mode 100644 src/main/java/com/qyft/ms/app/model/bo/CraftsStepStatus.java create mode 100644 src/main/java/com/qyft/ms/app/model/bo/TubeSol.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/BaseDataDTO.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/CmdInjectFluidDTO.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/ContainerDTO.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/InjectFluid.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/LogDTO.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/PauseCraftsDto.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/ResumeCraftsDto.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/StartCraftsDTO.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/StartHeatDTO.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/StopCraftsDto.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/StopTaskDTO.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/SysSettingsDTO.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/TaskDTO.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/WebsocketDTO.java create mode 100644 src/main/java/com/qyft/ms/app/model/entity/Container.java create mode 100644 src/main/java/com/qyft/ms/app/model/entity/Crafts.java create mode 100644 src/main/java/com/qyft/ms/app/model/entity/Logs.java create mode 100644 src/main/java/com/qyft/ms/app/model/entity/Ores.java create mode 100644 src/main/java/com/qyft/ms/app/model/entity/Solutions.java create mode 100644 src/main/java/com/qyft/ms/app/model/entity/SysSettings.java create mode 100644 src/main/java/com/qyft/ms/app/model/entity/TaskSteps.java create mode 100644 src/main/java/com/qyft/ms/app/model/entity/Tasks.java create mode 100644 src/main/java/com/qyft/ms/app/model/form/CMDForm.java create mode 100644 src/main/java/com/qyft/ms/app/model/vo/BaseDataVO.java create mode 100644 src/main/java/com/qyft/ms/app/model/vo/ContainerListVO.java create mode 100644 src/main/java/com/qyft/ms/app/model/vo/CraftsStepResult.java create mode 100644 src/main/java/com/qyft/ms/app/model/vo/ExecutionResult.java create mode 100644 src/main/java/com/qyft/ms/app/model/vo/OresCraftsListVO.java create mode 100644 src/main/java/com/qyft/ms/app/model/vo/SysSettingResult.java create mode 100644 src/main/java/com/qyft/ms/app/model/vo/SysSettingVO.java create mode 100644 src/main/java/com/qyft/ms/app/model/vo/TaskListVO.java create mode 100644 src/main/java/com/qyft/ms/app/model/vo/WebsocketResult.java create mode 100644 src/main/java/com/qyft/ms/app/service/CMDService.java create mode 100644 src/main/java/com/qyft/ms/app/service/ILogsService.java create mode 100644 src/main/java/com/qyft/ms/app/service/ISysSettingsService.java create mode 100644 src/main/java/com/qyft/ms/app/service/StatusService.java create mode 100644 src/main/java/com/qyft/ms/app/service/WebSocketService.java create mode 100644 src/main/java/com/qyft/ms/app/service/impl/ILogsServiceImpl.java create mode 100644 src/main/java/com/qyft/ms/app/service/impl/ISysSettingsServiceImpl.java delete mode 100644 src/main/java/com/qyft/ms/common/constant/Commands.java delete mode 100644 src/main/java/com/qyft/ms/common/constant/SysSettings.java delete mode 100644 src/main/java/com/qyft/ms/common/constant/WebSocketMessageType.java delete mode 100644 src/main/java/com/qyft/ms/common/result/CMDResultCode.java delete mode 100644 src/main/java/com/qyft/ms/config/WebSocketConfig.java delete mode 100644 src/main/java/com/qyft/ms/config/WebSocketServer.java delete mode 100644 src/main/java/com/qyft/ms/controller/CMDController.java delete mode 100644 src/main/java/com/qyft/ms/controller/LogsController.java delete mode 100644 src/main/java/com/qyft/ms/controller/SysSettingsController.java delete mode 100644 src/main/java/com/qyft/ms/enums/DirectiveTypeEnum.java delete mode 100644 src/main/java/com/qyft/ms/mapper/LogsMapper.java delete mode 100644 src/main/java/com/qyft/ms/mapper/SysSettingsMapper.java delete mode 100644 src/main/java/com/qyft/ms/model/bo/CraftsStepMethod.java delete mode 100644 src/main/java/com/qyft/ms/model/bo/CraftsStepStatus.java delete mode 100644 src/main/java/com/qyft/ms/model/bo/TubeSol.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/BaseDataDTO.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/CmdInjectFluidDTO.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/ContainerDTO.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/InjectFluid.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/LogDTO.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/PauseCraftsDto.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/ResumeCraftsDto.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/StartCraftsDTO.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/StartHeatDTO.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/StopCraftsDto.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/StopTaskDTO.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/SysSettingsDTO.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/TaskDTO.java delete mode 100644 src/main/java/com/qyft/ms/model/dto/WebsocketDTO.java delete mode 100644 src/main/java/com/qyft/ms/model/entity/Container.java delete mode 100644 src/main/java/com/qyft/ms/model/entity/Crafts.java delete mode 100644 src/main/java/com/qyft/ms/model/entity/Logs.java delete mode 100644 src/main/java/com/qyft/ms/model/entity/Ores.java delete mode 100644 src/main/java/com/qyft/ms/model/entity/Solutions.java delete mode 100644 src/main/java/com/qyft/ms/model/entity/SysSettings.java delete mode 100644 src/main/java/com/qyft/ms/model/entity/TaskSteps.java delete mode 100644 src/main/java/com/qyft/ms/model/entity/Tasks.java delete mode 100644 src/main/java/com/qyft/ms/model/form/CMDForm.java delete mode 100644 src/main/java/com/qyft/ms/model/vo/BaseDataVO.java delete mode 100644 src/main/java/com/qyft/ms/model/vo/ContainerListVO.java delete mode 100644 src/main/java/com/qyft/ms/model/vo/CraftsStepResult.java delete mode 100644 src/main/java/com/qyft/ms/model/vo/ExecutionResult.java delete mode 100644 src/main/java/com/qyft/ms/model/vo/OresCraftsListVO.java delete mode 100644 src/main/java/com/qyft/ms/model/vo/SysSettingResult.java delete mode 100644 src/main/java/com/qyft/ms/model/vo/SysSettingVO.java delete mode 100644 src/main/java/com/qyft/ms/model/vo/TaskListVO.java delete mode 100644 src/main/java/com/qyft/ms/model/vo/WebsocketResult.java delete mode 100644 src/main/java/com/qyft/ms/service/CMDService.java delete mode 100644 src/main/java/com/qyft/ms/service/ILogsService.java delete mode 100644 src/main/java/com/qyft/ms/service/ISysSettingsService.java delete mode 100644 src/main/java/com/qyft/ms/service/StatusService.java delete mode 100644 src/main/java/com/qyft/ms/service/WebSocketService.java delete mode 100644 src/main/java/com/qyft/ms/service/impl/ILogsServiceImpl.java delete mode 100644 src/main/java/com/qyft/ms/service/impl/ISysSettingsServiceImpl.java diff --git a/src/main/java/com/qyft/ms/app/common/constant/Commands.java b/src/main/java/com/qyft/ms/app/common/constant/Commands.java new file mode 100644 index 0000000..9c71b80 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/common/constant/Commands.java @@ -0,0 +1,117 @@ +package com.qyft.ms.app.common.constant; + +/** + * 操作指令 + */ +public class Commands { + /** + * 抬起托盘 + */ + public static final String UP_TRAY = "upTray"; + + /** + * 降下托盘 + */ + public static final String DOWN_TRAY = "downTray"; + + /** + * 添加溶液 + */ + public static final String INJECT_FLUID = "injectFluid"; + + /** + * 恒温 + */ + public static final String KEEP_HEAT = "keepHeat"; + + /** + * 移至加液 + */ + public static final String MOVE_TO_ACTION_AREA = "moveToActionArea"; + + /** + * 检查加液位状态(是否被占用) + */ + public static final String CHECK_ACTION_AREA = "checkActionArea"; + + /** + * 摇匀试管架 + */ + public static final String START_SHAKE_UP = "startShakeUp"; + + /** + * 停止摇匀试管架 + */ + public static final String STOP_SHAKE_UP = "stopShakeUp"; + + /** + * 开始加热 + */ + public static final String START_HEAT = "startHeat"; + + /** + * 停止加热 + */ + public static final String STOP_HEAT = "stopHeat"; + + /** + * 拍照 + */ + public static final String TAKE_PHOTO = "takePhoto"; + + /** + * 移至异常区 + */ + public static final String MOVE_TO_UNUSUAL = "moveToUnusual"; + + /** + * 从异常区移回加热区 + */ + public static final String MOVE_TO_HEAT_AREA = "moveToHeatArea"; + + /** + * 取试管架盖 + */ + public static final String TAKE_OFF_CAP = "takeOffCap"; + + /** + * 装回试管架盖 + */ + public static final String PUT_BACK_CAP = "putBackCap"; + + /** + * 机械臂移动至指定坐标(x, y, z) + */ + public static final String MOVE_MACHINE_ARM = "moveMachineArm"; + + /** + * 获取当前某种溶液的数量 + */ + public static final String GET_LIQUID_AMOUNT = "getLiquidAmount"; + + /** + * 移动单个试管 + */ + public static final String MOVE_TUBE = "moveTube"; + + /** + * 机械臂爪子开启 + */ + public static final String OPEN_CLAW = "openClaw"; + + /** + * 机械臂爪子闭合 + */ + public static final String CLOSE_CLAW = "closeClaw"; + + /** + * 开门 + */ + public static final String OPEN_DOOR = "openDoor"; + + /** + * 关门 + */ + public static final String CLOSE_DOOR = "closeDoor"; + +} diff --git a/src/main/java/com/qyft/ms/app/common/constant/SysSettings.java b/src/main/java/com/qyft/ms/app/common/constant/SysSettings.java new file mode 100644 index 0000000..b8d11a0 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/common/constant/SysSettings.java @@ -0,0 +1,27 @@ +package com.qyft.ms.app.common.constant; + +/** + * 操作指令 + */ +public class SysSettings { + /** + * 加热区域 + */ + public static final String HEAT_AREA = "heat_area"; + + /** + * 加液区域 + */ + public static final String SOLUTION_AREA = "solution_area"; + + /** + * 拍子区域 + */ + public static final String LID_AREA = "lid_area"; + + /** + * 其他系统配置 + */ + public static final String SYS_SETTING = "sys_setting"; + +} diff --git a/src/main/java/com/qyft/ms/app/common/constant/WebSocketMessageType.java b/src/main/java/com/qyft/ms/app/common/constant/WebSocketMessageType.java new file mode 100644 index 0000000..362f700 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/common/constant/WebSocketMessageType.java @@ -0,0 +1,25 @@ +package com.qyft.ms.app.common.constant; + +public class WebSocketMessageType { + /** + * 设备状态 + */ + public static final String STATUS = "status"; + /** + * 设备报警 + */ + public static final String ALARM = "alarm"; + /** + * 设备指令反馈 + */ + public static final String CMD = "cmd"; + /** + * 工艺执行反馈 + */ + public static final String CRAFTS = "crafts"; + /** + * 容器剩余状态 + */ + public static final String CONTAINER = "container"; + +} diff --git a/src/main/java/com/qyft/ms/app/common/enums/DirectiveTypeEnum.java b/src/main/java/com/qyft/ms/app/common/enums/DirectiveTypeEnum.java new file mode 100644 index 0000000..44abccc --- /dev/null +++ b/src/main/java/com/qyft/ms/app/common/enums/DirectiveTypeEnum.java @@ -0,0 +1,34 @@ +package com.qyft.ms.app.common.enums; + +import cn.hutool.core.util.StrUtil; + +public enum DirectiveTypeEnum { + ADD("add", "抬起托盘"); + + private final String typeCode; + private final String typeName; + + DirectiveTypeEnum(String typeCode, String typeName) { + this.typeCode = typeCode; + this.typeName = typeName; + } + + public static String getByCode(String code) { + if (StrUtil.isNotBlank(code)) { + for (DirectiveTypeEnum item : DirectiveTypeEnum.values()) { + if (item.typeCode().equals(code.trim())) { + return item.typeCode(); + } + } + } + return null; + } + + public String typeCode() { + return typeCode; + } + + public String typeName() { + return typeName; + } +} diff --git a/src/main/java/com/qyft/ms/app/common/result/CMDResultCode.java b/src/main/java/com/qyft/ms/app/common/result/CMDResultCode.java new file mode 100644 index 0000000..60355fb --- /dev/null +++ b/src/main/java/com/qyft/ms/app/common/result/CMDResultCode.java @@ -0,0 +1,27 @@ +package com.qyft.ms.app.common.result; + +import com.qyft.ms.system.common.result.IResultCode; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@AllArgsConstructor +@NoArgsConstructor +public enum CMDResultCode implements IResultCode, Serializable { + SUCCESS("D0000", "执行完毕"), + FAILURE("D1111", "执行失败"); + + private String code; + private String msg; + + @Override + public String getCode() { + return code; + } + + @Override + public String getMsg() { + return msg; + } +} \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/app/config/WebSocketConfig.java b/src/main/java/com/qyft/ms/app/config/WebSocketConfig.java new file mode 100644 index 0000000..e85a031 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/config/WebSocketConfig.java @@ -0,0 +1,14 @@ +package com.qyft.ms.app.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; + +@Configuration +public class WebSocketConfig { + + @Bean + public ServerEndpointExporter serverEndpointExporter() { + return new ServerEndpointExporter(); + } +} diff --git a/src/main/java/com/qyft/ms/app/config/WebSocketServer.java b/src/main/java/com/qyft/ms/app/config/WebSocketServer.java new file mode 100644 index 0000000..710d4a7 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/config/WebSocketServer.java @@ -0,0 +1,58 @@ +package com.qyft.ms.app.config; + + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.qyft.ms.app.model.dto.WebsocketDTO; +import jakarta.websocket.*; +import jakarta.websocket.server.ServerEndpoint; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +@Slf4j +@ServerEndpoint("/ws") +@Component +public class WebSocketServer { + + private static final Set sessions = Collections.synchronizedSet(new HashSet<>()); + + public static void sendMessageToClients(String message) { + synchronized (sessions) { + for (Session session : sessions) { + try { + session.getBasicRemote().sendText(message); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + @OnOpen + public void onOpen(Session session) { + sessions.add(session); + } + + @OnMessage + public void onMessage(String message, Session session) { + ObjectMapper objectMapper = new ObjectMapper(); + try { + WebsocketDTO c = objectMapper.readValue(message, WebsocketDTO.class); + log.info("解析后的信息: commandName={}, commandId={}", c.getCommandName(), c.getCommandId()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @OnClose + public void onClose(Session session) { + sessions.remove(session); // 移除关闭连接的 Session + } + + @OnError + public void onError(Throwable error) { + } +} diff --git a/src/main/java/com/qyft/ms/app/controller/CMDController.java b/src/main/java/com/qyft/ms/app/controller/CMDController.java new file mode 100644 index 0000000..d440e4e --- /dev/null +++ b/src/main/java/com/qyft/ms/app/controller/CMDController.java @@ -0,0 +1,47 @@ +package com.qyft.ms.app.controller; + +import cn.hutool.json.JSONUtil; +import com.qyft.ms.app.model.form.CMDForm; +import com.qyft.ms.app.service.CMDService; +import com.qyft.ms.system.common.result.Result; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.*; + +@Tag(name = "控制指令") +@RestController +@RequestMapping("/api/cmd") +@RequiredArgsConstructor +@Slf4j +public class CMDController { + + private final CMDService cmdService; + + @Operation(summary = "执行指令") + @PostMapping("/execute") + public Result execute(@RequestBody CMDForm cmdForm) { + try { + String commandId = UUID.randomUUID().toString(); + if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + cmdForm.setCommandId(commandId); + } + log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); + if (cmdService.executeCommand(cmdForm)) { + return Result.success(cmdForm.getCommandId()); + } else { + return Result.failed("无效命令"); + } + } catch (Exception e) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); + return Result.failed("执行失败"); + } + } + +} diff --git a/src/main/java/com/qyft/ms/app/controller/LogsController.java b/src/main/java/com/qyft/ms/app/controller/LogsController.java new file mode 100644 index 0000000..379eeba --- /dev/null +++ b/src/main/java/com/qyft/ms/app/controller/LogsController.java @@ -0,0 +1,55 @@ +package com.qyft.ms.app.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.qyft.ms.app.model.entity.Logs; +import com.qyft.ms.app.service.ILogsService; +import com.qyft.ms.system.common.base.BasePageQuery; +import com.qyft.ms.system.common.result.PageResult; +import com.qyft.ms.system.common.result.Result; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Tag(name = "日志") +@RestController +@RequestMapping("/api/logs") +@RequiredArgsConstructor +@Slf4j +public class LogsController { + private final ILogsService logsService; + + @Operation(summary = "日志列表") + @GetMapping("/list") + public PageResult getAllTasks(BasePageQuery pageQuery) { + + return PageResult.success(logsService.page(new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()))); + } + + @Operation(summary = "日志新增") + @PostMapping("/add") + public Result add(String log) { + return Result.success(logsService.insertLog(log)); + } + + @Operation(summary = "日志详情") + @GetMapping("/") + public Result detail(@RequestParam Long id) { + return Result.success(logsService.getBaseMapper().selectById(id)); + } + + @Operation(summary = "删除日志") + @DeleteMapping("/{ids}") + public Result deleteLog(@Parameter(description = "日志ID,多个以英文逗号(,)分割") @PathVariable String ids) { + List idsArr = Arrays.stream(ids.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + return Result.success(logsService.removeByIds(idsArr)); + } +} diff --git a/src/main/java/com/qyft/ms/app/controller/SysSettingsController.java b/src/main/java/com/qyft/ms/app/controller/SysSettingsController.java new file mode 100644 index 0000000..c3e1830 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/controller/SysSettingsController.java @@ -0,0 +1,56 @@ +package com.qyft.ms.app.controller; + +import com.qyft.ms.app.model.dto.SysSettingsDTO; +import com.qyft.ms.app.service.ISysSettingsService; +import com.qyft.ms.system.common.result.Result; +import io.micrometer.common.lang.Nullable; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Tag(name = "系统配置") +@RestController +@RequestMapping("/api/sys") +@RequiredArgsConstructor +@Slf4j +public class SysSettingsController { + private final ISysSettingsService sysSettingsService; + + @Operation(summary = "获取配置") + @GetMapping("/getConfig") + public Result> getConfig( + @Parameter( + description = "配置类型(heat_area 工作区配置 solution_area 加液区配置 lid_area 拍子区域配置 sys_setting 其他系统配置)" + ) + @RequestParam + @Nullable + String type + ) { + if (type == null) { + return Result.success(sysSettingsService.getAllConfig()); + } else { + return Result.success(sysSettingsService.getConfig(type)); + } + } + + @Operation(summary = "更新配置") + @PutMapping("/updateConfig") + public Result updateConfig(@RequestBody List dto) { + return Result.failed(); + } + + @Operation(summary = "修改系统日期与时间(Linux date -s)") + @PutMapping("/setSysDate/{newTime}") + public Result setSysDate(@Parameter(description = "时间字符串 YYYY-MM-DD HH:mm:ss") @PathVariable String newTime) { + boolean isSuccess = sysSettingsService.setSysDate(newTime); + if (isSuccess) { + return Result.success(); + } + return Result.failed(); + } +} diff --git a/src/main/java/com/qyft/ms/app/mapper/LogsMapper.java b/src/main/java/com/qyft/ms/app/mapper/LogsMapper.java new file mode 100644 index 0000000..2f2aef1 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/mapper/LogsMapper.java @@ -0,0 +1,12 @@ +package com.qyft.ms.app.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qyft.ms.app.model.entity.Logs; +import org.apache.ibatis.annotations.Mapper; + +/** + * 日志持久层接口 + */ +@Mapper +public interface LogsMapper extends BaseMapper { +} diff --git a/src/main/java/com/qyft/ms/app/mapper/SysSettingsMapper.java b/src/main/java/com/qyft/ms/app/mapper/SysSettingsMapper.java new file mode 100644 index 0000000..a51cf26 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/mapper/SysSettingsMapper.java @@ -0,0 +1,29 @@ +package com.qyft.ms.app.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qyft.ms.app.model.dto.SysSettingsDTO; +import com.qyft.ms.app.model.entity.SysSettings; +import com.qyft.ms.app.model.vo.SysSettingVO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + + +/** + *

+ * Mapper 接口 + *

+ * + * @author 郭安鹏 + * @since 2025-02-17 + */ + +@Mapper +public interface SysSettingsMapper extends BaseMapper { + List getConfig(String type); + + void updateById(SysSettingsDTO dto); + + int getIdByCode(String type); +} + diff --git a/src/main/java/com/qyft/ms/app/model/bo/CraftsStepMethod.java b/src/main/java/com/qyft/ms/app/model/bo/CraftsStepMethod.java new file mode 100644 index 0000000..2639654 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/bo/CraftsStepMethod.java @@ -0,0 +1,52 @@ +package com.qyft.ms.app.model.bo; + +import lombok.Data; + +/** + * 工艺步骤执行方法 + */ +@Data +public class CraftsStepMethod { + /** + * 上升托盘 + */ + public static final String UP_TRAY = "upTray"; + /** + * 降下托盘 + */ + public static final String DOWN_TRAY = "downTray"; + /** + * 加液 + */ + public static final String ADD_LIQUID = "addLiquid"; + /** + * 移动到溶液位置 + */ + public static final String MOVE_TO_SOL = "moveToSol"; + /** + * 移动到加热器位置 + */ + public static final String MOVE_TO_HEAT = "moveToHeat"; + /** + * 摇晃 + */ + public static final String SHAKING = "shaking"; + /** + * 开始加热 + */ + public static final String START_HEATING = "startHeating"; + /** + * 停止加热 + */ + public static final String STOP_HEATING = "stopHeating"; + /** + * 拍照 + */ + public static final String TAKE_PHOTO = "takePhoto"; + /** + * 等待 + */ + public static final String DELAY = "delay"; + + +} diff --git a/src/main/java/com/qyft/ms/app/model/bo/CraftsStepStatus.java b/src/main/java/com/qyft/ms/app/model/bo/CraftsStepStatus.java new file mode 100644 index 0000000..5627610 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/bo/CraftsStepStatus.java @@ -0,0 +1,35 @@ +package com.qyft.ms.app.model.bo; + +import lombok.Data; + +/** + * 工艺步骤执行状态 + */ +@Data +public class CraftsStepStatus { + + /** + * 未执行 + */ + public static final int NOT_EXECUTED = 0; + /** + * 正在执行 + */ + public static final int IN_PROGRESS = 1; + /** + * 暂停执行 + */ + public static final int PAUSED = 2; + /** + * 停止执行 + */ + public static final int STOPPED = 3; + /** + * 执行错误 + */ + public static final int ERROR = 4; + /** + * 执行完成 + */ + public static final int FINISH = 6; +} diff --git a/src/main/java/com/qyft/ms/app/model/bo/TubeSol.java b/src/main/java/com/qyft/ms/app/model/bo/TubeSol.java new file mode 100644 index 0000000..765475b --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/bo/TubeSol.java @@ -0,0 +1,23 @@ +package com.qyft.ms.app.model.bo; + +import lombok.Data; + +/** + * 试管添加溶液 + */ +@Data +public class TubeSol { + /** + * 需要添加溶液的试管编号 + */ + private Integer tubeNum; + /** + * 溶液id + */ + private Long solId; + /** + * 加液量 + */ + private Integer volume; + +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/BaseDataDTO.java b/src/main/java/com/qyft/ms/app/model/dto/BaseDataDTO.java new file mode 100644 index 0000000..ee518e3 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/BaseDataDTO.java @@ -0,0 +1,14 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class BaseDataDTO { + @Schema(description = "加热区id") + private Long id; + @Schema(description = "温度") + private Long temperature; + @Schema(description = "工艺id") + private Long craftId; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/CmdInjectFluidDTO.java b/src/main/java/com/qyft/ms/app/model/dto/CmdInjectFluidDTO.java new file mode 100644 index 0000000..40f67a5 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/CmdInjectFluidDTO.java @@ -0,0 +1,13 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class CmdInjectFluidDTO { + @Schema(description = "指令id") + private String commandId; + + @Schema(description = "加液数据list") + private InjectFluid[] injectFluids; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/ContainerDTO.java b/src/main/java/com/qyft/ms/app/model/dto/ContainerDTO.java new file mode 100644 index 0000000..f1d88e4 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/ContainerDTO.java @@ -0,0 +1,14 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class ContainerDTO { + @Schema(description = "容器id") + private Long id; + @Schema(description = "溶液id") + private Long solutionId; + @Schema(description = "已使用容量") + private Integer capacityUsed; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/InjectFluid.java b/src/main/java/com/qyft/ms/app/model/dto/InjectFluid.java new file mode 100644 index 0000000..829880c --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/InjectFluid.java @@ -0,0 +1,14 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class InjectFluid { + @Schema(description = "试管编号") + private Integer tubeNum; + @Schema(description = "溶液id") + private Integer solutionId; + @Schema(description = "容量") + private Integer volume; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/LogDTO.java b/src/main/java/com/qyft/ms/app/model/dto/LogDTO.java new file mode 100644 index 0000000..c0d605b --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/LogDTO.java @@ -0,0 +1,10 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class LogDTO { + @Schema(description = "日志信息") + private String text; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/PauseCraftsDto.java b/src/main/java/com/qyft/ms/app/model/dto/PauseCraftsDto.java new file mode 100644 index 0000000..ddcdf19 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/PauseCraftsDto.java @@ -0,0 +1,11 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "暂停执行工艺") +@Data +public class PauseCraftsDto { + @Schema(description = "加热区id") + private String heatId; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/ResumeCraftsDto.java b/src/main/java/com/qyft/ms/app/model/dto/ResumeCraftsDto.java new file mode 100644 index 0000000..f188234 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/ResumeCraftsDto.java @@ -0,0 +1,11 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "恢复执行工艺") +@Data +public class ResumeCraftsDto { + @Schema(description = "加热区id") + private String heatId; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/StartCraftsDTO.java b/src/main/java/com/qyft/ms/app/model/dto/StartCraftsDTO.java new file mode 100644 index 0000000..7df26a8 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/StartCraftsDTO.java @@ -0,0 +1,13 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "开始工艺") +@Data +public class StartCraftsDTO { + @Schema(description = "工艺id") + private Long craftId; + @Schema(description = "加热区id") + private String heatId; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/StartHeatDTO.java b/src/main/java/com/qyft/ms/app/model/dto/StartHeatDTO.java new file mode 100644 index 0000000..87a341b --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/StartHeatDTO.java @@ -0,0 +1,13 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class StartHeatDTO { + @Schema(description = "指令id") + private String commandId; + + @Schema(description = "加液数据list") + private Integer[] heatIds; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/StopCraftsDto.java b/src/main/java/com/qyft/ms/app/model/dto/StopCraftsDto.java new file mode 100644 index 0000000..e13bac4 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/StopCraftsDto.java @@ -0,0 +1,11 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "恢复执行工艺") +@Data +public class StopCraftsDto { + @Schema(description = "加热区id") + private String heatId; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/StopTaskDTO.java b/src/main/java/com/qyft/ms/app/model/dto/StopTaskDTO.java new file mode 100644 index 0000000..e5a1be7 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/StopTaskDTO.java @@ -0,0 +1,10 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class StopTaskDTO { + @Schema(description = "实验id") + private Long taskId; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/SysSettingsDTO.java b/src/main/java/com/qyft/ms/app/model/dto/SysSettingsDTO.java new file mode 100644 index 0000000..bc88167 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/SysSettingsDTO.java @@ -0,0 +1,16 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class SysSettingsDTO { + @Schema(description = "主键id") + private Long id; + @Schema(description = "值") + private String value; + @Schema(description = "温度") + private Long temperature; + @Schema(description = "工艺id") + private Long craftId; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/TaskDTO.java b/src/main/java/com/qyft/ms/app/model/dto/TaskDTO.java new file mode 100644 index 0000000..f43b1a1 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/TaskDTO.java @@ -0,0 +1,10 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class TaskDTO { + @Schema(description = "实验名称") + private String name; +} diff --git a/src/main/java/com/qyft/ms/app/model/dto/WebsocketDTO.java b/src/main/java/com/qyft/ms/app/model/dto/WebsocketDTO.java new file mode 100644 index 0000000..0a31b67 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/WebsocketDTO.java @@ -0,0 +1,22 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class WebsocketDTO { + + @Schema(description = "指令id,不指定后台会自动生成uuid") + private String commandId; + + @NotBlank() + @Schema(description = "指令类型", example = "upTray") + private String commandName; + + @Schema(description = "参数") + private Map params; +} diff --git a/src/main/java/com/qyft/ms/app/model/entity/Container.java b/src/main/java/com/qyft/ms/app/model/entity/Container.java new file mode 100644 index 0000000..b824cbf --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/entity/Container.java @@ -0,0 +1,35 @@ +package com.qyft.ms.app.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = false) +@Schema(description = "容器表") +@TableName("container") +@Data +public class Container { + @NotBlank + @Schema(description = "容器id") + private Long id; + + @NotBlank + @Schema(description = "类型 0 溶液 1 废液") + private Long type; + + @Schema(description = "溶液id") + private Long solutionId; + + @Schema(description = "机器id") + private String pumpId; + + @NotBlank + @Schema(description = "总容量") + private Integer capacityTotal; + + @NotBlank + @Schema(description = "使用容量") + private Integer capacityUsed; +} diff --git a/src/main/java/com/qyft/ms/app/model/entity/Crafts.java b/src/main/java/com/qyft/ms/app/model/entity/Crafts.java new file mode 100644 index 0000000..bc2d7d5 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/entity/Crafts.java @@ -0,0 +1,25 @@ +package com.qyft.ms.app.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qyft.ms.system.common.base.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Schema(description = "工艺") +@TableName("crafts") +@Data +public class Crafts extends BaseEntity { + + @NotBlank + @Schema(description = "工艺名称") + private String name; + + @Schema(description = "工艺步骤") + private String steps; + + @Schema(description = "矿石ID") + private Long oresId; +} diff --git a/src/main/java/com/qyft/ms/app/model/entity/Logs.java b/src/main/java/com/qyft/ms/app/model/entity/Logs.java new file mode 100644 index 0000000..db601cc --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/entity/Logs.java @@ -0,0 +1,30 @@ +package com.qyft.ms.app.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = false) +@Schema(description = "日志") +@TableName("logs") +@Data +public class Logs { + + @NotBlank + @Schema(description = "id") + private Long id; + + @NotBlank + @Schema(description = "创建人") + private Long createUser; + + @NotBlank + @Schema(description = "日志内容") + private String text; + + @NotBlank + @Schema(description = "创建时间") + private String createTime; +} diff --git a/src/main/java/com/qyft/ms/app/model/entity/Ores.java b/src/main/java/com/qyft/ms/app/model/entity/Ores.java new file mode 100644 index 0000000..a1f6918 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/entity/Ores.java @@ -0,0 +1,20 @@ +package com.qyft.ms.app.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qyft.ms.system.common.base.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Schema(description = "矿石") +@TableName("ores") +@Data +public class Ores extends BaseEntity { + + @NotBlank() + @Schema(description = "矿石名称") + private String name; + +} diff --git a/src/main/java/com/qyft/ms/app/model/entity/Solutions.java b/src/main/java/com/qyft/ms/app/model/entity/Solutions.java new file mode 100644 index 0000000..2595f4c --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/entity/Solutions.java @@ -0,0 +1,20 @@ +package com.qyft.ms.app.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qyft.ms.system.common.base.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Schema(description = "溶液") +@TableName("solutions") +@Data +public class Solutions extends BaseEntity { + + @NotBlank() + @Schema(description = "溶液名称") + private String name; + +} diff --git a/src/main/java/com/qyft/ms/app/model/entity/SysSettings.java b/src/main/java/com/qyft/ms/app/model/entity/SysSettings.java new file mode 100644 index 0000000..847e363 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/entity/SysSettings.java @@ -0,0 +1,43 @@ +package com.qyft.ms.app.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 系统配置 + *

+ * + * @author 郭安鹏 + * @since 2025-02-17 + */ +@EqualsAndHashCode(callSuper = false) +@Schema(description = "系统配置") +@TableName("sys_settings") +@Data +public class SysSettings { + + @Schema(description = "主键id") + private Long id; + + @Schema(description = "父id") + private Long parentId; + + @Schema(description = "名称") + private String name; + + @Schema(description = "code") + private String code; + + @Schema(description = "配置值") + private String value1; + + @Schema(description = "配置值") + private String value2; + + @Schema(description = "配置值") + private String value3; + +} diff --git a/src/main/java/com/qyft/ms/app/model/entity/TaskSteps.java b/src/main/java/com/qyft/ms/app/model/entity/TaskSteps.java new file mode 100644 index 0000000..8a07607 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/entity/TaskSteps.java @@ -0,0 +1,30 @@ +package com.qyft.ms.app.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = false) +@Schema(description = "实验步骤") +@TableName("task_steps") +@Data +public class TaskSteps { + + @NotBlank + @Schema(description = "id") + private Long id; + + @NotBlank + @Schema(description = "实验id") + private Long taskId; + + @NotBlank + @Schema(description = "步骤描述") + private String stepDescription; + + @NotBlank + @Schema(description = "创建时间") + private String createTime; +} diff --git a/src/main/java/com/qyft/ms/app/model/entity/Tasks.java b/src/main/java/com/qyft/ms/app/model/entity/Tasks.java new file mode 100644 index 0000000..2e0c361 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/entity/Tasks.java @@ -0,0 +1,35 @@ +package com.qyft.ms.app.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qyft.ms.system.common.base.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Schema(description = "实验") +@TableName("tasks") +@Data +public class Tasks extends BaseEntity { + + @NotBlank + @Schema(description = "实验名称") + private String name; + + @NotBlank + @Schema(description = "开始时间") + private String startTime; + + @Schema(description = "创建人") + private Long createUser; + + @Schema(description = "结束时间") + private String endTime; + + @Schema(description = "状态 1 执行中 2 执行完毕") + private Integer status; + + @Schema(description = "是否删除 0 未删除 1 已删除") + private Integer isDeleted; +} diff --git a/src/main/java/com/qyft/ms/app/model/form/CMDForm.java b/src/main/java/com/qyft/ms/app/model/form/CMDForm.java new file mode 100644 index 0000000..b4c77ea --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/form/CMDForm.java @@ -0,0 +1,23 @@ +package com.qyft.ms.app.model.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +import java.util.List; + +@Schema(description = "指令") +@Data +public class CMDForm { + + @Schema(description = "指令id,不指定后台会自动生成uuid") + private String commandId; + + @NotBlank() + @Schema(description = "指令类型", example = "upTray") + private String command; + + @Schema(description = "参数") + private List params; + +} diff --git a/src/main/java/com/qyft/ms/app/model/vo/BaseDataVO.java b/src/main/java/com/qyft/ms/app/model/vo/BaseDataVO.java new file mode 100644 index 0000000..6281ec0 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/vo/BaseDataVO.java @@ -0,0 +1,27 @@ +package com.qyft.ms.app.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = false) +@Schema(description = "容器") +@Data +public class BaseDataVO { + @Schema(description = "加热区") + List heat_area; + + @Schema(description = "加液区") + List solution_area; + + @Schema(description = "拍子区域") + List lid_area; + + @Schema(description = "系统配置") + List sys_setting; + + @Schema(description = "容器数据") + List containers; +} diff --git a/src/main/java/com/qyft/ms/app/model/vo/ContainerListVO.java b/src/main/java/com/qyft/ms/app/model/vo/ContainerListVO.java new file mode 100644 index 0000000..5dd65b4 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/vo/ContainerListVO.java @@ -0,0 +1,13 @@ +package com.qyft.ms.app.model.vo; + +import com.qyft.ms.app.model.entity.Container; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Schema(description = "容器") +@Data +public class ContainerListVO extends Container { + +} diff --git a/src/main/java/com/qyft/ms/app/model/vo/CraftsStepResult.java b/src/main/java/com/qyft/ms/app/model/vo/CraftsStepResult.java new file mode 100644 index 0000000..d989aa4 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/vo/CraftsStepResult.java @@ -0,0 +1,23 @@ +package com.qyft.ms.app.model.vo; + +import lombok.Data; + +/** + * 工艺步骤执行状态 + */ +@Data +public class CraftsStepResult { + /** + * 加热区id + */ + private String heatId; + /** + * 0 (未执行),1 (正在执行),2 (暂停执行),3 (停止执行),4(执行错误),6(执行完成) + */ + private Integer status; + /** + * 当前工艺执行的方法数组下标 + */ + private Integer methodIndex; + +} diff --git a/src/main/java/com/qyft/ms/app/model/vo/ExecutionResult.java b/src/main/java/com/qyft/ms/app/model/vo/ExecutionResult.java new file mode 100644 index 0000000..6c31729 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/vo/ExecutionResult.java @@ -0,0 +1,22 @@ +package com.qyft.ms.app.model.vo; + +import lombok.Data; + +@Data +public class ExecutionResult { + /** + * 任务id + */ + private String commandId; + + private String commandName; + /** + * 执行结果 + */ + private String status; + /** + * 结果描述 + */ + private String message; + +} diff --git a/src/main/java/com/qyft/ms/app/model/vo/OresCraftsListVO.java b/src/main/java/com/qyft/ms/app/model/vo/OresCraftsListVO.java new file mode 100644 index 0000000..7e66940 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/vo/OresCraftsListVO.java @@ -0,0 +1,30 @@ +package com.qyft.ms.app.model.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.qyft.ms.app.model.entity.Crafts; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "矿石工艺视图") +@Data +public class OresCraftsListVO { + + @Schema(description = "矿石id") + private Long id; + + @Schema(description = "矿石名称") + private String oresName; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + @Schema(description = "该矿石下工艺列表") + private List craftsList; + +} diff --git a/src/main/java/com/qyft/ms/app/model/vo/SysSettingResult.java b/src/main/java/com/qyft/ms/app/model/vo/SysSettingResult.java new file mode 100644 index 0000000..7d714ea --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/vo/SysSettingResult.java @@ -0,0 +1,14 @@ +package com.qyft.ms.app.model.vo; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SysSettingResult extends SysSettingVO { + + private List children; + +} diff --git a/src/main/java/com/qyft/ms/app/model/vo/SysSettingVO.java b/src/main/java/com/qyft/ms/app/model/vo/SysSettingVO.java new file mode 100644 index 0000000..a32d7c7 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/vo/SysSettingVO.java @@ -0,0 +1,43 @@ +package com.qyft.ms.app.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = false) +@Data +public class SysSettingVO { + + @Schema(description = "主键id") + private int id; + + @Schema(description = "父id") + private int parentId; + + @Schema(description = "名称") + private String name; + + @Schema(description = "code") + private String code; + + @Schema(description = "配置值") + private String value; + + @Schema(description = "设备id") + private String hardwareId; + + @Schema(description = "加热区温度") + private String temperature; + + @Schema(description = "工艺id") + private int craftId; + + @Schema(description = "试管坐标list") + private List tubePositionList; + + @Schema(description = "拍子坐标") + private String LidPosition; + +} diff --git a/src/main/java/com/qyft/ms/app/model/vo/TaskListVO.java b/src/main/java/com/qyft/ms/app/model/vo/TaskListVO.java new file mode 100644 index 0000000..8713039 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/vo/TaskListVO.java @@ -0,0 +1,35 @@ +package com.qyft.ms.app.model.vo; + +import com.qyft.ms.app.model.entity.TaskSteps; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = false) +@Data +public class TaskListVO { + @Schema(description = "实验id") + private Long id; + + @Schema(description = "实验名称") + private String name; + + @NotBlank + @Schema(description = "开始时间") + private String startTime; + + @Schema(description = "创建人") + private Long createUser; + + @Schema(description = "结束时间") + private String endTime; + + @Schema(description = "状态 1 执行中 2 执行完毕") + private Integer status; + + @Schema(description = "实验步骤") + private List steps; +} diff --git a/src/main/java/com/qyft/ms/app/model/vo/WebsocketResult.java b/src/main/java/com/qyft/ms/app/model/vo/WebsocketResult.java new file mode 100644 index 0000000..574828a --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/vo/WebsocketResult.java @@ -0,0 +1,18 @@ +package com.qyft.ms.app.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class WebsocketResult { + /** + * 推送类型(指令 cmd,报警 warn ,状态 status) + */ + @Schema(description = "推送类型(指令 cmd,报警 warn ,状态 status)") + private String type; + /** + * 执行结果 + */ + @Schema(description = "推送数据") + private Object data; +} \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/app/service/CMDService.java b/src/main/java/com/qyft/ms/app/service/CMDService.java new file mode 100644 index 0000000..ca60a50 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/CMDService.java @@ -0,0 +1,61 @@ +package com.qyft.ms.app.service; + +import cn.hutool.json.JSONUtil; +import com.qyft.ms.app.common.constant.WebSocketMessageType; +import com.qyft.ms.app.common.result.CMDResultCode; +import com.qyft.ms.device.model.bo.DeviceCtrlFuncCMD; +import com.qyft.ms.device.service.ICtrlFuncService; +import com.qyft.ms.app.model.form.CMDForm; +import com.qyft.ms.app.model.vo.ExecutionResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.function.Supplier; + +@Slf4j +@RequiredArgsConstructor +@Service +public class CMDService { + + private final WebSocketService webSocketService; + private final ICtrlFuncService ctrlFuncService; + CMDForm form; + + private void run(List> cmdList) { + ExecutionResult executionResult = new ExecutionResult(); + executionResult.setCommandId(form.getCommandId()); + executionResult.setCommandName(form.getCommand()); + + // 执行所有命令 + for (Supplier command : cmdList) { + boolean result = command.get(); + if (!result) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(form)); + executionResult.setStatus(CMDResultCode.FAILURE.getCode()); + executionResult.setMessage(CMDResultCode.FAILURE.getMsg()); + webSocketService.pushMsg(WebSocketMessageType.CMD, executionResult); + return; + } + } + executionResult.setStatus(CMDResultCode.SUCCESS.getCode()); + executionResult.setMessage(CMDResultCode.SUCCESS.getMsg()); + webSocketService.pushMsg(WebSocketMessageType.CMD, executionResult); + } + + public boolean executeCommand(CMDForm cmdForm) { + String commandName = cmdForm.getCommand(); + List deviceCtrlFuncCMDList = ctrlFuncService.findAllStepCMD(); + for (DeviceCtrlFuncCMD deviceCtrlFuncCMD : deviceCtrlFuncCMDList) { + if (deviceCtrlFuncCMD.getDeviceCmd().equals(commandName)) { + new Thread(() -> run(cmdForm)).start(); + return true; + } + } + return false; + } + + + +} diff --git a/src/main/java/com/qyft/ms/app/service/ILogsService.java b/src/main/java/com/qyft/ms/app/service/ILogsService.java new file mode 100644 index 0000000..391691f --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/ILogsService.java @@ -0,0 +1,11 @@ +package com.qyft.ms.app.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qyft.ms.app.model.entity.Logs; + +/** + * 日志业务接口 + */ +public interface ILogsService extends IService { + int insertLog(String log); +} diff --git a/src/main/java/com/qyft/ms/app/service/ISysSettingsService.java b/src/main/java/com/qyft/ms/app/service/ISysSettingsService.java new file mode 100644 index 0000000..6683690 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/ISysSettingsService.java @@ -0,0 +1,24 @@ +package com.qyft.ms.app.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qyft.ms.app.model.dto.SysSettingsDTO; +import com.qyft.ms.app.model.entity.SysSettings; +import com.qyft.ms.app.model.vo.SysSettingResult; +import com.qyft.ms.app.model.vo.SysSettingVO; + +import java.util.List; + +/** + * 系统配置接口层 + */ +public interface ISysSettingsService extends IService { + + List getConfig(String type); + + List getAllConfig(); + + Boolean updateConfig(List dto); + + boolean setSysDate(String newTime); +} diff --git a/src/main/java/com/qyft/ms/app/service/StatusService.java b/src/main/java/com/qyft/ms/app/service/StatusService.java new file mode 100644 index 0000000..fb36e11 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/StatusService.java @@ -0,0 +1,37 @@ +package com.qyft.ms.app.service; + +import com.qyft.ms.app.common.constant.WebSocketMessageType; +import com.qyft.ms.device.model.bo.DeviceStatus; +import com.qyft.ms.device.service.DeviceStatusService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +@Slf4j +@Service +@RequiredArgsConstructor +public class StatusService { + + private final WebSocketService webSocketService; + private final DeviceStatusService deviceStatusService; + +// @PostConstruct + public void init() { + ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); + executorService.scheduleAtFixedRate(() -> { + try { + DeviceStatus deviceStatus = deviceStatusService.getDeviceStatus(); + webSocketService.pushMsg(WebSocketMessageType.STATUS, deviceStatus); + } catch (Exception e) { + if (!executorService.isShutdown()) { + executorService.shutdown(); // 关闭 ScheduledExecutorService + } + log.error("定时推送设备状态异常", e); + } + }, 10, 100, TimeUnit.MILLISECONDS); + } +} diff --git a/src/main/java/com/qyft/ms/app/service/WebSocketService.java b/src/main/java/com/qyft/ms/app/service/WebSocketService.java new file mode 100644 index 0000000..7f7d051 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/WebSocketService.java @@ -0,0 +1,32 @@ +package com.qyft.ms.app.service; + +import cn.hutool.json.JSONUtil; +import com.qyft.ms.app.config.WebSocketServer; +import com.qyft.ms.app.model.vo.WebsocketResult; +import jakarta.annotation.PostConstruct; +import org.springframework.stereotype.Service; + +@Service +public class WebSocketService { + public void pushMsg(String type, Object result) { + + WebsocketResult websocketResult = new WebsocketResult(); + websocketResult.setType(type); + websocketResult.setData(result); + // 发送消息给客户端 + WebSocketServer.sendMessageToClients(JSONUtil.toJsonStr(websocketResult)); + } + + @PostConstruct + public void init() { + // 设置 WebSocketService 实例到 WebSocketServer + WebSocketServer.setWebSocketService(this); + } + + // 新增方法:处理接收到的消息 + public void handleReceivedMessage(String message) { + // 这里可以添加处理接收到消息的逻辑 + System.out.println("Received message: " + message); + // 根据需要解析消息并进行处理 + } +} \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/app/service/impl/ILogsServiceImpl.java b/src/main/java/com/qyft/ms/app/service/impl/ILogsServiceImpl.java new file mode 100644 index 0000000..f4de979 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/impl/ILogsServiceImpl.java @@ -0,0 +1,29 @@ +package com.qyft.ms.app.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qyft.ms.app.mapper.LogsMapper; +import com.qyft.ms.app.model.entity.Logs; +import com.qyft.ms.app.service.ILogsService; +import com.qyft.ms.system.model.entity.User; +import com.qyft.ms.system.service.IUserService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * 实验业务实现类 + */ +@Service +@RequiredArgsConstructor +public class ILogsServiceImpl extends ServiceImpl implements ILogsService { + private final LogsMapper logsMapper; + private final IUserService userService; + + @Override + public int insertLog(String log) { + Logs logs = new Logs(); + logs.setText(log); + User user = userService.currentUser(); + logs.setCreateUser(user.getId()); + return logsMapper.insert(logs); + } +} diff --git a/src/main/java/com/qyft/ms/app/service/impl/ISysSettingsServiceImpl.java b/src/main/java/com/qyft/ms/app/service/impl/ISysSettingsServiceImpl.java new file mode 100644 index 0000000..a917814 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/impl/ISysSettingsServiceImpl.java @@ -0,0 +1,75 @@ +package com.qyft.ms.app.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qyft.ms.app.mapper.SysSettingsMapper; +import com.qyft.ms.app.model.dto.SysSettingsDTO; +import com.qyft.ms.app.model.entity.SysSettings; +import com.qyft.ms.app.model.vo.SysSettingResult; +import com.qyft.ms.app.model.vo.SysSettingVO; +import com.qyft.ms.app.service.ISysSettingsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 系统配置实现类 + */ +@Service +@RequiredArgsConstructor +public class ISysSettingsServiceImpl extends ServiceImpl implements ISysSettingsService { + private final SysSettingsMapper sysSettingsMapper; + + @Override + public List getConfig(String type) { + int parentId = sysSettingsMapper.getIdByCode(type); + return sysSettingsMapper.getConfig(String.valueOf(parentId)); + } + + @Override + public List getAllConfig() { + List list = sysSettingsMapper.getConfig("-1"); + List result = new ArrayList<>(); + for (SysSettingVO sysSettings : list) { + List childrenList = sysSettingsMapper.getConfig(String.valueOf(sysSettings.getId())); + SysSettingResult map = new SysSettingResult(); + map.setName(sysSettings.getName()); + map.setCode(sysSettings.getCode()); + map.setId(sysSettings.getId()); + map.setValue(sysSettings.getValue()); + map.setHardwareId(sysSettings.getHardwareId()); + map.setChildren(childrenList); + result.add(map); + } + return result; + } + + @Override + public Boolean updateConfig(List dto) { + for (SysSettingsDTO sysSettingsDTO : dto) { + sysSettingsMapper.updateById(sysSettingsDTO); + } + return true; + } + + /** + * 修改服务器系统时间 + * + * @param newTime 时间字符串 YYYY-MM-DD HH:mm:ss + * @return 是否修改成功 + */ + @Override + public boolean setSysDate(String newTime) { + try { + String command = "date -s \"" + newTime + "\""; + Process process = Runtime.getRuntime().exec(command); + int exitCode = process.waitFor(); + return exitCode == 0; + } catch (Exception e) { + log.error("修改系统时间失败", e); + return false; + } + } + +} diff --git a/src/main/java/com/qyft/ms/common/constant/Commands.java b/src/main/java/com/qyft/ms/common/constant/Commands.java deleted file mode 100644 index 2391464..0000000 --- a/src/main/java/com/qyft/ms/common/constant/Commands.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.qyft.ms.common.constant; - -/** - * 操作指令 - */ -public class Commands { - /** - * 抬起托盘 - */ - public static final String UP_TRAY = "upTray"; - - /** - * 降下托盘 - */ - public static final String DOWN_TRAY = "downTray"; - - /** - * 添加溶液 - */ - public static final String INJECT_FLUID = "injectFluid"; - - /** - * 恒温 - */ - public static final String KEEP_HEAT = "keepHeat"; - - /** - * 移至加液 - */ - public static final String MOVE_TO_ACTION_AREA = "moveToActionArea"; - - /** - * 检查加液位状态(是否被占用) - */ - public static final String CHECK_ACTION_AREA = "checkActionArea"; - - /** - * 摇匀试管架 - */ - public static final String START_SHAKE_UP = "startShakeUp"; - - /** - * 停止摇匀试管架 - */ - public static final String STOP_SHAKE_UP = "stopShakeUp"; - - /** - * 开始加热 - */ - public static final String START_HEAT = "startHeat"; - - /** - * 停止加热 - */ - public static final String STOP_HEAT = "stopHeat"; - - /** - * 拍照 - */ - public static final String TAKE_PHOTO = "takePhoto"; - - /** - * 移至异常区 - */ - public static final String MOVE_TO_UNUSUAL = "moveToUnusual"; - - /** - * 从异常区移回加热区 - */ - public static final String MOVE_TO_HEAT_AREA = "moveToHeatArea"; - - /** - * 取试管架盖 - */ - public static final String TAKE_OFF_CAP = "takeOffCap"; - - /** - * 装回试管架盖 - */ - public static final String PUT_BACK_CAP = "putBackCap"; - - /** - * 机械臂移动至指定坐标(x, y, z) - */ - public static final String MOVE_MACHINE_ARM = "moveMachineArm"; - - /** - * 获取当前某种溶液的数量 - */ - public static final String GET_LIQUID_AMOUNT = "getLiquidAmount"; - - /** - * 移动单个试管 - */ - public static final String MOVE_TUBE = "moveTube"; - - /** - * 机械臂爪子开启 - */ - public static final String OPEN_CLAW = "openClaw"; - - /** - * 机械臂爪子闭合 - */ - public static final String CLOSE_CLAW = "closeClaw"; - - /** - * 开门 - */ - public static final String OPEN_DOOR = "openDoor"; - - /** - * 关门 - */ - public static final String CLOSE_DOOR = "closeDoor"; - -} diff --git a/src/main/java/com/qyft/ms/common/constant/SysSettings.java b/src/main/java/com/qyft/ms/common/constant/SysSettings.java deleted file mode 100644 index 63c3be3..0000000 --- a/src/main/java/com/qyft/ms/common/constant/SysSettings.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.qyft.ms.common.constant; - -/** - * 操作指令 - */ -public class SysSettings { - /** - * 加热区域 - */ - public static final String HEAT_AREA = "heat_area"; - - /** - * 加液区域 - */ - public static final String SOLUTION_AREA = "solution_area"; - - /** - * 拍子区域 - */ - public static final String LID_AREA = "lid_area"; - - /** - * 其他系统配置 - */ - public static final String SYS_SETTING = "sys_setting"; - -} diff --git a/src/main/java/com/qyft/ms/common/constant/WebSocketMessageType.java b/src/main/java/com/qyft/ms/common/constant/WebSocketMessageType.java deleted file mode 100644 index d3835e5..0000000 --- a/src/main/java/com/qyft/ms/common/constant/WebSocketMessageType.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.qyft.ms.common.constant; - -public class WebSocketMessageType { - /** - * 设备状态 - */ - public static final String STATUS = "status"; - /** - * 设备报警 - */ - public static final String ALARM = "alarm"; - /** - * 设备指令反馈 - */ - public static final String CMD = "cmd"; - /** - * 工艺执行反馈 - */ - public static final String CRAFTS = "crafts"; - /** - * 容器剩余状态 - */ - public static final String CONTAINER = "container"; - -} diff --git a/src/main/java/com/qyft/ms/common/result/CMDResultCode.java b/src/main/java/com/qyft/ms/common/result/CMDResultCode.java deleted file mode 100644 index cbf3392..0000000 --- a/src/main/java/com/qyft/ms/common/result/CMDResultCode.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.qyft.ms.common.result; - -import com.qyft.ms.system.common.result.IResultCode; -import lombok.AllArgsConstructor; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -@AllArgsConstructor -@NoArgsConstructor -public enum CMDResultCode implements IResultCode, Serializable { - SUCCESS("D0000", "执行完毕"), - FAILURE("D1111", "执行失败"); - - private String code; - private String msg; - - @Override - public String getCode() { - return code; - } - - @Override - public String getMsg() { - return msg; - } -} \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/config/WebSocketConfig.java b/src/main/java/com/qyft/ms/config/WebSocketConfig.java deleted file mode 100644 index cedfe03..0000000 --- a/src/main/java/com/qyft/ms/config/WebSocketConfig.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.qyft.ms.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.socket.server.standard.ServerEndpointExporter; - -@Configuration -public class WebSocketConfig { - - @Bean - public ServerEndpointExporter serverEndpointExporter() { - return new ServerEndpointExporter(); - } -} diff --git a/src/main/java/com/qyft/ms/config/WebSocketServer.java b/src/main/java/com/qyft/ms/config/WebSocketServer.java deleted file mode 100644 index 1dc430f..0000000 --- a/src/main/java/com/qyft/ms/config/WebSocketServer.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.qyft.ms.config; - - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.qyft.ms.model.dto.WebsocketDTO; -import jakarta.websocket.*; -import jakarta.websocket.server.ServerEndpoint; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -@Slf4j -@ServerEndpoint("/ws") -@Component -public class WebSocketServer { - - private static final Set sessions = Collections.synchronizedSet(new HashSet<>()); - - public static void sendMessageToClients(String message) { - synchronized (sessions) { - for (Session session : sessions) { - try { - session.getBasicRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - @OnOpen - public void onOpen(Session session) { - sessions.add(session); - } - - @OnMessage - public void onMessage(String message, Session session) { - ObjectMapper objectMapper = new ObjectMapper(); - try { - WebsocketDTO c = objectMapper.readValue(message, WebsocketDTO.class); - log.info("解析后的信息: commandName={}, commandId={}", c.getCommandName(), c.getCommandId()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @OnClose - public void onClose(Session session) { - sessions.remove(session); // 移除关闭连接的 Session - } - - @OnError - public void onError(Throwable error) { - } -} diff --git a/src/main/java/com/qyft/ms/controller/CMDController.java b/src/main/java/com/qyft/ms/controller/CMDController.java deleted file mode 100644 index 29181f1..0000000 --- a/src/main/java/com/qyft/ms/controller/CMDController.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.qyft.ms.controller; - -import cn.hutool.json.JSONUtil; -import com.qyft.ms.model.form.CMDForm; -import com.qyft.ms.service.CMDService; -import com.qyft.ms.system.common.result.Result; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.*; - -@Tag(name = "控制指令") -@RestController -@RequestMapping("/api/cmd") -@RequiredArgsConstructor -@Slf4j -public class CMDController { - - private final CMDService cmdService; - - @Operation(summary = "执行指令") - @PostMapping("/execute") - public Result execute(@RequestBody CMDForm cmdForm) { - try { - String commandId = UUID.randomUUID().toString(); - if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { - cmdForm.setCommandId(commandId); - } - log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); - if (cmdService.executeCommand(cmdForm)) { - return Result.success(cmdForm.getCommandId()); - } else { - return Result.failed("无效命令"); - } - } catch (Exception e) { - log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); - return Result.failed("执行失败"); - } - } - -} diff --git a/src/main/java/com/qyft/ms/controller/LogsController.java b/src/main/java/com/qyft/ms/controller/LogsController.java deleted file mode 100644 index b5e461a..0000000 --- a/src/main/java/com/qyft/ms/controller/LogsController.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.qyft.ms.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.qyft.ms.model.entity.Logs; -import com.qyft.ms.service.ILogsService; -import com.qyft.ms.system.common.base.BasePageQuery; -import com.qyft.ms.system.common.result.PageResult; -import com.qyft.ms.system.common.result.Result; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -@Tag(name = "日志") -@RestController -@RequestMapping("/api/logs") -@RequiredArgsConstructor -@Slf4j -public class LogsController { - private final ILogsService logsService; - - @Operation(summary = "日志列表") - @GetMapping("/list") - public PageResult getAllTasks(BasePageQuery pageQuery) { - - return PageResult.success(logsService.page(new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()))); - } - - @Operation(summary = "日志新增") - @PostMapping("/add") - public Result add(String log) { - return Result.success(logsService.insertLog(log)); - } - - @Operation(summary = "日志详情") - @GetMapping("/") - public Result detail(@RequestParam Long id) { - return Result.success(logsService.getBaseMapper().selectById(id)); - } - - @Operation(summary = "删除日志") - @DeleteMapping("/{ids}") - public Result deleteLog(@Parameter(description = "日志ID,多个以英文逗号(,)分割") @PathVariable String ids) { - List idsArr = Arrays.stream(ids.split(",")) - .map(Long::parseLong) - .collect(Collectors.toList()); - return Result.success(logsService.removeByIds(idsArr)); - } -} diff --git a/src/main/java/com/qyft/ms/controller/SysSettingsController.java b/src/main/java/com/qyft/ms/controller/SysSettingsController.java deleted file mode 100644 index 309dea5..0000000 --- a/src/main/java/com/qyft/ms/controller/SysSettingsController.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.qyft.ms.controller; - -import com.qyft.ms.model.dto.SysSettingsDTO; -import com.qyft.ms.service.ISysSettingsService; -import com.qyft.ms.system.common.result.Result; -import io.micrometer.common.lang.Nullable; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@Tag(name = "系统配置") -@RestController -@RequestMapping("/api/sys") -@RequiredArgsConstructor -@Slf4j -public class SysSettingsController { - private final ISysSettingsService sysSettingsService; - - @Operation(summary = "获取配置") - @GetMapping("/getConfig") - public Result> getConfig( - @Parameter( - description = "配置类型(heat_area 工作区配置 solution_area 加液区配置 lid_area 拍子区域配置 sys_setting 其他系统配置)" - ) - @RequestParam - @Nullable - String type - ) { - if (type == null) { - return Result.success(sysSettingsService.getAllConfig()); - } else { - return Result.success(sysSettingsService.getConfig(type)); - } - } - - @Operation(summary = "更新配置") - @PutMapping("/updateConfig") - public Result updateConfig(@RequestBody List dto) { - return Result.failed(); - } - - @Operation(summary = "修改系统日期与时间(Linux date -s)") - @PutMapping("/setSysDate/{newTime}") - public Result setSysDate(@Parameter(description = "时间字符串 YYYY-MM-DD HH:mm:ss") @PathVariable String newTime) { - boolean isSuccess = sysSettingsService.setSysDate(newTime); - if (isSuccess) { - return Result.success(); - } - return Result.failed(); - } -} diff --git a/src/main/java/com/qyft/ms/device/handler/DeviceMessageHandler.java b/src/main/java/com/qyft/ms/device/handler/DeviceMessageHandler.java index aa00420..be0ef98 100644 --- a/src/main/java/com/qyft/ms/device/handler/DeviceMessageHandler.java +++ b/src/main/java/com/qyft/ms/device/handler/DeviceMessageHandler.java @@ -1,14 +1,14 @@ package com.qyft.ms.device.handler; import cn.hutool.json.JSONUtil; -import com.qyft.ms.common.constant.WebSocketMessageType; +import com.qyft.ms.app.common.constant.WebSocketMessageType; import com.qyft.ms.device.common.constant.TcpMessageType; import com.qyft.ms.device.common.jsonrpc.JsonRpcResponse; import com.qyft.ms.device.model.bo.DeviceAlarm; import com.qyft.ms.device.model.bo.DeviceFeedback; import com.qyft.ms.device.model.bo.DeviceStatus; import com.qyft.ms.device.service.DeviceStatusService; -import com.qyft.ms.service.WebSocketService; +import com.qyft.ms.app.service.WebSocketService; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; diff --git a/src/main/java/com/qyft/ms/device/service/DeviceStepService.java b/src/main/java/com/qyft/ms/device/service/DeviceStepService.java index ef0f78e..cb2bd16 100644 --- a/src/main/java/com/qyft/ms/device/service/DeviceStepService.java +++ b/src/main/java/com/qyft/ms/device/service/DeviceStepService.java @@ -1,7 +1,7 @@ package com.qyft.ms.device.service; -import com.qyft.ms.model.bo.TubeSol; -import com.qyft.ms.service.CMDService; +import com.qyft.ms.app.model.bo.TubeSol; +import com.qyft.ms.app.service.CMDService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/qyft/ms/enums/DirectiveTypeEnum.java b/src/main/java/com/qyft/ms/enums/DirectiveTypeEnum.java deleted file mode 100644 index 833c2f4..0000000 --- a/src/main/java/com/qyft/ms/enums/DirectiveTypeEnum.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.qyft.ms.enums; - -import cn.hutool.core.util.StrUtil; - -public enum DirectiveTypeEnum { - ADD("add", "抬起托盘"); - - private final String typeCode; - private final String typeName; - - DirectiveTypeEnum(String typeCode, String typeName) { - this.typeCode = typeCode; - this.typeName = typeName; - } - - public static String getByCode(String code) { - if (StrUtil.isNotBlank(code)) { - for (DirectiveTypeEnum item : DirectiveTypeEnum.values()) { - if (item.typeCode().equals(code.trim())) { - return item.typeCode(); - } - } - } - return null; - } - - public String typeCode() { - return typeCode; - } - - public String typeName() { - return typeName; - } -} diff --git a/src/main/java/com/qyft/ms/mapper/LogsMapper.java b/src/main/java/com/qyft/ms/mapper/LogsMapper.java deleted file mode 100644 index ad0f32f..0000000 --- a/src/main/java/com/qyft/ms/mapper/LogsMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.qyft.ms.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.qyft.ms.model.entity.Logs; -import org.apache.ibatis.annotations.Mapper; - -/** - * 日志持久层接口 - */ -@Mapper -public interface LogsMapper extends BaseMapper { -} diff --git a/src/main/java/com/qyft/ms/mapper/SysSettingsMapper.java b/src/main/java/com/qyft/ms/mapper/SysSettingsMapper.java deleted file mode 100644 index b0960c5..0000000 --- a/src/main/java/com/qyft/ms/mapper/SysSettingsMapper.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.qyft.ms.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.qyft.ms.model.dto.SysSettingsDTO; -import com.qyft.ms.model.entity.SysSettings; -import com.qyft.ms.model.vo.SysSettingVO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - - -/** - *

- * Mapper 接口 - *

- * - * @author 郭安鹏 - * @since 2025-02-17 - */ - -@Mapper -public interface SysSettingsMapper extends BaseMapper { - List getConfig(String type); - - void updateById(SysSettingsDTO dto); - - int getIdByCode(String type); -} - diff --git a/src/main/java/com/qyft/ms/model/bo/CraftsStepMethod.java b/src/main/java/com/qyft/ms/model/bo/CraftsStepMethod.java deleted file mode 100644 index 3eb335b..0000000 --- a/src/main/java/com/qyft/ms/model/bo/CraftsStepMethod.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.qyft.ms.model.bo; - -import lombok.Data; - -/** - * 工艺步骤执行方法 - */ -@Data -public class CraftsStepMethod { - /** - * 上升托盘 - */ - public static final String UP_TRAY = "upTray"; - /** - * 降下托盘 - */ - public static final String DOWN_TRAY = "downTray"; - /** - * 加液 - */ - public static final String ADD_LIQUID = "addLiquid"; - /** - * 移动到溶液位置 - */ - public static final String MOVE_TO_SOL = "moveToSol"; - /** - * 移动到加热器位置 - */ - public static final String MOVE_TO_HEAT = "moveToHeat"; - /** - * 摇晃 - */ - public static final String SHAKING = "shaking"; - /** - * 开始加热 - */ - public static final String START_HEATING = "startHeating"; - /** - * 停止加热 - */ - public static final String STOP_HEATING = "stopHeating"; - /** - * 拍照 - */ - public static final String TAKE_PHOTO = "takePhoto"; - /** - * 等待 - */ - public static final String DELAY = "delay"; - - -} diff --git a/src/main/java/com/qyft/ms/model/bo/CraftsStepStatus.java b/src/main/java/com/qyft/ms/model/bo/CraftsStepStatus.java deleted file mode 100644 index 21cfa85..0000000 --- a/src/main/java/com/qyft/ms/model/bo/CraftsStepStatus.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.qyft.ms.model.bo; - -import lombok.Data; - -/** - * 工艺步骤执行状态 - */ -@Data -public class CraftsStepStatus { - - /** - * 未执行 - */ - public static final int NOT_EXECUTED = 0; - /** - * 正在执行 - */ - public static final int IN_PROGRESS = 1; - /** - * 暂停执行 - */ - public static final int PAUSED = 2; - /** - * 停止执行 - */ - public static final int STOPPED = 3; - /** - * 执行错误 - */ - public static final int ERROR = 4; - /** - * 执行完成 - */ - public static final int FINISH = 6; -} diff --git a/src/main/java/com/qyft/ms/model/bo/TubeSol.java b/src/main/java/com/qyft/ms/model/bo/TubeSol.java deleted file mode 100644 index c0d37d6..0000000 --- a/src/main/java/com/qyft/ms/model/bo/TubeSol.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.qyft.ms.model.bo; - -import lombok.Data; - -/** - * 试管添加溶液 - */ -@Data -public class TubeSol { - /** - * 需要添加溶液的试管编号 - */ - private Integer tubeNum; - /** - * 溶液id - */ - private Long solId; - /** - * 加液量 - */ - private Integer volume; - -} diff --git a/src/main/java/com/qyft/ms/model/dto/BaseDataDTO.java b/src/main/java/com/qyft/ms/model/dto/BaseDataDTO.java deleted file mode 100644 index 93e7f85..0000000 --- a/src/main/java/com/qyft/ms/model/dto/BaseDataDTO.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class BaseDataDTO { - @Schema(description = "加热区id") - private Long id; - @Schema(description = "温度") - private Long temperature; - @Schema(description = "工艺id") - private Long craftId; -} diff --git a/src/main/java/com/qyft/ms/model/dto/CmdInjectFluidDTO.java b/src/main/java/com/qyft/ms/model/dto/CmdInjectFluidDTO.java deleted file mode 100644 index 6f7986d..0000000 --- a/src/main/java/com/qyft/ms/model/dto/CmdInjectFluidDTO.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class CmdInjectFluidDTO { - @Schema(description = "指令id") - private String commandId; - - @Schema(description = "加液数据list") - private InjectFluid[] injectFluids; -} diff --git a/src/main/java/com/qyft/ms/model/dto/ContainerDTO.java b/src/main/java/com/qyft/ms/model/dto/ContainerDTO.java deleted file mode 100644 index 75441cd..0000000 --- a/src/main/java/com/qyft/ms/model/dto/ContainerDTO.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class ContainerDTO { - @Schema(description = "容器id") - private Long id; - @Schema(description = "溶液id") - private Long solutionId; - @Schema(description = "已使用容量") - private Integer capacityUsed; -} diff --git a/src/main/java/com/qyft/ms/model/dto/InjectFluid.java b/src/main/java/com/qyft/ms/model/dto/InjectFluid.java deleted file mode 100644 index 192216f..0000000 --- a/src/main/java/com/qyft/ms/model/dto/InjectFluid.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class InjectFluid { - @Schema(description = "试管编号") - private Integer tubeNum; - @Schema(description = "溶液id") - private Integer solutionId; - @Schema(description = "容量") - private Integer volume; -} diff --git a/src/main/java/com/qyft/ms/model/dto/LogDTO.java b/src/main/java/com/qyft/ms/model/dto/LogDTO.java deleted file mode 100644 index 3533b3b..0000000 --- a/src/main/java/com/qyft/ms/model/dto/LogDTO.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class LogDTO { - @Schema(description = "日志信息") - private String text; -} diff --git a/src/main/java/com/qyft/ms/model/dto/PauseCraftsDto.java b/src/main/java/com/qyft/ms/model/dto/PauseCraftsDto.java deleted file mode 100644 index d4a5914..0000000 --- a/src/main/java/com/qyft/ms/model/dto/PauseCraftsDto.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "暂停执行工艺") -@Data -public class PauseCraftsDto { - @Schema(description = "加热区id") - private String heatId; -} diff --git a/src/main/java/com/qyft/ms/model/dto/ResumeCraftsDto.java b/src/main/java/com/qyft/ms/model/dto/ResumeCraftsDto.java deleted file mode 100644 index d3da8a6..0000000 --- a/src/main/java/com/qyft/ms/model/dto/ResumeCraftsDto.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "恢复执行工艺") -@Data -public class ResumeCraftsDto { - @Schema(description = "加热区id") - private String heatId; -} diff --git a/src/main/java/com/qyft/ms/model/dto/StartCraftsDTO.java b/src/main/java/com/qyft/ms/model/dto/StartCraftsDTO.java deleted file mode 100644 index 11c40fb..0000000 --- a/src/main/java/com/qyft/ms/model/dto/StartCraftsDTO.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "开始工艺") -@Data -public class StartCraftsDTO { - @Schema(description = "工艺id") - private Long craftId; - @Schema(description = "加热区id") - private String heatId; -} diff --git a/src/main/java/com/qyft/ms/model/dto/StartHeatDTO.java b/src/main/java/com/qyft/ms/model/dto/StartHeatDTO.java deleted file mode 100644 index 449c038..0000000 --- a/src/main/java/com/qyft/ms/model/dto/StartHeatDTO.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class StartHeatDTO { - @Schema(description = "指令id") - private String commandId; - - @Schema(description = "加液数据list") - private Integer[] heatIds; -} diff --git a/src/main/java/com/qyft/ms/model/dto/StopCraftsDto.java b/src/main/java/com/qyft/ms/model/dto/StopCraftsDto.java deleted file mode 100644 index 051fb51..0000000 --- a/src/main/java/com/qyft/ms/model/dto/StopCraftsDto.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "恢复执行工艺") -@Data -public class StopCraftsDto { - @Schema(description = "加热区id") - private String heatId; -} diff --git a/src/main/java/com/qyft/ms/model/dto/StopTaskDTO.java b/src/main/java/com/qyft/ms/model/dto/StopTaskDTO.java deleted file mode 100644 index 07c4538..0000000 --- a/src/main/java/com/qyft/ms/model/dto/StopTaskDTO.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class StopTaskDTO { - @Schema(description = "实验id") - private Long taskId; -} diff --git a/src/main/java/com/qyft/ms/model/dto/SysSettingsDTO.java b/src/main/java/com/qyft/ms/model/dto/SysSettingsDTO.java deleted file mode 100644 index f1c45ef..0000000 --- a/src/main/java/com/qyft/ms/model/dto/SysSettingsDTO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class SysSettingsDTO { - @Schema(description = "主键id") - private Long id; - @Schema(description = "值") - private String value; - @Schema(description = "温度") - private Long temperature; - @Schema(description = "工艺id") - private Long craftId; -} diff --git a/src/main/java/com/qyft/ms/model/dto/TaskDTO.java b/src/main/java/com/qyft/ms/model/dto/TaskDTO.java deleted file mode 100644 index 890c697..0000000 --- a/src/main/java/com/qyft/ms/model/dto/TaskDTO.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class TaskDTO { - @Schema(description = "实验名称") - private String name; -} diff --git a/src/main/java/com/qyft/ms/model/dto/WebsocketDTO.java b/src/main/java/com/qyft/ms/model/dto/WebsocketDTO.java deleted file mode 100644 index b380586..0000000 --- a/src/main/java/com/qyft/ms/model/dto/WebsocketDTO.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.qyft.ms.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -@Data -public class WebsocketDTO { - - @Schema(description = "指令id,不指定后台会自动生成uuid") - private String commandId; - - @NotBlank() - @Schema(description = "指令类型", example = "upTray") - private String commandName; - - @Schema(description = "参数") - private Map params; -} diff --git a/src/main/java/com/qyft/ms/model/entity/Container.java b/src/main/java/com/qyft/ms/model/entity/Container.java deleted file mode 100644 index 3a83cd8..0000000 --- a/src/main/java/com/qyft/ms/model/entity/Container.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.qyft.ms.model.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = false) -@Schema(description = "容器表") -@TableName("container") -@Data -public class Container { - @NotBlank - @Schema(description = "容器id") - private Long id; - - @NotBlank - @Schema(description = "类型 0 溶液 1 废液") - private Long type; - - @Schema(description = "溶液id") - private Long solutionId; - - @Schema(description = "机器id") - private String pumpId; - - @NotBlank - @Schema(description = "总容量") - private Integer capacityTotal; - - @NotBlank - @Schema(description = "使用容量") - private Integer capacityUsed; -} diff --git a/src/main/java/com/qyft/ms/model/entity/Crafts.java b/src/main/java/com/qyft/ms/model/entity/Crafts.java deleted file mode 100644 index d600bb3..0000000 --- a/src/main/java/com/qyft/ms/model/entity/Crafts.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.qyft.ms.model.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.qyft.ms.system.common.base.BaseEntity; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Schema(description = "工艺") -@TableName("crafts") -@Data -public class Crafts extends BaseEntity { - - @NotBlank - @Schema(description = "工艺名称") - private String name; - - @Schema(description = "工艺步骤") - private String steps; - - @Schema(description = "矿石ID") - private Long oresId; -} diff --git a/src/main/java/com/qyft/ms/model/entity/Logs.java b/src/main/java/com/qyft/ms/model/entity/Logs.java deleted file mode 100644 index 5011ce8..0000000 --- a/src/main/java/com/qyft/ms/model/entity/Logs.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.qyft.ms.model.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = false) -@Schema(description = "日志") -@TableName("logs") -@Data -public class Logs { - - @NotBlank - @Schema(description = "id") - private Long id; - - @NotBlank - @Schema(description = "创建人") - private Long createUser; - - @NotBlank - @Schema(description = "日志内容") - private String text; - - @NotBlank - @Schema(description = "创建时间") - private String createTime; -} diff --git a/src/main/java/com/qyft/ms/model/entity/Ores.java b/src/main/java/com/qyft/ms/model/entity/Ores.java deleted file mode 100644 index 0de00ad..0000000 --- a/src/main/java/com/qyft/ms/model/entity/Ores.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.qyft.ms.model.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.qyft.ms.system.common.base.BaseEntity; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Schema(description = "矿石") -@TableName("ores") -@Data -public class Ores extends BaseEntity { - - @NotBlank() - @Schema(description = "矿石名称") - private String name; - -} diff --git a/src/main/java/com/qyft/ms/model/entity/Solutions.java b/src/main/java/com/qyft/ms/model/entity/Solutions.java deleted file mode 100644 index eb26aa5..0000000 --- a/src/main/java/com/qyft/ms/model/entity/Solutions.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.qyft.ms.model.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.qyft.ms.system.common.base.BaseEntity; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Schema(description = "溶液") -@TableName("solutions") -@Data -public class Solutions extends BaseEntity { - - @NotBlank() - @Schema(description = "溶液名称") - private String name; - -} diff --git a/src/main/java/com/qyft/ms/model/entity/SysSettings.java b/src/main/java/com/qyft/ms/model/entity/SysSettings.java deleted file mode 100644 index c9f0cf7..0000000 --- a/src/main/java/com/qyft/ms/model/entity/SysSettings.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.qyft.ms.model.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - *

- * 系统配置 - *

- * - * @author 郭安鹏 - * @since 2025-02-17 - */ -@EqualsAndHashCode(callSuper = false) -@Schema(description = "系统配置") -@TableName("sys_settings") -@Data -public class SysSettings { - - @Schema(description = "主键id") - private Long id; - - @Schema(description = "父id") - private Long parentId; - - @Schema(description = "名称") - private String name; - - @Schema(description = "code") - private String code; - - @Schema(description = "配置值") - private String value1; - - @Schema(description = "配置值") - private String value2; - - @Schema(description = "配置值") - private String value3; - -} diff --git a/src/main/java/com/qyft/ms/model/entity/TaskSteps.java b/src/main/java/com/qyft/ms/model/entity/TaskSteps.java deleted file mode 100644 index e307e91..0000000 --- a/src/main/java/com/qyft/ms/model/entity/TaskSteps.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.qyft.ms.model.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = false) -@Schema(description = "实验步骤") -@TableName("task_steps") -@Data -public class TaskSteps { - - @NotBlank - @Schema(description = "id") - private Long id; - - @NotBlank - @Schema(description = "实验id") - private Long taskId; - - @NotBlank - @Schema(description = "步骤描述") - private String stepDescription; - - @NotBlank - @Schema(description = "创建时间") - private String createTime; -} diff --git a/src/main/java/com/qyft/ms/model/entity/Tasks.java b/src/main/java/com/qyft/ms/model/entity/Tasks.java deleted file mode 100644 index d66f85c..0000000 --- a/src/main/java/com/qyft/ms/model/entity/Tasks.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.qyft.ms.model.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.qyft.ms.system.common.base.BaseEntity; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Schema(description = "实验") -@TableName("tasks") -@Data -public class Tasks extends BaseEntity { - - @NotBlank - @Schema(description = "实验名称") - private String name; - - @NotBlank - @Schema(description = "开始时间") - private String startTime; - - @Schema(description = "创建人") - private Long createUser; - - @Schema(description = "结束时间") - private String endTime; - - @Schema(description = "状态 1 执行中 2 执行完毕") - private Integer status; - - @Schema(description = "是否删除 0 未删除 1 已删除") - private Integer isDeleted; -} diff --git a/src/main/java/com/qyft/ms/model/form/CMDForm.java b/src/main/java/com/qyft/ms/model/form/CMDForm.java deleted file mode 100644 index ac29491..0000000 --- a/src/main/java/com/qyft/ms/model/form/CMDForm.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.qyft.ms.model.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; - -import java.util.List; - -@Schema(description = "指令") -@Data -public class CMDForm { - - @Schema(description = "指令id,不指定后台会自动生成uuid") - private String commandId; - - @NotBlank() - @Schema(description = "指令类型", example = "upTray") - private String command; - - @Schema(description = "参数") - private List params; - -} diff --git a/src/main/java/com/qyft/ms/model/vo/BaseDataVO.java b/src/main/java/com/qyft/ms/model/vo/BaseDataVO.java deleted file mode 100644 index 493f55a..0000000 --- a/src/main/java/com/qyft/ms/model/vo/BaseDataVO.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.qyft.ms.model.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.List; - -@EqualsAndHashCode(callSuper = false) -@Schema(description = "容器") -@Data -public class BaseDataVO { - @Schema(description = "加热区") - List heat_area; - - @Schema(description = "加液区") - List solution_area; - - @Schema(description = "拍子区域") - List lid_area; - - @Schema(description = "系统配置") - List sys_setting; - - @Schema(description = "容器数据") - List containers; -} diff --git a/src/main/java/com/qyft/ms/model/vo/ContainerListVO.java b/src/main/java/com/qyft/ms/model/vo/ContainerListVO.java deleted file mode 100644 index ea46104..0000000 --- a/src/main/java/com/qyft/ms/model/vo/ContainerListVO.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.qyft.ms.model.vo; - -import com.qyft.ms.model.entity.Container; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Schema(description = "容器") -@Data -public class ContainerListVO extends Container { - -} diff --git a/src/main/java/com/qyft/ms/model/vo/CraftsStepResult.java b/src/main/java/com/qyft/ms/model/vo/CraftsStepResult.java deleted file mode 100644 index 8a641ee..0000000 --- a/src/main/java/com/qyft/ms/model/vo/CraftsStepResult.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.qyft.ms.model.vo; - -import lombok.Data; - -/** - * 工艺步骤执行状态 - */ -@Data -public class CraftsStepResult { - /** - * 加热区id - */ - private String heatId; - /** - * 0 (未执行),1 (正在执行),2 (暂停执行),3 (停止执行),4(执行错误),6(执行完成) - */ - private Integer status; - /** - * 当前工艺执行的方法数组下标 - */ - private Integer methodIndex; - -} diff --git a/src/main/java/com/qyft/ms/model/vo/ExecutionResult.java b/src/main/java/com/qyft/ms/model/vo/ExecutionResult.java deleted file mode 100644 index a5abd34..0000000 --- a/src/main/java/com/qyft/ms/model/vo/ExecutionResult.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.qyft.ms.model.vo; - -import lombok.Data; - -@Data -public class ExecutionResult { - /** - * 任务id - */ - private String commandId; - - private String commandName; - /** - * 执行结果 - */ - private String status; - /** - * 结果描述 - */ - private String message; - -} diff --git a/src/main/java/com/qyft/ms/model/vo/OresCraftsListVO.java b/src/main/java/com/qyft/ms/model/vo/OresCraftsListVO.java deleted file mode 100644 index ea44716..0000000 --- a/src/main/java/com/qyft/ms/model/vo/OresCraftsListVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.qyft.ms.model.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.qyft.ms.model.entity.Crafts; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; -import java.util.List; - -@Schema(description = "矿石工艺视图") -@Data -public class OresCraftsListVO { - - @Schema(description = "矿石id") - private Long id; - - @Schema(description = "矿石名称") - private String oresName; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime createTime; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime updateTime; - - @Schema(description = "该矿石下工艺列表") - private List craftsList; - -} diff --git a/src/main/java/com/qyft/ms/model/vo/SysSettingResult.java b/src/main/java/com/qyft/ms/model/vo/SysSettingResult.java deleted file mode 100644 index 1a7b422..0000000 --- a/src/main/java/com/qyft/ms/model/vo/SysSettingResult.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.qyft.ms.model.vo; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.List; - -@EqualsAndHashCode(callSuper = true) -@Data -public class SysSettingResult extends SysSettingVO { - - private List children; - -} diff --git a/src/main/java/com/qyft/ms/model/vo/SysSettingVO.java b/src/main/java/com/qyft/ms/model/vo/SysSettingVO.java deleted file mode 100644 index 828eb08..0000000 --- a/src/main/java/com/qyft/ms/model/vo/SysSettingVO.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.qyft.ms.model.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.List; - -@EqualsAndHashCode(callSuper = false) -@Data -public class SysSettingVO { - - @Schema(description = "主键id") - private int id; - - @Schema(description = "父id") - private int parentId; - - @Schema(description = "名称") - private String name; - - @Schema(description = "code") - private String code; - - @Schema(description = "配置值") - private String value; - - @Schema(description = "设备id") - private String hardwareId; - - @Schema(description = "加热区温度") - private String temperature; - - @Schema(description = "工艺id") - private int craftId; - - @Schema(description = "试管坐标list") - private List tubePositionList; - - @Schema(description = "拍子坐标") - private String LidPosition; - -} diff --git a/src/main/java/com/qyft/ms/model/vo/TaskListVO.java b/src/main/java/com/qyft/ms/model/vo/TaskListVO.java deleted file mode 100644 index acb0e83..0000000 --- a/src/main/java/com/qyft/ms/model/vo/TaskListVO.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.qyft.ms.model.vo; - -import com.qyft.ms.model.entity.TaskSteps; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.List; - -@EqualsAndHashCode(callSuper = false) -@Data -public class TaskListVO { - @Schema(description = "实验id") - private Long id; - - @Schema(description = "实验名称") - private String name; - - @NotBlank - @Schema(description = "开始时间") - private String startTime; - - @Schema(description = "创建人") - private Long createUser; - - @Schema(description = "结束时间") - private String endTime; - - @Schema(description = "状态 1 执行中 2 执行完毕") - private Integer status; - - @Schema(description = "实验步骤") - private List steps; -} diff --git a/src/main/java/com/qyft/ms/model/vo/WebsocketResult.java b/src/main/java/com/qyft/ms/model/vo/WebsocketResult.java deleted file mode 100644 index 07ef459..0000000 --- a/src/main/java/com/qyft/ms/model/vo/WebsocketResult.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.qyft.ms.model.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class WebsocketResult { - /** - * 推送类型(指令 cmd,报警 warn ,状态 status) - */ - @Schema(description = "推送类型(指令 cmd,报警 warn ,状态 status)") - private String type; - /** - * 执行结果 - */ - @Schema(description = "推送数据") - private Object data; -} \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/service/CMDService.java b/src/main/java/com/qyft/ms/service/CMDService.java deleted file mode 100644 index e5c5cd8..0000000 --- a/src/main/java/com/qyft/ms/service/CMDService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.qyft.ms.service; - -import cn.hutool.json.JSONUtil; -import com.qyft.ms.common.constant.WebSocketMessageType; -import com.qyft.ms.common.result.CMDResultCode; -import com.qyft.ms.device.model.bo.DeviceCtrlFuncCMD; -import com.qyft.ms.device.service.ICtrlFuncService; -import com.qyft.ms.model.form.CMDForm; -import com.qyft.ms.model.vo.ExecutionResult; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.function.Supplier; - -@Slf4j -@RequiredArgsConstructor -@Service -public class CMDService { - - private final WebSocketService webSocketService; - private final ICtrlFuncService ctrlFuncService; - CMDForm form; - - private void run(List> cmdList) { - ExecutionResult executionResult = new ExecutionResult(); - executionResult.setCommandId(form.getCommandId()); - executionResult.setCommandName(form.getCommand()); - - // 执行所有命令 - for (Supplier command : cmdList) { - boolean result = command.get(); - if (!result) { - log.error("指令执行异常: {}", JSONUtil.toJsonStr(form)); - executionResult.setStatus(CMDResultCode.FAILURE.getCode()); - executionResult.setMessage(CMDResultCode.FAILURE.getMsg()); - webSocketService.pushMsg(WebSocketMessageType.CMD, executionResult); - return; - } - } - executionResult.setStatus(CMDResultCode.SUCCESS.getCode()); - executionResult.setMessage(CMDResultCode.SUCCESS.getMsg()); - webSocketService.pushMsg(WebSocketMessageType.CMD, executionResult); - } - - public boolean executeCommand(CMDForm cmdForm) { - String commandName = cmdForm.getCommand(); - List deviceCtrlFuncCMDList = ctrlFuncService.findAllStepCMD(); - for (DeviceCtrlFuncCMD deviceCtrlFuncCMD : deviceCtrlFuncCMDList) { - if (deviceCtrlFuncCMD.getDeviceCmd().equals(commandName)) { - new Thread(() -> run(cmdForm)).start(); - return true; - } - } - return false; - } - - - -} diff --git a/src/main/java/com/qyft/ms/service/ILogsService.java b/src/main/java/com/qyft/ms/service/ILogsService.java deleted file mode 100644 index 8a5534a..0000000 --- a/src/main/java/com/qyft/ms/service/ILogsService.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.qyft.ms.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.qyft.ms.model.entity.Logs; - -/** - * 日志业务接口 - */ -public interface ILogsService extends IService { - int insertLog(String log); -} diff --git a/src/main/java/com/qyft/ms/service/ISysSettingsService.java b/src/main/java/com/qyft/ms/service/ISysSettingsService.java deleted file mode 100644 index 50291ca..0000000 --- a/src/main/java/com/qyft/ms/service/ISysSettingsService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.qyft.ms.service; - - -import com.baomidou.mybatisplus.extension.service.IService; -import com.qyft.ms.model.dto.SysSettingsDTO; -import com.qyft.ms.model.entity.SysSettings; -import com.qyft.ms.model.vo.SysSettingResult; -import com.qyft.ms.model.vo.SysSettingVO; - -import java.util.List; - -/** - * 系统配置接口层 - */ -public interface ISysSettingsService extends IService { - - List getConfig(String type); - - List getAllConfig(); - - Boolean updateConfig(List dto); - - boolean setSysDate(String newTime); -} diff --git a/src/main/java/com/qyft/ms/service/StatusService.java b/src/main/java/com/qyft/ms/service/StatusService.java deleted file mode 100644 index 0aea4ed..0000000 --- a/src/main/java/com/qyft/ms/service/StatusService.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.qyft.ms.service; - -import com.qyft.ms.common.constant.WebSocketMessageType; -import com.qyft.ms.device.model.bo.DeviceStatus; -import com.qyft.ms.device.service.DeviceStatusService; -import jakarta.annotation.PostConstruct; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -@Slf4j -@Service -@RequiredArgsConstructor -public class StatusService { - - private final WebSocketService webSocketService; - private final DeviceStatusService deviceStatusService; - -// @PostConstruct - public void init() { - ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); - executorService.scheduleAtFixedRate(() -> { - try { - DeviceStatus deviceStatus = deviceStatusService.getDeviceStatus(); - webSocketService.pushMsg(WebSocketMessageType.STATUS, deviceStatus); - } catch (Exception e) { - if (!executorService.isShutdown()) { - executorService.shutdown(); // 关闭 ScheduledExecutorService - } - log.error("定时推送设备状态异常", e); - } - }, 10, 100, TimeUnit.MILLISECONDS); - } -} diff --git a/src/main/java/com/qyft/ms/service/WebSocketService.java b/src/main/java/com/qyft/ms/service/WebSocketService.java deleted file mode 100644 index 686f939..0000000 --- a/src/main/java/com/qyft/ms/service/WebSocketService.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.qyft.ms.service; - -import cn.hutool.json.JSONUtil; -import com.qyft.ms.config.WebSocketServer; -import com.qyft.ms.model.vo.WebsocketResult; -import jakarta.annotation.PostConstruct; -import org.springframework.stereotype.Service; - -@Service -public class WebSocketService { - public void pushMsg(String type, Object result) { - - WebsocketResult websocketResult = new WebsocketResult(); - websocketResult.setType(type); - websocketResult.setData(result); - // 发送消息给客户端 - WebSocketServer.sendMessageToClients(JSONUtil.toJsonStr(websocketResult)); - } - - @PostConstruct - public void init() { - // 设置 WebSocketService 实例到 WebSocketServer - WebSocketServer.setWebSocketService(this); - } - - // 新增方法:处理接收到的消息 - public void handleReceivedMessage(String message) { - // 这里可以添加处理接收到消息的逻辑 - System.out.println("Received message: " + message); - // 根据需要解析消息并进行处理 - } -} \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/service/impl/ILogsServiceImpl.java b/src/main/java/com/qyft/ms/service/impl/ILogsServiceImpl.java deleted file mode 100644 index edb305e..0000000 --- a/src/main/java/com/qyft/ms/service/impl/ILogsServiceImpl.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.qyft.ms.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.qyft.ms.mapper.LogsMapper; -import com.qyft.ms.model.entity.Logs; -import com.qyft.ms.service.ILogsService; -import com.qyft.ms.system.model.entity.User; -import com.qyft.ms.system.service.IUserService; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -/** - * 实验业务实现类 - */ -@Service -@RequiredArgsConstructor -public class ILogsServiceImpl extends ServiceImpl implements ILogsService { - private final LogsMapper logsMapper; - private final IUserService userService; - - @Override - public int insertLog(String log) { - Logs logs = new Logs(); - logs.setText(log); - User user = userService.currentUser(); - logs.setCreateUser(user.getId()); - return logsMapper.insert(logs); - } -} diff --git a/src/main/java/com/qyft/ms/service/impl/ISysSettingsServiceImpl.java b/src/main/java/com/qyft/ms/service/impl/ISysSettingsServiceImpl.java deleted file mode 100644 index 4aae49a..0000000 --- a/src/main/java/com/qyft/ms/service/impl/ISysSettingsServiceImpl.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.qyft.ms.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.qyft.ms.mapper.SysSettingsMapper; -import com.qyft.ms.model.dto.SysSettingsDTO; -import com.qyft.ms.model.entity.SysSettings; -import com.qyft.ms.model.vo.SysSettingResult; -import com.qyft.ms.model.vo.SysSettingVO; -import com.qyft.ms.service.ISysSettingsService; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; - -/** - * 系统配置实现类 - */ -@Service -@RequiredArgsConstructor -public class ISysSettingsServiceImpl extends ServiceImpl implements ISysSettingsService { - private final SysSettingsMapper sysSettingsMapper; - - @Override - public List getConfig(String type) { - int parentId = sysSettingsMapper.getIdByCode(type); - return sysSettingsMapper.getConfig(String.valueOf(parentId)); - } - - @Override - public List getAllConfig() { - List list = sysSettingsMapper.getConfig("-1"); - List result = new ArrayList<>(); - for (SysSettingVO sysSettings : list) { - List childrenList = sysSettingsMapper.getConfig(String.valueOf(sysSettings.getId())); - SysSettingResult map = new SysSettingResult(); - map.setName(sysSettings.getName()); - map.setCode(sysSettings.getCode()); - map.setId(sysSettings.getId()); - map.setValue(sysSettings.getValue()); - map.setHardwareId(sysSettings.getHardwareId()); - map.setChildren(childrenList); - result.add(map); - } - return result; - } - - @Override - public Boolean updateConfig(List dto) { - for (SysSettingsDTO sysSettingsDTO : dto) { - sysSettingsMapper.updateById(sysSettingsDTO); - } - return true; - } - - /** - * 修改服务器系统时间 - * - * @param newTime 时间字符串 YYYY-MM-DD HH:mm:ss - * @return 是否修改成功 - */ - @Override - public boolean setSysDate(String newTime) { - try { - String command = "date -s \"" + newTime + "\""; - Process process = Runtime.getRuntime().exec(command); - int exitCode = process.waitFor(); - return exitCode == 0; - } catch (Exception e) { - log.error("修改系统时间失败", e); - return false; - } - } - -} diff --git a/src/main/resources/mapper/SysSettingsMapper.xml b/src/main/resources/mapper/SysSettingsMapper.xml index d5effbb..8101127 100644 --- a/src/main/resources/mapper/SysSettingsMapper.xml +++ b/src/main/resources/mapper/SysSettingsMapper.xml @@ -1,7 +1,7 @@ - - select id, parent_id,