|
|
@ -9,7 +9,7 @@ import { FaceDirection, LinesType, BoardOpenDir } from "../../UI/Store/BoardInte
|
|
|
|
import { OrderDataBlock, WaveType, CadType } from "./Models/CadBlock";
|
|
|
|
import { OrderDataBlock, WaveType, CadType } from "./Models/CadBlock";
|
|
|
|
import { BasePosition, CadBlockHoles, CadBlockInfo, CadBlockModel, CadBlockModelPoint, CadBlockPoint, FaceType, HoleType } from "./Models/CadBlockInfo";
|
|
|
|
import { BasePosition, CadBlockHoles, CadBlockInfo, CadBlockModel, CadBlockModelPoint, CadBlockPoint, FaceType, HoleType } from "./Models/CadBlockInfo";
|
|
|
|
import { CadBlockBasePosition, CadBlockDrillings, CADDbBoard } from "./Models/CadModel";
|
|
|
|
import { CadBlockBasePosition, CadBlockDrillings, CADDbBoard } from "./Models/CadModel";
|
|
|
|
import { OrderDataObject } from "./Models/CadObject";
|
|
|
|
import { OrderDataObject, ProcessGroupObject, ProcessGroupProjObject } from "./Models/CadObject";
|
|
|
|
import { Circle } from "../../DatabaseServices/Entity/Circle";
|
|
|
|
import { Circle } from "../../DatabaseServices/Entity/Circle";
|
|
|
|
import { ConverCircleToPolyline } from "../../Common/CurveUtils";
|
|
|
|
import { ConverCircleToPolyline } from "../../Common/CurveUtils";
|
|
|
|
import { equalv3, ZeroVec, AsVector2 } from "../../Geometry/GeUtils";
|
|
|
|
import { equalv3, ZeroVec, AsVector2 } from "../../Geometry/GeUtils";
|
|
|
@ -23,6 +23,7 @@ import { parseParts } from "./ParseParts";
|
|
|
|
import { HardwareTopline } from "../../DatabaseServices/Hardware/HardwareTopline";
|
|
|
|
import { HardwareTopline } from "../../DatabaseServices/Hardware/HardwareTopline";
|
|
|
|
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
|
|
|
|
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
|
|
|
|
import { ICompHardwareOption } from "../../UI/Components/RightPanel/RightPanelInterface";
|
|
|
|
import { ICompHardwareOption } from "../../UI/Components/RightPanel/RightPanelInterface";
|
|
|
|
|
|
|
|
import { ProcessingGroupRecord } from "../../DatabaseServices/ProcessingGroup/ProcessingGroupRecord";
|
|
|
|
enum FrontOrSide
|
|
|
|
enum FrontOrSide
|
|
|
|
{
|
|
|
|
{
|
|
|
|
正面反面 = 0,
|
|
|
|
正面反面 = 0,
|
|
|
@ -30,20 +31,42 @@ enum FrontOrSide
|
|
|
|
}
|
|
|
|
}
|
|
|
|
export class ErpParseData
|
|
|
|
export class ErpParseData
|
|
|
|
{
|
|
|
|
{
|
|
|
|
FetchData(boardList: Board[], metalsList: IHardwareType[]): { blockList: OrderDataBlock[]; objectList: OrderDataObject[]; }
|
|
|
|
FetchData(boardList: Board[], metalsList: IHardwareType[]): { blockList: OrderDataBlock[]; objectList: OrderDataObject[]; processGroupObjectList: ProcessGroupObject[]; }
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let blockList: OrderDataBlock[] = [];
|
|
|
|
let blockList: OrderDataBlock[] = [];
|
|
|
|
let objectList: OrderDataObject[] = [];
|
|
|
|
let objectList: OrderDataObject[] = [];
|
|
|
|
|
|
|
|
let processGroupObjectList: ProcessGroupObject[] = [];//加工组信息
|
|
|
|
|
|
|
|
let pgMap: Map<string, ProcessingGroupRecord[]> = new Map();
|
|
|
|
|
|
|
|
let blockMap: Map<number, number> = new Map();
|
|
|
|
|
|
|
|
let blockIndex: number = 0;
|
|
|
|
for (const entity of boardList)
|
|
|
|
for (const entity of boardList)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
//处理加工组
|
|
|
|
if (entity instanceof Board)
|
|
|
|
if (entity instanceof Board)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
for (let pg of entity.ProcessingGroupList)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let g = pg.Object as ProcessingGroupRecord;
|
|
|
|
|
|
|
|
if (pgMap.has(g.Name))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let gs = pgMap.get(g.Name);
|
|
|
|
|
|
|
|
if (gs.findIndex(gss => gss.Id.Index === g.Id.Index) === -1)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
gs.push(g);
|
|
|
|
|
|
|
|
pgMap.set(g.Name, gs);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
pgMap.set(g.Name, [g]);
|
|
|
|
|
|
|
|
}
|
|
|
|
//房间名
|
|
|
|
//房间名
|
|
|
|
let roomName = !entity.BoardProcessOption.roomName || entity.BoardProcessOption.roomName.length < 1 ? "未命名" : entity.BoardProcessOption.roomName;
|
|
|
|
let roomName = !entity.BoardProcessOption.roomName || entity.BoardProcessOption.roomName.length < 1 ? "未命名" : entity.BoardProcessOption.roomName;
|
|
|
|
//柜体
|
|
|
|
//柜体
|
|
|
|
let boxName = !entity.BoardProcessOption.cabinetName || entity.BoardProcessOption.cabinetName.length < 1 ? "未命名" : entity.BoardProcessOption.cabinetName;
|
|
|
|
let boxName = !entity.BoardProcessOption.cabinetName || entity.BoardProcessOption.cabinetName.length < 1 ? "未命名" : entity.BoardProcessOption.cabinetName;
|
|
|
|
//板
|
|
|
|
//板
|
|
|
|
let block = new OrderDataBlock();
|
|
|
|
let block = new OrderDataBlock();
|
|
|
|
|
|
|
|
block.ID = blockIndex += 1;
|
|
|
|
|
|
|
|
blockMap.set(entity.Id.Index, block.ID);
|
|
|
|
block.RoomName = roomName;
|
|
|
|
block.RoomName = roomName;
|
|
|
|
block.BoxName = boxName;
|
|
|
|
block.BoxName = boxName;
|
|
|
|
block.BoardName = entity.Name; //板名称
|
|
|
|
block.BoardName = entity.Name; //板名称
|
|
|
@ -124,6 +147,24 @@ export class ErpParseData
|
|
|
|
blockList.push(block);
|
|
|
|
blockList.push(block);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//加工组信息整理 存入processGroupObjectList
|
|
|
|
|
|
|
|
for (let [str, pg] of pgMap)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
pg.sort((pg1, pg2) => pg1.Id.Index - pg2.Id.Index);
|
|
|
|
|
|
|
|
let projs: ProcessGroupProjObject[] = [];
|
|
|
|
|
|
|
|
for (let [i, g] of pg.entries())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let brids: number[] = [];
|
|
|
|
|
|
|
|
for (let obj of g.Objects)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (!obj.Object || !(obj.Object instanceof Board))
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
brids.push(blockMap.get(obj.Object.Id.Index));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
projs.push({ projName: g.Name + (i + 1).toString(), brIds: brids });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
processGroupObjectList.push({ type: str, projects: projs });
|
|
|
|
|
|
|
|
}
|
|
|
|
for (const entity of metalsList)
|
|
|
|
for (const entity of metalsList)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let spliteData = Production.GetHardwareData(entity as IHardwareType);
|
|
|
|
let spliteData = Production.GetHardwareData(entity as IHardwareType);
|
|
|
@ -138,7 +179,7 @@ export class ErpParseData
|
|
|
|
parseParts(spliteData, objectList);
|
|
|
|
parseParts(spliteData, objectList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
objectList.push(...this.GetAllDrillsObjects(boardList));
|
|
|
|
objectList.push(...this.GetAllDrillsObjects(boardList));
|
|
|
|
return { blockList, objectList };
|
|
|
|
return { blockList, objectList, processGroupObjectList };
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//取小数几位
|
|
|
|
//取小数几位
|
|
|
|
GetNumberBit(value: number, bit: number): number
|
|
|
|
GetNumberBit(value: number, bit: number): number
|
|
|
@ -564,7 +605,7 @@ export class ErpParseData
|
|
|
|
return [b.L, b.W, b.H, b.CabName, b.BoardName, this.GetBasePositionArray(b.BasePoint), this.GetBasePositionArray(b.XVec), this.GetBasePositionArray(b.YVec), this.GetBasePositionArray(b.ZVec), b.Grain, this.GetVec2ListArray(b.Pts), b.Buls, this.GetCadModelArray(b.SubBoardLocal), this.GetCadModelArray(b.SubBoardAssoc), this.GetDrillingsListArray(b.Drillings)];
|
|
|
|
return [b.L, b.W, b.H, b.CabName, b.BoardName, this.GetBasePositionArray(b.BasePoint), this.GetBasePositionArray(b.XVec), this.GetBasePositionArray(b.YVec), this.GetBasePositionArray(b.ZVec), b.Grain, this.GetVec2ListArray(b.Pts), b.Buls, this.GetCadModelArray(b.SubBoardLocal), this.GetCadModelArray(b.SubBoardAssoc), this.GetDrillingsListArray(b.Drillings)];
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
GetCadData(blockList: Board[], metalsList: IHardwareType[]): { blockList: OrderDataBlock[]; objectList: OrderDataObject[]; }
|
|
|
|
GetCadData(blockList: Board[], metalsList: IHardwareType[]): { blockList: OrderDataBlock[]; objectList: OrderDataObject[]; processGroupObjectList: ProcessGroupObject[]; }
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return this.FetchData(blockList, metalsList);
|
|
|
|
return this.FetchData(blockList, metalsList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|