蔡德晨 5 years ago
parent
commit
c3145beb39

+ 1 - 0
src/main/java/com/jeeplus/modules/sg/overheadline/mapper/xml/OverheadLineMapper.xml

@@ -20,6 +20,7 @@
          b.jx_cost as jxCost,
          b.measures_fee1 as measuresFee1,
          b.measures_fee2 as measuresFee2,
+		 b.measures_fee3 as measuresFee3,
          b.other_cost as otherCost,
          b.tex as tex,
          b.fees as fees,

+ 18 - 6
src/main/java/com/jeeplus/modules/sg/overheadline/service/OverheadLineService.java

@@ -459,6 +459,10 @@ public List<JkxlDetailFee> findList(String id,String type){
             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 azGf = BashInfo.getAzGf(gf);
         List<JkxlDetailFee> list = new ArrayList<>();
         if(jzgc !=0.00 && azgc == 0.00){
             ImportExcel jzqd = new ImportExcel(file,1,BashInfo.SHEET_JZFBFXJJ,true);  //建筑分部分项工程量清单计价表
@@ -550,6 +554,7 @@ public List<JkxlDetailFee> findList(String id,String type){
 //            double fbrAzFee = BashInfo.getFbrAzFee(fbrcg);  //安装发包人采购计价表合计金额
             double fbrAzFee = ExcelUtil.getDouble(azqd,BashInfo.DLAZ,2,15);
             double zjgcAzTotal = ExcelUtil.getDouble(azhz,BashInfo.QT_HJ,0,3);//安装直接工程费合计
+            double rgAzTotal = ExcelUtil.getDouble(azhz,BashInfo.QT_HJ,0,4);//安装人工费费合计
             double[] aqwmAzFees = BashInfo.getAqwfAzFee(csqd);  //建筑安全文明施工费
             double jxslAz = 0.00;
             if(fbrAzFee != 0.00){
@@ -571,6 +576,7 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double zjgcAzFee = zjgcAzFees[i];//直接工程费
                 double rgAzFee = rgFees[i];//人工费
                 double originalRgCost = originalAzFees[i][0];// 原人工费
+                double rgRate = originalRgCost/rgAzTotal; //比例
                 double rgCost = originalRgCost/(1+tcRate[0]);  //后人工费
                 double originalCbrCost = originalAzFees[i][1];  //原承包人采购
                 double cbrCost = originalCbrCost/(1+tcRate[1]);  //后承包人采购
@@ -578,10 +584,12 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double fbrCost = originalFbrCost/(1+jxslAz); //后发包人采购
                 double originalJxrCost = originalAzFees[i][3];   //原机械费
                 double jxCost = originalJxrCost/(1+tcRate[2]); //后机械费
-                double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+(rgAzFee/(1+tcRate[0])*azcsRate[1]); //措施费一(2)
-                double measuresFee2 = 0.00;   //措施费一(1)
+//                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 = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.2;  //规费
+                double fees = rgRate*azGf;  //规费
                 if(flag){
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
@@ -636,6 +644,7 @@ public List<JkxlDetailFee> findList(String id,String type){
             double fbrAzFee = ExcelUtil.getDouble(azqd,BashInfo.DLAZ,2,15);
             double zjgcJzTotal = ExcelUtil.getDouble(jzhz,BashInfo.QT_HJ,0,3);//建筑直接工程费合计
             double zjgcAzTotal = ExcelUtil.getDouble(azhz,BashInfo.QT_HJ,0,3);//安装直接工程费合计
+            double rgAzTotal = ExcelUtil.getDouble(azhz,BashInfo.QT_HJ,0,4);//安装人工费费合计
             double[] aqwmJzFees = ExcelUtil.getDoubleArray(csqd,BashInfo.CS_AQWM,1, new int[]{3, 4});  //建筑安全文明施工费
             double[] aqwmAzFees = BashInfo.getAqwfAzFee(csqd);  //安装安全文明施工费
             double jxslJz = 0.00;
@@ -712,6 +721,7 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double zjgcAzFee = zjgcAzFees[i];//直接工程费
                 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 cbrCost = originalCbrCost/(1+tcRate[1]);  //后承包人采购
@@ -719,10 +729,12 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double fbrCost = originalFbrCost/(1+jxslAz); //后发包人采购
                 double originalJxrCost = originalAzFees[i][3];   //原机械费
                 double jxCost = originalJxrCost/(1+tcRate[2]); //后机械费
-                double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+(rgAzFee/(1+tcRate[0])*azcsRate[1]); //措施费一(2)
-                double measuresFee2 = 0.00;   //措施费一(1)
+//                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 = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.2;  //规费
+                double fees = rgRate*azGf;  //规费
                 if(flagJz && flagAz){
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计

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

@@ -49,7 +49,7 @@ public class BashInfo {
     public static final String MX_DLQ = "1 电缆桥、支架制作安装";
     public static final String MX_DLFS = "2 电缆敷设";
     public static final String MX_DLFJ = "3 电缆附件";
-    public static final String MX_DLFH= "电缆防火";
+    public static final String MX_DLFH= "4 电缆防火";
     public static final String MX_TSJSY = "5 调试及试验";
     public static final String MX_DLJC = "6 电缆监测(控)系统";
 
@@ -251,6 +251,42 @@ public class BashInfo {
         return  rate;
     }
 
+    /**
+     * 获取电缆安装措施费
+     */
+    public static double getAzCsfee(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;
+            }
+        }
+        if(azRow == 0){
+            return 0.00;
+        }
+        double lsRate = 0.00;
+        double aqRate = 0.00;
+        double totalRate = 0.00;
+        for(int i=azRow;i<lastRow;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,4);
+            }
+            if(type.equals(CS_AQWM)){
+                aqRate = importExcel.getDouble(i+1,4);
+            }
+            if(type1.equals(QT_XJ)){
+                totalRate = importExcel.getDouble(i+1,4);
+            }
+        }
+        double d = totalRate - lsRate - aqRate;
+        return d;
+    }
+
 
 
     /**
@@ -334,6 +370,33 @@ public class BashInfo {
     }
 
     /**
+     *电缆安装获取规费
+     */
+    public static double getAzGf(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(GF_AZ)){
+                azRow = i+1;
+                break;
+            }
+        }
+        if(azRow == 0){
+            return 0.00;
+        }
+        double totalRate = 0.00;
+        for (int i = azRow; i < lastRow; i++) {
+            String type = importExcel.getValue(i + 1, 0);
+            if (type.equals(QT_XJ)) {
+                totalRate = importExcel.getDouble(i + 1, 4);
+            }
+        }
+
+        return totalRate;
+    }
+
+    /**
      * 获取其他费用
      */
     public static double[] getQtFees(ImportExcel importExcel) {

+ 24 - 12
src/main/java/com/jeeplus/modules/sg/substation/service/SubstationService.java

@@ -121,6 +121,11 @@ public class SubstationService {
 //        double word2total=ExcelUtil.getDouble(csqd2,SubstationInfo.CS_JZ,0,10);//获取措施费二表措施项目合计金额
         double otherBdzTotal =  ExcelUtil.getDouble(qt,BashInfo.QT_HJ,0,2);//获取其他项目费合计
         double feesBdzCount =  ExcelUtil.getDouble(gf,BashInfo.QT_HJ,0,4);//获取规费合计
+
+       //安装措施费
+       double azCsFee = BashInfo.getAzCsfee(csqd1);
+       //安装规费
+       double azGf = BashInfo.getAzGf(gf);
         if(jzgc !=0.00 && azgc != 0.00){
             ImportExcel jzqd = new ImportExcel(file, 1, SubstationInfo.SHEET_JZFBFXJJ,true);  //建筑分部分项工程量清单计价表
             ImportExcel azqd = new ImportExcel(file, 1, SubstationInfo.SHEET_AZFBFXJJ,true);  //安装分部分项工程量清单计价表
@@ -137,6 +142,7 @@ public class SubstationService {
             //结算取值汇总结束
             double zjgcJzTotal = ExcelUtil.getDouble(jzhz,SubstationInfo.QT_HJ,0,3);//建筑直接工程费合计
             double zjgcAzTotal = ExcelUtil.getDouble(azhz,SubstationInfo.QT_HJ,0,3);//安装直接工程费合计
+            double rgAzTotal = ExcelUtil.getDouble(azhz,SubstationInfo.QT_HJ,0,4);//安装人工费合计
 //            double csJzFee = SubstationInfo.getCsJzFee(csqd2);//建筑措施分摊费
 //            double csAzFee = SubstationInfo.getCsAzFee(csqd2);//安装措施分摊费
 //            double tbrJzFee = BashInfo.getFbrJzFee(tbrsb); //投标人建筑费
@@ -234,8 +240,8 @@ public class SubstationService {
                  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 measuresFee2 = 0.00;   //措施费一(2)
+                 double measuresFee3 = csJzFee*rateCs; //措施费二
                  double otherFee =qtFees[2]*rateQt; //其他费用
                  double fees = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*(jzgfRate[0]+jzgfRate[1]*0.2);  //规费
                 if(flagJz && flagAz){
@@ -261,6 +267,7 @@ public class SubstationService {
             jzDetail.setTotalFee(jztotalFee);
             jzDetail.setTex(jztex);
             jzTotal.set(0,jzDetail);
+
             for(JkxlDetailFee jkxlDetailFee:azTotal){
                 double originalTotalCost = jkxlDetailFee.getOriginalTotalCost();
                 double originalFbrCost = jkxlDetailFee.getOriginalFbrCost();
@@ -268,17 +275,18 @@ public class SubstationService {
                 double zjgcAzFee = jkxlDetailFee.getZjgcFee();
                 double rateCs = zjgcAzFee/zjgcAzTotal;  //措施费分摊比例
                 double rateQt = zjgcAzFee/zjgcTotal;    //其他费用分摊比例
+                double rateRg = rgAzFee/rgAzTotal;  //人工费比例
                 jkxlDetailFee.setRgCost(jkxlDetailFee.getOriginalRgCost()/(1+tcRate[0]));
                 jkxlDetailFee.setCbrCost(jkxlDetailFee.getOriginalCbrCost()/(1+tcRate[1]));
                 jkxlDetailFee.setFbrCost(originalFbrCost/(1+jxslAz));
                 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 measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+(rgAzFee/(1+tcRate[0])*azcsRate[1]); //措施费一(2)
+                double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+azCsFee*rateRg; //措施费一(2)
+                double measuresFee2 = 0.00;   //措施费一(2)
+                double measuresFee3 = csAzFee*rateCs; //措施费二
                 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 fees = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.6;  //规费
+                double fees = azGf*rateRg;  //规费
                 if(flagJz && flagAz){
                     tax = (originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee-originalFbrCost)*texRate; //税金
                     totalfee = originalTotalCost+measuresFee1+measuresFee2+measuresFee3+fees+otherFee+tax-originalFbrCost; //合计
@@ -493,6 +501,7 @@ public class SubstationService {
             double[] division = {0.00,0.00,division2total[0],division2total[1]};
             //结算汇总取值结束
             double zjgcAzTotal = ExcelUtil.getDouble(azhz,SubstationInfo.QT_HJ,0,3);//安装直接工程费合计
+            double rgAzTotal = ExcelUtil.getDouble(azhz,SubstationInfo.QT_HJ,0,4);//安装人工费合计
 //            double csAzFee = SubstationInfo.getCsAzFee(csqd2);//安装措施分摊费
 //            double tbrAzFee = BashInfo.getFbrAzFee(tbrsb); //投标人安装费
             double[] aqwmAzFees = BashInfo.getAqwfAzFee(csqd1);  //安装安全文明施工费
@@ -544,15 +553,18 @@ public class SubstationService {
                 double zjgcAzFee = jkxlDetailFee.getZjgcFee();
                 double rateCs = zjgcAzFee/zjgcAzTotal;  //措施费分摊比例
                 double rateQt = zjgcAzFee/zjgcAzTotal;    //其他费用分摊比例
+                double rateRg = rgAzFee/rgAzTotal;   //人工费比例
                 jkxlDetailFee.setRgCost(jkxlDetailFee.getOriginalRgCost()/(1+tcRate[0]));
                 jkxlDetailFee.setCbrCost(jkxlDetailFee.getOriginalCbrCost()/(1+tcRate[1]));
                 jkxlDetailFee.setFbrCost(originalFbrCost/(1+jxslAz));
                 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 measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+(rgAzFee/(1+tcRate[0])*azcsRate[1]); //措施费一(2)
+                double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+azCsFee*rateRg; //措施费一(1)
+                double measuresFee2 = 0.00;   //措施费一(2)
+                double measuresFee3 = csAzFee*rateCs;   //措施费二
                 double otherFee =qtFees[2]*rateQt; //其他费用
-                double fees = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.6;  //规费
+//                double fees = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.6;  //规费
+                double fees = azGf*rateRg;  //规费
 //                double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee-originalFbrCost)*texRate; //税金
 //                double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-originalFbrCost; //合计
                 if(flagAz){