蔡德晨 5 år sedan
förälder
incheckning
b12d3cc86d

+ 40 - 48
src/main/java/com/jeeplus/modules/sg/overheadline/service/OverheadLineService.java

@@ -974,53 +974,48 @@ public List<JkxlDetailFee> findList(String id,String type){
             itemService.save(wbsItem);
         }
         //读取表格
-        ImportExcel total = new ImportExcel(file,1,new String[]{BashInfo.SHEET_HZB,BashInfo.SHEET_HZB1,BashInfo.SHEET_HZB2},true );  //工程项目竣工结算汇总表
+        //读取表格
+        ImportExcel total = new ImportExcel(file,1,new String[]{BashInfo.SHEET_HZB,BashInfo.SHEET_HZB1,BashInfo.SHEET_HZB2,BashInfo.SHEET_HZB3},true );  //工程项目竣工结算汇总表
         ImportExcel csqd = new ImportExcel(file,1,new String[]{BashInfo.SHEET_CSB,BashInfo.SHEET_CSB1},true);  // 措施项目清单计价表(一)
         ImportExcel csqd2 = new ImportExcel(file,1,BashInfo.SHEET_CSB2,false);  // 措施项目清单计价表(二)
         ImportExcel gf = new ImportExcel(file,1,BashInfo.SHEET_GFQD,true);  //规费项目清单计价表
         ImportExcel qt = new ImportExcel(file,1,BashInfo.SHEET_QTFY,true);  //其他项目清单计价表
-//        ImportExcel fbrcg = new ImportExcel(file,1,new String[]{BashInfo.SHEET_FBRCG,BashInfo.SHEET_FBRCG1,BashInfo.SHEET_FBRCG2,BashInfo.SHEET_ZBRCG,BashInfo.SHEET_ZBRCG1},true);   //发包人采购材料设备计价表
         ImportExcel cbrsb = new ImportExcel(file,1,new String[]{BashInfo.SHEET_TBRCG,BashInfo.SHEET_CBRCG},false);//承包人采购设备计价表
-        List<Settlement> settlementList =  SettementUtil.getComparison(total);
-        double cbperson = 0.0;
-        double word1total =  ExcelUtil.getDouble(csqd,BashInfo.QT_HJ,0,4);//获取措施费清单计价表一
-        double word2total=0.0;
-        double csFees2 = ExcelUtil.getDouble(total,BashInfo.CSXM2,1,2);//措施费二
-        double otherDlTotal =  ExcelUtil.getDouble(qt,BashInfo.QT_HJ,0,2);//获取其他项目费合计
-        //规费
-        double jzGf = BashInfo.getJzGf(gf);
-        double azGf = BashInfo.getAzGf(gf);
-//        double feesDlCount =  ExcelUtil.getDouble(gf,BashInfo.QT_HJ,0,4);//获取规费合计
-        double feesDlCount =  jzGf+azGf;//获取规费合计
-        int[] comlumn2 = {12,15};//定义所要数组
-        List<JkxlAdjustFee> wsbFees = BashInfo.getWsbFee(total);
-        double wsbfee = 0.00;
-        double jzgc = ExcelUtil.getDouble(total,BashInfo.HZ_JZGC,1,2);//汇总表建筑金额
-        double azgc = ExcelUtil.getDouble(total,BashInfo.HZ_AZGC,1,2);//汇总表安装金额
+        double jzgc = ExcelUtil.getDouble(total,new String[]{BashInfo.HZ_JZGC,BashInfo.HZ_JZGCF},1,2);//汇总表建筑金额
+        double azgc = ExcelUtil.getDouble(total,new String[]{BashInfo.HZ_AZGC,BashInfo.HZ_AZGCF},1,2);//汇总表安装金额
         double texRate = ExcelUtil.getTexRate(total); //获取税率
         double fbfxFee = ExcelUtil.getDouble(total,BashInfo.JS_FBFX,1,2);  //分部分项工程费
