Browse Source

同步:根结点没有目标金额时,逼近会带来奇怪的结果。

chenshilong 4 years ago
parent
commit
fa4b65ac24
1 changed files with 7 additions and 2 deletions
  1. 7 2
      web/building_saas/main/js/models/calc_program.js

+ 7 - 2
web/building_saas/main/js/models/calc_program.js

@@ -3117,6 +3117,11 @@ class CalcProgram {
   // 反向调价逼近
   reverseTenderApproach(callback, tender) {
     let me = this;
+    function root0() {
+      return tender_obj.tenderTree.roots[0];
+    }
+
+    if (!root0().data.targetTotalFee) return; // 根结点没有指定目标金额时,逼近会带来莫名其妙的结果
 
     let G_DIGIT = 0.01; // 系数调整步距(0.1最终结果误差大。0.001目标金额与逼前金额差距大时无法有效逼近)
     let times = 300; // 逼近计算的极限次数。正常情况下“单位系数金额”列表中的结点耗尽即退出,这里指定轮数是最后保险阀,防止无限死循环。
@@ -3132,9 +3137,9 @@ class CalcProgram {
 
     // 取根结点的:调后金额跟目标金额差值,看还有多少误差需要处理。
     function getRootDiff() {
-      let root = tender_obj.tenderTree.roots[0];
       return (
-        root.data.feesIndex.common.tenderTotalFee - root.data.targetTotalFee
+        root0().data.feesIndex.common.tenderTotalFee -
+        root0().data.targetTotalFee
       ).toDecimal(3);
     }