蔡德晨 5 år sedan
förälder
incheckning
4ec800954c

+ 0 - 25
src/main/java/com/jeeplus/modules/sg/mapper/JkxlMapper.java

@@ -1,25 +0,0 @@
-package com.jeeplus.modules.sg.mapper;
-
-import com.jeeplus.core.persistence.annotation.MyBatisMapper;
-import com.jeeplus.modules.sg.entity.JkxlData;
-import com.jeeplus.modules.sg.entity.RuleRatio;
-import com.jeeplus.modules.sg.entity.TzData;
-import com.jeeplus.modules.sg.entity.WbsProject;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-@MyBatisMapper
-public interface JkxlMapper {
-    RuleRatio getValue(String ratioName);
-    List<JkxlData> getList(String id);
-    JkxlData getData(@Param("id")String id,@Param("wbsCode")String wbsCode);
-    void save(JkxlData jkxlData);
-    void saveProject(WbsProject project);
-    List<JkxlData> findList(String id);
-    void updateDate(JkxlData jkxlData);
-
-    List<TzData> getTzFee(TzData tzData);
-    void updateTzFee(TzData tzData);
-    void saveTzFee(TzData tzData);
-}

+ 1 - 1
src/main/java/com/jeeplus/modules/sg/entity/DdtzData.java

