123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- unit tpMainData;
- interface
- uses
- Classes, tpBaseGatherData, tpSelectTenderDm, sdIDTree, tpSelectTenderNode,
- tpPartTender, tpPartTenderSet;
- type
- TtpMainData = class
- private
- FHistoryTenders: TList;
- FTenders: TList;
- // Memory DataSet -- For Display
- // Display FTenders
- FSelectTenderData: TtpSelectTenderData;
- FBaseGatherData: TtpBaseGatherData;
- FPartTrial: TtpPartTender;
- FPartTenderSet: TtpPartTenderSet;
- procedure ClearAllHistoryData;
- public
- constructor Create;
- destructor Destroy; override;
- procedure GatherProjects(AProjects: TList);
- procedure TrialPeg;
- procedure PricePart;
- procedure PegPart;
- property Tenders: TList read FTenders;
- property SelectTenderData: TtpSelectTenderData read FSelectTenderData;
- property BaseGatherData: TtpBaseGatherData read FBaseGatherData;
- property PartTrial: TtpPartTender read FPartTrial;
- property PartTenderSet: TtpPartTenderSet read FPartTenderSet;
- end;
- implementation
- uses
- ZhAPI, Globals, mPegFilter, tpTrialPegInputFrm, UtilMethods,
- Math;
- { TtpMainData }
- procedure TtpMainData.ClearAllHistoryData;
- begin
- FTenders.Clear;
- FPartTrial.Clear;
- end;
- constructor TtpMainData.Create;
- begin
- FHistoryTenders := TList.Create;
- FTenders := TList.Create;
- FSelectTenderData := TtpSelectTenderData.Create(nil);
- FBaseGatherData := TtpBaseGatherData.Create;
- FPartTrial := TtpPartTender.Create;
- FPartTenderSet := TtpPartTenderSet.Create;
- end;
- destructor TtpMainData.Destroy;
- begin
- FPartTenderSet.Free;
- FPartTrial.Free;
- FBaseGatherData.Free;
- FSelectTenderData.Free;
- ClearObjects(FTenders);
- FTenders.Free;
- FHistoryTenders.Free;
- inherited;
- end;
- procedure TtpMainData.GatherProjects(AProjects: TList);
- function SortTenders(AItem1, AItem2: Pointer): Integer;
- begin
- Result := TtpSelectTenderNode(AItem1).SerialNo - TtpSelectTenderNode(AItem2).SerialNo;
- end;
- procedure FilterTenders;
- var
- i: Integer;
- stnNode: TsdIDTreeNode;
- vTender: TtpSelectTenderNode;
- begin
- for i := 0 to AProjects.Count - 1 do
- begin
- stnNode := ProjectManager.ProjectsTree.FindNode(Integer(AProjects.Items[i]));
- if Assigned(stnNode) and (stnNode.Rec.ValueByName('Type').AsInteger = 1) then
- begin
- vTender := TtpSelectTenderNode.Create(stnNode);
- FTenders.Add(vTender);
- FTenders.Sort(@SortTenders);
- end;
- end;
- end;
- function CheckSameTenders: Boolean;
- var
- i: Integer;
- vOrg, vNew: TtpSelectTenderNode;
- begin
- if FHistoryTenders.Count = FTenders.Count then
- begin
- Result := True;
- for i := 0 to FHistoryTenders.Count - 1 do
- begin
- vOrg := TtpSelectTenderNode(FHistoryTenders.Items[i]);
- vNew := TtpSelectTenderNode(FTenders.Items[i]);
- if vOrg.ID <> vNew.ID then
- begin
- Result := False;
- Break;
- end;
- end;
- end
- else
- Result := False;
- end;
- begin
- ClearAllHistoryData;
- FilterTenders;
- if not CheckSameTenders then
- begin
- FBaseGatherData.GatherTenders(FTenders);
- FSelectTenderData.AssignSelectTenders(FTenders);
- ClearObjects(FHistoryTenders);
- FHistoryTenders.Assign(FTenders);
- end;
- end;
- procedure TtpMainData.PegPart;
- begin
- if FBaseGatherData.Pegs.Count > 0 then
- FPartTenderSet.PegPart(FBaseGatherData.Pegs)
- else
- WarningMessage('无桩号数据,无法划分');
- end;
- procedure TtpMainData.PricePart;
- begin
- if FBaseGatherData.Pegs.TotalPrice > 0 then
- FPartTenderSet.PricePart(FBaseGatherData.Pegs)
- else
- WarningMessage('当前可划分的桩号节点金额为0,无法通过金额模式进行划分。');
- end;
- procedure TtpMainData.TrialPeg;
- var
- sPeg: string;
- begin
- if InputTrialPeg(sPeg) then
- begin
- PegFilter.Filter(sPeg);
- FPartTrial.FilterPegs(PegFilter, BaseGatherData.Pegs);
- end;
- end;
- end.
|