!2184 优化:批量查看不统计非拆单板数、面积、封边

pull/2181/MERGE
林伟强 1 year ago committed by ChenX
parent e31d87ef38
commit ea5cb6f080

@ -1,24 +1,39 @@
import { app } from "../../ApplicationServices/Application";
import { Board } from "../../DatabaseServices/Entity/Board";
import { Command } from "../../Editor/CommandMachine";
import { PromptStatus } from "../../Editor/PromptResult";
import { PromptSsgetResult, PromptStatus } from "../../Editor/PromptResult";
import { IHardwareType } from "../../Production/Product";
import { LookOverBoardInfosModal } from "../../UI/Components/BBS/LookOverBoardInfos";
import { HardwareCompositeEntity } from './../../DatabaseServices/Hardware/HardwareCompositeEntity';
import { HardwareTopline } from './../../DatabaseServices/Hardware/HardwareTopline';
export class LookOverBoardInfos implements Command
{
async exec()
{
let enRes = await app.Editor.GetSelection({
Msg: "选择板件或者五金",
UseSelect: true,
Filter: {
filterTypes: [Board, HardwareCompositeEntity, HardwareTopline]
let enRes: PromptSsgetResult;
let switchDivisionChaiDan: null | boolean = null;
while (true)
{
enRes = await app.Editor.GetSelection({
KeyWordList: [{ msg: `${switchDivisionChaiDan ? "包括非拆单板" : "不包括非拆单板"}`, key: "S" }],
Msg: `选择板件或者五金${switchDivisionChaiDan ? "(不包括非拆单板)" : "(包括非拆单板)"}`,
UseSelect: true,
Filter: {
filterFunction: (o, e) => e && e.Id &&
(e instanceof HardwareCompositeEntity || e instanceof HardwareTopline || (e instanceof Board && (switchDivisionChaiDan ? e.IsChaiDan : true)))
}
});
if (enRes.Status === PromptStatus.Cancel)
return;
else if (enRes.Status === PromptStatus.Keyword)
{
if (enRes.StringResult === "S")
switchDivisionChaiDan = !switchDivisionChaiDan;
}
});
if (enRes.Status === PromptStatus.Cancel)
return;
else break;
}
let brsProps = enRes.SelectSet.SelectEntityList as (Board | IHardwareType)[];
@ -30,7 +45,6 @@ export class LookOverBoardInfos implements Command
else
ens.push(e);
}
app.Editor.ModalManage.RenderModeless(LookOverBoardInfosModal, { boardList: ens }, { canMinimize: true, resizable: true, minHeight: 500, minWidth: 1150 });
}
}

