!1559 优化:增加拆单进度条(避免拆单崩溃)

pull/1559/MERGE
ChenX 3 years ago
parent 32850bb183
commit 73ae85ee93

@ -206,7 +206,7 @@ async function ExecChaiDan(chaiDanRoute: ErpRoutes)
});
return;
}
let parseData = new ErpParseData().GetCadData(selction.boardList, selction.metalsList);
let parseData = await new ErpParseData().GetCadData(selction.boardList, selction.metalsList);
if (!parseData)
{
AppToaster.show({

@ -1,6 +1,8 @@
import { Object3D, Vec2, Vector3 } from "three";
import { arrayPushArray } from "../../Common/ArrayExt";
import { EBoardKeyList } from "../../Common/BoardKeyList";
import { ConverCircleToPolyline } from "../../Common/CurveUtils";
import { Sleep } from "../../Common/Sleep";
import { GangDrillType } from "../../DatabaseServices/3DSolid/CylinderHole";
import { Board, I2DModeingItem } from "../../DatabaseServices/Entity/Board";
import { Circle } from "../../DatabaseServices/Entity/Circle";
@ -13,6 +15,7 @@ import { AsVector2, equalv3, GetBoxArr, ZeroVec } from "../../Geometry/GeUtils";
import { I2DModeling, I3DContourData, I3DModeling, IContourData, IDrillingOption, IHardwareType, IModelingData, IOriginModelingData, ISealingData, ISpliteHardwareData, ISpliteOrderData, Production } from '../../Production/Product';
import { EMetalsType } from "../../UI/Components/RightPanel/RightPanelInterface";
import { BoardOpenDir, FaceDirection, LinesType } from "../../UI/Store/BoardInterface";
import { DownPanelStore } from "../../UI/Store/DownPanelStore";
import { GetCountOption, ICountType, lookOverBoardInfosTool } from "../LookOverBoardInfos/LookOverBoardInfosTool";
import { HardwareCompositeEntity } from './../../DatabaseServices/Hardware/HardwareCompositeEntity';
import { ProcessingGroupRecord } from './../../DatabaseServices/ProcessingGroup/ProcessingGroupRecord';
@ -30,7 +33,7 @@ enum FrontOrSide
}
export class ErpParseData
{
GetCadData(boardList: Board[], metalsList: IHardwareType[]): { blockList: OrderDataBlock[]; objectList: OrderDataObject[]; processGroupObjectList: ProcessGroupObject[]; }
async GetCadData(boardList: Board[], metalsList: IHardwareType[]): Promise<{ blockList: OrderDataBlock[]; objectList: OrderDataObject[]; processGroupObjectList: ProcessGroupObject[]; }>
{
let blockList: OrderDataBlock[] = [];
let objectList: OrderDataObject[] = [];
@ -52,6 +55,13 @@ export class ErpParseData
}
};
let sealingMap = new Map<Board, ISealingData[]>();
const down = DownPanelStore.GetInstance();
let i = 0;
down.progressName = "算板";
down.progress = 0.1;
let count = boardList.length;
for (const entity of boardList)
{
if (entity instanceof Board)
@ -175,7 +185,16 @@ export class ErpParseData
block.IsHXDJX = hxdj && boardData.boardContour && boardData.boardContour.buls.some(t => t > 0);
blockList.push(block);
}
i++;
if (i % 50 === 0)
{
await Sleep(0);
down.progress = 0.1 + i / count;
}
}
down.progress = 1;
/*加工组拆单信息-开始*/
const objIdFilter = (objId: ObjectId) =>
{
@ -284,9 +303,10 @@ export class ErpParseData
let spliteData = Production.GetHardwareCompositeData(entity as HardwareCompositeEntity);
parseParts(spliteData, objectList);
}
objectList.push(...this.GetAllDrillsObjects(boardList));
objectList.push(...this.GetOrderTopLines(metalsList.filter(t => t instanceof HardwareTopline)));//处理顶线
objectList.push(...this.GetOrderSealing(boardList));
arrayPushArray(objectList, await this.GetAllDrillsObjects(boardList));
arrayPushArray(objectList, this.GetOrderTopLines(metalsList.filter(t => t instanceof HardwareTopline)));//处理顶线
arrayPushArray(objectList, await this.GetOrderSealing(boardList));
return { blockList, objectList, processGroupObjectList };
}
DecomposeObject(metalsList: IHardwareType[])
@ -687,12 +707,11 @@ export class ErpParseData
GetRemark(remarks: [string, string][], filter: (block: [string, string]) => boolean)
{
if (filter)
{
return remarks.filter(t => filter(t));
}
return remarks;
}
GetAllDrillsObjects(boardList: Board[])
async GetAllDrillsObjects(boardList: Board[])
{
let objectList: OrderDataObject[] = [];
let list = boardList.map(t =>
@ -700,6 +719,13 @@ export class ErpParseData
return { roomName: t.BoardProcessOption.roomName, boxName: t.BoardProcessOption.cabinetName, board: t };
});
let groupList = this.groupBy(list, ['roomName', 'boxName']);
const down = DownPanelStore.GetInstance();
let i = 0;
down.progressName = "算钻";
down.progress = 0.1;
let count = groupList.length;
for (const g of groupList)
{
let drills = Production.GetTotalDrillCount(g.value.map(t => t.board)).drillCount;
@ -707,9 +733,20 @@ export class ErpParseData
let roomName = splitList[0] || '未命名';
let boxName = splitList[1] || '未命名';
objectList.push(...this.GetDrillObjects(drills, roomName, boxName));
i++;
if (i % 10 === 0)
{
down.progress = 0.1 + i / count;
await Sleep(0);
}
}
down.progress = 1;
return objectList;
}
GetDrillObjects(drills: ICountType[], RoomName: string, BoxName: string)
{
return drills.map(t =>
@ -757,7 +794,8 @@ export class ErpParseData
}
return partsList;
}
GetOrderSealing(boardList: Board[]): OrderDataObject[]
async GetOrderSealing(boardList: Board[]): Promise<OrderDataObject[]>
{
let objectList: OrderDataObject[] = [];
let list = boardList.map(t =>
@ -765,6 +803,13 @@ export class ErpParseData
return { roomName: t.BoardProcessOption.roomName || '未命名', boxName: t.BoardProcessOption.cabinetName || '未命名', board: t };
});
let groupList = this.groupBy(list, ['roomName', 'boxName']);
const down = DownPanelStore.GetInstance();
let i = 0;
down.progressName = "算封边";
down.progress = 0.1;
let count = groupList.length;
for (const g of groupList)
{
let options: GetCountOption = {
@ -791,6 +836,13 @@ export class ErpParseData
object.GroupKey = seal.name;
objectList.push(object);
}
i++;
if (i % 50 === 0)
{
down.progress = 0.1 + i / count;
await Sleep(0);
}
}
return objectList;
}

Loading…
Cancel
Save