Просмотр исходного кода

Merge branch '10.1.0' of http://112.74.42.187:26903/smartcost/smartcost into 10.1.0

JimiZhang 3 недель назад
Родитель
Сommit
83f3e880d9
1 измененных файлов с 44 добавлено и 9 удалено
  1. 44 9
      MainModule/Model/ScXMLPort.pas

+ 44 - 9
MainModule/Model/ScXMLPort.pas

@@ -246,8 +246,7 @@ type
         FZJHZB: TXmlNode;    // 造价汇总表
         FRCJHZ: TXmlNode;    // 人材机汇总
 
-      FGLGCHZ: TXmlNode;    // 公路工程汇总(浙江多一层:公路工程汇总标题)
-        FGLGCHZMX: TXmlNode;    // 公路工程汇总明细  1..n
+      FGLGCHZ: TXmlNode;    // 公路工程汇总(浙江多一层,该对象是指 公路工程汇总标题)
 
     procedure AddNodes; Override;
     procedure AddNodesForEveryProject(n: Integer); Override;
@@ -266,6 +265,7 @@ type
     procedure AddZJHZMX;
     procedure AddProjGLJs;
     procedure GetZCLB(ABillName: string; var ACapter, AType: string);
+    function GetDataCheckCode: string;  // 计算数据校验码
   public
 
   end;
@@ -3446,6 +3446,9 @@ begin
   // 修改投标总价
   if (FFileType = xftTB) then
     FZTBXX.Elements[0].AttributeValueByNameUTF8['投标总价'] := FloatToStr(FAllProjectsTotalPriceSum);
+
+  // 修改数据校验码
+  FGCXX.AttributeAddUTF8('数据校验码', GetDataCheckCode);
 end;
 
 procedure TZTBXMLPort.AddNodesForEveryProject(n: Integer);
@@ -3509,7 +3512,9 @@ begin
 
   if (self.Area = areaZheJiang) then
   begin
+    // 数据校验码:通过【投标信息】和【公路工程汇总】下的所有字段内容计算哈希值。这里超前取值,先占坑,后续覆盖。
     FGCXX.AttributeAddUTF8('数据校验码', 'AAAAA');
+    // 软件校验码:后续通过工具获取,这里先占坑,后续覆盖。
     FGCXX.AttributeAddUTF8('软件校验码', 'AAAAA');
   end;
 
@@ -3628,6 +3633,7 @@ end;
 procedure TZTBXMLPort.AddGLGCHZMX;
 var n: Integer;
   vSL: TStringList;
+  vGLGCHZMX: TXmlNode;
 begin
   vSL := TStringList.Create;
   try
@@ -3636,16 +3642,16 @@ begin
       vSL.Delimiter := ';';
       vSL.DelimitedText := FProjectInfoCacheList[n];
 
-      FGLGCHZMX := FGLGCHZ.NodeNewUTF8('公路工程汇总明细');
-      FGLGCHZMX.AttributeAddUTF8('序号', vSL.Values['No']);
-      FGLGCHZMX.AttributeAddUTF8('标段名称', vSL.Values['Name']);
+      vGLGCHZMX := FGLGCHZ.NodeNewUTF8('公路工程汇总明细');
+      vGLGCHZMX.AttributeAddUTF8('序号', vSL.Values['No']);
+      vGLGCHZMX.AttributeAddUTF8('标段名称', vSL.Values['Name']);
       if (FFileType = xftZB) then
-        FGLGCHZMX.AttributeAddUTF8('金额', '0')
+        vGLGCHZMX.AttributeAddUTF8('金额', '0')
       else
-        FGLGCHZMX.AttributeAddUTF8('金额', vSL.Values['TotalPrice']);
+        vGLGCHZMX.AttributeAddUTF8('金额', vSL.Values['TotalPrice']);
 
-      FGLGCHZMX.AttributeAddUTF8('唯一标识-Guid', vSL.Values['GUID']);
-      FGLGCHZMX.AttributeAddUTF8('备注', '');
+      vGLGCHZMX.AttributeAddUTF8('唯一标识-Guid', vSL.Values['GUID']);
+      vGLGCHZMX.AttributeAddUTF8('备注', '');
     end;
   finally
     vSL.Free;
@@ -4207,6 +4213,35 @@ begin
   end;
 end;
 
+
+// 通过【投标信息】和【公路工程汇总】下的所有字段内容计算哈希值。
+function TZTBXMLPort.GetDataCheckCode: string;
+var s: string;
+  vNode: TXmlNode;
+  i, n: Integer;
+begin
+  s := '';
+
+  vNode := FZTBXX.Elements[0];   // <投标信息>
+  for i := 0 to vNode.AttributeCount - 1 do
+  begin
+    s := s + Utf8ToAnsi(vNode.AttributeValue[i]);
+  end;
+
+  for n := 0 to FGLGCHZ.ElementCount - 1 do
+  begin
+    vNode := FGLGCHZ.Elements[n];   // <公路工程汇总明细>
+    for i := 0 to vNode.AttributeCount - 1 do
+    begin
+      s := s + Utf8ToAnsi(vNode.AttributeValue[i]);
+    end;
+  end;
+
+  s := EncryptStringByMD5(s);
+
+  Result := s;
+end;
+
 {TkmXMLPort}
 
 procedure TkmXMLPort.AddBQTable;