فهرست منبع

Merge branch '3.1.3.3' of http://192.168.1.12:3000/maixinrong/measure into 3.1.3.3

builder 9 سال پیش
والد
کامیت
ba552804f5
6فایلهای تغییر یافته به همراه75 افزوده شده و 116 حذف شده
  1. 3 1
      DataModules/DealBillsDm.dfm
  2. 66 111
      DataModules/SearchDm.pas
  3. 0 1
      DataModules/StageDm.pas
  4. 1 1
      Units/Connections.pas
  5. 4 2
      Units/DataBaseTables.pas
  6. 1 0
      Units/ExcelImport.pas

+ 3 - 1
DataModules/DealBillsDm.dfm

@@ -33,7 +33,9 @@ object DealBillsData: TDealBillsData
       0F4E65656450726F636573734E616D65090001044E616D65060A546F74616C50
       72696365094669656C644E616D65060A546F74616C5072696365084461746154
       7970650206084461746153697A6502080549734B6579080F4E65656450726F63
-      6573734E616D65090000}
+      6573734E616D65090001044E616D650609496E646578436F6465094669656C64
+      4E616D650609496E646578436F64650844617461547970650201084461746153
+      697A6502320549734B6579080F4E65656450726F636573734E616D65090000}
   end
   object sdvDealBills: TsdDataView
     Active = False

+ 66 - 111
DataModules/SearchDm.pas

@@ -3,7 +3,7 @@ unit SearchDm;
 interface
 
 uses
-  SysUtils, Classes, DB, DBClient, sdIDTree, sdDB;
+  SysUtils, Classes, DB, DBClient, sdIDTree, sdDB, BillsTree;
 
 type
   TLocateType = (ltCompile, ltMeasure);
@@ -25,10 +25,7 @@ type
   private
     FProjectData: TObject;
 
-    procedure BeginSearch;
-    procedure EndSearch;
-
-    procedure AddSearchResult(Rec, StageRec: TsdDataRecord);
+    procedure AddSearchResult(ANode: TBillsIDTreeNode);
   public
     constructor Create(AProjectData: TObject);
     destructor Destroy; override;
@@ -45,36 +42,37 @@ type
 implementation
 
 uses
-  ProjectData, BillsMeasureDm, BillsCompileDm, Math, ZhAPI;
+  ProjectData, BillsMeasureDm, BillsCompileDm, Math, ZhAPI,
+  UtilMethods;
 
 {$R *.dfm}
 
 { TSearchData }
 
-procedure TSearchData.AddSearchResult(Rec, StageRec: TsdDataRecord);
+procedure TSearchData.AddSearchResult(ANode: TBillsIDTreeNode);
 begin
+  if not Assigned(ANode) then Exit;
+
   cdsSearch.Append;
-  cdsSearchID.AsInteger := Rec.ValueByName('ID').AsInteger;
-  cdsSearchCode.AsString := Rec.ValueByName('Code').AsString;
-  cdsSearchB_Code.AsString := Rec.ValueByName('B_Code').AsString;
-  cdsSearchName.AsString := Rec.ValueByName('Name').AsString;
-  cdsSearchUnits.AsString := Rec.ValueByName('Units').AsString;
-  cdsSearchPrice.AsFloat := Rec.ValueByName('Price').AsFloat;
-  cdsSearchQuantity.AsString := Rec.ValueByName('Quantity').AsString;
-  if Assigned(StageRec) then
-    cdsSearchCurQcQuantity.AsFloat := StageRec.ValueByName('QcQuantity').AsFloat;
-  cdsSearchAddGatherQuantity.AsString := Rec.ValueByName('AddGatherQuantity').AsString;
-  if cdsSearchQuantity.AsFloat <> 0 then
-    cdsSearchCompleteRate.AsFloat := advRoundTo(
-        Rec.ValueByName('AddDealQuantity').AsFloat/cdsSearchQuantity.AsFloat*100);
+  with ANode do
+  begin
+    cdsSearchID.AsInteger := Rec.ValueByName('ID').AsInteger;
+    cdsSearchCode.AsString := Rec.ValueByName('Code').AsString;
+    cdsSearchB_Code.AsString := Rec.ValueByName('B_Code').AsString;
+    cdsSearchName.AsString := Rec.ValueByName('Name').AsString;
+    cdsSearchUnits.AsString := Rec.ValueByName('Units').AsString;
+    cdsSearchPrice.AsFloat := Rec.ValueByName('Price').AsFloat;
+    cdsSearchQuantity.AsString := Rec.ValueByName('Quantity').AsString;
+    if Assigned(StageRec) then
+      cdsSearchCurQcQuantity.AsFloat := StageRec.ValueByName('QcQuantity').AsFloat;
+    cdsSearchAddGatherQuantity.AsString := Rec.ValueByName('AddGatherQuantity').AsString;
+    if cdsSearchQuantity.AsFloat <> 0 then
+      cdsSearchCompleteRate.AsFloat := advRoundTo(
+          Rec.ValueByName('AddDealQuantity').AsFloat/cdsSearchQuantity.AsFloat*100);
+  end;
   cdsSearch.Post;
 end;
 
