|
@@ -941,5 +941,476 @@ public List<JkxlDetailFee> findList(String id,String type){
|
|
feeAdjustService.save(jkxlAdjustFee2);
|
|
feeAdjustService.save(jkxlAdjustFee2);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //通信线路保存数据
|
|
|
|
+ @Transactional(readOnly = false)
|
|
|
|
+ public void saveTx(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");
|
|
|
|
+ //保存项目
|
|
|
|
+ itemService.save(wbsItem);
|
|
|
|
+ }
|
|
|
|
+ List<JkxlDetailFee> jkxlDetailFees = overheadLineMapper.findList(id,type);
|
|
|
|
+ if(jkxlDetailFees != null && jkxlDetailFees.size()>0){
|
|
|
|
+ overheadLineMapper.delete(id);
|
|
|
|
+ feeAdjustService.delete(id);
|
|
|
|
+ settlementService.delete(id);
|
|
|
|
+ }
|
|
|
|
+ //获取调差系数
|
|
|
|
+ double[] tcRate = new double[3];
|
|
|
|
+ tcRate[0] = ruleRatioService.getValueByName(BashInfo.RATIO_RGTC).getValue()/100;
|
|
|
|
+ tcRate[1] = ruleRatioService.getValueByName(BashInfo.RATIO_CLTC).getValue()/100;
|
|
|
|
+ tcRate[2] = ruleRatioService.getValueByName(BashInfo.RATIO_JXTC).getValue()/100;
|
|
|
|
+ //读取表格
|
|
|
|
+ ImportExcel total = new ImportExcel(file,1,new String[]{BashInfo.SHEET_HZB,BashInfo.SHEET_HZB1,BashInfo.SHEET_HZB2},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 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 word1total = ExcelUtil.getDouble(csqd,BashInfo.QT_HJ,0,4);//获取措施费清单计价表一
|
|
|
|
+ double word2total=0.0;
|
|
|
|
+ double csFees2 = ExcelUtil.getDouble(total,BashInfo.CSXM2,1,2);//措施费二
|
|
|
|
+ double otherDlTotal = ExcelUtil.getDouble(qt,BashInfo.QT_HJ,0,2);//获取其他项目费合计
|
|
|
|
+ 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,BashInfo.HZ_JZGC,1,2);//汇总表建筑金额
|
|
|
|
+ double azgc = ExcelUtil.getDouble(total,BashInfo.HZ_AZGC,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[] jzgfRate = BashInfo.getJzGfRate(gf); //获取建筑规费率
|
|
|
|
+ double[] azgfRate = BashInfo.getAzGfRate(gf); //获取安装规费率
|
|
|
|
+ double[] qtFees = BashInfo.getQtFees(qt); //获取其他费用
|
|
|
|
+ double gcjsFee = BashInfo.getGcjsFee(total); //获取工程结算价
|
|
|
|
+ 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 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); //建筑分部分项工程量清单计价表
|
|
|
|
+ ImportExcel jzhz = new ImportExcel(file,1,SubstationInfo.SHEET_JZHZB,true ); //通信线路建筑工程费用汇总表
|
|
|
|
+ double built1Total = ExcelUtil.getDouble(jzhz,BashInfo.QT_HJ,0,2);//建筑分布分项工程量清单计价表合计
|
|
|
|
+ double[] builtTotal={built1Total,0.00};
|
|
|
|
+ double[] division1total=ExcelUtil.getDoubleArray(jzqd,SubstationInfo.JZMX_BJZ,2,comlumn2);//建筑分部分项比对数据清单合计
|
|
|
|
+ double[] division = {division1total[0],division1total[1],0.00,0.00};
|
|
|
|
+ //---结算取值汇总结束
|
|
|
|
+ double[] originalTotalJzFees = ExcelUtil.getDoubleArray(jzhz,BashInfo.TXHZ_JZ,1,2); //获取建筑合计费
|
|
|
|
+ double[] zjgcJzFees = ExcelUtil.getDoubleArray(jzhz,BashInfo.TXHZ_JZ,1,3); //获取建筑直接工程费
|
|
|
|
+ double[][] originalJzFees = ExcelUtil.getDoubleArrays(jzqd,BashInfo.TXMX_JZ,2, new int[]{13, 14, 15, 17}); //获取建筑原始费用
|
|
|
|
+// double fbrJzFee = ExcelUtil.getDouble(fbrcg,BashInfo.QT_XJ,0,6); //建筑发包人采购计价表合计金额
|
|
|
|
+ double fbrJzFee = ExcelUtil.getDouble(jzqd,SubstationInfo.JZMX_BJZ,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}); //建筑安全文明施工费
|
|
|
|
+ double jxslJz = 0.00;
|
|
|
|
+ if(fbrJzFee != 0.00){
|
|
|
|
+ double zgJz = zjgcJzTotal-(aqwmJzFees[1]/(aqwmJzFees[0]/100));
|
|
|
|
+ jxslJz = zgJz/(fbrJzFee-zgJz); //建筑进项税率
|
|
|
|
+ }
|
|
|
|
+ boolean flag = BashInfo.getFlag(originalTotalJzFees,zjgcJzFees);
|
|
|
|
+ //电缆结算汇总
|
|
|
|
+ List<Settlement> dlSettlements = SettementUtil.getDLComparison(settlementList,builtTotal,division,word1total,word2total,otherDlTotal,feesDlCount,cbperson);
|
|
|
|
+ Boolean f = SettementUtil.getFlag;
|
|
|
|
+ //数据核验并保存数据库
|
|
|
|
+ settlementService.save(dlSettlements,id);
|
|
|
|
+ for(int i=0;i<originalTotalJzFees.length;i++){
|
|
|
|
+ JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
|
|
|
|
+ double originalTotalCost = originalTotalJzFees[i]; //原合计
|
|
|
|
+ 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 cbrCost = originalCbrCost/(1+tcRate[1]); //后承包人采购
|
|
|
|
+ double originalFbrCost = originalJzFees[i][2]; //原发包人采购
|
|
|
|
+ double fbrCost = originalFbrCost/(1+jxslJz); //后发包人采购
|
|
|
|
+ double originalJxrCost = originalJzFees[i][3]; //原机械费
|
|
|
|
+ double jxCost = originalJxrCost/(1+tcRate[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 = csFees2*originalTotalCost/fbfxFee; //措施费二
|
|
|
|
+ double fees = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzgfRate[0]+(zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*jzgfRate[1]*0.2; //规费
|
|
|
|
+ if(f){
|
|
|
|
+ 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);
|
|
|
|
+ jkxlDetailFee.setCbrCost(cbrCost);
|
|
|
|
+ jkxlDetailFee.setOriginalFbrCost(originalFbrCost);
|
|
|
|
+ jkxlDetailFee.setFbrCost(fbrCost);
|
|
|
|
+ jkxlDetailFee.setOriginalJxCost(originalJxrCost);
|
|
|
|
+ jkxlDetailFee.setJxCost(jxCost);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee1(measuresFee1);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee2(measuresFee2);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee3(measuresFee3);
|
|
|
|
+ jkxlDetailFee.setFees(fees);
|
|
|
|
+ jkxlDetailFee.setOtherCost(otherFee);
|
|
|
|
+ jkxlDetailFee.setTex(tax);
|
|
|
|
+ jkxlDetailFee.setTotalFee(totalfee);
|
|
|
|
+ jkxlDetailFee.setZjgcFee(zjgcJzFee);
|
|
|
|
+ jkxlDetailFee.setWbsCode(BashInfo.JZTXWBSIDS [i]);
|
|
|
|
+ jkxlDetailFee.setId(id);
|
|
|
|
+ list.add(jkxlDetailFee);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else if(jzgc ==0.00 && azgc != 0.00){
|
|
|
|
+ ImportExcel azqd = new ImportExcel(file,1,BashInfo.SHEET_AZFBFXJJ,true); //安装分部分项工程量清单计价表
|
|
|
|
+ ImportExcel azhz = new ImportExcel(file,1,SubstationInfo.SHEET_HZHZB ,true); //电缆线路安装工程费用汇总表
|
|
|
|
+ double built2Total = ExcelUtil.getDouble(azhz,BashInfo.QT_HJ,0,2);//安装分部分项工程量清单计合计
|
|
|
|
+ double[] builtTotal={0.00,built2Total};
|
|
|
|
+ double[] division2total=ExcelUtil.getDoubleArray(azqd,SubstationInfo.AZMX_BDZAZ,2,comlumn2);//安装分部分项比对数据清单合计
|
|
|
|
+ double[] division = {0.00,0.00,division2total[0],division2total[1]};
|
|
|
|
+ //结算汇总取值结束
|
|
|
|
+ double[] originalTotalAzFees = ExcelUtil.getDoubleArray(azhz,BashInfo.HZ_AZ,1,2); //获取安装合计费
|
|
|
|
+ double[] zjgcAzFees = ExcelUtil.getDoubleArray(azhz,BashInfo.TXHZ_AZ,1,3); //获取安装直接工程费
|
|
|
|
+ double[] rgFees = ExcelUtil.getDoubleArray(azhz,BashInfo.TXHZ_AZ,1,4); //人工费
|
|
|
|
+ double[][] originalAzFees = ExcelUtil.getDoubleArrays(azqd,BashInfo.TXMX_AZ,2, new int[]{13, 14, 15, 17}); //获取安装原始费用
|
|
|
|
+// double fbrAzFee = BashInfo.getFbrAzFee(fbrcg); //安装发包人采购计价表合计金额
|
|
|
|
+ double fbrAzFee = ExcelUtil.getDouble(azqd,SubstationInfo.AZMX_BDZAZ,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){
|
|
|
|
+ double zgAz = zjgcAzTotal-(aqwmAzFees[1]/(aqwmAzFees[0]/100));
|
|
|
|
+ jxslAz = zgAz/(fbrAzFee-zgAz); //安装进项税率
|
|
|
|
+ }
|
|
|
|
+ boolean flag = BashInfo.getFlag(originalTotalAzFees,zjgcAzFees);
|
|
|
|
+ //结算汇总
|
|
|
|
+ List<Settlement> dlSettlements = SettementUtil.getDLComparison(settlementList,builtTotal,division,word1total,word2total,otherDlTotal,feesDlCount,cbperson);
|
|
|
|
+ Boolean f = SettementUtil.getFlag;
|
|
|
|
+ //数据核验并保存数据库
|
|
|
|
+ settlementService.save(dlSettlements,id);
|
|
|
|
+ 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];//直接工程费
|
|
|
|
+ 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]); //后承包人采购
|
|
|
|
+ double originalFbrCost = originalAzFees[i][2]; //原发包人采购
|
|
|
|
+ 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]); //措施费一(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 = rgRate*azGf; //规费
|
|
|
|
+ if(f){
|
|
|
|
+ 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);
|
|
|
|
+ jkxlDetailFee.setOriginalCbrCost(originalCbrCost);
|
|
|
|
+ jkxlDetailFee.setCbrCost(cbrCost);
|
|
|
|
+ jkxlDetailFee.setOriginalFbrCost(originalFbrCost);
|
|
|
|
+ jkxlDetailFee.setFbrCost(fbrCost);
|
|
|
|
+ jkxlDetailFee.setOriginalJxCost(originalJxrCost);
|
|
|
|
+ jkxlDetailFee.setJxCost(jxCost);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee1(measuresFee1);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee2(measuresFee2);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee3(measuresFee3);
|
|
|
|
+ jkxlDetailFee.setFees(fees);
|
|
|
|
+ jkxlDetailFee.setOtherCost(otherFee);
|
|
|
|
+ jkxlDetailFee.setTex(tax);
|
|
|
|
+ jkxlDetailFee.setTotalFee(totalfee);
|
|
|
|
+ jkxlDetailFee.setZjgcFee(zjgcAzFee);
|
|
|
|
+ jkxlDetailFee.setWbsCode(BashInfo.AZTXWBSIDS[i]);
|
|
|
|
+ jkxlDetailFee.setId(id);
|
|
|
|
+ list.add(jkxlDetailFee);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ ImportExcel jzqd = new ImportExcel(file, 1, BashInfo.SHEET_JZFBFXJJ,true); //建筑分部分项工程量清单计价表
|
|
|
|
+ ImportExcel azqd = new ImportExcel(file, 1, BashInfo.SHEET_AZFBFXJJ,true); //安装分部分项工程量清单计价表
|
|
|
|
+ ImportExcel jzhz = new ImportExcel(file, 1, SubstationInfo.SHEET_JZHZB,true); //电缆线路建筑工程费用汇总表
|
|
|
|
+ ImportExcel azhz = new ImportExcel(file, 1, SubstationInfo.SHEET_HZHZB,true); //电缆线路安装工程费用汇总表
|
|
|
|
+ double built1Total = ExcelUtil.getDouble(jzhz,BashInfo.QT_HJ,0,2);//建筑分布分项工程量清单计价表合计
|
|
|
|
+ double built2Total = ExcelUtil.getDouble(azhz,BashInfo.QT_HJ,0,2);//安装分部分项工程量清单计合计
|
|
|
|
+ double[] builtTotal={built1Total,built2Total};
|
|
|
|
+ double[] division1total=ExcelUtil.getDoubleArray(jzqd,SubstationInfo.JZMX_BJZ,2,comlumn2);//建筑分部分项比对数据清单合计
|
|
|
|
+ double[] division2total=ExcelUtil.getDoubleArray(azqd,SubstationInfo.AZMX_BDZAZ,2,comlumn2);//安装分部分项比对数据清单合计
|
|
|
|
+ double[] division = {division1total[0],division1total[1],division2total[0],division2total[1]};
|
|
|
|
+ //结算汇总结束
|
|
|
|
+ double[] originalTotalJzFees = ExcelUtil.getDoubleArray(jzhz,BashInfo.TXHZ_JZ,1,2); //获取建筑合计费
|
|
|
|
+ double[] originalTotalAzFees = ExcelUtil.getDoubleArray(azhz,BashInfo.TXHZ_AZ,1,2); //获取安装合计费
|
|
|
|
+ double[] zjgcJzFees = ExcelUtil.getDoubleArray(jzhz,BashInfo.TXHZ_JZ,1,3); //获取建筑直接工程费
|
|
|
|
+ double[] zjgcAzFees = ExcelUtil.getDoubleArray(azhz,BashInfo.TXHZ_AZ,1,3); //获取安装直接工程费
|
|
|
|
+ double[] rgAzFees = ExcelUtil.getDoubleArray(azhz,BashInfo.TXHZ_AZ,1,4); //获取安装人工费
|
|
|
|
+ double[][] originalJzFees = ExcelUtil.getDoubleArrays(jzqd,BashInfo.TXMX_JZ,2, new int[]{13, 14, 15, 17}); //获取建筑原始费用
|
|
|
|
+ double[][] originalAzFees = ExcelUtil.getDoubleArrays(azqd,BashInfo.TXMX_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,SubstationInfo.JZMX_BJZ,2,15);
|
|
|
|
+ double fbrAzFee = ExcelUtil.getDouble(azqd,SubstationInfo.AZMX_BDZAZ,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;
|
|
|
|
+ double jxslAz = 0.00;
|
|
|
|
+ if(texRate>0.05) {
|
|
|
|
+ if (fbrJzFee != 0.00) {
|
|
|
|
+ double zgJz = zjgcJzTotal - (aqwmJzFees[1] / (aqwmJzFees[0] / 100));
|
|
|
|
+ jxslJz = zgJz / (fbrJzFee - zgJz); //建筑进项税率
|
|
|
|
+ }
|
|
|
|
+ if (fbrAzFee != 0.00) {
|
|
|
|
+ double zgAz = zjgcAzTotal - (aqwmAzFees[1] / (aqwmAzFees[0] / 100));
|
|
|
|
+ jxslAz = zgAz / (fbrAzFee - zgAz); //安装进项税率
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ boolean flagJz = BashInfo.getFlag(originalTotalJzFees,zjgcJzFees);
|
|
|
|
+ boolean flagAz = BashInfo.getFlag(originalTotalAzFees,zjgcAzFees);
|
|
|
|
+ boolean flag = false;
|
|
|
|
+ if(flagJz && flagAz){
|
|
|
|
+ flag = true;
|
|
|
|
+ }
|
|
|
|
+ List<Settlement> dlSettlements = SettementUtil.getDLComparison(settlementList,builtTotal,division,word1total,word2total,otherDlTotal,feesDlCount,cbperson);
|
|
|
|
+ Boolean f = SettementUtil.getFlag;
|
|
|
|
+ //数据核验并保存数据库
|
|
|
|
+ settlementService.save(dlSettlements,id);
|
|
|
|
+ //将本体工程费用明细存入集合
|
|
|
|
+ for(int i=0;i<originalTotalJzFees.length;i++){
|
|
|
|
+ JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
|
|
|
|
+ double originalTotalCost = originalTotalJzFees[i]; //原合计
|
|
|
|
+ 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 cbrCost = originalCbrCost/(1+tcRate[1]); //后承包人采购
|
|
|
|
+ double originalFbrCost = originalJzFees[i][2]; //原发包人采购
|
|
|
|
+ double fbrCost = originalFbrCost/(1+jxslJz); //后发包人采购
|
|
|
|
+ double originalJxrCost = originalJzFees[i][3]; //原机械费
|
|
|
|
+ double jxCost = originalJxrCost/(1+tcRate[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; //规费
|
|
|
|
+ if(f){
|
|
|
|
+ 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);
|
|
|
|
+ jkxlDetailFee.setOriginalCbrCost(originalCbrCost);
|
|
|
|
+ jkxlDetailFee.setCbrCost(cbrCost);
|
|
|
|
+ jkxlDetailFee.setOriginalFbrCost(originalFbrCost);
|
|
|
|
+ jkxlDetailFee.setFbrCost(fbrCost);
|
|
|
|
+ jkxlDetailFee.setOriginalJxCost(originalJxrCost);
|
|
|
|
+ jkxlDetailFee.setJxCost(jxCost);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee1(measuresFee1);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee2(measuresFee2);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee3(measuresFee3);
|
|
|
|
+ jkxlDetailFee.setFees(fees);
|
|
|
|
+ jkxlDetailFee.setOtherCost(otherFee);
|
|
|
|
+ jkxlDetailFee.setTex(tax);
|
|
|
|
+ jkxlDetailFee.setTotalFee(totalfee);
|
|
|
|
+ jkxlDetailFee.setZjgcFee(zjgcJzFee);
|
|
|
|
+ jkxlDetailFee.setWbsCode(BashInfo.JZTXWBSIDS [i]);
|
|
|
|
+ jkxlDetailFee.setId(id);
|
|
|
|
+ list.add(jkxlDetailFee);
|
|
|
|
+ }
|
|
|
|
+ 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];//直接工程费
|
|
|
|
+ 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]); //后承包人采购
|
|
|
|
+ double originalFbrCost = originalAzFees[i][2]; //原发包人采购
|
|
|
|
+ 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]); //措施费一(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 = rgRate*azGf; //规费
|
|
|
|
+ if(f){
|
|
|
|
+ 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);
|
|
|
|
+ jkxlDetailFee.setOriginalCbrCost(originalCbrCost);
|
|
|
|
+ jkxlDetailFee.setCbrCost(cbrCost);
|
|
|
|
+ jkxlDetailFee.setOriginalFbrCost(originalFbrCost);
|
|
|
|
+ jkxlDetailFee.setFbrCost(fbrCost);
|
|
|
|
+ jkxlDetailFee.setOriginalJxCost(originalJxrCost);
|
|
|
|
+ jkxlDetailFee.setJxCost(jxCost);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee1(measuresFee1);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee2(measuresFee2);
|
|
|
|
+ jkxlDetailFee.setMeasuresFee3(measuresFee3);
|
|
|
|
+ jkxlDetailFee.setFees(fees);
|
|
|
|
+ jkxlDetailFee.setOtherCost(otherFee);
|
|
|
|
+ jkxlDetailFee.setTex(tax);
|
|
|
|
+ jkxlDetailFee.setTotalFee(totalfee);
|
|
|
|
+ jkxlDetailFee.setZjgcFee(zjgcAzFee);
|
|
|
|
+ jkxlDetailFee.setWbsCode(BashInfo.AZTXWBSIDS[i]);
|
|
|
|
+ jkxlDetailFee.setId(id);
|
|
|
|
+ list.add(jkxlDetailFee);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ double tz = 0.00; //总合计金额
|
|
|
|
+ double texTotal = 0.00; //税合计金额
|
|
|
|
+ for(JkxlDetailFee jkxlDetailFee : list){
|
|
|
|
+ texTotal += jkxlDetailFee.getTex();
|
|
|
|
+ }
|
|
|
|
+ //其他费用补税
|
|
|
|
+ if(qtFees[0]+qtFees[1] != 0.00) {
|
|
|
|
+ for (JkxlDetailFee jkxlDetailFee : list) {
|
|
|
|
+ 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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //补税
|
|
|
|
+ if(btex != 0.00){
|
|
|
|
+ double tex1 = 0.00;
|
|
|
|
+ for(JkxlDetailFee jkxlDetailFee : list){
|
|
|
|
+ tex1 += jkxlDetailFee.getTex();
|
|
|
|
+ }
|
|
|
|
+ for(JkxlDetailFee jkxlDetailFee : list){
|
|
|
|
+ double tex = jkxlDetailFee.getTex();
|
|
|
|
+ double total1 = jkxlDetailFee.getTotalFee();
|
|
|
|
+ double rate = tex/tex1;
|
|
|
|
+ jkxlDetailFee.setTex(tex+btex*rate);
|
|
|
|
+ jkxlDetailFee.setTotalFee(total1+btex*rate);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //承包人设备费
|
|
|
|
+ if(cbrfee != 0.00){
|
|
|
|
+ for(JkxlDetailFee jkxlDetailFee : list){
|
|
|
|
+ double total1 = jkxlDetailFee.getTotalFee();
|
|
|
|
+ if(jkxlDetailFee.getWbsCode().equals("49320000") && jkxlDetailFee.getTotalFee() != 0.00){
|
|
|
|
+ jkxlDetailFee.setTotalFee(total1+cbrfee);
|
|
|
|
+ } else {
|
|
|
|
+ double rate = jkxlDetailFee.getOriginalTotalCost()/fbfxFee;
|
|
|
|
+ jkxlDetailFee.setTotalFee(total1+cbrfee*rate);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //分摊差额
|
|
|
|
+ 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();
|
|
|
|
+ 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 = (csft+gfft)*texRate;
|
|
|
|
+ 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();
|
|
|
|
+ }
|
|
|
|
+ if(wsbFees != null && wsbFees.size()>0){
|
|
|
|
+ for(JkxlAdjustFee jkxlAdjustFee : wsbFees){
|
|
|
|
+ jkxlAdjustFee.setId(id);
|
|
|
|
+ feeAdjustService.save(jkxlAdjustFee);
|
|
|
|
+ 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);
|
|
|
|
+ //将其他费用存入集合
|
|
|
|
+ JkxlDetailFee jkxlDetailFee1 = new JkxlDetailFee();
|
|
|
|
+ JkxlDetailFee jkxlDetailFee2 = new JkxlDetailFee();
|
|
|
|
+ jkxlDetailFee1.setId(id);
|
|
|
|
+ jkxlDetailFee1.setWbsCode("44120000");
|
|
|
|
+ jkxlDetailFee1.setTotalFee(qtFees[0]);
|
|
|
|
+ jkxlDetailFee2.setWbsCode("44220000");
|
|
|
|
+ jkxlDetailFee2.setTotalFee(qtFees[1]);
|
|
|
|
+ jkxlDetailFee2.setId(id);
|
|
|
|
+ list.add(jkxlDetailFee1);
|
|
|
|
+ list.add(jkxlDetailFee2);
|
|
|
|
+ overheadLineMapper.saveList(list);
|
|
|
|
+ JkxlAdjustFee jkxlAdjustFee2 = new JkxlAdjustFee();
|
|
|
|
+ jkxlAdjustFee2.setId(id);
|
|
|
|
+ jkxlAdjustFee2.setType(BashInfo.CE);
|
|
|
|
+ jkxlAdjustFee2.setFee(gxFee);
|
|
|
|
+ feeAdjustService.save(jkxlAdjustFee2);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
}
|
|
}
|