From c09bb5cb50cda5bfa94a445a5cf037c3a6aa68d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=A2=A6=E8=BF=9C?= <1063331231@qq.com> Date: Wed, 28 May 2025 10:27:48 +0800 Subject: [PATCH] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sgs/app/cmd/control/MoveToFeedAreaCommand.java | 8 +- .../app/service/api/DeviceParamConfigService.java | 119 +++++++++++++++++++++ .../com/iflytop/sgs/common/result/ResultCode.java | 2 +- .../hardware/controller/StepMotorController.java | 2 +- 4 files changed, 128 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/iflytop/sgs/app/service/api/DeviceParamConfigService.java diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToFeedAreaCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToFeedAreaCommand.java index 4cb8f62..78c2ebf 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToFeedAreaCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/MoveToFeedAreaCommand.java @@ -1,5 +1,6 @@ package com.iflytop.sgs.app.cmd.control; +import cn.hutool.core.lang.Assert; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.bo.Point3D; import com.iflytop.sgs.app.model.dto.CmdDTO; @@ -10,6 +11,8 @@ import com.iflytop.sgs.app.service.device.module.TransferModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; import com.iflytop.sgs.common.enums.HeatModuleCode; import com.iflytop.sgs.common.enums.data.DevicePositionCode; +import com.iflytop.sgs.common.exception.AppException; +import com.iflytop.sgs.common.result.ResultCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -38,7 +41,10 @@ public class MoveToFeedAreaCommand extends BaseCommandHandler { targetHeatModuleCode = HeatModuleCode.valueOf(targetHeatModuleCodeStr); } else { targetHeatModuleCode = null; - //TODO 尝试获取加液位是否有托盘,如果没有托盘则提示错误 + Assert.isTrue(deviceStateService.getDeviceState().getTransferModule().isTrayStatus(),()->new AppException(ResultCode.TRANSFER_MODULE_NO_TRAY));//转运模块是否有托盘 + + + } Point3D targetHeatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(targetHeatModuleCode);//获取目标加热模块托盘夹取点 diff --git a/src/main/java/com/iflytop/sgs/app/service/api/DeviceParamConfigService.java b/src/main/java/com/iflytop/sgs/app/service/api/DeviceParamConfigService.java new file mode 100644 index 0000000..0313d31 --- /dev/null +++ b/src/main/java/com/iflytop/sgs/app/service/api/DeviceParamConfigService.java @@ -0,0 +1,119 @@ +package com.iflytop.sgs.app.service.api; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iflytop.sgs.app.mapper.DeviceParamConfigMapper; +import com.iflytop.sgs.app.model.entity.DeviceParamConfig; +import com.iflytop.sgs.app.model.vo.DeviceParamGroupVO; +import com.iflytop.sgs.app.model.vo.ModuleIdVO; +import com.iflytop.sgs.app.model.vo.RegIndexVO; +import com.iflytop.sgs.hardware.type.MId; +import com.iflytop.sgs.hardware.type.RegIndex; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 设备参数配置服务 + */ +@Service +@RequiredArgsConstructor +public class DeviceParamConfigService extends ServiceImpl { + private final DeviceParamConfigMapper deviceParamConfigMapper; + + /** + * 按 ModuleId 分组,列出每个模块下的 regIndex + regVal + */ + public List listGroupedByModule() { + // 拉取所有配置记录 + List all = this.list(); + + // 按 mid 分组 + Map> grouped = all.stream() + .collect(Collectors.groupingBy(DeviceParamConfig::getMid)); + + // 构造 VO 列表 + return grouped.entrySet().stream() + .map(entry -> { + String moduleId = entry.getKey(); + List items = entry.getValue().stream() + .map(cfg -> new DeviceParamGroupVO.ParamItem( + cfg.getRegIndex(), + cfg.getRegVal() + )) + .collect(Collectors.toList()); + return new DeviceParamGroupVO(moduleId, items); + }) + .collect(Collectors.toList()); + } + + /** + * 根据模块标识和寄存器索引查询设备参数配置 + * + * @param moduleId 模块枚举 + * @param regIndex 寄存器索引 + * @return 唯一匹配的 DeviceParamConfig,找不到返回 null + */ + public DeviceParamConfig getByModuleAndReg(MId moduleId, RegIndex regIndex) { + return deviceParamConfigMapper.selectOne( + new LambdaQueryWrapper() + .eq(DeviceParamConfig::getMid, moduleId.name()) + .eq(DeviceParamConfig::getRegIndex, regIndex.name()) + ); + } + + /** + * 根据模块标识和寄存器索引设置设备参数配置 + * + * @param moduleId 模块枚举 + * @param regIndex 寄存器索引 + * @param regVal 寄存器值 + * @return 唯一匹配的 DeviceParamConfig,找不到返回 null + */ + public int setModuleAndReg(String moduleId, String regIndex, Integer regVal) { + return deviceParamConfigMapper.update(new LambdaUpdateWrapper() + .eq(DeviceParamConfig::getMid, moduleId) + .eq(DeviceParamConfig::getRegIndex, regIndex) + .set(DeviceParamConfig::getRegVal, regVal)); + + } + + /** + * 列出所有 ModuleId,返回 VO 列表 + * + * @return List + */ + public List listAllModuleIds() { + return Arrays.stream(MId.values()) + .map(e -> new ModuleIdVO( + e.name(), // 枚举常量名 + e.description // 描述字段 + )) + .collect(Collectors.toList()); + } + + /** + * 列出所有寄存器索引枚举,返回 VO 列表 + * + * @return List + */ + public List listAllRegIndices() { + return Arrays.stream(RegIndex.values()) + .map(e -> new RegIndexVO( + e.name() // 枚举常量名 + )) + .collect(Collectors.toList()); + } + + public boolean deleteDeviceParam(String idsStr) { + List ids = Arrays.stream(idsStr.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + return this.removeByIds(ids); + } +} diff --git a/src/main/java/com/iflytop/sgs/common/result/ResultCode.java b/src/main/java/com/iflytop/sgs/common/result/ResultCode.java index d20531f..eb02110 100644 --- a/src/main/java/com/iflytop/sgs/common/result/ResultCode.java +++ b/src/main/java/com/iflytop/sgs/common/result/ResultCode.java @@ -56,7 +56,7 @@ public enum ResultCode implements IResultCode, Serializable { CAP_LIFT_ERROR("6023", "拍子升降错误"), CMD_BUSY("6024", "设备忙,请稍后"), TARGET_HEAT_MODULE_NOT_ANNEAL("6025", "目标加热区不是退火状态"), - TRANSFER_MODULE_NO_TRAY("6026", "转运模块无托盘"), + TRANSFER_MODULE_NO_TRAY("6026", "机械臂无托盘"), SOLUTION_MODULE_NO_TRAY("6027", "加液模块无托盘"), FEED_AREA_NO_TRAY("6028", "上料区无托盘"), SOLUTION_MODULE_IS_BUSY("6029", "加液模块正忙"), diff --git a/src/main/java/com/iflytop/sgs/hardware/controller/StepMotorController.java b/src/main/java/com/iflytop/sgs/hardware/controller/StepMotorController.java index 5dc3c13..ff9a22a 100644 --- a/src/main/java/com/iflytop/sgs/hardware/controller/StepMotorController.java +++ b/src/main/java/com/iflytop/sgs/hardware/controller/StepMotorController.java @@ -1,6 +1,6 @@ package com.iflytop.sgs.hardware.controller; -//import com.iflytop.sgs.app.service.api.DeviceParamConfigService; +import com.iflytop.sgs.app.service.api.DeviceParamConfigService; import com.iflytop.sgs.common.result.Result; import com.iflytop.sgs.hardware.exception.HardwareException; import com.iflytop.sgs.hardware.service.StepMotorService;