package com.mes.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.mes.entity.PlcAddress; import java.util.List; /** * PLC地址映射服务接口 * 定义PLC地址映射配置管理的核心方法 * * @author huang * @date 2025/10/30 */ public interface PlcAddressService { /** * 获取包含地址映射的项目配置(合并数据库与配置文件) * @param projectId 项目ID * @return 合并后的项目配置 */ PlcAddress getProjectConfigWithMapping(String projectId); /** * 从数据库获取项目配置 * @param projectId 项目ID * @return 项目配置(PlcAddress实体),不存在则返回null */ PlcAddress getProjectConfig(String projectId); /** * 获取所有映射配置(合并后的addressMapping会写回实体的JSON字段) * @return 所有映射配置列表 */ List getAllMappings(); /** * 分页获取PLC地址映射配置 * @param page 页码 * @param size 每页大小 * @param projectId 项目ID(可选) * @param plcIp PLC IP(可选) * @return 分页结果 */ IPage getMappingsByPage(int page, int size, String projectId, String plcIp); /** * 根据ID获取PLC地址映射配置 * @param id 配置ID * @return PLC地址映射配置 */ PlcAddress getMappingById(Long id); /** * 根据项目ID获取PLC地址映射配置 * @param projectId 项目ID * @return PLC地址映射配置 */ PlcAddress getMappingByProjectId(String projectId); /** * 创建PLC地址映射配置 * @param mapping 映射配置 * @return 创建后的配置 */ PlcAddress saveMapping(PlcAddress mapping); /** * 更新PLC地址映射配置 * @param mapping 映射配置 * @return 更新后的配置,未找到返回null */ PlcAddress updateMapping(PlcAddress mapping); /** * 删除PLC地址映射配置 * @param id 配置ID * @return 是否成功 */ boolean deleteMapping(Long id); /** * 批量删除PLC地址映射配置 * @param ids 配置ID列表 * @return 删除数量 */ int deleteMappings(List ids); /** * 测试PLC连接 * @param mapping 映射配置 * @return 是否成功 */ boolean testConnection(PlcAddress mapping); /** * 重新加载配置文件中的映射配置 */ void reloadConfigMappings(); }