-procedure TSearchData.BeginSearch;
-begin
-  cdsSearch.DisableControls;
-end;
-
 constructor TSearchData.Create(AProjectData: TObject);
 begin
   inherited Create(nil);
@@ -86,11 +84,6 @@ begin
   inherited;
 end;
 
-procedure TSearchData.EndSearch;
-begin
-  cdsSearch.EnableControls;
-end;
-
 procedure TSearchData.LocateCurrent(ALocateType: TLocateType);
 
   procedure LocateCompile;
@@ -123,75 +116,50 @@ begin
 end;
 
 procedure TSearchData.SearchKeyword(const AKeyword: string);
-
-  procedure CheckKeyword(ANode: TsdIDTreeNode);
-  var
-    Rec, StageRec: TsdDataRecord;
-  begin
-    Rec := ANode.Rec;
-    StageRec := TProjectData(FProjectData).PhaseData.StageData.StageRecord(ANode.ID);
-    // Task 꼇꿴璂淃커쌘,쏭꿴璂묏넋좆헌데
-    if {(Pos(AKeyword, Rec.ValueByName('Code').AsString) > 0) or}
-        (Pos(AKeyword, Rec.ValueByName('B_Code').AsString) > 0) or
-        (Pos(AKeyword, Rec.ValueByName('Name').AsString) > 0) then
-    begin
-      AddSearchResult(Rec, StageRec);
-    end;
-  end;
-
-  procedure RecursiveSearchKeyword(ANode: TsdIDTreeNode);
-  begin
-    if not Assigned(ANode) then Exit;
-    CheckKeyword(ANode);
-    if ANode.HasChildren then
-      RecursiveSearchKeyword(ANode.FirstChild);
-    RecursiveSearchKeyword(ANode.NextSibling);
-  end;
-
+var
+  iNode: Integer;
+  vNode: TBillsIDTreeNode;
 begin
   if AKeyword = '' then Exit;
-  BeginSearch;
+
+  cdsSearch.DisableControls;
   try
     cdsSearch.EmptyDataSet;
     with TProjectData(FProjectData).BillsMeasureData do
-      RecursiveSearchKeyword(BillsMeasureTree.FirstNode);
+    begin
+      for iNode := 0 to BillsMeasureTree.Count - 1 do
+      begin
+        vNode := TBillsIDTreeNode(BillsMeasureTree.Items[iNode]);
+        if (Pos(AKeyword, vNode.Rec.B_Code.AsString) > 0) or
+            (Pos(AKeyword, vNode.Rec.Name.AsString) > 0) then
+          AddSearchResult(vNode);
+      end;
+    end;
   finally
-    EndSearch;
+    cdsSearch.EnableControls;
   end;
 end;
 
 procedure TSearchData.SearchOverRange;
-
-  procedure CheckOverRange(ANode: TsdIDTreeNode);
-  var
-    Rec, StageRec: TsdDataRecord;
-  begin
-    Rec := ANode.Rec;
-    StageRec := TProjectData(FProjectData).PhaseData.StageData.StageRecord(ANode.ID);
-    if Rec.ValueByName('Quantity').AsFloat < Rec.ValueByName('AddDealQuantity').AsFloat then
-    begin
-      AddSearchResult(Rec, StageRec)
-    end;
-  end;
-
-  procedure RecursiveSearchOverRange(ANode: TsdIDTreeNode);
-  begin
-    if not Assigned(ANode) then Exit;
-    if ANode.HasChildren then
-      RecursiveSearchOverRange(ANode.FirstChild)
-    else
-      CheckOverRange(ANode);
-    RecursiveSearchOverRange(ANode.NextSibling);
-  end;
-
+var
+  i: Integer;
+  vNode: TBillsIDTreeNode;
 begin
-  BeginSearch;
+  cdsSearch.DisableControls;
   try
     cdsSearch.EmptyDataSet;
     with TProjectData(FProjectData).BillsMeasureData do
-      RecursiveSearchOverRange(BillsMeasureTree.FirstNode);
+    begin
+      for i := 0 to BillsMeasureTree.Count - 1 do
+      begin
+        vNode := TBillsIDTreeNode(BillsMeasureTree.Items[i]);
+        if not vNode.HasChildren then
+          if vNode.Rec.Quantity.AsFloat < vNode.Rec.AddDealQuantity.AsFloat then
+            AddSearchResult(vNode);
+      end;
+    end;
   finally