-//        double jzcsRate = BashInfo.getJzRate(csqd); //获取建筑措施费率
-        double[] azcsRate = BashInfo.getAzRate(csqd); //获取安装措施费率
-        double[] jzgfRate = BashInfo.getJzGfRate(gf);  //获取建筑规费率
-//        double[] azgfRate = BashInfo.getAzGfRate(gf);  //获取安装规费率
-        double[] qtFees = BashInfo.getQtFees(qt);  //获取其他费用
+        double jsCs = ExcelUtil.getDouble(total,BashInfo.JS_CSXM,1,2);  //措施费合计
+        double csFees2 = ExcelUtil.getDouble(total,BashInfo.CSXM2,1,2);//措施费二合计
+        double jsGf = ExcelUtil.getDouble(total,BashInfo.JS_GF,1,2);  //规费合计
+        double textotal = ExcelUtil.getTex(total);   //税金合计
+        double btex = BashInfo.getBtex(total); //获取补税额
+        double fbrFees = ExcelUtil.getFbr(total); //获取发包人费
+        double cbrfee = ExcelUtil.getDouble(total,BashInfo.QT_CBRSB,1,2);//承包人采购设备费
         double gcjsFee = BashInfo.getGcjsFee(total);  //获取工程结算价
-        double tax = 0.00; //税金
-        double totalfee = 0.00;  //合计
-        //获取补税额
-        double btex = BashInfo.getBtex(total);
-        //承包人采购设备费
+        double jzcs = BashInfo.getJzCs(csqd); //建筑措施费合计
+        double azcs = BashInfo.getAzCs(csqd);  //安装措施费合计
+        double word1total = jzcs+azcs;//获取措施费清单计价表一
+        double azCsFee = BashInfo.getAzCsfee(csqd); //安装措施费除临时施工费和安全文明施工费合计
+        double[] csJzFee = BashInfo.getJzCsfee(csqd); //建筑措施费除临时施工费和安全文明施工费以及除两项合计
+        double[] azcsRate = BashInfo.getAzRate(csqd); //获取安装措施费率
+        double word2total=0.0; //清单表措施费二合计
+        if(ImportExcel.getSheet(csqd2) != null){
+            word2total = SubstationInfo.getCsJzFee(csqd2);
+        }
+        double cbperson = 0.0;  //承包人采购设备费
         if(ImportExcel.getSheet(cbrsb) != null){
-            cbperson = ExcelUtil.getDouble(cbrsb,BashInfo.QT_HJ,0,6);//投标人合计
+            cbperson = ExcelUtil.getDouble(cbrsb,BashInfo.QT_HJ,0,6);
         }
