wanshenmean
13 小时以前 f288ccc545f8cc32bc922c96dfb3cab9a1f92ec6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Model.Models;
 
namespace WIDESEAWCS_ITaskInfoRepository
{
    /// <summary>
    /// 机械手状态仓储接口
    /// </summary>
    /// <remarks>
    /// 定义机械手状态的数据库访问操作。
    /// 复杂对象(RobotCrane、CurrentTask、数组等)在调用方使用强类型,
    /// 在此接口层面以 Dt_RobotState 实体为操作单位。
    /// </remarks>
    public interface IRobotStateRepository : IRepository<Dt_RobotState>
    {
        /// <summary>
        /// 根据 IP 地址获取机械手状态
        /// </summary>
        /// <param name="ipAddress">设备 IP 地址</param>
        /// <returns>状态实体,不存在则返回 null</returns>
        Dt_RobotState? GetByIp(string ipAddress);
 
        /// <summary>
        /// 获取或创建机械手状态
        /// </summary>
        /// <param name="ipAddress">设备 IP 地址</param>
        /// <param name="robotCrane">机器人设备信息,用于初始化新状态</param>
        /// <returns>状态实体</returns>
        Dt_RobotState GetOrCreate(string ipAddress, RobotCraneDevice robotCrane);
 
        /// <summary>
        /// 安全更新机械手状态(乐观锁)
        /// </summary>
        /// <param name="ipAddress">设备 IP 地址</param>
        /// <param name="newState">新状态实体(Version 会自增)</param>
        /// <param name="expectedVersion">期望的版本号(更新前的版本)</param>
        /// <returns>是否更新成功;false 表示版本冲突或记录不存在</returns>
        bool TryUpdate(string ipAddress, Dt_RobotState newState, long expectedVersion);
 
        /// <summary>
        /// 将 Dt_RobotState 实体转换为 RobotSocketState 内存对象
        /// </summary>
        /// <param name="entity">数据库实体</param>
        /// <returns>内存状态对象</returns>
        RobotSocketState ToSocketState(Dt_RobotState entity);
 
        /// <summary>
        /// 将 RobotSocketState 内存对象转换为 Dt_RobotState 实体
        /// </summary>
        /// <param name="state">内存状态对象</param>
        /// <returns>数据库实体</returns>
        Dt_RobotState ToEntity(RobotSocketState state);
    }
}