@@ -1,4 +1,4 @@
-package com.jeeplus.modules.sg.entity;
+package com.jeeplus.modules.sg.overheadline.entity;
 
 public class DdtzData {
     private String id;

+ 6 - 6
src/main/java/com/jeeplus/modules/sg/entity/FtData.java

@@ -1,11 +1,11 @@
-package com.jeeplus.modules.sg.entity;
+package com.jeeplus.modules.sg.overheadline.entity;
 
 public class FtData {
-    private String id;
-    private String code;
-    private String state;
-    private Double fee;
-    private String type;
+    private String id;   //项目ID
+    private String code;   //分摊费用名称
+    private String state;  //调整类型  1:增加  2:减少
+    private Double fee;   //调整费用
+    private String type;  //分摊类型
 
     public String getType() {
         return type;

+ 2 - 4
src/main/java/com/jeeplus/modules/sg/entity/TzData.java

@@ -1,8 +1,6 @@
-package com.jeeplus.modules.sg.entity;
+package com.jeeplus.modules.sg.overheadline.entity;
 
-import java.util.List;
-
-public class TzData {
+public class JkxlAdjustFee {
     private String id;
     private String type;
     private Double fee;

+ 36 - 75
src/main/java/com/jeeplus/modules/sg/entity/JkxlData.java

@@ -1,47 +1,42 @@
-package com.jeeplus.modules.sg.entity;
+package com.jeeplus.modules.sg.overheadline.entity;
 
 import com.jeeplus.common.utils.excel.annotation.ExcelField;
 
-public class JkxlData {
-    private String id;
-    private String wbsCode;
-    private Double originalTotalCost;
-    private Double zjgcFee;
-    private Double originalRgCost;
-    private Double originalCbrCost;
-    private Double originalFbrCost;
-    private Double originalZgj;
-    private Double originalJxCost;
-    private Double totalCost;
-    private Double rgCost;
-    private Double cbrCost;
-    private Double fbrCost;
-    private Double zgj;
-    private Double jxCost;
-    private Double measuresFee1;
-    private Double measuresFee2;
-    private Double measuresFee3;
-    private Double otherCost;
-    private Double fees;
-    private Double tex;
-    private Double totalFee;
-    private Double originalRate;
-    private Double bzFee;
-    private Double jkFee;
-    private Double rgFtFee;
-    private Double cbrFtFee;
-    private Double fbrFtFee;
-    private Double jxFtFee;
-    private Double gxFee;
-
-    private String wbsId;
-    private String projectId;
-    private String describe;
-    private String parentNode;
-    private String mountMatter;
-    private String mountServer;
-    private String subjectAllocate;
-    private String state;
+public class JkxlDetailFee {
+    private String id;  //项目ID
+    private String wbsCode;  //WBS识别码
+    private Double originalTotalCost;  //分布分项合计金额
+    private Double zjgcFee;  //直接工程费
+    private Double originalRgCost;  //分布分项前人工费
+    private Double originalCbrCost;  //分布分项前承包人采购费
+    private Double originalFbrCost;  //分布分项前发包人采购费
+    private Double originalJxCost;  //分部分项前机械费
+    private Double rgCost;  //分部分项调差后人工费
+    private Double cbrCost;  //分布分项调差后承包人采购费
+    private Double fbrCost;   //分布分项调差后发包人采购费
+    private Double jxCost;  //分布分项调差后发包人机械费
+    private Double measuresFee1;  //措施费一(1)
+    private Double measuresFee2;  //措施费一(2)
+    private Double measuresFee3;  //措施费二
+    private Double otherCost;   //其他费用
+    private Double fees;   //规费
+    private Double tex;   //税金
+    private Double originalRate;  //总金额占比
+    private Double rgFtFee;  //共性人工分摊费用
+    private Double cbrFtFee;  //共性承包人采购分摊费用
+    private Double fbrFtFee;   //共性发包人采购分摊费用
+    private Double jxFtFee;  //共性机械分摊费用
+    private Double gxFee;   //共性分摊费
+    private Double totalFee;   //合计金额
+
+    private String wbsId;  //标准 WBS 要素
+    private String projectId;  //内部项目号
+    private String describe;  //描述
+    private String parentNode;  //父节点
+    private String mountMatter;   //挂接物料
+    private String mountServer;   //挂接服务
+    private String subjectAllocate;  //科目分配
+    private String state;   //1:主体部分  2:其他部分
 
 
     public Double getGxFee() {
@@ -234,13 +229,6 @@ public class JkxlData {
         this.originalFbrCost = originalFbrCost;
     }
 
-    public Double getOriginalZgj() {
-        return originalZgj;
-    }
-
-    public void setOriginalZgj(Double originalZgj) {
-        this.originalZgj = originalZgj;
-    }
 
     public Double getOriginalJxCost() {
         return originalJxCost;
@@ -250,13 +238,6 @@ public class JkxlData {
         this.originalJxCost = originalJxCost;
     }
 
-    public Double getTotalCost() {
-        return totalCost;
-    }
-
-    public void setTotalCost(Double totalCost) {
-        this.totalCost = totalCost;
-    }
 
     public Double getRgCost() {
         return rgCost;
@@ -282,13 +263,7 @@ public class JkxlData {
         this.fbrCost = fbrCost;
     }
 
-    public Double getZgj() {
-        return zgj;
-    }
 
-    public void setZgj(Double zgj) {
-        this.zgj = zgj;
-    }
 
     public Double getJxCost() {
         return jxCost;
@@ -338,19 +313,5 @@ public class JkxlData {
         this.tex = tex;
     }
 
-    public Double getBzFee() {
-        return bzFee;
-    }
-
-    public void setBzFee(Double bzFee) {
-        this.bzFee = bzFee;
-    }
 
-    public Double getJkFee() {
-        return jkFee;
-    }
-
-    public void setJkFee(Double jkFee) {
-        this.jkFee = jkFee;
-    }
 }

+ 5 - 5
src/main/java/com/jeeplus/modules/sg/entity/RuleRatio.java

@@ -1,10 +1,10 @@
-package com.jeeplus.modules.sg.entity;
+package com.jeeplus.modules.sg.overheadline.entity;
 
 public class RuleRatio {
-    private String id;
-    private String editionNo;
-    private String ratioName;
-    private Double value;
+    private String id;   //ID
+    private String editionNo;  //版本号
+    private String ratioName;  //系数名称
+    private Double value;   //系数值(%)
 
     public String getId() {
         return id;

+ 9 - 9
src/main/java/com/jeeplus/modules/sg/entity/WbsElements.java

@@ -1,14 +1,14 @@
-package com.jeeplus.modules.sg.entity;
+package com.jeeplus.modules.sg.overheadline.entity;
 
 public class WbsElements {
-    private String id;
-    private String shortId;
-    private String projectId;
-    private String describe;
-    private String subjectAllocate;
-    private String mountMatter;
-    private String mountServer;
-    private String parentNode;
+    private String id;  //wbs id
+    private String shortId;  //简明id
+    private String projectId;  //内部项目号
+    private String describe;  //描述
+    private String subjectAllocate;  //科目分配
+    private String mountMatter;  //挂接物料
+    private String mountServer;  //挂接服务
+    private String parentNode;   //父节点
 
     public String getId() {
         return id;

+ 4 - 4
src/main/java/com/jeeplus/modules/sg/entity/WbsProject.java

@@ -1,11 +1,11 @@
-package com.jeeplus.modules.sg.entity;
+package com.jeeplus.modules.sg.overheadline.entity;
 
 import java.util.Date;
 
 public class WbsProject {
-    private String id;
-    private String name;
-    private Date createDate;
+    private String id;    //项目ID
+    private String name;    //项目名称
+    private Date createDate;   //创建时间
 
     public String getId() {
         return id;

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

@@ -0,0 +1,18 @@
+package com.jeeplus.modules.sg.overheadline.mapper;
+
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee;
+import com.jeeplus.modules.sg.overheadline.entity.WbsProject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@MyBatisMapper
+public interface OverheadLineMapper {
+    List<JkxlDetailFee> getList(String id);
+    JkxlDetailFee getData(@Param("id")String id, @Param("wbsCode")String wbsCode);
+    void save(JkxlDetailFee jkxlDetailFee);
+    void saveProject(WbsProject project);
+    List<JkxlDetailFee> findList(String id);
+    void updateDate(JkxlDetailFee jkxlDetailFee);
+}

+ 23 - 67
src/main/java/com/jeeplus/modules/sg/mapper/xml/JkxlMapper.xml

@@ -1,14 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.jeeplus.modules.sg.mapper.JkxlMapper">
-	<select id="getValue" parameterType="String" resultType="com.jeeplus.modules.sg.entity.RuleRatio">
-		select value from sg_rule_ratio
-		<where>
-			ratio_name = #{ratioName}
-		</where>
-	</select>
+<mapper namespace="com.jeeplus.modules.sg.overheadline.mapper.OverheadLineMapper">
 
-	<select id="getList" parameterType="String" resultType="com.jeeplus.modules.sg.entity.JkxlData">
+	<select id="getList" parameterType="String" resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
         SELECT
          a.describe,
          a.short_id as wbsCode,
@@ -32,18 +26,16 @@
          b.zjgc_fee as zjgcFee,
          b.total_fee as totalFee,
          b.original_rate as originalRate,
-         b.bz_fee as bzFee,
-         b.jk_fee as jkFee,
-      b.rg_fee_ft      as rgFtFee,
-       b.cbr_fee_ft    as cbrFtFee,
-       b.fbr_fee_ft    as fbrFtFee,
-       b.jx_fee_ft   as jxFtFee,
-       b.gx_fee as gxFee
-         FROM sg_wbs_elements_data a LEFT JOIN sg_wbs_fee b on a.short_id = b.wbs_code
+         b.rg_fee_ft as rgFtFee,
+         b.cbr_fee_ft as cbrFtFee,
+         b.fbr_fee_ft as fbrFtFee,
+         b.jx_fee_ft as jxFtFee,
+         b.gx_fee as gxFee
+         FROM sg_wbs_elements_jkxl a LEFT JOIN sg_fee_detail_jkxl b on a.short_id = b.wbs_code
          and b.id = #{id}
 	</select>
 
-	<select id="getData"  resultType="com.jeeplus.modules.sg.entity.JkxlData">
+	<select id="getData"  resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
         SELECT
          a.describe,
          a.short_id as wbsCode,
@@ -68,20 +60,18 @@
          b.zjgc_fee as zjgcFee,
          b.total_fee as totalFee,
          b.original_rate as originalRate,
-         b.bz_fee as bzFee,
-         b.jk_fee as jkFee,
-      b.rg_fee_ft      as rgFtFee,
-       b.cbr_fee_ft    as cbrFtFee,
-       b.fbr_fee_ft    as fbrFtFee,
-       b.jx_fee_ft   as jxFtFee
-         FROM sg_wbs_elements_data a LEFT JOIN sg_wbs_fee b on a.short_id = b.wbs_code
+         b.rg_fee_ft   as rgFtFee,
+         b.cbr_fee_ft  as cbrFtFee,
+         b.fbr_fee_ft  as fbrFtFee,
+         b.jx_fee_ft as jxFtFee
+         FROM sg_wbs_elements_jkxl a LEFT JOIN sg_fee_detail_jkxl b on a.short_id = b.wbs_code
          <where>
          b.id = #{id}  and a.short_id = #{wbsCode}
 		 </where>
 	</select>
 
 
-	<select id="findList" parameterType="String" resultType="com.jeeplus.modules.sg.entity.JkxlData">
+	<select id="findList" parameterType="String" resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
 		 SELECT
 		 a.id as wbsId,
          a.project_id as projectId,
@@ -91,14 +81,14 @@
          a.mount_matter as mountMatter,
          a.mount_server as mountServer,
          b.total_fee as totalFee
-         FROM sg_wbs_elements a LEFT JOIN sg_wbs_fee b on a.short_id = b.wbs_code
+         FROM sg_wbs_elements a LEFT JOIN sg_fee_detail_jkxl b on a.short_id = b.wbs_code
          and b.id = #{id}
          order by a.id
 	</select>
 
 
-	<insert id="save" parameterType="com.jeeplus.modules.sg.entity.JkxlData">
-		insert into sg_wbs_fee
+	<insert id="save" parameterType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
+		insert into sg_fee_detail_jkxl
 		(id,
 		 wbs_code,
 		 original_total_cost,
@@ -118,8 +108,6 @@
 		 fees,
 		 tex,
 		 total_fee,
-		 bz_fee,
-		 jk_fee,
 		 zjgc_fee,
 		 rg_fee_ft,
 		 cbr_fee_ft,
@@ -146,8 +134,6 @@
 		 #{fees},
 		 #{tex},
 		 #{totalFee},
-		 #{bzFee},
-		 #{jkFee},
 		 #{zjgcFee},
 		 #{rgFtFee},
 		 #{cbrFtFee},
@@ -159,8 +145,8 @@
 
 
 
-    <update id="updateDate" parameterType="com.jeeplus.modules.sg.entity.WbsProject">
-          update sg_wbs_fee set
+    <update id="updateDate" parameterType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
+          update sg_fee_detail_jkxl set
              <if test="rgFtFee != null and rgFtFee != ''">
 				 rg_fee_ft = #{rgFtFee},
 			 </if>
@@ -200,41 +186,11 @@
           </where>
     </update>
 
-	<select id="getTzFee" parameterType="com.jeeplus.modules.sg.entity.TzData" resultType="com.jeeplus.modules.sg.entity.TzData">
-		select id,type,fee from sg_wbs_fee_tz
-		<where>
-			<if test="type != null and type != ''">
-				type = #{type} and
-			</if>
-			id = #{id}
-		</where>
-		order by type
-	</select>
 
-	<update id="updateTzFee" parameterType="com.jeeplus.modules.sg.entity.TzData">
-		update sg_wbs_fee_tz set fee = #{fee}
-		<where>
-			<if test="type != null and type != ''">
-				type = #{type} and
-			</if>
-			id = #{id}
-		</where>
-	</update>
-
-	<insert id="saveTzFee" parameterType="com.jeeplus.modules.sg.entity.TzData">
-		insert into sg_wbs_fee_tz
-		(
-		 id,
-		 type,
-		 fee
-		)values (
-		#{id},
-		#{type},
-		#{fee}
-		)
-	</insert>
 
-	<insert id="saveProject" parameterType="com.jeeplus.modules.sg.entity.WbsProject">
+
+
+	<insert id="saveProject" parameterType="com.jeeplus.modules.sg.overheadline.entity.WbsProject">
 		insert into sg_wbs_project
 		(id,
 		 project_name,

+ 58 - 0
src/main/java/com/jeeplus/modules/sg/overheadline/service/OverheadLineService.java

@@ -0,0 +1,58 @@
+package com.jeeplus.modules.sg.overheadline.service;
+
+import com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee;
+import com.jeeplus.modules.sg.overheadline.entity.WbsProject;
+import com.jeeplus.modules.sg.overheadline.mapper.OverheadLineMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashMap;
+import java.util.List;
+
+@Service
+public class OverheadLineService {
+    @Autowired
+    private OverheadLineMapper overheadLineMapper;
+    @Autowired
+    private FeeAdjustService feeAdjustService;
+
+
+
+
+   public List<JkxlDetailFee> getList(String id){
+       return overheadLineMapper.getList(id);
+   }
+
+   public List<JkxlDetailFee> findList(String id){
+       return overheadLineMapper.findList(id);
+   }
+
+   public JkxlDetailFee getDate(String id, String wbsCode){
+       return overheadLineMapper.getData(id,wbsCode);
+   }
+
+   @Transactional
+   public void save(HashMap map){
+       String id = (String) map.get("id");
+       List<JkxlDetailFee> list = (List<JkxlDetailFee>) map.get("list");
+       double[] tzfee = (double[]) map.get("tzFee");
+       WbsProject wbsProject = (WbsProject) map.get("wbsProject");
+       overheadLineMapper.saveProject(wbsProject);
+       for(JkxlDetailFee jkxlDetailFee :list) {
+           overheadLineMapper.save(jkxlDetailFee);
+       }
+       feeAdjustService.saveTzFee(tzfee,id);
+   }
+
+    @Transactional
+    public void updataDate(JkxlDetailFee jkxlDetailFee){
+        overheadLineMapper.updateDate(jkxlDetailFee);
+    }
+
+    @Transactional
+   public void saveProject(WbsProject wbsProject){
+       overheadLineMapper.saveProject(wbsProject);
+   }
+
+}

+ 827 - 0
src/main/java/com/jeeplus/modules/sg/overheadline/web/OverheadLineController.java

@@ -0,0 +1,827 @@
+package com.jeeplus.modules.sg.overheadline.web;
+
+import com.alibaba.fastjson.JSONArray;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.common.utils.sg.ExcelUtil;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.sg.overheadline.entity.*;
+import com.jeeplus.modules.sg.overheadline.service.FeeAdjustService;
+import com.jeeplus.modules.sg.overheadline.service.OverheadLineService;
+import com.jeeplus.modules.sg.overheadline.service.RuleRatioService;
+import com.jeeplus.modules.sg.overheadline.util.BashInfo;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 架空线路
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/jkxl")
+public class OverheadLineController extends BaseController {
+  @Autowired
+  private OverheadLineService overheadLineService;
+  @Autowired
+  private RuleRatioService ruleRatioService;
+  @Autowired
+  private FeeAdjustService feeAdjustService;
+
+  @RequestMapping("/index")
+  public String toImport(){
+    return "modules/sg/free/indexProject";
+  }
+
+  /**
+   *数据导入
+   */
+  @RequestMapping("/import")
+  public String importFile(MultipartFile file, RedirectAttributes redirectAttributes, HttpServletRequest request, Model model){
+    double sl = Double.valueOf(request.getParameter("jxsl"));
+    String projectName = request.getParameter("name");
+    String id = getId();
+    try {
+      double[] rate = getRate();
+      WbsProject wbsProject = new WbsProject();
+      wbsProject.setId(id);
+      wbsProject.setName(projectName);
+      wbsProject.setCreateDate(new Date());
+      List<JkxlDetailFee> list = getData(file,rate,id,sl);
+      double[] tzfee = getTzFee(file);
+      HashMap<String,Object> map = new HashMap<String,Object>();
+      map.put("id",id);
+      map.put("list",list);
+      map.put("wbsProject",wbsProject);
+      map.put("tzFee",tzfee);
+      overheadLineService.save(map);
+    } catch (Exception e){
+      addMessage(redirectAttributes, "导入失败");
+    }
+
+    addMessage(redirectAttributes, "导入成功");
+    return "redirect:/a/jkxl/list?id="+id;
+  }
+
+  /**
+   *金额分摊调整
+   */
+  @RequestMapping("/fttz")
+  public String reList(FtData ftData, Model model,RedirectAttributes redirectAttributes){
+      String id = ftData.getId();
+      String code = ftData.getCode();
+      String state = ftData.getState();
+      String type = ftData.getType();
+      double fee = ftData.getFee();
+      double total = 0.00;
+      try {
+        List<JkxlDetailFee> jkxl = overheadLineService.getList(id);
+        List<JkxlDetailFee> jkxlDetailFees = new ArrayList<>();
+        for(JkxlDetailFee jkxlDetailFee : jkxl){
+          if(jkxlDetailFee.getOriginalTotalCost() != null){
+            jkxlDetailFees.add(jkxlDetailFee);
+          }
+        }
+        if(code.equals("1")){
+            for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
+                total += jkxlDetailFee.getRgCost();
+          }
+            for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
+              JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+              jkxlDetailFee.setId(id);
+              jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
+              double rgFee = jkxlDetailFee1.getRgCost();
+              double totalFee = jkxlDetailFee1.getTotalFee();
+              double ftFee = rgFee/total*fee;
+              jkxlDetailFee.setRgFtFee(ftFee);
+              if(state.equals("1")){
+                double zFee = totalFee+ftFee;
+                jkxlDetailFee.setTotalFee(zFee);
+              }else {
+                double zFee = totalFee-ftFee;
+                jkxlDetailFee.setTotalFee(zFee);
+              }
+              overheadLineService.updataDate(jkxlDetailFee);
+            }
+        }
+        if(code.equals("2")){
+          for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
+            total += jkxlDetailFee.getCbrCost();
+          }
+          for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
+            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+            jkxlDetailFee.setId(id);
+            jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
+            double rgFee = jkxlDetailFee1.getCbrCost();
+            double totalFee = jkxlDetailFee1.getTotalFee();
+            double ftFee = rgFee/total*fee;
+            jkxlDetailFee.setCbrFtFee(ftFee);
+            if(state.equals("1")){
+              double zFee = totalFee+ftFee;
+              jkxlDetailFee.setTotalFee(zFee);
+            }else {
+              double zFee = totalFee-ftFee;
+              jkxlDetailFee.setTotalFee(zFee);
+            }
+            overheadLineService.updataDate(jkxlDetailFee);
+          }
+        }
+        if(code.equals("3")){
+          for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
+            total += jkxlDetailFee.getFbrCost();
+          }
+          for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
+            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+            jkxlDetailFee.setId(id);
+            jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
+            double rgFee = jkxlDetailFee1.getFbrCost();
+            double totalFee = jkxlDetailFee1.getTotalFee();
+            double ftFee = rgFee/total*fee;
+            jkxlDetailFee.setFbrFtFee(ftFee);
+            if(state.equals("1")){
+              double zFee = totalFee+ftFee;
+              jkxlDetailFee.setTotalFee(zFee);
+            }else {
+              double zFee = totalFee-ftFee;
+              jkxlDetailFee.setTotalFee(zFee);
+            }
+            overheadLineService.updataDate(jkxlDetailFee);
+          }
+        }
+        if(code.equals("4")){
+          for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
+            total += jkxlDetailFee.getJxCost();
+          }
+          for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
+            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+            jkxlDetailFee.setId(id);
+            jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
+            double rgFee = jkxlDetailFee1.getJxCost();
+            double totalFee = jkxlDetailFee1.getTotalFee();
+            double ftFee = rgFee/total*fee;
+            jkxlDetailFee.setJxFtFee(ftFee);
+            if(state.equals("1")){
+              double zFee = totalFee+ftFee;
+              jkxlDetailFee.setTotalFee(zFee);
+            }else {
+              double zFee = totalFee-ftFee;
+              jkxlDetailFee.setTotalFee(zFee);
+            }
+            overheadLineService.updataDate(jkxlDetailFee);
+          }
+        }
+        if(code.equals("5")){
+          for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
+            total += jkxlDetailFee.getMeasuresFee1();
+          }
+          for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
+            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+            jkxlDetailFee.setId(id);
+            jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
+            double rgFee = jkxlDetailFee1.getMeasuresFee1();
+            double totalFee = jkxlDetailFee1.getTotalFee();
+            double ftFee = rgFee/total*fee;
+            if(state.equals("1")){
+              double zFee = totalFee+ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }else {
+              double zFee = totalFee-ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }
+            overheadLineService.updataDate(jkxlDetailFee);
+          }
+        }
+        if(code.equals("6")){
+          for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
+            total += jkxlDetailFee.getMeasuresFee2();
+          }
+          for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
+            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+            jkxlDetailFee.setId(id);
+            jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
+            double rgFee = jkxlDetailFee1.getMeasuresFee2();
+            double totalFee = jkxlDetailFee1.getTotalFee();
+            double ftFee = rgFee/total*fee;
+            if(state.equals("1")){
+              double zFee = totalFee+ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }else {
+              double zFee = totalFee-ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }
+            overheadLineService.updataDate(jkxlDetailFee);
+          }
+        }
+        if(code.equals("7")){
+          for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
+            total += jkxlDetailFee.getMeasuresFee3();
+          }
+          for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
+            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+            jkxlDetailFee.setId(id);
+            jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
+            double rgFee = jkxlDetailFee1.getMeasuresFee3();
+            double totalFee = jkxlDetailFee1.getTotalFee();
+            double ftFee = rgFee/total*fee;
+            if(state.equals("1")){
+              double zFee = totalFee+ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }else {
+              double zFee = totalFee-ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }
+            overheadLineService.updataDate(jkxlDetailFee);
+          }
+        }
+        if(code.equals("8")){
+          for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
+            total += jkxlDetailFee.getOtherCost();
+          }
+          for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
+            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+            jkxlDetailFee.setId(id);
+            jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
+            double rgFee = jkxlDetailFee1.getOtherCost();
+            double totalFee = jkxlDetailFee1.getTotalFee();
+            double ftFee = rgFee/total*fee;
+            if(state.equals("1")){
+              double zFee = totalFee+ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }else {
+              double zFee = totalFee-ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }
+            overheadLineService.updataDate(jkxlDetailFee);
+          }
+        }
+        if(code.equals("9")){
+          for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
+            total += jkxlDetailFee.getFees();
+          }
+          for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
+            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+            jkxlDetailFee.setId(id);
+            jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
+            double rgFee = jkxlDetailFee1.getFees();
+            double totalFee = jkxlDetailFee1.getTotalFee();
+            double ftFee = rgFee/total*fee;
+            if(state.equals("1")){
+              double zFee = totalFee+ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }else {
+              double zFee = totalFee-ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }
+            overheadLineService.updataDate(jkxlDetailFee);
+          }
+        }
+        if(code.equals("10")){
+          for(JkxlDetailFee jkxlDetailFee : jkxlDetailFees) {
+            total += jkxlDetailFee.getTex();
+          }
+          for(JkxlDetailFee jkxlDetailFee1 : jkxlDetailFees){
+            JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+            jkxlDetailFee.setId(id);
+            jkxlDetailFee.setWbsCode(jkxlDetailFee1.getWbsCode());
+            double rgFee = jkxlDetailFee1.getTex();
+            double totalFee = jkxlDetailFee1.getTotalFee();
+            double ftFee = rgFee/total*fee;
+            if(state.equals("1")){
+              double zFee = totalFee+ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee+ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }else {
+              double zFee = totalFee-ftFee;
+              jkxlDetailFee.setMeasuresFee1(rgFee-ftFee);
+              jkxlDetailFee.setTotalFee(zFee);
+            }
+            overheadLineService.updataDate(jkxlDetailFee);
+          }
+        }
+        JkxlAdjustFee jkxlAdjustFee = new JkxlAdjustFee();
+        jkxlAdjustFee.setType(type);
+        jkxlAdjustFee.setId(id);
+        feeAdjustService.updateFee(jkxlAdjustFee);
+      } catch (Exception e){
+        addMessage(redirectAttributes, "调整失败");
+      }
+    addMessage(redirectAttributes, "调整成功");
+    return "redirect:/a/jkxl/list?id="+id;
+  }
+
+
+  /**
+   *金额单独调整
+   */
+  @RequestMapping("/ddtz")
+  public String ddtz(JkxlAdjustFee jkxlAdjustFee, Model model, RedirectAttributes redirectAttributes){
+    String id = jkxlAdjustFee.getId();
+    String type = jkxlAdjustFee.getType();
+    String state  = jkxlAdjustFee.getState();
+    double fee = jkxlAdjustFee.getFee();
+    String data1 = jkxlAdjustFee.getData1();
+    String row = data1.replaceAll("&quot;","\\\"");
+    List<DdtzData> ts = (List<DdtzData>) JSONArray.parseArray(row, DdtzData.class);
+    try {
+      for(DdtzData ddtzData: ts){
+        double tzFee = Double.valueOf(ddtzData.getFee());
+        String wbsCode = ddtzData.getWbsCode();
+        double otherFee = overheadLineService.getDate(id,wbsCode).getOtherCost();
+        double totalFee = overheadLineService.getDate(id,wbsCode).getTotalFee();
+        if(state.equals("1")){
+          otherFee = otherFee+tzFee;
+          totalFee = totalFee+tzFee;
+        }
+        if(state.equals("2")){
+          otherFee = otherFee-tzFee;
+          totalFee = totalFee-tzFee;
+        }
+        JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+        jkxlDetailFee.setId(id);
+        jkxlDetailFee.setWbsCode(wbsCode);
+        jkxlDetailFee.setOtherCost(otherFee);
+        jkxlDetailFee.setTotalFee(totalFee);
+        overheadLineService.updataDate(jkxlDetailFee);
+      }
+      feeAdjustService.updateFee(jkxlAdjustFee);
+
+    }catch (Exception e){
+      addMessage(redirectAttributes, "调整失败");
+    }
+    addMessage(redirectAttributes, "调整成功");
+    return "redirect:/a/jkxl/list?id="+id;
+  }
+
+
+
+
+  @RequestMapping("/list")
+  public String list(HttpServletRequest request,Model model){
+    String id = request.getParameter("id");
+    JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+    JkxlAdjustFee jkxlAdjustFee = new JkxlAdjustFee();
+    jkxlDetailFee.setId(id);
+    jkxlAdjustFee.setId(id);
+    List<JkxlDetailFee> list1 = new ArrayList<>();
+    list1.add(jkxlDetailFee);
+    List<JkxlDetailFee> list = overheadLineService.getList(id);
+    list.addAll(getTotal(list));
+    List<JkxlAdjustFee> list2 = feeAdjustService.getTzFee(jkxlAdjustFee);
+    HashMap map = new HashMap();
+    map.put("list1",list1);
+    map.put("list",list);
+    map.put("list2",list2);
+    model.addAttribute("map",map);
+    return "modules/sg/free/wbslist";
+  }
+
+
+
+
+  /**
+   *导出
+   */
+  @RequestMapping("/export")
+  public String export(HttpServletRequest request, HttpServletResponse response,Model model,RedirectAttributes redirectAttributes) {
+    String id = request.getParameter("id");
+    try{
+      String fileName = "架空线路"+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+      List<JkxlDetailFee> list = overheadLineService.findList(id);
+      new ExportExcel(null, JkxlDetailFee.class).setDataList(list).write(response, fileName).dispose();
+      return null;
+    }catch (Exception e){
+      addMessage(redirectAttributes, "导出失败");
+    }
+     addMessage(redirectAttributes, "导出成功");
+    return "redirect:/a/jkxl/list?id="+id;
+  }
+
+
+  public List<JkxlDetailFee> getData(MultipartFile file, double[] rate, String id, double sl) throws IOException, InvalidFormatException {
+    ImportExcel importExcel = new ImportExcel(file,1,BashInfo.SHEET_FBFXJJ);  //分部分项工程量清单计价表
+    ImportExcel csqd = new ImportExcel(file,1,BashInfo.SHEET_CSB);  // 措施项目清单计价表(一)
+    ImportExcel gf = new ImportExcel(file,1,BashInfo.SHEET_GFQD);  //规费项目清单计价表
+    ImportExcel qt = new ImportExcel(file,1,BashInfo.SHEET_QTFY);  //其他项目清单计价表
+    ImportExcel total = new ImportExcel(file,1,BashInfo.SHEET_HZB );  //工程项目竣工结算汇总表
+    ImportExcel gzhz = new ImportExcel(file,1,BashInfo.SHEET_GCHZ );   //架空线路工程费用汇总表
+    double[] csRate = getCsRate(csqd);
+    double[] gfRate = getGfRate(gf);
+    double[] qtFees = getQtFees(qt);
+    //获取补增值税税率调整差额和扣减甲供材超供材料费和合计
+    double[] wsbFees = ExcelUtil.getDoubleArray(total, new String[]{BashInfo.BZZSSL,BashInfo.KJJGCC,BashInfo.GCJS},1,2);
+    int[] zjgcFee = getZjgcFee(gzhz);
+    double texRate = ExcelUtil.getTexRate(total); //获取税率
+    double totalFee = 0.00;
+    List<JkxlDetailFee> list = new ArrayList<>();
+    int lastRow = importExcel.getLastDataRowNum();
+    int[] row = new int[6];
+    for(int i=0;i<lastRow;i++){
+      String type =  importExcel.getValue(i+1,2);
+      if(type.equals(BashInfo.PROJECTNAME)){
+        totalFee = importExcel.getDouble(i+1,12);
+        continue;
+      }
+      if(type.equals(BashInfo.JCGC)){
+        row[0] = i+1;
+        continue;
+      }
+      if(type.equals(BashInfo.GTGC)){
+        row[1] = i+1;
+        continue;
+      }
+      if(type.equals(BashInfo.JDGC)){
+        row[2] = i+1;
+        continue;
+      }
+      if(type.equals(BashInfo.JXGC)){
+        row[3] = i+1;
+        continue;
+      }
+      if(type.equals(BashInfo.FJAZGC)){
+        row[4] = i+1;
+        continue;
+      }
+      if(type.equals(BashInfo.FZGC)){
+        row[5] = i+1;
+        break;
+      }
+    }
+    for(int i=0;i<6;i++){
+      JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+      double originalTotalCost = gzhz.getDouble(zjgcFee[i],2); //原合计
+      double otherRate = originalTotalCost/totalFee;   //其他费用分摊比例
+      double orRate = new BigDecimal(otherRate).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); //四舍五入
+      double otherFee = qtFees[2]*otherRate;  //其他费用
+      double zjgcFees = gzhz.getDouble(zjgcFee[i],3);//直接工程费
+      double originalRgCost = importExcel.getDouble(row[i],13); //原人工费
+      double rgCost = originalRgCost/(1+rate[0]);  //后人工费
+      double originalCbrCost = importExcel.getDouble(row[i],14); //原承包人采购
+      double cbrCost = originalCbrCost/(1+rate[1]);  //后承包人采购
+      double originalFbrCost = importExcel.getDouble(row[i],15); //原发包人采购
+      double fbrCost = originalFbrCost/(1+sl); //后发包人采购
+      double originalJxrCost = importExcel.getDouble(row[i],17); //原机械费
+      double jxCost = originalJxrCost/(1+rate[2]); //后机械费
+      double measuresFee1 = (zjgcFees-fbrCost*sl)*csRate[0]; //措施费1
+      double measuresFee2 = rgCost*csRate[1];   //措施费2
+      double fees = rgCost*gfRate[1]*1.12+rgCost*gfRate[0];  //规费
+      double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee-originalFbrCost)*texRate; //税金
+      double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-originalFbrCost; //合计
+      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.setFees(fees);
+      jkxlDetailFee.setOtherCost(otherFee);
+      jkxlDetailFee.setTex(tax);
+      jkxlDetailFee.setTotalFee(totalfee);
+      jkxlDetailFee.setZjgcFee(zjgcFees);
+      jkxlDetailFee.setWbsCode(BashInfo.ids[i]);
+      jkxlDetailFee.setId(id);
+      list.add(jkxlDetailFee);
+    }
+    double tz = 0.00;
+    for(JkxlDetailFee jkxlDetailFee : list){
+      tz += jkxlDetailFee.getTotalFee();
+    }
+    if(wsbFees[2]>tz){
+      double gxFee = wsbFees[2]-tz-qtFees[0]-qtFees[1]-wsbFees[0]-wsbFees[1];
+      double rate1 = 0.00;
+      double gxFee1 = 0.00;
+      double totalF = 0.00;
+      for(JkxlDetailFee jkxlDetailFee : list){
+        rate1 = jkxlDetailFee.getTotalFee()/tz;
+        gxFee1 = gxFee*rate1;
+        totalF = gxFee1 + jkxlDetailFee.getTotalFee();
+        jkxlDetailFee.setGxFee(Math.abs(gxFee1));
+        jkxlDetailFee.setTotalFee(totalF);
+      }
+    }else {
+      double gxFee = tz+qtFees[0]+qtFees[1]+wsbFees[0]+wsbFees[1]-wsbFees[2];
+      double rate1 = 0.00;
+      double gxFee1 = 0.00;
+      double totalF = 0.00;
+      for(JkxlDetailFee jkxlDetailFee : list){
+        rate1 = jkxlDetailFee.getTotalFee()/tz;
+        gxFee1 = gxFee*rate1;
+        totalF = jkxlDetailFee.getTotalFee()-gxFee1;
+        jkxlDetailFee.setGxFee(Math.abs(gxFee1));
+        jkxlDetailFee.setTotalFee(totalF);
+      }
+
+    }
+    JkxlDetailFee jkxlDetailFee1 = new JkxlDetailFee();
+    JkxlDetailFee jkxlDetailFee2 = new JkxlDetailFee();
+    jkxlDetailFee1.setId(id);
+    jkxlDetailFee1.setWbsCode("34120000");
+    jkxlDetailFee1.setTotalFee(qtFees[0]);
+    jkxlDetailFee2.setWbsCode("34220000");
+    jkxlDetailFee2.setTotalFee(qtFees[1]);
+    jkxlDetailFee2.setId(id);
+    list.add(jkxlDetailFee1);
+    list.add(jkxlDetailFee2);
+
+    return list;
+
+  }
+
+
+
+
+  /**
+   *获取措施费率
+   */
+  public double[] getCsRate(ImportExcel importExcel){
+    int lastRow = importExcel.getLastDataRowNum();
+    double lsRate = 0.00;
+    double aqRate = 0.00;
+    double totalRate = 0.00;
+    for(int i=2;i<lastRow;i++){
+      String type = importExcel.getValue(i+1,1);
+      if(type.equals(BashInfo.CS_LS)){
+          lsRate = importExcel.getDouble(i+1,3);
+      }
+      if(type.equals(BashInfo.CS_AQWM)){
+        aqRate = importExcel.getDouble(i+1,3);
+      }
+      totalRate += importExcel.getDouble(i+1,3);
+    }
+    double[] rate = new double[2];
+    rate[0] = (lsRate+aqRate)/100;
+    rate[1] = (totalRate-lsRate-aqRate)/100;
+    return  rate;
+  }
+
+
+
+  /**
+   *获取规费率
+   */
+  public double[] getGfRate(ImportExcel importExcel) {
+    int lastRow = importExcel.getLastDataRowNum();
+    double totalRate = 0.00;
+    double wxzyRate = 0.00;
+    for (int i = 2; i < lastRow; i++) {
+      String type = importExcel.getValue(i + 1, 1);
+      if (type.equals(BashInfo.GF_WXZY)) {
+        wxzyRate = importExcel.getDouble(i + 1, 3);
+      }
+      if (!importExcel.getValue(i + 1, 2).equals("")) {
+        totalRate += importExcel.getDouble(i + 1, 3);
+      }
+    }
+    double[] rate = new double[2];
+    rate[0] = wxzyRate / 100;
+    rate[1] = (totalRate - wxzyRate) / 100;
+    return rate;
+  }
+
+  /**
+   * 获取其他费用
+   */
+  public double[] getQtFees(ImportExcel importExcel) {
+    int lastRow = importExcel.getLastDataRowNum();
+    double cdFree = 0.00;
+    double zbFree = 0.00;
+    double totalFree = 0.00;
+    for(int i=2;i<lastRow;i++){
+      String type = importExcel.getValue(i+1,1);
+      String type1 = importExcel.getValue(i+1,0);
+      if(type.equals(BashInfo.QT_SGCDZY)){
+        cdFree = importExcel.getDouble(i+1,2);
+      }
+      if(type.equals(BashInfo.QT_ZBDL)){
+        zbFree = importExcel.getDouble(i+1,2);
+      }
+      if(type1.equals(BashInfo.QT_HJ)){
+        totalFree = importExcel.getDouble(i+1,2);
+      }
+    }
+    double[] rate = new double[3];
+    rate[0] = cdFree;
+    rate[1] = zbFree;
+    rate[2] = totalFree-cdFree-zbFree;
+    return  rate;
+  }
+
+  /**
+   * 获取调差系数
+   * @return
+   */
+  public double[] getRate(){
+    double[] rate = new double[3];
+    rate[0] = ruleRatioService.getValueByName(BashInfo.RATIO_RGTC).getValue()/100;
+    rate[1] = ruleRatioService.getValueByName(BashInfo.RATIO_CLTC).getValue()/100;
+    rate[2] = ruleRatioService.getValueByName(BashInfo.RATIO_JXTC).getValue()/100;
+    return rate;
+  }
+
+  /**
+   * 获取补增值税税率调整差额和扣减甲供材超供材料费
+   */
+  public double[] getFees(ImportExcel importExcel){
+    int lastRow = importExcel.getLastDataRowNum();
+    double bzFree = 0.00;
+    double kcFree = 0.00;
+    double gcjs = 0.00;
+    for(int i=0;i<lastRow;i++){
+      String type = importExcel.getValue(i+1,1);
+      if(type.equals(BashInfo.BZZSSL)){
+        bzFree = importExcel.getDouble(i+1,2);
+        continue;
+      }
+      if(type.equals(BashInfo.KJJGCC)){
+        kcFree = importExcel.getDouble(i+1,2);
+        continue;
+      }
+      if(type.equals(BashInfo.TBJG) || type.equals(BashInfo.GCJS)){
+        gcjs = importExcel.getDouble(i+1,2);
+      }
+    }
+    double[] wsb = new double[3];
+    wsb[0] = bzFree;
+    wsb[1] = kcFree;
+    wsb[2] = gcjs;
+    return  wsb;
+
+  }
+
+  /**
+   *获取直接工程费
+   */
+  public int[] getZjgcFee(ImportExcel importExcel) {
+    int lastRow = importExcel.getLastDataRowNum();
+    int[] row = new int[6];
+    for(int i=0;i<lastRow;i++){
+      String type =  importExcel.getValue(i+1,1);
+      if(type.equals(BashInfo.HZ_JCGC)){
+        row[0] = i+1;
+        continue;
+      }
+      if(type.equals(BashInfo.HZ_GTGC)){
+        row[1] = i+1;
+        continue;
+      }
+      if(type.equals(BashInfo.HZ_JDGC)){
+        row[2] = i+1;
+        continue;
+      }
+      if(type.equals(BashInfo.HZ_JXGC)){
+        row[3] = i+1;
+        continue;
+      }
+      if(type.equals(BashInfo.HZ_FJAZGC)){
+        row[4] = i+1;
+        continue;
+      }
+      if(type.equals(BashInfo.HZ_FZ)){
+        row[5] = i+1;
+        break;
+      }
+    }
+    return  row;
+
+  }
+
+
+
+  public double[] getTzFee(MultipartFile file) throws IOException, InvalidFormatException {
+    ImportExcel total = new ImportExcel(file,1,BashInfo.SHEET_HZB );
+    double[] wsb = getFees(total);
+    return wsb;
+  }
+
+    /**
+     * 创建项目ID
+     */
+  public String getId() {
+     SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
+     String newDate=sdf.format(new Date());
+     String result="";
+      Random random=new Random();
+     for(int i=0;i<3;i++){
+       result+=random.nextInt(10);
+     }
+     return newDate+result;
+ }
+
+
+  /**
+   *求和
+   */
+  private List<JkxlDetailFee> getTotal(List<JkxlDetailFee> list) {
+    List<JkxlDetailFee> list1 = new ArrayList<>();
+    List<JkxlDetailFee> list2  = new ArrayList<>();
+    for(JkxlDetailFee jkxlDetailFee : list){
+      if(jkxlDetailFee.getOriginalTotalCost() != null){
+        list1.add(jkxlDetailFee);
+      }
+    }
+    for(JkxlDetailFee jkxlDetailFee : list){
+      if(jkxlDetailFee.getOriginalTotalCost() == null && jkxlDetailFee.getTotalFee() != null){
+        list2.add(jkxlDetailFee);
+      }
+    }
+    double total1 = 0.00;
+    for (JkxlDetailFee jkxlDetailFee :list2){
+      total1 += jkxlDetailFee.getTotalFee();
+    }
+    double [] zFee = new double[22];
+    for(JkxlDetailFee jkxlDetailFee :list1){
+      zFee[0] += jkxlDetailFee.getOriginalTotalCost();
+      zFee[1] += jkxlDetailFee.getZjgcFee();
+      zFee[2] += jkxlDetailFee.getOriginalRgCost();
+      zFee[3] += jkxlDetailFee.getOriginalCbrCost();
+      zFee[4] += jkxlDetailFee.getOriginalFbrCost();
+      zFee[5] += jkxlDetailFee.getOriginalJxCost();
+      zFee[6] += jkxlDetailFee.getRgCost();
+      zFee[7] += jkxlDetailFee.getCbrCost();
+      zFee[8] += jkxlDetailFee.getFbrCost();
+      zFee[9] += jkxlDetailFee.getJxCost();
+      zFee[10] += jkxlDetailFee.getRgFtFee()!=null? jkxlDetailFee.getRgFtFee():0.00;
+      zFee[11] += jkxlDetailFee.getCbrFtFee()!=null? jkxlDetailFee.getCbrFtFee():0.00;
+      zFee[12] += jkxlDetailFee.getFbrFtFee()!=null? jkxlDetailFee.getFbrFtFee():0.00;
+      zFee[13] += jkxlDetailFee.getJxFtFee()!=null? jkxlDetailFee.getJxFtFee():0.00;
+      zFee[14] += jkxlDetailFee.getMeasuresFee1();
+      zFee[15] += jkxlDetailFee.getMeasuresFee2();
+      zFee[16] += jkxlDetailFee.getMeasuresFee3()!=null? jkxlDetailFee.getMeasuresFee3():0.00;
+      zFee[17] += jkxlDetailFee.getOtherCost();
+      zFee[18] += jkxlDetailFee.getFees();
+      zFee[19] += jkxlDetailFee.getTex();
+      zFee[20] += jkxlDetailFee.getGxFee();
+      zFee[21] += jkxlDetailFee.getTotalFee();
+    }
+    JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
+    JkxlDetailFee jkxlDetailFee1 = new JkxlDetailFee();
+    jkxlDetailFee.setOriginalTotalCost(new BigDecimal(zFee[0]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setZjgcFee(new BigDecimal(zFee[1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setOriginalRgCost(new BigDecimal(zFee[2]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setOriginalCbrCost(new BigDecimal(zFee[3]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setOriginalFbrCost(new BigDecimal(zFee[4]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setOriginalJxCost(new BigDecimal(zFee[5]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setRgCost(new BigDecimal(zFee[6]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setCbrCost(new BigDecimal(zFee[7]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setFbrCost(new BigDecimal(zFee[8]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setJxCost(new BigDecimal(zFee[9]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setRgFtFee(new BigDecimal(zFee[10]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setCbrFtFee(new BigDecimal(zFee[11]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setFbrFtFee(new BigDecimal(zFee[12]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setJxFtFee(new BigDecimal(zFee[13]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setMeasuresFee1(new BigDecimal(zFee[14]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setMeasuresFee2(new BigDecimal(zFee[15]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setMeasuresFee3(new BigDecimal(zFee[16]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setOtherCost(new BigDecimal(zFee[17]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setFees(new BigDecimal(zFee[18]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setTex(new BigDecimal(zFee[19]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setGxFee(new BigDecimal(zFee[20]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setTotalFee(new BigDecimal(zFee[21]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+    jkxlDetailFee.setWbsCode("合计");
+    jkxlDetailFee.setParentNode("30000000");
+    jkxlDetailFee.setState("1");
+    jkxlDetailFee1.setWbsCode("合计");
+    jkxlDetailFee1.setParentNode("34000000");
+    jkxlDetailFee1.setState("0");
+    jkxlDetailFee1.setTotalFee(total1);
+    List<JkxlDetailFee> list3 = new ArrayList<>();
+    list3.add(jkxlDetailFee);
+    list3.add(jkxlDetailFee1);
+     return list3;
+
+
+  }
+
+
+
+
+
+
+
+}

+ 0 - 81
src/main/java/com/jeeplus/modules/sg/service/JkxlService.java

@@ -1,81 +0,0 @@
-package com.jeeplus.modules.sg.service;
-
-import com.jeeplus.modules.sg.entity.JkxlData;
-import com.jeeplus.modules.sg.entity.RuleRatio;
-import com.jeeplus.modules.sg.entity.TzData;
-import com.jeeplus.modules.sg.entity.WbsProject;
-import com.jeeplus.modules.sg.mapper.JkxlMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-@Service
-public class JkxlService {
-    @Autowired
-    private JkxlMapper jkxlMapper;
-
-
-   public RuleRatio getValueByName(String ratioName){
-       return jkxlMapper.getValue(ratioName);
-   }
-
-   public List<JkxlData> getList(String id){
-       return jkxlMapper.getList(id);
-   }
-
-   public List<JkxlData> findList(String id){
-       return jkxlMapper.findList(id);
-   }
-
-   public JkxlData getDate(String id,String wbsCode){
-       return jkxlMapper.getData(id,wbsCode);
-   }
-
-   @Transactional
-   public void save(JkxlData jkxlData){
-       jkxlMapper.save(jkxlData);
-   }
-
-    @Transactional
-    public void updataDate(JkxlData jkxlData){
-        jkxlMapper.updateDate(jkxlData);
-    }
-
-    @Transactional
-   public void saveProject(WbsProject wbsProject){
-       jkxlMapper.saveProject(wbsProject);
-   }
-
-   public List<TzData> getTzFee(TzData tzData){
-       return jkxlMapper.getTzFee(tzData);
-   }
-
-    @Transactional
-   public void  updateFee(TzData tzData){
-       String type  = tzData.getType();
-       if(type.equals("补增值税税率调整差额")){
-           type = "1";
-       } else {
-           type = "2";
-       }
-       tzData.setType(type);
-       tzData.setFee(0.00);
-       jkxlMapper.updateTzFee(tzData);
-   }
-
-    @Transactional
-    public void saveTzFee(double[] wbs,String id){
-       TzData tzData = new TzData();
-       TzData tzData1 = new TzData();
-       tzData.setId(id);
-       tzData1.setId(id);
-       tzData.setType("1");
-       tzData1.setType("2");
-       tzData.setFee(wbs[0]);
-       tzData1.setFee(wbs[1]);
-       jkxlMapper.saveTzFee(tzData);
-       jkxlMapper.saveTzFee(tzData1);
-    }
-}

+ 0 - 859
src/main/java/com/jeeplus/modules/sg/web/JkxlController.java

@@ -1,859 +0,0 @@
-package com.jeeplus.modules.sg.web;
-
-import com.alibaba.fastjson.JSONArray;
-import com.jeeplus.common.utils.DateUtils;
-import com.jeeplus.common.utils.StringUtils;
-import com.jeeplus.common.utils.excel.ExportExcel;
-import com.jeeplus.common.utils.excel.ImportExcel;
-import com.jeeplus.core.web.BaseController;
-import com.jeeplus.modules.sg.entity.*;
-import com.jeeplus.modules.sg.service.JkxlService;
-import com.jeeplus.modules.sg.util.BashInfo;
-import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * 架空线路
- */
-@Controller
-@RequestMapping(value = "${adminPath}/jkxl")
-public class JkxlController extends BaseController {
-  @Autowired
-  private JkxlService jkxlService;
-
-  @RequestMapping("/index")
-  public String toImport(){
-    return "modules/sg/free/indexProject";
-  }
-
-  /**
-   *数据导入
-   */
-  @RequestMapping("/import")
-  public String importFile(MultipartFile file, RedirectAttributes redirectAttributes, HttpServletRequest request, Model model){
-    double sl = Double.valueOf(request.getParameter("jxsl"));
-    String projectName = request.getParameter("name");
-    String id = getId();
-    try {
-      double[] rate = getRate();
-      WbsProject wbsProject = new WbsProject();
-      wbsProject.setId(id);
-      wbsProject.setName(projectName);
-      wbsProject.setCreateDate(new Date());
-      jkxlService.saveProject(wbsProject);
-      List<JkxlData> list = getData(file,rate,id,sl);
-      for(JkxlData jkxlData : list){
-        jkxlService.save(jkxlData);
-      }
-      double[] tzfee = getTzFee(file);
-      jkxlService.saveTzFee(tzfee,id);
-    } catch (Exception e){
-      addMessage(redirectAttributes, "导入失败");
-    }
-
-    addMessage(redirectAttributes, "导入成功");
-    return "redirect:/a/jkxl/list?id="+id;
-  }
-
-  @RequestMapping("/gettz")
-  @ResponseBody
-  public List<JkxlData> getTz(TzData tzData){
-    String id = tzData.getId();
-    List<JkxlData> list = jkxlService.getList(id);
-    List<JkxlData> list1 = new ArrayList<>();
-    for(JkxlData jkxlData: list){
-      if(jkxlData.getOriginalTotalCost() != null){
-          list1.add(jkxlData);
-      }
-    }
-    return list1;
-  }
-
-  /**
-   *金额分摊调整
-   */
-  @RequestMapping("/fttz")
-  public String reList(FtData ftData, Model model,RedirectAttributes redirectAttributes){
-      String id = ftData.getId();
-      String code = ftData.getCode();
-      String state = ftData.getState();
-      String type = ftData.getType();
-      double fee = ftData.getFee();
-      double total = 0.00;
-      try {
-        List<JkxlData> jkxl = jkxlService.getList(id);
-        List<JkxlData> jkxlDatas = new ArrayList<>();
-        for(JkxlData jkxlData: jkxl){
-          if(jkxlData.getOriginalTotalCost() != null){
-            jkxlDatas.add(jkxlData);
-          }
-        }
-        if(code.equals("1")){
-            for(JkxlData jkxlData: jkxlDatas) {
-                total += jkxlData.getRgCost();
-          }
-            for(JkxlData jkxlData1: jkxlDatas){
-              JkxlData jkxlData = new JkxlData();
-              jkxlData.setId(id);
-              jkxlData.setWbsCode(jkxlData1.getWbsCode());
-              double rgFee = jkxlData1.getRgCost();
-              double totalFee = jkxlData1.getTotalFee();
-              double ftFee = rgFee/total*fee;
-              jkxlData.setRgFtFee(ftFee);
-              if(state.equals("1")){
-                double zFee = totalFee+ftFee;
-                jkxlData.setTotalFee(zFee);
-              }else {
-                double zFee = totalFee-ftFee;
-                jkxlData.setTotalFee(zFee);
-              }
-              jkxlService.updataDate(jkxlData);
-            }
-        }
-        if(code.equals("2")){
-          for(JkxlData jkxlData: jkxlDatas) {
-            total += jkxlData.getCbrCost();
-          }
-          for(JkxlData jkxlData1: jkxlDatas){
-            JkxlData jkxlData = new JkxlData();
-            jkxlData.setId(id);
-            jkxlData.setWbsCode(jkxlData1.getWbsCode());
-            double rgFee = jkxlData1.getCbrCost();
-            double totalFee = jkxlData1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            jkxlData.setCbrFtFee(ftFee);
-            if(state.equals("1")){
-              double zFee = totalFee+ftFee;
-              jkxlData.setTotalFee(zFee);
-            }else {
-              double zFee = totalFee-ftFee;
-              jkxlData.setTotalFee(zFee);
-            }
-            jkxlService.updataDate(jkxlData);
-          }
-        }
-        if(code.equals("3")){
-          for(JkxlData jkxlData: jkxlDatas) {
-            total += jkxlData.getFbrCost();
-          }
-          for(JkxlData jkxlData1: jkxlDatas){
-            JkxlData jkxlData = new JkxlData();
-            jkxlData.setId(id);
-            jkxlData.setWbsCode(jkxlData1.getWbsCode());
-            double rgFee = jkxlData1.getFbrCost();
-            double totalFee = jkxlData1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            jkxlData.setFbrFtFee(ftFee);
-            if(state.equals("1")){
-              double zFee = totalFee+ftFee;
-              jkxlData.setTotalFee(zFee);
-            }else {
-              double zFee = totalFee-ftFee;
-              jkxlData.setTotalFee(zFee);
-            }
-            jkxlService.updataDate(jkxlData);
-          }
-        }
-        if(code.equals("4")){
-          for(JkxlData jkxlData: jkxlDatas) {
-            total += jkxlData.getJxCost();
-          }
-          for(JkxlData jkxlData1: jkxlDatas){
-            JkxlData jkxlData = new JkxlData();
-            jkxlData.setId(id);
-            jkxlData.setWbsCode(jkxlData1.getWbsCode());
-            double rgFee = jkxlData1.getJxCost();
-            double totalFee = jkxlData1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            jkxlData.setJxFtFee(ftFee);
-            if(state.equals("1")){
-              double zFee = totalFee+ftFee;
-              jkxlData.setTotalFee(zFee);
-            }else {
-              double zFee = totalFee-ftFee;
-              jkxlData.setTotalFee(zFee);
-            }
-            jkxlService.updataDate(jkxlData);
-          }
-        }
-        if(code.equals("5")){
-          for(JkxlData jkxlData: jkxlDatas) {
-            total += jkxlData.getMeasuresFee1();
-          }
-          for(JkxlData jkxlData1: jkxlDatas){
-            JkxlData jkxlData = new JkxlData();
-            jkxlData.setId(id);
-            jkxlData.setWbsCode(jkxlData1.getWbsCode());
-            double rgFee = jkxlData1.getMeasuresFee1();
-            double totalFee = jkxlData1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            if(state.equals("1")){
-              double zFee = totalFee+ftFee;
-              jkxlData.setMeasuresFee1(rgFee+ftFee);
-              jkxlData.setTotalFee(zFee);
-            }else {
-              double zFee = totalFee-ftFee;
-              jkxlData.setMeasuresFee1(rgFee-ftFee);
-              jkxlData.setTotalFee(zFee);
-            }
-            jkxlService.updataDate(jkxlData);
-          }
-        }
-        if(code.equals("6")){
-          for(JkxlData jkxlData: jkxlDatas) {
-            total += jkxlData.getMeasuresFee2();
-          }
-          for(JkxlData jkxlData1: jkxlDatas){
-            JkxlData jkxlData = new JkxlData();
-            jkxlData.setId(id);
-            jkxlData.setWbsCode(jkxlData1.getWbsCode());
-            double rgFee = jkxlData1.getMeasuresFee2();
-            double totalFee = jkxlData1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            if(state.equals("1")){
-              double zFee = totalFee+ftFee;
-              jkxlData.setMeasuresFee1(rgFee+ftFee);
-              jkxlData.setTotalFee(zFee);
-            }else {
-              double zFee = totalFee-ftFee;
-              jkxlData.setMeasuresFee1(rgFee-ftFee);
-              jkxlData.setTotalFee(zFee);
-            }
-            jkxlService.updataDate(jkxlData);
-          }
-        }
-        if(code.equals("7")){
-          for(JkxlData jkxlData: jkxlDatas) {
-            total += jkxlData.getMeasuresFee3();
-          }
-          for(JkxlData jkxlData1: jkxlDatas){
-            JkxlData jkxlData = new JkxlData();
-            jkxlData.setId(id);
-            jkxlData.setWbsCode(jkxlData1.getWbsCode());
-            double rgFee = jkxlData1.getMeasuresFee3();
-            double totalFee = jkxlData1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            if(state.equals("1")){
-              double zFee = totalFee+ftFee;
-              jkxlData.setMeasuresFee1(rgFee+ftFee);
-              jkxlData.setTotalFee(zFee);
-            }else {
-              double zFee = totalFee-ftFee;
-              jkxlData.setMeasuresFee1(rgFee-ftFee);
-              jkxlData.setTotalFee(zFee);
-            }
-            jkxlService.updataDate(jkxlData);
-          }
-        }
-        if(code.equals("8")){
-          for(JkxlData jkxlData: jkxlDatas) {
-            total += jkxlData.getOtherCost();
-          }
-          for(JkxlData jkxlData1: jkxlDatas){
-            JkxlData jkxlData = new JkxlData();
-            jkxlData.setId(id);
-            jkxlData.setWbsCode(jkxlData1.getWbsCode());
-            double rgFee = jkxlData1.getOtherCost();
-            double totalFee = jkxlData1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            if(state.equals("1")){
-              double zFee = totalFee+ftFee;
-              jkxlData.setMeasuresFee1(rgFee+ftFee);
-              jkxlData.setTotalFee(zFee);
-            }else {
-              double zFee = totalFee-ftFee;
-              jkxlData.setMeasuresFee1(rgFee-ftFee);
-              jkxlData.setTotalFee(zFee);
-            }
-            jkxlService.updataDate(jkxlData);
-          }
-        }
-        if(code.equals("9")){
-          for(JkxlData jkxlData: jkxlDatas) {
-            total += jkxlData.getFees();
-          }
-          for(JkxlData jkxlData1: jkxlDatas){
-            JkxlData jkxlData = new JkxlData();
-            jkxlData.setId(id);
-            jkxlData.setWbsCode(jkxlData1.getWbsCode());
-            double rgFee = jkxlData1.getFees();
-            double totalFee = jkxlData1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            if(state.equals("1")){
-              double zFee = totalFee+ftFee;
-              jkxlData.setMeasuresFee1(rgFee+ftFee);
-              jkxlData.setTotalFee(zFee);
-            }else {
-              double zFee = totalFee-ftFee;
-              jkxlData.setMeasuresFee1(rgFee-ftFee);
-              jkxlData.setTotalFee(zFee);
-            }
-            jkxlService.updataDate(jkxlData);
-          }
-        }
-        if(code.equals("10")){
-          for(JkxlData jkxlData: jkxlDatas) {
-            total += jkxlData.getTex();
-          }
-          for(JkxlData jkxlData1: jkxlDatas){
-            JkxlData jkxlData = new JkxlData();
-            jkxlData.setId(id);
-            jkxlData.setWbsCode(jkxlData1.getWbsCode());
-            double rgFee = jkxlData1.getTex();
-            double totalFee = jkxlData1.getTotalFee();
-            double ftFee = rgFee/total*fee;
-            if(state.equals("1")){
-              double zFee = totalFee+ftFee;
-              jkxlData.setMeasuresFee1(rgFee+ftFee);
-              jkxlData.setTotalFee(zFee);
-            }else {
-              double zFee = totalFee-ftFee;
-              jkxlData.setMeasuresFee1(rgFee-ftFee);
-              jkxlData.setTotalFee(zFee);
-            }
-            jkxlService.updataDate(jkxlData);
-          }
-        }
-        TzData tzData = new TzData();
-        tzData.setType(type);
-        tzData.setId(id);
-        jkxlService.updateFee(tzData);
-      } catch (Exception e){
-        addMessage(redirectAttributes, "调整失败");
-      }
-    addMessage(redirectAttributes, "调整成功");
-    return "redirect:/a/jkxl/list?id="+id;
-  }
-
-
-  /**
-   *金额单独调整
-   */
-  @RequestMapping("/ddtz")
-  public String ddtz(TzData tzData, Model model, RedirectAttributes redirectAttributes){
-    String id = tzData.getId();
-    String type = tzData.getType();
-    String state  = tzData.getState();
-    double fee = tzData.getFee();
-    String data1 = tzData.getData1();
-    String row = data1.replaceAll("&quot;","\\\"");
-    List<DdtzData> ts = (List<DdtzData>) JSONArray.parseArray(row, DdtzData.class);
-    try {
-      for(DdtzData ddtzData: ts){
-        double tzFee = Double.valueOf(ddtzData.getFee());
-        String wbsCode = ddtzData.getWbsCode();
-        double otherFee = jkxlService.getDate(id,wbsCode).getOtherCost();
-        double totalFee = jkxlService.getDate(id,wbsCode).getTotalFee();
-        if(state.equals("1")){
-          otherFee = otherFee+tzFee;
-          totalFee = totalFee+tzFee;
-        }
-        if(state.equals("2")){
-          otherFee = otherFee-tzFee;
-          totalFee = totalFee-tzFee;
-        }
-        JkxlData jkxlData = new JkxlData();
-        jkxlData.setId(id);
-        jkxlData.setWbsCode(wbsCode);
-        jkxlData.setOtherCost(otherFee);
-        jkxlData.setTotalFee(totalFee);
-        jkxlService.updataDate(jkxlData);
-      }
-      jkxlService.updateFee(tzData);
-
-    }catch (Exception e){
-      addMessage(redirectAttributes, "调整失败");
-    }
-    addMessage(redirectAttributes, "调整成功");
-    return "redirect:/a/jkxl/list?id="+id;
-  }
-
-
-
-
-  @RequestMapping("/list")
-  public String list(HttpServletRequest request,Model model){
-    String id = request.getParameter("id");
-    JkxlData jkxlData = new JkxlData();
-    TzData tzData = new TzData();
-    jkxlData.setId(id);
-    tzData.setId(id);
-    List<JkxlData> list1 = new ArrayList<>();
-    list1.add(jkxlData);
-    List<JkxlData> list = jkxlService.getList(id);
-//    JkxlData jkxlData1 = getTotal(list);
-//    list.add(jkxlData1);
-    list.addAll(getTotal(list));
-    List<TzData> list2 = jkxlService.getTzFee(tzData);
-    HashMap map = new HashMap();
-    map.put("list1",list1);
-    map.put("list",list);
-    map.put("list2",list2);
-    model.addAttribute("map",map);
-    return "modules/sg/free/wbslist";
-  }
-
-
-
-
-  /**
-   *导出
-   */
-  @RequestMapping("/export")
-  public String export(HttpServletRequest request, HttpServletResponse response,Model model,RedirectAttributes redirectAttributes) {
-    String id = request.getParameter("id");
-    try{
-      String fileName = "架空线路"+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-      List<JkxlData> list = jkxlService.findList(id);
-      new ExportExcel(null,JkxlData.class).setDataList(list).write(response, fileName).dispose();
-      return null;
-    }catch (Exception e){
-      addMessage(redirectAttributes, "导出失败");
-    }
-     addMessage(redirectAttributes, "导出成功");
-    return "redirect:/a/jkxl/list?id="+id;
-  }
-
-
-  public List<JkxlData> getData(MultipartFile file,double[] rate,String id,double sl) throws IOException, InvalidFormatException {
-    ImportExcel importExcel = new ImportExcel(file,1,BashInfo.SHEET_FBFXJJ);  //分部分项工程量清单计价表
-    ImportExcel csqd = new ImportExcel(file,1,BashInfo.SHEET_CSB);  // 措施项目清单计价表(一)
-    ImportExcel gf = new ImportExcel(file,1,BashInfo.SHEET_GFQD);  //规费项目清单计价表
-    ImportExcel qt = new ImportExcel(file,1,BashInfo.SHEET_QTFY);  //其他项目清单计价表
-    ImportExcel total = new ImportExcel(file,1,BashInfo.SHEET_HZB );  //工程项目竣工结算汇总表
-    ImportExcel gzhz = new ImportExcel(file,1,BashInfo.SHEET_GCHZ );   //架空线路工程费用汇总表
-    double[] csRate = getCsRate(csqd);
-    double[] gfRate = getGfRate(gf);
-    double[] qtFees = getQtFees(qt);
-    double[] wsbFees = getFees(total);
-    int[] zjgcFee = getZjgcFee(gzhz);
-    double texRate = getTexRate(total);
-    double totalFee = 0.00;
-    List<JkxlData> list = new ArrayList<>();
-    int lastRow = importExcel.getLastDataRowNum();
-    int[] row = new int[6];
-    for(int i=0;i<lastRow;i++){
-      String type =  importExcel.getValue(i+1,2);
-      if(type.equals(BashInfo.PROJECTNAME)){
-        totalFee = importExcel.getDouble(i+1,12);
-        continue;
-      }
-      if(type.equals(BashInfo.JCGC)){
-        row[0] = i+1;
-        continue;
-      }
-      if(type.equals(BashInfo.GTGC)){
-        row[1] = i+1;
-        continue;
-      }
-      if(type.equals(BashInfo.JDGC)){
-        row[2] = i+1;
-        continue;
-      }
-      if(type.equals(BashInfo.JXGC)){
-        row[3] = i+1;
-        continue;
-      }
-      if(type.equals(BashInfo.FJAZGC)){
-        row[4] = i+1;
-        continue;
-      }
-      if(type.equals(BashInfo.FZGC)){
-        row[5] = i+1;
-        break;
-      }
-    }
-    for(int i=0;i<6;i++){
-      JkxlData jkxlData = new JkxlData();
-      double originalTotalCost = gzhz.getDouble(zjgcFee[i],2); //原合计
-      double otherRate = originalTotalCost/totalFee;   //其他费用分摊比例
-      double orRate = new BigDecimal(otherRate).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); //四舍五入
-      double btc = wsbFees[0]*orRate;       //补调差额
-      double jcl = wsbFees[1]*orRate;        //减材料费
-      double otherFee = qtFees[2]*otherRate;  //其他费用
-      double zjgcFees = gzhz.getDouble(zjgcFee[i],3);//直接工程费
-      double originalRgCost = importExcel.getDouble(row[i],13); //原人工费
-      double rgCost = originalRgCost/(1+rate[0]);  //后人工费
-      double originalCbrCost = importExcel.getDouble(row[i],14); //原承包人采购
-      double cbrCost = originalCbrCost/(1+rate[1]);  //后承包人采购
-      double originalFbrCost = importExcel.getDouble(row[i],15); //原发包人采购
-      double fbrCost = originalFbrCost/(1+sl); //后发包人采购
-      double originalJxrCost = importExcel.getDouble(row[i],17); //原机械费
-      double jxCost = originalJxrCost/(1+rate[2]); //后机械费
-      double measuresFee1 = (zjgcFees-fbrCost*sl)*csRate[0]; //措施费1
-//      double measuresFee1 = (rgCost+cbrCost+fbrCost+jxCost)*csRate[0]; //措施费1
-      double measuresFee2 = rgCost*csRate[1];   //措施费2
-      double fees = rgCost*gfRate[1]*1.12+rgCost*gfRate[0];  //规费
-      double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee-originalFbrCost)*texRate; //税金
-      double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-originalFbrCost; //合计
-      jkxlData.setOriginalTotalCost(originalTotalCost);
-      jkxlData.setOriginalRate(orRate);
-      jkxlData.setOriginalRgCost(originalRgCost);
-      jkxlData.setRgCost(rgCost);
-      jkxlData.setOriginalCbrCost(originalCbrCost);
-      jkxlData.setCbrCost(cbrCost);
-      jkxlData.setOriginalFbrCost(originalFbrCost);
-      jkxlData.setFbrCost(fbrCost);
-      jkxlData.setOriginalJxCost(originalJxrCost);
-      jkxlData.setJxCost(jxCost);
-      jkxlData.setMeasuresFee1(measuresFee1);
-      jkxlData.setMeasuresFee2(measuresFee2);
-      jkxlData.setFees(fees);
-      jkxlData.setOtherCost(otherFee);
-      jkxlData.setTex(tax);
-      jkxlData.setTotalFee(totalfee);
-      jkxlData.setBzFee(btc);
-      jkxlData.setJkFee(jcl);
-      jkxlData.setZjgcFee(zjgcFees);
-      jkxlData.setWbsCode(BashInfo.ids[i]);
-      jkxlData.setId(id);
-      list.add(jkxlData);
-    }
-    double tz = 0.00;
-    for(JkxlData jkxlData : list){
-      tz += jkxlData.getTotalFee();
-    }
-    if(wsbFees[2]>tz){
-      double gxFee = wsbFees[2]-tz-qtFees[0]-qtFees[1]-wsbFees[0]-wsbFees[1];
-      double rate1 = 0.00;
-      double gxFee1 = 0.00;
-      double totalF = 0.00;
-      for(JkxlData jkxlData: list){
-        rate1 = jkxlData.getTotalFee()/tz;
-        gxFee1 = gxFee*rate1;
-        totalF = gxFee1 + jkxlData.getTotalFee();
-        jkxlData.setGxFee(Math.abs(gxFee1));
-        jkxlData.setTotalFee(totalF);
-      }
-    }else {
-      double gxFee = tz+qtFees[0]+qtFees[1]+wsbFees[0]+wsbFees[1]-wsbFees[2];
-      double rate1 = 0.00;
-      double gxFee1 = 0.00;
-      double totalF = 0.00;
-      for(JkxlData jkxlData: list){
-        rate1 = jkxlData.getTotalFee()/tz;
-        gxFee1 = gxFee*rate1;
-        totalF = jkxlData.getTotalFee()-gxFee1;
-        jkxlData.setGxFee(Math.abs(gxFee1));
-        jkxlData.setTotalFee(totalF);
-      }
-
-    }
-    JkxlData jkxlData1 = new JkxlData();
-    JkxlData jkxlData2 = new JkxlData();
-    jkxlData1.setId(id);
-    jkxlData1.setWbsCode("34120000");
-    jkxlData1.setTotalFee(qtFees[0]);
-    jkxlData2.setWbsCode("34220000");
-    jkxlData2.setTotalFee(qtFees[1]);
-    jkxlData2.setId(id);
-    list.add(jkxlData1);
-    list.add(jkxlData2);
-
-    return list;
-
-  }
-
-
-
-
-  /**
-   *获取措施费率
-   */
-  public double[] getCsRate(ImportExcel importExcel){
-    int lastRow = importExcel.getLastDataRowNum();
-    double lsRate = 0.00;
-    double aqRate = 0.00;
-    double totalRate = 0.00;
-    for(int i=2;i<lastRow;i++){
-      String type = importExcel.getValue(i+1,1);
-      if(type.equals(BashInfo.CS_LS)){
-          lsRate = importExcel.getDouble(i+1,3);
-      }
-      if(type.equals(BashInfo.CS_AQWM)){
-        aqRate = importExcel.getDouble(i+1,3);
-      }
-      totalRate += importExcel.getDouble(i+1,3);
-    }
-    double[] rate = new double[2];
-    rate[0] = (lsRate+aqRate)/100;
-    rate[1] = (totalRate-lsRate-aqRate)/100;
-    return  rate;
-  }
-
-  /**
-   * 读取税率
-   */
-  public double getTexRate(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("税金")){
-        int a = st.indexOf(":");
-        int a1 = st.indexOf("%");
-        String st1 = st.substring(a+2,a1);
-        System.out.println(st1);
-        rate = Double.valueOf(st1)/100;
-        break;
-      }
-    }
-    return rate;
-   }
-
-  /**
-   *获取规费率
-   */
-  public double[] getGfRate(ImportExcel importExcel) {
-    int lastRow = importExcel.getLastDataRowNum();
-    double totalRate = 0.00;
-    double wxzyRate = 0.00;
-    for (int i = 2; i < lastRow; i++) {
-      String type = importExcel.getValue(i + 1, 1);
-      if (type.equals(BashInfo.GF_WXZY)) {
-        wxzyRate = importExcel.getDouble(i + 1, 3);
-      }
-      if (!importExcel.getValue(i + 1, 2).equals("")) {
-        totalRate += importExcel.getDouble(i + 1, 3);
-      }
-    }
-    double[] rate = new double[2];
-    rate[0] = wxzyRate / 100;
-    rate[1] = (totalRate - wxzyRate) / 100;
-    return rate;
-  }
-
-  /**
-   * 获取其他费用
-   */
-  public double[] getQtFees(ImportExcel importExcel) {
-    int lastRow = importExcel.getLastDataRowNum();
-    double cdFree = 0.00;
-    double zbFree = 0.00;
-    double totalFree = 0.00;
-    for(int i=2;i<lastRow;i++){
-      String type = importExcel.getValue(i+1,1);
-      String type1 = importExcel.getValue(i+1,0);
-      if(type.equals(BashInfo.QT_SGCDZY)){
-        cdFree = importExcel.getDouble(i+1,2);
-      }
-      if(type.equals(BashInfo.QT_ZBDL)){
-        zbFree = importExcel.getDouble(i+1,2);
-      }
-      if(type1.equals(BashInfo.QT_HJ)){
-        totalFree = importExcel.getDouble(i+1,2);
-      }
-    }
-    double[] rate = new double[3];
-    rate[0] = cdFree;
-    rate[1] = zbFree;
-    rate[2] = totalFree-cdFree-zbFree;
-    return  rate;
-  }
-
-  /**
-   * 获取调差系数
-   * @return
-   */
-  public double[] getRate(){
-    double[] rate = new double[3];
-    rate[0] = jkxlService.getValueByName(BashInfo.RATIO_RGTC).getValue()/100;
-    rate[1] = jkxlService.getValueByName(BashInfo.RATIO_CLTC).getValue()/100;
-    rate[2] = jkxlService.getValueByName(BashInfo.RATIO_JXTC).getValue()/100;
-    return rate;
-  }
-
-  /**
-   * 获取补增值税税率调整差额和扣减甲供材超供材料费
-   */
-  public double[] getFees(ImportExcel importExcel){
-    int lastRow = importExcel.getLastDataRowNum();
-    double bzFree = 0.00;
-    double kcFree = 0.00;
-    double gcjs = 0.00;
-    for(int i=0;i<lastRow;i++){
-      String type = importExcel.getValue(i+1,1);
-      if(type.equals(BashInfo.BZZSSL)){
-        bzFree = importExcel.getDouble(i+1,2);
-        continue;
-      }
-      if(type.equals(BashInfo.KJJGCC)){
-        kcFree = importExcel.getDouble(i+1,2);
-        continue;
-      }
-      if(type.equals(BashInfo.TBJG) || type.equals(BashInfo.GCJS)){
-        gcjs = importExcel.getDouble(i+1,2);
-      }
-    }
-    double[] wsb = new double[3];
-    wsb[0] = bzFree;
-    wsb[1] = kcFree;
-    wsb[2] = gcjs;
-    return  wsb;
-
-  }
-
-  /**
-   *获取直接工程费
-   */
-  public int[] getZjgcFee(ImportExcel importExcel) {
-    int lastRow = importExcel.getLastDataRowNum();
-    int[] row = new int[6];
-    for(int i=0;i<lastRow;i++){
-      String type =  importExcel.getValue(i+1,1);
-      if(type.equals(BashInfo.HZ_JCGC)){
-        row[0] = i+1;
-        continue;
-      }
-      if(type.equals(BashInfo.HZ_GTGC)){
-        row[1] = i+1;
-        continue;
-      }
-      if(type.equals(BashInfo.HZ_JDGC)){
-        row[2] = i+1;
-        continue;
-      }
-      if(type.equals(BashInfo.HZ_JXGC)){
-        row[3] = i+1;
-        continue;
-      }
-      if(type.equals(BashInfo.HZ_FJAZGC)){
-        row[4] = i+1;
-        continue;
-      }
-      if(type.equals(BashInfo.HZ_FZ)){
-        row[5] = i+1;
-        break;
-      }
-    }
-    return  row;
-
-  }
-
-
-
-  public double[] getTzFee(MultipartFile file) throws IOException, InvalidFormatException {
-    ImportExcel total = new ImportExcel(file,1,BashInfo.SHEET_HZB );
-    double[] wsb = getFees(total);
-    return wsb;
-  }
-
-    /**
-     * 创建项目ID
-     */
-  public String getId() {
-     SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
-     String newDate=sdf.format(new Date());
-     String result="";
-      Random random=new Random();
-     for(int i=0;i<3;i++){
-       result+=random.nextInt(10);
-     }
-     return newDate+result;
- }
-
-  private List<JkxlData> getTotal(List<JkxlData> list) {
-    List<JkxlData> list1 = new ArrayList<>();
-    List<JkxlData> list2  = new ArrayList<>();
-    for(JkxlData jkxlData: list){
-      if(jkxlData.getOriginalTotalCost() != null){
-        list1.add(jkxlData);
-      }
-    }
-    for(JkxlData jkxlData: list){
-      if(jkxlData.getOriginalTotalCost() == null && jkxlData.getTotalFee() != null){
-        list2.add(jkxlData);
-      }
-    }
-    double total1 = 0.00;
-    for (JkxlData jkxlData :list2){
-      total1 += jkxlData.getTotalFee();
-    }
-    double [] zFee = new double[22];
-    for(JkxlData jkxlData:list1){
-      zFee[0] += jkxlData.getOriginalTotalCost();
-      zFee[1] += jkxlData.getZjgcFee();
-      zFee[2] += jkxlData.getOriginalRgCost();
-      zFee[3] += jkxlData.getOriginalCbrCost();
-      zFee[4] += jkxlData.getOriginalFbrCost();
-      zFee[5] += jkxlData.getOriginalJxCost();
-      zFee[6] += jkxlData.getRgCost();
-      zFee[7] += jkxlData.getCbrCost();
-      zFee[8] += jkxlData.getFbrCost();
-      zFee[9] += jkxlData.getJxCost();
-      zFee[10] += jkxlData.getRgFtFee()!=null?jkxlData.getRgFtFee():0.00;
-      zFee[11] += jkxlData.getCbrFtFee()!=null?jkxlData.getCbrFtFee():0.00;
-      zFee[12] += jkxlData.getFbrFtFee()!=null?jkxlData.getFbrFtFee():0.00;
-      zFee[13] += jkxlData.getJxFtFee()!=null?jkxlData.getJxFtFee():0.00;
-      zFee[14] += jkxlData.getMeasuresFee1();
-      zFee[15] += jkxlData.getMeasuresFee2();
-      zFee[16] += jkxlData.getMeasuresFee3()!=null?jkxlData.getMeasuresFee3():0.00;
-      zFee[17] += jkxlData.getOtherCost();
-      zFee[18] += jkxlData.getFees();
-      zFee[19] += jkxlData.getTex();
-      zFee[20] += jkxlData.getGxFee();
-      zFee[21] += jkxlData.getTotalFee();
-    }
-    JkxlData jkxlData = new JkxlData();
-    JkxlData jkxlData1 = new JkxlData();
-    jkxlData.setOriginalTotalCost(new BigDecimal(zFee[0]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setZjgcFee(new BigDecimal(zFee[1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setOriginalRgCost(new BigDecimal(zFee[2]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setOriginalCbrCost(new BigDecimal(zFee[3]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setOriginalFbrCost(new BigDecimal(zFee[4]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setOriginalJxCost(new BigDecimal(zFee[5]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setRgCost(new BigDecimal(zFee[6]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setCbrCost(new BigDecimal(zFee[7]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setFbrCost(new BigDecimal(zFee[8]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setJxCost(new BigDecimal(zFee[9]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setRgFtFee(new BigDecimal(zFee[10]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setCbrFtFee(new BigDecimal(zFee[11]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setFbrFtFee(new BigDecimal(zFee[12]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setJxFtFee(new BigDecimal(zFee[13]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setMeasuresFee1(new BigDecimal(zFee[14]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setMeasuresFee2(new BigDecimal(zFee[15]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setMeasuresFee3(new BigDecimal(zFee[16]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setOtherCost(new BigDecimal(zFee[17]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setFees(new BigDecimal(zFee[18]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setTex(new BigDecimal(zFee[19]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setGxFee(new BigDecimal(zFee[20]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setTotalFee(new BigDecimal(zFee[21]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-    jkxlData.setWbsCode("合计");
-    jkxlData.setParentNode("30000000");
-    jkxlData.setState("1");
-    jkxlData1.setWbsCode("合计");
-    jkxlData1.setParentNode("34000000");
-    jkxlData1.setState("0");
-    jkxlData1.setTotalFee(total1);
-    List<JkxlData> list3 = new ArrayList<>();
-    list3.add(jkxlData);
-    list3.add(jkxlData1);
-     return list3;
-
-
-
-
-
-  }
-
-
-
-
-
-
-
-}