-        double cbrfee = ExcelUtil.getDouble(total,BashInfo.QT_CBRSB,1,2);
-        //安装措施费
-        double azCsFee = BashInfo.getAzCsfee(csqd);
-        double[] csJzFee = BashInfo.getJzCsfee(csqd); //建筑措施费
-        //获取结算表中基础数据
-        double jsCs = ExcelUtil.getDouble(total,BashInfo.JS_CSXM,1,2);
-        double jsGf = ExcelUtil.getDouble(total,BashInfo.JS_GF,1,2);
-        double textotal = ExcelUtil.getTex(total);
+        double otherDlTotal =  ExcelUtil.getDouble(qt,BashInfo.QT_HJ,0,2);//获取其他项目费合计
+        double[] qtFees = BashInfo.getQtFees(qt);  //获取场地租用费和招标代理费
+        double feesDlCount =  ExcelUtil.getDouble(gf,BashInfo.QT_HJ,0,4);//获取规费合计
+        double azGf = BashInfo.getAzGf(gf); //获取安装规费
+        double[] jzgfRate = BashInfo.getJzGfRate(gf);  //获取建筑规费率
+        List<Settlement> settlementList =  SettementUtil.getComparison(total);
+        int[] comlumn2 = {12,15};//定义所要数组
+        double tax = 0.00; //税金
+        double totalfee = 0.00;  //合计金额
         List<JkxlDetailFee> list = new ArrayList<>();
         if(jzgc !=0.00 && azgc == 0.00){
             ImportExcel jzqd = new ImportExcel(file,1,BashInfo.SHEET_JZFBFXJJ,true);  //建筑分部分项工程量清单计价表
@@ -1177,8 +1172,6 @@ public List<JkxlDetailFee> findList(String id,String type){
             double[] rgAzFees = ExcelUtil.getDoubleArray(azhz,BashInfo.TXHZ_AZ,1,4);  //获取安装人工费
             double[][] originalJzFees = ExcelUtil.getDoubleArrays(jzqd,BashInfo.TXMX_JZ,2, new int[]{13, 14, 15, 17}); //获取建筑原始费用
             double[][] originalAzFees = ExcelUtil.getDoubleArrays(azqd,BashInfo.TXMX_AZ,2, new int[]{13, 14, 15, 17}); //获取安装原始费用
-//            double fbrJzFee = ExcelUtil.getDouble(fbrcg,BashInfo.QT_XJ,0,6); //建筑发包人采购计价表合计金额
-////            double fbrAzFee = BashInfo.getFbrAzFee(fbrcg);  //安装发包人采购计价表合计金额
             double fbrJzFee = ExcelUtil.getDouble(jzqd,SubstationInfo.JZMX_BJZ,2,15);
             double fbrAzFee = ExcelUtil.getDouble(azqd,SubstationInfo.AZMX_BDZAZ,2,15);
             double zjgcJzTotal = ExcelUtil.getDouble(jzhz,BashInfo.QT_HJ,0,3);//建筑直接工程费合计
@@ -1250,15 +1243,12 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double rgAzFee = rgAzFees[i];//人工费
                 double originalRgCost = originalAzFees[i][0];// 原人工费
                 double rgRate = originalRgCost/rgAzTotal; //比例
-//                double rgCost = originalRgCost/(1+tcRate[0]);  //后人工费
                 double originalCbrCost = originalAzFees[i][1];  //原承包人采购
                 double originalFbrCost = originalAzFees[i][2];  //原发包人采购
                 double originalJxrCost = originalAzFees[i][3];   //原机械费
-//                double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+(rgAzFee/(1+tcRate[0])*azcsRate[1]); //措施费一(1)
                 double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+azCsFee*rgRate; //措施费一(1)
                 double measuresFee2 = 0.00;   //措施费一(2)
                 double measuresFee3 = csFees2*originalTotalCost/fbfxFee; //措施费二
-//                double fees = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.2;  //规费
                 double fees = rgRate*azGf;  //规费
                 if(f){
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
@@ -1269,7 +1259,6 @@ public List<JkxlDetailFee> findList(String id,String type){
                 }
                 jkxlDetailFee.setOriginalTotalCost(originalTotalCost);
                 jkxlDetailFee.setOriginalRgCost(originalRgCost);
-//                jkxlDetailFee.setRgCost(rgCost);
                 jkxlDetailFee.setOriginalCbrCost(originalCbrCost);
                 jkxlDetailFee.setOriginalFbrCost(originalFbrCost);
                 jkxlDetailFee.setOriginalJxCost(originalJxrCost);
@@ -1335,7 +1324,6 @@ public List<JkxlDetailFee> findList(String id,String type){
         double cstotal2 = 0.00;
         double cstotal3 = 0.00;
         double gftotal = 0.00;
-//        double textotal = 0.00;
         double zjgcTotal = 0.00;
         for(JkxlDetailFee jkxlDetailFee2 :list){
             cstotal1 += jkxlDetailFee2.getMeasuresFee1();
@@ -1375,10 +1363,10 @@ public List<JkxlDetailFee> findList(String id,String type){
             jkxlDetailFee.setTotalFee(jkxlDetailFee.getTotalFee()+tex);
 
         }
-        //计算差额
-        for(JkxlDetailFee jkxlDetailFee : list){
-            tz += jkxlDetailFee.getTotalFee();
-        }
+
+        //获取未识别费用
+        List<JkxlAdjustFee> wsbFees = BashInfo.getWsbFee(total);
+        double wsbfee = 0.00;
         if(wsbFees != null && wsbFees.size()>0){
             for(JkxlAdjustFee jkxlAdjustFee : wsbFees){
                 jkxlAdjustFee.setId(id);
@@ -1390,6 +1378,10 @@ public List<JkxlDetailFee> findList(String id,String type){
                 wsbfee += fee;
             }
         }
+        //计算差额
+        for(JkxlDetailFee jkxlDetailFee : list){
+            tz += jkxlDetailFee.getTotalFee();
+        }
         double gxFee = Math.abs(gcjsFee-tz-qtFees[0]-qtFees[1]-wsbfee);
         //将其他费用存入集合
         JkxlDetailFee jkxlDetailFee1 = new JkxlDetailFee();

+ 1 - 0
src/main/java/com/jeeplus/modules/sg/overheadline/util/BashInfo.java

@@ -140,6 +140,7 @@ public class BashInfo {
 
     public static final String JS_FBFX="分部分项工程费";
     public static final String JS_CBRF="承包人采购设备费";
+    public static final String JS_TBRF="投标人采购设备费";
     public static final String JS_CSXM="措施项目费";
     public static final String JS_QTXM="其他项目费";
     public static final String JS_GF="规费";

+ 57 - 29
src/main/java/com/jeeplus/modules/sg/substation/service/SubstationService.java

@@ -56,6 +56,7 @@ public class SubstationService {
         ImportExcel tbrsb = new ImportExcel(file,1,new String[]{BashInfo.SHEET_CBRCG,BashInfo.SHEET_TBRCG},false);//投标人采购设备计价表
         double jzgc = ExcelUtil.getDouble(total,new String[]{BashInfo.HZ_JZGC,BashInfo.HZ_JZGCF},1,2);//汇总表建筑金额
         double azgc = ExcelUtil.getDouble(total,new String[]{BashInfo.HZ_AZGC,BashInfo.HZ_AZGCF},1,2);//汇总表安装金额
+        double cbrFee = ExcelUtil.getDouble(total,new String[]{BashInfo.JS_CBRF,BashInfo.JS_TBRF},1,2);//汇总表安装金额
         double jsCs = ExcelUtil.getDouble(total,BashInfo.JS_CSXM,1,2); //获取措施费合计
         double jsGf = ExcelUtil.getDouble(total,BashInfo.JS_GF,1,2);  //获取规费合计
         double texRate = ExcelUtil.getTexRate(total); //获取税率
@@ -83,7 +84,8 @@ public class SubstationService {
         if(ImportExcel.getSheet(tbrsb) != null){
             tbrJzFee = BashInfo.getFbrJzFee(tbrsb);
             tbrAzFee = BashInfo.getFbrAzFee(tbrsb);
-            cbperson = ExcelUtil.getDouble(tbrsb,BashInfo.QT_HJ,0,6);
+//            cbperson = ExcelUtil.getDouble(tbrsb,BashInfo.QT_HJ,0,6);
+            cbperson = tbrJzFee+tbrAzFee;
         }
         double jzGf = BashInfo.getJzGf(gf);//建筑规费合计
         double azGf = BashInfo.getAzGf(gf); //安装规费合计
@@ -201,7 +203,6 @@ public class SubstationService {
                  double zjgcJzFee = jkxlDetailFee.getZjgcFee();
                  double rateCs = zjgcJzFee/zjgcJzTotal;  //措施费分摊比例
                  double rateQt = zjgcJzFee/zjgcTotal;    //其他费用分摊比例
-//                 jkxlDetailFee.setRgCost(jkxlDetailFee.getOriginalRgCost()/(1+tcRate[0]));
                  double measuresFee1 = (zjgcJzFee -(originalFbrCost/(1+jxslJz)*jxslJz))*jzcsRate; //措施费一(1)
                  double measuresFee2 = 0.00;   //措施费一(2)
                  double measuresFee3 = csJzFee*rateCs; //措施费二
@@ -224,12 +225,13 @@ public class SubstationService {
                  jkxlDetailFee.setId(id);
             }
             //建筑部门求和
-            JkxlDetailFee jzDetail = jzTotal.get(0);
-            double jztotalFee =  jzDetail.getTotalFee()+tbrJzFee*(1+texRate);
-            double jztex =  jzDetail.getTex()+tbrJzFee*texRate;
-            jzDetail.setTotalFee(jztotalFee);
-            jzDetail.setTex(jztex);
-            jzTotal.set(0,jzDetail);
+//            JkxlDetailFee jzDetail = jzTotal.get(0);
+//            double jztotalFee =  jzDetail.getTotalFee()+tbrJzFee*(1+texRate);
+//            double jztex =  jzDetail.getTex()+tbrJzFee*texRate;
+//            jzDetail.setTotalFee(jztotalFee);
+//            jzDetail.setTex(jztex);
+//            jzTotal.set(0,jzDetail);
+
 
             for(JkxlDetailFee jkxlDetailFee:azTotal){
                 double originalTotalCost = jkxlDetailFee.getOriginalTotalCost();
@@ -250,7 +252,7 @@ public class SubstationService {
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
                 } else {
-                    tax = (originalTotalCost + measuresFee1 + measuresFee2 + measuresFee3 + fees + otherFee) * texRate; //税金
+                    tax = (originalTotalCost +measuresFee1 + measuresFee2 + measuresFee3 + fees + otherFee) * texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
                 }
                 jkxlDetailFee.setMeasuresFee1(measuresFee1);
@@ -263,14 +265,23 @@ public class SubstationService {
                 jkxlDetailFee.setId(id);
             }
             //安装求和
-            JkxlDetailFee azDetail = azTotal.get(0);
-            double aztotalFee =  azDetail.getTotalFee()+tbrAzFee*(1+texRate);
-            azDetail.setTotalFee(aztotalFee);
-            azTotal.set(0,azDetail);
+//            JkxlDetailFee azDetail = azTotal.get(0);
+//            double aztotalFee =  azDetail.getTotalFee()+tbrAzFee*(1+texRate);
+//            azDetail.setTotalFee(aztotalFee);
+//            azTotal.set(0,azDetail);
+
+            //分摊承包人采购设备费
+            if(cbrFee != 0.00){
+                for (JkxlDetailFee jkxlDetailFee : azTotal) {
+                    double total1 = jkxlDetailFee.getTotalFee();
+                    double rate = jkxlDetailFee.getOriginalTotalCost()/ built2Total;
+                    double tz = cbrFee*rate;
+                    jkxlDetailFee.setTotalFee(total1+tz);
+                }
+            }
 
             //补税
             double texTotal = jzTotal.get(0).getTex()+azTotal.get(0).getTex();//税合计金额
-
             //其他费用补税
             if(qtFees[0]+qtFees[1] != 0.00) {
                 for (JkxlDetailFee jkxlDetailFee : jzTotal) {
@@ -485,7 +496,7 @@ public class SubstationService {
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
                 } else {
-                    tax = (originalTotalCost + measuresFee1 + measuresFee2 + measuresFee3 + fees + otherFee) * texRate; //税金
+                    tax = (originalTotalCost+measuresFee1 + measuresFee2 + measuresFee3 + fees + otherFee) * texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
                 }
                 jkxlDetailFee.setMeasuresFee1(measuresFee1);
@@ -498,12 +509,22 @@ public class SubstationService {
                 jkxlDetailFee.setId(id);
             }
             //建筑部门求和
-            JkxlDetailFee jzDetail = jzTotal.get(0);
-            double jztotalFee =  jzDetail.getTotalFee()+tbrJzFee*(1+texRate);
-            double jztex =  jzDetail.getTex()+tbrJzFee*texRate;
-            jzDetail.setTotalFee(jztotalFee);
-            jzDetail.setTex(jztex);
-            jzTotal.set(0,jzDetail);
+//            JkxlDetailFee jzDetail = jzTotal.get(0);
+//            double jztotalFee =  jzDetail.getTotalFee()+tbrJzFee*(1+texRate);
+//            double jztex =  jzDetail.getTex()+tbrJzFee*texRate;
+//            jzDetail.setTotalFee(jztotalFee);
+//            jzDetail.setTex(jztex);
+//            jzTotal.set(0,jzDetail);
+
+            //分摊承包人采购设备费
+            if(cbrFee != 0.00){
+                for (JkxlDetailFee jkxlDetailFee : jzTotal) {
+                    double total1 = jkxlDetailFee.getTotalFee();
+                    double rate = jkxlDetailFee.getOriginalTotalCost()/ built1Total;
+                    double tz = cbrFee*rate;
+                    jkxlDetailFee.setTotalFee(total1+tz);
+                }
+            }
 
 
             double jztexTotal = jzTotal.get(0).getTex();
@@ -577,7 +598,6 @@ public class SubstationService {
 
             }
             double tz = jzTotal.get(0).getTotalFee();//总合计金额
-
             if(wsbFees != null && wsbFees.size()>0){
                 for(JkxlAdjustFee jkxlAdjustFee : wsbFees){
                     jkxlAdjustFee.setId(id);
@@ -657,7 +677,6 @@ public class SubstationService {
             azTotal.add(azdx);
             azTotal.addAll(zwdy);
             azTotal.addAll(zwtx);
-            boolean flagAz = SubstationInfo.getFlag(azTotal);
             List<Settlement> settlementBdzs = SettementUtil.getDLComparison(settlementsBdz,builtTotal,division,word1total,word2total,otherBdzTotal,feesBdzCount,cbperson);
             settlementService.save(settlementBdzs,id);
             Boolean f = SettementUtil.getFlag;
@@ -680,7 +699,7 @@ public class SubstationService {
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
                 } else {
-                    tax = (originalTotalCost + measuresFee1 + measuresFee2 + measuresFee3 + fees + otherFee) * texRate; //税金
+                    tax = (originalTotalCost +measuresFee1 + measuresFee2 + measuresFee3 + fees + otherFee) * texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
                 }
                 jkxlDetailFee.setMeasuresFee1(measuresFee1);
@@ -693,10 +712,20 @@ public class SubstationService {
                 jkxlDetailFee.setId(id);
             }
             //安装求和
-            JkxlDetailFee azDetail = azTotal.get(0);
-            double aztotalFee =  azDetail.getTotalFee()+tbrAzFee*(1+texRate);
-            azDetail.setTotalFee(aztotalFee);
-            azTotal.set(0,azDetail);
+//            JkxlDetailFee azDetail = azTotal.get(0);
+//            double aztotalFee =  azDetail.getTotalFee()+tbrAzFee*(1+texRate);
+//            azDetail.setTotalFee(aztotalFee);
+//            azTotal.set(0,azDetail);
+
+            //分摊承包人采购设备费
+            if(cbrFee != 0.00){
+                for (JkxlDetailFee jkxlDetailFee : azTotal) {
+                    double total1 = jkxlDetailFee.getTotalFee();
+                    double rate = jkxlDetailFee.getOriginalTotalCost()/ built2Total;
+                    double tz = cbrFee*rate;
+                    jkxlDetailFee.setTotalFee(total1+tz);
+                }
+            }
 
             //补税
             double aztexTotal = azTotal.get(0).getTex();
@@ -737,7 +766,6 @@ public class SubstationService {
                 if(gftotal != 0.00) {
                     gfRate = jkxlDetailFee1.getFees() / gftotal;
                 }
-                double ftRate = jkxlDetailFee1.getZjgcFee()/zjgcAzTotal;
                 double csft = (jsCs-(cstotal1+cstotal2+cstotal3))*csftRate;
                 double gfft = (jsGf-gftotal)*gfRate;
                 double texft = (csft+gfft)*texRate;