蔡德晨 5 rokov pred
rodič
commit
698a26c734

+ 83 - 111
src/main/java/com/jeeplus/modules/sg/overheadline/service/OverheadLineService.java

@@ -212,7 +212,7 @@ public List<JkxlDetailFee> findList(String id,String type){
 
    //架空线路保存数据
     @Transactional(readOnly = false)
-   public void saveJk(MultipartFile file,WbsItem wbsItem) throws IOException, InvalidFormatException {
+    public void saveJk(MultipartFile file,WbsItem wbsItem) throws IOException, InvalidFormatException {
        String id = wbsItem.getId();
        WbsItem wbsItem1 = itemService.get(id);
        if(wbsItem1 == null){
@@ -221,67 +221,46 @@ public List<JkxlDetailFee> findList(String id,String type){
            itemService.save(wbsItem);
        }
        //读取表格
-       ImportExcel importExcel = new ImportExcel(file,1,BashInfo.SHEET_FBFXJJ,true);  //分部分项工程量清单计价表
-       ImportExcel csqd = new ImportExcel(file,1,new String[]{BashInfo.SHEET_CSB,BashInfo.SHEET_CSB1},true);  // 措施项目清单计价表(一)
+        ImportExcel total = new ImportExcel(file,1,new String[]{BashInfo.SHEET_HZB,BashInfo.SHEET_HZB1,BashInfo.SHEET_HZB2,BashInfo.SHEET_HZB3},true );  //工程项目竣工结算汇总表
+        ImportExcel importExcel = new ImportExcel(file,1,BashInfo.SHEET_FBFXJJ,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 total = new ImportExcel(file,1,new String[]{BashInfo.SHEET_HZB,BashInfo.SHEET_HZB1,BashInfo.SHEET_HZB2,BashInfo.SHEET_HZB3},true );  //工程项目竣工结算汇总表
-       ImportExcel gzhz = new ImportExcel(file,1,new String[]{BashInfo.SHEET_GCHZ,BashInfo.SHEET_GCHZ1},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 gf = new ImportExcel(file,1,BashInfo.SHEET_GFQD,true);  //规费项目清单计价表
+        ImportExcel qt = new ImportExcel(file,1,BashInfo.SHEET_QTFY,true);  //其他项目清单计价表
+        ImportExcel gzhz = new ImportExcel(file,1,new String[]{BashInfo.SHEET_GCHZ,BashInfo.SHEET_GCHZ1},true );   //架空线路工程费用汇总
         ImportExcel cbrsb = new ImportExcel(file,1,new String[]{BashInfo.SHEET_TBRCG,BashInfo.SHEET_CBRCG},false);//承包人采购设备计价表
-//        ImportExcel zyrg = new ImportExcel(file,1,BashInfo.SHEET_ZYRG,true); //主要日工价格表
-        //数据核验数据
-        List<Settlement> settlementList =  SettementUtil.getComparison(total);
-       double builtTotal = ExcelUtil.getDouble(gzhz,BashInfo.QT_HJ,0,2);//获取架空线路工程费用汇总表 分部分项 合计
-       double wordtotal1 =  BashInfo.getJkCs(csqd);//获取措施费清单计价表一
-       double otherTotal =  ExcelUtil.getDouble(qt,BashInfo.QT_HJ,0,2);//获取其他项目费合计
-        double cbperson =  0.0;
-       double[] divisiontotal=ExcelUtil.getDoubleArray(importExcel,BashInfo.PROJECTNAME,2,new int[]{12,15});//获取分部分项比对数据清单
-        double gfFees = BashInfo.getJkGf(gf); //规费合计
-       //数据核验并保存数据库
+        //获取表格数据
+        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 cbrfee = ExcelUtil.getDouble(total,BashInfo.QT_CBRSB,1,2);//获取承包人采购设备费
+        double texRate = ExcelUtil.getTexRate(total); //获取税率
+        double textotal = ExcelUtil.getTex(total); //获取税金
+        double btex = BashInfo.getBtex(total);  //获取补税额
+        double fbrFees = ExcelUtil.getFbr(total); //获取发包人费
+        double gcjsFee = BashInfo.getGcjsFee(total);  //获取工程结算价
+        double[] originalTotalFees = ExcelUtil.getDoubleArray(gzhz,BashInfo.HZ_ALL,1,2); //获取合计费
+        double[] zjgcFees = ExcelUtil.getDoubleArray(gzhz,BashInfo.HZ_ALL,1,3);  //获取直接工程费
+        double zjgcTotal = ExcelUtil.getDouble(gzhz,BashInfo.QT_HJ,0,3);//直接工程费合计
+        double totalRgFee = ExcelUtil.getDouble(importExcel,BashInfo.PROJECTNAME,2,13);  //获取人工费合计金额
+        double[][] originalFees = ExcelUtil.getDoubleArrays(importExcel,BashInfo.MX_ALL,2, new int[]{13, 14, 15, 17}); //获取分部分项费用
+        double fbrFee = ExcelUtil.getDouble(importExcel,BashInfo.PROJECTNAME,2,15); //发包人采购计价表合计金额
+        double csFees = BashInfo.getCsFee(csqd); //获取措施费
+        double[] csRate = BashInfo.getCsRate(csqd); //获取措施费率
         double wordtotal2 =  0.0;  //措施费二合计
         if(ImportExcel.getSheet(csqd2) != null){
             wordtotal2 = SubstationInfo.getCsJzFee(csqd2);
         }
-        double csFees2 = ExcelUtil.getDouble(total,BashInfo.CSXM2,1,2);//措施费二
-       //获取未识别费用
-        List<JkxlAdjustFee> wsbFees = BashInfo.getWsbFee(total);
-        double wsbfee = 0.00;
-        //获取补税额
-        double btex = BashInfo.getBtex(total);
-       //承包人采购设备费
+        double[] aqwmFees = ExcelUtil.getDoubleArray(csqd,BashInfo.CS_AQWM,1, new int[]{3, 4});  //安全文明施工费
+        double gfFees = BashInfo.getJkGf(gf); //规费合计
+        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[] originalTotalFees = ExcelUtil.getDoubleArray(gzhz,BashInfo.HZ_ALL,1,2); //获取合计费
-       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 totalRgFee = ExcelUtil.getDouble(importExcel,BashInfo.PROJECTNAME,2,13);  //获取人工费合计金额
-       double[] csRate = BashInfo.getCsRate(csqd); //获取措施费率
-//       double[] gfRate = BashInfo.getGfRate(gf);  //获取规费率
-       double[] qtFees = BashInfo.getQtFees(qt);  //获取其他费用
-       double gcjsFee = BashInfo.getGcjsFee(total);  //获取工程结算价
-//       double fbrFee = ExcelUtil.getDouble(fbrcg,BashInfo.QT_HJ,0,6); //发包人采购计价表合计金额
-       double fbrFee = ExcelUtil.getDouble(importExcel,BashInfo.PROJECTNAME,2,15); //发包人采购计价表合计金额
-       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 = zg/(fbrFee-zg); //进项税率
-       double csFees = BashInfo.getCsFee(csqd); //安装措施费
-
-       //结算汇总
-        List<Settlement> settlements=SettementUtil.getComparison(settlementList,builtTotal,divisiontotal,wordtotal1,wordtotal2,otherTotal,gfFees,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 textotal = ExcelUtil.getTex(total); //获取税金
-        double fbrFees = ExcelUtil.getFbr(total); //获取发包人费
+        double otherTotal =  ExcelUtil.getDouble(qt,BashInfo.QT_HJ,0,2);//获取其他项目费合计
+        double[] qtFees = BashInfo.getQtFees(qt);  //获取其他费用中场地租用费和招标代理费
+        double zg = zjgcTotal-(aqwmFees[1]/(aqwmFees[0]/100));
+        double jxsl = zg/(fbrFee-zg); //进项税率
         //措施项目
         double csxmHj = ExcelUtil.getDouble(gzhz,BashInfo.HZ_CH,1,2);//措施项目合计
         double[] csxmFees = ExcelUtil.getDoubleArray(importExcel,BashInfo.CS,2,new int[]{13, 14, 15, 17});//措施项目费
@@ -290,6 +269,14 @@ public List<JkxlDetailFee> findList(String id,String type){
         originalFees[5][1] = originalFees[5][1] + csxmFees[1];
         originalFees[5][2] = originalFees[5][2] + csxmFees[2];
         originalFees[5][3] = originalFees[5][3] + csxmFees[3];
+        //数据核验数据
+        List<Settlement> settlementList =  SettementUtil.getComparison(total);
+        double builtTotal = ExcelUtil.getDouble(gzhz,BashInfo.QT_HJ,0,2);//获取架空线路工程费用汇总表 分部分项 合计
+        double wordtotal1 =  BashInfo.getJkCs(csqd);//获取措施费清单计价表一合计
+        double[] divisiontotal=ExcelUtil.getDoubleArray(importExcel,BashInfo.PROJECTNAME,2,new int[]{12,15});//获取分部分项比对数据清单
+        List<Settlement> settlements=SettementUtil.getComparison(settlementList,builtTotal,divisiontotal,wordtotal1,wordtotal2,otherTotal,gfFees,cbperson);
+        Boolean f = SettementUtil.getFlag;
+        settlementService.save(settlements,id);
        //将本体工程费用明细存入集合
        List<JkxlDetailFee> list = new ArrayList<>();
        for(int i=0;i<originalTotalFees.length;i++){
@@ -298,7 +285,6 @@ public List<JkxlDetailFee> findList(String id,String type){
            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
            double originalTotalCost = originalTotalFees[i]; //原合计
            double otherRate = originalTotalCost/builtTotal;   //其他费用分摊比例
-           double orRate = new BigDecimal(otherRate).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); //四舍五入
            double otherFee = qtFees[2]*otherRate;  //其他费用
            double zjgcFee = zjgcFees[i];//直接工程费
            double originalRgCost = originalFees[i][0];// 原人工费
@@ -322,7 +308,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);
@@ -338,7 +323,7 @@ public List<JkxlDetailFee> findList(String id,String type){
            jkxlDetailFee.setId(id);
            list.add(jkxlDetailFee);
        }
-        double tz = 0.00; //总合计金额
+
         double texTotal = 0.00; //税合计金额
         //其他费用补税
         if(qtFees[0]+qtFees[1] != 0.00) {
@@ -398,7 +383,6 @@ public List<JkxlDetailFee> findList(String id,String type){
             if(gftotal != 0.00) {
                 gfRate = jkxlDetailFee1.getFees() / gftotal;
             }
-           double ftRate = jkxlDetailFee1.getZjgcFee()/zjgcTotal;
            double csft = (jsCs-(cstotal1+cstotal2+cstotal3))*csftRate;
            double gfft = (jsGf-gftotal)*gfRate;
            double sgft = (csft+gfft)*texRate;
@@ -437,10 +421,9 @@ public List<JkxlDetailFee> findList(String id,String type){
             }
 
         }
-        //计算差额
-        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);
@@ -452,6 +435,11 @@ public List<JkxlDetailFee> findList(String id,String type){
                wsbfee += fee;
            }
        }
+        //计算差额
+        double tz = 0.00; //总合计金额
+        for(JkxlDetailFee jkxlDetailFee : list){
+            tz += jkxlDetailFee.getTotalFee();
+        }
        double gxFee = Math.abs(gcjsFee-tz-qtFees[0]-qtFees[1]-wsbfee);
        //将其他费用存入集合
        JkxlDetailFee jkxlDetailFee1 = new JkxlDetailFee();
@@ -478,7 +466,6 @@ public List<JkxlDetailFee> findList(String id,String type){
     @Transactional(readOnly = false)
     public void saveDl(MultipartFile file,WbsItem wbsItem) throws IOException, InvalidFormatException {
         String id = wbsItem.getId();
-        String type = wbsItem.getType();
         WbsItem wbsItem1 = itemService.get(id);
         if(wbsItem1 == null){
             wbsItem.setDelFlag("0");
@@ -491,53 +478,42 @@ public List<JkxlDetailFee> findList(String id,String type){
         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 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 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 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 csFees2 = ExcelUtil.getDouble(total,BashInfo.CSXM2,1,2);//措施费二
+        double cbperson = 0.0;  //承包人采购设备费
+        if(ImportExcel.getSheet(cbrsb) != null){
+            cbperson = ExcelUtil.getDouble(cbrsb,BashInfo.QT_HJ,0,6);
+        }
         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);//获取规费合计
-        int[] comlumn2 = {12,15};//定义所要数组
-        List<JkxlAdjustFee> wsbFees = BashInfo.getWsbFee(total);
-        double wsbfee = 0.00;
-        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 azGf = BashInfo.getAzGf(gf); //获取安装规费
         double[] jzgfRate = BashInfo.getJzGfRate(gf);  //获取建筑规费率
-//        double[] azgfRate = BashInfo.getAzGfRate(gf);  //获取安装规费率
-        double[] qtFees = BashInfo.getQtFees(qt);  //获取其他费用
-        double gcjsFee = BashInfo.getGcjsFee(total);  //获取工程结算价
+        List<Settlement> settlementList =  SettementUtil.getComparison(total);
+        int[] comlumn2 = {12,15};//定义所要数组
         double tax = 0.00; //税金
-        double totalfee = 0.00;  //合计
-        //获取补税额
-        double btex = BashInfo.getBtex(total);
-        //承包人采购设备费
-        if(ImportExcel.getSheet(cbrsb) != null){
-            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 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 textotal = ExcelUtil.getTex(total);
-        double fbrFees = ExcelUtil.getFbr(total); //获取发包人费
+        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);  //建筑分部分项工程量清单计价表
@@ -550,7 +526,6 @@ public List<JkxlDetailFee> findList(String id,String type){
             double[] originalTotalJzFees = ExcelUtil.getDoubleArray(jzhz,BashInfo.HZ_JZ,1,2); //获取建筑合计费
             double[] zjgcJzFees = ExcelUtil.getDoubleArray(jzhz,BashInfo.HZ_JZ,1,3);  //获取建筑直接工程费
             double[][] originalJzFees = ExcelUtil.getDoubleArrays(jzqd,BashInfo.MX_JZ,2, new int[]{13, 14, 15, 17}); //获取建筑原始费用
-//            double fbrJzFee = ExcelUtil.getDouble(fbrcg,BashInfo.QT_XJ,0,6); //建筑发包人采购计价表合计金额
             double fbrJzFee = ExcelUtil.getDouble(jzqd,BashInfo.DLJZ,2,15);
             double zjgcJzTotal = ExcelUtil.getDouble(jzhz,BashInfo.QT_HJ,0,3);//建筑直接工程费合计
             double[] aqwmJzFees = ExcelUtil.getDoubleArray(csqd,BashInfo.CS_AQWM,1, new int[]{3, 4});  //建筑安全文明施工费
@@ -597,7 +572,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);
@@ -641,7 +615,6 @@ public List<JkxlDetailFee> findList(String id,String type){
             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 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);//安装人工费费合计
@@ -726,7 +699,6 @@ public List<JkxlDetailFee> findList(String id,String type){
             double[] division1total=ExcelUtil.getDoubleArray(jzqd,BashInfo.DLJZ,2,comlumn2);//建筑分部分项比对数据清单合计
             double[] division2total=ExcelUtil.getDoubleArray(azqd,BashInfo.DLAZ,2,comlumn2);//安装分部分项比对数据清单合计
             double[] division = {division1total[0],division1total[1],division2total[0],division2total[1]};
-            //结算汇总结束
             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);  //获取建筑直接工程费
@@ -734,8 +706,6 @@ public List<JkxlDetailFee> findList(String id,String type){
             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); //建筑发包人采购计价表合计金额
-////            double fbrAzFee = BashInfo.getFbrAzFee(fbrcg);  //安装发包人采购计价表合计金额
             double fbrJzFee = ExcelUtil.getDouble(jzqd,BashInfo.DLJZ,2,15);
             double fbrAzFee = ExcelUtil.getDouble(azqd,BashInfo.DLAZ,2,15);
             double zjgcJzTotal = ExcelUtil.getDouble(jzhz,BashInfo.QT_HJ,0,3);//建筑直接工程费合计
@@ -773,7 +743,6 @@ public List<JkxlDetailFee> findList(String id,String type){
                 double otherFee = qtFees[2]/fbfxFee*originalTotalCost;  //其他费用
                 double zjgcJzFee = zjgcJzFees[i];//直接工程费
                 double originalRgCost = originalJzFees[i][0];// 原人工费
-//                double rgCost = originalRgCost/(1+tcRate[0]);  //后人工费
                 double originalCbrCost = originalJzFees[i][1];  //原承包人采购
                 double originalFbrCost = originalJzFees[i][2];  //原发包人采购
                 double originalJxrCost = originalJzFees[i][3];   //原机械费
@@ -815,7 +784,6 @@ 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];   //原机械费
@@ -899,7 +867,7 @@ public List<JkxlDetailFee> findList(String id,String type){
                 jkxlDetailFee.setTotalFee(total1+btex*rate);
             }
         }
-        //承包人设备费
+        //承包人设备费分摊
         if(cbrfee != 0.00){
             for(JkxlDetailFee jkxlDetailFee : list){
                 double total1 = jkxlDetailFee.getTotalFee();
@@ -955,10 +923,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);
@@ -970,6 +938,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();

+ 27 - 36
src/main/java/com/jeeplus/modules/sg/substation/service/SubstationService.java

@@ -53,60 +53,51 @@ public class SubstationService {
         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,SubstationInfo.SHEET_ZBRCGSB,true);   //招标人采购材料设备计价表
         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 jsCs = ExcelUtil.getDouble(total,BashInfo.JS_CSXM,1,2); //获取措施费合计
+        double jsGf = ExcelUtil.getDouble(total,BashInfo.JS_GF,1,2);  //获取规费合计
         double texRate = ExcelUtil.getTexRate(total); //获取税率
+        double textotal = ExcelUtil.getTex(total);  //获取税金合计
+        double btex = BashInfo.getBtex(total);  //获取补税额
+        double fbrFees = ExcelUtil.getFbr(total); //获取发包人费
+        double gcjsFee = BashInfo.getGcjsFee(total);  //获取工程结算价
+        double jzcsRate = BashInfo.getJzRate(csqd1); //获取建筑措施费率
+        double[] azcsRate = BashInfo.getAzRate(csqd1); //获取安装措施费率
+        double jzcs = BashInfo.getJzCs(csqd1); //建筑措施费
+        double azcs = BashInfo.getAzCs(csqd1);  //安装措施费
+        double azCsFee = BashInfo.getAzCsfee(csqd1); //安装除临时施工费和安全文明施工费合计
+        double word1total =  jzcs+azcs;//获取措施费合计
         double csJzFee = 0.00;  //建筑措施分摊费
         double csAzFee = 0.00;  //安装措施分摊费
         double word2total=0.00;  //获取措施费二表措施项目合计金额
         if(ImportExcel.getSheet(csqd2) != null){
-             csJzFee = SubstationInfo.getCsJzFee(csqd2);//建筑措施分摊费
-             csAzFee = SubstationInfo.getCsAzFee(csqd2);//安装措施分摊费
+             csJzFee = SubstationInfo.getCsJzFee(csqd2);
+             csAzFee = SubstationInfo.getCsAzFee(csqd2);
              word2total=csJzFee+csAzFee;
         }
-       double tbrJzFee = 0.00;
-       double tbrAzFee = 0.00;
-       double cbperson = 0.00;
-       if(ImportExcel.getSheet(tbrsb) != null){
-            tbrJzFee = BashInfo.getFbrJzFee(tbrsb); //投标人建筑费
-            tbrAzFee = BashInfo.getFbrAzFee(tbrsb); //投标人安装费
-            cbperson = ExcelUtil.getDouble(tbrsb,BashInfo.QT_HJ,0,6);//投标人合计
-       }
-//        double fbfxFee = ExcelUtil.getDouble(total,SubstationInfo.JS_FBFX,1,2);  //分部分项工程费
-        double jzcsRate = BashInfo.getJzRate(csqd1); //获取建筑措施费率
-        double[] azcsRate = BashInfo.getAzRate(csqd1); //获取安装措施费率
+        double tbrJzFee = 0.00; //投标人建筑费
+        double tbrAzFee = 0.00; //投标人安装费
+        double cbperson = 0.00; //投标人合计
+        if(ImportExcel.getSheet(tbrsb) != null){
+            tbrJzFee = BashInfo.getFbrJzFee(tbrsb);
+            tbrAzFee = BashInfo.getFbrAzFee(tbrsb);
+            cbperson = ExcelUtil.getDouble(tbrsb,BashInfo.QT_HJ,0,6);
+        }
+        double jzGf = BashInfo.getJzGf(gf);//建筑规费合计
+        double azGf = BashInfo.getAzGf(gf); //安装规费合计
+        double feesBdzCount =  jzGf+azGf;//获取规费合计
         double[] jzgfRate = BashInfo.getJzGfRate(gf);  //获取建筑规费率
-//        double[] azgfRate = BashInfo.getAzGfRate(gf);  //获取安装规费率
-        double[] qtFees = BashInfo.getQtFees(qt);  //获取其他费用
-        double gcjsFee = BashInfo.getGcjsFee(total);  //获取工程结算价
+        double[] qtFees = BashInfo.getQtFees(qt);  //获取其他费
+        double otherBdzTotal =  ExcelUtil.getDouble(qt,BashInfo.QT_HJ,0,2);//获取其他项目费合计
        //获取未识别费用
         List<JkxlAdjustFee> wsbFees = BashInfo.getWsbFee(total);
         double wsbfee = 0.00;
         double tax = 0.00; //税金
         double totalfee = 0.00;  //合计
-       //获取补税额
-       double btex = BashInfo.getBtex(total);
         //变电站 结算汇总
         List<Settlement> settlementsBdz =  SettementUtil.getComparison(total);
-        double jzcs = BashInfo.getJzCs(csqd1); //建筑措施费
-        double azcs = BashInfo.getAzCs(csqd1);  //安装措施费
-        double word1total =  jzcs+azcs;//获取措施费清单计价表一
-        double otherBdzTotal =  ExcelUtil.getDouble(qt,BashInfo.QT_HJ,0,2);//获取其他项目费合计
-       //规费
-        double jzGf = BashInfo.getJzGf(gf);
-        double azGf = BashInfo.getAzGf(gf);
-        double feesBdzCount =  jzGf+azGf;//获取规费合计
-
-       //安装措施费
-       double azCsFee = BashInfo.getAzCsfee(csqd1);
-
-       //获取结算表中基础数据
-       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 fbrFees = ExcelUtil.getFbr(total); //获取发包人费
         if(jzgc !=0.00 && azgc != 0.00){
             ImportExcel jzqd = new ImportExcel(file, 1, BashInfo.SHEET_JZFBFXJJ,true);  //建筑分部分项工程量清单计价表
             ImportExcel azqd = new ImportExcel(file, 1, BashInfo.SHEET_AZFBFXJJ,true);  //安装分部分项工程量清单计价表