蔡德晨 5 gadi atpakaļ
vecāks
revīzija
23dc3b6187

+ 20 - 0
src/main/java/com/jeeplus/common/utils/sg/ExcelUtil.java

@@ -178,4 +178,24 @@ public class ExcelUtil {
     }
 
 
+    /**
+     * 读取人工调差系数
+     */
+    public static double getRgRate(ImportExcel importExcel){
+        double rate = 0.00;
+        int lastRow = importExcel.getLastDataRowNum();
+        for(int i=2;i<lastRow;i++){
+            String st = importExcel.getValue(i+1,1);
+            if(st.contains("%")){
+                int a = st.indexOf("(");
+                int a1 = st.indexOf("%");
+                String st1 = st.substring(a+1,a1);
+                rate = Double.valueOf(st1)/100;
+                break;
+            }
+        }
+        return rate;
+    }
+
+
 }

+ 68 - 42
src/main/java/com/jeeplus/modules/sg/overheadline/service/OverheadLineService.java

@@ -387,7 +387,7 @@ public List<JkxlDetailFee> findList(String id,String type){
        ImportExcel total = new ImportExcel(file,1,BashInfo.SHEET_HZB );  //工程项目竣工结算汇总表
        ImportExcel gzhz = new ImportExcel(file,1,new String[]{BashInfo.SHEET_GCHZ,BashInfo.SHEET_GCHZ1} );   //架空线路工程费用汇总
        ImportExcel fbrcg = new ImportExcel(file,1,new String[]{BashInfo.SHEET_FBRCG,BashInfo.SHEET_FBRCG1,BashInfo.SHEET_FBRCG2});   //发包人采购材料设备计价表
-//        ImportExcel cbrcgsb = new ImportExcel(file,1,BashInfo.SHEET_FBRCG);   //发包人采购设备计价
+        ImportExcel zyrg = new ImportExcel(file,1,BashInfo.SHEET_ZYRG); //主要日工价格
         //数据核验数据
         List<Settlement> settlementList =  SettementUtil.getComparison(total);
        double builtTotal = ExcelUtil.getDouble(gzhz,BashInfo.QT_HJ,0,2);//获取架空线路工程费用汇总表 分部分项 合计
@@ -408,6 +408,7 @@ public List<JkxlDetailFee> findList(String id,String type){
        double[] zjgcFees = ExcelUtil.getDoubleArray(gzhz,BashInfo.HZ_ALL,1,3);  //获取直接工程费
        double[][] originalFees = ExcelUtil.getDoubleArrays(importExcel,BashInfo.MX_ALL,2, new int[]{13, 14, 15, 17}); //获取原始费用
        double texRate = ExcelUtil.getTexRate(total); //获取税率
+        double rgRate = ExcelUtil.getRgRate(zyrg);   //获取人工调差系数
        double totalFee = ExcelUtil.getDouble(importExcel,BashInfo.PROJECTNAME,2,12);  //获取架空线路合计金额
        double[] csRate = BashInfo.getCsRate(csqd); //获取措施费率
        double[] gfRate = BashInfo.getGfRate(gf);  //获取规费率
@@ -417,10 +418,13 @@ public List<JkxlDetailFee> findList(String id,String type){
        double zjgcTotal = ExcelUtil.getDouble(gzhz,BashInfo.QT_HJ,0,3);//直接工程费合计
        double[] aqwmFees = ExcelUtil.getDoubleArray(csqd,BashInfo.CS_AQWM,1, new int[]{3, 4});  //安全文明施工费
        double zg = zjgcTotal-(aqwmFees[1]/(aqwmFees[0]/100));
-       double jxsl = new BigDecimal(zg/(fbrFee-zg)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); //进项税率
+       double jxsl = zg/(fbrFee-zg); //进项税率
+       boolean flag = BashInfo.getFlag(originalTotalFees,zjgcFees);
        //将本体工程费用明细存入集合
        List<JkxlDetailFee> list = new ArrayList<>();
        for(int i=0;i<originalTotalFees.length;i++){
+           double tax = 0.00; //税金
+           double totalfee = 0.00;  //合计
            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
            double originalTotalCost = originalTotalFees[i]; //原合计
            double otherRate = originalTotalCost/totalFee;   //其他费用分摊比例
@@ -439,8 +443,14 @@ public List<JkxlDetailFee> findList(String id,String type){
            double measuresFee2 = rgCost*csRate[1];   //措施费一(1)
            double measuresFee3 = 0.00; //措施费二
            double fees = rgCost*gfRate[1]*1.12+rgCost*gfRate[0];  //规费
-           double tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
-           double totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
+           if(flag){
+                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; //税金
+                totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+           }
+            //合计
            jkxlDetailFee.setOriginalTotalCost(originalTotalCost);
            jkxlDetailFee.setOriginalRate(orRate);
            jkxlDetailFee.setOriginalRgCost(originalRgCost);
@@ -556,6 +566,8 @@ public List<JkxlDetailFee> findList(String id,String type){
         double[] azgfRate = BashInfo.getAzGfRate(gf);  //获取安装规费率
         double[] qtFees = BashInfo.getQtFees(qt);  //获取其他费用
         double gcjsFee = BashInfo.getGcjsFee(total);  //获取工程结算价
+        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);  //建筑分部分项工程量清单计价表
@@ -573,9 +585,9 @@ public List<JkxlDetailFee> findList(String id,String type){
             double fbrJzFee = ExcelUtil.getDouble(fbrcg,BashInfo.QT_XJ,0,6); //建筑发包人采购计价表合计金额
             double zjgcJzTotal = ExcelUtil.getDouble(jzhz,BashInfo.QT_HJ,0,3);//建筑直接工程费合计
             double[] aqwmJzFees = ExcelUtil.getDoubleArray(csqd,BashInfo.CS_AQWM,1, new int[]{3, 4});  //建筑安全文明施工费
-            double[] aqwmAzFees = BashInfo.getAqwfAzFee(csqd);  //建筑安全文明施工费
             double zgJz = zjgcJzTotal-(aqwmJzFees[1]/(aqwmJzFees[0]/100));
-            double jxslJz = new BigDecimal(zgJz/(fbrJzFee-zgJz)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); //建筑进项税率
+            double jxslJz = zgJz/(fbrJzFee-zgJz); //建筑进项税率
+            boolean flag = BashInfo.getFlag(originalTotalJzFees,zjgcJzFees);
             for(int i=0;i<originalTotalJzFees.length;i++){
                 JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
                 double originalTotalCost = originalTotalJzFees[i]; //原合计
@@ -595,8 +607,15 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double measuresFee2 = 0.00;   //措施费一(1)
                 double measuresFee3 = 0.00; //措施费二
                 double fees = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzgfRate[0]+(zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzgfRate[1]*0.2;  //规费
-                double tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee)*texRate; //税金
-                double totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+//                double tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee)*texRate; //税金
+//                double totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+                if(flag){
+                    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; //税金
+                    totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+                }
                 jkxlDetailFee.setOriginalTotalCost(originalTotalCost);
 //            jkxlDetailFee.setOriginalRate(orRate);
                 jkxlDetailFee.setOriginalRgCost(originalRgCost);
@@ -631,19 +650,21 @@ public List<JkxlDetailFee> findList(String id,String type){
             //数据核验并保存数据库
             settlementService.save(dlSettlements,id);
             double[] originalTotalAzFees = ExcelUtil.getDoubleArray(azhz,BashInfo.HZ_AZ,1,2); //获取安装合计费
-            double[][] zjgcAzFees = ExcelUtil.getDoubleArrays(azhz,BashInfo.HZ_AZ,1,new int[]{3,4});  //获取安装直接工程费和人工费
+            double[] zjgcAzFees = ExcelUtil.getDoubleArray(azhz,BashInfo.HZ_AZ,1,3);  //获取安装直接工程费
+            double[] rgFees = ExcelUtil.getDoubleArray(azhz,BashInfo.HZ_AZ,1,4);  //人工费
             double[][] originalAzFees = ExcelUtil.getDoubleArrays(azqd,BashInfo.MX_AZ,2, new int[]{13, 14, 15, 17}); //获取安装原始费用
             double fbrAzFee = BashInfo.getFbrAzFee(fbrcg);  //安装发包人采购计价表合计金额
             double zjgcAzTotal = ExcelUtil.getDouble(azhz,BashInfo.QT_HJ,0,3);//安装直接工程费合计
             double[] aqwmAzFees = BashInfo.getAqwfAzFee(csqd);  //建筑安全文明施工费
             double zgAz = zjgcAzTotal-(aqwmAzFees[1]/(aqwmAzFees[0]/100));
-            double jxslAz = new BigDecimal(zgAz/(fbrAzFee-zgAz)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); //安装进项税率
+            double jxslAz = zgAz/(fbrAzFee-zgAz); //安装进项税率
+            boolean flag = BashInfo.getFlag(originalTotalAzFees,zjgcAzFees);
             for(int i=0;i<originalTotalAzFees.length;i++){
                 JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
                 double originalTotalCost = originalTotalAzFees[i]; //原合计
                 double otherFee = qtFees[2]/fbfxFee*originalTotalCost;  //其他费用
-                double zjgcAzFee = zjgcAzFees[i][0];//直接工程费
-                double rgAzFee = zjgcAzFees[i][1];//人工费
+                double zjgcAzFee = zjgcAzFees[i];//直接工程费
+                double rgAzFee = rgFees[i];//人工费
                 double originalRgCost = originalAzFees[i][0];// 原人工费
                 double rgCost = originalRgCost/(1+tcRate[0]);  //后人工费
                 double originalCbrCost = originalAzFees[i][1];  //原承包人采购
@@ -656,8 +677,15 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double measuresFee2 = 0.00;   //措施费一(1)
                 double measuresFee3 = 0.00; //措施费二
                 double fees = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.2;  //规费
-                double tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee)*texRate; //税金
-                double totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+//                double tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee)*texRate; //税金
+//                double totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+                if(flag){
+                    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; //税金
+                    totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+                }
                 jkxlDetailFee.setOriginalTotalCost(originalTotalCost);
                 jkxlDetailFee.setOriginalRgCost(originalRgCost);
                 jkxlDetailFee.setRgCost(rgCost);
@@ -697,7 +725,8 @@ public List<JkxlDetailFee> findList(String id,String type){
             double[] originalTotalJzFees = ExcelUtil.getDoubleArray(jzhz,BashInfo.HZ_JZ,1,2); //获取建筑合计费
             double[] originalTotalAzFees = ExcelUtil.getDoubleArray(azhz,BashInfo.HZ_AZ,1,2); //获取安装合计费
             double[] zjgcJzFees = ExcelUtil.getDoubleArray(jzhz,BashInfo.HZ_JZ,1,3);  //获取建筑直接工程费
-            double[][] zjgcAzFees = ExcelUtil.getDoubleArrays(azhz,BashInfo.HZ_AZ,1,new int[]{3,4});  //获取安装直接工程费和人工费
+            double[] zjgcAzFees = ExcelUtil.getDoubleArray(azhz,BashInfo.HZ_AZ,1,3);  //获取安装直接工程费
+            double[] rgAzFees = ExcelUtil.getDoubleArray(azhz,BashInfo.HZ_AZ,1,4);  //获取安装人工费
             double[][] originalJzFees = ExcelUtil.getDoubleArrays(jzqd,BashInfo.MX_JZ,2, new int[]{13, 14, 15, 17}); //获取建筑原始费用
             double[][] originalAzFees = ExcelUtil.getDoubleArrays(azqd,BashInfo.MX_AZ,2, new int[]{13, 14, 15, 17}); //获取安装原始费用
             double fbrJzFee = ExcelUtil.getDouble(fbrcg,BashInfo.QT_XJ,0,6); //建筑发包人采购计价表合计金额
@@ -708,14 +737,14 @@ public List<JkxlDetailFee> findList(String id,String type){
             double[] aqwmAzFees = BashInfo.getAqwfAzFee(csqd);  //安装安全文明施工费
             double zgJz = zjgcJzTotal-(aqwmJzFees[1]/(aqwmJzFees[0]/100));
             double zgAz = zjgcAzTotal-(aqwmAzFees[1]/(aqwmAzFees[0]/100));
-            double jxslJz = new BigDecimal(zgJz/(fbrJzFee-zgJz)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); //建筑进项税率
-            double jxslAz = new BigDecimal(zgAz/(fbrAzFee-zgAz)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); //安装进项税率
+            double jxslJz = zgJz/(fbrJzFee-zgJz); //建筑进项税率
+            double jxslAz = zgAz/(fbrAzFee-zgAz); //安装进项税率
+            boolean flagJz = BashInfo.getFlag(originalTotalJzFees,zjgcJzFees);
+            boolean flagAz = BashInfo.getFlag(originalTotalAzFees,zjgcAzFees);
             //将本体工程费用明细存入集合
             for(int i=0;i<originalTotalJzFees.length;i++){
                 JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
                 double originalTotalCost = originalTotalJzFees[i]; //原合计
-//            double otherRate = originalTotalCost/totalFee;   //其他费用分摊比例
-//            double orRate = new BigDecimal(otherRate).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); //四舍五入
                 double otherFee = qtFees[2]/fbfxFee*originalTotalCost;  //其他费用
                 double zjgcJzFee = zjgcJzFees[i];//直接工程费
                 double originalRgCost = originalJzFees[i][0];// 原人工费
@@ -730,10 +759,16 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double measuresFee2 = 0.00;   //措施费一(1)
                 double measuresFee3 = 0.00; //措施费二
                 double fees = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzgfRate[0]+(zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzgfRate[1]*0.2;  //规费
-                double tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee)*texRate; //税金
-                double totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
+//                double tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee)*texRate; //税金
+//                double totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
+                if(flagJz && flagAz){
+                    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; //税金
+                    totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+                }
                 jkxlDetailFee.setOriginalTotalCost(originalTotalCost);
-//            jkxlDetailFee.setOriginalRate(orRate);
                 jkxlDetailFee.setOriginalRgCost(originalRgCost);
                 jkxlDetailFee.setRgCost(rgCost);
                 jkxlDetailFee.setOriginalCbrCost(originalCbrCost);
@@ -758,8 +793,8 @@ public List<JkxlDetailFee> findList(String id,String type){
                 JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
                 double originalTotalCost = originalTotalAzFees[i]; //原合计
                 double otherFee = qtFees[2]/fbfxFee*originalTotalCost;  //其他费用
-                double zjgcAzFee = zjgcAzFees[i][0];//直接工程费
-                double rgAzFee = zjgcAzFees[i][1];//人工费
+                double zjgcAzFee = zjgcAzFees[i];//直接工程费
+                double rgAzFee = rgAzFees[i];//人工费
                 double originalRgCost = originalAzFees[i][0];// 原人工费
                 double rgCost = originalRgCost/(1+tcRate[0]);  //后人工费
                 double originalCbrCost = originalAzFees[i][1];  //原承包人采购
@@ -772,8 +807,15 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double measuresFee2 = 0.00;   //措施费一(1)
                 double measuresFee3 = 0.00; //措施费二
                 double fees = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.2;  //规费
-                double tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee)*texRate; //税金
-                double totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
+//                double tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee)*texRate; //税金
+//                double totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
+                if(flagJz && flagAz){
+                    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; //税金
+                    totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+                }
                 jkxlDetailFee.setOriginalTotalCost(originalTotalCost);
                 jkxlDetailFee.setOriginalRgCost(originalRgCost);
                 jkxlDetailFee.setRgCost(rgCost);
@@ -812,10 +854,6 @@ public List<JkxlDetailFee> findList(String id,String type){
         jkxlDetailFee2.setId(id);
         list.add(jkxlDetailFee1);
         list.add(jkxlDetailFee2);
-        //保存费用明细
-//        for(JkxlDetailFee jkxlDetailFee:list){
-//            overheadLineMapper.save(jkxlDetailFee);
-//        }
         overheadLineMapper.saveList(list);
         //保存未识别费用
         JkxlAdjustFee jkxlAdjustFee = new JkxlAdjustFee();
@@ -823,23 +861,11 @@ public List<JkxlDetailFee> findList(String id,String type){
         jkxlAdjustFee.setType(BashInfo.KJYJSG);
         jkxlAdjustFee.setFee(wsbFees);
         feeAdjustService.save(jkxlAdjustFee);
-//        JkxlAdjustFee jkxlAdjustFee1 = new JkxlAdjustFee();
-//        jkxlAdjustFee1.setId(id);
-//        jkxlAdjustFee1.setType(BashInfo.KJJGCC);
-//        jkxlAdjustFee1.setFee(wsbFees[1]);
-//        feeAdjustService.save(jkxlAdjustFee1);
         JkxlAdjustFee jkxlAdjustFee2 = new JkxlAdjustFee();
         jkxlAdjustFee2.setId(id);
         jkxlAdjustFee2.setType(BashInfo.CE);
         jkxlAdjustFee2.setFee(gxFee);
         feeAdjustService.save(jkxlAdjustFee2);
-//        if(csFee!= 0.00){
-//            JkxlAdjustFee jkxlAdjustFee3 = new JkxlAdjustFee();
-//            jkxlAdjustFee3.setId(id);
-//            jkxlAdjustFee3.setType(BashInfo.HZ_CH);
-//            jkxlAdjustFee3.setFee(csFee);
-//            feeAdjustService.save(jkxlAdjustFee3);
-//        }
     }
 
 

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

@@ -1,6 +1,7 @@
 package com.jeeplus.modules.sg.overheadline.util;
 
 import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee;
 import com.jeeplus.modules.sg.overheadline.entity.Settlement;
 
 import java.util.ArrayList;
@@ -27,6 +28,7 @@ public class BashInfo {
     public static final String SHEET_AZFBFXJJ = "安装分部分项工程量清单计价表";
     public static final String SHEET_JZHZB = "电缆线路建筑工程费用汇总表";
     public static final String SHEET_HZHZB = "电缆线路安装工程费用汇总表";
+    public static final String SHEET_ZYRG = "主要工日价格表";
 
     public static final String JCGC = "1 基础工程";
     public static final String GTGC = "2 杆塔工程";
@@ -108,6 +110,8 @@ public class BashInfo {
     public static final String TZ_QTF = "其他费";
     public static final String TZ_GF = "规费";
     public static final String TZ_SF = "税费";
+    public static final String TZ_ZJGC = "直接工程费";
+
 
     public static final String JS_FBFX="分部分项工程费";
     public static final String JS_CBRF="承包人采购设备费";
@@ -353,6 +357,25 @@ public class BashInfo {
         return d;
     }
 
+
+    public static  boolean getFlag(double[] totalFee,double[] zjgcFee){
+        for(int i=0;i<totalFee.length;i++){
+            if(totalFee[i]<zjgcFee[i]){
+                return false;
+            }
+        }
+        return true;
+    }
+
+//    public static  boolean getFlag(double[] totalFee,double[] zjgcFee){
+//        for(int i=0;i<totalFee.length;i++){
+//            if(totalFee[i]<zjgcFee[i]){
+//                return true;
+//            }
+//        }
+//        return false;
+//    }
+
     /**
      * 获取发包人安装费
      * @param importExcel

+ 97 - 38
src/main/java/com/jeeplus/modules/sg/overheadline/web/OverheadLineController.java

@@ -95,6 +95,7 @@ public class OverheadLineController extends BaseController {
       String itemType = ftData.getItemType();   //项目类型
       double fee = ftData.getFee();
       double total = 0.00;
+      double rate = 0.00;
       try {
         List<JkxlDetailFee> jkxl = overheadLineService.getList(id,itemType);
         //获取本体部分费用明细
@@ -104,19 +105,51 @@ public class OverheadLineController extends BaseController {
             jkxlDetailFees.add(jkxlDetailFee);
           }
         }
+        double size = jkxlDetailFees.size();
+        //直接工程费
+        if(code.equals(BashInfo.TZ_ZJGC)){
+          for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
+            total += jkxlDetailFee.getZjgcFee();
+          }
+          for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
+            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+            jkxlDetailFee.setId(id);
+            jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
+            double rgFee = jkxlDetailFee1.getZjgcFee();
+            double totalFee = jkxlDetailFee1.getTotalFee();
+            if(total==0.00){
+              rate = size/1;
+            } else {
+              rate = rgFee/total;
+            }
+            double ftFee = rate*fee;
+            if(state.equals("1")){
+              double zFee = totalFee+ftFee;
+              jkxlDetailFee.setTotalFee(zFee);
+            }else {
+              double zFee = totalFee-ftFee;
+              jkxlDetailFee.setTotalFee(zFee);
+            }
+            overheadLineService.updataDate(jkxlDetailFee);
+          }
+        }
         //人工费
         if(code.equals(BashInfo.TZ_RGF)){
             for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
-                total += jkxlDetailFee.getRgCost();
+                total += jkxlDetailFee.getOriginalRgCost();
           }
             for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
               JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
               jkxlDetailFee.setId(id);
               jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
-              double rgFee = jkxlDetailFee1.getRgCost();
+              double rgFee = jkxlDetailFee1.getOriginalRgCost();
               double totalFee = jkxlDetailFee1.getTotalFee();
-              double ftFee = rgFee/total*fee;
-              jkxlDetailFee.setRgFtFee(ftFee);
+              if(total==0.00){
+                rate = size/1;
+              } else {
+                rate = rgFee/total;
+              }
+              double ftFee = rate*fee;
               if(state.equals("1")){
                 double zFee = totalFee+ftFee;
                 jkxlDetailFee.setTotalFee(zFee);
@@ -130,16 +163,20 @@ public class OverheadLineController extends BaseController {
         //承包人采购
         if(code.equals(BashInfo.TZ_CBRCG)){
           for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
-            total += jkxlDetailFee.getCbrCost();
+            total += jkxlDetailFee.getOriginalCbrCost();
           }
           for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
             JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
             jkxlDetailFee.setId(id);
             jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
-            double rgFee = jkxlDetailFee1.getCbrCost();
+            double rgFee = jkxlDetailFee1.getOriginalCbrCost();
             double totalFee = jkxlDetailFee1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            jkxlDetailFee.setCbrFtFee(ftFee);
+            if(total==0.00){
+              rate = size/1;
+            } else {
+              rate = rgFee/total;
+            }
+            double ftFee = rate*fee;
             if(state.equals("1")){
               double zFee = totalFee+ftFee;
               jkxlDetailFee.setTotalFee(zFee);
@@ -153,16 +190,20 @@ public class OverheadLineController extends BaseController {
         //发包人采购
         if(code.equals(BashInfo.TZ_FBRCG)){
           for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
-            total += jkxlDetailFee.getFbrCost();
+            total += jkxlDetailFee.getOriginalFbrCost();
           }
           for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
             JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
             jkxlDetailFee.setId(id);
             jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
-            double rgFee = jkxlDetailFee1.getFbrCost();
+            double rgFee = jkxlDetailFee1.getOriginalFbrCost();
             double totalFee = jkxlDetailFee1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            jkxlDetailFee.setFbrFtFee(ftFee);
+            if(total==0.00){
+              rate = size/1;
+            } else {
+              rate = rgFee/total;
+            }
+            double ftFee = rate*fee;
             if(state.equals("1")){
               double zFee = totalFee+ftFee;
               jkxlDetailFee.setTotalFee(zFee);
@@ -176,16 +217,20 @@ public class OverheadLineController extends BaseController {
         //机械费
         if(code.equals(BashInfo.TZ_JX)){
           for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
-            total += jkxlDetailFee.getJxCost();
+            total += jkxlDetailFee.getOriginalJxCost();
           }
           for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
             JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
             jkxlDetailFee.setId(id);
             jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
-            double rgFee = jkxlDetailFee1.getJxCost();
+            double rgFee = jkxlDetailFee1.getOriginalJxCost();
             double totalFee = jkxlDetailFee1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            jkxlDetailFee.setJxFtFee(ftFee);
+            if(total==0.00){
+              rate = size/1;
+            } else {
+              rate = rgFee/total;
+            }
+            double ftFee = rate*fee;
             if(state.equals("1")){
               double zFee = totalFee+ftFee;
               jkxlDetailFee.setTotalFee(zFee);
@@ -207,14 +252,17 @@ public class OverheadLineController extends BaseController {
             jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
             double rgFee = jkxlDetailFee1.getMeasuresFee1();
             double totalFee = jkxlDetailFee1.getTotalFee();
-            double ftFee = rgFee/total*fee;
+            if(total==0.00){
+              rate = size/1;
+            } else {
+              rate = rgFee/total;
+            }
+            double ftFee = rate*fee;
             if(state.equals("1")){
               double zFee = totalFee+ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }else {
               double zFee = totalFee-ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }
             overheadLineService.updataDate(jkxlDetailFee);
@@ -231,14 +279,17 @@ public class OverheadLineController extends BaseController {
             jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
             double rgFee = jkxlDetailFee1.getMeasuresFee2();
             double totalFee = jkxlDetailFee1.getTotalFee();
-            double ftFee = rgFee/total*fee;
+            if(total==0.00){
+              rate = size/1;
+            } else {
+              rate = rgFee/total;
+            }
+            double ftFee = rate*fee;
             if(state.equals("1")){
               double zFee = totalFee+ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }else {
               double zFee = totalFee-ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }
             overheadLineService.updataDate(jkxlDetailFee);
@@ -255,14 +306,17 @@ public class OverheadLineController extends BaseController {
             jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
             double rgFee = jkxlDetailFee1.getMeasuresFee3();
             double totalFee = jkxlDetailFee1.getTotalFee();
-            double ftFee = rgFee/total*fee;
+            if(total==0.00){
+              rate = size/1;
+            } else {
+              rate = rgFee/total;
+            }
+            double ftFee = rate*fee;
             if(state.equals("1")){
               double zFee = totalFee+ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }else {
               double zFee = totalFee-ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }
             overheadLineService.updataDate(jkxlDetailFee);
@@ -279,14 +333,17 @@ public class OverheadLineController extends BaseController {
             jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
             double rgFee = jkxlDetailFee1.getOtherCost();
             double totalFee = jkxlDetailFee1.getTotalFee();
-            double ftFee = rgFee/total*fee;
+            if(total==0.00){
+              rate = size/1;
+            } else {
+              rate = rgFee/total;
+            }
+            double ftFee = rate*fee;
             if(state.equals("1")){
               double zFee = totalFee+ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }else {
               double zFee = totalFee-ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }
             overheadLineService.updataDate(jkxlDetailFee);
@@ -303,14 +360,17 @@ public class OverheadLineController extends BaseController {
             jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
             double rgFee = jkxlDetailFee1.getFees();
             double totalFee = jkxlDetailFee1.getTotalFee();
-            double ftFee = rgFee/total*fee;
+            if(total==0.00){
+              rate = size/1;
+            } else {
+              rate = rgFee/total;
+            }
+            double ftFee = rate*fee;
             if(state.equals("1")){
               double zFee = totalFee+ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }else {
               double zFee = totalFee-ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }
             overheadLineService.updataDate(jkxlDetailFee);
@@ -327,14 +387,17 @@ public class OverheadLineController extends BaseController {
             jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
             double rgFee = jkxlDetailFee1.getTex();
             double totalFee = jkxlDetailFee1.getTotalFee();
-            double ftFee = rgFee/total*fee;
+            if(total==0.00){
+              rate = size/1;
+            } else {
+              rate = rgFee/total;
+            }
+            double ftFee = rate*fee;
             if(state.equals("1")){
               double zFee = totalFee+ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }else {
               double zFee = totalFee-ftFee;
-              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
               jkxlDetailFee.setTotalFee(zFee);
             }
             overheadLineService.updataDate(jkxlDetailFee);
@@ -382,20 +445,16 @@ public class OverheadLineController extends BaseController {
       for(DdtzData ddtzData: ts){
         double tzFee = Double.valueOf(ddtzData.getFee());
         String wbsCode = ddtzData.getWbsCode();
-        double otherFee = overheadLineService.getDate(id,wbsCode).getOtherCost();
         double totalFee = overheadLineService.getDate(id,wbsCode).getTotalFee();
         if(state.equals("1")){
-          otherFee = otherFee+tzFee;
           totalFee = totalFee+tzFee;
         }
         if(state.equals("2")){
-          otherFee = otherFee-tzFee;
           totalFee = totalFee-tzFee;
         }
         JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
         jkxlDetailFee.setId(id);
         jkxlDetailFee.setWbsCode(wbsCode);
-        jkxlDetailFee.setOtherCost(otherFee);
         jkxlDetailFee.setTotalFee(totalFee);
         overheadLineService.updataDate(jkxlDetailFee);
       }

+ 79 - 44
src/main/java/com/jeeplus/modules/sg/substation/service/SubstationService.java

@@ -92,7 +92,8 @@ public class SubstationService {
         double[] qtFees = BashInfo.getQtFees(qt);  //获取其他费用
 
         double gcjsFee = BashInfo.getGcjsFee(total);  //获取工程结算价
-
+        double tax = 0.00; //税金
+        double totalfee = 0.00;  //合计
         //变电站 结算汇总
         List<Settlement> settlementsBdz =  SettementUtil.getComparison(total);
         double cbperson = ExcelUtil.getDouble(tbrsb,BashInfo.QT_HJ,0,6);//获取投标人设备表合计
@@ -156,37 +157,6 @@ public class SubstationService {
             jzTotal.addAll(tsgzw);
             jzTotal.add(zqlh);
             jzTotal.addAll(dxgc);
-            for(JkxlDetailFee jkxlDetailFee:jzTotal){
-                 double originalTotalCost = jkxlDetailFee.getOriginalTotalCost();
-                 double originalFbrCost = jkxlDetailFee.getOriginalFbrCost();
-                 double zjgcJzFee = jkxlDetailFee.getZjgcFee();
-                 double rateCs = zjgcJzFee/zjgcJzTotal;  //措施费分摊比例
-                 double rateQt = zjgcJzFee/zjgcTotal;    //其他费用分摊比例
-                 jkxlDetailFee.setRgCost(jkxlDetailFee.getOriginalRgCost()/(1+tcRate[0]));
-                 jkxlDetailFee.setCbrCost(jkxlDetailFee.getOriginalCbrCost()/(1+tcRate[1]));
-                 jkxlDetailFee.setFbrCost(originalFbrCost/(1+jxslJz));
-                 jkxlDetailFee.setJxCost(jkxlDetailFee.getOriginalJxCost()/(1+tcRate[2]));
-                 double measuresFee1 = (zjgcJzFee -(originalFbrCost/(1+jxslJz)*jxslJz))*jzcsRate; //措施费一(1)
-                 double measuresFee2 = csJzFee*rateCs;   //措施费一(2)
-                 double otherFee =qtFees[2]*rateQt; //其他费用
-                 double fees = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*(jzgfRate[0]+jzgfRate[1]*0.2);  //规费
-                 double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee-originalFbrCost)*texRate; //税金
-                 double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-originalFbrCost; //合计
-                 jkxlDetailFee.setMeasuresFee1(measuresFee1);
-                 jkxlDetailFee.setMeasuresFee2(measuresFee2);
-                 jkxlDetailFee.setFees(fees);
-                 jkxlDetailFee.setOtherCost(otherFee);
-                 jkxlDetailFee.setTex(tax);
-                 jkxlDetailFee.setTotalFee(totalfee);
-                 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 az = SubstationInfo.getTolalInfo(azqd,azhz,"23000000",SubstationInfo.AZMX_BDZAZ);  //安装合计
             JkxlDetailFee azsc = SubstationInfo.getBashInfo(azqd,azhz,"23100000",SubstationInfo.AZMX_ZYSCGC);  //主要生产工程
@@ -217,6 +187,48 @@ public class SubstationService {
             azTotal.add(azdx);
             azTotal.addAll(zwdy);
             azTotal.addAll(zwtx);
+            boolean flagJz = SubstationInfo.getFlag(jzTotal);
+            boolean flagAz = SubstationInfo.getFlag(azTotal);
+            for(JkxlDetailFee jkxlDetailFee:jzTotal){
+                 double originalTotalCost = jkxlDetailFee.getOriginalTotalCost();
+                 double originalFbrCost = jkxlDetailFee.getOriginalFbrCost();
+                 double zjgcJzFee = jkxlDetailFee.getZjgcFee();
+                 double rateCs = zjgcJzFee/zjgcJzTotal;  //措施费分摊比例
+                 double rateQt = zjgcJzFee/zjgcTotal;    //其他费用分摊比例
+                 jkxlDetailFee.setRgCost(jkxlDetailFee.getOriginalRgCost()/(1+tcRate[0]));
+                 jkxlDetailFee.setCbrCost(jkxlDetailFee.getOriginalCbrCost()/(1+tcRate[1]));
+                 jkxlDetailFee.setFbrCost(originalFbrCost/(1+jxslJz));
+                 jkxlDetailFee.setJxCost(jkxlDetailFee.getOriginalJxCost()/(1+tcRate[2]));
+                 double measuresFee1 = (zjgcJzFee -(originalFbrCost/(1+jxslJz)*jxslJz))*jzcsRate; //措施费一(1)
+                 double measuresFee2 = csJzFee*rateCs;   //措施费一(2)
+                 double measuresFee3 = 0.00; //措施费二
+                 double otherFee =qtFees[2]*rateQt; //其他费用
+                 double fees = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*(jzgfRate[0]+jzgfRate[1]*0.2);  //规费
+                if(flagJz && flagAz){
+                    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; //税金
+                    totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+                }
+//                 double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee-originalFbrCost)*texRate; //税金
+//                 double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-originalFbrCost; //合计
+                 jkxlDetailFee.setMeasuresFee1(measuresFee1);
+                 jkxlDetailFee.setMeasuresFee2(measuresFee2);
+                 jkxlDetailFee.setMeasuresFee3(measuresFee3);
+                 jkxlDetailFee.setFees(fees);
+                 jkxlDetailFee.setOtherCost(otherFee);
+                 jkxlDetailFee.setTex(tax);
+                 jkxlDetailFee.setTotalFee(totalfee);
+                 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);
             for(JkxlDetailFee jkxlDetailFee:azTotal){
                 double originalTotalCost = jkxlDetailFee.getOriginalTotalCost();
                 double originalFbrCost = jkxlDetailFee.getOriginalFbrCost();
@@ -230,12 +242,21 @@ public class SubstationService {
                 jkxlDetailFee.setJxCost(jkxlDetailFee.getOriginalJxCost()/(1+tcRate[2]));
                 double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+(rgAzFee/(1+tcRate[0])*azcsRate[1]); //措施费一(2)
                 double measuresFee2 = csAzFee*rateCs;   //措施费一(2)
+                double measuresFee3 = 0.00; //措施费二
                 double otherFee =qtFees[2]*rateQt; //其他费用
                 double fees = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.6;  //规费
-                double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee-originalFbrCost)*texRate; //税金
-                double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-originalFbrCost; //合计
+//                double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee-originalFbrCost)*texRate; //税金
+//                double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-originalFbrCost; //合计
+                if(flagJz && flagAz){
+                    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; //税金
+                    totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+                }
                 jkxlDetailFee.setMeasuresFee1(measuresFee1);
                 jkxlDetailFee.setMeasuresFee2(measuresFee2);
+                jkxlDetailFee.setMeasuresFee3(measuresFee3);
                 jkxlDetailFee.setFees(fees);
                 jkxlDetailFee.setOtherCost(otherFee);
                 jkxlDetailFee.setTex(tax);
@@ -288,11 +309,8 @@ public class SubstationService {
             settlementService.save(settlementBdzs,id);
             double zjgcJzTotal = ExcelUtil.getDouble(jzhz,SubstationInfo.QT_HJ,0,3);//建筑直接工程费合计
             double csJzFee = SubstationInfo.getCsJzFee(csqd2);//建筑措施分摊费
-            double csAzFee = SubstationInfo.getCsAzFee(csqd2);//安装措施分摊费
             double tbrJzFee = BashInfo.getFbrJzFee(tbrsb); //投标人建筑费
-            double tbrAzFee = BashInfo.getFbrAzFee(tbrsb); //投标人安装费
             double[] aqwmJzFees = ExcelUtil.getDoubleArray(csqd1,SubstationInfo.CS_SGZJ,1, new int[]{3, 4});  //建筑安全文明施工费
-            double[] aqwmAzFees = BashInfo.getAqwfAzFee(csqd1);  //安装安全文明施工费
             double fbrJzFee = ExcelUtil.getDouble(jzqd,SubstationInfo.JZMX_BJZ,2,15);
             double zgJz = zjgcJzTotal-aqwmJzFees[1]/aqwmJzFees[0]*100;
             double jxslJz = zgJz/(fbrJzFee-zgJz); //建筑进项税率
@@ -322,6 +340,7 @@ public class SubstationService {
             jzTotal.addAll(tsgzw);
             jzTotal.add(zqlh);
             jzTotal.addAll(dxgc);
+            boolean flagJz = SubstationInfo.getFlag(jzTotal);
             for(JkxlDetailFee jkxlDetailFee:jzTotal){
                 double originalTotalCost = jkxlDetailFee.getOriginalTotalCost();
                 double originalFbrCost = jkxlDetailFee.getOriginalFbrCost();
@@ -334,12 +353,21 @@ public class SubstationService {
                 jkxlDetailFee.setJxCost(jkxlDetailFee.getOriginalJxCost()/(1+tcRate[2]));
                 double measuresFee1 = (zjgcJzFee -(originalFbrCost/(1+jxslJz)*jxslJz))*jzcsRate; //措施费一(1)
                 double measuresFee2 = csJzFee*rateCs;   //措施费一(2)
+                double measuresFee3 = 0.00; //措施费二
                 double otherFee =qtFees[2]*rateQt; //其他费用
                 double fees = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*(jzgfRate[0]+jzgfRate[1]*0.2);  //规费
-                double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee-originalFbrCost)*texRate; //税金
-                double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-originalFbrCost; //合计
+//                double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee-originalFbrCost)*texRate; //税金
+//                double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-originalFbrCost; //合计
+                if(flagJz){
+                    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; //税金
+                    totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+                }
                 jkxlDetailFee.setMeasuresFee1(measuresFee1);
                 jkxlDetailFee.setMeasuresFee2(measuresFee2);
+                jkxlDetailFee.setMeasuresFee3(measuresFee3);
                 jkxlDetailFee.setFees(fees);
                 jkxlDetailFee.setOtherCost(otherFee);
                 jkxlDetailFee.setTex(tax);
@@ -389,11 +417,8 @@ public class SubstationService {
             List<Settlement> settlementBdzs = SettementUtil.getDLComparison(settlementsBdz,builtTotal,division,word1total,word2total,otherBdzTotal,feesBdzCount,cbperson);
             settlementService.save(settlementBdzs,id);
             double zjgcAzTotal = ExcelUtil.getDouble(azhz,SubstationInfo.QT_HJ,0,3);//安装直接工程费合计
-            double csJzFee = SubstationInfo.getCsJzFee(csqd2);//建筑措施分摊费
             double csAzFee = SubstationInfo.getCsAzFee(csqd2);//安装措施分摊费
-            double tbrJzFee = BashInfo.getFbrJzFee(tbrsb); //投标人建筑费
             double tbrAzFee = BashInfo.getFbrAzFee(tbrsb); //投标人安装费
-            double[] aqwmJzFees = ExcelUtil.getDoubleArray(csqd1,SubstationInfo.CS_SGZJ,1, new int[]{3, 4});  //建筑安全文明施工费
             double[] aqwmAzFees = BashInfo.getAqwfAzFee(csqd1);  //安装安全文明施工费
             double fbrAzFee = ExcelUtil.getDouble(azqd,SubstationInfo.AZMX_BDZAZ,2,15);
             double zgAz = zjgcAzTotal-aqwmAzFees[1]/aqwmAzFees[0]*100;
@@ -428,6 +453,7 @@ public class SubstationService {
             azTotal.add(azdx);
             azTotal.addAll(zwdy);
             azTotal.addAll(zwtx);
+            boolean flagAz = SubstationInfo.getFlag(azTotal);
             for(JkxlDetailFee jkxlDetailFee:azTotal){
                 double originalTotalCost = jkxlDetailFee.getOriginalTotalCost();
                 double originalFbrCost = jkxlDetailFee.getOriginalFbrCost();
@@ -441,12 +467,21 @@ public class SubstationService {
                 jkxlDetailFee.setJxCost(jkxlDetailFee.getOriginalJxCost()/(1+tcRate[2]));
                 double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+(rgAzFee/(1+tcRate[0])*azcsRate[1]); //措施费一(2)
                 double measuresFee2 = csAzFee*rateCs;   //措施费一(2)
+                double measuresFee3 = 0.00;   //措施费二
                 double otherFee =qtFees[2]*rateQt; //其他费用
                 double fees = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.6;  //规费
-                double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee-originalFbrCost)*texRate; //税金
-                double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-originalFbrCost; //合计
+//                double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee-originalFbrCost)*texRate; //税金
+//                double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-originalFbrCost; //合计
+                if(flagAz){
+                    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; //税金
+                    totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax; //合计
+                }
                 jkxlDetailFee.setMeasuresFee1(measuresFee1);
                 jkxlDetailFee.setMeasuresFee2(measuresFee2);
+                jkxlDetailFee.setMeasuresFee3(measuresFee3);
                 jkxlDetailFee.setFees(fees);
                 jkxlDetailFee.setOtherCost(otherFee);
                 jkxlDetailFee.setTex(tax);

+ 8 - 1
src/main/java/com/jeeplus/modules/sg/substation/util/SubstationInfo.java

@@ -894,7 +894,14 @@ public class SubstationInfo {
 
 
 
-
+   public static boolean getFlag(List<JkxlDetailFee> list){
+        for(JkxlDetailFee jkxlDetailFee:list){
+            if(jkxlDetailFee.getOriginalTotalCost()<jkxlDetailFee.getZjgcFee()){
+                return false;
+            }
+        }
+        return true;
+   }