@ -65,10 +65,11 @@ class LookOverBoardInfosTool
for (let [k, bs] of this.boardMap)
{
const chaiDan = bs.filter(b => b.IsChaiDan);
areaCount.push({
entity: bs[0],
count: bs.length,
count2: this.GetBoardsArea(bs)
count: chaiDan.length,
count2: this.GetBoardsArea(chaiDan)
});
}
@ -107,16 +108,21 @@ class LookOverBoardInfosTool
this.UpdateBoardMap(brsProps);
for (let b of brsProps)
//统计 排钻 封边 关联的五金(排钻?)
for (let br of brsProps)
{
let dlist = b.DrillList;
if (equaln(b.ContourCurve.Area, 0))
if (!br.IsChaiDan)//非拆单板我们不统计
continue;
//排钻 层板钉
let dlist = br.DrillList;
if (equaln(br.ContourCurve.Area, 0))
{
ToasterShowEntityMsg({
msg: `${b.BoardProcessOption.roomName} ${b.BoardProcessOption.cabinetName} ${b.Name}轮廓有有问题,请检查`,
msg: `${br.BoardProcessOption.roomName} ${br.BoardProcessOption.cabinetName} ${br.Name}轮廓有有问题,请检查`,
timeout: 5000,
intent: Intent.DANGER,
ent: b
ent: br
});
continue;
}
@ -127,7 +133,7 @@ class LookOverBoardInfosTool
{
let holes = ids.map(id => id.Object).filter(h => h) as Hole[];
if (!holes[0] || !HoleInBoard(holes, b))
if (!holes[0] || !HoleInBoard(holes, br))
continue;
let isTk = false;
@ -144,7 +150,7 @@ class LookOverBoardInfosTool
if (!group)
{
Toaster({ message: `柜名:${b.BoardProcessOption.cabinetName} 板名:${b.Name} 的排钻的编组丢失,统计排钻个数时会丢失该个数!`, timeout: 5000, intent: Intent.DANGER });
Toaster({ message: `柜名:${br.BoardProcessOption.cabinetName} 板名:${br.Name} 的排钻的编组丢失,统计排钻个数时会丢失该个数!`, timeout: 5000, intent: Intent.DANGER });
break;
}
@ -199,15 +205,15 @@ class LookOverBoardInfosTool
}
}
// 被复制的层板钉暂未加入LayerNails数组 等做好关联后解除注释
if (b.LayerNails.length > 0)
for (let objId of b.LayerNails)
if (br.LayerNails.length > 0)
for (let objId of br.LayerNails)
{
if (!objId?.IsErase)
addDrillToMap("层板钉", objId.Object as CylinderHole);
}
//分析五金
for (const mId of b.RelativeHardware)
for (const mId of br.RelativeHardware)
{
let metal = mId?.Object as IHardwareType;
if (metal && !metal.IsErase && metal.HardwareOption)
@ -218,27 +224,27 @@ class LookOverBoardInfosTool
}
//封边
let sealContour = GetSealedBoardContour(b, true, true);
let sealContour = GetSealedBoardContour(br, true, true);
if (!sealContour)
{
ToasterShowEntityMsg({
intent: Intent.DANGER,
msg: "板件扣封边失败,请检查板件轮廓!",
timeout: 10000,
ent: b
ent: br
});
throw "错误:板扣除封边失败!";
}
let sealData = GetBoardSealingData(sealContour);
let color = b.BoardProcessOption[EBoardKeyList.Color];
let color = br.BoardProcessOption[EBoardKeyList.Color];
for (let data of sealData)
{
if (equaln(0, data.size)) continue;
let k = `${data.size}-${FixedNotZero(b.Thickness, 2)}-${color}`;
let k = `${data.size}-${FixedNotZero(br.Thickness, 2)}-${color}`;
if (options && options.sealGruopKey)
{
options.sealGruopKey(k, b, data.size);
options.sealGruopKey(k, br, data.size);
}
let len = this.sealMap.get(k);
if (!len)

@ -313,7 +313,7 @@ export class PartsTable extends React.Component<IPartsTableProps, {}>
this.props.titles.map(s => <th key={s}>{s}</th>)
}
</tr></thead>
<tbody>
<tbody style={{ textAlign: "center" }}>
{
this.renderBody()
}

@ -304,6 +304,16 @@ export class LookOverBoardInfosModal extends React.Component<LookOverBoardInfosM
UpdateByRedoUndo(historyRec);
})
);
if (this.props.boardList.some((v) => v instanceof Board && !v.IsChaiDan))
{
AppToaster.show({
message: "批量查看统计板不统计非拆单板的信息",
timeout: 3000,
intent: Intent.PRIMARY,
});
}
}
componentWillUnmount()
{
@ -919,7 +929,7 @@ export class LookOverBoardInfosModal extends React.Component<LookOverBoardInfosM
//总数统计
str += "\n总板数,总平方数\n";
str += `\t${this.searchRes.dataBr.length},${FixedNotZero(this.CalcArea(), 2)}\n`;
str += `\t${this.searchRes.dataBr.filter(v => v.IsChaiDan).length},${FixedNotZero(this.CalcArea(), 2)}\n`;
FS.WriteFile(`${fileServer.currentFileInfo.name}批量查看板件属性.csv`, "\ufeff" + str);
};
@ -998,7 +1008,7 @@ export class LookOverBoardInfosModal extends React.Component<LookOverBoardInfosM
</div>
<ModalFooter hasConfig={false}>
<label className={Classes.LABEL + " " + Classes.INLINE}>
<label>{`总计 ${this.searchRes.dataBr.length} 块板, `}</label>
<label>{`总计 ${this.searchRes.dataBr.filter(v => v.IsChaiDan).length} 块板, `}</label>
<label>{`总计 ${this.CalcArea()}平方 `}</label>
</label>
<InputGroup className={"search"} type="search" placeholder="关键字查找..." dir="auto"

@ -25,6 +25,7 @@ export class BBSEditorStore implements IConfigStore
@observable configsNames = [];
noResize = [6, 7, 8, 19, 20, 22, 23, 24, 25, 26, 27, 28]; //用于字段列宽度调整,但是有一些特殊框就不做调整了
@observable tabbarIndexs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 19, 20];
InitOption()
{
this.tabbarIndexs.length = 0;

Loading…
Cancel
Save