feat: 更新标准场景接口,添加扩展类型和库位信息支持,调整编辑器服务以处理新的库位数组格式
This commit is contained in:
parent
9a1cd82a26
commit
914d3a0ed0
@ -322,8 +322,10 @@ interface StandardScenePoint {
|
|||||||
x: number;
|
x: number;
|
||||||
y: number;
|
y: number;
|
||||||
type: number; // 点位类型
|
type: number; // 点位类型
|
||||||
|
extensionType?: number; // 扩展类型
|
||||||
robots?: Array<string>; // 绑定机器人id集合
|
robots?: Array<string>; // 绑定机器人id集合
|
||||||
actions?: Array<string>; // 绑定动作点id集合
|
actions?: Array<string>; // 绑定动作点id集合
|
||||||
|
associatedStorageLocations?: string[]; // 库位名称
|
||||||
config?: object; // 其它属性配置(可按需增加)
|
config?: object; // 其它属性配置(可按需增加)
|
||||||
properties?: unknown; // 附加数据(前端不做任何处理)
|
properties?: unknown; // 附加数据(前端不做任何处理)
|
||||||
}
|
}
|
||||||
@ -350,6 +352,9 @@ interface StandardSceneArea {
|
|||||||
type: number; // 区域类型
|
type: number; // 区域类型
|
||||||
points?: Array<string>; // 绑定点位id集合
|
points?: Array<string>; // 绑定点位id集合
|
||||||
routes?: Array<string>; // 绑定线路id集合
|
routes?: Array<string>; // 绑定线路id集合
|
||||||
|
maxAmr?: number; // 最大可容纳AMR数
|
||||||
|
inoutflag?: 1 | 2; // 库区规则
|
||||||
|
storageLocations?: Array<Record<string, string[]>>; // 动作点对应的库位信息,格式为 [{动作点名称: [库位列表]}]
|
||||||
config?: object; // 其它属性配置(可按需增加)
|
config?: object; // 其它属性配置(可按需增加)
|
||||||
properties?: unknown; // 附加数据(前端不做任何处理)
|
properties?: unknown; // 附加数据(前端不做任何处理)
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ export interface StandardSceneArea {
|
|||||||
routes?: Array<string>; // 绑定线路id集合
|
routes?: Array<string>; // 绑定线路id集合
|
||||||
maxAmr?: number; // 最大可容纳AMR数
|
maxAmr?: number; // 最大可容纳AMR数
|
||||||
inoutflag?: 1 | 2; // 库区规则
|
inoutflag?: 1 | 2; // 库区规则
|
||||||
storageLocations?: Record<string, string[]>; // 动作点对应的库位信息
|
storageLocations?: Array<Record<string, string[]>>; // 动作点对应的库位信息,格式为 [{动作点名称: [库位列表]}]
|
||||||
config?: object; // 其它属性配置(可按需增加)
|
config?: object; // 其它属性配置(可按需增加)
|
||||||
properties?: unknown; // 附加数据(前端不做任何处理)
|
properties?: unknown; // 附加数据(前端不做任何处理)
|
||||||
}
|
}
|
||||||
|
@ -167,12 +167,20 @@ export class EditorService extends Meta2d {
|
|||||||
processedPoints = actionPoints.map((pen) => pen.id!);
|
processedPoints = actionPoints.map((pen) => pen.id!);
|
||||||
|
|
||||||
// 如果有storageLocations数据,更新对应动作点的库位信息
|
// 如果有storageLocations数据,更新对应动作点的库位信息
|
||||||
if (storageLocations) {
|
if (storageLocations && Array.isArray(storageLocations)) {
|
||||||
|
// 将数组格式转换为对象格式以便查找
|
||||||
|
const storageLocationsMap: Record<string, string[]> = {};
|
||||||
|
storageLocations.forEach((item) => {
|
||||||
|
Object.entries(item).forEach(([pointName, locations]) => {
|
||||||
|
storageLocationsMap[pointName] = locations;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
actionPoints.forEach((pen) => {
|
actionPoints.forEach((pen) => {
|
||||||
const pointName = pen.label || pen.id!;
|
const pointName = pen.label || pen.id!;
|
||||||
if (storageLocations[pointName]) {
|
if (storageLocationsMap[pointName]) {
|
||||||
this.setValue(
|
this.setValue(
|
||||||
{ id: pen.id, point: { ...pen.point, associatedStorageLocations: storageLocations[pointName] } },
|
{ id: pen.id, point: { ...pen.point, associatedStorageLocations: storageLocationsMap[pointName] } },
|
||||||
{ render: false, history: false, doEvent: false },
|
{ render: false, history: false, doEvent: false },
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -290,12 +298,15 @@ export class EditorService extends Meta2d {
|
|||||||
// 保存动作点名称
|
// 保存动作点名称
|
||||||
area.points = actionPoints.map((pen) => pen.label || pen.id!);
|
area.points = actionPoints.map((pen) => pen.label || pen.id!);
|
||||||
|
|
||||||
// 构建storageLocations映射:动作点名称 -> 库位列表
|
// 构建storageLocations数组:[{动作点名称: [库位列表]}]
|
||||||
area.storageLocations = {};
|
area.storageLocations = actionPoints
|
||||||
actionPoints.forEach((pen) => {
|
.map((pen) => {
|
||||||
const pointName = pen.label || pen.id!;
|
const pointName = pen.label || pen.id!;
|
||||||
area.storageLocations![pointName] = pen.point?.associatedStorageLocations ?? [];
|
const storageLocations = pen.point?.associatedStorageLocations ?? [];
|
||||||
});
|
|
||||||
|
return { [pointName]: storageLocations };
|
||||||
|
})
|
||||||
|
.filter((item): item is Record<string, string[]> => item !== null);
|
||||||
|
|
||||||
area.inoutflag = inoutflag;
|
area.inoutflag = inoutflag;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user