4 changed files with 128 additions and 3 deletions
-
8src/main/java/com/iflytop/sgs/app/cmd/control/MoveToFeedAreaCommand.java
-
119src/main/java/com/iflytop/sgs/app/service/api/DeviceParamConfigService.java
-
2src/main/java/com/iflytop/sgs/common/result/ResultCode.java
-
2src/main/java/com/iflytop/sgs/hardware/controller/StepMotorController.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<DeviceParamConfigMapper, DeviceParamConfig> { |
||||
|
private final DeviceParamConfigMapper deviceParamConfigMapper; |
||||
|
|
||||
|
/** |
||||
|
* 按 ModuleId 分组,列出每个模块下的 regIndex + regVal |
||||
|
*/ |
||||
|
public List<DeviceParamGroupVO> listGroupedByModule() { |
||||
|
// 拉取所有配置记录 |
||||
|
List<DeviceParamConfig> all = this.list(); |
||||
|
|
||||
|
// 按 mid 分组 |
||||
|
Map<String, List<DeviceParamConfig>> grouped = all.stream() |
||||
|
.collect(Collectors.groupingBy(DeviceParamConfig::getMid)); |
||||
|
|
||||
|
// 构造 VO 列表 |
||||
|
return grouped.entrySet().stream() |
||||
|
.map(entry -> { |
||||
|
String moduleId = entry.getKey(); |
||||
|
List<DeviceParamGroupVO.ParamItem> 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<DeviceParamConfig>() |
||||
|
.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<DeviceParamConfig>() |
||||
|
.eq(DeviceParamConfig::getMid, moduleId) |
||||
|
.eq(DeviceParamConfig::getRegIndex, regIndex) |
||||
|
.set(DeviceParamConfig::getRegVal, regVal)); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 列出所有 ModuleId,返回 VO 列表 |
||||
|
* |
||||
|
* @return List<ModuleIdVO> |
||||
|
*/ |
||||
|
public List<ModuleIdVO> listAllModuleIds() { |
||||
|
return Arrays.stream(MId.values()) |
||||
|
.map(e -> new ModuleIdVO( |
||||
|
e.name(), // 枚举常量名 |
||||
|
e.description // 描述字段 |
||||
|
)) |
||||
|
.collect(Collectors.toList()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 列出所有寄存器索引枚举,返回 VO 列表 |
||||
|
* |
||||
|
* @return List<RegIndexVO> |
||||
|
*/ |
||||
|
public List<RegIndexVO> listAllRegIndices() { |
||||
|
return Arrays.stream(RegIndex.values()) |
||||
|
.map(e -> new RegIndexVO( |
||||
|
e.name() // 枚举常量名 |
||||
|
)) |
||||
|
.collect(Collectors.toList()); |
||||
|
} |
||||
|
|
||||
|
public boolean deleteDeviceParam(String idsStr) { |
||||
|
List<Long> ids = Arrays.stream(idsStr.split(",")) |
||||
|
.map(Long::parseLong) |
||||
|
.collect(Collectors.toList()); |
||||
|
return this.removeByIds(ids); |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue