From c30bb8eeb60dc95c169420907cc96776bc58a4f8 Mon Sep 17 00:00:00 2001 From: guoapeng Date: Sun, 2 Mar 2025 17:24:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=8C=87=E4=BB=A4?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3/=E5=B7=A5=E8=89=BA/=E5=9F=BA=E8=B4=A8/?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- matrix-spray.db | Bin 36864 -> 36864 bytes sql/init.sql | 31 ++- .../ms/app/common/generator/PathGenerator.java | 3 +- .../com/qyft/ms/app/controller/CMDController.java | 245 ++++++++++++++++++- .../com/qyft/ms/app/controller/LogsController.java | 55 ----- .../qyft/ms/app/controller/MatrixController.java | 56 +++++ .../ms/app/controller/MatrixCraftController.java | 72 ++++++ .../ms/app/controller/OperationLogController.java | 66 ++++++ .../ms/app/controller/SysSettingsController.java | 34 --- .../java/com/qyft/ms/app/mapper/LogsMapper.java | 12 - .../com/qyft/ms/app/mapper/MatrixCraftMapper.java | 18 ++ .../java/com/qyft/ms/app/mapper/MatrixMapper.java | 12 + .../com/qyft/ms/app/mapper/OperationLogMapper.java | 13 + .../com/qyft/ms/app/mapper/SysSettingsMapper.java | 5 - .../com/qyft/ms/app/model/dto/MatrixCraftDTO.java | 42 ++++ .../java/com/qyft/ms/app/model/entity/Logs.java | 30 --- .../java/com/qyft/ms/app/model/entity/Matrix.java | 19 ++ .../com/qyft/ms/app/model/entity/MatrixCraft.java | 58 +++++ .../com/qyft/ms/app/model/entity/OperationLog.java | 30 +++ .../com/qyft/ms/app/model/entity/SysSettings.java | 8 +- .../java/com/qyft/ms/app/model/form/CMDForm.java | 7 +- .../com/qyft/ms/app/model/vo/SysSettingVO.java | 19 +- .../java/com/qyft/ms/app/service/CMDService.java | 263 +++++++++++++++++++-- .../java/com/qyft/ms/app/service/ILogsService.java | 11 - .../qyft/ms/app/service/ISysSettingsService.java | 7 - .../qyft/ms/app/service/MatrixCraftService.java | 25 ++ .../com/qyft/ms/app/service/MatrixService.java | 14 ++ .../qyft/ms/app/service/OperationLogService.java | 22 ++ .../com/qyft/ms/app/service/StatusService.java | 3 +- .../qyft/ms/app/service/impl/ILogsServiceImpl.java | 29 --- .../app/service/impl/ISysSettingsServiceImpl.java | 51 ---- .../app/service/impl/MatrixCraftServiceImpl.java | 49 ++++ .../ms/app/service/impl/MatrixServiceImpl.java | 40 ++++ .../app/service/impl/OperationLogServiceImpl.java | 59 +++++ .../ms/device/common/constant/DeviceCommands.java | 1 + .../com/qyft/ms/device/model/bo/DeviceStatus.java | 37 +++ .../ms/device/service/DeviceTcpCMDService.java | 15 +- src/main/resources/application.yml | 2 +- src/main/resources/mapper/SysSettingsMapper.xml | 30 --- .../resources/mapper/app/MatrixCraftMapper.xml | 14 ++ .../resources/mapper/app/OperationLogMapper.xml | 12 + .../resources/mapper/app/SysSettingsMapper.xml | 4 + 42 files changed, 1195 insertions(+), 328 deletions(-) delete mode 100644 src/main/java/com/qyft/ms/app/controller/LogsController.java create mode 100644 src/main/java/com/qyft/ms/app/controller/MatrixController.java create mode 100644 src/main/java/com/qyft/ms/app/controller/MatrixCraftController.java create mode 100644 src/main/java/com/qyft/ms/app/controller/OperationLogController.java delete mode 100644 src/main/java/com/qyft/ms/app/mapper/LogsMapper.java create mode 100644 src/main/java/com/qyft/ms/app/mapper/MatrixCraftMapper.java create mode 100644 src/main/java/com/qyft/ms/app/mapper/MatrixMapper.java create mode 100644 src/main/java/com/qyft/ms/app/mapper/OperationLogMapper.java create mode 100644 src/main/java/com/qyft/ms/app/model/dto/MatrixCraftDTO.java delete 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/Matrix.java create mode 100644 src/main/java/com/qyft/ms/app/model/entity/MatrixCraft.java create mode 100644 src/main/java/com/qyft/ms/app/model/entity/OperationLog.java delete mode 100644 src/main/java/com/qyft/ms/app/service/ILogsService.java create mode 100644 src/main/java/com/qyft/ms/app/service/MatrixCraftService.java create mode 100644 src/main/java/com/qyft/ms/app/service/MatrixService.java create mode 100644 src/main/java/com/qyft/ms/app/service/OperationLogService.java delete 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/MatrixCraftServiceImpl.java create mode 100644 src/main/java/com/qyft/ms/app/service/impl/MatrixServiceImpl.java create mode 100644 src/main/java/com/qyft/ms/app/service/impl/OperationLogServiceImpl.java delete mode 100644 src/main/resources/mapper/SysSettingsMapper.xml create mode 100644 src/main/resources/mapper/app/MatrixCraftMapper.xml create mode 100644 src/main/resources/mapper/app/OperationLogMapper.xml create mode 100644 src/main/resources/mapper/app/SysSettingsMapper.xml diff --git a/matrix-spray.db b/matrix-spray.db index d5c54e7515c0161410e5b17ec436f6723c118a7a..a6c8bcaffa5979ae28bf0b58d012dbe3c64bc372 100644 GIT binary patch delta 1132 zcmZ{iT}V@57{}kUk8^g;_MUemYUna&a$4e?=gT>dP=d(vLX)tIAQ@)Tn?D53O487_)M`kKM?=Pp8A-_4W z{EHT+J~I#J7|I_C5lbD~2&Fh6a~WzsXuq~eU2KC)5Xaq#d@fr^WRvJ}?}n2S#?g_20aaZyLE|s4VKB8*H7kr6$pVw*U2(_pt)Kos7oldI|IqV#5z3^miVk*zr?M;Mv zVXN$Q2fZYLwgKA44sX%*L7NktjmHH^l0;tY>Efj>UK|$$MdlTuFVZVSV?tEo`Npsp z!x+y)ybIt30KLJcWpsO#Kp;TSgc(4JPpQdtaw=`Jlaz~Q+$Uy1KB`EfB1ccI#syiC zBt;e@eR50^d$7N5Z-uMk8~BaZ$DHrR2yYv@0w7BP^qu8V6|JxoYDXk{#C~F5vFq#{ zdkcRq`*0!TBmo`j^w(CmYs-)1y`3kuo!9D}Y%-OYol&#-?98+*gvGEFvYi$Rjf8?B zY=$Ht+5$eNbhz{WXmMkIt6WN`v#C^4;F~=bD_U$}t6V&WZVMKU3k!AD!jJ$6eo%W_ zJ$Sx#xVv`vV#V|}oCCC8+KNcMr>?0!C?zK6a=FxWUJke{s5doXu?`oc0A*3Vt4RxW zDmIb0Ef=ubn$)tzLm#EN`rsOk!<^eC2cFx1b@%lFOL%S}U3R<&sga*9!+Wrw7K)98 Rq9F_t`m=WcbF+*&UP6oZQPF|o82U`XM-z+{4UQ-@-&N&>L*qzxj zHVX>8VV#`8cAKjyhn-zqU7fL2e6j+E)#P^e{>kq+*d~AFke@8dX+8NrkKklAPE9i| z&Bk;#c5!KG#%9%$#H5_m;>x1TymT1F?i}Rm7~-lB;^^e#ssNSa(wH2_VL5p|FKc~T zPJVfOQDRA|0t|Tig}A!A2I+8t1k!R!GgIQr@^eaap(;?Mi%Rq2OEO_nAPp$e$(6}D zsqvY4C8RaIujF5$^DIL(>BP7$dfZ@%I1^@X0 Dq#k<4 diff --git a/sql/init.sql b/sql/init.sql index 3e37c76..465c3a2 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -50,7 +50,7 @@ CREATE TABLE IF NOT EXISTS matrix_craft name TEXT NOT NULL, matrix_id INTEGER NOT NULL, route_type INTEGER, - z_height INTEGER, + height INTEGER, nitrogen_flow_velocity INTEGER, nitrogen_air_pressure INTEGER, matrix_flow_velocity INTEGER, @@ -62,21 +62,11 @@ CREATE TABLE IF NOT EXISTS matrix_craft update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); --- 创建 syringe 注射器表 -CREATE TABLE IF NOT EXISTS syringe -( - id INTEGER PRIMARY KEY AUTOINCREMENT, - flow_rate INTEGER, - fluid_volume INTEGER, - run_time INTEGER, - cycle_intervals INTEGER -); - -- 创建 operation_log 操作记录表 CREATE TABLE IF NOT EXISTS operation_log ( id INTEGER PRIMARY KEY AUTOINCREMENT, - matrix_craft_id INTEGER, + matrix_id INTEGER, matrix_info TEXT, status INTEGER, create_user INTEGER, @@ -93,3 +83,20 @@ CREATE TABLE IF NOT EXISTS sys_settings code TEXT, value TEXT ); + + +-- 插入 sys_settings 表数据 +INSERT INTO sys_settings (id, parent_id, name, code, value) +VALUES (1, NULL, '玻片位置', 'slide_position', NULL), + (2, 1, '玻片1位置', 'slide_position1', '1,2,3'), + (3, 1, '玻片2位置', 'slide_position2', '1,2,3'), + (4, 1, '玻片3位置', 'slide_position3', '1,2,3'), + (5, 1, '玻片4位置', 'slide_position4', '1,2,3'), + (6, NULL, '电机电流', 'current', NULL), + (7, 6, 'x轴电流', 'x_current', 2), + (8, 6, 'y轴电流', 'y_current', 3), + (9, 6, 'z轴电流', 'z_current', 4), + (10, NULL, '电机运行速度', 'speed', NULL), + (11, 10, 'x轴速度', 'x_speed', 10), + (12, 10, 'y轴速度', 'y_speed', 10), + (13, 10, 'z轴速度', 'z_speed', 10); diff --git a/src/main/java/com/qyft/ms/app/common/generator/PathGenerator.java b/src/main/java/com/qyft/ms/app/common/generator/PathGenerator.java index ead0ce0..4d6072a 100644 --- a/src/main/java/com/qyft/ms/app/common/generator/PathGenerator.java +++ b/src/main/java/com/qyft/ms/app/common/generator/PathGenerator.java @@ -49,7 +49,8 @@ public class PathGenerator { ) { // 基本校验 if (left >= right || bottom >= top) { - throw new IllegalArgumentException("无效矩形边界: left>=right 或 bottom>=top"); + + throw new IllegalArgumentException("无效矩形边界: left>=right 或 bottom>=top" + left + ", " + right + " ," + bottom + ", " + top); } if (spacing <= 0) { throw new IllegalArgumentException("spacing必须>0"); diff --git a/src/main/java/com/qyft/ms/app/controller/CMDController.java b/src/main/java/com/qyft/ms/app/controller/CMDController.java index d440e4e..c07f8c9 100644 --- a/src/main/java/com/qyft/ms/app/controller/CMDController.java +++ b/src/main/java/com/qyft/ms/app/controller/CMDController.java @@ -8,6 +8,7 @@ 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.core.annotation.Order; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -24,16 +25,250 @@ public class CMDController { private final CMDService cmdService; - @Operation(summary = "执行指令") - @PostMapping("/execute") - public Result execute(@RequestBody CMDForm cmdForm) { + @Operation(summary = "控制电机") + @PostMapping("/moveMotorToPosition") + public Result moveMotorToPosition(@RequestBody CMDForm cmdForm) { + try { + + if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + String commandId = UUID.randomUUID().toString(); + cmdForm.setCommandId(commandId); + } + if (cmdForm.getCommandName() == null || cmdForm.getCommandName().isEmpty()) { + cmdForm.setCommandName("moveMotorToPosition"); + } + log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); + if (cmdService.moveMotorToPosition(cmdForm)) { + return Result.success(cmdForm.getCommandId()); + } else { + return Result.failed("无效命令"); + } + } catch (Exception e) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); + return Result.failed("执行失败"); + } + } + + @Operation(summary = "三通阀切换") + @PostMapping("/switchThreeWayValve") + public Result switchThreeWayValve(@RequestBody CMDForm cmdForm) { + try { + if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + String commandId = UUID.randomUUID().toString(); + cmdForm.setCommandId(commandId); + } + if (cmdForm.getCommandName() == null || cmdForm.getCommandName().isEmpty()) { + cmdForm.setCommandName("switchThreeWayValve"); + } + log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); + if (cmdService.switchThreeWayValve(cmdForm)) { + return Result.success(cmdForm.getCommandId()); + } else { + return Result.failed("无效命令"); + } + } catch (Exception e) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); + return Result.failed("执行失败"); + } + } + + @Operation(summary = "除湿阀、清洗阀、喷嘴阀控制") + @PostMapping("/controlValve") + public Result controlValve(@RequestBody CMDForm cmdForm) { + try { + if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + String commandId = UUID.randomUUID().toString(); + cmdForm.setCommandId(commandId); + } + if (cmdForm.getCommandName() == null || cmdForm.getCommandName().isEmpty()) { + cmdForm.setCommandName("controlValve"); + } + log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); + if (cmdService.controlValve(cmdForm)) { + return Result.success(cmdForm.getCommandId()); + } else { + return Result.failed("无效命令"); + } + } catch (Exception e) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); + return Result.failed("执行失败"); + } + } + + @Operation(summary = "以指定电压值开启高压电") + @PostMapping("/turnOnHighVoltage") + public Result turnOnHighVoltage(@RequestBody CMDForm cmdForm) { + try { + if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + String commandId = UUID.randomUUID().toString(); + cmdForm.setCommandId(commandId); + } + if (cmdForm.getCommandName() == null || cmdForm.getCommandName().isEmpty()) { + cmdForm.setCommandName("turnOnHighVoltage"); + } + log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); + if (cmdService.turnOnHighVoltage(cmdForm)) { + return Result.success(cmdForm.getCommandId()); + } else { + return Result.failed("无效命令"); + } + } catch (Exception e) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); + return Result.failed("执行失败"); + } + } + + @Operation(summary = "关闭高压电") + @PostMapping("/turnOffHighVoltage") + public Result turnOffHighVoltage(@RequestBody CMDForm cmdForm) { + try { + if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + String commandId = UUID.randomUUID().toString(); + cmdForm.setCommandId(commandId); + } + if (cmdForm.getCommandName() == null || cmdForm.getCommandName().isEmpty()) { + cmdForm.setCommandName("turnOffHighVoltage"); + } + log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); + if (cmdService.turnOffHighVoltage(cmdForm)) { + return Result.success(cmdForm.getCommandId()); + } else { + return Result.failed("无效命令"); + } + } catch (Exception e) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); + return Result.failed("执行失败"); + } + } + + @Operation(summary = "以指定转速、方向和时间开启注射泵") + @PostMapping("/turnOnSyringePump") + public Result turnOnSyringePump(@RequestBody CMDForm cmdForm) { try { - String commandId = UUID.randomUUID().toString(); if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + String commandId = UUID.randomUUID().toString(); cmdForm.setCommandId(commandId); } + if (cmdForm.getCommandName() == null || cmdForm.getCommandName().isEmpty()) { + cmdForm.setCommandName("turnOnSyringePump"); + } + log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); + if (cmdService.turnOnSyringePump(cmdForm)) { + return Result.success(cmdForm.getCommandId()); + } else { + return Result.failed("无效命令"); + } + } catch (Exception e) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); + return Result.failed("执行失败"); + } + } + + @Operation(summary = "停止注射泵") + @PostMapping("/turnOffSyringePump") + public Result turnOffSyringePump(@RequestBody CMDForm cmdForm) { + try { + if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + String commandId = UUID.randomUUID().toString(); + cmdForm.setCommandId(commandId); + } + if (cmdForm.getCommandName() == null || cmdForm.getCommandName().isEmpty()) { + cmdForm.setCommandName("turnOffSyringePump"); + } + log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); + if (cmdService.turnOffSyringePump(cmdForm)) { + return Result.success(cmdForm.getCommandId()); + } else { + return Result.failed("无效命令"); + } + } catch (Exception e) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); + return Result.failed("执行失败"); + } + } + + @Operation(summary = "开始喷涂") + @PostMapping("/startWork") + public Result startWork(@RequestBody CMDForm cmdForm) { + try { + if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + String commandId = UUID.randomUUID().toString(); + cmdForm.setCommandId(commandId); + } + if (cmdForm.getCommandName() == null || cmdForm.getCommandName().isEmpty()) { + cmdForm.setCommandName("startWork"); + } + log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); + if (cmdService.startWork(cmdForm)) { + return Result.success(cmdForm.getCommandId()); + } else { + return Result.failed("无效命令"); + } + } catch (Exception e) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); + return Result.failed("执行失败"); + } + } + + @Operation(summary = "结束喷涂") + @PostMapping("/stopWork") + public Result stopWork(@RequestBody CMDForm cmdForm) { + try { + if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + String commandId = UUID.randomUUID().toString(); + cmdForm.setCommandId(commandId); + } + if (cmdForm.getCommandName() == null || cmdForm.getCommandName().isEmpty()) { + cmdForm.setCommandName("stopWork"); + } + log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); + if (cmdService.stopWork(cmdForm)) { + return Result.success(cmdForm.getCommandId()); + } else { + return Result.failed("无效命令"); + } + } catch (Exception e) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); + return Result.failed("执行失败"); + } + } + + @Operation(summary = "设置指定轴的电机运行时电流") + @PostMapping("/setMotorRunningCurrent") + public Result setMotorRunningCurrent(@RequestBody CMDForm cmdForm) { + try { + if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + String commandId = UUID.randomUUID().toString(); + cmdForm.setCommandId(commandId); + } + if (cmdForm.getCommandName() == null || cmdForm.getCommandName().isEmpty()) { + cmdForm.setCommandName("setMotorRunningCurrent"); + } + log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); + if (cmdService.setMotorRunningCurrent(cmdForm)) { + return Result.success(cmdForm.getCommandId()); + } else { + return Result.failed("无效命令"); + } + } catch (Exception e) { + log.error("指令执行异常: {}", JSONUtil.toJsonStr(cmdForm), e); + return Result.failed("执行失败"); + } + } + + @Operation(summary = "测试: 以指定转速运行指定时间") + @PostMapping("/rotate") + public Result rotate(@RequestBody CMDForm cmdForm) { + try { + if (cmdForm.getCommandId() == null || cmdForm.getCommandId().isEmpty()) { + String commandId = UUID.randomUUID().toString(); + cmdForm.setCommandId(commandId); + } + if (cmdForm.getCommandName() == null || cmdForm.getCommandName().isEmpty()) { + cmdForm.setCommandName("rotate"); + } log.info("接收到指令: {}", JSONUtil.toJsonStr(cmdForm)); - if (cmdService.executeCommand(cmdForm)) { + if (cmdService.rotate(cmdForm)) { return Result.success(cmdForm.getCommandId()); } else { 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 deleted file mode 100644 index 379eeba..0000000 --- a/src/main/java/com/qyft/ms/app/controller/LogsController.java +++ /dev/null @@ -1,55 +0,0 @@ -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/MatrixController.java b/src/main/java/com/qyft/ms/app/controller/MatrixController.java new file mode 100644 index 0000000..794c55e --- /dev/null +++ b/src/main/java/com/qyft/ms/app/controller/MatrixController.java @@ -0,0 +1,56 @@ +package com.qyft.ms.app.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.qyft.ms.app.model.entity.Matrix; +import com.qyft.ms.app.service.MatrixService; +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.tags.Tag; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + + +@Tag(name = "基质") +@RestController +@RequestMapping("/api/matrix") +@RequiredArgsConstructor +@Slf4j +public class MatrixController { + + private final MatrixService matrixService; + + @Operation(summary = "新增基质") + @PostMapping("/add") + public Result add(@RequestBody Matrix matrix) { + return Result.success(matrixService.addMatrix(matrix)); + + } + + @Operation(summary = "基质详情") + @GetMapping("/{id}") + public Result getMatrixById(@PathVariable Integer id) { + return Result.success(matrixService.getById(id)); + } + + @Operation(summary = "基质列表") + @GetMapping("/list") + public PageResult getAll(BasePageQuery pageQuery) { + IPage result = matrixService.page(new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()), null); + return PageResult.success(result); + } + + @Operation(summary = "基质更新") + @PutMapping + public Result update(@RequestBody Matrix matrix) { + return Result.success(matrixService.updateMatrix(matrix)); + } + + @Operation(summary = "基质删除") + @DeleteMapping("/{ids}") + public Result deleteMatrix(@PathVariable String ids) { + return Result.success(matrixService.deleteMatrix(ids)); + } +} \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/app/controller/MatrixCraftController.java b/src/main/java/com/qyft/ms/app/controller/MatrixCraftController.java new file mode 100644 index 0000000..bc0dde1 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/controller/MatrixCraftController.java @@ -0,0 +1,72 @@ +package com.qyft.ms.app.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.qyft.ms.app.model.dto.MatrixCraftDTO; +import com.qyft.ms.app.model.entity.Matrix; +import com.qyft.ms.app.model.entity.MatrixCraft; +import com.qyft.ms.app.service.MatrixCraftService; +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 com.qyft.ms.system.model.entity.User; +import com.qyft.ms.system.service.IUserService; +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.*; + +import java.util.List; + + +@Tag(name = "基质工艺") +@RestController +@RequestMapping("/api/matrixCraft") +@RequiredArgsConstructor +@Slf4j +public class MatrixCraftController { + + private final MatrixCraftService matrixCraftService; + private final IUserService iUserService; + + @Operation(summary = "新增基质工艺") + @PostMapping("/add") + public Result add(@RequestBody MatrixCraftDTO dto) { + User user = iUserService.currentUser(); + if (user != null) { + dto.setCreateUser(user.getId()); + } + return Result.success(matrixCraftService.add(dto)); + } + + @Operation(summary = "基质工艺详情") + @GetMapping("/{id}") + public Result getCraftById(@PathVariable Long id) { + return Result.success(matrixCraftService.getCraftById(id)); + } + + @Operation(summary = "基质工艺列表") + @GetMapping("/getListByMatrixId/{matrixId}") + public Result> getListByMatrixId(@PathVariable Long matrixId) { + return Result.success(matrixCraftService.getListByMatrixId(matrixId)); + } + + @Operation(summary = "所有工艺列表") + @GetMapping("/list") + public PageResult getAll(BasePageQuery pageQuery) { + IPage result = matrixCraftService.page(new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()), null); + return PageResult.success(result); + } + + @Operation(summary = "基质工艺更新") + @PutMapping + public Result update(@RequestBody MatrixCraft matrixCraft) { + return Result.success(matrixCraftService.updateMatrixCraft(matrixCraft)); + } + + @Operation(summary = "基质删除") + @DeleteMapping("/{ids}") + public Result deleteMatrixCraft(@PathVariable String ids) { + return Result.success(matrixCraftService.deleteMatrixCraft(ids)); + } +} \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/app/controller/OperationLogController.java b/src/main/java/com/qyft/ms/app/controller/OperationLogController.java new file mode 100644 index 0000000..2dd5c5a --- /dev/null +++ b/src/main/java/com/qyft/ms/app/controller/OperationLogController.java @@ -0,0 +1,66 @@ +package com.qyft.ms.app.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.qyft.ms.app.model.entity.Matrix; +import com.qyft.ms.app.model.entity.OperationLog; +import com.qyft.ms.app.service.OperationLogService; +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 com.qyft.ms.system.model.entity.User; +import com.qyft.ms.system.service.IUserService; +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.*; + + +@Tag(name = "操作记录") +@RestController +@RequestMapping("/api/log") +@RequiredArgsConstructor +@Slf4j +public class OperationLogController { + private final OperationLogService op; + private final IUserService userService; + @Operation(summary = "新增日志") + @PostMapping("/add") + public Result add(@RequestBody OperationLog operationLog) { + User user = userService.currentUser(); + if (user != null) { + operationLog.setCreateUser(user.getId()); + } + return Result.success(op.add(operationLog)); + } + + @Operation(summary = "日志详情") + @GetMapping("/{id}") + public Result getLogById(@PathVariable Integer id) { + return Result.success(op.getLogById(id)); + } + + @Operation(summary = "日志列表") + @GetMapping("/list") + public PageResult getAll(BasePageQuery pageQuery) { + return PageResult.success(op.getAll(pageQuery)); + } + + @Operation(summary = "获取进行中的喷涂任务") + @GetMapping("/getIng") + public Result getIng() { + return Result.success(op.getIng()); + } + + @Operation(summary = "日志更新") + @PutMapping + public Result update(@RequestBody OperationLog operationLog) { + return Result.success(op.updateById(operationLog)); + } + + @Operation(summary = "日志删除") + @DeleteMapping("/{ids}") + public Result deleteLog(@PathVariable String ids) { + return Result.success(op.deleteLog(ids)); + } +} \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/app/controller/SysSettingsController.java b/src/main/java/com/qyft/ms/app/controller/SysSettingsController.java index c3e1830..9acca49 100644 --- a/src/main/java/com/qyft/ms/app/controller/SysSettingsController.java +++ b/src/main/java/com/qyft/ms/app/controller/SysSettingsController.java @@ -19,38 +19,4 @@ import java.util.List; @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 deleted file mode 100644 index 2f2aef1..0000000 --- a/src/main/java/com/qyft/ms/app/mapper/LogsMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -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/MatrixCraftMapper.java b/src/main/java/com/qyft/ms/app/mapper/MatrixCraftMapper.java new file mode 100644 index 0000000..d971140 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/mapper/MatrixCraftMapper.java @@ -0,0 +1,18 @@ +package com.qyft.ms.app.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qyft.ms.app.model.dto.MatrixCraftDTO; +import com.qyft.ms.app.model.entity.MatrixCraft; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 基质持久层接口 + */ +@Mapper +public interface MatrixCraftMapper extends BaseMapper { + List getListByMatrixId(Long matrixId); + + Integer add(MatrixCraftDTO dto); +} diff --git a/src/main/java/com/qyft/ms/app/mapper/MatrixMapper.java b/src/main/java/com/qyft/ms/app/mapper/MatrixMapper.java new file mode 100644 index 0000000..f7b4f35 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/mapper/MatrixMapper.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.Matrix; +import org.apache.ibatis.annotations.Mapper; + +/** + * 基质持久层接口 + */ +@Mapper +public interface MatrixMapper extends BaseMapper { +} diff --git a/src/main/java/com/qyft/ms/app/mapper/OperationLogMapper.java b/src/main/java/com/qyft/ms/app/mapper/OperationLogMapper.java new file mode 100644 index 0000000..ce47b90 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/mapper/OperationLogMapper.java @@ -0,0 +1,13 @@ +package com.qyft.ms.app.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qyft.ms.app.model.entity.OperationLog; +import org.apache.ibatis.annotations.Mapper; + +/** + * 基质持久层接口 + */ +@Mapper +public interface OperationLogMapper 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 index a51cf26..f18b241 100644 --- a/src/main/java/com/qyft/ms/app/mapper/SysSettingsMapper.java +++ b/src/main/java/com/qyft/ms/app/mapper/SysSettingsMapper.java @@ -20,10 +20,5 @@ import java.util.List; @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/dto/MatrixCraftDTO.java b/src/main/java/com/qyft/ms/app/model/dto/MatrixCraftDTO.java new file mode 100644 index 0000000..8e499a5 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/dto/MatrixCraftDTO.java @@ -0,0 +1,42 @@ +package com.qyft.ms.app.model.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +@Data +public class MatrixCraftDTO { + + @Schema(description = "名称") + private String name; + + @Schema(description = "基质id") + private Long matrixId; + + @Schema(description = "路径类型 0 竖向 1 横向") + private Integer routeType; + + @Schema(description = "喷涂高度") + private Integer height; + + @Schema(description = "氮气流速") + private Integer nitrogenFlowVelocity; + + @Schema(description = "氮气气压") + private Integer nitrogenAirPressure; + + @Schema(description = "基质流速") + private Integer matrixFlowVelocity; + + @Schema(description = "电压") + private Integer voltage; + + @Schema(description = "移速") + private Integer movementSpeed; + + @Schema(description = "行间距") + private Integer space; + + @Schema(description = "创建人") + private Long createUser; +} 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 deleted file mode 100644 index db601cc..0000000 --- a/src/main/java/com/qyft/ms/app/model/entity/Logs.java +++ /dev/null @@ -1,30 +0,0 @@ -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/Matrix.java b/src/main/java/com/qyft/ms/app/model/entity/Matrix.java new file mode 100644 index 0000000..9840056 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/entity/Matrix.java @@ -0,0 +1,19 @@ +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 = false) +@Schema(description = "基质类型") +@TableName("matrix") +@Data +public class Matrix extends BaseEntity { + + @NotBlank + @Schema(description = "名称") + private String name; +} diff --git a/src/main/java/com/qyft/ms/app/model/entity/MatrixCraft.java b/src/main/java/com/qyft/ms/app/model/entity/MatrixCraft.java new file mode 100644 index 0000000..986603c --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/entity/MatrixCraft.java @@ -0,0 +1,58 @@ +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 = false) +@Schema(description = "基质工艺") +@TableName("matrix_craft") +@Data +public class MatrixCraft extends BaseEntity { + + @NotBlank + @Schema(description = "名称") + private String name; + + @NotBlank + @Schema(description = "基质id") + private Long matrixId; + + @NotBlank + @Schema(description = "路径类型 0 竖向 1 横向") + private Integer routeType; + + @NotBlank + @Schema(description = "喷涂高度") + private Integer height; + + @NotBlank + @Schema(description = "氮气流速") + private Integer nitrogenFlowVelocity; + @NotBlank + @Schema(description = "氮气气压") + private Integer nitrogenAirPressure; + + @NotBlank + @Schema(description = "基质流速") + private Integer matrixFlowVelocity; + + @NotBlank + @Schema(description = "电压") + private Integer voltage; + + @NotBlank + @Schema(description = "移速") + private Integer movementSpeed; + + @NotBlank + @Schema(description = "行间距") + private Integer space; + + @NotBlank + @Schema(description = "创建人") + private Long createUser; +} diff --git a/src/main/java/com/qyft/ms/app/model/entity/OperationLog.java b/src/main/java/com/qyft/ms/app/model/entity/OperationLog.java new file mode 100644 index 0000000..61469a4 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/entity/OperationLog.java @@ -0,0 +1,30 @@ +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 = false) +@Schema(description = "操作记录") +@TableName("operation_log") +@Data +public class OperationLog extends BaseEntity { + + @Schema(description = "所选基质") + private Long matrixId; + + @NotBlank + @Schema(description = "工艺参数") + private String matrixInfo; + + @NotBlank + @Schema(description = "完成状态 0 进行中 1 已完成") + private Integer status; + + @NotBlank + @Schema(description = "创建人") + private Long createUser; +} 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 index 847e363..ca3ff36 100644 --- a/src/main/java/com/qyft/ms/app/model/entity/SysSettings.java +++ b/src/main/java/com/qyft/ms/app/model/entity/SysSettings.java @@ -32,12 +32,6 @@ public class SysSettings { private String code; @Schema(description = "配置值") - private String value1; - - @Schema(description = "配置值") - private String value2; - - @Schema(description = "配置值") - private String value3; + private String value; } 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 index b4c77ea..7a33f78 100644 --- a/src/main/java/com/qyft/ms/app/model/form/CMDForm.java +++ b/src/main/java/com/qyft/ms/app/model/form/CMDForm.java @@ -5,6 +5,7 @@ import jakarta.validation.constraints.NotBlank; import lombok.Data; import java.util.List; +import java.util.Map; @Schema(description = "指令") @Data @@ -14,10 +15,10 @@ public class CMDForm { private String commandId; @NotBlank() - @Schema(description = "指令类型", example = "upTray") - private String command; + @Schema(description = "指令类型", example = "moveMotorToPosition") + private String commandName; @Schema(description = "参数") - private List params; + private Map params; } 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 index a32d7c7..c45236a 100644 --- a/src/main/java/com/qyft/ms/app/model/vo/SysSettingVO.java +++ b/src/main/java/com/qyft/ms/app/model/vo/SysSettingVO.java @@ -11,10 +11,10 @@ import java.util.List; public class SysSettingVO { @Schema(description = "主键id") - private int id; + private Long id; @Schema(description = "父id") - private int parentId; + private Long parentId; @Schema(description = "名称") private String name; @@ -25,19 +25,4 @@ public class SysSettingVO { @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/service/CMDService.java b/src/main/java/com/qyft/ms/app/service/CMDService.java index 9488485..fa5cd05 100644 --- a/src/main/java/com/qyft/ms/app/service/CMDService.java +++ b/src/main/java/com/qyft/ms/app/service/CMDService.java @@ -1,31 +1,274 @@ package com.qyft.ms.app.service; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; import com.qyft.ms.app.common.constant.WebSocketMessageType; +import com.qyft.ms.app.common.generator.PathGenerator; import com.qyft.ms.app.common.result.CMDResultCode; -import com.qyft.ms.device.model.bo.DeviceCtrlFuncCMD; +import com.qyft.ms.app.model.entity.OperationLog; import com.qyft.ms.app.model.form.CMDForm; import com.qyft.ms.app.model.vo.ExecutionResult; +import com.qyft.ms.device.service.DeviceTcpCMDService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.ArrayList; +import java.awt.*; +import java.util.*; import java.util.List; +import java.util.function.Function; import java.util.function.Supplier; +import static com.qyft.ms.app.common.generator.PathGenerator.generatePathPoints; + @Slf4j @RequiredArgsConstructor @Service public class CMDService { private final WebSocketService webSocketService; - CMDForm form; + private final DeviceTcpCMDService deviceTcpCMDService; + private final OperationLogService operationLogService; + private final MatrixCraftService matrixCraftService; + + + private void initExecutorThread(List> cmdList, CMDForm form) { + new Thread(() -> run(cmdList, form)).start(); + } + +// 电机移动 + public boolean moveMotorToPosition(CMDForm form) { + Map params = form.getParams(); + List> cmdList = new ArrayList<>(); + String axis = (String) params.get("axis"); + double position = Optional.ofNullable(params.get("position")) + .filter(Number.class::isInstance) + .map(Number.class::cast) + .map(Number::doubleValue) + .orElse(0.0); + cmdList.add(() -> deviceTcpCMDService.moveMotorToPosition(axis, position)); + initExecutorThread(cmdList, form); + return true; + }; + + // 切换清洗管路/喷涂管路 + public boolean switchThreeWayValve(CMDForm form) { + Map params = form.getParams(); + List> cmdList = new ArrayList<>(); + String type = (String) params.get("type"); + if (type.equals("clean")) { + cmdList.add(deviceTcpCMDService::switchThreeWayValveToSubstrate); + } else if (type.equals("spray")) { + cmdList.add(deviceTcpCMDService::switchThreeWayValveToSpray); + } + initExecutorThread(cmdList, form); + return true; + } + + // 除湿阀、清洗阀、喷嘴阀控制方法 + public boolean controlValve(CMDForm form) { + Map params = form.getParams(); + List> cmdList = new ArrayList<>(); + if(params.get("valveType") !=null && params.get("isOpen") !=null) { + String valveType = (String) params.get("valveType"); + boolean isOpen = (boolean) params.get("isOpen"); + cmdList.add(() -> deviceTcpCMDService.controlValve(valveType,isOpen)); + } + initExecutorThread(cmdList, form); + return true; + } + + // 以指定电压值开启高压电 + public boolean turnOnHighVoltage(CMDForm form) { + Map params = form.getParams(); + List> cmdList = new ArrayList<>(); + double voltage = Optional.ofNullable(params.get("voltage")) + .filter(Number.class::isInstance) + .map(Number.class::cast) + .map(Number::doubleValue) + .orElse(0.0); + cmdList.add(() -> deviceTcpCMDService.turnOnHighVoltage(voltage)); + initExecutorThread(cmdList, form); + return true; + } + + // 关闭高压电 + public boolean turnOffHighVoltage(CMDForm form) { + Map params = form.getParams(); + List> cmdList = new ArrayList<>(); + cmdList.add(deviceTcpCMDService::turnOffHighVoltage); + initExecutorThread(cmdList, form); + return true; + } + + // 以指定转速、方向和时间开启注射泵 + public boolean turnOnSyringePump(CMDForm form) { + Map params = form.getParams(); + List> cmdList = new ArrayList<>(); + double rotationSpeed = Optional.ofNullable(params.get("rotationSpeed")) + .filter(Number.class::isInstance) + .map(Number.class::cast) + .map(Number::doubleValue) + .orElse(0.0); + double time = Optional.ofNullable(params.get("time")) + .filter(Number.class::isInstance) + .map(Number.class::cast) + .map(Number::doubleValue) + .orElse(0.0); + String direction = (String) params.get("direction"); + cmdList.add(() -> deviceTcpCMDService.turnOnSyringePump(rotationSpeed, direction, time)); + initExecutorThread(cmdList, form); + return true; + } + + // 停止注射泵 + public boolean turnOffSyringePump(CMDForm form) { + Map params = form.getParams(); + List> cmdList = new ArrayList<>(); + cmdList.add(deviceTcpCMDService::turnOffSyringePump); + initExecutorThread(cmdList, form); + return true; + } - private void run(List> cmdList) { + // 设置指定轴的电机运行时电流 + public boolean setMotorRunningCurrent(CMDForm form) { + Map params = form.getParams(); + List> cmdList = new ArrayList<>(); + String axis = (String) params.get("axis"); + double current = Optional.ofNullable(params.get("current")) + .filter(Number.class::isInstance) + .map(Number.class::cast) + .map(Number::doubleValue) + .orElse(0.0); + cmdList.add(() -> deviceTcpCMDService.setMotorRunningCurrent(axis, current)); + initExecutorThread(cmdList, form); + return true; + } + + // 开始喷涂 + public boolean startWork(CMDForm form) { + Map params = form.getParams(); + List> cmdList = new ArrayList<>(); + // 托盘位置 + Map trayPosition = new HashMap<>(); + trayPosition.put("x", 0); + trayPosition.put("y", 0); + trayPosition.put("z", 0); + int space = (Integer) params.get("space"); + List> position = (List>) params.get("position"); + Map p1 = position.get(0); + Map p2 = position.get(1); + // 托盘点位 x y z + int left = trayPosition.get("x")+ p1.get("x"); + int right = trayPosition.get("x") + p2.get("x"); + int top = trayPosition.get("y") + p2.get("y"); + int bottom = trayPosition.get("y") + p1.get("y"); + // 获取轨迹list + int direction = (Integer) params.get("direction"); + List horizontalPath = generatePathPoints( + left, right, bottom, top, space, direction == 1 ? PathGenerator.MoveMode.HORIZONTAL_ZIGZAG_TOP_DOWN : PathGenerator.MoveMode.VERTICAL_ZIGZAG_LEFT_RIGHT + ); + + // 将三通阀转至喷涂管路 + cmdList.add(deviceTcpCMDService::switchThreeWayValveToSpray); + // 设置指定轴的电机的运行速度 + int setMotorSpeed = (Integer) params.get("setMotorSpeed"); + cmdList.add(() -> deviceTcpCMDService.setMotorSpeed("x", setMotorSpeed)); + cmdList.add(() -> deviceTcpCMDService.setMotorSpeed("y", setMotorSpeed)); + cmdList.add(() -> deviceTcpCMDService.setMotorSpeed("z", setMotorSpeed)); + // 移动到指定高度(位置) + int height = (Integer) params.get("height"); + cmdList.add(() -> deviceTcpCMDService.moveMotorToPosition("z",trayPosition.get("z") + height )); + cmdList.add(() -> deviceTcpCMDService.moveMotorToPosition("x", left)); + cmdList.add(() -> deviceTcpCMDService.moveMotorToPosition("y", top)); + + // 是否加电 电压 + Object voltage = params.get("voltage"); + if (voltage instanceof Integer) { + cmdList.add(() -> deviceTcpCMDService.turnOnHighVoltage( (Integer) voltage)); + } + // 开启喷嘴阀 + cmdList.add(() -> deviceTcpCMDService.controlValve("Nozzle", true)); + // 推注射泵 + cmdList.add(() -> deviceTcpCMDService.turnOnSyringePump(100, "right", 5000)); + + // 插入日志 + cmdList.add( () -> { + OperationLog operationLog = new OperationLog(); + operationLog.setStatus(0); + operationLog.setMatrixId((Long) params.get("matrixCraftId")); + operationLog.setMatrixInfo(JSON.toJSONString(params)); + operationLogService.add(operationLog); + return true; + }); + // 执行轨迹 + double curX = left; + double curY = top; + for (Point point : horizontalPath) { + double nextX = (int) point.getX(); + double nextY = (int) point.getY(); + double distanceX = nextX - curX; + double distanceY = nextY - curY; + cmdList.add(() -> deviceTcpCMDService.moveMotorToPosition("x", distanceX)); + cmdList.add(() -> deviceTcpCMDService.moveMotorToPosition("y", distanceY)); + curX = nextX; + curY = nextY; + } + // 停止喷涂 + cmdList.add(deviceTcpCMDService::turnOffSyringePump); + // 关闭喷嘴阀 + cmdList.add(() -> deviceTcpCMDService.controlValve("Nozzle", true)); + // 回到原点 + cmdList.add(() -> deviceTcpCMDService.motorMoveToHome("X")); + cmdList.add(() -> deviceTcpCMDService.motorMoveToHome("Y")); + cmdList.add(() -> deviceTcpCMDService.motorMoveToHome("Z")); + // 结束日志 + cmdList.add( () -> { + OperationLog operationLog = operationLogService.getIng(); + operationLog.setStatus(1); + operationLogService.updateById(operationLog); + return true; + }); + initExecutorThread(cmdList, form); + return true; + } + + // 结束喷涂 + public boolean stopWork(CMDForm form) { + Map params = form.getParams(); + List> cmdList = new ArrayList<>(); + // 停止喷涂 + cmdList.add(deviceTcpCMDService::turnOffSyringePump); + // 关闭喷嘴阀 + cmdList.add(() -> deviceTcpCMDService.controlValve("Nozzle", true)); + // 回到原点 + cmdList.add(() -> deviceTcpCMDService.motorMoveToHome("X")); + cmdList.add(() -> deviceTcpCMDService.motorMoveToHome("Z")); + initExecutorThread(cmdList, form); + return true; + } + + // 测试轴转动 + public boolean rotate(CMDForm form) { + Map params = form.getParams(); + List> cmdList = new ArrayList<>(); + String axis = (String) params.get("axis"); + double rotationSpeed = Optional.ofNullable(params.get("rotationSpeed")) + .filter(Number.class::isInstance) + .map(Number.class::cast) + .map(Number::doubleValue) + .orElse(0.0); + int time = (Integer) params.get("time"); + cmdList.add(() -> deviceTcpCMDService.rotate(axis, rotationSpeed, time)); + initExecutorThread(cmdList, form); + return true; + } + + + private void run(List> cmdList, CMDForm form) { ExecutionResult executionResult = new ExecutionResult(); executionResult.setCommandId(form.getCommandId()); - executionResult.setCommandName(form.getCommand()); + executionResult.setCommandName(form.getCommandName()); // 执行所有命令 for (Supplier command : cmdList) { @@ -38,17 +281,9 @@ public class CMDService { return; } } + log.info("指令执行成功: {}", JSONUtil.toJsonStr(form)); executionResult.setStatus(CMDResultCode.SUCCESS.getCode()); executionResult.setMessage(CMDResultCode.SUCCESS.getMsg()); webSocketService.pushMsg(WebSocketMessageType.CMD, executionResult); } - - public boolean executeCommand(CMDForm cmdForm) { - List> cmdList = new ArrayList<>(); - new Thread(() -> run(cmdList)).start(); - 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 deleted file mode 100644 index 391691f..0000000 --- a/src/main/java/com/qyft/ms/app/service/ILogsService.java +++ /dev/null @@ -1,11 +0,0 @@ -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 index 6683690..d69a9c3 100644 --- a/src/main/java/com/qyft/ms/app/service/ISysSettingsService.java +++ b/src/main/java/com/qyft/ms/app/service/ISysSettingsService.java @@ -14,11 +14,4 @@ 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/MatrixCraftService.java b/src/main/java/com/qyft/ms/app/service/MatrixCraftService.java new file mode 100644 index 0000000..da8d032 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/MatrixCraftService.java @@ -0,0 +1,25 @@ +package com.qyft.ms.app.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qyft.ms.app.model.dto.MatrixCraftDTO; +import com.qyft.ms.app.model.entity.MatrixCraft; + +import java.util.List; + + +/** + * 日志业务接口 + */ +public interface MatrixCraftService extends IService { + + Integer add(MatrixCraftDTO dto); + + MatrixCraft getCraftById(Long id); + + List getListByMatrixId(Long matrixId); + + + Boolean updateMatrixCraft(MatrixCraft matrixCraft); + + Boolean deleteMatrixCraft(String ids); +} diff --git a/src/main/java/com/qyft/ms/app/service/MatrixService.java b/src/main/java/com/qyft/ms/app/service/MatrixService.java new file mode 100644 index 0000000..6db4cb2 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/MatrixService.java @@ -0,0 +1,14 @@ +package com.qyft.ms.app.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qyft.ms.app.model.entity.Matrix; + + +/** + * 日志业务接口 + */ +public interface MatrixService extends IService { + int addMatrix(Matrix matrix); + boolean updateMatrix(Matrix matrix); + boolean deleteMatrix(String ids); +} diff --git a/src/main/java/com/qyft/ms/app/service/OperationLogService.java b/src/main/java/com/qyft/ms/app/service/OperationLogService.java new file mode 100644 index 0000000..17f1579 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/OperationLogService.java @@ -0,0 +1,22 @@ +package com.qyft.ms.app.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.qyft.ms.app.model.entity.OperationLog; +import com.qyft.ms.system.common.base.BasePageQuery; + + +/** + * 日志业务接口 + */ +public interface OperationLogService extends IService { + Integer add(OperationLog operationLog); + + OperationLog getLogById(Integer id); + + Boolean deleteLog(String ids); + + IPage getAll(BasePageQuery pageQuery); + + OperationLog getIng(); +} diff --git a/src/main/java/com/qyft/ms/app/service/StatusService.java b/src/main/java/com/qyft/ms/app/service/StatusService.java index fb36e11..3901f35 100644 --- a/src/main/java/com/qyft/ms/app/service/StatusService.java +++ b/src/main/java/com/qyft/ms/app/service/StatusService.java @@ -3,6 +3,7 @@ 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 jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -19,7 +20,7 @@ public class StatusService { private final WebSocketService webSocketService; private final DeviceStatusService deviceStatusService; -// @PostConstruct + @PostConstruct public void init() { ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); executorService.scheduleAtFixedRate(() -> { 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 deleted file mode 100644 index f4de979..0000000 --- a/src/main/java/com/qyft/ms/app/service/impl/ILogsServiceImpl.java +++ /dev/null @@ -1,29 +0,0 @@ -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 index a917814..7810189 100644 --- a/src/main/java/com/qyft/ms/app/service/impl/ISysSettingsServiceImpl.java +++ b/src/main/java/com/qyft/ms/app/service/impl/ISysSettingsServiceImpl.java @@ -19,57 +19,6 @@ 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/app/service/impl/MatrixCraftServiceImpl.java b/src/main/java/com/qyft/ms/app/service/impl/MatrixCraftServiceImpl.java new file mode 100644 index 0000000..f65ba2f --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/impl/MatrixCraftServiceImpl.java @@ -0,0 +1,49 @@ +package com.qyft.ms.app.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qyft.ms.app.mapper.MatrixCraftMapper; +import com.qyft.ms.app.model.dto.MatrixCraftDTO; +import com.qyft.ms.app.model.entity.MatrixCraft; +import com.qyft.ms.app.service.MatrixCraftService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 基质业务实现类 + */ +@Service +@RequiredArgsConstructor +public class MatrixCraftServiceImpl extends ServiceImpl implements MatrixCraftService { + private final MatrixCraftMapper matrixCraftMapper; + @Override + public Integer add(MatrixCraftDTO dto) { + return matrixCraftMapper.add(dto); + } + + @Override + public MatrixCraft getCraftById(Long id) { + return matrixCraftMapper.selectById(id); + } + + @Override + public List getListByMatrixId(Long matrixId) { + return matrixCraftMapper.getListByMatrixId(matrixId); + } + + @Override + public Boolean updateMatrixCraft(MatrixCraft matrixCraft) { + return matrixCraftMapper.updateById(matrixCraft) > 0; + } + + @Override + public Boolean deleteMatrixCraft(String ids) { + List idsArr = Arrays.stream(ids.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + return this.removeByIds(idsArr); + } +} diff --git a/src/main/java/com/qyft/ms/app/service/impl/MatrixServiceImpl.java b/src/main/java/com/qyft/ms/app/service/impl/MatrixServiceImpl.java new file mode 100644 index 0000000..daa1d15 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/impl/MatrixServiceImpl.java @@ -0,0 +1,40 @@ +package com.qyft.ms.app.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qyft.ms.app.mapper.MatrixMapper; +import com.qyft.ms.app.model.entity.Matrix; +import com.qyft.ms.app.service.MatrixService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 基质业务实现类 + */ +@Service +@RequiredArgsConstructor +public class MatrixServiceImpl extends ServiceImpl implements MatrixService { + + private final MatrixMapper matrixMapper; + @Override + public int addMatrix(Matrix matrix) { + return matrixMapper.insert(matrix); + } + + @Override + public boolean updateMatrix(Matrix matrix) { + return matrixMapper.updateById(matrix) > 0; + + } + + @Override + public boolean deleteMatrix(String ids) { + List idsArr = Arrays.stream(ids.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + return this.removeByIds(idsArr); + } +} diff --git a/src/main/java/com/qyft/ms/app/service/impl/OperationLogServiceImpl.java b/src/main/java/com/qyft/ms/app/service/impl/OperationLogServiceImpl.java new file mode 100644 index 0000000..adef9a9 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/service/impl/OperationLogServiceImpl.java @@ -0,0 +1,59 @@ +package com.qyft.ms.app.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qyft.ms.app.mapper.OperationLogMapper; +import com.qyft.ms.app.model.entity.OperationLog; +import com.qyft.ms.app.service.OperationLogService; +import com.qyft.ms.system.common.base.BasePageQuery; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 基质业务实现类 + */ +@Service +@RequiredArgsConstructor +public class OperationLogServiceImpl extends ServiceImpl implements OperationLogService { +private final OperationLogMapper operationLogMapper; + @Override + public Integer add(OperationLog operationLog) { + return operationLogMapper.insert(operationLog); + } + + @Override + public OperationLog getLogById(Integer id) { + return operationLogMapper.selectById(id); + } + + @Override + public Boolean deleteLog(String ids) { + List idsArr = Arrays.stream(ids.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + return this.removeByIds(idsArr); + } + + @Override + public IPage getAll(BasePageQuery pageQuery) { + // 构建分页对象 + Page page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("status", 1); + return operationLogMapper.selectPage(page, queryWrapper); + } + + @Override + public OperationLog getIng() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("status", 0); + return operationLogMapper.selectOne(queryWrapper); + } +} diff --git a/src/main/java/com/qyft/ms/device/common/constant/DeviceCommands.java b/src/main/java/com/qyft/ms/device/common/constant/DeviceCommands.java index c1fcc6c..d14dbf3 100644 --- a/src/main/java/com/qyft/ms/device/common/constant/DeviceCommands.java +++ b/src/main/java/com/qyft/ms/device/common/constant/DeviceCommands.java @@ -34,5 +34,6 @@ public class DeviceCommands { public static final String SET_SYRINGE_PUMP_PARAMETERS = "setSyringePumpParameters"; // 推送指定容量的液体 public static final String PUSH_VOLUME = "pushVolume"; + public static final String ROTATE = "rotate"; } \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/device/model/bo/DeviceStatus.java b/src/main/java/com/qyft/ms/device/model/bo/DeviceStatus.java index e5fb863..4cca867 100644 --- a/src/main/java/com/qyft/ms/device/model/bo/DeviceStatus.java +++ b/src/main/java/com/qyft/ms/device/model/bo/DeviceStatus.java @@ -9,5 +9,42 @@ import lombok.Data; @Schema(description = "设备当前传感器状态") @Data public class DeviceStatus { + // 急停信号 + private boolean emergencyStop; + // 暂停信号 + private boolean pause; + // X 轴电机状态 + private double xAxisPosition; + private double xAxisSpeed; + private boolean xAxisMovementEnded; + private boolean xAxisAtOrigin; + private boolean xAxisLimited; + + // Y 轴电机状态 + private double yAxisPosition; + private double yAxisSpeed; + private boolean yAxisMovementEnded; + private boolean yAxisAtOrigin; + private boolean yAxisLimited; + + // Z 轴电机状态 + private double zAxisPosition; + private double zAxisSpeed; + private boolean zAxisMovementEnded; + private boolean zAxisAtOrigin; + private boolean zAxisLimited; + + // 三通阀状态 + private String threeWayValvePosition; + + // 流量计状态 + private double flowRate; + + // 温湿度传感器状态 + private double temperature; + private double humidity; + + // 注射泵状态 + private boolean syringePumpNormal; } diff --git a/src/main/java/com/qyft/ms/device/service/DeviceTcpCMDService.java b/src/main/java/com/qyft/ms/device/service/DeviceTcpCMDService.java index eebe90d..1f857b3 100644 --- a/src/main/java/com/qyft/ms/device/service/DeviceTcpCMDService.java +++ b/src/main/java/com/qyft/ms/device/service/DeviceTcpCMDService.java @@ -142,7 +142,7 @@ public class DeviceTcpCMDService { // 三通阀控制方法 /** - * 切换三通阀到基质状态 + * 切换三通阀到清洗状态 * @return 操作是否成功 */ public boolean switchThreeWayValveToSubstrate() { @@ -160,14 +160,15 @@ public class DeviceTcpCMDService { // 除湿阀、清洗阀、喷嘴阀控制方法 /** * 控制指定阀的开启或关闭 - * @param valveType 阀类型,可选值为 "Dehumidification", "Cleaning", "Nozzle" - * @param isOpen 是否开启,true 为开启,false 为关闭 + * valveType 阀类型,可选值为 "Dehumidification", "Cleaning", "Nozzle" + * isOpen 是否开启,true 为开启,false 为关闭 * @return 操作是否成功 */ public boolean controlValve(String valveType, boolean isOpen) { Map params = new HashMap<>(); params.put("valveType", valveType); params.put("isOpen", isOpen); + return this.putTask(DeviceCommands.CONTROL_VALVE, params); } @@ -258,4 +259,12 @@ public class DeviceTcpCMDService { params.put("volume", volume); return this.putTask(DeviceCommands.PUSH_VOLUME, params); } + + public boolean rotate(String axis, double rotationSpeed, int time) { + Map params = new HashMap<>(); + params.put("axis", axis); + params.put("rotationSpeed", rotationSpeed); + params.put("time", time); + return this.putTask(DeviceCommands.ROTATE, params); + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 3d19d90..bbdac81 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -35,7 +35,7 @@ jwt: #与设备TCP链接 tcp: enable: false # 是否开启 TCP 连接 - host: 127.0.0.1 + host: 192.168.1.130 port: 9080 reconnect: 5000 # 断线重连间隔(单位:毫秒) timeout: 10000 # 连接超时时间(单位:毫秒) diff --git a/src/main/resources/mapper/SysSettingsMapper.xml b/src/main/resources/mapper/SysSettingsMapper.xml deleted file mode 100644 index 8101127..0000000 --- a/src/main/resources/mapper/SysSettingsMapper.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - UPDATE sys_settings - SET - value1 = CASE WHEN #{value} IS NOT NULL THEN #{value} ELSE value1 END, - value3 = CASE WHEN #{temperature} IS NOT NULL THEN #{temperature} ELSE value3 END, - value4 = CASE WHEN #{craftId} IS NOT NULL THEN #{craftId} ELSE value4 END - WHERE id = #{id} - - - - - \ No newline at end of file diff --git a/src/main/resources/mapper/app/MatrixCraftMapper.xml b/src/main/resources/mapper/app/MatrixCraftMapper.xml new file mode 100644 index 0000000..e3b8388 --- /dev/null +++ b/src/main/resources/mapper/app/MatrixCraftMapper.xml @@ -0,0 +1,14 @@ + + + + + + insert into matrix_craft(name,matrix_id,route_type,height,nitrogen_flow_velocity,nitrogen_air_pressure,matrix_flow_velocity,voltage,movement_speed,space,create_user) + values(#{name},#{matrixId},#{routeType},#{height},#{nitrogenFlowVelocity},#{nitrogenAirPressure},#{matrixFlowVelocity},#{voltage},#{movementSpeed},#{space},#{createUser}) + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/app/OperationLogMapper.xml b/src/main/resources/mapper/app/OperationLogMapper.xml new file mode 100644 index 0000000..90ed0a4 --- /dev/null +++ b/src/main/resources/mapper/app/OperationLogMapper.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/app/SysSettingsMapper.xml b/src/main/resources/mapper/app/SysSettingsMapper.xml new file mode 100644 index 0000000..ef46e96 --- /dev/null +++ b/src/main/resources/mapper/app/SysSettingsMapper.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file