MappingProfile.cs
14 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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
using AutoMapper;
using Rcs.Application.Dtos;
using Rcs.Application.DTOs;
using Rcs.Domain.Entities;
using Rcs.Domain.Enums;
using TaskStatus = Rcs.Domain.Entities.TaskStatus;
namespace Rcs.Application.Common.Mapping
{
/// <summary>
/// AutoMapper 配置文件
/// </summary>
public class MappingProfile : Profile
{
public MappingProfile()
{
// 机器人映射 - 包含枚举到字符串的转换
// @author zzy - 修改为使用导航属性
CreateMap<Robot, RobotDto>()
.ForMember(dest => dest.RobotId, opt => opt.MapFrom(src => src.RobotId.ToString()))
.ForMember(dest => dest.RobotManufacturer, opt => opt.MapFrom(src => src.RobotManufacturer))
.ForMember(dest => dest.RobotType, opt => opt.MapFrom(src => src.RobotType))
.ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.Status))
.ForMember(dest => dest.Online, opt => opt.MapFrom(src => src.Online))
.ForMember(dest => dest.OperatingMode, opt => opt.MapFrom(src => src.OperatingMode))
.ForMember(dest => dest.CurrentMapCode, opt => opt.MapFrom(src => src.Map != null ? src.Map.MapCode : null));
CreateMap<Robot, RobotListItemDto>()
.ForMember(dest => dest.RobotId, opt => opt.MapFrom(src => src.RobotId.ToString()))
.ForMember(dest => dest.RobotManufacturer, opt => opt.MapFrom(src => src.RobotManufacturer))
.ForMember(dest => dest.RobotType, opt => opt.MapFrom(src => src.RobotType));
CreateMap<Map, MapDto>()
.ForMember(dest => dest.MapId, opt => opt.MapFrom(src => src.MapId.ToString()))
.ForMember(dest => dest.MapType, opt => opt.MapFrom(src => src.MapType));
CreateMap<MapDto, Map>()
.ForMember(dest => dest.MapId, opt => opt.MapFrom(src => Guid.Parse(src.MapId)))
.ForMember(dest => dest.MapType, opt => opt.MapFrom(src => (MapTYPE)src.MapType));
CreateMap<Map, MapListItemDto>()
.ForMember(dest => dest.MapId, opt => opt.MapFrom(src => src.MapId.ToString()))
.ForMember(dest => dest.MapType, opt => opt.MapFrom(src => src.MapType));
CreateMap<MapListItemDto, Map>()
.ForMember(dest => dest.MapId, opt => opt.MapFrom(src => Guid.Parse(src.MapId)))
.ForMember(dest => dest.MapType, opt => opt.MapFrom(src => (MapTYPE)src.MapType));
// MapResource 映射 - 枚举到字符串的转换,Guid到string的转换
CreateMap<MapResource, MapResourceDto>()
.ForMember(dest => dest.ResourceId, opt => opt.MapFrom(src => src.ResourceId.ToString()))
.ForMember(dest => dest.MapId, opt => opt.MapFrom(src => src.MapId.ToString()))
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => src.Type));
CreateMap<MapResourceDto, MapResource>()
.ForMember(dest => dest.ResourceId, opt => opt.MapFrom(src => string.IsNullOrEmpty(src.ResourceId) ? Guid.Empty : Guid.Parse(src.ResourceId)))
.ForMember(dest => dest.MapId, opt => opt.MapFrom(src => string.IsNullOrEmpty(src.MapId) ? Guid.Empty : Guid.Parse(src.MapId)))
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => (MapResourcesTYPE)src.Type))
.ForMember(dest => dest.Maps, opt => opt.Ignore());
// MapNode 映射 - 枚举到字符串的转换,Guid到string的转换
// @author zzy - 添加 StorageLocations 映射
CreateMap<MapNode, MapNodeDto>()
.ForMember(dest => dest.NodeId, opt => opt.MapFrom(src => src.NodeId.ToString()))
.ForMember(dest => dest.MapId, opt => opt.MapFrom(src => src.MapId.ToString()));
// StorageArea 映射
// @author zzy
CreateMap<StorageArea, StorageAreaDto>()
.ForMember(dest => dest.AreaId, opt => opt.MapFrom(src => src.AreaId.ToString()));
// StorageLocation 映射
// @author zzy
CreateMap<StorageLocation, StorageLocationDto>()
.ForMember(dest => dest.LocationId, opt => opt.MapFrom(src => src.LocationId.ToString()))
.ForMember(dest => dest.AreaId, opt => opt.MapFrom(src => src.AreaId.ToString()))
.ForMember(dest => dest.MapNodeId, opt => opt.MapFrom(src => src.MapNodeId.HasValue ? src.MapNodeId.Value.ToString() : null))
.ForMember(dest => dest.Status, opt => opt.MapFrom(src => (int)src.Status));
CreateMap<MapNodeDto, MapNode>()
.ForMember(dest => dest.NodeId,
opt => opt.MapFrom(src => string.IsNullOrEmpty(src.NodeId) ? Guid.Empty : Guid.Parse(src.NodeId)))
.ForMember(dest => dest.MapId,
opt => opt.MapFrom(src => string.IsNullOrEmpty(src.MapId) ? Guid.Empty : Guid.Parse(src.MapId)))
.ForMember(dest => dest.Type,
opt => opt.MapFrom(src =>
(MapNodeTYPE)src.Type))
.ForMember(dest => dest.Map, opt => opt.Ignore())
.ForMember(dest => dest.MapEdgesFromNodes, opt => opt.Ignore())
.ForMember(dest => dest.MapEdgesToNodes, opt => opt.Ignore())
.ForMember(dest => dest.MapResourcess, opt => opt.Ignore());
// MapEdge 映射 - Guid到string的转换
CreateMap<MapEdge, MapEdgeDto>()
.ForMember(dest => dest.EdgeId, opt => opt.MapFrom(src => src.EdgeId.ToString()))
.ForMember(dest => dest.MapId, opt => opt.MapFrom(src => src.MapId.ToString()))
.ForMember(dest => dest.FromNode, opt => opt.MapFrom(src => src.FromNode.ToString()))
.ForMember(dest => dest.ToNode, opt => opt.MapFrom(src => src.ToNode.ToString()));
CreateMap<MapEdgeDto, MapEdge>()
.ForMember(dest => dest.EdgeId, opt => opt.MapFrom(src => string.IsNullOrEmpty(src.EdgeId) ? Guid.Empty : Guid.Parse(src.EdgeId)))
.ForMember(dest => dest.MapId, opt => opt.MapFrom(src => string.IsNullOrEmpty(src.MapId) ? Guid.Empty : Guid.Parse(src.MapId)))
.ForMember(dest => dest.FromNode, opt => opt.MapFrom(src => Guid.Parse(src.FromNode)))
.ForMember(dest => dest.ToNode, opt => opt.MapFrom(src => Guid.Parse(src.ToNode)))
.ForMember(dest => dest.Maps, opt => opt.Ignore())
.ForMember(dest => dest.MapNodesFromNode, opt => opt.Ignore())
.ForMember(dest => dest.MapNodesToNode, opt => opt.Ignore());
// Point 映射
CreateMap<Point, PointDto>();
CreateMap<PointDto, Point>();
// TaskTemplate 映射
CreateMap<TaskTemplate, TaskTemplateDto>()
.ForMember(dest => dest.TemplateId, opt => opt.MapFrom(src => src.TemplateId.ToString()))
.ForMember(dest => dest.RobotType, opt => opt.MapFrom(src => src.RobotType));
CreateMap<TaskTemplate, TaskTemplateListItemDto>()
.ForMember(dest => dest.TemplateId, opt => opt.MapFrom(src => src.TemplateId.ToString()))
.ForMember(dest => dest.RobotType, opt => opt.MapFrom(src => src.RobotType));
CreateMap<TaskStep, TaskStepDto>()
.ForMember(dest => dest.StepId, opt => opt.MapFrom(src => src.StepId.ToString()))
.ForMember(dest => dest.TemplateId, opt => opt.MapFrom(src => src.TemplateId.ToString()))
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => src.Type));
// @author zzy - 修复 NodeValue 映射类型错误
CreateMap<StepProperty, StepPropertyDto>()
.ForMember(dest => dest.PropertyId, opt => opt.MapFrom(src => src.PropertyId.ToString()))
.ForMember(dest => dest.StepId, opt => opt.MapFrom(src => src.StepId.ToString()))
.ForMember(dest => dest.PropertyType, opt => opt.MapFrom(src => src.PropertyType))
.ForMember(dest => dest.NodeValue, opt => opt.MapFrom(src => src.NodeValue.HasValue ? (int)src.NodeValue.Value : 0))
.ForMember(dest => dest.AfterActionType, opt => opt.MapFrom(src => src.AfterActionType));
CreateMap<StepAction, ActionDto>()
.ForMember(dest => dest.ActionId, opt => opt.MapFrom(src => src.ActionId.ToString()))
.ForMember(dest => dest.PropertyId, opt => opt.MapFrom(src => src.PropertyId.ToString()))
.ForMember(dest => dest.BlockingType, opt => opt.MapFrom(src => src.BlockingType));
// ActionConfiguration 映射
CreateMap<ActionConfiguration, ActionConfigurationDto>()
.ForMember(dest => dest.ActionConfigId, opt => opt.MapFrom(src => src.ActionConfigId.ToString()))
.ForMember(dest => dest.ActionCategory, opt => opt.MapFrom(src => (int)src.ActionCategory))
.ForMember(dest => dest.RobotType, opt => opt.MapFrom(src => (int)src.RobotType))
.ForMember(dest => dest.BlockingType, opt => opt.MapFrom(src => (int)src.BlockingType));
CreateMap<ActionConfiguration, ActionConfigurationListItemDto>()
.ForMember(dest => dest.ActionConfigId, opt => opt.MapFrom(src => src.ActionConfigId.ToString()))
.ForMember(dest => dest.ActionCategory, opt => opt.MapFrom(src => (int)src.ActionCategory))
.ForMember(dest => dest.RobotType, opt => opt.MapFrom(src => (int)src.RobotType))
.ForMember(dest => dest.BlockingType, opt => opt.MapFrom(src => (int)src.BlockingType));
// ActionParameterDefinition 映射
CreateMap<ActionParameterDefinition, ActionParameterDefinitionDto>()
.ForMember(dest => dest.ParamId, opt => opt.MapFrom(src => src.ParamId.ToString()))
.ForMember(dest => dest.ActionConfigId, opt => opt.MapFrom(src => src.ActionConfigId.ToString()))
.ForMember(dest => dest.ParameterValueType, opt => opt.MapFrom(src => (int)src.ParameterValueType))
.ForMember(dest => dest.ParameterSourceType, opt => opt.MapFrom(src => src.ParameterSourceType.HasValue ? (int?)src.ParameterSourceType.Value : null));
// RobotTask 映射
// @author zzy
CreateMap<RobotTask, RobotTaskListItemDto>()
.ForMember(dest => dest.TaskId, opt => opt.MapFrom(src => src.TaskId.ToString()))
.ForMember(dest => dest.RobotId, opt => opt.MapFrom(src => src.RobotId.HasValue ? src.RobotId.Value.ToString() : null))
.ForMember(dest => dest.RobotCode, opt => opt.MapFrom(src => src.Robot != null ? src.Robot.RobotCode : null))
.ForMember(dest => dest.TaskTemplateId, opt => opt.MapFrom(src => src.TaskTemplateId.ToString()))
.ForMember(dest => dest.TaskTemplateName, opt => opt.MapFrom(src => src.TaskTemplate != null ? src.TaskTemplate.TemplateName : null))
.ForMember(dest => dest.BeginLocationId, opt => opt.MapFrom(src => src.BeginLocationId.HasValue ? src.BeginLocationId.Value.ToString() : null))
.ForMember(dest => dest.BeginLocationName, opt => opt.MapFrom(src => src.BeginLocation != null ? src.BeginLocation.LocationName : null))
.ForMember(dest => dest.EndLocationId, opt => opt.MapFrom(src => src.EndLocationId.HasValue ? src.EndLocationId.Value.ToString() : null))
.ForMember(dest => dest.EndLocationName, opt => opt.MapFrom(src => src.EndLocation != null ? src.EndLocation.LocationName : null))
.ForMember(dest => dest.Status, opt => opt.MapFrom(src => (int)src.Status))
.ForMember(dest => dest.StatusName, opt => opt.MapFrom(src => GetTaskStatusName(src.Status)));
CreateMap<RobotTask, RobotTaskDto>()
.ForMember(dest => dest.TaskId, opt => opt.MapFrom(src => src.TaskId.ToString()))
.ForMember(dest => dest.RobotId, opt => opt.MapFrom(src => src.RobotId.HasValue ? src.RobotId.Value.ToString() : null))
.ForMember(dest => dest.RobotCode, opt => opt.MapFrom(src => src.Robot != null ? src.Robot.RobotCode : null))
.ForMember(dest => dest.RobotName, opt => opt.MapFrom(src => src.Robot != null ? src.Robot.RobotName : null))
.ForMember(dest => dest.TaskTemplateId, opt => opt.MapFrom(src => src.TaskTemplateId.ToString()))
.ForMember(dest => dest.TaskTemplateName, opt => opt.MapFrom(src => src.TaskTemplate != null ? src.TaskTemplate.TemplateName : null))
.ForMember(dest => dest.BeginLocationId, opt => opt.MapFrom(src => src.BeginLocationId.HasValue ? src.BeginLocationId.Value.ToString() : null))
.ForMember(dest => dest.BeginLocationCode, opt => opt.MapFrom(src => src.BeginLocation != null ? src.BeginLocation.LocationCode : null))
.ForMember(dest => dest.EndLocationId, opt => opt.MapFrom(src => src.EndLocationId.HasValue ? src.EndLocationId.Value.ToString() : null))
.ForMember(dest => dest.EndLocationCode, opt => opt.MapFrom(src => src.EndLocation != null ? src.EndLocation.LocationCode : null))
.ForMember(dest => dest.Status, opt => opt.MapFrom(src => (int)src.Status))
.ForMember(dest => dest.StatusName, opt => opt.MapFrom(src => GetTaskStatusName(src.Status)));
}
/// <summary>
/// 获取任务状态名称
/// @author zzy
/// </summary>
private static string GetTaskStatusName(TaskStatus status)
{
return status switch
{
TaskStatus.Pending => "等待中",
TaskStatus.Assigned => "已分配",
TaskStatus.InProgress => "执行中",
TaskStatus.WaitingForResource => "等待资源",
TaskStatus.Completed => "已完成",
TaskStatus.Cancelled => "已取消",
TaskStatus.Failed => "执行失败",
TaskStatus.Timeout => "超时",
TaskStatus.Reassigned => "重新分配",
_ => "未知"
};
}
}
}