|
|
@ -18,7 +18,7 @@ import { DrillTypeCount } from "../LookOverBoardInfos/LookOverBoardInfosTool";
|
|
|
|
import { parseParts } from "./ParseParts";
|
|
|
|
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, IHardwareOption } from "../../UI/Components/RightPanel/RightPanelInterface";
|
|
|
|
import { TemplateWineRackRecord } from './../../DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord';
|
|
|
|
import { TemplateWineRackRecord } from './../../DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord';
|
|
|
|
import { ProcessingGroupRecord } from './../../DatabaseServices/ProcessingGroup/ProcessingGroupRecord';
|
|
|
|
import { ProcessingGroupRecord } from './../../DatabaseServices/ProcessingGroup/ProcessingGroupRecord';
|
|
|
|
import { TemplateLatticeRecord } from './../../DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord';
|
|
|
|
import { TemplateLatticeRecord } from './../../DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord';
|
|
|
@ -87,9 +87,9 @@ export class ErpParseData
|
|
|
|
/*归类板件加工组-结束*/
|
|
|
|
/*归类板件加工组-结束*/
|
|
|
|
|
|
|
|
|
|
|
|
//房间名
|
|
|
|
//房间名
|
|
|
|
let roomName = !entity.BoardProcessOption.roomName || entity.BoardProcessOption.roomName.length < 1 ? "未命名" : entity.BoardProcessOption.roomName;
|
|
|
|
let roomName = entity.BoardProcessOption.roomName || "未命名";
|
|
|
|
//柜体
|
|
|
|
//柜体
|
|
|
|
let boxName = !entity.BoardProcessOption.cabinetName || entity.BoardProcessOption.cabinetName.length < 1 ? "未命名" : entity.BoardProcessOption.cabinetName;
|
|
|
|
let boxName = entity.BoardProcessOption.cabinetName || "未命名";
|
|
|
|
//板
|
|
|
|
//板
|
|
|
|
let block = new OrderDataBlock();
|
|
|
|
let block = new OrderDataBlock();
|
|
|
|
block.ID = blockIndex += 1;
|
|
|
|
block.ID = blockIndex += 1;
|
|
|
@ -126,11 +126,11 @@ export class ErpParseData
|
|
|
|
block.SealedRight = this.GetNumberBit(Number(entity.BoardProcessOption.sealedRight), 3); //封边右
|
|
|
|
block.SealedRight = this.GetNumberBit(Number(entity.BoardProcessOption.sealedRight), 3); //封边右
|
|
|
|
}
|
|
|
|
}
|
|
|
|
sealingMap.set(entity, boardData.sealing);
|
|
|
|
sealingMap.set(entity, boardData.sealing);
|
|
|
|
let spliteWidth = boardData.info.spliteWidth.length < 1 ? 0 : Number(boardData.info.spliteWidth); //拆单宽
|
|
|
|
let spliteWidth = Number(boardData.info.spliteWidth || '0'); //拆单宽
|
|
|
|
block.SpliteWidth = this.GetNumberBit(spliteWidth, 3);
|
|
|
|
block.SpliteWidth = this.GetNumberBit(spliteWidth, 3);
|
|
|
|
let spliteHeight = boardData.info.spliteHeight.length < 1 ? 0 : Number(boardData.info.spliteHeight); //拆单高
|
|
|
|
let spliteHeight = Number(boardData.info.spliteHeight || '0'); //拆单高
|
|
|
|
block.SpliteHeight = this.GetNumberBit(spliteHeight, 3);
|
|
|
|
block.SpliteHeight = this.GetNumberBit(spliteHeight, 3);
|
|
|
|
let spliteThickness = boardData.info.spliteThickness.length < 1 ? 0 : Number(boardData.info.spliteThickness); //拆单厚
|
|
|
|
let spliteThickness = Number(boardData.info.spliteThickness || '0'); //拆单厚
|
|
|
|
block.SpliteThickness = this.GetNumberBit(spliteThickness, 3);
|
|
|
|
block.SpliteThickness = this.GetNumberBit(spliteThickness, 3);
|
|
|
|
//板大小
|
|
|
|
//板大小
|
|
|
|
if (spliteWidth > 0)
|
|
|
|
if (spliteWidth > 0)
|
|
|
@ -280,20 +280,13 @@ export class ErpParseData
|
|
|
|
console.log("加工组拆单数据:", processGroupObjectList);
|
|
|
|
console.log("加工组拆单数据:", processGroupObjectList);
|
|
|
|
/*加工组拆单信息-结束*/
|
|
|
|
/*加工组拆单信息-结束*/
|
|
|
|
|
|
|
|
|
|
|
|
for (const entity of metalsList)
|
|
|
|
for (const entity of metalsList.filter(t => !(t instanceof HardwareTopline)))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let spliteData = Production.GetHardwareData(entity as IHardwareType);
|
|
|
|
let spliteData = Production.GetHardwareData(entity as IHardwareType);
|
|
|
|
if (entity instanceof HardwareTopline) // 顶线处理
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let topLine = (entity as HardwareTopline);
|
|
|
|
|
|
|
|
let polyine = (topLine.Path as Polyline);
|
|
|
|
|
|
|
|
let info = spliteData.metalsOption as ICompHardwareOption;
|
|
|
|
|
|
|
|
info.name = "顶线";
|
|
|
|
|
|
|
|
info.count = ((polyine.CurveCount * Number(topLine.HardwareOption.addLen) + polyine.Length) / 1000).toString();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
parseParts(spliteData, objectList);
|
|
|
|
parseParts(spliteData, objectList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
objectList.push(...this.GetAllDrillsObjects(boardList));
|
|
|
|
objectList.push(...this.GetAllDrillsObjects(boardList));
|
|
|
|
|
|
|
|
objectList.push(...this.GetOrderTopLines(metalsList.filter(t => t instanceof HardwareTopline)));//处理顶线
|
|
|
|
objectList.push(...this.GetOrderSealing(sealingMap));
|
|
|
|
objectList.push(...this.GetOrderSealing(sealingMap));
|
|
|
|
return { blockList, objectList, processGroupObjectList };
|
|
|
|
return { blockList, objectList, processGroupObjectList };
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -617,10 +610,10 @@ export class ErpParseData
|
|
|
|
let groupList = this.groupBy(list, ['roomName', 'boxName']);
|
|
|
|
let groupList = this.groupBy(list, ['roomName', 'boxName']);
|
|
|
|
for (const g of groupList)
|
|
|
|
for (const g of groupList)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let drills = Production.GetTotalDrillCount(g.value.map(t => t.board));
|
|
|
|
let drills = Production.GetTotalDrillCount(g.value.map(t => t.board)).drillCount;
|
|
|
|
let splitList = g.key.split('-');
|
|
|
|
let splitList = g.key.split('-');
|
|
|
|
let roomName = splitList[0].length == 0 ? '未命名' : splitList[0];
|
|
|
|
let roomName = splitList[0] || '未命名';
|
|
|
|
let boxName = splitList[1].length == 0 ? '未命名' : splitList[1];
|
|
|
|
let boxName = splitList[1] || '未命名';
|
|
|
|
objectList.push(...this.GetDrillObjects(drills, roomName, boxName));
|
|
|
|
objectList.push(...this.GetDrillObjects(drills, roomName, boxName));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return objectList;
|
|
|
|
return objectList;
|
|
|
@ -630,7 +623,7 @@ export class ErpParseData
|
|
|
|
return drills.map(t =>
|
|
|
|
return drills.map(t =>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let parts = new OrderDataObject();
|
|
|
|
let parts = new OrderDataObject();
|
|
|
|
parts.Name = t.name.length == 0 ? '未命名' : t.name;
|
|
|
|
parts.Name = t.name || '未命名';
|
|
|
|
parts.RoomName = RoomName;
|
|
|
|
parts.RoomName = RoomName;
|
|
|
|
parts.BoxName = BoxName;
|
|
|
|
parts.BoxName = BoxName;
|
|
|
|
parts.Num = t.count;
|
|
|
|
parts.Num = t.count;
|
|
|
@ -641,14 +634,45 @@ export class ErpParseData
|
|
|
|
return parts;
|
|
|
|
return parts;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
GetOrderTopLines(hardWares: IHardwareType[])
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let topLines = Production.GetTotalDrillCount(hardWares).hardwareCount;
|
|
|
|
|
|
|
|
let partsList: OrderDataObject[] = [];
|
|
|
|
|
|
|
|
for (const t of topLines)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let option: IHardwareOption = Production.GetHardwareData(t.entity as IHardwareType).metalsOption;
|
|
|
|
|
|
|
|
let price: number = 0;
|
|
|
|
|
|
|
|
price = Number(Number(option.actualExpr || '0').toFixed(2));
|
|
|
|
|
|
|
|
price = price || 0;
|
|
|
|
|
|
|
|
for (let i = 0; i < t.count; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let parts = new OrderDataObject();
|
|
|
|
|
|
|
|
parts.Name = t.name || '未命名';
|
|
|
|
|
|
|
|
parts.RoomName = option.roomName || '未命名';
|
|
|
|
|
|
|
|
parts.BoxName = option.cabinetName || '未命名';
|
|
|
|
|
|
|
|
parts.Num = t.count2;
|
|
|
|
|
|
|
|
parts.SalePrice = price;
|
|
|
|
|
|
|
|
parts.ObjectType = '顶线';
|
|
|
|
|
|
|
|
parts.Spec = option.spec;
|
|
|
|
|
|
|
|
parts.Model = option.model;
|
|
|
|
|
|
|
|
parts.Brand = option.brand;
|
|
|
|
|
|
|
|
parts.Factory = option.factory;
|
|
|
|
|
|
|
|
parts.Units = option.unit;
|
|
|
|
|
|
|
|
parts.IsComposite = false;
|
|
|
|
|
|
|
|
parts.Remark = option.comments;
|
|
|
|
|
|
|
|
partsList.push(parts);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return partsList;
|
|
|
|
|
|
|
|
}
|
|
|
|
GetOrderSealing(map: Map<Board, ISealingData[]>): OrderDataObject[]
|
|
|
|
GetOrderSealing(map: Map<Board, ISealingData[]>): OrderDataObject[]
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let objects: OrderDataObject[] = [];
|
|
|
|
let objects: OrderDataObject[] = [];
|
|
|
|
let objs: { room: string, box: string, size: number, length: number; }[] = [];
|
|
|
|
let objs: { room: string, box: string, size: number, length: number; }[] = [];
|
|
|
|
for (const m of map)
|
|
|
|
for (const m of map)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let roomName = !m[0].BoardProcessOption.roomName || m[0].BoardProcessOption.roomName.length < 1 ? "未命名" : m[0].BoardProcessOption.roomName;
|
|
|
|
let roomName = m[0].BoardProcessOption.roomName || "未命名";
|
|
|
|
let boxName = !m[0].BoardProcessOption.cabinetName || m[0].BoardProcessOption.cabinetName.length < 1 ? "未命名" : m[0].BoardProcessOption.cabinetName;
|
|
|
|
let boxName = m[0].BoardProcessOption.cabinetName || "未命名";
|
|
|
|
let list = m[1].filter(t => t.size > 0).map(t => { return { room: roomName, box: boxName, size: t.size, length: t.length }; });
|
|
|
|
let list = m[1].filter(t => t.size > 0).map(t => { return { room: roomName, box: boxName, size: t.size, length: t.length }; });
|
|
|
|
objs.push(...list);
|
|
|
|
objs.push(...list);
|
|
|
|
}
|
|
|
|
}
|
|
|
|