蔡德晨 5 سال پیش
والد
کامیت
35e3c0bd6c

+ 9 - 4
src/main/java/com/jeeplus/modules/sg/overheadline/service/OverheadLineService.java

@@ -276,7 +276,7 @@ public List<JkxlDetailFee> findList(String id,String type){
             jxsl = 0.00;
         }
        boolean flag = BashInfo.getFlag(originalTotalFees,zjgcFees);
-       double csFees = BashInfo.getCsFee(csqd); //措施费
+       double csFees = BashInfo.getCsFee(csqd); //安装措施费
        double gfFees = ExcelUtil.getDouble(gf,BashInfo.QT_HJ,0,4); //规费
        //结算汇总
         List<Settlement> settlements=SettementUtil.getComparison(settlementList,builtTotal,divisiontotal,wordtotal1,wordtotal2,otherTotal,feescount,cbperson,flag);
@@ -476,6 +476,7 @@ public List<JkxlDetailFee> findList(String id,String type){
         double cbrfee = ExcelUtil.getDouble(total,BashInfo.QT_CBRSB,1,2);
         //安装措施费
         double azCsFee = BashInfo.getAzCsfee(csqd);
+        double[] csJzFee = BashInfo.getJzCsfee(csqd); //建筑措施费
         //规费
         double azGf = BashInfo.getAzGf(gf);
         List<JkxlDetailFee> list = new ArrayList<>();
@@ -520,9 +521,11 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double fbrCost = originalFbrCost/(1+jxslJz); //后发包人采购
                 double originalJxrCost = originalJzFees[i][3];   //原机械费
                 double jxCost = originalJxrCost/(1+tcRate[2]); //后机械费
-                double measuresFee1 = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzcsRate; //措施费一(2)
+                double rate = (zjgcJzFee-originalFbrCost)/(zjgcJzTotal-fbrJzFee); //比例
+                double measuresFee1 = (zjgcJzFee-originalFbrCost/(1+jxslJz)*jxslJz)*csJzFee[0]+csJzFee[1]*rate; //措施费一(1)
+//                double measuresFee1 = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzcsRate; //措施费一(2)
                 double measuresFee2 = 0.00;   //措施费一(1)
-                double measuresFee3 = 0.00; //措施费二
+                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){
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
@@ -697,7 +700,9 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double fbrCost = originalFbrCost/(1+jxslJz); //后发包人采购
                 double originalJxrCost = originalJzFees[i][3];   //原机械费
                 double jxCost = originalJxrCost/(1+tcRate[2]); //后机械费
-                double measuresFee1 = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzcsRate; //措施费一(2)
+                double rate = (zjgcJzFee-originalFbrCost)/(zjgcJzTotal-fbrJzFee); //比例
+//                double measuresFee1 = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzcsRate; //措施费一(2)
+                double measuresFee1 = (zjgcJzFee-originalFbrCost/(1+jxslJz)*jxslJz)*csJzFee[0]+csJzFee[1]*rate; //措施费一(1)
                 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;  //规费

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

@@ -252,6 +252,45 @@ public class BashInfo {
     }
 
     /**
+     * 获取电缆建筑措施费
+     */
+    public static double[] getJzCsfee(ImportExcel importExcel){
+        int lastRow = importExcel.getLastDataRowNum();
+        int azRow = 0;
+        for(int i=0;i<lastRow;i++){
+            String type = importExcel.getValue(i+1,1);
+            if(type.equals(CS_AZ)){
+                azRow = i+1;
+                break;
+            }
+        }
+        double lsRate = 0.00;
+        double ls = 0.00;
+        double aqRate = 0.00;
+        double aq = 0.00;
+        double totalRate = 0.00;
+        for(int i=0;i<azRow+1;i++){
+            String type = importExcel.getValue(i+1,1);
+            String type1 = importExcel.getValue(i+1,0);
+            if(type.equals(CS_LS)){
+                lsRate = importExcel.getDouble(i+1,3);
+                ls = importExcel.getDouble(i+1,4);
+            }
+            if(type.equals(CS_AQWM)){
+                aqRate = importExcel.getDouble(i+1,3);
+                aq = importExcel.getDouble(i+1,4);
+            }
+            if(type1.equals(QT_XJ)){
+                totalRate = importExcel.getDouble(i+1,4);
+            }
+        }
+        double[] d = new double[2];
+         d[0] = (lsRate + aqRate)/100;
+         d[1] = totalRate - ls - aq;
+        return d;
+    }
+
+    /**
      * 获取电缆安装措施费
      */
     public static double getAzCsfee(ImportExcel importExcel){
@@ -568,7 +607,7 @@ public class BashInfo {
             }
             if (!type.contains("投标") && !type.contains("结算") && !type.contains("合计") && !type.contains("发包人") && !type.contains("竣工") && !type.contains("招标人") && !type.contains("税金")&& !type.contains("税额")) {
                  jkxlAdjustFee = new JkxlAdjustFee();
-                 double fee = importExcel.getDouble(j+1,2);
+                 double fee = Math.abs(importExcel.getDouble(j+1,2));
                  jkxlAdjustFee.setType(type);
                  jkxlAdjustFee.setFee(fee);
                  jkxlAdjustFees.add(jkxlAdjustFee);

+ 62 - 6
src/main/java/com/jeeplus/modules/sg/substation/service/SubstationService.java

@@ -310,8 +310,8 @@ public class SubstationService {
             azTotal.set(0,azDetail);
 
             //补税
-            if(btex != 0.00){
             double texTotal = jzTotal.get(0).getTex()+azTotal.get(0).getTex();//税合计金额
+            if(btex != 0.00){
             for(JkxlDetailFee jkxlDetailFee : jzTotal){
                     double tex = jkxlDetailFee.getTex();
                     double total1 = jkxlDetailFee.getTotalFee();
@@ -328,13 +328,37 @@ public class SubstationService {
             }
             }
 
+            //其他费用补税
+            if(qtFees[0]+qtFees[1] != 0.00) {
+                for (JkxlDetailFee jkxlDetailFee : jzTotal) {
+                    double tex = jkxlDetailFee.getTex();
+                    double total1 = jkxlDetailFee.getTotalFee();
+                    double rate = tex / texTotal;
+                    double tzTex = (qtFees[0] + qtFees[1]) * rate * texRate;
+                    jkxlDetailFee.setTex(tex + tzTex);
+                    jkxlDetailFee.setTotalFee(total1 + tzTex);
+                }
+                for (JkxlDetailFee jkxlDetailFee : azTotal) {
+                    double tex = jkxlDetailFee.getTex();
+                    double total1 = jkxlDetailFee.getTotalFee();
+                    double rate = tex / texTotal;
+                    double tzTex = (qtFees[0] + qtFees[1]) * rate * texRate;
+                    jkxlDetailFee.setTex(tex + tzTex);
+                    jkxlDetailFee.setTotalFee(total1 + tzTex);
+                }
+            }
+
             double tz = jzTotal.get(0).getTotalFee()+azTotal.get(0).getTotalFee();//总合计金额
 
             if(wsbFees != null && wsbFees.size()>0){
                 for(JkxlAdjustFee jkxlAdjustFee : wsbFees){
                     jkxlAdjustFee.setId(id);
                     feeAdjustService.save(jkxlAdjustFee);
-                    wsbfee += jkxlAdjustFee.getFee();
+                    double fee = jkxlAdjustFee.getFee();
+                    if(jkxlAdjustFee.getType().contains("减") || jkxlAdjustFee.getType().contains("扣")){
+                        fee = fee* -1;
+                    }
+                    wsbfee += fee;
                 }
             }
             double gxFee = Math.abs(gcjsFee-tz-qtFees[0]-qtFees[1] -wsbfee);
@@ -451,8 +475,8 @@ public class SubstationService {
             jzTotal.set(0,jzDetail);
 
             //补税
+            double jztexTotal = jzTotal.get(0).getTex();
             if(btex != 0.00){
-                double jztexTotal = jzTotal.get(0).getTex();
                 for(JkxlDetailFee jkxlDetailFee : jzTotal){
                     double tex = jkxlDetailFee.getTex();
                     double total1 = jkxlDetailFee.getTotalFee();
@@ -461,6 +485,17 @@ public class SubstationService {
                     jkxlDetailFee.setTotalFee(total1+btex*rate);
                 }
             }
+            //其他费用补税
+            if(qtFees[0]+qtFees[1] != 0.00) {
+                for (JkxlDetailFee jkxlDetailFee : jzTotal) {
+                    double tex = jkxlDetailFee.getTex();
+                    double total1 = jkxlDetailFee.getTotalFee();
+                    double rate = tex / jztexTotal;
+                    double tzTex = (qtFees[0] + qtFees[1]) * rate * texRate;
+                    jkxlDetailFee.setTex(tex + tzTex);
+                    jkxlDetailFee.setTotalFee(total1 + tzTex);
+                }
+            }
 
             double tz = jzTotal.get(0).getTotalFee();//总合计金额
 
@@ -468,7 +503,11 @@ public class SubstationService {
                 for(JkxlAdjustFee jkxlAdjustFee : wsbFees){
                     jkxlAdjustFee.setId(id);
                     feeAdjustService.save(jkxlAdjustFee);
-                    wsbfee += jkxlAdjustFee.getFee();
+                    double fee = jkxlAdjustFee.getFee();
+                    if(jkxlAdjustFee.getType().contains("减") || jkxlAdjustFee.getType().contains("扣")){
+                        fee = fee* -1;
+                    }
+                    wsbfee += fee;
                 }
             }
             double gxFee = Math.abs(gcjsFee-tz-qtFees[0]-qtFees[1]-wsbfee);
@@ -590,8 +629,8 @@ public class SubstationService {
             azTotal.set(0,azDetail);
 
             //补税
+            double aztexTotal = azTotal.get(0).getTex();
             if(btex != 0.00){
-                double aztexTotal = azTotal.get(0).getTex();
                 for(JkxlDetailFee jkxlDetailFee : azTotal){
                     double tex = jkxlDetailFee.getTex();
                     double total1 = jkxlDetailFee.getTotalFee();
@@ -600,6 +639,17 @@ public class SubstationService {
                     jkxlDetailFee.setTotalFee(total1+btex*rate);
                 }
             }
+            //其他费用补税
+            if(qtFees[0]+qtFees[1] != 0.00) {
+                for (JkxlDetailFee jkxlDetailFee : azTotal) {
+                    double tex = jkxlDetailFee.getTex();
+                    double total1 = jkxlDetailFee.getTotalFee();
+                    double rate = tex / aztexTotal;
+                    double tzTex = (qtFees[0] + qtFees[1]) * rate * texRate;
+                    jkxlDetailFee.setTex(tex + tzTex);
+                    jkxlDetailFee.setTotalFee(total1 + tzTex);
+                }
+            }
 
             double tz = azTotal.get(0).getTotalFee();//总合计金额
 
@@ -607,7 +657,11 @@ public class SubstationService {
                 for(JkxlAdjustFee jkxlAdjustFee : wsbFees){
                     jkxlAdjustFee.setId(id);
                     feeAdjustService.save(jkxlAdjustFee);
-                    wsbfee += jkxlAdjustFee.getFee();
+                    double fee = jkxlAdjustFee.getFee();
+                    if(jkxlAdjustFee.getType().contains("减") || jkxlAdjustFee.getType().contains("扣")){
+                        fee = fee* -1;
+                    }
+                    wsbfee += fee;
                 }
             }
             double gxFee = Math.abs(gcjsFee-tz-qtFees[0]-qtFees[1]-wsbfee);
@@ -628,6 +682,8 @@ public class SubstationService {
             jkxlAdjustFee.setType(BashInfo.CE);
             jkxlAdjustFee.setFee(gxFee);
             feeAdjustService.save(jkxlAdjustFee);
+        } else {
+            throw new RuntimeException();
         }