!790 五金拆解处理和获取token

pull/790/MERGE
cf-erp 5 years ago committed by ChenX
parent afe2a79089
commit 79b3a81408

@ -39,6 +39,7 @@ export class ShoWYouHua implements Command
app.Editor.ModalManage.RenderModal(ErpView, { app.Editor.ModalManage.RenderModal(ErpView, {
erpRoute: routeInfo, erpRoute: routeInfo,
session: localStorage.getItem(StoreageKeys.PlatSession), session: localStorage.getItem(StoreageKeys.PlatSession),
token: localStorage.getItem(StoreageKeys.PlatToken),
cadData: null, cadData: null,
store: store, store: store,
}); });
@ -114,6 +115,7 @@ async function ExecChaiDan(chaiDanRoute: ErpRoutes)
app.Editor.ModalManage.RenderModal(ErpView, { app.Editor.ModalManage.RenderModal(ErpView, {
erpRoute: routeInfo, erpRoute: routeInfo,
session: localStorage.getItem(StoreageKeys.PlatSession), session: localStorage.getItem(StoreageKeys.PlatSession),
token: localStorage.getItem(StoreageKeys.PlatToken),
cadData: new ErpParseData().GetCadData(selction.boardList, selction.metalsList), cadData: new ErpParseData().GetCadData(selction.boardList, selction.metalsList),
store: store, store: store,
}); });

