Browse Source

Merge remote-tracking branch 'origin/master'

xs 5 years ago
parent
commit
71964f708f

+ 17 - 1
src/main/java/com/jeeplus/common/utils/sg/ExcelUtil.java

@@ -159,7 +159,7 @@ public class ExcelUtil {
 
 
     /**
-     * 读取税
+     * 读取税
      */
     public static double getTexRate(ImportExcel importExcel){
         double rate = 0.00;
@@ -177,6 +177,22 @@ public class ExcelUtil {
         return rate;
     }
 
+    /**
+     * 读取税金
+     */
+    public static double getTex(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("税金")){
+                rate = importExcel.getDouble(i+1,2);
+                break;
+            }
+        }
+        return rate;
+    }
+
 
     /**
      * 读取人工调差系数

+ 66 - 8
src/main/java/com/jeeplus/modules/sg/overheadline/service/OverheadLineService.java

@@ -272,9 +272,9 @@ public List<JkxlDetailFee> findList(String id,String type){
        double[] aqwmFees = ExcelUtil.getDoubleArray(csqd,BashInfo.CS_AQWM,1, new int[]{3, 4});  //安全文明施工费
        double zg = zjgcTotal-(aqwmFees[1]/(aqwmFees[0]/100));
        double jxsl = zg/(fbrFee-zg); //进项税率
-        if(texRate<0.05){
-            jxsl = 0.00;
-        }
+//        if(texRate<0.05){
+//            jxsl = 0.00;
+//        }
        boolean flag = BashInfo.getFlag(originalTotalFees,zjgcFees);
        double csFees = BashInfo.getCsFee(csqd); //安装措施费
        double gfFees = ExcelUtil.getDouble(gf,BashInfo.QT_HJ,0,4); //规费
@@ -282,6 +282,10 @@ public List<JkxlDetailFee> findList(String id,String type){
         List<Settlement> settlements=SettementUtil.getComparison(settlementList,builtTotal,divisiontotal,wordtotal1,wordtotal2,otherTotal,feescount,cbperson);
         Boolean f = SettementUtil.getFlag;
         settlementService.save(settlements,id);
+        //获取结算表中基础数据
+        double jsCs = ExcelUtil.getDouble(total,BashInfo.JS_CSXM,1,2);
+        double jsGf = ExcelUtil.getDouble(total,BashInfo.JS_GF,1,2);
+        double jsTex = ExcelUtil.getTex(total);
        //将本体工程费用明细存入集合
        List<JkxlDetailFee> list = new ArrayList<>();
        for(int i=0;i<originalTotalFees.length;i++){
@@ -308,7 +312,7 @@ public List<JkxlDetailFee> findList(String id,String type){
            double measuresFee3 = csFees2*otherRate; //措施费二
 //           double fees = rgCost*gfRate[1]*1.12+rgCost*gfRate[0];  //规费
            double fees = gfFees*rgfRate;  //规费
-           if(flag){
+           if(f){
                 tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
                 totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
            } else {
@@ -373,6 +377,30 @@ public List<JkxlDetailFee> findList(String id,String type){
                 }
             }
         }
+        //分摊差额
+        double cstotal1 = 0.00;
+        double cstotal2 = 0.00;
+        double cstotal3 = 0.00;
+        double gftotal = 0.00;
+        double textotal = 0.00;
+        for(JkxlDetailFee jkxlDetailFee2 :list){
+            cstotal1 += jkxlDetailFee2.getMeasuresFee1();
+            cstotal2 += jkxlDetailFee2.getMeasuresFee2();
+            cstotal3 += jkxlDetailFee2.getMeasuresFee3();
+            gftotal  += jkxlDetailFee2.getFees();
+            textotal += jkxlDetailFee2.getTex();
+        }
+        for(JkxlDetailFee jkxlDetailFee1 : list){
+           double ftRate = jkxlDetailFee1.getZjgcFee()/zjgcTotal;
+           double csft = (jsCs-(cstotal1+cstotal2+cstotal3))*ftRate;
+           double gfft = (jsGf-gftotal)*ftRate;
+           double sgft = (jsTex-textotal)*ftRate;
+           jkxlDetailFee1.setMeasuresFee1(jkxlDetailFee1.getMeasuresFee1()+csft);
+           jkxlDetailFee1.setFees(jkxlDetailFee1.getFees()+gfft);
+           jkxlDetailFee1.setTex(jkxlDetailFee1.getTex()+sgft);
+           jkxlDetailFee1.setTotalFee(jkxlDetailFee1.getTotalFee()+csft+gfft+sgft);
+        }
+        //计算差额
         for(JkxlDetailFee jkxlDetailFee : list){
             tz += jkxlDetailFee.getTotalFee();
         }
@@ -480,6 +508,10 @@ public List<JkxlDetailFee> findList(String id,String type){
         double[] csJzFee = BashInfo.getJzCsfee(csqd); //建筑措施费
         //规费
         double azGf = BashInfo.getAzGf(gf);
+        //获取结算表中基础数据
+        double jsCs = ExcelUtil.getDouble(total,BashInfo.JS_CSXM,1,2);
+        double jsGf = ExcelUtil.getDouble(total,BashInfo.JS_GF,1,2);
+        double jsTex = ExcelUtil.getTex(total);
         List<JkxlDetailFee> list = new ArrayList<>();
         if(jzgc !=0.00 && azgc == 0.00){
             ImportExcel jzqd = new ImportExcel(file,1,BashInfo.SHEET_JZFBFXJJ,true);  //建筑分部分项工程量清单计价表
@@ -529,7 +561,7 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double measuresFee2 = 0.00;   //措施费一(1)
                 double measuresFee3 = csFees2*originalTotalCost/fbfxFee; //措施费二
                 double fees = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzgfRate[0]+(zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzgfRate[1]*0.2;  //规费
-                if(flag){
+                if(f){
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
                 } else {
@@ -611,7 +643,7 @@ public List<JkxlDetailFee> findList(String id,String type){
                 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(flag){
+                if(f){
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
                 } else {
@@ -710,7 +742,7 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double measuresFee2 = 0.00;   //措施费一(1)
                 double measuresFee3 = csFees2*originalTotalCost/fbfxFee; //措施费二
                 double fees = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzgfRate[0]+(zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzgfRate[1]*0.2;  //规费
-                if(flagJz && flagAz){
+                if(f){
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
                 } else {
@@ -759,7 +791,7 @@ public List<JkxlDetailFee> findList(String id,String type){
                 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(flagJz && flagAz){
+                if(f){
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
                 } else {
@@ -826,6 +858,32 @@ public List<JkxlDetailFee> findList(String id,String type){
                 }
             }
         }
+        //分摊差额
+        double cstotal1 = 0.00;
+        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();
+            cstotal2 += jkxlDetailFee2.getMeasuresFee2();
+            cstotal3 += jkxlDetailFee2.getMeasuresFee3();
+            gftotal  += jkxlDetailFee2.getFees();
+//            textotal += jkxlDetailFee2.getTex();
+            zjgcTotal += jkxlDetailFee2.getZjgcFee();
+        }
+        for(JkxlDetailFee jkxlDetailFee1 : list){
+            double ftRate = jkxlDetailFee1.getZjgcFee()/zjgcTotal;
+            double csft = (jsCs-(cstotal1+cstotal2+cstotal3))*ftRate;
+            double gfft = (jsGf-gftotal)*ftRate;
+//            double sgft = (jsTex-textotal)*ftRate;
+            jkxlDetailFee1.setMeasuresFee1(jkxlDetailFee1.getMeasuresFee1()+csft);
+            jkxlDetailFee1.setFees(jkxlDetailFee1.getFees()+gfft);
+//            jkxlDetailFee1.setTex(jkxlDetailFee1.getTex()+sgft);
+            jkxlDetailFee1.setTotalFee(jkxlDetailFee1.getTotalFee()+csft+gfft);
+        }
+        //计算差额
         for(JkxlDetailFee jkxlDetailFee : list){
             tz += jkxlDetailFee.getTotalFee();
         }