CollisionAvoidanceSystem/src/main/java/com/dongni/collisionavoidance/rule/service/RuleConfigurationService.java

314 lines
10 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.dongni.collisionavoidance.rule.service;
import com.dongni.collisionavoidance.rule.model.entity.SpatialRule;
import com.dongni.collisionavoidance.rule.model.enums.RuleCategory;
import com.dongni.collisionavoidance.rule.model.enums.RuleStatus;
import com.dongni.collisionavoidance.rule.service.SpatialRuleService.RuleValidationResult;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
/**
* 规则配置服务接口
* 提供基本的规则配置管理功能
*
* @author AI Assistant
* @version 1.0
* @since 2025-01-17
*/
public interface RuleConfigurationService {
// ==================== 基础配置功能 ====================
/**
* 创建规则配置模板
*
* @param category 规则类别
* @param name 规则名称
* @param description 规则描述
* @return 创建的规则模板
*/
SpatialRule createRuleTemplate(RuleCategory category, String name, String description);
/**
* 克隆现有规则作为新配置
*
* @param sourceRuleId 源规则ID
* @param newRuleId 新规则ID
* @param newName 新规则名称
* @return 克隆的规则
*/
SpatialRule cloneRuleConfiguration(String sourceRuleId, String newRuleId, String newName);
/**
* 更新规则基本信息
*
* @param ruleId 规则ID
* @param name 新名称
* @param description 新描述
* @param priority 新优先级
* @return 更新是否成功
*/
boolean updateRuleBasicInfo(String ruleId, String name, String description, Integer priority);
/**
* 配置规则时间窗口
*
* @param ruleId 规则ID
* @param effectiveStartTime 生效开始时间
* @param effectiveEndTime 生效结束时间
* @param timePattern 时间模式配置JSON格式
* @return 配置是否成功
*/
boolean configureRuleTimeWindow(String ruleId, LocalDateTime effectiveStartTime,
LocalDateTime effectiveEndTime, String timePattern);
/**
* 配置规则空间范围
*
* @param ruleId 规则ID
* @param spatialObjectType 空间对象类型
* @param relatedObjectId 关联对象ID
* @param customGeometryWkt 自定义几何形状WKT格式
* @return 配置是否成功
*/
boolean configureRuleSpatialScope(String ruleId, String spatialObjectType,
String relatedObjectId, String customGeometryWkt);
/**
* 配置规则参数
*
* @param ruleId 规则ID
* @param parameters 规则参数映射
* @return 配置是否成功
*/
boolean configureRuleParameters(String ruleId, Map<String, Object> parameters);
// ==================== 配置验证功能 ====================
/**
* 验证规则配置的完整性
*
* @param ruleId 规则ID
* @return 验证结果
*/
RuleValidationResult validateRuleConfiguration(String ruleId);
/**
* 批量验证规则配置
*
* @param ruleIds 规则ID列表
* @return 验证结果映射规则ID -> 验证结果)
*/
Map<String, RuleValidationResult> batchValidateRuleConfigurations(List<String> ruleIds);
/**
* 检查规则配置冲突
*
* @param ruleId 规则ID
* @return 冲突的规则列表
*/
List<SpatialRule> checkConfigurationConflicts(String ruleId);
/**
* 验证规则参数的有效性
*
* @param category 规则类别
* @param parameters 参数映射
* @return 验证结果
*/
RuleValidationResult validateRuleParameters(RuleCategory category, Map<String, Object> parameters);
// ==================== 配置模板管理 ====================
/**
* 获取规则类别的默认配置模板
*
* @param category 规则类别
* @return 默认配置模板
*/
Map<String, Object> getDefaultConfigurationTemplate(RuleCategory category);
/**
* 保存配置模板
*
* @param templateName 模板名称
* @param category 规则类别
* @param template 模板配置
* @return 保存是否成功
*/
boolean saveConfigurationTemplate(String templateName, RuleCategory category, Map<String, Object> template);
/**
* 获取所有可用的配置模板
*
* @param category 规则类别可选为null时返回所有类别
* @return 配置模板映射(模板名称 -> 模板配置)
*/
Map<String, Map<String, Object>> getAvailableTemplates(RuleCategory category);
/**
* 应用配置模板到规则
*
* @param ruleId 规则ID
* @param templateName 模板名称
* @return 应用是否成功
*/
boolean applyConfigurationTemplate(String ruleId, String templateName);
// ==================== 配置导入导出 ====================
/**
* 导出规则配置
*
* @param ruleId 规则ID
* @return 配置数据JSON格式
*/
String exportRuleConfiguration(String ruleId);
/**
* 批量导出规则配置
*
* @param ruleIds 规则ID列表
* @return 配置数据JSON格式
*/
String exportRuleConfigurations(List<String> ruleIds);
/**
* 导入规则配置
*
* @param configurationJson 配置数据JSON格式
* @return 导入的规则列表
*/
List<SpatialRule> importRuleConfiguration(String configurationJson);
/**
* 从文件导入规则配置
*
* @param filePath 配置文件路径
* @return 导入的规则数量
*/
int importRuleConfigurationFromFile(String filePath);
// ==================== 配置历史管理 ====================
/**
* 获取规则配置历史
*
* @param ruleId 规则ID
* @param limit 返回数量限制
* @return 配置历史列表
*/
List<RuleConfigurationHistory> getRuleConfigurationHistory(String ruleId, int limit);
/**
* 保存规则配置快照
*
* @param ruleId 规则ID
* @param changeReason 变更原因
* @param changedBy 变更人
* @return 快照是否保存成功
*/
boolean saveConfigurationSnapshot(String ruleId, String changeReason, String changedBy);
/**
* 恢复规则配置到指定版本
*
* @param ruleId 规则ID
* @param snapshotId 快照ID
* @param restoredBy 恢复操作人
* @return 恢复是否成功
*/
boolean restoreConfigurationFromSnapshot(String ruleId, String snapshotId, String restoredBy);
// ==================== 配置统计分析 ====================
/**
* 获取配置统计信息
*
* @return 配置统计数据
*/
ConfigurationStatistics getConfigurationStatistics();
/**
* 获取最常用的配置参数
*
* @param category 规则类别
* @param limit 返回数量限制
* @return 参数使用统计
*/
Map<String, Long> getMostUsedConfigurationParameters(RuleCategory category, int limit);
/**
* 获取配置错误统计
*
* @param startTime 统计开始时间
* @param endTime 统计结束时间
* @return 错误统计数据
*/
Map<String, Long> getConfigurationErrorStatistics(LocalDateTime startTime, LocalDateTime endTime);
// ==================== 内部类定义 ====================
/**
* 规则配置历史记录
*/
class RuleConfigurationHistory {
private final String snapshotId;
private final String ruleId;
private final LocalDateTime timestamp;
private final String changeReason;
private final String changedBy;
private final String configurationSnapshot;
public RuleConfigurationHistory(String snapshotId, String ruleId, LocalDateTime timestamp,
String changeReason, String changedBy, String configurationSnapshot) {
this.snapshotId = snapshotId;
this.ruleId = ruleId;
this.timestamp = timestamp;
this.changeReason = changeReason;
this.changedBy = changedBy;
this.configurationSnapshot = configurationSnapshot;
}
// Getters
public String getSnapshotId() { return snapshotId; }
public String getRuleId() { return ruleId; }
public LocalDateTime getTimestamp() { return timestamp; }
public String getChangeReason() { return changeReason; }
public String getChangedBy() { return changedBy; }
public String getConfigurationSnapshot() { return configurationSnapshot; }
}
/**
* 配置统计信息
*/
class ConfigurationStatistics {
private final long totalConfigurations;
private final long validConfigurations;
private final long invalidConfigurations;
private final Map<RuleCategory, Long> configurationsByCategory;
private final Map<RuleStatus, Long> configurationsByStatus;
private final double configurationValidityRate;
public ConfigurationStatistics(long totalConfigurations, long validConfigurations,
long invalidConfigurations, Map<RuleCategory, Long> configurationsByCategory,
Map<RuleStatus, Long> configurationsByStatus, double configurationValidityRate) {
this.totalConfigurations = totalConfigurations;
this.validConfigurations = validConfigurations;
this.invalidConfigurations = invalidConfigurations;
this.configurationsByCategory = configurationsByCategory;
this.configurationsByStatus = configurationsByStatus;
this.configurationValidityRate = configurationValidityRate;
}
// Getters
public long getTotalConfigurations() { return totalConfigurations; }
public long getValidConfigurations() { return validConfigurations; }
public long getInvalidConfigurations() { return invalidConfigurations; }
public Map<RuleCategory, Long> getConfigurationsByCategory() { return configurationsByCategory; }
public Map<RuleStatus, Long> getConfigurationsByStatus() { return configurationsByStatus; }
public double getConfigurationValidityRate() { return configurationValidityRate; }
}
}