@ -4,7 +4,7 @@ import { ModalState } from "../../UI/Components/Modal/ModalInterface";
import { BoardStore } from "../../UI/Store/BoardStore"; import { BoardStore } from "../../UI/Store/BoardStore";
import { ErpURL } from "./HostURL"; import { ErpURL } from "./HostURL";
import { OrderDataBlock } from "./Models/CadBlock"; import { OrderDataBlock } from "./Models/CadBlock";
import { OrderDataObject } from "./Models/CadObject"; import { OrderDataObject, ProcessGroupObject } from "./Models/CadObject";
import { ErpRouteInfo } from "./Models/ErpRouteInfo"; import { ErpRouteInfo } from "./Models/ErpRouteInfo";
import { ErpRoutes } from "./Models/ErpRoutes"; import { ErpRoutes } from "./Models/ErpRoutes";
@ -12,7 +12,8 @@ interface ErpViewProp
{ {
erpRoute: ErpRouteInfo; erpRoute: ErpRouteInfo;
session: string; session: string;
cadData: { blockList: OrderDataBlock[], objectList: OrderDataObject[]; }; token: string;
cadData: { blockList: OrderDataBlock[], objectList: OrderDataObject[]; processGroupList: ProcessGroupObject[]; };
store: BoardStore; store: BoardStore;
} }
export class ErpView extends React.Component<ErpViewProp, {}> { export class ErpView extends React.Component<ErpViewProp, {}> {
@ -55,7 +56,7 @@ export class ErpView extends React.Component<ErpViewProp, {}> {
switch (this.props.erpRoute.RouteType) switch (this.props.erpRoute.RouteType)
{ {
case ErpRoutes.: case ErpRoutes.:
this.postMessage("init", this.props.session); this.postMessage("init", { token: this.props.token });
break; break;
case ErpRoutes.: case ErpRoutes.:
this.postMessage("singleInit", { session: this.props.session, cadData: this.props.cadData }); this.postMessage("singleInit", { session: this.props.session, cadData: this.props.cadData });
@ -64,7 +65,7 @@ export class ErpView extends React.Component<ErpViewProp, {}> {
this.postMessage("singleInitJb", { session: this.props.session, cadData: this.props.cadData }); this.postMessage("singleInitJb", { session: this.props.session, cadData: this.props.cadData });
break; break;
case ErpRoutes.: case ErpRoutes.:
this.postMessage("showSingle", this.props.session); this.postMessage("showSingle", { session: this.props.session });
break; break;
} }
window.addEventListener('message', this.closeEvent); window.addEventListener('message', this.closeEvent);

@ -1,5 +1,6 @@
export class OrderDataBlock export class OrderDataBlock
{ {
ID: number;
BoardName: string; BoardName: string;
BoardType: BoardType; BoardType: BoardType;
BlockID: number; BlockID: number;

@ -1,6 +1,9 @@
import { Board } from "../../../DatabaseServices/Entity/Board";
export class OrderDataObject export class OrderDataObject
{ {
ID: number; ID: number;
IsOffer: boolean = false;
ParentID: number; ParentID: number;
Name: string; Name: string;
ObjectID: number; ObjectID: number;
@ -27,3 +30,17 @@ export class OrderDataObject
ModuleDepth = 0; ModuleDepth = 0;
Remark: string; Remark: string;
} }
export class ProcessGroupObject
{
//类型
type: string;
//项目(抽屉1 抽屉2...)
projects: ProcessGroupProjObject[];
}
export class ProcessGroupProjObject
{
//项目名
projName: string;
//板件id
brIds: number[];
}

@ -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);
} }

@ -5,12 +5,11 @@ import { EMetalsType, ICompHardwareOption } from "../../UI/Components/RightPanel
import { OrderDataObject } from "./Models/CadObject"; import { OrderDataObject } from "./Models/CadObject";
import { ISpliteHardwareData } from '../../Production/Product'; import { ISpliteHardwareData } from '../../Production/Product';
export function parseParts(spliteData: ISpliteHardwareData, list: OrderDataObject[], parentID: number = 0) export function parseParts(spliteData: ISpliteHardwareData, list: OrderDataObject[], parent: OrderDataObject = null)
{ {
let info = spliteData.metalsOption as ICompHardwareOption; let info = spliteData.metalsOption as ICompHardwareOption;
let parts = new OrderDataObject(); let parts = new OrderDataObject();
parts.ID = list.length + 1; parts.ID = list.length + 1;
parts.ParentID = parentID;
parts.RoomName = info.roomName.length == 0 ? '未命名' : info.roomName; parts.RoomName = info.roomName.length == 0 ? '未命名' : info.roomName;
parts.BoxName = info.cabinetName.length == 0 ? '未命名' : info.cabinetName; parts.BoxName = info.cabinetName.length == 0 ? '未命名' : info.cabinetName;
parts.Brand = info.brand; parts.Brand = info.brand;
@ -32,23 +31,44 @@ export function parseParts(spliteData: ISpliteHardwareData, list: OrderDataObjec
parts.Spec = specList.join('|'); parts.Spec = specList.join('|');
parts.Units = info.unit; parts.Units = info.unit;
parts.Model = info.model; parts.Model = info.model;
parts.SalePrice = Number(info.actualExpr.length === 0 ? 0 : info.actualExpr); parts.SalePrice = Number(Number(info.actualExpr.length === 0 ? 0 : info.actualExpr).toFixed(2));
if (parent && parent.ID > 0)
{
if (parent.IsOffer)
{
parts.SalePrice = 0;
} else
{
parts.IsOffer = true;
}
}
if (parent)
{
parts.RoomName = parent.RoomName;
parts.BoxName = parent.BoxName;
}
parts.IsComposite = info.type === EMetalsType.Comp ? true : false; parts.IsComposite = info.type === EMetalsType.Comp ? true : false;
parts.Name = info.name; parts.Name = info.name;
parts.ObjectType = info.name; parts.ObjectType = info.name;
parts.Num = Number(info.count); parts.Num = Number(info.count);
list.push(parts);
if (info.isSplite && spliteData.children.length > 0) if (info.isSplite && spliteData.children.length > 0)
{ {
if (info.isSplitePrice == false) // 父五金作为报价信息
{
parts.IsOffer = true;
list.push(parts);
} else // 2个都勾选只有子五金
{
parts.ID = -1;
}
parent = parts;
for (const child of spliteData.children) for (const child of spliteData.children)
{ {
parseParts(child, list, parts.ID); parseParts(child, list, parent);
} }
} else
{
list.push(parts);
} }
} }

@ -2,6 +2,7 @@ export enum StoreageKeys
{ {
IsLogin = "isLogin", IsLogin = "isLogin",
PlatSession = "platSession", PlatSession = "platSession",
PlatToken = "platToken",
UserName = "userName", UserName = "userName",
RenderType = "renderType", RenderType = "renderType",
ExactDrill = "openExactDrill", ExactDrill = "openExactDrill",

@ -192,7 +192,7 @@ export class SweepSolid extends Entity
} }
get BoundingBox() get BoundingBox()
{ {
return new Box3Ext().setFromPoints(this.GetStretchPoints()); return new Box3Ext().setFromPoints(this.GetEndPoints());
} }
get OBB(): OBB get OBB(): OBB
{ {

@ -745,33 +745,31 @@ export namespace Production
children: [], children: [],
}; };
if (en instanceof HardwareCompositeEntity && (en.HardwareOption.isSplitePrice || en.HardwareOption.isSplitePrice)) if (en instanceof HardwareCompositeEntity && (en.HardwareOption.isSplite || en.HardwareOption.isSplitePrice))
{ {
let actualPrice = 0; if (en.Entitys.every(e => !(e instanceof HardwareCompositeEntity || e instanceof HardwareTopline)))
return metalData;
// let costPrice = 0;
// let actualPrice = 0;
for (let e of en.Entitys) for (let e of en.Entitys)
{ {
if (e instanceof HardwareCompositeEntity || e instanceof HardwareTopline) if (e instanceof HardwareCompositeEntity || e instanceof HardwareTopline)
{ {
let d: ISpliteHardwareData; let d = GetHardwareData(e);
metalData.children.push(d);
if (en.HardwareOption.isSplite) // if (en.HardwareOption.isSplitePrice)
{ // {
d = GetHardwareData(e); // costPrice += parseFloat(d.metalsOption.costExpr) ?? 0;
metalData.children.push(d); // actualPrice += parseFloat(d.metalsOption.actualExpr) ?? 0;
} // }
if (en.HardwareOption.isSplitePrice)
{
if (!d)
d = GetHardwareData(e);
actualPrice += parseFloat(d.metalsOption.actualExpr) ?? 0;
}
} }
} }
if (en.HardwareOption.isSplitePrice) // if (en.HardwareOption.isSplitePrice)
{ // {
metalData.metalsOption.actualExpr = actualPrice.toString(); // metalData.metalsOption.costExpr = costPrice.toString();
} // metalData.metalsOption.actualExpr = actualPrice.toString();
// }
} }
return metalData; return metalData;

@ -23,6 +23,7 @@ export function saveLoginInfos(data: IResponseData)
{ {
localStorage.setItem(StoreageKeys.IsLogin, "1"); localStorage.setItem(StoreageKeys.IsLogin, "1");
localStorage.setItem(StoreageKeys.PlatSession, data.session); localStorage.setItem(StoreageKeys.PlatSession, data.session);
localStorage.setItem(StoreageKeys.PlatToken, data.token);
localStorage.setItem(StoreageKeys.UserName, data.user_info.login_name); localStorage.setItem(StoreageKeys.UserName, data.user_info.login_name);
localStorage.setItem(StoreageKeys.IsNewErp, data.user_info.new_erp); localStorage.setItem(StoreageKeys.IsNewErp, data.user_info.new_erp);
localStorage.setItem(StoreageKeys.Uid, data.user_info.user_id); localStorage.setItem(StoreageKeys.Uid, data.user_info.user_id);

Loading…
Cancel
Save