Browse Source

1.代码整体优化
2.结算书展示页面,单独调整页面的调整项扩展
3.新增功能手动结算书导入

chengqiang 4 years atrás
parent
commit
60a1d395be
38 changed files with 3029 additions and 4613 deletions
  1. 3 3
      src/main/java/com/jeeplus/modules/sg/overheadline/entity/FtData.java
  2. 28 5
      src/main/java/com/jeeplus/modules/sg/overheadline/entity/JkxlDetailFee.java
  3. 2 2
      src/main/java/com/jeeplus/modules/sg/overheadline/mapper/FeeAdjustMapper.java
  4. 47 11
      src/main/java/com/jeeplus/modules/sg/overheadline/mapper/OverheadLineMapper.java
  5. 2 1
      src/main/java/com/jeeplus/modules/sg/overheadline/mapper/xml/FeeAdjustMapper.xml
  6. 88 62
      src/main/java/com/jeeplus/modules/sg/overheadline/mapper/xml/OverheadLineMapper.xml
  7. 8 8
      src/main/java/com/jeeplus/modules/sg/overheadline/service/FeeAdjustService.java
  8. 782 1884
      src/main/java/com/jeeplus/modules/sg/overheadline/service/OverheadLineService.java
  9. 3 3
      src/main/java/com/jeeplus/modules/sg/overheadline/service/SettlementService.java
  10. 1 0
      src/main/java/com/jeeplus/modules/sg/overheadline/util/BashInfo.java
  11. 93 5
      src/main/java/com/jeeplus/modules/sg/overheadline/util/DetailFeeUtil.java
  12. 172 0
      src/main/java/com/jeeplus/modules/sg/overheadline/util/ItemShowUtil.java
  13. 543 950
      src/main/java/com/jeeplus/modules/sg/overheadline/web/OverheadLineController.java
  14. 80 81
      src/main/java/com/jeeplus/modules/sg/project/entity/WbsProject.java
  15. 83 53
      src/main/java/com/jeeplus/modules/sg/project/entity/WbsSelection.java
  16. 45 31
      src/main/java/com/jeeplus/modules/sg/project/mapper/ItemMapper.java
  17. 19 11
      src/main/java/com/jeeplus/modules/sg/project/mapper/ProjectMapper.java
  18. 53 40
      src/main/java/com/jeeplus/modules/sg/project/mapper/xml/ItemMapper.xml
  19. 16 23
      src/main/java/com/jeeplus/modules/sg/project/mapper/xml/ProjectMapper.xml
  20. 102 79
      src/main/java/com/jeeplus/modules/sg/project/service/ItemService.java
  21. 93 0
      src/main/java/com/jeeplus/modules/sg/project/service/ManualItemService.java
  22. 207 205
      src/main/java/com/jeeplus/modules/sg/project/service/ProjectService.java
  23. 159 0
      src/main/java/com/jeeplus/modules/sg/project/service/WbsItemService.java
  24. 22 0
      src/main/java/com/jeeplus/modules/sg/project/util/ProjectUtil.java
  25. 273 206
      src/main/java/com/jeeplus/modules/sg/project/web/ProjectController.java
  26. 70 83
      src/main/java/com/jeeplus/modules/sg/project/web/ProjectTemController.java
  27. 6 843
      src/main/java/com/jeeplus/modules/sg/substation/service/SubstationService.java
  28. BIN
      src/main/webapp/static/template/template.xlsx
  29. 1 1
      src/main/webapp/webpage/modules/sg/free/individualForm.js
  30. 12 14
      src/main/webapp/webpage/modules/sg/free/wbslist.js
  31. 3 3
      src/main/webapp/webpage/modules/sg/free/wbslist.jsp
  32. 1 1
      src/main/webapp/webpage/modules/sg/project/addItemForm.js
  33. 2 1
      src/main/webapp/webpage/modules/sg/project/management.jsp
  34. 1 1
      src/main/webapp/webpage/modules/sg/projecttem/addItem.js
  35. 5 1
      src/main/webapp/webpage/modules/sg/projecttem/addItem2Form.js
  36. 1 0
      src/main/webapp/webpage/modules/sg/projecttem/addItem2Form.jsp
  37. 1 1
      src/main/webapp/webpage/modules/sg/projecttem/manageList.jsp
  38. 2 1
      src/main/webapp/webpage/modules/sg/projecttem/updateItem.jsp

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