-    EndSearch;
+    cdsSearch.EnableControls;
   end;
 end;
 
@@ -205,38 +173,25 @@ begin
 end;
 
 procedure TSearchData.SearchBelowRange;
-
-  procedure CheckBelowRange(ANode: TsdIDTreeNode);
-  var
-    Rec, StageRec: TsdDataRecord;
-  begin
-    Rec := ANode.Rec;
-    if Rec.ValueByName('Quantity').AsFloat = 0 then Exit;
-    StageRec := TProjectData(FProjectData).PhaseData.StageData.StageRecord(ANode.ID);
-    if Rec.ValueByName('Quantity').AsFloat > Rec.ValueByName('AddDealQuantity').AsFloat then
-    begin
-      AddSearchResult(Rec, StageRec)
-    end;
-  end;
-
-  procedure RecursiveSearchBelowRange(ANode: TsdIDTreeNode);
-  begin
-    if not Assigned(ANode) then Exit;
-    if ANode.HasChildren then
-      RecursiveSearchBelowRange(ANode.FirstChild)
-    else
-      CheckBelowRange(ANode);
-    RecursiveSearchBelowRange(ANode.NextSibling);
-  end;
-
+var
+  i: Integer;
+  vNode: TBillsIDTreeNode;
 begin
-  BeginSearch;
+  cdsSearch.DisableControls;
   try
     cdsSearch.EmptyDataSet;
     with TProjectData(FProjectData).BillsMeasureData do
-      RecursiveSearchBelowRange(BillsMeasureTree.FirstNode);
+    begin
+      for i := 0 to BillsMeasureTree.Count - 1 do
+      begin
+        vNode := TBillsIDTreeNode(BillsMeasureTree.Items[i]);
+        if not vNode.HasChildren then
+          if vNode.Rec.Quantity.AsFloat > vNode.Rec.AddDealQuantity.AsFloat then
+            AddSearchResult(vNode);
+      end;
+    end;
   finally
-    EndSearch;
+    cdsSearch.EnableControls;
   end;
 end;
 

+ 0 - 1
DataModules/StageDm.pas

@@ -366,7 +366,6 @@ end;
 
 procedure TStageData.Save;
 begin
-  sddStage.SaveToFile('E:\1.xml');
   sddStage.Save;
 end;
 

+ 1 - 1
Units/Connections.pas

@@ -8,7 +8,7 @@ uses
 const
   ProductName = 'Measure';
   EmptyFileVersion = '1.0.0.0';
-  FileVersion = '1.0.0.1';
+  FileVersion = '1.0.0.2';
   EncryptVersion = 'Auto1.0';
 
 type

+ 4 - 2
Units/DataBaseTables.pas

@@ -387,7 +387,7 @@ const
 
   {푯獨북谿헌데--묏넋좆헌데}
   SDealBills = 'DealBills';
-  tdDealBills: array [0..6] of TScFieldDef =(
+  tdDealBills: array [0..7] of TScFieldDef =(
     (FieldName: 'ID'; FieldType: ftInteger; Size: 0; NotNull: True; PrimaryKey: True; ForceUpdate: False),
     (FieldName: 'B_Code'; FieldType: ftString; Size: 50; NotNull: False; PrimaryKey: False; ForceUpdate: False),
     (FieldName: 'Name'; FieldType: ftString; Size: 200; NotNull: False; PrimaryKey: False; ForceUpdate: False),
@@ -397,7 +397,9 @@ const
     // 푯獨북谿 -- 鑒좆
     (FieldName: 'Quantity'; FieldType: ftDouble; Size: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False),
     // 푯獨북谿 -- 쏜띨
-    (FieldName: 'TotalPrice'; FieldType: ftDouble; Size: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False)
+    (FieldName: 'TotalPrice'; FieldType: ftDouble; Size: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False),
+    // 긍뵀乞多
+    (FieldName: 'IndexCode'; FieldType: ftString; Size: 50; NotNull: False; PrimaryKey: False; ForceUpdate: False)
   );
 
   {딧뀌묏죕}

+ 1 - 0
Units/ExcelImport.pas

@@ -777,6 +777,7 @@ begin
       Rec := FProjectData.DealBillsData.sddDealBills.Add;
       Rec.ValueByName('ID').AsInteger := FBillsID;
       Rec.ValueByName('B_Code').AsString := sB_Code;
+      Rec.ValueByName('IndexCode').AsString := B_CodeToIndexCode(sB_Code);
       with ASheet.Cells do
       begin
         Rec.ValueByName('Name').AsString := VarToStrDef(GetValue(FNameCol, FCurRow), '');