|
@@ -304,28 +304,31 @@ var
|
|
|
iEndRow: Integer;
|
|
|
begin
|
|
|
sName := Trim(GetCellValue(AXlsFile, FCurRow, FXmjLevel1Col));
|
|
|
- if sName = '' then Exit;
|
|
|
-
|
|
|
- vXmj := FCacheTree.FindXmjChild(nil, '', sName);
|
|
|
- if not Assigned(vXmj) then
|
|
|
- begin
|
|
|
- vXmj := FCacheTree.AddNode(nil);
|
|
|
- vXmj.Name := sName;
|
|
|
- end;
|
|
|
-
|
|
|
with AXlsFile.CellMergedBounds[FCurRow, FXmjLevel1Col] do
|
|
|
iEndRow := FCurRow + Bottom - Top;
|
|
|
|
|
|
- if FXmjLevel2Col <> -1 then
|
|
|
+ if sName <> '' then
|
|
|
begin
|
|
|
- while FCurRow <= iEndRow do
|
|
|
- LoadXmjLevel2(AXlsFile, vXmj);
|
|
|
+ vXmj := FCacheTree.FindXmjChild(nil, '', sName);
|
|
|
+ if not Assigned(vXmj) then
|
|
|
+ begin
|
|
|
+ vXmj := FCacheTree.AddNode(nil);
|
|
|
+ vXmj.Name := sName;
|
|
|
+ end;
|
|
|
+
|
|
|
+ if FXmjLevel2Col <> -1 then
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadXmjLevel2(AXlsFile, vXmj);
|
|
|
+ end
|
|
|
+ else
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadBillsNode(AXlsFile, vXmj);
|
|
|
+ end;
|
|
|
end
|
|
|
else
|
|
|
- begin
|
|
|
- while FCurRow <= iEndRow do
|
|
|
- LoadBillsNode(AXlsFile, vXmj);
|
|
|
- end;
|
|
|
+ Inc(FCurRow);
|
|
|
end;
|
|
|
|
|
|
procedure TPlaneFxBillsExcelImport.LoadXmjLevel2(AXlsFile: TXLSFile;
|
|
@@ -336,22 +339,29 @@ var
|
|
|
iEndRow: Integer;
|
|
|
begin
|
|
|
sName := Trim(GetCellValue(AXlsFile, FCurRow, FXmjLevel2Col));
|
|
|
- if sName = '' then Exit;
|
|
|
-
|
|
|
- vXmj := FCacheTree.FindXmjChild(AParent, '', sName);
|
|
|
- if not Assigned(vXmj) then
|
|
|
- begin
|
|
|
- vXmj := FCacheTree.AddNode(AParent);
|
|
|
- vXmj.Name := sName;
|
|
|
- end;
|
|
|
-
|
|
|
with AXlsFile.CellMergedBounds[FCurRow, FXmjLevel2Col] do
|
|
|
iEndRow := FCurRow + Bottom - Top;
|
|
|
|
|
|
- if FXmjLevel3Col <> -1 then
|
|
|
+ if sName <> '' then
|
|
|
begin
|
|
|
- while FCurRow <= iEndRow do
|
|
|
- LoadXmjLevel3(AXlsFile, vXmj);
|
|
|
+ vXmj := FCacheTree.FindXmjChild(AParent, '', sName);
|
|
|
+ if not Assigned(vXmj) then
|
|
|
+ begin
|
|
|
+ vXmj := FCacheTree.AddNode(AParent);
|
|
|
+ vXmj.Name := sName;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+ if FXmjLevel3Col <> -1 then
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadXmjLevel3(AXlsFile, vXmj);
|
|
|
+ end
|
|
|
+ else
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadBillsNode(AXlsFile, vXmj);
|
|
|
+ end;
|
|
|
end
|
|
|
else
|
|
|
begin
|
|
@@ -368,27 +378,33 @@ var
|
|
|
iEndRow: Integer;
|
|
|
begin
|
|
|
sName := Trim(GetCellValue(AXlsFile, FCurRow, FXmjLevel3Col));
|
|
|
- if sName = '' then Exit;
|
|
|
-
|
|
|
- vXmj := FCacheTree.FindXmjChild(AParent, '', sName);
|
|
|
- if not Assigned(vXmj) then
|
|
|
- begin
|
|
|
- vXmj := FCacheTree.AddNode(AParent);
|
|
|
- vXmj.Name := sName;
|
|
|
- end;
|
|
|
-
|
|
|
with AXlsFile.CellMergedBounds[FCurRow, FXmjLevel3Col] do
|
|
|
iEndRow := FCurRow + Bottom - Top;
|
|
|
|
|
|
- if FXmjLevel4Col <> -1 then
|
|
|
+ if sName <> '' then
|
|
|
begin
|
|
|
- while FCurRow <= iEndRow do
|
|
|
- LoadXmjLevel4(AXlsFile, vXmj);
|
|
|
+ vXmj := FCacheTree.FindXmjChild(AParent, '', sName);
|
|
|
+ if not Assigned(vXmj) then
|
|
|
+ begin
|
|
|
+ vXmj := FCacheTree.AddNode(AParent);
|
|
|
+ vXmj.Name := sName;
|
|
|
+ end;
|
|
|
+
|
|
|
+ if FXmjLevel4Col <> -1 then
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadXmjLevel4(AXlsFile, vXmj);
|
|
|
+ end
|
|
|
+ else
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadBillsNode(AXlsFile, vXmj);
|
|
|
+ end;
|
|
|
end
|
|
|
else
|
|
|
begin
|
|
|
while FCurRow <= iEndRow do
|
|
|
- LoadBillsNode(AXlsFile, vXmj);
|
|
|
+ LoadBillsNode(AXlsFile, AParent);
|
|
|
end;
|
|
|
end;
|
|
|
|
|
@@ -400,27 +416,33 @@ var
|
|
|
iEndRow: Integer;
|
|
|
begin
|
|
|
sName := Trim(GetCellValue(AXlsFile, FCurRow, FXmjLevel4Col));
|
|
|
- if sName = '' then Exit;
|
|
|
-
|
|
|
- vXmj := FCacheTree.FindXmjChild(AParent, '', sName);
|
|
|
- if not Assigned(vXmj) then
|
|
|
- begin
|
|
|
- vXmj := FCacheTree.AddNode(AParent);
|
|
|
- vXmj.Name := sName;
|
|
|
- end;
|
|
|
-
|
|
|
with AXlsFile.CellMergedBounds[FCurRow, FXmjLevel4Col] do
|
|
|
iEndRow := FCurRow + Bottom - Top;
|
|
|
|
|
|
- if FXmjLevel5Col <> -1 then
|
|
|
+ if sName <> '' then
|
|
|
begin
|
|
|
- while FCurRow <= iEndRow do
|
|
|
- LoadXmjLevel5(AXlsFile, vXmj);
|
|
|
+ vXmj := FCacheTree.FindXmjChild(AParent, '', sName);
|
|
|
+ if not Assigned(vXmj) then
|
|
|
+ begin
|
|
|
+ vXmj := FCacheTree.AddNode(AParent);
|
|
|
+ vXmj.Name := sName;
|
|
|
+ end;
|
|
|
+
|
|
|
+ if FXmjLevel5Col <> -1 then
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadXmjLevel5(AXlsFile, vXmj);
|
|
|
+ end
|
|
|
+ else
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadBillsNode(AXlsFile, vXmj);
|
|
|
+ end;
|
|
|
end
|
|
|
else
|
|
|
begin
|
|
|
while FCurRow <= iEndRow do
|
|
|
- LoadBillsNode(AXlsFile, vXmj);
|
|
|
+ LoadBillsNode(AXlsFile, AParent);
|
|
|
end;
|
|
|
end;
|
|
|
|
|
@@ -432,27 +454,33 @@ var
|
|
|
iEndRow: Integer;
|
|
|
begin
|
|
|
sName := Trim(GetCellValue(AXlsFile, FCurRow, FXmjLevel5Col));
|
|
|
- if sName = '' then Exit;
|
|
|
-
|
|
|
- vXmj := FCacheTree.FindXmjChild(AParent, '', sName);
|
|
|
- if not Assigned(vXmj) then
|
|
|
- begin
|
|
|
- vXmj := FCacheTree.AddNode(AParent);
|
|
|
- vXmj.Name := sName;
|
|
|
- end;
|
|
|
-
|
|
|
with AXlsFile.CellMergedBounds[FCurRow, FXmjLevel5Col] do
|
|
|
iEndRow := FCurRow + Bottom - Top;
|
|
|
|
|
|
- if FXmjLevel6Col <> -1 then
|
|
|
+ if sName <> '' then
|
|
|
begin
|
|
|
- while FCurRow <= iEndRow do
|
|
|
- LoadXmjLevel6(AXlsFile, vXmj);
|
|
|
+ vXmj := FCacheTree.FindXmjChild(AParent, '', sName);
|
|
|
+ if not Assigned(vXmj) then
|
|
|
+ begin
|
|
|
+ vXmj := FCacheTree.AddNode(AParent);
|
|
|
+ vXmj.Name := sName;
|
|
|
+ end;
|
|
|
+
|
|
|
+ if FXmjLevel6Col <> -1 then
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadXmjLevel6(AXlsFile, vXmj);
|
|
|
+ end
|
|
|
+ else
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadBillsNode(AXlsFile, vXmj);
|
|
|
+ end;
|
|
|
end
|
|
|
else
|
|
|
begin
|
|
|
while FCurRow <= iEndRow do
|
|
|
- LoadBillsNode(AXlsFile, vXmj);
|
|
|
+ LoadBillsNode(AXlsFile, AParent);
|
|
|
end;
|
|
|
end;
|
|
|
|
|
@@ -464,27 +492,34 @@ var
|
|
|
iEndRow: Integer;
|
|
|
begin
|
|
|
sName := Trim(GetCellValue(AXlsFile, FCurRow, FXmjLevel6Col));
|
|
|
- if sName = '' then Exit;
|
|
|
-
|
|
|
- vXmj := FCacheTree.FindXmjChild(AParent, '', sName);
|
|
|
- if not Assigned(vXmj) then
|
|
|
- begin
|
|
|
- vXmj := FCacheTree.AddNode(AParent);
|
|
|
- vXmj.Name := sName;
|
|
|
- end;
|
|
|
|
|
|
with AXlsFile.CellMergedBounds[FCurRow, FXmjLevel6Col] do
|
|
|
iEndRow := FCurRow + Bottom - Top;
|
|
|
|
|
|
- if FXmjLevel7Col <> -1 then
|
|
|
+ if sName <> '' then
|
|
|
begin
|
|
|
- while FCurRow <= iEndRow do
|
|
|
- LoadXmjLevel7(AXlsFile, vXmj);
|
|
|
+ vXmj := FCacheTree.FindXmjChild(AParent, '', sName);
|
|
|
+ if not Assigned(vXmj) then
|
|
|
+ begin
|
|
|
+ vXmj := FCacheTree.AddNode(AParent);
|
|
|
+ vXmj.Name := sName;
|
|
|
+ end;
|
|
|
+
|
|
|
+ if FXmjLevel7Col <> -1 then
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadXmjLevel7(AXlsFile, vXmj);
|
|
|
+ end
|
|
|
+ else
|
|
|
+ begin
|
|
|
+ while FCurRow <= iEndRow do
|
|
|
+ LoadBillsNode(AXlsFile, vXmj);
|
|
|
+ end;
|
|
|
end
|
|
|
else
|
|
|
begin
|
|
|
while FCurRow <= iEndRow do
|
|
|
- LoadBillsNode(AXlsFile, vXmj);
|
|
|
+ LoadBillsNode(AXlsFile, AParent);
|
|
|
end;
|
|
|
end;
|
|
|
|
|
@@ -551,6 +586,9 @@ begin
|
|
|
Rec.ValueByName('OrgQuantity').AsFloat := QuantityRoundTo(ANode.Quantity);
|
|
|
Rec.ValueByName('DrawingCode').AsString := ANode.DrawingCode;
|
|
|
Rec.ValueByName('MemoStr').AsString := ANode.MemoStr;
|
|
|
+ // 解锁前,新增清单为变更清单,解锁后,新增清单为0号台账清单
|
|
|
+ if FProjectData.ProjProperties.PhaseCount > 0 then
|
|
|
+ Rec.ValueByName('IsMeasureAdd').AsBoolean := not FProjectData.CanUnlockInfo;
|
|
|
end;
|
|
|
|
|
|
procedure TPlaneFxBillsExcelImport.BeginImport;
|