@@ -1,14 +1,14 @@
 package com.jeeplus.modules.sg.overheadline.entity;
 
 /**
- * 分摊费用
+ * 调整费用信息,包含分摊调整的字段如code、fee等,和单独调整字段如tableData。剩余为共同字段
  */
 public class FtData {
     private String id;   //项目ID
-    private String code;   //分摊费用类型
+    private String code;   //分摊费用类型,即根据什么进行分摊
     private String state;  //调整类型  1:增加  2:减少
     private Double fee;   //调整费用
-    private String type;  //分摊费用名称
+    private String type;  //分摊费用名称
     private String itemType;  //项目类型
     private String tableData; //表格数据
 

+ 28 - 5
src/main/java/com/jeeplus/modules/sg/overheadline/entity/JkxlDetailFee.java

@@ -18,10 +18,6 @@ public class JkxlDetailFee {
     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;  //措施费二
@@ -35,8 +31,11 @@ public class JkxlDetailFee {
     private String wbsId;  //标准 WBS 要素
     private String projectId;  //内部项目号
     private String describe;  //描述
+    private String simpleDescribe; //简单描述
     private String parentNode;  //父节点
-    private String feeType;   //1:主体部分  2:其他部分
+    private String feeType;   //节点类型:0.其他费用节点;1.本体节点(建筑、安装、设备购置费);2.项目类型节点(一个项目类型只有一个);3.项目中剩余费用节点(如:基本预备费);4.顶级节点(一个)
+    private String projectType; //项目类型
+    private String state;  //展示状态 0:不展示 1:展示
 
     private Double sbFee;      //设备费
     private Double jzFee;      //建筑费
@@ -50,6 +49,14 @@ public class JkxlDetailFee {
     private Integer index;    //序号
     private List<JkxlDetailFee> nodes;//子节点
 
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
     public Double getCbrSb() {
         return cbrSb;
     }
@@ -62,6 +69,22 @@ public class JkxlDetailFee {
 
     }
 
+    public String getSimpleDescribe() {
+        return simpleDescribe;
+    }
+
+    public void setSimpleDescribe(String simpleDescribe) {
+        this.simpleDescribe = simpleDescribe;
+    }
+
+    public String getProjectType() {
+        return projectType;
+    }
+
+    public void setProjectType(String projectType) {
+        this.projectType = projectType;
+    }
+
     public JkxlDetailFee(String wbsCode){
         this();
         this.wbsCode = wbsCode;

+ 2 - 2
src/main/java/com/jeeplus/modules/sg/overheadline/mapper/FeeAdjustMapper.java

@@ -16,6 +16,6 @@ public interface FeeAdjustMapper {
     //保存调整数据
     void saveTzFee(JkxlAdjustFee jkxlAdjustFee);
 
-    //删除调整数据
-    void delete(String id);
+//    //删除调整数据
+//    void delete(String id);
 }

+ 47 - 11
src/main/java/com/jeeplus/modules/sg/overheadline/mapper/OverheadLineMapper.java

@@ -9,26 +9,62 @@ import java.util.List;
 
 @MyBatisMapper
 public interface OverheadLineMapper {
-    //获取项目明细
-    List<JkxlDetailFee> getList(@Param("id") String id,@Param("type") String type);
+//    //获取项目明细
+//    List<JkxlDetailFee> getList(@Param("id") String id,@Param("type") String type);
 
-    //获取单条明细
+    /**
+     * 获取项目节点列表
+     * @param id            项目id,必须有
+     * @param state         单独调整展示状态 0:不展示 1:展示
+     *                      基本上是 除掉设备购置费的本体工程、其他费用、项目类型节点的和
+     * @param feeType       节点类型:0.其他费用节点;1.本体节点(建筑、安装、设备购置费);
+     *                      2.项目类型节点(一个项目类型只有一个);3.项目中剩余费用节点(如:基本预备费);4.顶级节点(一个)
+     * @param projectType   项目类型:1。架空;2.电缆;3.变电站
+     * @param totalFee      总计,只要有任何值,则查询节点totalFee不为空
+     * @return
+     */
+    List<JkxlDetailFee> getDetails(@Param("id") String id,@Param("state") String state,
+          @Param("feeType") String feeType,@Param("projectType") String projectType,@Param("totalFee") String totalFee);
+
+    /**
+     * 关联element与detail获取节点明细
+     * @param id           项目id
+     * @param wbsCode      节点编码
+     * @return
+     */
     JkxlDetailFee getData(@Param("id")String id, @Param("wbsCode")String wbsCode);
 
-    //保存
+    /**
+     * 根据shortId即节点编码 获取wbs节点信息
+     * @param shortId 节点编码
+     * @return
+     */
+    JkxlDetailFee getElement(@Param("shortId")String shortId);
+
+    /**
+     * 插入detail数据
+     * @param jkxlDetailFee
+     */
     void save(JkxlDetailFee jkxlDetailFee);
 
-    //批量保存
+    /**
+     * 批量插入
+     * @param list
+     */
     void saveList(@Param("list") List<JkxlDetailFee> list);
 
-    //获取项目明细
-    List<JkxlDetailFee> findList(@Param("id") String id,@Param("type")String type);
+//    //获取项目明细
+//    List<JkxlDetailFee> findList(@Param("id") String id,@Param("type")String type);
+
+//    //获取调整数据
+//    List<JkxlDetailFee> getAdjust(String id);
 
-    //获取调整数据
-    List<JkxlDetailFee> getAdjust(String id);
+    /**
+     * 更新节点的调整金额与totalFee。方法保证了如果传入的rgFtFee或totalFee为空则对该数据不进行更新
+     * @param jkxlDetailFee
+     */
+    void updateData(JkxlDetailFee jkxlDetailFee);
 
-    //更新项目明细
-    void updateDate(JkxlDetailFee jkxlDetailFee);
 
     //批量更新项目明细
     void updateList(@Param("list") List<JkxlDetailFee> list);

+ 2 - 1
src/main/java/com/jeeplus/modules/sg/overheadline/mapper/xml/FeeAdjustMapper.xml

@@ -35,11 +35,12 @@
 		#{fee}
 		)
 	</insert>
-
+<!--
 	<delete id="delete" parameterType="String">
 		delete  from  sg_fee_adjust
 		<where>
 			id = #{id}
 		</where>
 	</delete>
+	-->
 </mapper>

+ 88 - 62
src/main/java/com/jeeplus/modules/sg/overheadline/mapper/xml/OverheadLineMapper.xml

@@ -2,28 +2,63 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.jeeplus.modules.sg.overheadline.mapper.OverheadLineMapper">
 
-	<select id="getList"  resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
-        SELECT
-         a.simple_describe as 'describe',
-         a.short_id as wbsCode,
-         a.parent_node as parentNode,
-         a.fee_type as feeType,
-         a.level as hierarchy,
-         b.id,
-         b.original_total_cost as originalTotalCost,
-         b.original_rg_cost as originalRgCost,
-         b.original_cbr_cost as originalCbrCost,
-         b.original_fbr_cost as originalFbrCost,
-         b.original_jx_cost as originalJxCost,
-         b.measures_fee1 as measuresFee1,
-         b.measures_fee2 as measuresFee2,
-		 b.measures_fee3 as measuresFee3,
-         b.other_cost as otherCost,
-         b.tex as tex,
-         b.fees as fees,
-         b.zjgc_fee as zjgcFee,
-         b.total_fee as totalFee,
-         b.rg_fee_ft as rgFtFee
+<!--
+	此文件中查询语句以element为主体,left join detail表的条件常是这样的:on a.short_id = b.wbs_code
+		and b.id = #{id}
+	这么做的目的是先获得一个所有wbs节点的唯一数据。然后再在这个基础上以where条件进行过滤。
+	而将 b.id = #{id}放在where条件中的话只能得到该项目有值节点的数据。而我们有时也需要在某项目中某些无值的节点
+	-->
+	<sql id="detailColumns">
+		a.describe,
+		a.simple_describe as simpleDescribe,
+		a.short_id as wbsCode,
+		a.parent_node as parentNode,
+		a.fee_type as feeType,
+		a.level as hierarchy,
+		a.project_type as projectType,
+		a.state as state,
+		b.id,
+		b.original_total_cost as originalTotalCost,
+		b.original_rg_cost as originalRgCost,
+		b.original_cbr_cost as originalCbrCost,
+		b.original_fbr_cost as originalFbrCost,
+		b.original_jx_cost as originalJxCost,
+		b.measures_fee1 as measuresFee1,
+		b.measures_fee2 as measuresFee2,
+		b.measures_fee3 as measuresFee3,
+		b.other_cost as otherCost,
+		b.tex as tex,
+		b.fees as fees,
+		b.zjgc_fee as zjgcFee,
+		b.total_fee as totalFee,
+		b.rg_fee_ft as rgFtFee
+	</sql>
+
+	<select id="getDetails"  resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
+		SELECT
+			<include refid="detailColumns"/>
+		FROM sg_wbs_elements a LEFT JOIN sg_fee_detail b on a.short_id = b.wbs_code
+		and b.id = #{id}
+		<where>
+			<if test="state != null and state != ''">
+				AND a.state = #{state}
+			</if>
+			<if test="feeType != null and feeType != ''">
+				AND a.fee_type = #{feeType}
+			</if>
+			<if test="projectType != null and projectType != ''">
+				AND a.project_type = #{projectType}
+			</if>
+			<if test="totalFee != null and totalFee != ''">
+				AND b.total_fee is not null
+			</if>
+		</where>
+		order by a.short_id
+	</select>
+
+<!--	<select id="getList"  resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
+         SELECT
+			<include refid="detailColumns"/>
          FROM sg_wbs_elements a LEFT JOIN sg_fee_detail b on a.short_id = b.wbs_code
          and b.id = #{id}
          <where>
@@ -31,35 +66,38 @@
 		 </where>
 		 order by a.short_id
 	</select>
+	-->
 
 	<select id="getData"  resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
-        SELECT
-         a.simple_describe as 'describe',
-         a.short_id as wbsCode,
-         a.parent_node as parentNode,
-		 a.fee_type as feeType,
-         b.id,
-         b.original_total_cost as originalTotalCost,
-         b.original_rg_cost as originalRgCost,
-         b.original_cbr_cost as originalCbrCost,
-         b.original_fbr_cost as originalFbrCost,
-         b.original_jx_cost as originalJxCost,
-         b.measures_fee1 as measuresFee1,
-         b.measures_fee2 as measuresFee2,
-		 b.measures_fee3 as measuresFee3,
-         b.other_cost as otherCost,
-         b.tex as tex,
-         b.fees as fees,
-         b.zjgc_fee as zjgcFee,
-         b.total_fee as totalFee,
-         b.rg_fee_ft   as rgFtFee
-         FROM sg_wbs_elements a LEFT JOIN sg_fee_detail b on a.short_id = b.wbs_code
-         <where>
-         b.id = #{id}  and a.short_id = #{wbsCode}
+         SELECT
+			<include refid="detailColumns"/>
+         FROM sg_fee_detail b LEFT JOIN sg_wbs_elements a on a.short_id = b.wbs_code
+		 where b.id = #{id}
+		 and b.wbs_code = #{wbsCode}
+        <!-- <where>
+			 <if test="id != null and id != ''">
+				 AND b.id = #{id}
+			 </if>
+			 <if test="wbsCode != null and wbsCode != ''">
+				 AND a.short_id = #{wbsCode}
+			 </if>
 		 </where>
+		 -->
+	</select>
+
+	<select id="getElement"  resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
+		SELECT
+		a.describe,
+		a.simple_describe as simpleDescribe,
+		a.short_id as wbsCode,
+		a.parent_node as parentNode,
+		a.fee_type as feeType,
+		a.level as hierarchy
+		FROM sg_wbs_elements a
+		where a.short_id = #{shortId}
 	</select>
 
-	<select id="findList"  resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
+	<!--<select id="findList"  resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
 		 SELECT
 		 a.id as wbsId,
          a.project_id as projectId,
@@ -86,15 +124,9 @@
          b.total_fee as totalFee
          FROM sg_wbs_elements a LEFT JOIN sg_fee_detail b on a.short_id = b.wbs_code
          and b.id = #{id}
-         <!--<where>-->
-			 <!--<if test="type != ''">-->
-			 <!--project_type = #{type}-->
-			 <!--</if>-->
-		 <!--</where>-->
          order by a.id
-	</select>
-
-	<select id="getAdjust" parameterType="String" resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
+	</select>  -->
+<!--	<select id="getAdjust" parameterType="String" resultType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
 		select
 		a.simple_describe as 'describe',
 		a.parent_node as parentNode,
@@ -104,7 +136,7 @@
 			b.id = #{id} and b.original_total_cost is not null
 		</where>
 	</select>
-
+-->
 
 	<insert id="save" parameterType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
 		insert into sg_fee_detail
@@ -181,8 +213,6 @@
 		</foreach>
 	</insert>
 
-
-
     <update id="updateList" parameterType="java.util.List">
 		<foreach collection="list" item="item" index="index" separator=";">
           update sg_fee_detail set
@@ -194,7 +224,7 @@
 		</foreach>
     </update>
 
-	<update id="updateDate" parameterType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
+	<update id="updateData" parameterType="com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee">
 		update sg_fee_detail set
 		<if test="rgFtFee != null and rgFtFee != ''">
 			rg_fee_ft = #{rgFtFee},
@@ -208,8 +238,6 @@
 		</where>
 	</update>
 
-
-
 	<delete id="delete" parameterType="String">
 		delete  from  sg_fee_detail
 		<where>
@@ -218,6 +246,4 @@
 	</delete>
 
 
-
-	
 </mapper>

+ 8 - 8
src/main/java/com/jeeplus/modules/sg/overheadline/service/FeeAdjustService.java

@@ -15,7 +15,7 @@ public class FeeAdjustService {
 
 
     /**
-     *查询
+     * 获取调整费用列表
      */
    public List<JkxlAdjustFee> getTzFee(JkxlAdjustFee jkxlAdjustFee){
        return feeAdjustMapper.getTzFee(jkxlAdjustFee);
@@ -38,11 +38,11 @@ public class FeeAdjustService {
        feeAdjustMapper.saveTzFee(jkxlAdjustFee);
     }
 
-    /**
-     *删除
-     */
-    @Transactional
-    public void delete(String id){
-       feeAdjustMapper.delete(id);
-    }
+//    /**
+//     *删除
+//     */
+//    @Transactional
+//    public void delete(String id){
+//       feeAdjustMapper.delete(id);
+//    }
 }

File diff suppressed because it is too large
+ 782 - 1884
src/main/java/com/jeeplus/modules/sg/overheadline/service/OverheadLineService.java


+ 3 - 3
src/main/java/com/jeeplus/modules/sg/overheadline/service/SettlementService.java

@@ -42,7 +42,7 @@ public class SettlementService {
         }
     }
 
-    public void delete(String id){
-        settlementMapper.delete(id);
-    }
+//    public void delete(String id){
+//        settlementMapper.delete(id);
+//    }
 }

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

@@ -11,6 +11,7 @@ import java.util.List;
 import java.util.Map;
 
 public class BashInfo {
+    public static final String PROJECT_MUL = "0"; //人工统计方式结算书,因此可能有多个项目类型
     public static final String PROJECT_JKXL = "1"; //架空线路项目类型编号
     public static final String PROJECT_DLXL = "2"; //电缆线路项目类型编号
     public static final String PROJECT_BDZ = "3"; //变电站项目类型编号

+ 93 - 5
src/main/java/com/jeeplus/modules/sg/overheadline/util/DetailFeeUtil.java

@@ -2,10 +2,11 @@ package com.jeeplus.modules.sg.overheadline.util;
 
 import com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+
+/**
+ * 节点对象处理工具类
+ */
 
 public class DetailFeeUtil {
 
@@ -181,7 +182,7 @@ public class DetailFeeUtil {
     }
 
     /**
-     * 逐级将金额平摊至所有节点上
+     * 逐级将额外金额平摊至所有节点上
      * @param top 分摊费用顶级节点
      * @param fee 分摊金额
      */
@@ -196,4 +197,91 @@ public class DetailFeeUtil {
             }
         }
     }
+
+    /**
+     * 将节点列表中的各项金额汇总到汇总节点上
+     * @param gatherFee 汇总节点
+     * @param list  节点列表
+     */
+    public static void getGatherFee(JkxlDetailFee gatherFee,List<JkxlDetailFee> list){
+        if(gatherFee!=null&&list!=null&&list.size()>0){
+            for(JkxlDetailFee fee:list){
+                gatherFee.setOriginalTotalCost(DoubleUtil.add(gatherFee.getOriginalTotalCost(),fee.getOriginalTotalCost()));
+                gatherFee.setZjgcFee(DoubleUtil.add(gatherFee.getZjgcFee(),fee.getZjgcFee()));
+                gatherFee.setOriginalRgCost(DoubleUtil.add(gatherFee.getOriginalRgCost(),fee.getOriginalRgCost()));
+                gatherFee.setOriginalCbrCost(DoubleUtil.add(gatherFee.getOriginalCbrCost(),fee.getOriginalCbrCost()));
+                gatherFee.setOriginalFbrCost(DoubleUtil.add(gatherFee.getOriginalFbrCost(),fee.getOriginalFbrCost()));
+                gatherFee.setOriginalJxCost(DoubleUtil.add(gatherFee.getOriginalJxCost(),fee.getOriginalJxCost()));
+                gatherFee.setMeasuresFee1(DoubleUtil.add(gatherFee.getMeasuresFee1(),fee.getMeasuresFee1()));
+                gatherFee.setMeasuresFee2(DoubleUtil.add(gatherFee.getMeasuresFee2(),fee.getMeasuresFee2()));
+                gatherFee.setMeasuresFee3(DoubleUtil.add(gatherFee.getMeasuresFee3(),fee.getMeasuresFee3()));
+                gatherFee.setOtherCost(DoubleUtil.add(gatherFee.getOtherCost(),fee.getOtherCost()));
+                gatherFee.setFees(DoubleUtil.add(gatherFee.getFees(),fee.getFees()));
+                gatherFee.setCbrSb(DoubleUtil.add(gatherFee.getCbrSb(),fee.getCbrSb()));
+                gatherFee.setTex(DoubleUtil.add(gatherFee.getTex(),fee.getTex()));
+                gatherFee.setTotalFee(DoubleUtil.add(gatherFee.getTotalFee(),fee.getTotalFee()));
+            }
+        }
+    }
+
+
+    /**
+     * 将节点列表中的totalFee汇总到汇总节点上
+     * @param gatherFee 汇总节点
+     * @param list  节点列表
+     */
+    public static void getGatherFeeOfTotal(JkxlDetailFee gatherFee,List<JkxlDetailFee> list){
+        if(gatherFee!=null&&list!=null&&list.size()>0){
+            for(JkxlDetailFee fee:list){
+                gatherFee.setTotalFee(DoubleUtil.add(gatherFee.getTotalFee(),fee.getTotalFee()));
+            }
+        }
+    }
+
+
+    /**
+     * list中 所有wbs编码一样的JkxlDetailFee对象只保留一个,且相同wbs对象的“安装费”、“建筑费”、“其他费”、“合计”等费用合并。
+     * 最后再根据wbs编码排序,并且设置index
+     * @param list
+     * @return
+     */
+    public static List<JkxlDetailFee> combineFees(List<JkxlDetailFee> list) {
+        Map<String,JkxlDetailFee> map = new HashMap<>();
+        for(JkxlDetailFee fee:list){
+            JkxlDetailFee mapFee = map.get(fee.getWbsCode());
+            if(mapFee==null){
+                map.put(fee.getWbsCode(),fee);
+            }else{
+//                这里的判断处理是为了成果文件不会出现大量0
+                if(mapFee.getAzFee()!=null||fee.getAzFee()!=null){
+                    mapFee.setAzFee(DoubleUtil.add(mapFee.getAzFee(),fee.getAzFee()));
+                }
+                if(mapFee.getJzFee()!=null||fee.getJzFee()!=null){
+                    mapFee.setJzFee(DoubleUtil.add(mapFee.getJzFee(),fee.getJzFee()));
+                }
+                if(mapFee.getQtFee()!=null||fee.getQtFee()!=null){
+                    mapFee.setQtFee(DoubleUtil.add(mapFee.getQtFee(),fee.getQtFee()));
+                }
+                if(mapFee.getTotalFee()!=null||fee.getTotalFee()!=null){
+                    mapFee.setTotalFee(DoubleUtil.add(mapFee.getTotalFee(),fee.getTotalFee()));
+                }
+            }
+        }
+        List<JkxlDetailFee> combinedList = new ArrayList<>();
+        for(JkxlDetailFee fee:map.values()){
+            combinedList.add(fee);
+        }
+        //按照wbs码排序
+        Collections.sort(combinedList, new Comparator<JkxlDetailFee>() {
+            @Override
+            public int compare(JkxlDetailFee o1, JkxlDetailFee o2) {
+                return o1.getWbsCode().compareTo(o2.getWbsCode());
+            }
+        });
+        for (int i=0;i<combinedList.size();i++){
+            combinedList.get(i).setIndex(i+1);
+        }
+        return combinedList;
+    }
+
 }

+ 172 - 0
src/main/java/com/jeeplus/modules/sg/overheadline/util/ItemShowUtil.java

@@ -0,0 +1,172 @@
+package com.jeeplus.modules.sg.overheadline.util;
+
+import com.jeeplus.modules.sg.overheadline.entity.JkxlAdjustFee;
+import com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee;
+import com.jeeplus.modules.sg.overheadline.entity.Settlement;
+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.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 项目展示工具类
+ */
+
+
+@Service
+@Transactional(readOnly = true)
+public class ItemShowUtil {
+
+    @Autowired
+    private OverheadLineMapper overheadLineMapper;
+
+    /**
+     * 为本体工程添加上级合计行,用于展示。同时设置最上级的parentNode为-1
+     * 为了方便动态调整结算书数据以及展示与导出,我们只在数据库中保存本体工程类型节点(不包括“本体工程”节点)与其他费用类型节点
+     * @param list
+     * @param type
+     */
+    public JkxlDetailFee addTotalColumn(List<JkxlDetailFee> list,String type){
+        if(type.equals("1")){
+            JkxlDetailFee fee = overheadLineMapper.getElement("39000000");
+            fee.setParentNode("-1");
+            DetailFeeUtil.getGatherFee(fee,list);
+            list.add(fee);
+            return fee;
+        }else if(type.equals("2")){
+            JkxlDetailFee body = overheadLineMapper.getElement("49000000");
+            body.setParentNode("-1");
+            JkxlDetailFee jz = overheadLineMapper.getElement("49100000");
+            JkxlDetailFee az = overheadLineMapper.getElement("49300000");
+            List<JkxlDetailFee> jzList = new ArrayList<>();
+            List<JkxlDetailFee> azList = new ArrayList<>();
+            for(JkxlDetailFee fee:list){
+                String wbsCode = fee.getWbsCode();
+                if(wbsCode.startsWith("491")){
+                    jzList.add(fee);
+                }else if(wbsCode.startsWith("493")){
+                    azList.add(fee);
+                }
+            }
+            DetailFeeUtil.getGatherFee(jz,jzList);
+            DetailFeeUtil.getGatherFee(az,azList);
+            DetailFeeUtil.getGatherFee(body,list);
+            list.add(body);
+            list.add(jz);
+            list.add(az);
+            return body;
+        }else if(type.equals("3")){
+            JkxlDetailFee top = overheadLineMapper.getElement("20000000");
+            top.setParentNode("-1");
+            List<JkxlDetailFee> topList = new ArrayList<>();
+            for(JkxlDetailFee fee:list){
+                String wbsCode = fee.getWbsCode();
+                if(wbsCode.equals("21000000")||wbsCode.equals("23000000")){
+                    topList.add(fee);
+                }
+            }
+            DetailFeeUtil.getGatherFee(top,topList);
+            list.add(top);
+            return top;
+        }
+        return null;
+    }
+
+    public List<Settlement> disposeData(JkxlDetailFee topBodyFee,JkxlDetailFee topOtherFee, List<Settlement> settlementList, List<JkxlAdjustFee> tzList) {
+//        double originalTotal  = 0.00;
+//        double otherCost =0.00;
+//        double measuresFee =0.00;
+//        double fees = 0.00;
+//        double tex = 0.00;
+//        double totalFee = 0.00;
+//        double originalFbrCost = 0.00;
+//        double originalCbrCost = 0.00;
+        double totalCe = 0.00;
+//        double qt = 0.00;
+        //总计算差额
+        for(JkxlAdjustFee jkxlAdjustFee : tzList){
+            if(jkxlAdjustFee.getType().equals(BashInfo.CE)){
+                totalCe = jkxlAdjustFee.getFee();
+            }
+        }
+//        for (JkxlDetailFee jkxlDetailFee : bodyList){
+//            if(jkxlDetailFee.getWbsCode().equals(BashInfo.QT_HJ) && jkxlDetailFee.getOriginalTotalCost() != null){
+//                originalTotal  =   jkxlDetailFee.getOriginalTotalCost();  //分部分项合计
+//                otherCost = jkxlDetailFee.getOtherCost();     //其他费用
+//                measuresFee = jkxlDetailFee.getMeasuresFee1()+jkxlDetailFee.getMeasuresFee2()+jkxlDetailFee.getMeasuresFee3();   //措施费
+//                fees = jkxlDetailFee.getFees();    //规费
+//                tex = jkxlDetailFee.getTex();   //税金
+//                totalFee = jkxlDetailFee.getTotalFee();   //合计
+//                originalFbrCost = jkxlDetailFee.getOriginalFbrCost();  //发包人合计
+//                originalCbrCost = jkxlDetailFee.getOriginalCbrCost();   //承包人合计
+//            }
+//            if(jkxlDetailFee.getWbsCode().equals(BashInfo.QT_HJ) && jkxlDetailFee.getOriginalTotalCost() == null){
+//                qt = jkxlDetailFee.getTotalFee();
+//            }
+//        }
+        for(Settlement settlement : settlementList){
+            //分部分项工程费差额
+            if(settlement.getEntryName().contains(BashInfo.JS_FBFX)){
+//                double ce = Math.abs(settlement.getMoney() - originalTotal);
+                settlement.setTotalFee(topBodyFee.getOriginalTotalCost());
+                settlement.setDifference(DoubleUtil.sub(settlement.getMoney(),topBodyFee.getOriginalTotalCost()));
+//                settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+            }
+            //发包人材料采购费
+            if(settlement.getEntryName().contains("发包人") || settlement.getEntryName().contains("招标人")){
+//                double ce = Math.abs(settlement.getMoney() - originalFbrCost);
+//                settlement.setTotalFee(originalFbrCost);
+                settlement.setTotalFee(topBodyFee.getOriginalFbrCost());
+//                settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+                settlement.setDifference(DoubleUtil.sub(settlement.getMoney(),topBodyFee.getOriginalFbrCost()));
+            }
+            //措施费差额
+            if(settlement.getEntryName().contains(BashInfo.JS_CSXM)){
+//                double ce = Math.abs(settlement.getMoney() - measuresFee);
+//                settlement.setTotalFee(measuresFee);
+                double measuresFee = DoubleUtil.add(topBodyFee.getMeasuresFee1(),topBodyFee.getMeasuresFee2(),topBodyFee.getMeasuresFee3());
+                settlement.setTotalFee(measuresFee);
+//                settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+                settlement.setDifference(DoubleUtil.sub(settlement.getMoney(),measuresFee));
+            }
+            //规费差额
+            if(settlement.getEntryName().contains(BashInfo.JS_GF)){
+//                double ce = Math.abs(settlement.getMoney() - fees);
+//                settlement.setTotalFee(fees);
+                settlement.setTotalFee(topBodyFee.getFees());
+//                settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+                settlement.setDifference(DoubleUtil.sub(settlement.getMoney(),topBodyFee.getFees()));
+            }
+            //税金差额
+            if(settlement.getEntryName().contains(BashInfo.JS_SJ)){
+//                double ce = Math.abs(settlement.getMoney() - tex);
+//                settlement.setTotalFee(tex);
+                settlement.setTotalFee(topBodyFee.getTex());
+//                settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+                settlement.setDifference(DoubleUtil.sub(settlement.getMoney(),topBodyFee.getTex()));
+            }
+            //其他费用差额
+            if(settlement.getEntryName().contains(BashInfo.JS_QTXM)){
+//                double ce = Math.abs(settlement.getMoney() - otherCost-qt);
+//                settlement.setTotalFee(otherCost+qt);
+                settlement.setTotalFee(DoubleUtil.add(topBodyFee.getOtherCost(),topOtherFee.getTotalFee()));
+//                settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+                settlement.setDifference(DoubleUtil.add(settlement.getMoney(),-topBodyFee.getOtherCost(),-topOtherFee.getTotalFee()));
+            }
+            //结算差额
+            if(settlement.getEntryName().contains("结算") || settlement.getEntryName().contains("报价") || settlement.getEntryName().contains("下浮后") || settlement.getEntryName().contains("最高")){
+                settlement.setTotalFee(topBodyFee.getTotalFee());
+                settlement.setDifference(totalCe);
+            }
+
+
+        }
+        return settlementList;
+    }
+
+
+}

File diff suppressed because it is too large
+ 543 - 950
src/main/java/com/jeeplus/modules/sg/overheadline/web/OverheadLineController.java


+ 80 - 81
src/main/java/com/jeeplus/modules/sg/project/entity/WbsProject.java

@@ -14,21 +14,20 @@ public class WbsProject extends DataEntity<WbsProject> {
     private int number;  //项目数量
     private String userName; //创建人
     private String parentNode; //父节点
-
     private List<WbsItem> wbsItems; //项目
 
-
-    private String projectId;      //工程ID
-    private String creator;       //创建人
+//这些字段用于保存在历史工程管理页面添加的查询字段
+//    private String projectId;      //工程ID
+//    private String creator;       //创建人
     private Date projectStartDate;   //工程登记开始时间
     private Date projectEndDate;     //工程登记结束时间
-    private String itemId;        //项目ID
-    private String itemName;     //项目名称
-    private String type;        //项目类型
-    private String unit;        //施工单位
-    private Date itemStartDate;   //项目登记开始时间
-    private Date itemEndDate;     //项目登记结束时间
-    private String userId;   //用户ID
+//    private String itemId;        //项目ID
+//    private String itemName;     //项目名称
+//    private String type;        //项目类型
+//    private String unit;        //施工单位
+//    private Date itemStartDate;   //项目登记开始时间
+//    private Date itemEndDate;     //项目登记结束时间
+//    private String userId;   //用户ID
 
 
 
@@ -73,13 +72,13 @@ public class WbsProject extends DataEntity<WbsProject> {
     }
 
 
-    public String getProjectId() {
-        return projectId;
-    }
-
-    public void setProjectId(String projectId) {
-        this.projectId = projectId;
-    }
+//    public String getProjectId() {
+//        return projectId;
+//    }
+//
+//    public void setProjectId(String projectId) {
+//        this.projectId = projectId;
+//    }
 
 
     public Date getProjectStartDate() {
@@ -98,69 +97,69 @@ public class WbsProject extends DataEntity<WbsProject> {
         this.projectEndDate = projectEndDate;
     }
 
-    public String getItemId() {
-        return itemId;
-    }
-
-    public void setItemId(String itemId) {
-        this.itemId = itemId;
-    }
-
-    public String getItemName() {
-        return itemName;
-    }
-
-    public void setItemName(String itemName) {
-        this.itemName = itemName;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getUnit() {
-        return unit;
-    }
-
-    public void setUnit(String unit) {
-        this.unit = unit;
-    }
-
-    public Date getItemStartDate() {
-        return itemStartDate;
-    }
-
-    public void setItemStartDate(Date itemStartDate) {
-        this.itemStartDate = itemStartDate;
-    }
-
-    public Date getItemEndDate() {
-        return itemEndDate;
-    }
-
-    public void setItemEndDate(Date itemEndDate) {
-        this.itemEndDate = itemEndDate;
-    }
-
-    public String getUserId() {
-        return userId;
-    }
-
-    public void setUserId(String userId) {
-        this.userId = userId;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
+//    public String getItemId() {
+//        return itemId;
+//    }
+//
+//    public void setItemId(String itemId) {
+//        this.itemId = itemId;
+//    }
+//
+//    public String getItemName() {
+//        return itemName;
+//    }
+//
+//    public void setItemName(String itemName) {
+//        this.itemName = itemName;
+//    }
+//
+//    public String getType() {
+//        return type;
+//    }
+//
+//    public void setType(String type) {
+//        this.type = type;
+//    }
+//
+//    public String getUnit() {
+//        return unit;
+//    }
+//
+//    public void setUnit(String unit) {
+//        this.unit = unit;
+//    }
+//
+//    public Date getItemStartDate() {
+//        return itemStartDate;
+//    }
+//
+//    public void setItemStartDate(Date itemStartDate) {
+//        this.itemStartDate = itemStartDate;
+//    }
+//
+//    public Date getItemEndDate() {
+//        return itemEndDate;
+//    }
+//
+//    public void setItemEndDate(Date itemEndDate) {
+//        this.itemEndDate = itemEndDate;
+//    }
+//
+//    public String getUserId() {
+//        return userId;
+//    }
+//
+//    public void setUserId(String userId) {
+//        this.userId = userId;
+//    }
+//
+//    public String getCreator() {
+//        return creator;
+//    }
+//
+//    public void setCreator(String creator) {
+//        this.creator = creator;
+//    }
 
     public String getProjectNo() {
         return projectNo;

+ 83 - 53
src/main/java/com/jeeplus/modules/sg/project/entity/WbsSelection.java

@@ -1,48 +1,78 @@
 package com.jeeplus.modules.sg.project.entity;
 
+import org.apache.commons.lang3.StringUtils;
+
 import java.util.Date;
 
 /**
  * 工程项目查询条件
  */
 public class WbsSelection {
-    private String projectId;      //工程ID
+//    private String projectId;      //工程ID
     private String projectName;    //工程名称
-    private String createBy;      //登记人
+//    private String createBy;      //登记人
     private Date projectStartDate;   //工程登记开始时间
     private Date projectEndDate;     //工程登记结束时间
-    private String itemId;        //项目ID
+
+//    private String itemId;        //项目ID
     private String itemName;     //项目名称
     private String type;        //项目类型
     private String unit;        //施工单位
-    private Date itemStartDate;   //项目登记开始时间
-    private Date itemEndDate;     //项目登记结束时间
-    private String userId;   //用户ID
-
-
-    public String getUserId() {
-        return userId;
-    }
-
-    public void setUserId(String userId) {
-        this.userId = userId;
-    }
-
-    public String getProjectId() {
-        return projectId;
-    }
-
-    public void setProjectId(String projectId) {
-        this.projectId = projectId;
-    }
-
-    public String getItemId() {
-        return itemId;
-    }
-
-    public void setItemId(String itemId) {
-        this.itemId = itemId;
-    }
+//    private Date itemStartDate;   //项目登记开始时间
+//    private Date itemEndDate;     //项目登记结束时间
+//    private String userId;   //用户ID
+
+    public WbsProject getProject(){
+        WbsProject project = new WbsProject();
+        project.setProjectName(projectName);
+        project.setProjectStartDate(projectStartDate);
+        project.setProjectEndDate(projectEndDate);
+        return project;
+    }
+
+    public WbsItem getItem(){
+        WbsItem item = new WbsItem();
+        item.setItemName(itemName);
+        item.setType(type);
+        item.setUnit(unit);
+        return item;
+    }
+
+    /**
+     * 判断是否有项目相关查询条件,如果有返回是
+     * @return
+     */
+    public boolean hasItemCondition(){
+        if(StringUtils.isNotBlank(itemName)||StringUtils.isNotBlank(type)||StringUtils.isNotBlank(unit)){
+            return true;
+        }
+        return false;
+    }
+
+
+//    public String getUserId() {
+//        return userId;
+//    }
+//
+//    public void setUserId(String userId) {
+//        this.userId = userId;
+//    }
+//
+//    public String getProjectId() {
+//        return projectId;
+//    }
+//
+//    public void setProjectId(String projectId) {
+//        this.projectId = projectId;
+//    }
+//
+//    public String getItemId() {
+//        return itemId;
+//    }
+//
+//    public void setItemId(String itemId) {
+//        this.itemId = itemId;
+//    }
 
     public String getProjectName() {
         return projectName;
@@ -52,13 +82,13 @@ public class WbsSelection {
         this.projectName = projectName;
     }
 
-    public String getCreateBy() {
-        return createBy;
-    }
-
-    public void setCreateBy(String createBy) {
-        this.createBy = createBy;
-    }
+//    public String getCreateBy() {
+//        return createBy;
+//    }
+//
+//    public void setCreateBy(String createBy) {
+//        this.createBy = createBy;
+//    }
 
     public Date getProjectStartDate() {
         return projectStartDate;
@@ -100,19 +130,19 @@ public class WbsSelection {
         this.unit = unit;
     }
 
-    public Date getItemStartDate() {
-        return itemStartDate;
-    }
-
-    public void setItemStartDate(Date itemStartDate) {
-        this.itemStartDate = itemStartDate;
-    }
-
-    public Date getItemEndDate() {
-        return itemEndDate;
-    }
-
-    public void setItemEndDate(Date itemEndDate) {
-        this.itemEndDate = itemEndDate;
-    }
+//    public Date getItemStartDate() {
+//        return itemStartDate;
+//    }
+//
+//    public void setItemStartDate(Date itemStartDate) {
+//        this.itemStartDate = itemStartDate;
+//    }
+//
+//    public Date getItemEndDate() {
+//        return itemEndDate;
+//    }
+//
+//    public void setItemEndDate(Date itemEndDate) {
+//        this.itemEndDate = itemEndDate;
+//    }
 }

+ 45 - 31
src/main/java/com/jeeplus/modules/sg/project/mapper/ItemMapper.java

@@ -12,42 +12,56 @@ import java.util.List;
 
 @MyBatisMapper
 public interface ItemMapper extends BaseMapper<WbsItem> {
-    //获取项目信息
-    List<WbsItem> getList(WbsProject wbsProject);
+//    //获取项目信息
+//    List<WbsItem> getList(WbsProject wbsProject);
 
-    //保存项目信息
-    int insert(WbsItem wbsItem);
+//    //保存项目信息
+//    int insert(WbsItem wbsItem);
 
-    //根据名称获取项目
-    List<WbsItem> findItemByName(@Param("itemName")String itemName,@Param("projectId") String projectId);
+//    //根据名称获取项目
+//    List<WbsItem> findItemByName(@Param("itemName")String itemName,@Param("projectId") String projectId);
 
-    //批量更新项目信息
+    /**
+     * 批量更新项目信息(仅unit即供应商)
+     * @param list
+     */
     void updateList(@Param("list") List<WbsItem> list);
 
-    //删除项目
-    Integer updateItem(WbsItem wbsItem);
-
-    //根据工程id删除
-    Integer deleteItem(String parentId);
-
-    //根据项目id删除结算
-    Integer deleteCount(String itemId);
-
-     //根据项目id删除 其他项目
-    Integer deleteAdjust(String itemId);
-
-    //根据项目id删除 差额
-    Integer deleteDetail(String itemId);
-
-    //查找工程下所有项目
-    List<WbsItem> findItem(String parentId);
-
-    //根据id查找当前所有项目
-    WbsItem findItemById(String id);
-
-    //更新诚信扣款
+    /**
+     * 逻辑删除项目
+     * @param id 项目id
+     * @return
+     */
+    Integer deleteItem(String id);
+
+    /**
+     * 逻辑删除所属工程id为parentId的项目
+     * @param parentId
+     * @return
+     */
+    Integer deleteItems(String parentId);
+
+//    //根据项目id删除结算
+//    Integer deleteCount(String itemId);
+//
+//     //根据项目id删除 其他项目
+//    Integer deleteAdjust(String itemId);
+//
+//    //根据项目id删除 差额
+//    Integer deleteDetail(String itemId);
+
+//    //查找工程下所有项目
+//    List<WbsItem> findItem(String parentId);
+
+//    //根据id查找当前所有项目
+//    WbsItem findItemById(String id);
+
+    /**
+     * 更新财务处理相关信息
+     * @param list
+     */
     void updateFee(@Param("list") List<WbsItem> list);
 
-    //获取诚信扣款状态
-    WbsItem getState(String id);
+//    //获取诚信扣款状态
+//    WbsItem getState(String id);
 }

+ 19 - 11
src/main/java/com/jeeplus/modules/sg/project/mapper/ProjectMapper.java

@@ -15,21 +15,29 @@ import java.util.List;
 
 @MyBatisMapper
 public interface ProjectMapper extends BaseMapper<WbsProject> {
-    //获取工程信息
-    List<WbsProject> getList(WbsSelection wbsSelection);
-
-    //更新工程信息
+//    //获取工程信息
+//    List<WbsProject> getList(WbsSelection wbsSelection);
+
+    /**
+     * 更新工程下项目数量字段
+     * @param number
+     * @param id
+     */
     void updateNum(@Param("number") int number,@Param("id") String id);
 
-    //根据工程名获取工程
-    List<WbsProject> findByName(String projectName);
+//    //根据工程名获取工程
+//    List<WbsProject> findByName(String projectName);
 
-    //工程删除
+    /**
+     * 逻辑删除工程
+     * @param wbsProject
+     * @return
+     */
     Integer deleteProject(WbsProject wbsProject);
 
-    //根据id查找工程
-    WbsProject findProjectById(String id);
+//    //根据id查找工程
+//    WbsProject findProjectById(String id);
 
-    //根据id修改工程数量
-    Integer updateProNumber(WbsProject wbsProject);
+//    //根据id修改工程数量
+//    Integer updateProNumber(WbsProject wbsProject);
 }

+ 53 - 40
src/main/java/com/jeeplus/modules/sg/project/mapper/xml/ItemMapper.xml

@@ -18,24 +18,23 @@
 		a.integrity_fee AS "integrityFee",
 	    a.state AS "state",
 	    a.dec_fund AS "decFund",
-	    a.tex_deal AS "texDeal"
+	    a.tex_deal AS "texDeal",
+	    b.project_name AS "projectName",
+	    b.project_no AS "projectNo"
 	</sql>
 
-	
-    
 	<select id="get" resultType="WbsItem" >
 		SELECT 
 			<include refid="infoColumns"/>
-		FROM sg_wbs_item a
+		FROM sg_wbs_item a left join sg_wbs_project b on a.project_id = b.id
 		WHERE a.id = #{id}
 	</select>
 
-
-	
+	<!--以wbsproject为参数,是因为代码中它除了作为工程对象类,还是工程项目列表查询条件的保存类
 	<select id="getList" resultType="WbsItem" parameterType="com.jeeplus.modules.sg.project.entity.WbsProject">
 		SELECT 
 			<include refid="infoColumns"/>
-		FROM sg_wbs_item a
+		FROM sg_wbs_item a left join sg_wbs_project b on a.project_id = b.id
 		<where>
 			 a.del_flag = '0'
 			<if test="itemName != null and itemName != ''">
@@ -58,7 +57,29 @@
 			</if>
 		</where>
 		 ORDER BY a.update_date DESC
+	</select>
+	-->
 
+	<select id="findList" resultType="WbsItem" >
+		SELECT
+		<include refid="infoColumns"/>
+		FROM sg_wbs_item a left join sg_wbs_project b on a.project_id = b.id
+		<where>
+			a.del_flag = '0'
+			<if test="itemName != null and itemName != ''">
+				AND a.item_name LIKE CONCAT(CONCAT('%',#{itemName},'%'))
+			</if>
+			<if test="type != null  and type != ''">
+				AND a.type LIKE CONCAT(CONCAT('%',#{type},'%'))
+			</if>
+			<if test="unit != null  and unit != ''">
+				AND a.unit LIKE CONCAT(CONCAT('%',#{unit},'%'))
+			</if>
+			<if test="projectId != null and projectId != ''">
+				AND a.project_id = #{projectId}
+			</if>
+		</where>
+		ORDER BY a.update_date DESC
 	</select>
 
 
@@ -85,7 +106,10 @@
 			item_name,
 			unit,
 			type,
-			project_id
+			project_id,
+			integrity_fee,
+			dec_fund,
+			tex_deal
 		) VALUES (
 			#{id},
 			#{createBy.id},
@@ -97,10 +121,16 @@
 			#{itemName},
 			#{unit},
 			#{type},
-			#{projectId}
+			#{projectId},
+			#{integrityFee},
+			#{decFund},
+			#{texDeal}
 		)
 	</insert>
 	
+
+
+<!--
 	<update id="update">
 		UPDATE sg_wbs_item SET
 			item_name = #{itemName},
@@ -111,28 +141,20 @@
 			remarks = #{remarks}
 		WHERE id = #{id}
 	</update>
-	
-	
-	<!--物理删除-->
 	<update id="delete">
 		DELETE FROM sg_wbs_item
 		WHERE id = #{id}
 	</update>
-	
-	<!--逻辑删除-->
 	<update id="deleteByLogic">
 		UPDATE sg_wbs_item SET
 			del_flag = #{DEL_FLAG_DELETE}
 		WHERE id = #{id}
 	</update>
-	
-	
-	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
+
 	<select id="findUniqueByProperty" resultType="Goods" statementType="STATEMENT">
 		select * FROM sg_wbs_item  where ${propertyName} = '${value}'
 	</select>
-
-	<select id="findItemByName" parameterType="String" resultType="com.jeeplus.modules.sg.project.entity.WbsItem">
+<select id="findItemByName" parameterType="String" resultType="com.jeeplus.modules.sg.project.entity.WbsItem">
 		SELECT
 		id AS id,
 		unit AS unit,
@@ -143,43 +165,34 @@
 		WHERE item_name = #{itemName} and project_id =#{projectId} and del_flag = 0
 	</select>
 
-	<!--<delete id="deleteItem" parameterType="String">-->
-		<!--DELETE FROM sg_wbs_item where id = #{id}-->
-	<!--</delete>-->
-
+-->
 
 
-	<!--1-->
-
-	<update id="updateItem" parameterType="WbsItem">
-		update sg_wbs_item set del_flag = #{delFlag} where id=#{id}
+	<update id="deleteItem" >
+		update sg_wbs_item set del_flag = 1 where id=#{id}
 	</update>
-	<!-- 根据工程id查找项目 -->
-	<select id="findItem" parameterType="String" resultType="WbsItem">
-		select * From sg_wbs_item where project_id = #{id}
-	</select>
 
 	<!--根据工程id逻辑删除项目-->
-	<update id = "deleteItem">
+	<update id = "deleteItems">
 		update sg_wbs_item set del_flag = 1 where project_id = #{parentId}
 	</update>
 
-	<!--根据项目 id 删除结算信息-->
+	<!--
+	<select id="findItem" parameterType="String" resultType="WbsItem">
+		select * From sg_wbs_item where project_id = #{id}
+	</select>
 	<update id="deleteCount">
 		update sg_sett_count set del_flag = 1 where id = #{itemId}
 	</update>
 
-	<!--根据项目 id 删除其他信息-->
 	<update id="deleteAdjust">
 		update sg_fee_adjust set del_flag = 1 where id = #{itemId}
 	</update>
 
-	<!--根据项目 id 删除差额-->
 	<update id="deleteDetail">
 		update sg_fee_detail set del_flag = 1 where id = #{itemId}
 	</update>
 
-	<!--根据项目id查找当前项目所有信息-->
 	<select id="findItemById" parameterType="String" resultType="com.jeeplus.modules.sg.project.entity.WbsItem">
 		SELECT
 		id AS id,
@@ -190,7 +203,7 @@
 		FROM sg_wbs_item
 		WHERE id=#{id}
 	</select>
-
+-->
 	<update id="updateFee" parameterType="java.util.List">
 		<foreach collection="list" item="item" index="index" separator=";">
 			update sg_wbs_item set
@@ -204,11 +217,11 @@
 			</where>
 		</foreach>
 	</update>
-
+<!--
 	<select id="getState" resultType="WbsItem" >
 		SELECT
 		<include refid="infoColumns"/>
-		FROM sg_wbs_item a
+		FROM sg_wbs_item a left join sg_wbs_project b on a.project_id = b.id
 		WHERE a.id = #{id} and a.state = '1'
-	</select>
+	</select> -->
 </mapper>

+ 16 - 23
src/main/java/com/jeeplus/modules/sg/project/mapper/xml/ProjectMapper.xml

@@ -24,7 +24,7 @@
 		WHERE a.id = #{id}
 	</select>
 
-	<select id="findByName" parameterType="String" resultType="WbsProject">
+	<!--<select id="findByName" parameterType="String" resultType="WbsProject">
 		SELECT
 		a.id AS "id",
 		a.create_by AS "createBy.id",
@@ -40,9 +40,8 @@
 			a.project_name = #{projectName}
 		</where>
 		order by a.create_date DESC
-	</select>
-
-	
+	</select>-->
+	<!--查询工程列表 在baseMaper中-->
 	<select id="findList" resultType="WbsProject">
 		SELECT
 			<include refid="infoColumns"/>
@@ -50,18 +49,16 @@
 		left join sys_user b on a.create_by = b.id
 		<where>
 			a.del_flag = '0'
-		   <!--<if test="createBy != null">-->
-				<!--a.create_by = #{createBy.id} AND-->
-		   <!--</if>-->
-		    <if test="projectId !=null and projectId != ''">
+		   <!-- <if test="projectId !=null and projectId != ''">
 				AND a.id = #{projectId}
 			</if>
-			<if test="projectName != null and projectName != ''">
-				AND a.project_name LIKE CONCAT(CONCAT('%',#{projectName},'%'))
-			</if>
 			<if test="creator != null  and creator != ''">
 				AND b.name LIKE CONCAT(CONCAT('%',#{creator},'%'))
 			</if>
+			-->
+			<if test="projectName != null and projectName != ''">
+				AND a.project_name LIKE CONCAT(CONCAT('%',#{projectName},'%'))
+			</if>
 			<if test="projectStartDate != null and projectEndDate != ''">
 				AND a.create_date &gt;= #{projectStartDate}
 			</if>
@@ -71,13 +68,11 @@
 			<if test="dataScope != null and dataScope != ''">
 				${dataScope}
 			</if>
-
 		</where>
 		 ORDER BY a.update_date DESC
-
 	</select>
 	
-	<select id="findAllList" resultType="WbsProject" >
+<!--	<select id="findAllList" resultType="WbsProject" >
 		SELECT 
 			<include refid="infoColumns"/>
 		FROM sg_wbs_project a
@@ -94,6 +89,7 @@
 			</otherwise>
 		</choose>
 	</select>
+	-->
 	
 	<insert id="insert">
 		INSERT INTO sg_wbs_project(
@@ -139,38 +135,35 @@
 		</where>
 	</update>
 	
-	
-	<!--物理删除-->
+	<!--
 	<delete id="delete">
 		DELETE FROM sg_wbs_project
 		WHERE id = #{id}
 	</delete>
 	
-	<!--逻辑删除-->
 	<update id="deleteByLogic">
 		UPDATE sg_wbs_project SET
 			del_flag = #{DEL_FLAG_DELETE}
 		WHERE id = #{id}
 	</update>
 	
-	
-	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
 	<select id="findUniqueByProperty" resultType="Goods" statementType="STATEMENT">
 		select * FROM sg_wbs_project  where ${propertyName} = '${value}'
 	</select>
+	-->
 
 	<!--1-->
 	<!--逻辑删除工程id -->
 	<update id="deleteProject" parameterType="WbsProject">
-	  	update sg_wbs_project set del_flag = #{delFlag} where id = #{id}
+	  	update sg_wbs_project set del_flag = 1 where id = #{id}
 	</update>
-	<!--根据id查找当前工程所有信息-->
-	<select id="findProjectById" parameterType="String" resultType="com.jeeplus.modules.sg.project.entity.WbsProject">
+
+<!--	<select id="findProjectById" parameterType="String" resultType="com.jeeplus.modules.sg.project.entity.WbsProject">
 		select * from sg_wbs_project where id = #{id}
 	</select>
 
-	<!--根据工程id修改工程下项目数量-->
 	<update id="updateProNumber" parameterType="WbsProject">
 		update sg_wbs_project set number = #{number} where id=#{id}
 	</update>
+-->
 </mapper>

+ 102 - 79
src/main/java/com/jeeplus/modules/sg/project/service/ItemService.java

@@ -20,83 +20,106 @@ import java.util.stream.Collectors;
 public class ItemService extends CrudService<ItemMapper, WbsItem> {
     @Autowired
     private ItemMapper itemMapper;
+//    @Autowired
+//    private ProjectService projectService;
     @Autowired
-    private ProjectService projectService;
-
-
-    public WbsItem get(String id) {
-        return super.get(id);
-    }
+    private ProjectMapper projectMapper;
+
+//    /**
+//     * 获取项目(结算书)信息及所属工程信息
+//     * @param id
+//     * @return
+//     */
+//    public WbsItem get(String id) {
+//        return super.get(id);
+//    }
+
+//    /**
+//     *获取诚信扣款状态
+//     */
+//    public WbsItem getState(String id){
+//        return itemMapper.getState(id);
+//    }
+
+
+//    public List<WbsItem> findList(WbsProject wbsProject) {
+//        return itemMapper.getList(wbsProject);
+//    }
+
+//    @Transactional(readOnly = false)
+//    public void update(List<WbsItem> wbsItems){
+//        itemMapper.updateList(wbsItems);
+//    }
 
     /**
-     *获取诚信扣款状态
+     * 保存项目,并更新项目所属工程的项目数量
+     * @param wbsItem
      */
-    public WbsItem getState(String id){
-        return itemMapper.getState(id);
-    }
-
-
-    public List<WbsItem> findList(WbsProject wbsProject) {
-        return itemMapper.getList(wbsProject);
-    }
-
-    @Transactional(readOnly = false)
-    public void update(List<WbsItem> wbsItems){
-        itemMapper.updateList(wbsItems);
-    }
-
     @Transactional(readOnly = false)
     public void save(WbsItem wbsItem) {
         String projectId = wbsItem.getProjectId();
-        WbsProject wbsProject = projectService.get(projectId);
+        WbsProject wbsProject = projectMapper.get(projectId);
         //项目数递增
         int num = wbsProject.getNumber()+1;
-        projectService.updateNum(num,projectId);
+        projectMapper.updateNum(num,projectId);
         wbsItem.setCreateDate(new Date());
         itemMapper.insert(wbsItem);
     }
 
-    @Transactional(readOnly = false)
-    public void delete(WbsItem wbsItem) {
-        super.delete(wbsItem);
-    }
-
-    public List<WbsItem> findItemByName(String itemName,String projectId){
-        return itemMapper.findItemByName(itemName,projectId);
-    }
+//    @Transactional(readOnly = false)
+//    public void delete(WbsItem wbsItem) {
+//        super.delete(wbsItem);
+//    }
+
+//    /**
+//     * 根据工程id,项目名称 查找项目信息
+//     * @param itemName  项目名称
+//     * @param projectId 工程id
+//     * @return
+//     */
+//    public List<WbsItem> findItemByName(String itemName,String projectId){
+//        return itemMapper.findItemByName(itemName,projectId);
+//    }
 
     //删除
-    @Transactional(readOnly = false)
-    public Integer updateItem(WbsItem wbsItem){ return itemMapper.updateItem(wbsItem); }
+//    @Transactional(readOnly = false)
+//    public Integer updateItem(WbsItem wbsItem){ return itemMapper.updateItem(wbsItem); }
 
-    //根据工程删除 项目
-    @Transactional(readOnly = false)
-    public Integer deleteItem(String parentId){
-        return itemMapper.deleteItem(parentId);
-    }
-    //删除项目
+//    //根据工程删除 项目
+//    @Transactional(readOnly = false)
+//    public Integer deleteItem(String parentId){
+//        return itemMapper.deleteItem(parentId);
+//    }
+
+    /**
+     * 删除项目 并更新项目所属工程的项目数量
+     * @param wbsItem
+     */
     @Transactional(readOnly = false)
-    public AjaxJson deleteItemOne(WbsItem wbsItem){
-        WbsItem wbsItem1 = itemMapper.findItemById(wbsItem.getId());
-        WbsProject wbsProject = projectService.findProjectById(wbsItem1.getProjectId());
+    public void deleteItemOne(WbsItem wbsItem){
+//        WbsItem wbsItem1 = itemMapper.findItemById(wbsItem.getId());
+//        WbsItem item = itemMapper.get(wbsItem.getId());
+        WbsProject wbsProject = projectMapper.get(wbsItem.getProjectId());
         Integer number = wbsProject.getNumber()-1;
-        wbsProject.setNumber(number);
-        wbsItem.setDelFlag("1");
-        AjaxJson j = new AjaxJson();
-        try {
-            itemMapper.updateItem(wbsItem);
-            projectService.updateProjectNumber(wbsProject);
-            j.setSuccess(true);
-            j.setMsg(wbsItem1.getProjectId());
-        }catch (Exception e){
-            j.setSuccess(false);
-            j.setMsg("删除结算书失败!");
-        }
-        return j;
+        itemMapper.deleteItem(wbsItem.getId());
+        projectMapper.updateNum(number,wbsProject.getId());
+//        wbsProject.setNumber(number);
+//        wbsItem.setDelFlag("1");
+//        AjaxJson j = new AjaxJson();
+//        try {
+//
+//            projectService.updateProjectNumber(wbsProject);
+//            j.setSuccess(true);
+//            j.setMsg(item.getProjectId());
+//        }catch (Exception e){
+//            j.setSuccess(false);
+//            j.setMsg("删除结算书失败!");
+//        }
+//        return j;
     }
 
     /**
-     * 诚信扣款
+     * 更新财务调整的三个金额
      * @param list
      */
     @Transactional(readOnly = false)
@@ -107,29 +130,29 @@ public class ItemService extends CrudService<ItemMapper, WbsItem> {
        itemMapper.updateFee(list);
     }
 
-    /**
-     * 更新扣款状态
-     * @param list
-     * @return
-     */
-    private List<WbsItem> getNew(List<WbsItem> list){
-        for(int i=0;i<list.size();i++){
-            String unitType = list.get(i).getUnitType();
-            if(unitType == null){
-                continue;
-            }
-            String state = list.get(i).getState();
-            if(state.equals("0")){
-                continue;
-            }
-            for(int j=i+1;j<list.size();j++){
-                if(unitType.equals(list.get(j).getUnitType())){
-                    list.get(j).setState("0");
-                }
-            }
-        }
-        return list;
-    }
+//    /**
+//     * 更新扣款状态
+//     * @param list
+//     * @return
+//     */
+//    private List<WbsItem> getNew(List<WbsItem> list){
+//        for(int i=0;i<list.size();i++){
+//            String unitType = list.get(i).getUnitType();
+//            if(unitType == null){
+//                continue;
+//            }
+//            String state = list.get(i).getState();
+//            if(state.equals("0")){
+//                continue;
+//            }
+//            for(int j=i+1;j<list.size();j++){
+//                if(unitType.equals(list.get(j).getUnitType())){
+//                    list.get(j).setState("0");
+//                }
+//            }
+//        }
+//        return list;
+//    }
 
 
 

+ 93 - 0
src/main/java/com/jeeplus/modules/sg/project/service/ManualItemService.java

@@ -0,0 +1,93 @@
+package com.jeeplus.modules.sg.project.service;
+
+
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee;
+import com.jeeplus.modules.sg.overheadline.service.OverheadLineService;
+import com.jeeplus.modules.sg.project.entity.WbsItem;
+import com.jeeplus.modules.sg.project.mapper.ItemMapper;
+import com.jeeplus.modules.sg.project.util.ProjectUtil;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 用于处理以人工统计方式导入的结算书
+ */
+
+@Service
+@Transactional(readOnly = true)
+public class ManualItemService {
+
+    private static final Map<String,String> WBS_MAP = new HashMap<>();
+    static{
+        WBS_MAP.put("防火封堵","23161400");
+        WBS_MAP.put("火灾报警","21144000");
+        WBS_MAP.put("三通(水、电、气、通讯)","21360000");
+        WBS_MAP.put("一平(场地平整)","21221000");
+        WBS_MAP.put("电缆桥支架安装","23161300");
+    }
+
+    @Autowired
+    private ItemService itemService;
+    @Autowired
+    private OverheadLineService overheadLineService;
+
+    public void save(MultipartFile file,String projectId) throws IOException, InvalidFormatException {
+        ImportExcel excel = new ImportExcel(file,1,0);
+        int lastRow = excel.getLastDataRowNum();
+        Map<String,WbsItem> map = new HashMap<>();
+        for(int i=1;i<lastRow;i++){
+            String itemName = excel.getValue(i,0);
+            double mount = excel.getDouble(i,1);
+            double tex = excel.getDouble(i,2);
+            String unit = excel.getValue(i,3);
+            String wbsCode = WBS_MAP.get(itemName);
+            if(mount==0.0){
+                continue;
+            }
+            if(wbsCode==null){
+                throw new RuntimeException(file.getOriginalFilename()+"手动模板填写有误,工程施工类型:'"+itemName+"'不合规!");
+            }
+            if(StringUtils.isBlank(unit)){
+                throw new RuntimeException("手动模板填写有误,工程施工类型:'"+itemName+"'行未填写施工单位!");
+            }
+            WbsItem item = new WbsItem();
+            item.setItemName(itemName);
+            item.setProjectId(projectId);
+            List<WbsItem> list = itemService.findList(item);
+            if(list!=null&&list.size()>0){
+                throw new RuntimeException("手动模板填写有误,项目中已经存在结算书:"+itemName);
+            }
+            item.setDelFlag("0");
+            item.setType(getItemType(wbsCode));
+            String id = ProjectUtil.getId();
+            item.setId(id);
+            item.setUnit(unit);
+            item.setTexDeal(tex);
+            itemService.save(item);
+            overheadLineService.saveLayerFee(id,wbsCode,"1",mount);
+        }
+    }
+
+    private String getItemType(String wbsCode){
+        if(wbsCode.startsWith("2")){
+            return "3";
+        }else if(wbsCode.startsWith("3")){
+            return "1";
+        }else if(wbsCode.startsWith("4")){
+            return "2";
+        }else{
+            return null;
+        }
+    }
+}

+ 207 - 205
src/main/java/com/jeeplus/modules/sg/project/service/ProjectService.java

@@ -18,6 +18,7 @@ import com.jeeplus.modules.sg.project.entity.WbsProject;
 import com.jeeplus.modules.sg.project.entity.WbsSelection;
 import com.jeeplus.modules.sg.project.mapper.ItemMapper;
 import com.jeeplus.modules.sg.project.mapper.ProjectMapper;
+import com.jeeplus.modules.sg.project.util.ProjectUtil;
 import com.jeeplus.modules.sg.substation.service.SubstationService;
 import com.jeeplus.modules.sg.substation.util.SubstationInfo;
 import com.jeeplus.modules.sys.entity.User;
@@ -30,6 +31,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 @Service
@@ -37,31 +39,88 @@ import java.util.List;
 public class ProjectService extends CrudService<ProjectMapper, WbsProject> {
     @Autowired
     private ProjectMapper projectMapper;
-    @Autowired
-    private ItemService itemService;
+//    @Autowired
+//    private ItemService itemService;
     @Autowired
     private OverheadLineService overheadLineService;
     @Autowired
     private SubstationService substationService;
     @Autowired
-    private SettlementService settlementService;
+    private ManualItemService manualItemService;
+//    @Autowired
+//    private SettlementService settlementService;
+//    @Autowired
+//    private FeeAdjustService feeAdjustService;
+//    @Autowired
+//    private OverheadLineMapper overheadLineMapper;
     @Autowired
-    private FeeAdjustService feeAdjustService;
+    private WbsItemService wbsItemService;
     @Autowired
-    private OverheadLineMapper overheadLineMapper;
-
+    private ItemMapper itemMapper;
 
+    /**
+     * 获取单个工程 及工程下项目信息
+     * @param id
+     * @return
+     */
     public WbsProject get(String id) {
-        WbsProject wbsProject =  super.get(id);
-        WbsProject wbsProject1 = new WbsProject();
-        wbsProject1.setProjectId(id);
-        List<WbsItem> items = itemService.findList(wbsProject1);
-        wbsProject.setWbsItems(items);
-        return wbsProject;
+        WbsProject project =  projectMapper.get(id);
+        WbsItem item = new WbsItem();
+        item.setProjectId(id);
+        List<WbsItem> items = itemMapper.findList(item);
+        project.setWbsItems(items);
+        return project;
     }
 
+    /**
+     * 保存工程与多个结算书及明细,返回工程id
+     * @param file        结算书文件
+     * @param projectName  工程名称
+     * @param projectNo     工程编号
+     * @param itemNames       项目(结算书)名称
+     * @param units             供应商
+     */
     @Transactional(readOnly = false)
-    public String save(MultipartFile file ,WbsItem wbsItem) throws IOException, InvalidFormatException {
+    public String saveProjectDetail(MultipartFile[] file,String projectName,String projectNo,String[] itemNames,String[] units) throws Exception {
+//        添加工程
+        WbsProject wbsProject = new WbsProject();
+        wbsProject.setProjectName(projectName);
+        wbsProject.setProjectNo(projectNo);
+        save(wbsProject);
+        String projectId = wbsProject.getId();
+        try{
+            for(int i = 0;i<itemNames.length;i++) {
+                WbsItem wbsItem = new WbsItem();
+                wbsItem.setItemName(itemNames[i]);
+                wbsItem.setProjectId(projectId);
+                if (null != units && units.length > 0) {
+                    if (StringUtils.isNotBlank(units[i])) {
+                        wbsItem.setUnit(units[i]);
+                    }
+                }
+                //获取唯一ID
+                String id = ProjectUtil.getId();
+                wbsItem.setId(id);
+                //分析保存
+                saveItemDetail(file[i], wbsItem);
+            }
+        }catch (Exception e){
+            throw e;
+        }
+        return projectId;
+    }
+
+
+    /**
+     * 保存结算书及明细
+     * @param file
+     * @param wbsItem
+     * @return
+     * @throws IOException
+     * @throws InvalidFormatException
+     */
+    @Transactional(readOnly = false)
+    public String saveItemDetail(MultipartFile file ,WbsItem wbsItem) throws IOException, InvalidFormatException {
         //架空类型判断
         ImportExcel jk = new ImportExcel(file,1,new String[]{BashInfo.SHEET_GCHZ,BashInfo.SHEET_GCHZ1},false); //架空汇总
         if(ImportExcel.getSheet(jk) != null){
@@ -85,162 +144,104 @@ public class ProjectService extends CrudService<ProjectMapper, WbsProject> {
             substationService.save(file,wbsItem);
             return BashInfo.PROJECT_BDZ;
         }
-        //WBS类型判断
-        ImportExcel importExcel = new ImportExcel(file,1,0);
-        double bdzJzTotal = ExcelUtil.getDouble(importExcel,BashInfo.BZDWBS,1,4);
-        double bdzAzTotal = ExcelUtil.getDouble(importExcel,BashInfo.BZDWBS,1,7);
-        double dlJzTotal = ExcelUtil.getDouble(importExcel,BashInfo.DLWBS,1,4);
-        double dlAzTotal = ExcelUtil.getDouble(importExcel,BashInfo.DLWBS,1,7);
-        double jkxlTotal = ExcelUtil.getDouble(importExcel,BashInfo.JKXLWBS,1,7);
-        if(bdzAzTotal != 0.00 || bdzJzTotal != 0.00){
-            String id = wbsItem.getId();
-            WbsItem wbsItem1 = itemService.get(id);
-            if(wbsItem1 == null){
-                wbsItem.setType(BashInfo.PROJECT_BDZ);
-                wbsItem.setDelFlag("0");
-                //保存项目
-                itemService.save(wbsItem);
-            }
-            double[] totalJzFees = ExcelUtil.getDoubleArray(importExcel,SubstationInfo.BDZJZWBS,1,4);
-            double[] totalAzFees = ExcelUtil.getDoubleArray(importExcel,SubstationInfo.BDZAZWBS,1,7);
-            double[] otherFees = ExcelUtil.getDoubleArray(importExcel,SubstationInfo.BDZOTHWBS,1,9);
-            List<JkxlDetailFee> list = new ArrayList<>();
-            JkxlDetailFee jkxlDetailFee = null;
-            for(int i=0;i<totalJzFees.length;i++){
-                jkxlDetailFee = new JkxlDetailFee();
-                jkxlDetailFee.setId(id);
-                jkxlDetailFee.setWbsCode(SubstationInfo.BDZJZWBS[i]);
-                jkxlDetailFee.setTotalFee(totalJzFees[i]);
-                list.add(jkxlDetailFee);
-            }
-            for(int i=0;i<totalAzFees.length;i++){
-                jkxlDetailFee = new JkxlDetailFee();
-                jkxlDetailFee.setId(id);
-                jkxlDetailFee.setWbsCode(SubstationInfo.BDZAZWBS[i]);
-                jkxlDetailFee.setTotalFee(totalAzFees[i]);
-                list.add(jkxlDetailFee);
-            }
-            for(int j=0;j<otherFees.length;j++){
-                jkxlDetailFee = new JkxlDetailFee();
-                jkxlDetailFee.setId(id);
-                jkxlDetailFee.setWbsCode(SubstationInfo.BDZOTHWBS[j]);
-                jkxlDetailFee.setTotalFee(otherFees[j]);
-                list.add(jkxlDetailFee);
-            }
-            overheadLineMapper.saveList(list);
-            return BashInfo.PROJECT_BDZ;
-        }
-        if(dlJzTotal != 0.00 || dlAzTotal != 0.00){
-            String id = wbsItem.getId();
-            WbsItem wbsItem1 = itemService.get(id);
-            if(wbsItem1 == null){
-                wbsItem.setType(BashInfo.PROJECT_DLXL);
-                wbsItem.setDelFlag("0");
-                //保存项目
-                itemService.save(wbsItem);
-            }
-            double[] totalJzFees = ExcelUtil.getDoubleArray(importExcel,BashInfo.JZWBSIDS,1,4);
-            double[] totalAzFees = ExcelUtil.getDoubleArray(importExcel,BashInfo.AZWBSIDS,1,7);
-            double[] otherFees = ExcelUtil.getDoubleArray(importExcel,BashInfo.DLOTHIDS,1,9);
-            List<JkxlDetailFee> list = new ArrayList<>();
-            JkxlDetailFee jkxlDetailFee = null;
-            for(int i=0;i<totalJzFees.length;i++){
-                jkxlDetailFee = new JkxlDetailFee();
-                jkxlDetailFee.setId(id);
-                jkxlDetailFee.setWbsCode(BashInfo.JZWBSIDS[i]);
-                jkxlDetailFee.setTotalFee(totalJzFees[i]);
-                list.add(jkxlDetailFee);
-            }
-            for(int i=0;i<totalAzFees.length;i++){
-                jkxlDetailFee = new JkxlDetailFee();
-                jkxlDetailFee.setId(id);
-                jkxlDetailFee.setWbsCode(BashInfo.AZWBSIDS[i]);
-                jkxlDetailFee.setTotalFee(totalAzFees[i]);
-                list.add(jkxlDetailFee);
-            }
-            for(int j=0;j<otherFees.length;j++){
-                jkxlDetailFee = new JkxlDetailFee();
-                jkxlDetailFee.setId(id);
-                jkxlDetailFee.setWbsCode(BashInfo.DLOTHIDS[j]);
-                jkxlDetailFee.setTotalFee(otherFees[j]);
-                list.add(jkxlDetailFee);
-            }
-            overheadLineMapper.saveList(list);
-            return BashInfo.PROJECT_DLXL;
-        }
-        if(jkxlTotal != 0.00){
-            String id = wbsItem.getId();
-            WbsItem wbsItem1 = itemService.get(id);
-            if(wbsItem1 == null){
-                wbsItem.setType(BashInfo.PROJECT_JKXL);
-                wbsItem.setDelFlag("0");
-                //保存项目
-                itemService.save(wbsItem);
-            }
-            double[] totalFees = ExcelUtil.getDoubleArray(importExcel,BashInfo.WBSIDS,1,7);
-            double[] otherFees = ExcelUtil.getDoubleArray(importExcel,BashInfo.WBSOTHIDS,1,9);
-            List<JkxlDetailFee> list = new ArrayList<>();
-            JkxlDetailFee jkxlDetailFee = null;
-            for(int i=0;i<totalFees.length;i++){
-                jkxlDetailFee = new JkxlDetailFee();
-                jkxlDetailFee.setId(id);
-                jkxlDetailFee.setWbsCode(BashInfo.WBSIDS[i]);
-                jkxlDetailFee.setTotalFee(totalFees[i]);
-                list.add(jkxlDetailFee);
-            }
-            for(int j=0;j<otherFees.length;j++){
-                jkxlDetailFee = new JkxlDetailFee();
-                jkxlDetailFee.setId(id);
-                jkxlDetailFee.setWbsCode(BashInfo.WBSOTHIDS[j]);
-                jkxlDetailFee.setTotalFee(otherFees[j]);
-                list.add(jkxlDetailFee);
-            }
-            overheadLineMapper.saveList(list);
-            return BashInfo.PROJECT_JKXL;
-        }
 
-        return BashInfo.PROJECT_TYPE_ERROR;
+        ImportExcel manual = new ImportExcel(file,1,"manual",false);//手动调整结算书
+        if(ImportExcel.getSheet(manual)!=null){
+            manualItemService.save(file,wbsItem.getProjectId());
+            return BashInfo.PROJECT_MUL;
+        }
+        return wbsItemService.save(file,wbsItem);
     }
 
 
 
-    public List<WbsProject> findList(WbsProject wbsProject) {
-        List<WbsProject> list =  projectMapper.findList(wbsProject);
-            for(WbsProject wbsProject1 : list){
-                String id = wbsProject1.getId();
-                wbsProject.setProjectId(id);
-                List<WbsItem> items = itemService.findList(wbsProject);
-                wbsProject1.setWbsItems(items);
-            }
-        return list;
-    }
+//    public List<WbsProject> findList(WbsProject wbsProject) {
+//        List<WbsProject> list =  projectMapper.findList(wbsProject);
+//            for(WbsProject wbsProject1 : list){
+//                String id = wbsProject1.getId();
+//                wbsProject.setProjectId(id);
+////                List<WbsItem> items = itemService.findList(wbsProject);
+//                List<WbsItem> items = itemMapper.getList(wbsProject);
+//                wbsProject1.setWbsItems(items);
+//            }
+//        return list;
+//    }
 
-    //分页查询
-    public Page<WbsProject> findPage(Page<WbsProject> page, WbsProject wbsProject) {
+//    /**
+//     * 分页查询工程及工程下项目
+//     * @param page 分页对象
+//     * @param wbsProject
+//     * @return
+//     */
+//    public Page<WbsProject> findPage(Page<WbsProject> page, WbsProject wbsProject) {
+//        //数据权限过滤
+//        dataRuleFilter(wbsProject);
+//        wbsProject.setPage(page);
+//        List<WbsProject> list =  projectMapper.findList(wbsProject);
+//        long count = page.getCount();
+//        Integer pageNo = page.getPageNo();
+//        //根据工程ID查询项目信息
+//        for(WbsProject project : list){
+//            wbsProject.setProjectId(project.getId());
+//            List<WbsItem> items = itemMapper.getList(wbsProject);
+//            project.setWbsItems(items);
+//        }
+//        //这里的处理是不展示没有符合条件项目的工程 做判断是防止某些工程本来就没有项目,而在没有这些过滤条件情况下应该展示工程
+//        if(StringUtils.isNoneBlank(wbsProject.getItemName()) || wbsProject.getItemStartDate() != null || wbsProject.getItemEndDate() != null || StringUtils.isNoneBlank(wbsProject.getUnit()) || StringUtils.isNoneBlank(wbsProject.getType())){
+//            List<WbsProject> valuedList = new ArrayList<>();
+//            for(WbsProject project : list){
+//                if(project.getWbsItems().size()>0){
+//                    valuedList.add(project);
+//                }
+//            }
+//            page.setCount(valuedList.size());
+//            page.setList(valuedList);
+//            return page;
+//        }
+//        page.setPageNo(pageNo);
+//        page.setCount(count);
+//        page.setList(list);
+//        return page;
+//    }
+
+
+//    public List<WbsProject> findByName(String projectName) {
+//        return projectMapper.findByName(projectName);
+//    }
+
+    /**
+     * 分页查询工程及工程下项目
+     * @param page 分页对象
+     * @param selection 查询条件
+     * @return
+     */
+    public Page<WbsProject> findPage(Page<WbsProject> page, WbsSelection selection) {
+        WbsProject project = selection.getProject();
+        WbsItem item = selection.getItem();
         //数据权限过滤
-        dataRuleFilter(wbsProject);
-        wbsProject.setPage(page);
-        List<WbsProject> list =  projectMapper.findList(wbsProject);
+        dataRuleFilter(project);
+        project.setPage(page);
+        List<WbsProject> list =  projectMapper.findList(project);
         long count = page.getCount();
         Integer pageNo = page.getPageNo();
         //根据工程ID查询项目信息
-        for(WbsProject wbsProject1 : list){
-            String id = wbsProject1.getId();
-            wbsProject.setProjectId(id);
-            List<WbsItem> items = itemService.findList(wbsProject);
-            wbsProject1.setWbsItems(items);
+        for(WbsProject pro : list){
+            item.setProjectId(pro.getId());
+            List<WbsItem> itemList = itemMapper.findList(item);
+            pro.setWbsItems(itemList);
         }
-        if(StringUtils.isNoneBlank(wbsProject.getItemName()) || wbsProject.getItemStartDate() != null || wbsProject.getItemEndDate() != null || StringUtils.isNoneBlank(wbsProject.getUnit()) || StringUtils.isNoneBlank(wbsProject.getType())){
-            List<WbsProject> wbsProjects = new ArrayList<>();
-            for(WbsProject wbsProject1 : list){
-                if(wbsProject1.getWbsItems().size()>0){
-                    wbsProjects.add(wbsProject1);
+        if(selection.hasItemCondition()){
+            List<WbsProject> valuedList = new ArrayList<>();
+            for(WbsProject pro : list){
+                if(pro.getWbsItems().size()>0){
+                    valuedList.add(pro);
                 }
             }
-            page.setCount(wbsProjects.size());
-            page.setList(wbsProjects);
+            page.setCount(valuedList.size());
+            page.setList(valuedList);
             return page;
         }
+        //这里的处理是不展示没有符合条件项目的工程 做判断是防止某些工程本来就没有项目,而在没有这些过滤条件情况下应该展示工程
         page.setPageNo(pageNo);
         page.setCount(count);
         page.setList(list);
@@ -248,71 +249,72 @@ public class ProjectService extends CrudService<ProjectMapper, WbsProject> {
     }
 
 
-    public List<WbsProject> findByName(String projectName) {
-        return projectMapper.findByName(projectName);
-    }
-
-    @Transactional(readOnly = false)
-    public void save(WbsProject wbsProject) {
-        super.save(wbsProject);
-    }
+//    /**
+//     * 保存工程信息,id不为空则更新,id为空则插入
+//     * @param wbsProject
+//     */
+//    @Transactional(readOnly = false)
+//    public void save(WbsProject wbsProject) {
+//        super.save(wbsProject);
+//    }
 
+    /**
+     * 更新工程信息,及工程下项目的供应商信息
+     * @param wbsProject
+     * @param wbsItems
+     */
     @Transactional(readOnly = false)
     public void update(WbsProject wbsProject,List<WbsItem> wbsItems){
-        save(wbsProject);
-        itemService.update(wbsItems);
+        projectMapper.update(wbsProject);
+        itemMapper.updateList(wbsItems);
     }
 
-    @Transactional(readOnly = false)
-    public void updateNum(int number,String id){
-        projectMapper.updateNum(number,id);
-    }
+//    @Transactional(readOnly = false)
+//    public void updateNum(int number,String id){
+//        projectMapper.updateNum(number,id);
+//    }
 
-    @Transactional(readOnly = false)
-    public void delete(WbsProject wbsProject) {
-        String id = wbsProject.getId();
-        WbsProject wbsProject1 = get(id);
-        List<WbsItem> wbsItems = wbsProject1.getWbsItems();
-        for(WbsItem wbsItem : wbsItems){
-            String itemId = wbsItem.getId();
-            WbsItem wbsItem1 = new WbsItem();
-            wbsItem1.setId(itemId);
-            itemService.delete(wbsItem1);
-            overheadLineService.delete(itemId);
-            feeAdjustService.delete(itemId);
-            settlementService.delete(itemId);
-        }
-        super.delete(wbsProject);
-    }
+//    @Transactional(readOnly = false)
+//    public void delete(WbsProject wbsProject) {
+//        String id = wbsProject.getId();
+//        WbsProject wbsProject1 = get(id);
+//        List<WbsItem> wbsItems = wbsProject1.getWbsItems();
+//        for(WbsItem wbsItem : wbsItems){
+//            String itemId = wbsItem.getId();
+//            WbsItem wbsItem1 = new WbsItem();
+//            wbsItem1.setId(itemId);
+//            itemService.delete(wbsItem1);
+//            overheadLineService.delete(itemId);
+//            feeAdjustService.delete(itemId);
+//            settlementService.delete(itemId);
+//        }
+//        super.delete(wbsProject);
+//    }
 
 
 
     //修改工程下项目数量
-    @Transactional(readOnly = false)
-    public Integer updateProjectNumber(WbsProject wbsProject){
-        return projectMapper.updateProNumber(wbsProject);
-    }
+//    @Transactional(readOnly = false)
+//    public Integer updateProjectNumber(WbsProject wbsProject){
+//        return projectMapper.updateProNumber(wbsProject);
+//    }
 
     //根据id查找工程
-    public WbsProject findProjectById(String id){
-        return projectMapper.findProjectById(id);
-    }
+//    public WbsProject findProjectById(String id){
+//        return projectMapper.findProjectById(id);
+//    }
 
-    //删除工程
+    /**
+     * 逻辑删除工程及工程下的项目
+     * @param wbsProject
+     * @return
+     */
     @Transactional(readOnly = false)
-    public AjaxJson deleteProject(WbsProject wbsProject){
-        AjaxJson j = new AjaxJson();
-        j.setSuccess(true);
-        j.setMsg("删除工程成功!");
-        try {
-            itemService.deleteItem(wbsProject.getId());
-            wbsProject.setDelFlag("1");
-            projectMapper.deleteProject(wbsProject);
-        }catch (Exception e){
-            j.setSuccess(false);
-            j.setMsg("删除工程失败!");
-        }
-        return j;
+    public void deleteProject(WbsProject wbsProject){
+//            itemService.deleteItem(wbsProject.getId());
+        itemMapper.deleteItems(wbsProject.getId());
+//            wbsProject.setDelFlag("1");
+        projectMapper.deleteProject(wbsProject);
     }
 
 

+ 159 - 0
src/main/java/com/jeeplus/modules/sg/project/service/WbsItemService.java

@@ -0,0 +1,159 @@
+package com.jeeplus.modules.sg.project.service;
+
+
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.common.utils.sg.ExcelUtil;
+import com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee;
+import com.jeeplus.modules.sg.overheadline.mapper.OverheadLineMapper;
+import com.jeeplus.modules.sg.overheadline.service.OverheadLineService;
+import com.jeeplus.modules.sg.overheadline.util.BashInfo;
+import com.jeeplus.modules.sg.project.entity.WbsItem;
+import com.jeeplus.modules.sg.substation.util.SubstationInfo;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 用于处理以wbs成果文件形式导入的结算书
+ */
+
+@Service
+@Transactional(readOnly = true)
+public class WbsItemService {
+
+    @Autowired
+    private ItemService itemService;
+    @Autowired
+    private OverheadLineMapper overheadLineMapper;
+
+    /**
+     * 保存结算书返回结算书类型
+     * @param file         结算书
+     * @param wbsItem       结算书item对象
+     * @return
+     * @throws IOException
+     * @throws InvalidFormatException
+     */
+    public String save(MultipartFile file , WbsItem wbsItem) throws IOException, InvalidFormatException {
+        //WBS类型判断
+        ImportExcel importExcel = new ImportExcel(file,1,0);
+        double bdzJzTotal = ExcelUtil.getDouble(importExcel,BashInfo.BZDWBS,1,4);
+        double bdzAzTotal = ExcelUtil.getDouble(importExcel,BashInfo.BZDWBS,1,7);
+        double dlJzTotal = ExcelUtil.getDouble(importExcel,BashInfo.DLWBS,1,4);
+        double dlAzTotal = ExcelUtil.getDouble(importExcel,BashInfo.DLWBS,1,7);
+        double jkxlTotal = ExcelUtil.getDouble(importExcel,BashInfo.JKXLWBS,1,7);
+        if(bdzAzTotal != 0.00 || bdzJzTotal != 0.00){
+            String id = wbsItem.getId();
+            WbsItem wbsItem1 = itemService.get(id);
+            if(wbsItem1 == null){
+                wbsItem.setType(BashInfo.PROJECT_BDZ);
+                wbsItem.setDelFlag("0");
+                //保存项目
+                itemService.save(wbsItem);
+            }
+            double[] totalJzFees = ExcelUtil.getDoubleArray(importExcel,SubstationInfo.BDZJZWBS,1,4);
+            double[] totalAzFees = ExcelUtil.getDoubleArray(importExcel,SubstationInfo.BDZAZWBS,1,7);
+            double[] otherFees = ExcelUtil.getDoubleArray(importExcel,SubstationInfo.BDZOTHWBS,1,9);
+            List<JkxlDetailFee> list = new ArrayList<>();
+            JkxlDetailFee jkxlDetailFee = null;
+            for(int i=0;i<totalJzFees.length;i++){
+                jkxlDetailFee = new JkxlDetailFee();
+                jkxlDetailFee.setId(id);
+                jkxlDetailFee.setWbsCode(SubstationInfo.BDZJZWBS[i]);
+                jkxlDetailFee.setTotalFee(totalJzFees[i]);
+                list.add(jkxlDetailFee);
+            }
+            for(int i=0;i<totalAzFees.length;i++){
+                jkxlDetailFee = new JkxlDetailFee();
+                jkxlDetailFee.setId(id);
+                jkxlDetailFee.setWbsCode(SubstationInfo.BDZAZWBS[i]);
+                jkxlDetailFee.setTotalFee(totalAzFees[i]);
+                list.add(jkxlDetailFee);
+            }
+            for(int j=0;j<otherFees.length;j++){
+                jkxlDetailFee = new JkxlDetailFee();
+                jkxlDetailFee.setId(id);
+                jkxlDetailFee.setWbsCode(SubstationInfo.BDZOTHWBS[j]);
+                jkxlDetailFee.setTotalFee(otherFees[j]);
+                list.add(jkxlDetailFee);
+            }
+            overheadLineMapper.saveList(list);
+            return BashInfo.PROJECT_BDZ;
+        }
+        if(dlJzTotal != 0.00 || dlAzTotal != 0.00){
+            String id = wbsItem.getId();
+            WbsItem wbsItem1 = itemService.get(id);
+            if(wbsItem1 == null){
+                wbsItem.setType(BashInfo.PROJECT_DLXL);
+                wbsItem.setDelFlag("0");
+                //保存项目
+                itemService.save(wbsItem);
+            }
+            double[] totalJzFees = ExcelUtil.getDoubleArray(importExcel,BashInfo.JZWBSIDS,1,4);
+            double[] totalAzFees = ExcelUtil.getDoubleArray(importExcel,BashInfo.AZWBSIDS,1,7);
+            double[] otherFees = ExcelUtil.getDoubleArray(importExcel,BashInfo.DLOTHIDS,1,9);
+            List<JkxlDetailFee> list = new ArrayList<>();
+            JkxlDetailFee jkxlDetailFee = null;
+            for(int i=0;i<totalJzFees.length;i++){
+                jkxlDetailFee = new JkxlDetailFee();
+                jkxlDetailFee.setId(id);
+                jkxlDetailFee.setWbsCode(BashInfo.JZWBSIDS[i]);
+                jkxlDetailFee.setTotalFee(totalJzFees[i]);
+                list.add(jkxlDetailFee);
+            }
+            for(int i=0;i<totalAzFees.length;i++){
+                jkxlDetailFee = new JkxlDetailFee();
+                jkxlDetailFee.setId(id);
+                jkxlDetailFee.setWbsCode(BashInfo.AZWBSIDS[i]);
+                jkxlDetailFee.setTotalFee(totalAzFees[i]);
+                list.add(jkxlDetailFee);
+            }
+            for(int j=0;j<otherFees.length;j++){
+                jkxlDetailFee = new JkxlDetailFee();
+                jkxlDetailFee.setId(id);
+                jkxlDetailFee.setWbsCode(BashInfo.DLOTHIDS[j]);
+                jkxlDetailFee.setTotalFee(otherFees[j]);
+                list.add(jkxlDetailFee);
+            }
+            overheadLineMapper.saveList(list);
+            return BashInfo.PROJECT_DLXL;
+        }
+        if(jkxlTotal != 0.00){
+            String id = wbsItem.getId();
+            WbsItem wbsItem1 = itemService.get(id);
+            if(wbsItem1 == null){
+                wbsItem.setType(BashInfo.PROJECT_JKXL);
+                wbsItem.setDelFlag("0");
+                //保存项目
+                itemService.save(wbsItem);
+            }
+            double[] totalFees = ExcelUtil.getDoubleArray(importExcel,BashInfo.WBSIDS,1,7);
+            double[] otherFees = ExcelUtil.getDoubleArray(importExcel,BashInfo.WBSOTHIDS,1,9);
+            List<JkxlDetailFee> list = new ArrayList<>();
+            JkxlDetailFee jkxlDetailFee = null;
+            for(int i=0;i<totalFees.length;i++){
+                jkxlDetailFee = new JkxlDetailFee();
+                jkxlDetailFee.setId(id);
+                jkxlDetailFee.setWbsCode(BashInfo.WBSIDS[i]);
+                jkxlDetailFee.setTotalFee(totalFees[i]);
+                list.add(jkxlDetailFee);
+            }
+            for(int j=0;j<otherFees.length;j++){
+                jkxlDetailFee = new JkxlDetailFee();
+                jkxlDetailFee.setId(id);
+                jkxlDetailFee.setWbsCode(BashInfo.WBSOTHIDS[j]);
+                jkxlDetailFee.setTotalFee(otherFees[j]);
+                list.add(jkxlDetailFee);
+            }
+            overheadLineMapper.saveList(list);
+            return BashInfo.PROJECT_JKXL;
+        }
+        throw new RuntimeException(file.getOriginalFilename()+"结算书无法判断项目类型!");
+    }
+}

+ 22 - 0
src/main/java/com/jeeplus/modules/sg/project/util/ProjectUtil.java

@@ -0,0 +1,22 @@
+package com.jeeplus.modules.sg.project.util;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Random;
+
+public class ProjectUtil {
+
+    /**
+     * 创建结算书项目ID  以时间打头,后面可以根据这个排序
+     */
+    public static 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;
+    }
+}

+ 273 - 206
src/main/java/com/jeeplus/modules/sg/project/web/ProjectController.java

@@ -10,12 +10,14 @@ import com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee;
 import com.jeeplus.modules.sg.overheadline.entity.Settlement;
 import com.jeeplus.modules.sg.overheadline.service.OverheadLineService;
 import com.jeeplus.modules.sg.overheadline.util.BashInfo;
+import com.jeeplus.modules.sg.overheadline.util.DetailFeeUtil;
 import com.jeeplus.modules.sg.project.entity.WbsItem;
 import com.jeeplus.modules.sg.project.entity.WbsProject;
 import com.jeeplus.modules.sg.project.entity.WbsSelection;
 import com.jeeplus.modules.sg.project.service.ItemService;
 import com.jeeplus.modules.sg.project.service.ProjectService;
 import com.jeeplus.modules.sg.project.util.ExportUtil;
+import com.jeeplus.modules.sg.project.util.ProjectUtil;
 import com.jeeplus.modules.sg.substation.service.SubstationService;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,30 +46,31 @@ public class ProjectController extends BaseController {
     private ProjectService projectService;
     @Autowired
     private OverheadLineService overheadLineService;
-    @Autowired
-    private SubstationService substationService;
+//    @Autowired
+//    private SubstationService substationService;
     @Autowired
     private ItemService itemService;
 
 
     /**
-     * 工程项目数据
+     * 历史工程管理页面 工程项目数据
      */
     @RequestMapping(value = {"list", ""})
-    public String list(WbsProject wbsProject, HttpServletRequest request, HttpServletResponse response, Model model) {
-        Page<WbsProject> page = projectService.findPage(new Page<WbsProject>(request, response), wbsProject);
+//    public String list(WbsProject wbsProject, HttpServletRequest request, HttpServletResponse response, Model model) {
+    public String list(WbsSelection selection, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<WbsProject> page = projectService.findPage(new Page<WbsProject>(request, response), selection);
         model.addAttribute("page",page);
         return "modules/sg/project/management";
     }
 
     /**
-     *编辑查看页面
+     *历史工程管理页面,单个工程信息查看编辑的跳转方法
      */
     @RequestMapping("/form")
     public String form(WbsProject wbsProject, Model model) {
-        WbsProject wbsProject1 = projectService.get(wbsProject.getId());
+        WbsProject project = projectService.get(wbsProject.getId());
         List<WbsProject> list = new ArrayList<>();
-        list.add(wbsProject1);
+        list.add(project);
         model.addAttribute("list", list);
         String view = "updateItemForm";
         String tabId = request.getParameter("tabId");
@@ -77,7 +80,13 @@ public class ProjectController extends BaseController {
         return "modules/sg/project/"+view;
     }
 
-    //项目保存
+    /**
+     * 历史工程管理页面的新建工程(没有项目信息)
+     * @param wbsProject
+     * @param model
+     * @param redirectAttributes
+     * @return
+     */
     @ResponseBody
     @RequestMapping("/save")
     public AjaxJson save(WbsProject wbsProject, Model model, RedirectAttributes redirectAttributes){
@@ -97,7 +106,7 @@ public class ProjectController extends BaseController {
     }
 
     /**
-     * 工程项目信息修改
+     * 工程及下属项目信息修改
      * @param wbsProject  工程信息
      * @param ids  项目ID
      * @param units 项目供应商
@@ -130,19 +139,22 @@ public class ProjectController extends BaseController {
     }
 
     /**
-     *数据导入
+     *添加单个结算书
      */
     @RequestMapping("/import")
     public String importFile(MultipartFile file,WbsItem wbsItem, RedirectAttributes redirectAttributes, HttpServletRequest request, Model model) throws IOException, InvalidFormatException {
-        String id = getId();
+        String id = ProjectUtil.getId();
         wbsItem.setId(id);
         try {
            //判断结算数类型并保存数据到数据库
-             String str = projectService.save(file,wbsItem);
-             if(str.equals(BashInfo.PROJECT_TYPE_ERROR)){
-                 throw new RuntimeException(BashInfo.PROJECT_TYPE_ERROR_MSG);
-             }
+             String str = projectService.saveItemDetail(file,wbsItem);
+//             if(str.equals(BashInfo.PROJECT_TYPE_ERROR)){
+//                 throw new RuntimeException(BashInfo.PROJECT_TYPE_ERROR_MSG);
+//             }
              addMessage(redirectAttributes, "导入成功");
+            if(str.equals(BashInfo.PROJECT_MUL)){
+                return "redirect:/a/project/list";
+            }
              return "redirect:/a/jkxl/list?id="+id+"&type="+str;
         }   catch (Exception e){
             addMessage(redirectAttributes, "导入失败,"+e.getMessage());
@@ -153,149 +165,197 @@ public class ProjectController extends BaseController {
 
 
     //导出
-    @RequestMapping("/export")
-    public String toList(HttpServletRequest request,Model model,HttpServletResponse response) throws IOException {
-        String id = request.getParameter("id");
-        WbsProject wbsProject = projectService.get(id);
-        String fileName = wbsProject.getProjectName()+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-        List<WbsItem> wbsItems = wbsProject.getWbsItems();
-        String[] sts = new String[wbsItems.size()+1];
-        sts[0] = "合计";
-        for (int i=0;i<wbsItems.size();i++){
-            sts[i+1] = wbsItems.get(i).getItemName();
-        }
-        List<JkxlDetailFee> list = new ArrayList<>();
-        for(WbsItem wbsItem :wbsItems){
-            List<JkxlDetailFee> jkxlDetailFees = overheadLineService.findList(wbsItem.getId(),wbsItem.getType());
-            list.addAll(jkxlDetailFees);
-        }
-        //集合去重合并
-        List<JkxlDetailFee> list1 = getNewList(list);
-        //加序号
-        for (int i=0;i<list1.size();i++){
-            list1.get(i).setIndex(i+1);
-        }
-        ExportUtil exportUtil = new ExportUtil(null, JkxlDetailFee.class,sts);
-        //写合计
-        exportUtil.setDataList(list1,0);
-        //分别写入项目
-        for(int j=0;j<wbsItems.size();j++){
-            List<JkxlDetailFee> jkxlDetailFees = overheadLineService.findList(wbsItems.get(j).getId(),wbsItems.get(j).getType());
-            for (int i=0;i<jkxlDetailFees.size();i++){
-                jkxlDetailFees.get(i).setIndex(i+1);
-            }
-            exportUtil.setDataList(jkxlDetailFees,j+1);
-        }
-        exportUtil.write(response,fileName).dispose();
-        return "redirect:/a/project/list";
-    }
-
+//    @RequestMapping("/export")
+//    public String toList(HttpServletRequest request,Model model,HttpServletResponse response) throws IOException {
+//        String id = request.getParameter("id");
+//        WbsProject wbsProject = projectService.get(id);
+//        String fileName = wbsProject.getProjectName()+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+//        List<WbsItem> wbsItems = wbsProject.getWbsItems();
+//        String[] sts = new String[wbsItems.size()+1];
+//        sts[0] = "合计";
+//        for (int i=0;i<wbsItems.size();i++){
+//            sts[i+1] = wbsItems.get(i).getItemName();
+//        }
+//        List<JkxlDetailFee> list = new ArrayList<>();
+//        for(WbsItem wbsItem :wbsItems){
+//            List<JkxlDetailFee> jkxlDetailFees = overheadLineService.findList(wbsItem.getId(),wbsItem.getType());
+//            list.addAll(jkxlDetailFees);
+//        }
+//        //集合去重合并
+//        List<JkxlDetailFee> list1 = getNewList(list);
+//        //加序号
+//        for (int i=0;i<list1.size();i++){
+//            list1.get(i).setIndex(i+1);
+//        }
+//        ExportUtil exportUtil = new ExportUtil(null, JkxlDetailFee.class,sts);
+//        //写合计
+//        exportUtil.setDataList(list1,0);
+//        //分别写入项目
+//        for(int j=0;j<wbsItems.size();j++){
+//            List<JkxlDetailFee> jkxlDetailFees = overheadLineService.findList(wbsItems.get(j).getId(),wbsItems.get(j).getType());
+//            for (int i=0;i<jkxlDetailFees.size();i++){
+//                jkxlDetailFees.get(i).setIndex(i+1);
+//            }
+//            exportUtil.setDataList(jkxlDetailFees,j+1);
+//        }
+//        exportUtil.write(response,fileName).dispose();
+//        return "redirect:/a/project/list";
+//    }
 
 
-
-    //单项工程导出
+    /**
+     * 导出整个工程的成果文件
+     * @param request
+     * @param model
+     * @param response
+     * @return
+     * @throws IOException
+     */
     @RequestMapping("/exportone")
     public String exportone(HttpServletRequest request,Model model,HttpServletResponse response) throws IOException {
+//        获取工程项目信息
         String id = request.getParameter("id");
         WbsProject wbsProject = projectService.get(id);
-        String fileName = wbsProject.getProjectNo()+wbsProject.getProjectName()+".xlsx";
         List<WbsItem> wbsItems = wbsProject.getWbsItems();
-        List<WbsItem> wbsItems1 = new ArrayList<>();
-
-        //过滤相同供应商名称,获取所有供应商
-        for(WbsItem wbsItem : wbsItems){
-            if(!wbsItems1.contains(wbsItem)){
-                wbsItems1.add(wbsItem);
+        List<String> unitList = new ArrayList<>();
+        unitList.add("合计");
+        Map<String,List<JkxlDetailFee>> map = new HashMap<>();
+        for(WbsItem item:wbsItems){
+            String unit = item.getUnit();
+            if(!unitList.contains(unit)){
+                unitList.add(unit);
+            }
+            List<JkxlDetailFee> mapFees = map.get(unit);
+            List<JkxlDetailFee> fees = overheadLineService.findList(item.getId(),item.getType());
+            if(mapFees==null){
+                map.put(unit,fees);
+            }else{
+                mapFees.addAll(fees);
             }
         }
-        String[] sts = new String[wbsItems1.size()+1];
-        sts[0] = "合计";
-        for (int i=0;i<wbsItems1.size();i++){
-            sts[i+1] = wbsItems1.get(i).getUnit();
-        }
-
-        List<JkxlDetailFee> list = new ArrayList<>();
-        for(WbsItem wbsItem :wbsItems){
-            List<JkxlDetailFee> jkxlDetailFees = overheadLineService.findList(wbsItem.getId(),wbsItem.getType());
-            list.addAll(jkxlDetailFees);
+        String[] unitArr = unitList.toArray(new String[unitList.size()]);
+        ExportUtil exportUtil = new ExportUtil(null, JkxlDetailFee.class,unitArr);
+        for(int i=1;i<unitList.size();i++){
+            List<JkxlDetailFee> combinedList = DetailFeeUtil.combineFees(map.get(unitList.get(i)));
+            map.put(unitList.get(i),combinedList);
+            exportUtil.setDataList(combinedList,i);
         }
-        //集合去重合并
-        List<JkxlDetailFee> list1 = getNewList(list);
-        //加序号
-        for (int i=0;i<list1.size();i++){
-            list1.get(i).setIndex(i+1);
+        List<JkxlDetailFee> allFees = new ArrayList<>();
+        for(List<JkxlDetailFee> fees:map.values()){
+            allFees.addAll(fees);
         }
-        ExportUtil exportUtil = new ExportUtil(null, JkxlDetailFee.class,sts);
-        //写合计
-        exportUtil.setDataList(list1,0);
-        //合并相同的供应商
-        int count = 0;
-        for(int j=0;j<wbsItems.size();j++){
-            String unit = wbsItems.get(j).getUnit();
-            if(unit != null) {
-                List<JkxlDetailFee> jkxlDetailFees = overheadLineService.findList(wbsItems.get(j).getId(), wbsItems.get(j).getType());
-                for (int k = j + 1; k < wbsItems.size(); k++) {
-                    if (unit.equals(wbsItems.get(k).getUnit())) {
-                        wbsItems.get(k).setUnit(null);
-                        List<JkxlDetailFee> jkxl = overheadLineService.findList(wbsItems.get(k).getId(), wbsItems.get(k).getType());
-                        jkxlDetailFees.addAll(jkxl);
-                    }
-                }
-                count++;
-                List<JkxlDetailFee> list2 = getNewList(jkxlDetailFees);
-                for (int i=0;i<list2.size();i++){
-                    list2.get(i).setIndex(i+1);
-                }
-                exportUtil.setDataList(list2,count);
-            }
+        List<JkxlDetailFee> comAllFees = DetailFeeUtil.combineFees(allFees);
+        exportUtil.setDataList(comAllFees,0);
 
-        }
         //写入EXCAL
+        String fileName = wbsProject.getProjectNo()+wbsProject.getProjectName()+".xlsx";
         exportUtil.write(response,fileName).dispose();
-        return "redirect:/a/project/list";
+        return null;
+//        return "redirect:/a/project/list";
     }
 
+//    //单项工程导出
+//    @RequestMapping("/exportone")
+//    public String exportone(HttpServletRequest request,Model model,HttpServletResponse response) throws IOException {
+//        String id = request.getParameter("id");
+//        WbsProject wbsProject = projectService.get(id);
+//        String fileName = wbsProject.getProjectNo()+wbsProject.getProjectName()+".xlsx";
+//        List<WbsItem> wbsItems = wbsProject.getWbsItems();
+//        List<WbsItem> wbsItems1 = new ArrayList<>();
+//
+//        //过滤相同供应商名称,获取所有供应商
+//        for(WbsItem wbsItem : wbsItems){
+//            if(!wbsItems1.contains(wbsItem)){
+//                wbsItems1.add(wbsItem);
+//            }
+//        }
+//        String[] sts = new String[wbsItems1.size()+1];
+//        sts[0] = "合计";
+//        for (int i=0;i<wbsItems1.size();i++){
+//            sts[i+1] = wbsItems1.get(i).getUnit();
+//        }
+//
+//        List<JkxlDetailFee> list = new ArrayList<>();
+//        for(WbsItem wbsItem :wbsItems){
+//            List<JkxlDetailFee> jkxlDetailFees = overheadLineService.findList(wbsItem.getId(),wbsItem.getType());
+//            list.addAll(jkxlDetailFees);
+//        }
+//        //集合去重合并
+//        List<JkxlDetailFee> list1 = getNewList(list);
+//        //加序号
+//        for (int i=0;i<list1.size();i++){
+//            list1.get(i).setIndex(i+1);
+//        }
+//        ExportUtil exportUtil = new ExportUtil(null, JkxlDetailFee.class,sts);
+//        //写合计
+//        exportUtil.setDataList(list1,0);
+//        //合并相同的供应商
+//        int count = 0;
+//        for(int j=0;j<wbsItems.size();j++){
+//            String unit = wbsItems.get(j).getUnit();
+//            if(unit != null) {
+//                List<JkxlDetailFee> jkxlDetailFees = overheadLineService.findList(wbsItems.get(j).getId(), wbsItems.get(j).getType());
+//                for (int k = j + 1; k < wbsItems.size(); k++) {
+//                    if (unit.equals(wbsItems.get(k).getUnit())) {
+//                        wbsItems.get(k).setUnit(null);
+//                        List<JkxlDetailFee> jkxl = overheadLineService.findList(wbsItems.get(k).getId(), wbsItems.get(k).getType());
+//                        jkxlDetailFees.addAll(jkxl);
+//                    }
+//                }
+//                count++;
+//                List<JkxlDetailFee> list2 = getNewList(jkxlDetailFees);
+//                for (int i=0;i<list2.size();i++){
+//                    list2.get(i).setIndex(i+1);
+//                }
+//                exportUtil.setDataList(list2,count);
+//            }
+//
+//        }
+//        //写入EXCAL
+//        exportUtil.write(response,fileName).dispose();
+//        return "redirect:/a/project/list";
+//    }
+
     /**
-     * 诚信扣款调整页面
+     * 财务处理调整页面
      */
     @RequestMapping("withholdform")
     public String withholdForm(String id,Model model){
         WbsProject wbsProject = projectService.get(id);
-        List<WbsItem> list = null;
         if(wbsProject != null){
-            list = wbsProject.getWbsItems();
+            List<WbsItem> list = wbsProject.getWbsItems();
+            model.addAttribute("list",list);
         }
-        model.addAttribute("list",list);
         return "modules/sg/project/withholdForm";
     }
 
-    /**
-     * 甲供调整页面
-     */
-    @RequestMapping("materialOffsetForm")
-    public String materialOffsetForm(String id,Model model){
-        WbsProject wbsProject = projectService.get(id);
-        List<WbsItem> list = null;
-        if(wbsProject != null){
-            list = wbsProject.getWbsItems();
-        }
-        model.addAttribute("list",list);
-        return "modules/sg/project/materialOffsetForm";
-    }
-
-    /**
-     * 税金页面
-     */
-    @RequestMapping("taxDeductionsForm")
-    public String taxDeductionsForm(String id,Model model){
-        WbsProject wbsProject = projectService.get(id);
-        List<WbsItem> list = null;
-        if(wbsProject != null){
-            list = wbsProject.getWbsItems();
-        }
-        model.addAttribute("list",list);
-        return "modules/sg/project/taxDeductionsForm";
-    }
+//    /**
+//     * 甲供调整页面
+//     */
+//    @RequestMapping("materialOffsetForm")
+//    public String materialOffsetForm(String id,Model model){
+//        WbsProject wbsProject = projectService.get(id);
+//        List<WbsItem> list = null;
+//        if(wbsProject != null){
+//            list = wbsProject.getWbsItems();
+//        }
+//        model.addAttribute("list",list);
+//        return "modules/sg/project/materialOffsetForm";
+//    }
+
+//    /**
+//     * 税金页面
+//     */
+//    @RequestMapping("taxDeductionsForm")
+//    public String taxDeductionsForm(String id,Model model){
+//        WbsProject wbsProject = projectService.get(id);
+//        List<WbsItem> list = null;
+//        if(wbsProject != null){
+//            list = wbsProject.getWbsItems();
+//        }
+//        model.addAttribute("list",list);
+//        return "modules/sg/project/taxDeductionsForm";
+//    }
 
     /**
      * 添加诚信扣款、甲供材超供抵扣工程款、税金处理
@@ -321,8 +381,7 @@ public class ProjectController extends BaseController {
             for(int i=0;i<idArr.length;i++){
                 wbsItem = new WbsItem();
                 wbsItem.setId(idArr[i]);
-                //是否扣款 (1:扣 0:不扣)
-//                wbsItem.setState("1");
+//                单位工程 暂无用
                 String unitType = unitTypeArr[i];
                 if(unitType.equals("null")){
                     unitType = null;
@@ -346,7 +405,6 @@ public class ProjectController extends BaseController {
                 }else{
                     wbsItem.setTexDeal(Double.valueOf(tex));
                 }
-
                 ts.add(wbsItem);
 
             }
@@ -362,83 +420,92 @@ public class ProjectController extends BaseController {
 
 
 
-    /**
-     * list中 所有wbs编码一样的JkxlDetailFee对象只保留一个,且相同wbs对象的“安装费”、“建筑费”、“其他费”、“合计”等费用合并
-     * @param list
-     * @return
-     */
-    private List<JkxlDetailFee> getNewList(List<JkxlDetailFee> list) {
-       List<JkxlDetailFee> list1 = new ArrayList<>();
-       for(JkxlDetailFee jkxlDetailFee: list){
-           String wbsCode = jkxlDetailFee.getWbsCode();
-           if(!list1.contains(jkxlDetailFee)){
-               list1.add(jkxlDetailFee);
-           }else {
-               for(JkxlDetailFee jkxlDetailFee1 : list1){
-                   if(jkxlDetailFee1.getWbsCode().equals(wbsCode)){
-                       double jzFee = jkxlDetailFee1.getJzFee()!=null? jkxlDetailFee1.getJzFee():0.00;
-                       double jzFee1 = jkxlDetailFee.getJzFee()!=null? jkxlDetailFee.getJzFee():0.00;
-                       double azFee = jkxlDetailFee1.getAzFee()!=null? jkxlDetailFee1.getAzFee():0.00;
-                       double azFee1 = jkxlDetailFee.getAzFee()!=null? jkxlDetailFee.getAzFee():0.00;
-                       double qtFee = jkxlDetailFee1.getQtFee()!=null? jkxlDetailFee1.getQtFee():0.00;
-                       double qtFee1 = jkxlDetailFee.getQtFee()!=null? jkxlDetailFee.getQtFee():0.00;
-                       double totalFee = jkxlDetailFee1.getTotalFee()!=null? jkxlDetailFee1.getTotalFee():0.00;
-                       double totalFee1 = jkxlDetailFee.getTotalFee()!=null? jkxlDetailFee.getTotalFee():0.00;
-                       jkxlDetailFee1.setJzFee(jzFee+jzFee1);
-                       jkxlDetailFee1.setAzFee(azFee+azFee1);
-                       jkxlDetailFee1.setQtFee(qtFee+qtFee1);
-                       jkxlDetailFee1.setTotalFee(totalFee+totalFee1);
-                   }
-               }
-           }
-       }
-       //按照wbs码排序
-        Collections.sort(list1, new Comparator<JkxlDetailFee>() {
-            @Override
-            public int compare(JkxlDetailFee o1, JkxlDetailFee o2) {
-                return o1.getWbsCode().compareTo(o2.getWbsCode());
-            }
-        });
-        return list1;
-    }
+//    /**
+//     * list中 所有wbs编码一样的JkxlDetailFee对象只保留一个,且相同wbs对象的“安装费”、“建筑费”、“其他费”、“合计”等费用合并
+//     * @param list
+//     * @return
+//     */
+//    private List<JkxlDetailFee> getNewList(List<JkxlDetailFee> list) {
+//       List<JkxlDetailFee> list1 = new ArrayList<>();
+//       for(JkxlDetailFee jkxlDetailFee: list){
+//           String wbsCode = jkxlDetailFee.getWbsCode();
+//           if(!list1.contains(jkxlDetailFee)){
+//               list1.add(jkxlDetailFee);
+//           }else {
+//               for(JkxlDetailFee jkxlDetailFee1 : list1){
+//                   if(jkxlDetailFee1.getWbsCode().equals(wbsCode)){
+//                       double jzFee = jkxlDetailFee1.getJzFee()!=null? jkxlDetailFee1.getJzFee():0.00;
+//                       double jzFee1 = jkxlDetailFee.getJzFee()!=null? jkxlDetailFee.getJzFee():0.00;
+//                       double azFee = jkxlDetailFee1.getAzFee()!=null? jkxlDetailFee1.getAzFee():0.00;
+//                       double azFee1 = jkxlDetailFee.getAzFee()!=null? jkxlDetailFee.getAzFee():0.00;
+//                       double qtFee = jkxlDetailFee1.getQtFee()!=null? jkxlDetailFee1.getQtFee():0.00;
+//                       double qtFee1 = jkxlDetailFee.getQtFee()!=null? jkxlDetailFee.getQtFee():0.00;
+//                       double totalFee = jkxlDetailFee1.getTotalFee()!=null? jkxlDetailFee1.getTotalFee():0.00;
+//                       double totalFee1 = jkxlDetailFee.getTotalFee()!=null? jkxlDetailFee.getTotalFee():0.00;
+//                       jkxlDetailFee1.setJzFee(jzFee+jzFee1);
+//                       jkxlDetailFee1.setAzFee(azFee+azFee1);
+//                       jkxlDetailFee1.setQtFee(qtFee+qtFee1);
+//                       jkxlDetailFee1.setTotalFee(totalFee+totalFee1);
+//                   }
+//               }
+//           }
+//       }
+//       //按照wbs码排序
+//        Collections.sort(list1, new Comparator<JkxlDetailFee>() {
+//            @Override
+//            public int compare(JkxlDetailFee o1, JkxlDetailFee o2) {
+//                return o1.getWbsCode().compareTo(o2.getWbsCode());
+//            }
+//        });
+//        return list1;
+//    }
 
     //项目删除
-    @ResponseBody
-    @RequestMapping(value = "delete")
-    public AjaxJson delete(WbsProject wbsProject) {
-        AjaxJson j = new AjaxJson();
-        projectService.delete(wbsProject);
-        j.setMsg("删除结算书成功");
-        return j;
-    }
-
-    @RequestMapping(value = "tolist")
-    public String toList(){
-        return "redirect:/a/project/list";
-    }
-
-
+//    @ResponseBody
+//    @RequestMapping(value = "delete")
+//    public AjaxJson delete(WbsProject wbsProject) {
+//        AjaxJson j = new AjaxJson();
+//        projectService.delete(wbsProject);
+//        j.setMsg("删除结算书成功");
+//        return j;
+//    }
+
+//    @RequestMapping(value = "tolist")
+//    public String toList(){
+//        return "redirect:/a/project/list";
+//    }
+
+
+
+//    /**
+//     * 创建项目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;
+//    }
 
     /**
-     * 创建项目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;
-    }
-
-    /**
-     * 删除工程
+     * 逻辑删除工程及工程下项目
      */
     @RequestMapping("/deleteProject")
     @ResponseBody
     public AjaxJson deleteProject(WbsProject wbsProject){
-      return projectService.deleteProject(wbsProject);
+        AjaxJson j = new AjaxJson();
+        j.setSuccess(true);
+        j.setMsg("删除工程成功!");
+        try {
+            projectService.deleteProject(wbsProject);
+        }catch (Exception e){
+            j.setSuccess(false);
+            j.setMsg("删除工程失败!");
+        }
+        return j;
     }
 }

+ 70 - 83
src/main/java/com/jeeplus/modules/sg/project/web/ProjectTemController.java

@@ -10,6 +10,7 @@ import com.jeeplus.modules.sg.project.entity.WbsProject;
 import com.jeeplus.modules.sg.project.entity.WbsSelection;
 import com.jeeplus.modules.sg.project.service.ItemService;
 import com.jeeplus.modules.sg.project.service.ProjectService;
+import com.jeeplus.modules.sg.project.util.ProjectUtil;
 import com.jeeplus.modules.sg.substation.service.SubstationService;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,6 +28,9 @@ import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
+/**
+ *单项工程管理
+ */
 
 @Controller
 @RequestMapping("${adminPath}/project/tem")
@@ -36,15 +40,11 @@ public class ProjectTemController extends BaseController {
     @Autowired
     private ProjectService projectService;
     @Autowired
-    private OverheadLineService overheadLineService;
-    @Autowired
     private ItemService itemService;
-    @Autowired
-    private SubstationService substationService;
 
 
     /**
-     *首页跳转  单体工程管理页面
+     *首页跳转  单项工程导入页面
      */
     @RequestMapping("/index")
     public String toIndex(){
@@ -53,7 +53,7 @@ public class ProjectTemController extends BaseController {
 
 
     /**
-     * 项目分页展示
+     * 在单项工程导入页面导入结算书成功后跳转的 单个工程管理页面
      * @param wbsProject
      * @param request
      * @param response
@@ -62,14 +62,18 @@ public class ProjectTemController extends BaseController {
      */
     @RequestMapping(value = {"list", ""})
     public String list(WbsProject wbsProject, HttpServletRequest request, HttpServletResponse response, Model model) {
-       List<WbsProject> list =  projectService.findList(wbsProject);
+//       List<WbsProject> list =  projectService.findList(wbsProject);
+       WbsProject project = projectService.get(wbsProject.getId());
+       //迁就前台页面放入一个list
+       List<WbsProject> list = new ArrayList<>();
+       list.add(project);
        model.addAttribute("list",list);
         return "modules/sg/projecttem/manageList";
     }
 
 
     /**
-     * 多文件导入  导入工程
+     * 单项工程管理页面 多个结算书导入
      * @param file 文件数组
      * @param projectName 单体工程名称
      * @param projectNo  单体工程编号
@@ -81,37 +85,12 @@ public class ProjectTemController extends BaseController {
     @RequestMapping("/import")
     public HashMap importFile(@RequestParam(value = "file")MultipartFile[] file,String projectName,String projectNo,String[] itemNames,String[] units) {
         HashMap map = new HashMap();
-//        添加工程
-        WbsProject wbsProject = new WbsProject();
-        wbsProject.setProjectName(projectName);
-        wbsProject.setProjectNo(projectNo);
-        projectService.save(wbsProject);
-        String projectId = wbsProject.getId();
-        String fileName = "";
+        String projectId = "";
         try {
-            for(int i = 0;i<itemNames.length;i++) {
-                fileName = file[i].getOriginalFilename();
-                WbsItem wbsItem = new WbsItem();
-                wbsItem.setItemName(itemNames[i]);
-                wbsItem.setProjectId(projectId);
-                if(null != units && units.length >0){
-                    if(StringUtils.isNotBlank(units[i])){
-                     wbsItem.setUnit(units[i]);
-                    }
-                }
-                //获取唯一ID
-                String id = getId();
-                wbsItem.setId(id);
-                //分析保存
-                String str = projectService.save(file[i],wbsItem);
-                if(str.equals(BashInfo.PROJECT_TYPE_ERROR)){
-                    throw new RuntimeException(BashInfo.PROJECT_TYPE_ERROR_MSG);
-                }
-            }
+            projectId = projectService.saveProjectDetail(file,projectName,projectNo,itemNames,units);
         }  catch (Exception e){
             map.put("code",0);
-            map.put("msg","导入失败,"+fileName+e.getMessage());
-            projectService.delete(wbsProject);
+            map.put("msg","导入失败,"+e.getMessage());
             return map;
         }
         map.put("code",1);
@@ -122,7 +101,7 @@ public class ProjectTemController extends BaseController {
 
 
     /**
-     * 单个文件导入
+     * 单个工程管理页面 导入新结算书
      * @param file  文件
      * @param wbsItem 项目信息
      * @param redirectAttributes
@@ -133,19 +112,19 @@ public class ProjectTemController extends BaseController {
     @RequestMapping("/importfile")
     public String importFile(MultipartFile file,WbsItem wbsItem, RedirectAttributes redirectAttributes, HttpServletRequest request, Model model) {
         String projectId = wbsItem.getProjectId();
-        String id = getId();
+        String id = ProjectUtil.getId();
         wbsItem.setId(id);
         try {
 //            保存数据到数据库
-            String str = projectService.save(file,wbsItem);
-            if(str.equals(BashInfo.PROJECT_TYPE_ERROR)){
-                throw new RuntimeException(BashInfo.PROJECT_TYPE_ERROR_MSG);
-            }
+            String type = projectService.saveItemDetail(file,wbsItem);
             addMessage(redirectAttributes, "导入成功");
-            return "redirect:/a/jkxl/list?id="+id+"&type="+str+"&projectId="+projectId;
+            if(type.equals(BashInfo.PROJECT_MUL)){
+                return "redirect:/a/project/tem/list?id="+projectId;
+            }
+            return "redirect:/a/jkxl/list?id="+id+"&type="+type+"&projectId="+projectId;
         }   catch (Exception e){
             addMessage(redirectAttributes, "导入失败,"+e.getMessage());
-            return "redirect:/a/project/tem/list?projectId="+projectId;
+            return "redirect:/a/project/tem/list?id="+projectId;
         }
     }
 
@@ -154,29 +133,30 @@ public class ProjectTemController extends BaseController {
 
 
     /**
-     * 返回单个工程
+     * 跳转至单个工程管理页面,用于在结算书查看页面的返回
      * @param request
      * @return
      */
-    @RequestMapping(value = "tolist")
-    public String toList(HttpServletRequest request){
-        String projectId = request.getParameter("projectId");
-        return "redirect:/a/project/tem/list?projectId="+projectId;
-    }
+//    @RequestMapping(value = "tolist")
+//    public String toList(HttpServletRequest request){
+//        String projectId = request.getParameter("projectId");
+//        return "redirect:/a/project/tem/list?projectId="+projectId;
+//    }
 
 
     /**
-     * 获取工程数据
-     * @param wbsProject
+     * 单个工程管理页面  查看或修改工程信息
+     * @param wbsProject  工程id与打开方式
      * @param model
      * @return
      */
     @RequestMapping("/form")
     public String form(WbsProject wbsProject, Model model) {
-        WbsProject wbsProject1 = projectService.get(wbsProject.getId());
+        WbsProject pro = projectService.get(wbsProject.getId());
         List<WbsProject> list = new ArrayList<>();
-        list.add(wbsProject1);
+        list.add(pro);
         model.addAttribute("list", list);
+//        如果tabId为1表示查看 否认表示修改
         String view = "updateItem";
         String tabId = request.getParameter("tabId");
         if("1".equals(tabId)){
@@ -186,50 +166,57 @@ public class ProjectTemController extends BaseController {
     }
 
 
-
-
-
     /**
-     * 创建项目ID
+     * 检验工程下是否存在某项目名称
+     * @param itemName      项目名称
+     * @param projectId
+     * @return
      */
-    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;
-    }
-
-
-    //校验项目名称是否存在
     @RequestMapping("/verfiy")
     @ResponseBody
-    public HashMap getVerfiy(String projectName,String projectId){
+    public HashMap getVerfiy(String itemName,String projectId){
         HashMap map = new HashMap();
-        List<WbsItem> wbsItemList = itemService.findItemByName(projectName,projectId);
-        if (wbsItemList!=null&&!wbsItemList.isEmpty()){
-            map.put("msg","导入失败! 结算书名称:"+projectName+" 已存在");
+        WbsItem item = new WbsItem();
+        item.setProjectId(projectId);
+        item.setItemName(itemName);
+        List<WbsItem> itemList = itemService.findList(item);
+        if (itemList!=null&&itemList.size()>0){
+            map.put("msg","导入失败! 结算书名称:"+itemName+" 已存在");
             return map;
         }
         map.put("code",1);
-        map.put("msg","导入成功");
+        map.put("msg","验证通过");
         return map;
     }
 
-    //删除项目
+    /**
+     * 属于历史工程管理页面中 删除单个项目
+     * @param wbsItem
+     * @return
+     */
     @RequestMapping("/deleteItem")
     @ResponseBody
     public AjaxJson deleteItem(WbsItem wbsItem){
-       return  itemService.deleteItemOne(wbsItem);
+        AjaxJson j = new AjaxJson();
+        try {
+            WbsItem item = itemService.get(wbsItem.getId());
+            itemService.deleteItemOne(wbsItem);
+            j.setSuccess(true);
+            j.setMsg(item.getProjectId());
+        }catch (Exception e){
+            j.setSuccess(false);
+            j.setMsg("删除结算书失败!");
+        }
+        return j;
     }
 
 
-    //返回
-    @RequestMapping("/return")
-    public String returnto(){
-      return  "modules/sg/projecttem/addItem2Form";
-    }
+//    /**
+//     * 从单个工程管理页面返回至 单项工程导入页面
+//     * @return
+//     */
+//    @RequestMapping("/return")
+//    public String returnto(){
+//      return  "modules/sg/projecttem/addItem2Form";
+//    }
 }

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

@@ -8,6 +8,7 @@ import com.jeeplus.modules.sg.overheadline.entity.Settlement;
 import com.jeeplus.modules.sg.overheadline.entity.WbsProject;
 import com.jeeplus.modules.sg.overheadline.mapper.OverheadLineMapper;
 import com.jeeplus.modules.sg.overheadline.service.FeeAdjustService;
+import com.jeeplus.modules.sg.overheadline.service.OverheadLineService;
 import com.jeeplus.modules.sg.overheadline.service.SettlementService;
 import com.jeeplus.modules.sg.overheadline.util.BashInfo;
 import com.jeeplus.modules.sg.overheadline.util.DetailFeeUtil;
@@ -37,6 +38,8 @@ public class SubstationService {
     @Autowired
     private SettlementService settlementService;
     @Autowired
+    private OverheadLineService overheadLineService;
+    @Autowired
     private ItemService itemService;
 
     /**
@@ -238,16 +241,9 @@ public class SubstationService {
         }
         double gxFee = Math.abs(DoubleUtil.add(gcjsFee,-tz,-qtFees[0],-qtFees[1],-wsbfee));
         //将其他费用存入集合
-        JkxlDetailFee jkxlDetailFee1 = new JkxlDetailFee();
-        JkxlDetailFee jkxlDetailFee2 = new JkxlDetailFee();
-        jkxlDetailFee1.setId(id);
-        jkxlDetailFee1.setWbsCode("24120000");
-        jkxlDetailFee1.setTotalFee(qtFees[0]);
-        jkxlDetailFee2.setWbsCode("24220000");
-        jkxlDetailFee2.setTotalFee(qtFees[1]);
-        jkxlDetailFee2.setId(id);
-        list.add(jkxlDetailFee1);
-        list.add(jkxlDetailFee2);
+        overheadLineService.saveLayerFee(id,"24120000","0",qtFees[0]);
+        overheadLineService.saveLayerFee(id,"24220000","0",qtFees[1]);
+
         overheadLineMapper.saveList(list);
         if(gxFee!=0.00){
             JkxlAdjustFee jkxlAdjustFee = new JkxlAdjustFee();
@@ -388,838 +384,5 @@ public class SubstationService {
         }
     }
 
-//    /**
-//     * 变电站工程分析保存
-//     * @param file   项目文件
-//     * @param wbsItem 项目信息
-//     */
-//   @Transactional(readOnly = false)
-//    public void save(MultipartFile file,WbsItem wbsItem) throws IOException, InvalidFormatException {
-//        String id = wbsItem.getId();
-//        WbsItem wbsItem1 = itemService.get(id);
-//        if(wbsItem1 == null){
-//            wbsItem.setDelFlag("0");
-//            //保存项目
-//            itemService.save(wbsItem);
-//        }
-//        //读取表格
-//        ImportExcel total = new ImportExcel(file,1,new String[]{BashInfo.SHEET_HZB,BashInfo.SHEET_HZB1,BashInfo.SHEET_HZB2,BashInfo.SHEET_HZB3},true );  //工程项目竣工结算汇总表
-//        ImportExcel csqd1 = 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 tbrsb = new ImportExcel(file,1,new String[]{BashInfo.SHEET_CBRCG,BashInfo.SHEET_TBRCG},false);//投标人采购设备计价表
-//
-////        从《工程项目竣工结算汇总表》获取相关值
-//        double jzgc = ExcelUtil.getDouble(total,new String[]{BashInfo.HZ_JZGC,BashInfo.HZ_JZGCF},1,2);//汇总表建筑金额
-//        double azgc = ExcelUtil.getDouble(total,new String[]{BashInfo.HZ_AZGC,BashInfo.HZ_AZGCF},1,2);//汇总表安装金额
-//        double cbrFee = ExcelUtil.getDouble(total,new String[]{BashInfo.JS_CBRF,BashInfo.JS_TBRF},1,2);//承包人采购设备费
-//        double jsCs = ExcelUtil.getDouble(total,BashInfo.JS_CSXM,1,2); //获取措施费合计
-//        double jsGf = ExcelUtil.getDouble(total,BashInfo.JS_GF,1,2);  //获取规费合计
-//        double texRate = ExcelUtil.getTexRate(total); //获取税率
-//        double textotal = ExcelUtil.getTex(total);  //获取税金合计
-//        double btex = BashInfo.getBtex(total);  //获取补税额
-//        double fbrFees = ExcelUtil.getFbr(total); //获取发包人采购设备费
-//        double gcjsFee = BashInfo.getGcjsFee(total);  //获取工程结算价
-//
-////        从《措施项目清单计价表(一)》中获取建筑和安装的措施费
-//        double jzcsRate = BashInfo.getJzRate(csqd1); //获取建筑措施费率
-//        double[] azcsRate = BashInfo.getAzRate(csqd1); //获取安装措施费率
-//        double jzcs = BashInfo.getJzCs(csqd1); //建筑措施费
-//        double azcs = BashInfo.getAzCs(csqd1);  //安装措施费
-//        double azCsFee = BashInfo.getAzCsfee(csqd1); //安装措施费 除去临时施工费和安全文明施工费剩下措施费合计
-//        double word1total =  jzcs+azcs;//获取措施费合计
-//
-//
-//        double csJzFee = 0.00;  //建筑措施分摊费
-//        double csAzFee = 0.00;  //安装措施分摊费
-//        double word2total=0.00;  //获取措施费二表措施项目合计金额
-//        if(ImportExcel.getSheet(csqd2) != null){
-//             csJzFee = SubstationInfo.getCsJzFee(csqd2);
-//             csAzFee = SubstationInfo.getCsAzFee(csqd2);
-//             word2total=csJzFee+csAzFee;
-//        }
-//
-////       从《承包人采购设备计价表》中,获取承包人采购设备费
-//        double tbrJzFee = 0.00; //投标人建筑费
-//        double tbrAzFee = 0.00; //投标人安装费
-//        double cbperson = 0.00; //投标人合计
-//        if(ImportExcel.getSheet(tbrsb) != null){
-//            tbrJzFee = BashInfo.getFbrJzFee(tbrsb);
-//            tbrAzFee = BashInfo.getFbrAzFee(tbrsb);
-////            cbperson = ExcelUtil.getDouble(tbrsb,BashInfo.QT_HJ,0,6);
-//            cbperson = tbrJzFee+tbrAzFee;
-//        }
-//
-////        从《规费项目清单计价表》中获取规费
-//        double jzGf = BashInfo.getJzGf(gf);//建筑规费合计
-//        double azGf = BashInfo.getAzGf(gf); //安装规费合计
-//        double feesBdzCount =  jzGf+azGf;//获取规费合计
-//
-////       从《规费项目清单计价表》中获取建筑规费费率,包括“危险作业意外伤害保险费”和剩余费率和
-//        double[] jzgfRate = BashInfo.getJzGfRate(gf);  //获取建筑规费率
-//
-////        从《其他费用清单计价表》中获取,“施工场地租用费”,“招标代理”,以及除这两项外其他费用和
-//        double[] qtFees = BashInfo.getQtFees(qt);  //获取其他费
-////       从《其他费用清单计价表》中获取其他费用合计
-//        double otherBdzTotal =  ExcelUtil.getDouble(qt,BashInfo.QT_HJ,0,2);//获取其他项目费合计
-//
-////       从《工程项目竣工结算汇总表》中查找未识别费用
-//        List<JkxlAdjustFee> wsbFees = BashInfo.getWsbFee(total);
-//        double wsbfee = 0.00;
-//        double tax = 0.00; //税金
-//        double totalfee = 0.00;  //合计
-//        //变电站 结算汇总
-//        List<Settlement> settlementsBdz =  SettementUtil.getComparison(total);
-//
-////        《工程项目竣工结算汇总表》中“建筑工程”、“安装工程”金额都不为空时处理方式
-//        if(jzgc !=0.00 && azgc != 0.00){
-//            ImportExcel jzqd = new ImportExcel(file, 1, BashInfo.SHEET_JZFBFXJJ,true);  //建筑分部分项工程量清单计价表
-//            ImportExcel azqd = new ImportExcel(file, 1, BashInfo.SHEET_AZFBFXJJ,true);  //安装分部分项工程量清单计价表
-//            ImportExcel jzhz = new ImportExcel(file, 1, SubstationInfo.SHEET_JZHZB,true);   //建筑工程费用汇总表
-//            ImportExcel azhz = new ImportExcel(file, 1, SubstationInfo.SHEET_HZHZB,true);   //安装工程费用汇总表
-//            //变电站结算汇总
-//            int[] comlumn2 = {12,15};//定义所要数组
-//
-////            从《工程费用汇总表》中获取“合计”行的合计金额
-//            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 zjgcJzTotal = ExcelUtil.getDouble(jzhz,SubstationInfo.QT_HJ,0,3);//建筑直接工程费合计
-//            double zjgcAzTotal = ExcelUtil.getDouble(azhz,SubstationInfo.QT_HJ,0,3);//安装直接工程费合计
-////            从《安装工程费用汇总表》中获取“合计”行的人工费
-//            double rgAzTotal = ExcelUtil.getDouble(azhz,SubstationInfo.QT_HJ,0,4);//安装人工费合计
-////            double csJzFee = SubstationInfo.getCsJzFee(csqd2);//建筑措施分摊费
-////            double csAzFee = SubstationInfo.getCsAzFee(csqd2);//安装措施分摊费
-////            double tbrJzFee = BashInfo.getFbrJzFee(tbrsb); //投标人建筑费
-////            double tbrAzFee = BashInfo.getFbrAzFee(tbrsb); //投标人安装费
-//            double zjgcTotal = zjgcAzTotal+zjgcJzTotal;
-////            double[] aqwmJzFees = ExcelUtil.getDoubleArray(csqd1,SubstationInfo.CS_AQWM,1, new int[]{3, 4});  //建筑安全文明施工费
-//            double[] aqwmJzFees = BashInfo.getAqwfJzFee(csqd1);  //建筑安全文明施工费、费率
-//            double[] aqwmAzFees = BashInfo.getAqwfAzFee(csqd1);  //安装安全文明施工费、费率
-////            从两个《分部分项工程量清单计价表》的“变电站建筑工程”、“变电站安装工程”获取建筑和安装的发包人采购材料
-//            double fbrJzFee = ExcelUtil.getDouble(jzqd,SubstationInfo.JZMX_BJZ,2,15); //
-//            double fbrAzFee = ExcelUtil.getDouble(azqd,SubstationInfo.AZMX_BDZAZ,2,15);
-//            double jxslJz = 0.00;
-//            double jxslAz = 0.00;
-//            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); //安装甲供材进项税率
-//            }
-//
-//            //建筑部分基础数据
-//            JkxlDetailFee jz = SubstationInfo.getTolalInfo(jzqd,jzhz,"21000000",SubstationInfo.JZMX_BJZ);  //建筑合计
-//            JkxlDetailFee jzsc = SubstationInfo.getBashInfo(jzqd,jzhz,"21100000",SubstationInfo.JZMX_ZYGC);  //主要生产工程
-//            List<JkxlDetailFee> scjz = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.ZYSCWBS,SubstationInfo.ZYSCJZSTR,"1"); //主要生产建筑
-//            List<JkxlDetailFee> pdzz = SubstationInfo.getPdzzjz(jzqd,jzhz);    //配电装置
-//            List<JkxlDetailFee> gsxt  = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.GSXTWBS,SubstationInfo.GSXTSTR,"1"); //供水系统建筑
-//            List<JkxlDetailFee> xfxt  = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.XFXTWBS,SubstationInfo.XFXTSTR,"1"); //消防系统
-//            JkxlDetailFee jzfz = SubstationInfo.getBashInfo(jzqd,jzhz,"21200000",SubstationInfo.JZMX_FZSCGC);  //辅助生产工程
-//            List<JkxlDetailFee> fzscjz  = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.FZSCWBS,SubstationInfo.FZSCSTR,"2"); //辅助生产建筑
-//            List<JkxlDetailFee> zqxjz  = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.ZQXWBS,SubstationInfo.ZQXSTR,"2"); //站区性建筑
-//            List<JkxlDetailFee> tsgzw  = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.TXGJWWBS,SubstationInfo.TXGJWSTR,"2"); //特殊构筑物
-//            JkxlDetailFee zqlh = SubstationInfo.getBashInfo(jzqd,jzhz,"21240000",SubstationInfo.JZMX_ZQLH);  //站区绿化
-//            JkxlDetailFee ydxgc = SubstationInfo.getBashInfo(jzqd,jzhz,"21300000",SubstationInfo.JZMX_ZZDXGC);  //单项工程
-//            List<JkxlDetailFee> dxgc  = SubstationInfo.getDxInfo(jzqd,jzhz,SubstationInfo.YDZYGWBS,SubstationInfo.YDZYGSTR); //与站址有关的单项工程
-//            List<JkxlDetailFee> jzTotal = new ArrayList<>();
-//            jzTotal.add(jz);
-//            jzTotal.add(jzsc);
-//            jzTotal.addAll(scjz);
-//            jzTotal.addAll(pdzz);
-//            jzTotal.addAll(gsxt);
-//            jzTotal.addAll(xfxt);
-//            jzTotal.add(jzfz);
-//            jzTotal.addAll(fzscjz);
-//            jzTotal.addAll(zqxjz);
-//            jzTotal.addAll(tsgzw);
-//            jzTotal.add(zqlh);
-//            jzTotal.add(ydxgc);
-//            jzTotal.addAll(dxgc);
-//            //安装部分基础数据
-//            JkxlDetailFee az = SubstationInfo.getTolalInfo(azqd,azhz,"23000000",SubstationInfo.AZMX_BDZAZ);  //安装合计
-//            JkxlDetailFee azsc = SubstationInfo.getBashInfo(azqd,azhz,"23100000",SubstationInfo.AZMX_ZYSCGC);  //主要生产工程
-//            List<JkxlDetailFee> zbyq  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.ZBYQWBS,SubstationInfo.ZBYQSTR); //主变压器系统
-//            List<JkxlDetailFee> pdzzs  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.PDZZWBS,SubstationInfo.PDZZSTR); //配电装置
-//            List<JkxlDetailFee> wgbc  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.WGBCWBS,SubstationInfo.WGBCSTR); //无功补偿
-//            List<JkxlDetailFee> kzzl = SubstationInfo.getKzzl(azqd,azhz);   //控制直流
-//            List<JkxlDetailFee> zyd  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.ZYDWBS,SubstationInfo.ZYDSTR); //站用电系统
-//            List<JkxlDetailFee> dljd = SubstationInfo.getDljd(azqd,azhz);    //电缆接地
-//            List<JkxlDetailFee> txyd  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.TXYDWBS,SubstationInfo.TXYDSTR); //通信及远动系统
-//            List<JkxlDetailFee> yzts  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.QZTSWBS,SubstationInfo.QZTSSTR); //全站调试
-//            List<JkxlDetailFee> fzsc  = SubstationInfo.getBashInfo(azqd,azhz,SubstationInfo.AFZSCWBS,SubstationInfo.AFZSCSTR); //辅助生产工程
-//            JkxlDetailFee azdx = SubstationInfo.getBashInfo(azqd,azhz,"23300000",SubstationInfo.AZMX_ZZDXGC);  //与站址有关的单项工程
-//            List<JkxlDetailFee> zwdy  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.ZWDYWBS,SubstationInfo.ZWDYSTR); //站外电源
-//            List<JkxlDetailFee> zwtx  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.ZWTXWBS,SubstationInfo.ZWTXSTR); //站外通信
-//            List<JkxlDetailFee> azTotal = new ArrayList<>();
-//            azTotal.add(az);
-//            azTotal.add(azsc);
-//            azTotal.addAll(zbyq);
-//            azTotal.addAll(pdzzs);
-//            azTotal.addAll(wgbc);
-//            azTotal.addAll(kzzl);
-//            azTotal.addAll(zyd);
-//            azTotal.addAll(dljd);
-//            azTotal.addAll(txyd);
-//            azTotal.addAll(yzts);
-//            azTotal.addAll(fzsc);
-//            azTotal.add(azdx);
-//            azTotal.addAll(zwdy);
-//            azTotal.addAll(zwtx);
-//            //结算汇总
-//            List<Settlement> settlementBdzs = SettementUtil.getDLComparison(settlementsBdz,builtTotal,division,word1total,word2total,otherBdzTotal,feesBdzCount,cbperson);
-//            Boolean f = SettementUtil.getJgjsDeveloper(settlementsBdz);
-//            settlementService.save(settlementBdzs,id);
-//            for(JkxlDetailFee jkxlDetailFee:jzTotal){
-//                 double originalTotalCost = jkxlDetailFee.getOriginalTotalCost();
-//                 double originalFbrCost = jkxlDetailFee.getOriginalFbrCost();
-//                 double zjgcJzFee = jkxlDetailFee.getZjgcFee();
-//                 double rateCs = zjgcJzFee/zjgcJzTotal;  //措施费分摊比例
-//                 double rateQt = zjgcJzFee/zjgcTotal;    //其他费用分摊比例
-//                 double measuresFee1 = (zjgcJzFee -(originalFbrCost/(1+jxslJz)*jxslJz))*jzcsRate; //措施费一(1)
-//                 double measuresFee2 = 0.00;   //措施费一(2)
-//                 double measuresFee3 = csJzFee*rateCs; //措施费二
-//                 double otherFee =qtFees[2]*rateQt; //其他费用
-//                 double fees = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*(jzgfRate[0]+jzgfRate[1]*0.2);  //规费
-//                if(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.setMeasuresFee1(measuresFee1);
-//                 jkxlDetailFee.setMeasuresFee2(measuresFee2);
-//                 jkxlDetailFee.setMeasuresFee3(measuresFee3);
-//                 jkxlDetailFee.setFees(fees);
-//                 jkxlDetailFee.setOtherCost(otherFee);
-//                 jkxlDetailFee.setTex(tax);
-//                 jkxlDetailFee.setTotalFee(totalfee);
-//                 jkxlDetailFee.setId(id);
-//            }
-//            //建筑部门求和
-////            JkxlDetailFee jzDetail = jzTotal.get(0);
-////            double jztotalFee =  jzDetail.getTotalFee()+tbrJzFee*(1+texRate);
-////            double jztex =  jzDetail.getTex()+tbrJzFee*texRate;
-////            jzDetail.setTotalFee(jztotalFee);
-////            jzDetail.setTex(jztex);
-////            jzTotal.set(0,jzDetail);
-//
-//
-//            for(JkxlDetailFee jkxlDetailFee:azTotal){
-//                double originalTotalCost = jkxlDetailFee.getOriginalTotalCost();
-//                double originalFbrCost = jkxlDetailFee.getOriginalFbrCost();
-//                double rgAzFee = jkxlDetailFee.getOriginalRgCost();
-//                double zjgcAzFee = jkxlDetailFee.getZjgcFee();
-//                double rateCs = zjgcAzFee/zjgcAzTotal;  //措施费分摊比例
-//                double rateQt = zjgcAzFee/zjgcTotal;    //其他费用分摊比例
-//                double rateRg = rgAzFee/rgAzTotal;  //人工费比例
-////                double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+(rgAzFee/(1+tcRate[0])*azcsRate[1]); //措施费一(2)
-//                double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+azCsFee*rateRg; //措施费一(2)
-//                double measuresFee2 = 0.00;   //措施费一(2)
-//                double measuresFee3 = csAzFee*rateCs; //措施费二
-//                double otherFee =qtFees[2]*rateQt; //其他费用
-////                double fees = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.6;  //规费
-//                double fees = azGf*rateRg;  //规费
-//                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.setMeasuresFee1(measuresFee1);
-//                jkxlDetailFee.setMeasuresFee2(measuresFee2);
-//                jkxlDetailFee.setMeasuresFee3(measuresFee3);
-//                jkxlDetailFee.setFees(fees);
-//                jkxlDetailFee.setOtherCost(otherFee);
-//                jkxlDetailFee.setTex(tax);
-//                jkxlDetailFee.setTotalFee(totalfee);
-//                jkxlDetailFee.setId(id);
-//            }
-//            //安装求和
-////            JkxlDetailFee azDetail = azTotal.get(0);
-////            double aztotalFee =  azDetail.getTotalFee()+tbrAzFee*(1+texRate);
-////            azDetail.setTotalFee(aztotalFee);
-////            azTotal.set(0,azDetail);
-//
-//            //分摊承包人采购设备费
-//            if(cbrFee != 0.00){
-//                for (JkxlDetailFee jkxlDetailFee : azTotal) {
-//                    double total1 = jkxlDetailFee.getTotalFee();
-//                    double rate = jkxlDetailFee.getOriginalTotalCost()/ built2Total;
-//                    double tz = cbrFee*rate;
-//                    jkxlDetailFee.setTotalFee(total1+tz);
-//                }
-//            }
-//
-//            //补税
-//            double texTotal = jzTotal.get(0).getTex()+azTotal.get(0).getTex();//税合计金额
-//            //其他费用补税
-//            if(qtFees[0]+qtFees[1] != 0.00) {
-//                for (JkxlDetailFee jkxlDetailFee : jzTotal) {
-//                    double tex = jkxlDetailFee.getTex();
-//                    double total1 = jkxlDetailFee.getTotalFee();
-//                    double rate = tex / texTotal;
-//                    double tzTex = (qtFees[0] + qtFees[1]) * rate * texRate;
-//                    jkxlDetailFee.setTex(tex + tzTex);
-//                    jkxlDetailFee.setTotalFee(total1 + tzTex);
-//                }
-//                for (JkxlDetailFee jkxlDetailFee : azTotal) {
-//                    double tex = jkxlDetailFee.getTex();
-//                    double total1 = jkxlDetailFee.getTotalFee();
-//                    double rate = tex / texTotal;
-//                    double tzTex = (qtFees[0] + qtFees[1]) * rate * texRate;
-//                    jkxlDetailFee.setTex(tex + tzTex);
-//                    jkxlDetailFee.setTotalFee(total1 + tzTex);
-//                }
-//            }
-//            //补税
-//            if(btex != 0.00){
-//                double tex1 = jzTotal.get(0).getTex()+azTotal.get(0).getTex();//税合计金额
-//                for(JkxlDetailFee jkxlDetailFee : jzTotal){
-//                    double tex = jkxlDetailFee.getTex();
-//                    double total1 = jkxlDetailFee.getTotalFee();
-//                    double rate = tex/tex1;
-//                    jkxlDetailFee.setTex(tex+btex*rate);
-//                    jkxlDetailFee.setTotalFee(total1+btex*rate);
-//                }
-//                for(JkxlDetailFee jkxlDetailFee : azTotal){
-//                    double tex = jkxlDetailFee.getTex();
-//                    double total1 = jkxlDetailFee.getTotalFee();
-//                    double rate = tex/tex1;
-//                    jkxlDetailFee.setTex(tex+btex*rate);
-//                    jkxlDetailFee.setTotalFee(total1+btex*rate);
-//                }
-//            }
-//            //分摊差额
-//            double cstotal1 = jzTotal.get(0).getMeasuresFee1()+azTotal.get(0).getMeasuresFee1();
-//            double cstotal2 = jzTotal.get(0).getMeasuresFee2()+azTotal.get(0).getMeasuresFee2();
-//            double cstotal3 = jzTotal.get(0).getMeasuresFee3()+azTotal.get(0).getMeasuresFee3();
-//            double gftotal = jzTotal.get(0).getFees()+azTotal.get(0).getFees();
-//
-//            for(JkxlDetailFee jkxlDetailFee1 : jzTotal){
-//                double csftRate = 0.00;
-//                if(cstotal1 != 0.00) {
-//                    csftRate = jkxlDetailFee1.getMeasuresFee1() / cstotal1;
-//                }
-//                double gfRate = 0.00;
-//                if(gftotal != 0.00) {
-//                    gfRate = jkxlDetailFee1.getFees() / gftotal;
-//                }
-//                double csft = (jsCs-(cstotal1+cstotal2+cstotal3))*csftRate;
-//                double gfft = (jsGf-gftotal)*gfRate;
-//                double texft = (csft+gfft)*texRate;
-//                jkxlDetailFee1.setMeasuresFee1(jkxlDetailFee1.getMeasuresFee1()+csft);
-//                jkxlDetailFee1.setFees(jkxlDetailFee1.getFees()+gfft);
-//                jkxlDetailFee1.setTex(jkxlDetailFee1.getTex()+texft);
-//                jkxlDetailFee1.setTotalFee(jkxlDetailFee1.getTotalFee()+csft+gfft+texft);
-//            }
-//            for(JkxlDetailFee jkxlDetailFee1 : azTotal){
-//                double csftRate = 0.00;
-//                if(cstotal1 != 0.00) {
-//                    csftRate = jkxlDetailFee1.getMeasuresFee1() / cstotal1;
-//                }
-//                double gfRate = 0.00;
-//                if(gftotal != 0.00) {
-//                    gfRate = jkxlDetailFee1.getFees() / gftotal;
-//                }
-//                double csft = (jsCs-(cstotal1+cstotal2+cstotal3))*csftRate;
-//                double gfft = (jsGf-gftotal)*gfRate;
-//                double texft = (csft+gfft)*texRate;
-//                jkxlDetailFee1.setMeasuresFee1(jkxlDetailFee1.getMeasuresFee1()+csft);
-//                jkxlDetailFee1.setFees(jkxlDetailFee1.getFees()+gfft);
-//                jkxlDetailFee1.setTex(jkxlDetailFee1.getTex()+texft);
-//                jkxlDetailFee1.setTotalFee(jkxlDetailFee1.getTotalFee()+csft+gfft+texft);
-//            }
-//            //分摊税
-//            double texh = textotal+btex;//总税额
-//            double jktex = jzTotal.get(0).getTex()+azTotal.get(0).getTex();
-//            double texr = texh-jktex;
-//            for(JkxlDetailFee jkxlDetailFee : jzTotal){
-//                double texrate = jkxlDetailFee.getTex()/jktex;
-//                double tex = texr*texrate;
-//                jkxlDetailFee.setTex(jkxlDetailFee.getTex()+tex);
-//                jkxlDetailFee.setTotalFee(jkxlDetailFee.getTotalFee()+tex);
-//
-//            }
-//            for(JkxlDetailFee jkxlDetailFee : azTotal){
-//                double texrate = jkxlDetailFee.getTex()/jktex;
-//                double tex = texr*texrate;
-//                jkxlDetailFee.setTex(jkxlDetailFee.getTex()+tex);
-//                jkxlDetailFee.setTotalFee(jkxlDetailFee.getTotalFee()+tex);
-//
-//            }
-//            //分摊发包人
-//            if(f){
-//                double fbrfee = jzTotal.get(0).getOriginalFbrCost()+azTotal.get(0).getOriginalFbrCost();
-//                double cs = fbrFees-fbrfee;
-//                if(cs!=0.00) {
-//                    for (JkxlDetailFee jkxlDetailFee1 : jzTotal) {
-//                        double rate = jkxlDetailFee1.getOriginalFbrCost() / fbrfee;
-//                        jkxlDetailFee1.setOriginalFbrCost(jkxlDetailFee1.getOriginalFbrCost() + cs * rate);
-//                        jkxlDetailFee1.setTotalFee(jkxlDetailFee1.getTotalFee() - cs * rate);
-//                    }
-//                    for (JkxlDetailFee jkxlDetailFee1 : azTotal) {
-//                        double rate = jkxlDetailFee1.getOriginalFbrCost() / fbrfee;
-//                        jkxlDetailFee1.setOriginalFbrCost(jkxlDetailFee1.getOriginalFbrCost() + cs * rate);
-//                        jkxlDetailFee1.setTotalFee(jkxlDetailFee1.getTotalFee() - cs * rate);
-//                    }
-//                }
-//
-//            }
-//            //计算差额
-//            double tz = jzTotal.get(0).getTotalFee()+azTotal.get(0).getTotalFee();//总合计金额
-//
-//            if(wsbFees != null && wsbFees.size()>0){
-//                for(JkxlAdjustFee jkxlAdjustFee : wsbFees){
-//                    jkxlAdjustFee.setId(id);
-//                    feeAdjustService.save(jkxlAdjustFee);
-//                    double fee = jkxlAdjustFee.getFee();
-//                    if(jkxlAdjustFee.getType().contains("减") || 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("24120000");
-//            jkxlDetailFee1.setTotalFee(qtFees[0]);
-//            jkxlDetailFee2.setWbsCode("24220000");
-//            jkxlDetailFee2.setTotalFee(qtFees[1]);
-//            jkxlDetailFee2.setId(id);
-//            azTotal.add(jkxlDetailFee1);
-//            azTotal.add(jkxlDetailFee2);
-//            overheadLineMapper.saveList(jzTotal);
-//            overheadLineMapper.saveList(azTotal);
-//            JkxlAdjustFee jkxlAdjustFee = new JkxlAdjustFee();
-//            jkxlAdjustFee.setId(id);
-//            jkxlAdjustFee.setType(BashInfo.CE);
-//            jkxlAdjustFee.setFee(gxFee);
-//            feeAdjustService.save(jkxlAdjustFee);
-//        }
-//        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);   //建筑工程费用汇总表
-//            //变电站结算汇总
-//            int[] comlumn2 = {12,15};//定义所要数组
-//            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 zjgcJzTotal = ExcelUtil.getDouble(jzhz,SubstationInfo.QT_HJ,0,3);//建筑直接工程费合计
-////            double csJzFee = SubstationInfo.getCsJzFee(csqd2);//建筑措施分摊费
-////            double tbrJzFee = BashInfo.getFbrJzFee(tbrsb); //投标人建筑费
-////            double[] aqwmJzFees = ExcelUtil.getDoubleArray(csqd1,SubstationInfo.CS_AQWM,1, new int[]{3, 4});  //建筑安全文明施工费
-//            double[] aqwmJzFees = BashInfo.getAqwfJzFee(csqd1);  //建筑安全文明施工费
-//            double fbrJzFee = ExcelUtil.getDouble(jzqd,SubstationInfo.JZMX_BJZ,2,15);
-//            double jxslJz = 0.00;
-//            if (fbrJzFee != 0.00) {
-//                    double zgJz = zjgcJzTotal - aqwmJzFees[1] / aqwmJzFees[0] * 100;
-//                    jxslJz = zgJz / (fbrJzFee - zgJz); //建筑进项税率
-//            }
-//
-//            //建筑部分基础数据
-//            JkxlDetailFee jz = SubstationInfo.getTolalInfo(jzqd,jzhz,"21000000",SubstationInfo.JZMX_BJZ);  //建筑合计
-//            JkxlDetailFee jzsc = SubstationInfo.getBashInfo(jzqd,jzhz,"21100000",SubstationInfo.JZMX_ZYGC);  //主要生产工程
-//            List<JkxlDetailFee> scjz = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.ZYSCWBS,SubstationInfo.ZYSCJZSTR,"1"); //主要生产建筑
-//            List<JkxlDetailFee> pdzz = SubstationInfo.getPdzzjz(jzqd,jzhz);    //配电装置
-//            List<JkxlDetailFee> gsxt  = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.GSXTWBS,SubstationInfo.GSXTSTR,"1"); //供水系统建筑
-//            List<JkxlDetailFee> xfxt  = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.XFXTWBS,SubstationInfo.XFXTSTR,"1"); //消防系统
-//            JkxlDetailFee jzfz = SubstationInfo.getBashInfo(jzqd,jzhz,"21200000",SubstationInfo.JZMX_FZSCGC);  //辅助生产工程
-//            List<JkxlDetailFee> fzscjz  = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.FZSCWBS,SubstationInfo.FZSCSTR,"2"); //辅助生产建筑
-//            List<JkxlDetailFee> zqxjz  = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.ZQXWBS,SubstationInfo.ZQXSTR,"2"); //站区性建筑
-//            List<JkxlDetailFee> tsgzw  = SubstationInfo.getBashInfos(jzqd,jzhz,SubstationInfo.TXGJWWBS,SubstationInfo.TXGJWSTR,"2"); //特殊构筑物
-//            JkxlDetailFee zqlh = SubstationInfo.getBashInfo(jzqd,jzhz,"21240000",SubstationInfo.JZMX_ZQLH);  //站区绿化
-//            JkxlDetailFee ydxgc = SubstationInfo.getBashInfo(jzqd,jzhz,"21300000",SubstationInfo.JZMX_ZZDXGC);  //单项工程
-//            List<JkxlDetailFee> dxgc  = SubstationInfo.getDxInfo(jzqd,jzhz,SubstationInfo.YDZYGWBS,SubstationInfo.YDZYGSTR); //与站址有关的单项工程
-//            List<JkxlDetailFee> jzTotal = new ArrayList<>();
-//            jzTotal.add(jz);
-//            jzTotal.add(jzsc);
-//            jzTotal.addAll(scjz);
-//            jzTotal.addAll(pdzz);
-//            jzTotal.addAll(gsxt);
-//            jzTotal.addAll(xfxt);
-//            jzTotal.add(jzfz);
-//            jzTotal.addAll(fzscjz);
-//            jzTotal.addAll(zqxjz);
-//            jzTotal.addAll(tsgzw);
-//            jzTotal.add(zqlh);
-//            jzTotal.add(ydxgc);
-//            jzTotal.addAll(dxgc);
-////            boolean flagJz = SubstationInfo.getFlag(jzTotal);
-//            //结算汇总保存
-//            List<Settlement> settlementBdzs = SettementUtil.getDLComparison(settlementsBdz,builtTotal,division,word1total,word2total,otherBdzTotal,feesBdzCount,cbperson);
-//            settlementService.save(settlementBdzs,id);
-//            Boolean f = SettementUtil.getJgjsDeveloper(settlementsBdz);
-//            for(JkxlDetailFee jkxlDetailFee:jzTotal){
-//                double originalTotalCost = jkxlDetailFee.getOriginalTotalCost();
-//                double originalFbrCost = jkxlDetailFee.getOriginalFbrCost();
-//                double zjgcJzFee = jkxlDetailFee.getZjgcFee();
-//                double rateCs = zjgcJzFee/zjgcJzTotal;  //措施费分摊比例
-//                double rateQt = zjgcJzFee/zjgcJzTotal;    //其他费用分摊比例
-//                double measuresFee1 = (zjgcJzFee -(originalFbrCost/(1+jxslJz)*jxslJz))*jzcsRate; //措施费一(1)
-//                double measuresFee2 = csJzFee*rateCs;   //措施费一(2)
-//                double measuresFee3 = 0.00; //措施费二
-//                double otherFee =qtFees[2]*rateQt; //其他费用
-//                double fees = (zjgcJzFee-(originalFbrCost/(1+jxslJz)*jxslJz))*(jzgfRate[0]+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.setMeasuresFee1(measuresFee1);
-//                jkxlDetailFee.setMeasuresFee2(measuresFee2);
-//                jkxlDetailFee.setMeasuresFee3(measuresFee3);
-//                jkxlDetailFee.setFees(fees);
-//                jkxlDetailFee.setOtherCost(otherFee);
-//                jkxlDetailFee.setTex(tax);
-//                jkxlDetailFee.setTotalFee(totalfee);
-//                jkxlDetailFee.setId(id);
-//            }
-//            //建筑部门求和
-////            JkxlDetailFee jzDetail = jzTotal.get(0);
-////            double jztotalFee =  jzDetail.getTotalFee()+tbrJzFee*(1+texRate);
-////            double jztex =  jzDetail.getTex()+tbrJzFee*texRate;
-////            jzDetail.setTotalFee(jztotalFee);
-////            jzDetail.setTex(jztex);
-////            jzTotal.set(0,jzDetail);
-//
-//            //分摊承包人采购设备费
-//            if(cbrFee != 0.00){
-//                for (JkxlDetailFee jkxlDetailFee : jzTotal) {
-//                    double total1 = jkxlDetailFee.getTotalFee();
-//                    double rate = jkxlDetailFee.getOriginalTotalCost()/ built1Total;
-//                    double tz = cbrFee*rate;
-//                    jkxlDetailFee.setTotalFee(total1+tz);
-//                }
-//            }
-//
-//
-//            double jztexTotal = jzTotal.get(0).getTex();
-//            //其他费用补税
-//            if(qtFees[0]+qtFees[1] != 0.00) {
-//                for (JkxlDetailFee jkxlDetailFee : jzTotal) {
-//                    double tex = jkxlDetailFee.getTex();
-//                    double total1 = jkxlDetailFee.getTotalFee();
-//                    double rate = tex / jztexTotal;
-//                    double tzTex = (qtFees[0] + qtFees[1]) * rate * texRate;
-//                    jkxlDetailFee.setTex(tex + tzTex);
-//                    jkxlDetailFee.setTotalFee(total1 + tzTex);
-//                }
-//            }
-//            //补税
-//            if(btex != 0.00){
-//                double jztex1 = jzTotal.get(0).getTex();
-//                for(JkxlDetailFee jkxlDetailFee : jzTotal){
-//                    double tex = jkxlDetailFee.getTex();
-//                    double total1 = jkxlDetailFee.getTotalFee();
-//                    double rate = tex/jztex1;
-//                    jkxlDetailFee.setTex(tex+btex*rate);
-//                    jkxlDetailFee.setTotalFee(total1+btex*rate);
-//                }
-//            }
-//            //分摊差额
-//            double cstotal1 = jzTotal.get(0).getMeasuresFee1();
-//            double cstotal2 = jzTotal.get(0).getMeasuresFee2();
-//            double cstotal3 = jzTotal.get(0).getMeasuresFee3();
-//            double gftotal = jzTotal.get(0).getFees();
-//
-//            for(JkxlDetailFee jkxlDetailFee1 : jzTotal){
-//                double csftRate = 0.00;
-//                if(cstotal1 != 0.00) {
-//                    csftRate = jkxlDetailFee1.getMeasuresFee1() / cstotal1;
-//                }
-//                double gfRate = 0.00;
-//                if(gftotal != 0.00) {
-//                    gfRate = jkxlDetailFee1.getFees() / gftotal;
-//                }
-//                double csft = (jsCs-(cstotal1+cstotal2+cstotal3))*csftRate;
-//                double gfft = (jsGf-gftotal)*gfRate;
-//                double texft = (csft+gfft)*texRate;
-//                jkxlDetailFee1.setMeasuresFee1(jkxlDetailFee1.getMeasuresFee1()+csft);
-//                jkxlDetailFee1.setFees(jkxlDetailFee1.getFees()+gfft);
-//                jkxlDetailFee1.setTex(jkxlDetailFee1.getTex()+texft);
-//                jkxlDetailFee1.setTotalFee(jkxlDetailFee1.getTotalFee()+csft+gfft+texft);
-//            }
-//            //分摊税
-//            double texh = textotal+btex;//总税额
-//            double jktex = jzTotal.get(0).getTex();
-//            double texr = texh-jktex;
-//            for(JkxlDetailFee jkxlDetailFee : jzTotal){
-//                double texrate = jkxlDetailFee.getTex()/jktex;
-//                double tex = texr*texrate;
-//                jkxlDetailFee.setTex(jkxlDetailFee.getTex()+tex);
-//                jkxlDetailFee.setTotalFee(jkxlDetailFee.getTotalFee()+tex);
-//
-//            }
-//            //分摊发包人
-//            if(f){
-//                double fbrfee = jzTotal.get(0).getOriginalFbrCost();
-//                double cs = fbrFees-fbrfee;
-//                if(cs!=0.00) {
-//                    for (JkxlDetailFee jkxlDetailFee1 : jzTotal) {
-//                        double rate = jkxlDetailFee1.getOriginalFbrCost() / fbrfee;
-//                        jkxlDetailFee1.setOriginalFbrCost(jkxlDetailFee1.getOriginalFbrCost() + cs * rate);
-//                        jkxlDetailFee1.setTotalFee(jkxlDetailFee1.getTotalFee() - cs * rate);
-//                    }
-//                }
-//
-//            }
-//            double tz = jzTotal.get(0).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("扣") || 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("24120000");
-//            jkxlDetailFee1.setTotalFee(qtFees[0]);
-//            jkxlDetailFee2.setWbsCode("24220000");
-//            jkxlDetailFee2.setTotalFee(qtFees[1]);
-//            jkxlDetailFee2.setId(id);
-//            jzTotal.add(jkxlDetailFee1);
-//            jzTotal.add(jkxlDetailFee2);
-//            overheadLineMapper.saveList(jzTotal);
-//            JkxlAdjustFee jkxlAdjustFee = new JkxlAdjustFee();
-//            jkxlAdjustFee.setId(id);
-//            jkxlAdjustFee.setType(BashInfo.CE);
-//            jkxlAdjustFee.setFee(gxFee);
-//            feeAdjustService.save(jkxlAdjustFee);
-//        }
-//        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);   //安装工程费用汇总表
-//            //变电站结算汇总
-//            int[] comlumn2 = {12,15};//定义所要数组
-//            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 zjgcAzTotal = ExcelUtil.getDouble(azhz,SubstationInfo.QT_HJ,0,3);//安装直接工程费合计
-//            double rgAzTotal = ExcelUtil.getDouble(azhz,SubstationInfo.QT_HJ,0,4);//安装人工费合计
-//            double[] aqwmAzFees = BashInfo.getAqwfAzFee(csqd1);  //安装安全文明施工费
-//            double fbrAzFee = ExcelUtil.getDouble(azqd,SubstationInfo.AZMX_BDZAZ,2,15);
-//            double jxslAz = 0.00;
-//            if (fbrAzFee != 0.00) {
-//                    double zgAz = zjgcAzTotal - aqwmAzFees[1] / aqwmAzFees[0] * 100;
-//                    jxslAz = zgAz / (fbrAzFee - zgAz); //安装进项税率
-//            }
-//            //安装部分基础数据
-//            JkxlDetailFee az = SubstationInfo.getTolalInfo(azqd,azhz,"23000000",SubstationInfo.AZMX_BDZAZ);  //安装合计
-//            JkxlDetailFee azsc = SubstationInfo.getBashInfo(azqd,azhz,"23100000",SubstationInfo.AZMX_ZYSCGC);  //主要生产工程
-//            List<JkxlDetailFee> zbyq  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.ZBYQWBS,SubstationInfo.ZBYQSTR); //主变压器系统
-//            List<JkxlDetailFee> pdzzs  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.PDZZWBS,SubstationInfo.PDZZSTR); //配电装置
-//            List<JkxlDetailFee> wgbc  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.WGBCWBS,SubstationInfo.WGBCSTR); //无功补偿
-//            List<JkxlDetailFee> kzzl = SubstationInfo.getKzzl(azqd,azhz);   //控制直流
-//            List<JkxlDetailFee> zyd  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.ZYDWBS,SubstationInfo.ZYDSTR); //站用电系统
-//            List<JkxlDetailFee> dljd = SubstationInfo.getDljd(azqd,azhz);    //电缆接地
-//            List<JkxlDetailFee> txyd  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.TXYDWBS,SubstationInfo.TXYDSTR); //通信及远动系统
-//            List<JkxlDetailFee> yzts  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.QZTSWBS,SubstationInfo.QZTSSTR); //全站调试
-//            List<JkxlDetailFee> fzsc  = SubstationInfo.getBashInfo(azqd,azhz,SubstationInfo.AFZSCWBS,SubstationInfo.AFZSCSTR); //辅助生产工程
-//            JkxlDetailFee azdx = SubstationInfo.getBashInfo(azqd,azhz,"23300000",SubstationInfo.AZMX_ZZDXGC);  //与站址有关的单项工程
-//            List<JkxlDetailFee> zwdy  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.ZWDYWBS,SubstationInfo.ZWDYSTR); //站外电源
-//            List<JkxlDetailFee> zwtx  = SubstationInfo.getBashInfos(azqd,azhz,SubstationInfo.ZWTXWBS,SubstationInfo.ZWTXSTR); //站外通信
-//            List<JkxlDetailFee> azTotal = new ArrayList<>();
-//            azTotal.add(az);
-//            azTotal.add(azsc);
-//            azTotal.addAll(zbyq);
-//            azTotal.addAll(pdzzs);
-//            azTotal.addAll(wgbc);
-//            azTotal.addAll(kzzl);
-//            azTotal.addAll(zyd);
-//            azTotal.addAll(dljd);
-//            azTotal.addAll(txyd);
-//            azTotal.addAll(yzts);
-//            azTotal.addAll(fzsc);
-//            azTotal.add(azdx);
-//            azTotal.addAll(zwdy);
-//            azTotal.addAll(zwtx);
-//            List<Settlement> settlementBdzs = SettementUtil.getDLComparison(settlementsBdz,builtTotal,division,word1total,word2total,otherBdzTotal,feesBdzCount,cbperson);
-//            settlementService.save(settlementBdzs,id);
-//            Boolean f = SettementUtil.getJgjsDeveloper(settlementsBdz);
-//            for(JkxlDetailFee jkxlDetailFee:azTotal){
-//                double originalTotalCost = jkxlDetailFee.getOriginalTotalCost();
-//                double originalFbrCost = jkxlDetailFee.getOriginalFbrCost();
-//                double rgAzFee = jkxlDetailFee.getOriginalRgCost();
-//                double zjgcAzFee = jkxlDetailFee.getZjgcFee();
-//                double rateCs = zjgcAzFee/zjgcAzTotal;  //措施费分摊比例
-//                double rateQt = zjgcAzFee/zjgcAzTotal;    //其他费用分摊比例
-//                double rateRg = rgAzFee/rgAzTotal;   //人工费比例
-////                double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+(rgAzFee/(1+tcRate[0])*azcsRate[1]); //措施费一(2)
-//                double measuresFee1 = (zjgcAzFee-originalFbrCost/(1+jxslAz)*jxslAz)*azcsRate[0]+azCsFee*rateRg; //措施费一(1)
-//                double measuresFee2 = 0.00;   //措施费一(2)
-//                double measuresFee3 = csAzFee*rateCs;   //措施费二
-//                double otherFee =qtFees[2]*rateQt; //其他费用
-////                double fees = rgAzFee/(1+tcRate[0])*azgfRate[0]+rgAzFee/(1+tcRate[0])*azgfRate[1]*1.6;  //规费
-//                double fees = azGf*rateRg;  //规费
-//                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.setMeasuresFee1(measuresFee1);
-//                jkxlDetailFee.setMeasuresFee2(measuresFee2);
-//                jkxlDetailFee.setMeasuresFee3(measuresFee3);
-//                jkxlDetailFee.setFees(fees);
-//                jkxlDetailFee.setOtherCost(otherFee);
-//                jkxlDetailFee.setTex(tax);
-//                jkxlDetailFee.setTotalFee(totalfee);
-//                jkxlDetailFee.setId(id);
-//            }
-//            //安装求和
-////            JkxlDetailFee azDetail = azTotal.get(0);
-////            double aztotalFee =  azDetail.getTotalFee()+tbrAzFee*(1+texRate);
-////            azDetail.setTotalFee(aztotalFee);
-////            azTotal.set(0,azDetail);
-//
-//            //分摊承包人采购设备费
-//            if(cbrFee != 0.00){
-//                for (JkxlDetailFee jkxlDetailFee : azTotal) {
-//                    double total1 = jkxlDetailFee.getTotalFee();
-//                    double rate = jkxlDetailFee.getOriginalTotalCost()/ built2Total;
-//                    double tz = cbrFee*rate;
-//                    jkxlDetailFee.setTotalFee(total1+tz);
-//                }
-//            }
-//
-//            //补税
-//            double aztexTotal = azTotal.get(0).getTex();
-//            //其他费用补税
-//            if(qtFees[0]+qtFees[1] != 0.00) {
-//                for (JkxlDetailFee jkxlDetailFee : azTotal) {
-//                    double tex = jkxlDetailFee.getTex();
-//                    double total1 = jkxlDetailFee.getTotalFee();
-//                    double rate = tex / aztexTotal;
-//                    double tzTex = (qtFees[0] + qtFees[1]) * rate * texRate;
-//                    jkxlDetailFee.setTex(tex + tzTex);
-//                    jkxlDetailFee.setTotalFee(total1 + tzTex);
-//                }
-//            }
-//            //补税
-//            if(btex != 0.00){
-//                double tex1 = azTotal.get(0).getTex();
-//                for(JkxlDetailFee jkxlDetailFee : azTotal){
-//                    double tex = jkxlDetailFee.getTex();
-//                    double total1 = jkxlDetailFee.getTotalFee();
-//                    double rate = tex/tex1;
-//                    jkxlDetailFee.setTex(tex+btex*rate);
-//                    jkxlDetailFee.setTotalFee(total1+btex*rate);
-//                }
-//            }
-//            //分摊差额
-//            double cstotal1 = azTotal.get(0).getMeasuresFee1();
-//            double cstotal2 = azTotal.get(0).getMeasuresFee2();
-//            double cstotal3 = azTotal.get(0).getMeasuresFee3();
-//            double gftotal = azTotal.get(0).getFees();
-//
-//            for(JkxlDetailFee jkxlDetailFee1 : azTotal){
-//                double csftRate = 0.00;
-//                if(cstotal1 != 0.00) {
-//                    csftRate = jkxlDetailFee1.getMeasuresFee1() / cstotal1;
-//                }
-//                double gfRate = 0.00;
-//                if(gftotal != 0.00) {
-//                    gfRate = jkxlDetailFee1.getFees() / gftotal;
-//                }
-//                double csft = (jsCs-(cstotal1+cstotal2+cstotal3))*csftRate;
-//                double gfft = (jsGf-gftotal)*gfRate;
-//                double texft = (csft+gfft)*texRate;
-//                jkxlDetailFee1.setMeasuresFee1(jkxlDetailFee1.getMeasuresFee1()+csft);
-//                jkxlDetailFee1.setFees(jkxlDetailFee1.getFees()+gfft);
-//                jkxlDetailFee1.setTex(jkxlDetailFee1.getTex()+texft);
-//                jkxlDetailFee1.setTotalFee(jkxlDetailFee1.getTotalFee()+csft+gfft+texft);
-//            }
-//            //分摊税
-//            double texh = textotal+btex;//总税额
-//            double jktex = azTotal.get(0).getTex();
-//            double texr = texh-jktex;
-//            for(JkxlDetailFee jkxlDetailFee : azTotal){
-//                double texrate = jkxlDetailFee.getTex()/jktex;
-//                double tex = texr*texrate;
-//                jkxlDetailFee.setTex(jkxlDetailFee.getTex()+tex);
-//                jkxlDetailFee.setTotalFee(jkxlDetailFee.getTotalFee()+tex);
-//            }
-//            if(f){
-//                double fbrfee = azTotal.get(0).getOriginalFbrCost();
-//                double cs = fbrFees-fbrfee;
-//                if(cs!=0.00) {
-//                    for (JkxlDetailFee jkxlDetailFee1 : azTotal) {
-//                        double rate = jkxlDetailFee1.getOriginalFbrCost() / fbrfee;
-//                        jkxlDetailFee1.setOriginalFbrCost(jkxlDetailFee1.getOriginalFbrCost() + cs * rate);
-//                        jkxlDetailFee1.setTotalFee(jkxlDetailFee1.getTotalFee() - cs * rate);
-//                    }
-//                }
-//
-//            }
-//            double tz = azTotal.get(0).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("扣") || 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("24120000");
-//            jkxlDetailFee1.setTotalFee(qtFees[0]);
-//            jkxlDetailFee2.setWbsCode("24220000");
-//            jkxlDetailFee2.setTotalFee(qtFees[1]);
-//            jkxlDetailFee2.setId(id);
-//            azTotal.add(jkxlDetailFee1);
-//            azTotal.add(jkxlDetailFee2);
-//            overheadLineMapper.saveList(azTotal);
-//            JkxlAdjustFee jkxlAdjustFee = new JkxlAdjustFee();
-//            jkxlAdjustFee.setId(id);
-//            jkxlAdjustFee.setType(BashInfo.CE);
-//            jkxlAdjustFee.setFee(gxFee);
-//            feeAdjustService.save(jkxlAdjustFee);
-//        }
-//        if(jzgc ==0.00 && azgc == 0.00){
-//            throw new RuntimeException(BashInfo.NUMBERERROR);
-//        }
-//
-//    }
 
 }

BIN
src/main/webapp/static/template/template.xlsx


+ 1 - 1
src/main/webapp/webpage/modules/sg/free/individualForm.js

@@ -32,7 +32,7 @@ layui.config({
     <c:forEach items="${list}" var="data" varStatus="index">
     {
         "id":"${data.wbsCode}",
-        "wbsys": "${data.describe}",
+        "wbsys": "${data.simpleDescribe}",
         "wbsCode": "${data.wbsCode}",
         "bl":'',
         "fee":'',

+ 12 - 14
src/main/webapp/webpage/modules/sg/free/wbslist.js

@@ -58,12 +58,11 @@ layui.config({
     {field:'rgf3',align:'center',width:120,title:'分摊费用',totalRow: true},
     ]]
     ,data: [ //数据传入
-    <c:if test="${ not empty map.list}">
-    <c:forEach items="${map.list}" var="data" varStatus="index">
-    <c:if test="${data.feeType eq '1'}">
+    <c:if test="${ not empty map.bodyList}">
+    <c:forEach items="${map.bodyList}" var="data" varStatus="index">
     {
         "id": "${data.wbsCode}",
-        "wbsys":"${data.describe}",
+        "wbsys":"${data.simpleDescribe}",
         "wbssbm": "${data.wbsCode}",
 
         "hjje": doIt(${data.originalTotalCost}),
@@ -85,7 +84,6 @@ layui.config({
         "hj": doIt(${data.totalFee}),
         "pid":"${data.parentNode}"
     },
-    </c:if>
     </c:forEach>
     </c:if>
     ],
@@ -122,18 +120,18 @@ layui.use(['table', 'form', 'element', 'treetable'], function () {
                 {field: 'money', title: '金额'},
              ]]
             ,data: [ //其他部分数据传入
-                <c:if test="${ not empty map.list}">
-                    <c:forEach items="${map.list}" var="data" varStatus="index">
-                        <c:if test="${data.feeType eq '0'}">
+                <c:if test="${ not empty map.otherList}">
+                    <c:forEach items="${map.otherList}" var="data" varStatus="index">
+                        /* <c:if test="${data.feeType eq '0'}">*/
                             {
                                 "d_id": "${data.wbsCode}",
-                                "wbsys": "${data.describe}",
+                                "wbsys": "${data.simpleDescribe}",
                                 "wbssbm": "${data.wbsCode}",
                                 "money":doIt(${data.totalFee}),
                                 "d_pid": "${data.parentNode}"
 
                             },
-                        </c:if>
+                       /*  </c:if> */
                     </c:forEach>
                 </c:if>
             ],
@@ -161,8 +159,8 @@ layui.use(['table', 'form', 'element', 'treetable'], function () {
                     ,{width:178,  toolbar: '#barDemo',title:'操作'}
                 ]]
                 ,data:[ //渲染 数据
-                    <c:if test="${ not empty map.list}">
-                        <c:forEach items="${map.list2}" var="data" varStatus="index">
+                    <c:if test="${ not empty map.tzList}">
+                        <c:forEach items="${map.tzList}" var="data" varStatus="index">
                             {
                                 "id":"${data.id}",
                                 "xmmc": "${data.type}",
@@ -274,8 +272,8 @@ layui.use(['table', 'form', 'element', 'treetable'], function () {
             }}
         ]]
         ,data:[
-        <c:if test="${not empty map.list3}">
-            <c:forEach items="${map.list3}" var="data">
+        <c:if test="${not empty map.checkList}">
+            <c:forEach items="${map.checkList}" var="data">
                 {
                     "id":"${data.id}",
                     "setname": "${data.entryName}",

+ 3 - 3
src/main/webapp/webpage/modules/sg/free/wbslist.jsp

@@ -24,7 +24,7 @@
 <body style="background-color: white ;height: 100%">
     <sys:message content="${message}"/>
     <div style="margin-top: 20px">
-     <c:forEach items="${map.list1}" var="data1" varStatus="index">
+     <c:forEach items="${map.items}" var="data1" varStatus="index">
     <div style="margin-left: 30px;float: left;font-size: 15px">
         <label>当前工程:${data1.projectName}</label>&nbsp;&nbsp;
         <label>工程编号:${data1.projectNo}</label>
@@ -45,10 +45,10 @@
         <div class="layui-btn-group">
                <input id="type" hidden value="${data1.type}">
                <c:if test="${empty data1.projectId}">
-            <a class="layui-btn layui-btn-meself" href="${ctx}/project/tolist"><img class="layui-meself-img1" src="${ctxp}/icon/back.png" alt="">&nbsp;返回</a>
+            <a class="layui-btn layui-btn-meself" href="${ctx}/project/list"><img class="layui-meself-img1" src="${ctxp}/icon/back.png" alt="">&nbsp;返回</a>
                </c:if>
                <c:if test="${not empty data1.projectId}">
-                   <a class="layui-btn layui-btn-meself" href="${ctx}/project/tem/tolist?projectId=${data1.projectId}"><img class="layui-meself-img1" src="${ctxp}/icon/back.png" alt="">&nbsp;返回</a>
+                   <a class="layui-btn layui-btn-meself" href="${ctx}/project/tem/list?id=${data1.projectId}"><img class="layui-meself-img1" src="${ctxp}/icon/back.png" alt="">&nbsp;返回</a>
                </c:if>
                 <a class="layui-btn layui-btn-warm layui-btn-meself" href="${ctx}/jkxl/export?id=${data1.id}&type=${data1.type}"><img class="layui-meself-img1" src="${ctxp}/icon/daochu.png" alt="">&nbsp;导出</a>
         </div>

+ 1 - 1
src/main/webapp/webpage/modules/sg/project/addItemForm.js

@@ -57,7 +57,7 @@
         type: "post",
         url: "${ctx}/project/tem/verfiy",
         // contentType: 'application/x-www-form-urlencoded;charset=utf-8',
-        data: {projectName:$("#inputwrite").val(),projectId:$("#newText1").val()},
+        data: {itemName:$("#inputwrite").val(),projectId:$("#newText1").val()},
         dataType: "json",
         success: function(data){
             if(data.code=="1"){

+ 2 - 1
src/main/webapp/webpage/modules/sg/project/management.jsp

@@ -80,7 +80,8 @@
 
                                    <div class="col-xs-12 col-sm-6 col-md-4" style="margin-left: 20px">
                                        <label class="layui-font-style">结算书划分:</label>
-                                       <form:select path="wbsProject.type"  class="form-control m-b">
+                                       <%--<form:select path="wbsProject.type"  class="form-control m-b">--%>
+                                       <form:select path="wbsSelection.type"  class="form-control m-b">
                                            <form:option value="" label=""/>
                                            <form:options items="${fns:getDictList('sg_project_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
                                        </form:select>

+ 1 - 1
src/main/webapp/webpage/modules/sg/projecttem/addItem.js

@@ -41,7 +41,7 @@ function doSubmit(obj){ // 添加项目提交方法
       type: "post",
       url: "${ctx}/project/tem/verfiy",
       // contentType: 'application/x-www-form-urlencoded;charset=utf-8',
-      data: {projectName:$("#inputwrite").val(),projectId:$("#newText1").val()},
+      data: {itemName:$("#inputwrite").val(),projectId:$("#newText1").val()},
       dataType: "json",
       success: function(data){
           if(data.code=="1"){

+ 5 - 1
src/main/webapp/webpage/modules/sg/projecttem/addItem2Form.js

@@ -165,7 +165,7 @@ function okSubmit() {
             if(data.code == 1){
                 // this.formdata=new FormData();
                 layer.msg(data.msg,{icon: 6,offset:['40%','40%']},function(){
-                    window.location.href="${ctx}/project/tem/list?projectId="+data.id;
+                    window.location.href="${ctx}/project/tem/list?id="+data.id;
                 });
             }else {
                 layer.alert(data.msg, {offset:['32%','30%']})
@@ -183,4 +183,8 @@ function clearTotal(id) {
         layer.msg("供应商名称不能为合计",{icon: 3,offset:['40%','40%']});
     }
 }
+function downloadTemp(){
+    var $a = $("<a></a>").attr("href", encodeURI("${ctxStatic}/template/template.xlsx")).attr("download", "手动模板.xlsx");
+    $a[0].click();
+}
 </script>

+ 1 - 0
src/main/webapp/webpage/modules/sg/projecttem/addItem2Form.jsp

@@ -54,6 +54,7 @@
                             </fieldset>
                             <div class="layui-upload">
                                 <button type="button" class="layui-btn layui-btn-normal" id="add_List">添加结算书</button>
+                                <button type="button" class="layui-btn layui-btn-normal" onclick="downloadTemp()">下载手动模板</button>
                                 <div class="layui-upload-list">
                                         <table class="layui-table" id="mytable">
                                         <thead>

+ 1 - 1
src/main/webapp/webpage/modules/sg/projecttem/manageList.jsp

@@ -32,7 +32,7 @@
                     <div class="" style="margin-left: 10px;margin-right: 10px;margin-top: 10px;">
                         <div class="layui-btn-group">
                             <%--<a class="layui-btn layui-btn-meself" href="javascript:history.back(-1)"><img class="layui-meself-img1" src="${ctxp}/icon/back.png" alt="">&nbsp;返回</a>--%>
-                            <a class="layui-btn layui-btn-meself" href="${ctx}/project/tem/return"><img class="layui-meself-img1" src="${ctxp}/icon/back.png" alt="">&nbsp;返回</a>
+                            <a class="layui-btn layui-btn-meself" href="${ctx}/project/tem/index"><img class="layui-meself-img1" src="${ctxp}/icon/back.png" alt="">&nbsp;返回</a>
                             <%--<button type="button" class="layui-btn layui-btn-primary layui-btn-meself"  onclick="refresh()"><img class="layui-meself-img1" src="${ctxp}/icon/refush.png" alt="">&nbsp;刷新</button>--%>
                             <c:forEach items="${list}" var="data1" varStatus="index">
                             <a type="button" class="layui-btn layui-btn-warm  layui-btn-meself" href="${ctx}/project/exportone?id=${data1.id}"><img class="layui-meself-img1" src="${ctxp}/icon/daochu.png" alt="">&nbsp;导出</a>

+ 2 - 1
src/main/webapp/webpage/modules/sg/projecttem/updateItem.jsp

@@ -136,7 +136,8 @@
         $("#inputUnits").val(name);
         $.ajax({
             type:"post",
-            url:"${ctx}/project/save",
+            //url:"${ctx}/project/save",
+            url:"${ctx}/project/update",
             // data:JSON.stringify({id:newid2,type:xmmc2,fee:fyje2}),
             data:$('#updateForm').serialize(),
             success:function(result){