OptionsController.cs
6.6 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
using Microsoft.AspNetCore.Mvc;
using Rcs.Domain.Entities;
using Rcs.Domain.Enums;
using Rcs.Domain.Repositories;
using Rcs.Shared.Options;
namespace Rcs.Api.Controllers
{
/// <summary>
/// 下拉选项控制器
/// 提供统一的下拉数据接口,支持多语言
/// @author zzy
/// </summary>
[ApiController]
[Route("api/[controller]")]
public class OptionsController : ControllerBase
{
private readonly IRobotRepository _robotRepository;
private readonly IStorageLocationRepository _storageLocationRepository;
public OptionsController(IRobotRepository robotRepository, IStorageLocationRepository storageLocationRepository)
{
_robotRepository = robotRepository;
_storageLocationRepository = storageLocationRepository;
}
/// <summary>
/// 获取所有下拉选项
/// </summary>
/// <param name="lang">语言:zh-cn(默认), en</param>
/// <returns>所有下拉选项</returns>
[HttpGet]
public IActionResult GetAllOptions([FromQuery] string lang = "zh-cn")
{
var language = EnumOptions.ParseLanguage(lang);
return Ok(new
{
// 机器人管理
RobotType = EnumOptions.GetOptions<RobotType>(language),
RobotStatus = EnumOptions.GetOptions<RobotStatus>(language),
OnlineStatus = EnumOptions.GetOptions<OnlineStatus>(language),
OperatingMode = EnumOptions.GetOptions<OperatingMode>(language),
ProtocolType = EnumOptions.GetOptions<ProtocolType>(language),
// 地图管理
MapType = EnumOptions.GetOptions<MapTYPE>(language),
MapNodeType = EnumOptions.GetOptions<MapNodeTYPE>(language),
MapResourceType = EnumOptions.GetOptions<MapResourcesTYPE>(language),
// 动作管理
ActionCategory = EnumOptions.GetOptions<ActionCategory>(language),
ActionBlockType = EnumOptions.GetOptions<ActionBlockType>(language),
ExecutionScope = EnumOptions.GetOptions<ExecutionScope>(language),
ParameterValueType = EnumOptions.GetOptions<ParameterValueType>(language),
ParameterSourceType = EnumOptions.GetOptions<ParameterSourceType>(language),
// 任务模板
TaskStatus = EnumOptions.GetOptions<Rcs.Domain.Entities.TaskStatus>(language),
TaskStepType = EnumOptions.GetOptions<TaskStepType>(language),
StepPropertyType = EnumOptions.GetOptions<StepPropertyType>(language),
AfterActionType = EnumOptions.GetOptions<AfterActionType>(language),
NodeValueType = EnumOptions.GetOptions<NodeValueType>(language)
});
}
/// <summary>
/// 获取机器人相关下拉选项
/// </summary>
[HttpGet("robot")]
public IActionResult GetRobotOptions([FromQuery] string lang = "zh-cn")
{
var language = EnumOptions.ParseLanguage(lang);
return Ok(new
{
RobotType = EnumOptions.GetOptions<RobotType>(language),
RobotStatus = EnumOptions.GetOptions<RobotStatus>(language),
OnlineStatus = EnumOptions.GetOptions<OnlineStatus>(language),
OperatingMode = EnumOptions.GetOptions<OperatingMode>(language),
ProtocolType = EnumOptions.GetOptions<ProtocolType>(language)
});
}
/// <summary>
/// 获取地图相关下拉选项
/// </summary>
[HttpGet("map")]
public IActionResult GetMapOptions([FromQuery] string lang = "zh-cn")
{
var language = EnumOptions.ParseLanguage(lang);
return Ok(new
{
MapType = EnumOptions.GetOptions<MapTYPE>(language),
MapNodeType = EnumOptions.GetOptions<MapNodeTYPE>(language),
MapResourceType = EnumOptions.GetOptions<MapResourcesTYPE>(language)
});
}
/// <summary>
/// 获取动作相关下拉选项
/// </summary>
[HttpGet("action")]
public IActionResult GetActionOptions([FromQuery] string lang = "zh-cn")
{
var language = EnumOptions.ParseLanguage(lang);
return Ok(new
{
ActionCategory = EnumOptions.GetOptions<ActionCategory>(language),
ActionBlockType = EnumOptions.GetOptions<ActionBlockType>(language),
ExecutionScope = EnumOptions.GetOptions<ExecutionScope>(language),
ParameterValueType = EnumOptions.GetOptions<ParameterValueType>(language),
ParameterSourceType = EnumOptions.GetOptions<ParameterSourceType>(language)
});
}
/// <summary>
/// 获取任务模板相关下拉选项
/// </summary>
[HttpGet("task")]
public IActionResult GetTaskOptions([FromQuery] string lang = "zh-cn")
{
var language = EnumOptions.ParseLanguage(lang);
return Ok(new
{
TaskStatus = EnumOptions.GetOptions<Rcs.Domain.Entities.TaskStatus>(language),
TaskStepType = EnumOptions.GetOptions<TaskStepType>(language),
StepPropertyType = EnumOptions.GetOptions<StepPropertyType>(language),
AfterActionType = EnumOptions.GetOptions<AfterActionType>(language),
NodeValueType = EnumOptions.GetOptions<NodeValueType>(language)
});
}
/// <summary>
/// 获取机器人下拉选项
/// @author zzy
/// </summary>
[HttpGet("robots")]
public async Task<IActionResult> GetRobotSelectOptions(CancellationToken cancellationToken = default)
{
var robots = await _robotRepository.GetActiveRobotsAsync(cancellationToken);
var options = robots.Select(r => new { value = r.RobotId, text = $"{r.RobotCode} - {r.RobotName}", code = r.RobotCode });
return Ok(options);
}
/// <summary>
/// 获取库位下拉选项
/// @author zzy
/// </summary>
[HttpGet("locations")]
public async Task<IActionResult> GetLocationSelectOptions(CancellationToken cancellationToken = default)
{
var locations = await _storageLocationRepository.GetAllAsync(cancellationToken);
var options = locations.Where(l => l.IsActive).Select(l => new { value = l.LocationId, text = $"{l.LocationName}", code = l.LocationId });
return Ok(options);
}
}
}