浏览代码

1.人工填写导入功能修改,税金改为招标代理费
2.修改传入手动模板后自动生成供应商问题,只要以‘手动模板’开头都自动生成
3.新增特殊节点处理功能,有两种特殊处理规则,(1)针对末级节点下明细节点 (2)针对末级节点
4.修正某些报错信息不提示问题(因信息中包含双引号导致)
5.修正其他费用为空时,展示项目详情页面出错问题
6.修正历史工程管理页面下删除单个项目失败问题

chengqiang 4 年之前
父节点
当前提交
aff4b4d1ff
共有 24 个文件被更改,包括 470 次插入1502 次删除
  1. 13 2
      src/main/java/com/jeeplus/modules/sg/overheadline/entity/JkxlDetailFee.java
  2. 0 8
      src/main/java/com/jeeplus/modules/sg/overheadline/service/FeeAdjustService.java
  3. 1 368
      src/main/java/com/jeeplus/modules/sg/overheadline/service/OverheadLineService.java
  4. 0 3
      src/main/java/com/jeeplus/modules/sg/overheadline/service/SettlementService.java
  5. 20 0
      src/main/java/com/jeeplus/modules/sg/overheadline/util/DetailFeeUtil.java
  6. 7 43
      src/main/java/com/jeeplus/modules/sg/overheadline/util/ItemShowUtil.java
  7. 0 524
      src/main/java/com/jeeplus/modules/sg/overheadline/web/OverheadLineController.java
  8. 8 52
      src/main/java/com/jeeplus/modules/sg/project/entity/WbsSelection.java
  9. 1 1
      src/main/java/com/jeeplus/modules/sg/project/mapper/xml/ItemMapper.xml
  10. 0 97
      src/main/java/com/jeeplus/modules/sg/project/service/ItemService.java
  11. 4 2
      src/main/java/com/jeeplus/modules/sg/project/service/ManualItemService.java
  12. 1 108
      src/main/java/com/jeeplus/modules/sg/project/service/ProjectService.java
  13. 12 0
      src/main/java/com/jeeplus/modules/sg/project/util/ProjectUtil.java
  14. 3 212
      src/main/java/com/jeeplus/modules/sg/project/web/ProjectController.java
  15. 22 48
      src/main/java/com/jeeplus/modules/sg/project/web/ProjectTemController.java
  16. 91 0
      src/main/java/com/jeeplus/modules/sg/substation/entity/FeeTransfer.java
  17. 62 7
      src/main/java/com/jeeplus/modules/sg/substation/service/SubstationService.java
  18. 207 16
      src/main/java/com/jeeplus/modules/sg/substation/util/SubstationUtil.java
  19. 二进制
      src/main/webapp/static/template/template.xlsx
  20. 2 1
      src/main/webapp/webpage/modules/sg/project/addItemForm.js
  21. 4 1
      src/main/webapp/webpage/modules/sg/project/management.jsp
  22. 3 1
      src/main/webapp/webpage/modules/sg/projecttem/addItem.js
  23. 2 1
      src/main/webapp/webpage/modules/sg/projecttem/addItem2Form.js
  24. 7 7
      src/main/webapp/webpage/modules/sg/projecttem/manageList.js

+ 13 - 2
src/main/java/com/jeeplus/modules/sg/overheadline/entity/JkxlDetailFee.java

@@ -48,6 +48,15 @@ public class JkxlDetailFee {
     private String hierarchy;  //层级
     private Integer index;    //序号
     private List<JkxlDetailFee> nodes;//子节点
+    private JkxlDetailFee parentFee;//父节点
+
+    public JkxlDetailFee getParentFee() {
+        return parentFee;
+    }
+
+    public void setParentFee(JkxlDetailFee parentFee) {
+        this.parentFee = parentFee;
+    }
 
     public String getState() {
         return state;
@@ -376,7 +385,7 @@ public class JkxlDetailFee {
     }
 
     /**
-     * 将fee添加到子节点列表中
+     * 将fee添加到子节点列表中 同时设置fee的父节点
      * @param fee
      */
     public JkxlDetailFee addSubNode(JkxlDetailFee fee){
@@ -385,12 +394,13 @@ public class JkxlDetailFee {
                 nodes = new ArrayList<>();
             }
             nodes.add(fee);
+            fee.setParentFee(this);
         }
         return this;
     }
 
     /**
-     * 将fees添加到子节点列表中
+     * 将fees添加到子节点列表中 同时设置fees的父节点
      * @param fees
      */
     public JkxlDetailFee addSubNodes(List<JkxlDetailFee> fees){
@@ -402,6 +412,7 @@ public class JkxlDetailFee {
                  JkxlDetailFee fee = fees.get(i);
                  if(fee!=null){
                      nodes.add(fee);
+                     fee.setParentFee(this);
                  }
             }
         }

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

@@ -37,12 +37,4 @@ public class FeeAdjustService {
     public void save(JkxlAdjustFee jkxlAdjustFee){
        feeAdjustMapper.saveTzFee(jkxlAdjustFee);
     }
-
-//    /**
-//     *删除
-//     */
-//    @Transactional
-//    public void delete(String id){
-//       feeAdjustMapper.delete(id);
-//    }
 }

+ 1 - 368
src/main/java/com/jeeplus/modules/sg/overheadline/service/OverheadLineService.java

@@ -34,12 +34,6 @@ public class OverheadLineService {
     @Autowired
     private ItemService itemService;
 
-
-//    public List<JkxlDetailFee> getList(String id,String type){
-//       return overheadLineMapper.getList(id,type);
-//    }
-
-
     /**
      * 获取wbs节点列表
      * @param id            项目id,必须有
@@ -67,55 +61,6 @@ public class OverheadLineService {
         return overheadLineMapper.getDetails(id,"1",feeType,null,totalFee);
     }
 
-
-//    /**
-//     * 获取单个节点数据
-//     * @param id            结算书id
-//     * @param wbsCode       节点id
-//     * @return
-//     */
-//    public JkxlDetailFee getData(String id, String wbsCode){
-//       return overheadLineMapper.getData(id,wbsCode);
-//    }
-
-//    /**
-//     * 获取用于单独调整的结算书节点
-//     * @param id
-//     * @return
-//     */
-//    public List<JkxlDetailFee> getAdjust(String id){
-//       return overheadLineMapper.getAdjust(id);
-//    }
-
-
-//    /**
-//     * 更新节点的调整金额与totalFee。方法保证了如果传入的rgFtFee或totalFee为空则对该数据不进行更新
-//     * @param jkxlDetailFee
-//     */
-//    @Transactional(readOnly = false)
-//    public void updataDate(JkxlDetailFee jkxlDetailFee){
-//        overheadLineMapper.updateData(jkxlDetailFee);
-//    }
-
-//    /**
-//     * 批量更新结算书节点的调整金额与总金额totalFee
-//     * @param list
-//     */
-//    @Transactional(readOnly = false)
-//    public void updateList(List<JkxlDetailFee> list){
-//        overheadLineMapper.updateList(list);
-//    }
-
-//    /**
-//     * 物理删除结算书节点
-//     * @param id
-//     */
-//    @Transactional(readOnly = false)
-//    public void delete(String id){
-//       overheadLineMapper.delete(id);
-//    }
-
-
     /**
      * 处理分摊调整
      * @param ftData
@@ -312,7 +257,6 @@ public class OverheadLineService {
         JkxlDetailFee fee = overheadLineMapper.getData(id,wbsCode);
         if(fee==null){
             fee = overheadLineMapper.getElement(wbsCode);
-//            fee.setId(id);
         }
         if(fee.getFeeType().equals(feeType)){
             list.add(fee);
@@ -870,10 +814,6 @@ public class OverheadLineService {
             JkxlDetailFee midQtFee = null;  //诚信扣款处理节点上级节点
             JkxlDetailFee cxkkFee = null;   //诚信扣款处理节点
             for(JkxlDetailFee fee:oriList){
-                //        获取totalFee不为0的本体节点
-//                if(fee.getProjectType().equals("3")&&fee.getFeeType().equals("1")&&fee.getState().equals("1")){
-//                    list.add(fee);
-//                }
 //                获取变电站项目“3”,费用类型为本体“1”,展示状态为展示“1”(这里剔除了本体中的设备购置费),totalFee不为空的节点
                 if("3".equals(fee.getProjectType())&&"1".equals(fee.getFeeType())&&
                         "1".equals(fee.getState())&&fee.getTotalFee()!=null){
@@ -922,6 +862,7 @@ public class OverheadLineService {
             bdzFee.setJzFee(jz2);
             bdzFee.setAzFee(az2);
             bdzFee.setQtFee(qtTotal);
+            bdzFee.setTotalFee(DoubleUtil.add(jz2,az2,qtTotal));
             if(integrityFee!=0.0){
                 cxkkFee.setTotalFee(integrityFee);
                 midQtFee.setTotalFee(DoubleUtil.add(midQtFee.getTotalFee(),integrityFee));
@@ -940,9 +881,6 @@ public class OverheadLineService {
             JkxlDetailFee midQtFee = null;  //诚信扣款处理节点上级节点
             JkxlDetailFee cxkkFee = null;   //诚信扣款处理节点
             for (JkxlDetailFee fee : oriList) {
-//                if(fee.getProjectType().equals("2")&&fee.getFeeType().equals("1")&&fee.getState().equals("1")){
-//                    bodyList.add(fee);
-//                }
                 if("2".equals(fee.getProjectType())&&"1".equals(fee.getFeeType())&&"1".equals(fee.getState())){
                     bodyList.add(fee);
                 }
@@ -1013,9 +951,6 @@ public class OverheadLineService {
             JkxlDetailFee cxkkFee = null;   //诚信扣款处理节点
             for (JkxlDetailFee fee : oriList) {
                 //本体费用求和
-//                if (fee.getProjectType().equals("1")&&fee.getFeeType().equals("1")) {
-//                    bodyList.add(fee);
-//                }
                 if("1".equals(fee.getProjectType())&&"1".equals(fee.getFeeType())){
                     bodyList.add(fee);
                 }
@@ -1079,306 +1014,4 @@ public class OverheadLineService {
         return oriList;
     }
 
-
-//    /**
-//     * 获取导出数据
-//     * @param id
-//     * @param type
-//     * @return
-//     */
-//    public List<JkxlDetailFee> findList(String id,String type){
-//        List<JkxlDetailFee> oriList = overheadLineMapper.findList(id,type);
-////        获取调整金额
-//        double integrityFee = 0.00; //诚信扣款
-//        double decFund = 0.00;//甲供材超供抵扣款
-//        double texDeal = 0.00;//税金处理
-//        double totalDeal = 0.00;//需处理税金与甲供材抵扣款和
-//        WbsItem wbsItem = itemService.get(id);
-//        if(wbsItem != null){
-//            if(wbsItem.getIntegrityFee() != null){
-//                integrityFee = wbsItem.getIntegrityFee() * -1;
-//            }
-//            if(wbsItem.getDecFund() != null){
-//                decFund = wbsItem.getDecFund();
-//            }
-//            if(wbsItem.getTexDeal() != null){
-//                texDeal = wbsItem.getTexDeal();
-//            }
-//            totalDeal = DoubleUtil.add(decFund,texDeal);
-//        }
-//
-//        double jz1 = 0.00;//调整前建筑费合计
-//        double az1 = 0.00;//调整前安装费合计
-//        double jz2 = 0.00;//调整后建筑费合计
-//        double az2 = 0.00;//调整后安装费合计
-//        double qtTotal = 0.00;
-//        //变电站导出
-//        if(type.equals(BashInfo.PROJECT_BDZ)) {
-//            List<JkxlDetailFee> list = new ArrayList<>();
-//            JkxlDetailFee bdzFee = null;
-//            double bdzTotal = 0.00;
-//            for(JkxlDetailFee fee:oriList){
-//                String feeType = fee.getFeeType();
-//                Double totalFee = fee.getTotalFee();
-//                //        获取totalFee不为0的本体节点
-//                if(feeType.equals("1")&&totalFee!=null&&totalFee!=0.00){
-//                    list.add(fee);
-//                }
-//                //找到变电站节点
-//                if(fee.getWbsCode().equals("20000000")){
-//                    bdzFee = fee;
-//                }
-//                //获取变电站总费用
-//                if (fee.getWbsCode().equals("21000000")||fee.getWbsCode().equals("23000000")) {
-//                    bdzTotal = DoubleUtil.add(totalFee,bdzTotal);
-//                }
-//                //其他费用和
-//                if (fee.getFeeType().equals("0")&& totalFee != null) {
-//                    qtTotal = DoubleUtil.add(qtTotal,totalFee);
-//                }
-//            }
-////            将变电站节点加入到list
-//            bdzFee.setTotalFee(bdzTotal);
-//            list.add(bdzFee);
-//
-//            if(totalDeal!=0.00){
-//                JkxlDetailFee topFee = DetailFeeUtil.getTree(list);
-////                分摊金额
-//                DetailFeeUtil.shareByTotal(topFee,-totalDeal);
-//                DetailFeeUtil.dealBaseInfo(topFee);
-//            }
-//            for(JkxlDetailFee fee:list){
-//                String wbs = fee.getWbsCode();
-//                Double totalFee = fee.getTotalFee();
-//                if(wbs.equals("21000000")){
-//                    jz2 = totalFee;
-//                }
-//                if(wbs.equals("23000000")){
-//                    az2 = totalFee;
-//                }
-//            }
-//
-//            qtTotal = DoubleUtil.add(qtTotal,integrityFee);
-//            for (JkxlDetailFee jkxlDetailFee : oriList) {
-//                //WBS变电站合计
-//                if(jkxlDetailFee.getWbsCode().equals("20000000")){
-//                    jkxlDetailFee.setJzFee(jz2);
-//                    jkxlDetailFee.setAzFee(az2);
-//                    jkxlDetailFee.setTotalFee(DoubleUtil.add(jz2,az2,qtTotal));
-//                    jkxlDetailFee.setQtFee(qtTotal);
-//                }
-//                //WBS首层数据
-//                if(jkxlDetailFee.getWbsCode().equals("10000000")){
-//                    jkxlDetailFee.setJzFee(jz2);
-//                    jkxlDetailFee.setAzFee(az2);
-//                    jkxlDetailFee.setTotalFee(DoubleUtil.add(jz2,az2,qtTotal));
-//                    jkxlDetailFee.setQtFee(qtTotal);
-//                }
-//                //WBS变电站其他费用合计
-//                if(jkxlDetailFee.getWbsCode().equals("24000000")){
-//                    jkxlDetailFee.setTotalFee(qtTotal);
-//                }
-//                //WBS变电站工程结算审核费(诚信扣款)
-//                if(jkxlDetailFee.getWbsCode().equals("24260000")){
-//                    jkxlDetailFee.setTotalFee(integrityFee);
-//                }
-//            }
-//        }
-//        //电缆导出
-//        if(type.equals(BashInfo.PROJECT_DLXL)){
-//            for (JkxlDetailFee fee : oriList) {
-//                String wbs = fee.getWbsCode().substring(0,3);
-//                String wbs1 = fee.getWbsCode().substring(3,4);
-//                Double totalFee = fee.getTotalFee();
-//                //建筑和
-//                if(wbs.equals("491") && !wbs1.equals("0")){
-//                    jz1 = DoubleUtil.add(jz1,totalFee);
-//                }
-//                //安装和
-//                if(wbs.equals("493") && !wbs1.equals("0")){
-//                    az1 = DoubleUtil.add(az1,totalFee);
-//                }
-//                //其他费用和
-//                if (fee.getFeeType().equals("0")&& totalFee != null) {
-//                    qtTotal = DoubleUtil.add(qtTotal,totalFee);
-//                }
-//            }
-//
-//            double totalJzShare = 0.00;
-//            double totalAzShare = 0.00;
-//            //处理税金和甲供材超供抵扣款
-//            if(totalDeal!=0.00){
-//                //根据合计分摊至本体部分 看代码jz1=jz2 az1=az2不知道为什么要分开。
-//                for(JkxlDetailFee fee:oriList){
-//                    String wbs = fee.getWbsCode().substring(0,3);
-//                    String wbs1 = fee.getWbsCode().substring(3,4);
-//                    Double totalFee = fee.getTotalFee();
-//                    if(wbs.equals("491") && !wbs1.equals("0")&&totalFee!=null&&totalFee!=0.00){
-//                        double share = DoubleUtil.round2(totalDeal*totalFee/(jz1+az1));
-//                        fee.setTotalFee(DoubleUtil.sub(totalFee,share));
-//                        fee.setJzFee((DoubleUtil.sub(totalFee,share)));
-//                        totalJzShare = DoubleUtil.add(totalJzShare,share);
-//                    }
-//                    if(wbs.equals("493") && !wbs1.equals("0")&&totalFee!=null&&totalFee!=0.00){
-//                        double share = DoubleUtil.round2(totalDeal*totalFee/(jz1+az1));
-//                        fee.setTotalFee(DoubleUtil.sub(totalFee,share));
-//                        fee.setAzFee(DoubleUtil.sub(totalFee,share));
-//                        totalAzShare = DoubleUtil.add(totalAzShare,share);
-//                    }
-//
-//                }
-//                //将分摊后的差额放入第一个分部分项
-//                if(totalDeal!=(totalJzShare+totalAzShare)){
-//                    for(JkxlDetailFee fee:oriList){
-//                        String wbs = fee.getWbsCode().substring(0,3);
-//                        String wbs1 = fee.getWbsCode().substring(3,4);
-//                        Double totalFee = fee.getTotalFee();
-//                        if(wbs.equals("491") && !wbs1.equals("0")&&totalFee!=null&&totalFee!=0.00){
-//                            fee.setTotalFee(DoubleUtil.add(totalFee,-totalDeal,totalJzShare,totalAzShare));//totalFee-(totalDeal-(totalJzShare+totalAzShare))
-//                            fee.setJzFee(DoubleUtil.add(totalFee,-totalDeal,totalJzShare,totalAzShare));
-//                            totalJzShare = DoubleUtil.add(totalDeal,-totalAzShare);//totalJzShare+(totalDeal-(totalJzShare+totalAzShare)
-//                            break;
-//                        }
-//                        if(wbs.equals("493") && !wbs1.equals("0")&&totalFee!=null&&totalFee!=0.00){
-//                            fee.setTotalFee(DoubleUtil.add(totalFee,-totalDeal,totalJzShare,totalAzShare));
-//                            fee.setAzFee(DoubleUtil.add(totalFee,-totalDeal,totalJzShare,totalAzShare));
-//                            totalAzShare = DoubleUtil.add(totalDeal,-totalJzShare);
-//                            break;
-//                        }
-//
-//                    }
-//                }
-//            }
-//            jz2 = DoubleUtil.sub(jz1,totalJzShare);
-//            az2 = DoubleUtil.sub(az1,totalAzShare);
-//
-//            //诚信扣款
-//            qtTotal = DoubleUtil.add(qtTotal,integrityFee);
-//            for (JkxlDetailFee fee : oriList) {
-//                //WBS电缆和
-//                if(fee.getWbsCode().equals("40000000")){
-//                    fee.setJzFee(jz2);
-//                    fee.setAzFee(az2);
-//                    fee.setTotalFee(DoubleUtil.add(jz2,az2,qtTotal));
-//                    fee.setQtFee(qtTotal);
-//                }
-//                //WBS首层
-//                if(fee.getWbsCode().equals("10000000")){
-//                    fee.setJzFee(jz2);
-//                    fee.setAzFee(az2);
-//                    fee.setTotalFee(DoubleUtil.add(jz2,az2,qtTotal));
-//                    fee.setQtFee(qtTotal);
-//                }
-//                //WBS电缆建筑
-//                if(fee.getWbsCode().equals("49100000")){
-//                    fee.setTotalFee(jz2);
-//                }
-//                //WBS电缆安装
-//                if(fee.getWbsCode().equals("49300000")){
-//                    fee.setTotalFee(az2);
-//                }
-//                //WBS电缆本体工程
-//                if(fee.getWbsCode().equals("49000000")){
-//                    fee.setJzFee(jz2);
-//                    fee.setAzFee(az2);
-//                    fee.setTotalFee(DoubleUtil.add(jz2,az2));
-//                }
-//                //WBS电缆其他费用
-//                if(fee.getWbsCode().equals("44000000")){
-//                    fee.setTotalFee(qtTotal);
-//                }
-//                //诚信扣款
-//                if(fee.getWbsCode().equals("44260000")){
-//                    fee.setTotalFee(integrityFee);
-//                }
-//            }
-//
-//        }
-//        //架空导出
-//        if(type.equals(BashInfo.PROJECT_JKXL)) {
-//            for (JkxlDetailFee fee : oriList) {
-//                Double totalFee = fee.getTotalFee();
-//                //本体费用求和
-//                if (fee.getFeeType().equals("1")) {
-//                    az1 = DoubleUtil.add(az1,totalFee);
-//                }
-//                //其他费用求和
-//                if (fee.getFeeType().equals("0")) {
-//                    qtTotal = DoubleUtil.add(qtTotal,totalFee);
-//                }
-//            }
-//            //处理税金和甲供材超供抵扣款
-//            if(totalDeal!=0.00){
-//                double totalShare = 0.00;
-//                //根据合计分摊至本体部分
-//                for(JkxlDetailFee jkxlDetailFee:oriList){
-//                    Double totalFee = jkxlDetailFee.getTotalFee();
-//                    if(jkxlDetailFee.getFeeType().equals("1") && totalFee != null && totalFee!=0.00){
-//                        double share = DoubleUtil.round2(totalDeal*totalFee/az1);
-//                        jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,share));
-//                        totalShare = DoubleUtil.add(totalShare,share);
-//                    }
-//                }
-//                //将分摊后的差额放入第一个分部分项
-//                if(totalDeal!=totalShare){
-//                    for(JkxlDetailFee jkxlDetailFee:oriList){
-//                        Double totalFee = jkxlDetailFee.getTotalFee();
-//                        if(jkxlDetailFee.getFeeType().equals("1") && totalFee != null && totalFee!=0.00){
-//                            jkxlDetailFee.setTotalFee(DoubleUtil.add(totalFee,-totalDeal,totalShare));//totalFee-(totalDeal-totalShare)
-//                            break;
-//                        }
-//                    }
-//                }
-//            }
-//            az2 = DoubleUtil.sub(az1,totalDeal);
-//            qtTotal = DoubleUtil.add(qtTotal,integrityFee);
-//            for (JkxlDetailFee fee : oriList) {
-//                //WBS架空合计
-//                if(fee.getWbsCode().equals("30000000")){
-//                    fee.setTotalFee(DoubleUtil.add(az2,qtTotal));
-//                    fee.setAzFee(az2);
-//                    fee.setQtFee(qtTotal);
-//                }
-//                //WBS首层
-//                if(fee.getWbsCode().equals("10000000")){
-//                    fee.setTotalFee(DoubleUtil.add(az2,qtTotal));
-//                    fee.setAzFee(az2);
-//                    fee.setQtFee(qtTotal);
-//                }
-//                //WBS架空本体工程
-//                if(fee.getWbsCode().equals("39000000")){
-//                    fee.setTotalFee(az2);
-//                }
-//                //WBS架空其他费用
-//                if(fee.getWbsCode().equals("34000000")){
-//                    fee.setTotalFee(qtTotal);
-//                }
-//                //WBS架空诚信扣款
-//                if(fee.getWbsCode().equals("34260000")){
-//                    fee.setTotalFee(integrityFee);
-//                }
-//            }
-//        }
-//
-//        //        根据节点编码特征判断 本地节点、其他费用节点的费用类型为“建筑费”、“安装费”或者“其他费用”,并设置金额。除此之外上层节点需单独设置
-//        for(JkxlDetailFee fee : oriList){
-//            Double totalFee  = fee.getTotalFee();
-//            //建筑
-//            if(fee.getWbsCode().substring(0,2).equals("21") || fee.getWbsCode().substring(0,3).equals("491")){
-//                fee.setJzFee(totalFee);
-//            }
-//            //安装
-//            if(fee.getWbsCode().substring(0,2).equals("23") || fee.getWbsCode().substring(0,3).equals("493") || fee.getWbsCode().substring(0,2).equals("39")){
-//                fee.setAzFee(totalFee);
-//            }
-//            //其他费用
-//            if(totalFee != null && fee.getFeeType().equals("0")){
-//                fee.setQtFee(totalFee);
-//            }
-//
-//        }
-//        return oriList;
-//
-//    }
-
 }

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

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

+ 20 - 0
src/main/java/com/jeeplus/modules/sg/overheadline/util/DetailFeeUtil.java

@@ -284,4 +284,24 @@ public class DetailFeeUtil {
         return combinedList;
     }
 
+    /**
+     * 在mainFee及其所有层级子节点中 查找wbs编码为 wbs 的节点返回,若找不到返回null
+     * @param mainFee
+     * @param wbs
+     * @return
+     */
+    public static JkxlDetailFee findFeeByWbs(JkxlDetailFee mainFee,String wbs){
+        List<JkxlDetailFee> fees = new ArrayList<>();
+        addList(mainFee,fees);
+        if(fees.size()>0){
+            for(JkxlDetailFee fee:fees){
+                if(fee.getWbsCode().equals(wbs)){
+                    return fee;
+                }
+            }
+        }
+        return null;
+    }
+
+
 }

+ 7 - 43
src/main/java/com/jeeplus/modules/sg/overheadline/util/ItemShowUtil.java

@@ -77,85 +77,49 @@ public class ItemShowUtil {
     }
 
     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()));
+                double otherFee = 0;
+//                避免其他费用为空时报错
+                if(topOtherFee!=null){
+                    otherFee = topOtherFee.getTotalFee();
+                }
+                settlement.setTotalFee(DoubleUtil.add(topBodyFee.getOtherCost(),otherFee));
+                settlement.setDifference(DoubleUtil.add(settlement.getMoney(),-topBodyFee.getOtherCost(),-otherFee));
             }
             //结算差额
             if(settlement.getEntryName().contains("结算") || settlement.getEntryName().contains("报价") || settlement.getEntryName().contains("下浮后") || settlement.getEntryName().contains("最高")){

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

@@ -108,153 +108,6 @@ public class OverheadLineController extends BaseController {
     return "redirect:/a/jkxl/list?id="+id+"&type="+itemType;
   }
 
-//  /**
-//   *金额分摊调整
-//   */
-//  @RequestMapping("/fttz")
-//  public String reList(FtData ftData, Model model,RedirectAttributes redirectAttributes){
-//    String id = ftData.getId();
-//    String code = ftData.getCode();   //分摊费用类型
-//    String state = ftData.getState();  //1:增加 2:减少
-//    String type = ftData.getType();   //分摊费用名
-//    String itemType = ftData.getItemType();   //项目类型
-//    double ftFee = ftData.getFee();   //分摊金额
-//    if(ftFee==0.00){
-//      addMessage(redirectAttributes, "调整成功");
-//      return "redirect:/a/jkxl/list?id="+id+"&type="+itemType;
-//    }
-//    if(state.equals("2")){
-//      ftFee = - ftFee;
-//    }
-//    try {
-//       List<JkxlDetailFee> oriList = overheadLineService.getList(id,itemType);
-//      //获取有金额的本体部分费用明细,如果是变电站工程则将变电站顶层节点放入
-//      List<JkxlDetailFee> list = new ArrayList<>();
-//      JkxlDetailFee top = null;
-//      for(JkxlDetailFee fee : oriList){
-//        if(fee.getOriginalTotalCost() != null&&fee.getOriginalTotalCost()!=0.00){
-//          list.add(fee);
-//        }else if(fee.getWbsCode().equals("20000000")){
-//          top = fee;
-//        }
-//      }
-//
-//      //分摊依据字段和
-//      double totalMount = 0.00;
-//      //分摊依据字段值
-//      double theMount = 0.00;
-//      //变电站totalFee和
-//      double bdzTotalFee = 0.00;
-//      //调整总金额 用于架空与电缆线路
-//      double tzTotal = 0.00;
-////      获取分摊调整依据字段和
-//      for(JkxlDetailFee fee:list){
-//        if(code.equals(BashInfo.TZ_ZJGC)){
-//          theMount = fee.getZjgcFee();
-//        }else if(code.equals(BashInfo.TZ_RGF)){
-//          theMount = fee.getOriginalRgCost();
-//        }else if(code.equals(BashInfo.TZ_CBRCG)){
-//          theMount = fee.getOriginalCbrCost();
-//        }else if(code.equals(BashInfo.TZ_FBRCG)){
-//          theMount = fee.getOriginalFbrCost();
-//        }else if(code.equals(BashInfo.TZ_JX)){
-//          theMount = fee.getOriginalJxCost();
-//        }else if(code.equals(BashInfo.TZ_CSF1)){
-//          theMount = fee.getMeasuresFee1();
-//        }else if(code.equals(BashInfo.TZ_CSF2)){
-//          theMount = fee.getMeasuresFee2();
-//        }else if(code.equals(BashInfo.TZ_CSF3)){
-//          theMount = fee.getMeasuresFee3();
-//        }else if(code.equals(BashInfo.TZ_QTF)){
-//          theMount = fee.getOtherCost();
-//        }else if(code.equals(BashInfo.TZ_GF)){
-//          theMount = fee.getFees();
-//        }else if(code.equals(BashInfo.TZ_SF)){
-//          theMount = fee.getTex();
-//        }else{
-//          throw new Exception("调整失败");
-//        }
-//        if(itemType.equals(BashInfo.PROJECT_BDZ)){
-//          if(fee.getWbsCode().equals("21000000")||fee.getWbsCode().equals("23000000")){
-//            totalMount = DoubleUtil.add(totalMount,theMount);
-//            bdzTotalFee = DoubleUtil.add(bdzTotalFee,fee.getTotalFee());
-//          }
-//        }else{
-//          totalMount = DoubleUtil.add(totalMount,theMount);
-//        }
-//      }
-////      若分摊依据总金额为0,且是变电站项目,平摊至各级节点totalFee上
-//      if(totalMount==0.00&&itemType.equals(BashInfo.PROJECT_BDZ)){
-//        top.setTotalFee(bdzTotalFee);
-//        list.add(top);
-//        top = DetailFeeUtil.getTree(list);
-//        //平摊至各级totalFee上
-//        DetailFeeUtil.avgShareToTotal(top,ftFee);
-//        DetailFeeUtil.dealTotalFee(top);
-//        list.remove(top);
-//      }else{
-//        double rate = 0.00;
-//        for(JkxlDetailFee fee:list){
-//          if(totalMount==0.00){
-//            rate = 1.00/list.size();
-//          }else{
-//            if(code.equals(BashInfo.TZ_ZJGC)){
-//              theMount = fee.getZjgcFee();
-//            }else if(code.equals(BashInfo.TZ_RGF)){
-//              theMount = fee.getOriginalRgCost();
-//            }else if(code.equals(BashInfo.TZ_CBRCG)){
-//              theMount = fee.getOriginalCbrCost();
-//            }else if(code.equals(BashInfo.TZ_FBRCG)){
-//              theMount = fee.getOriginalFbrCost();
-//            }else if(code.equals(BashInfo.TZ_JX)){
-//              theMount = fee.getOriginalJxCost();
-//            }else if(code.equals(BashInfo.TZ_CSF1)){
-//              theMount = fee.getMeasuresFee1();
-//            }else if(code.equals(BashInfo.TZ_CSF2)){
-//              theMount = fee.getMeasuresFee2();
-//            }else if(code.equals(BashInfo.TZ_CSF3)){
-//              theMount = fee.getMeasuresFee3();
-//            }else if(code.equals(BashInfo.TZ_QTF)){
-//              theMount = fee.getOtherCost();
-//            }else if(code.equals(BashInfo.TZ_GF)){
-//              theMount = fee.getFees();
-//            }else if(code.equals(BashInfo.TZ_SF)){
-//              theMount = fee.getTex();
-//            }else{
-//              throw new Exception("调整失败");
-//            }
-//            rate = theMount/totalMount;
-//          }
-//          double tzFee = DoubleUtil.round2(ftFee*rate);
-//          fee.setTotalFee(DoubleUtil.add(fee.getTotalFee(),tzFee));
-//          tzTotal = DoubleUtil.add(tzTotal,tzFee);
-//        }
-////        处理调整差额,注意如果是变电站项目要把top从list中移除
-//        if(itemType.equals(BashInfo.PROJECT_BDZ)){
-//          top.setTotalFee(DoubleUtil.add(bdzTotalFee,ftFee));
-//          list.add(top);
-//          top = DetailFeeUtil.getTree(list);
-//          DetailFeeUtil.dealTotalFee(top);
-//          list.remove(top);
-//        }else{
-//          JkxlDetailFee fee = list.get(0);
-//          fee.setTotalFee(DoubleUtil.add(fee.getTotalFee(),ftFee,-tzTotal));
-//        }
-//      }
-//      overheadLineService.updateList(list);
-//      //更新未识别费用表
-//      JkxlAdjustFee jkxlAdjustFee = new JkxlAdjustFee();
-//      jkxlAdjustFee.setType(type);
-//      jkxlAdjustFee.setId(id);
-//      feeAdjustService.updateFee(jkxlAdjustFee);
-//    } catch (Exception e){
-//      addMessage(redirectAttributes, "调整失败");
-//      return "redirect:/a/jkxl/list?id="+id+"&type="+itemType;
-//    }
-//    addMessage(redirectAttributes, "调整成功");
-//    return "redirect:/a/jkxl/list?id="+id+"&type="+itemType;
-//  }
-
 
   /**
    * 获取可以进行单独调整的节点列表  进入单独调整页面
@@ -281,67 +134,9 @@ public class OverheadLineController extends BaseController {
     body.addAll(other);
     model.addAttribute("list",body);
     return "modules/sg/free/individualForm";
-//    List<JkxlDetailFee> list = overheadLineService.getAdjust(id);
-//    if(type.equals(BashInfo.PROJECT_BDZ)){
-//      JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
-//      jkxlDetailFee.setParentNode("-1");
-//      jkxlDetailFee.setDescribe("变电站工程");
-//      jkxlDetailFee.setWbsCode("20000000");
-//      list.add(jkxlDetailFee);
-//      model.addAttribute("list",list);
-//      return "modules/sg/free/individualForm";
-//    }
-//    model.addAttribute("list",list);
-//    return "modules/sg/free/alongst";
   }
 
 
-//  /**
-//   *金额单独调整 不用了
-//   */
-//  @RequestMapping("/ddtz")
-//  public String ddtz(FtData ftData, Model model, RedirectAttributes redirectAttributes){
-//    String id = ftData.getId();
-//    String itemType = itemService.get(id).getType();
-//    String state  = ftData.getState();  // 1:增加 2:减少
-//    String data1 = ftData.getTableData();   //表格数据JOSN字符串
-//    String row = data1.replaceAll("&quot;","\\\"");
-//    //将JSON字符串转为list
-//    List<DdtzData> ts = (List<DdtzData>) JSONArray.parseArray(row, DdtzData.class);
-//    try {
-//      //更新细节费用表
-//      for(DdtzData ddtzData: ts){
-//        double tzFee = Double.valueOf(ddtzData.getFee());
-//        String wbsCode = ddtzData.getWbsCode();
-//        double totalFee = overheadLineService.getData(id,wbsCode).getTotalFee();
-//        //增加
-//        if(state.equals("1")){
-//          totalFee = DoubleUtil.add(totalFee,tzFee);
-//        }
-//        //减少
-//        if(state.equals("2")){
-//          totalFee = DoubleUtil.sub(totalFee,tzFee);
-//        }
-//        JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
-//        jkxlDetailFee.setId(id);
-//        jkxlDetailFee.setWbsCode(wbsCode);
-//        jkxlDetailFee.setTotalFee(totalFee);
-//        //更新明细表费用
-//        overheadLineService.updataDate(jkxlDetailFee);
-//      }
-//      //更新未识别费用表
-//      JkxlAdjustFee jkxlAdjustFee = new JkxlAdjustFee();
-//      jkxlAdjustFee.setType(ftData.getType());
-//      jkxlAdjustFee.setId(id);
-//      feeAdjustService.updateFee(jkxlAdjustFee);
-//
-//    }catch (Exception e){
-//      addMessage(redirectAttributes, "调整失败");
-//    }
-//    addMessage(redirectAttributes, "调整成功");
-//    return "redirect:/a/jkxl/list?id="+id+"&type="+itemType;
-//  }
-
   /**
    * 处理单独调整
    * @param ftData
@@ -362,79 +157,6 @@ public class OverheadLineController extends BaseController {
     return "redirect:/a/jkxl/list?id="+id+"&type="+itemType;
   }
 
-//  /**
-//   * 变电站单独调整
-//   */
-//  @RequestMapping("/bddtz")
-//  public String bddtz(FtData ftData, Model model, RedirectAttributes redirectAttributes){
-//    String id = ftData.getId();
-//    String itemType = itemService.get(id).getType();
-//    String state  = ftData.getState();  // 1:增加 2:减少
-//    String data1 = ftData.getTableData();   //表格数据JOSN字符串
-//    String row = data1.replaceAll("&quot;","\\\"");
-//
-//    //将JSON字符串转为list
-//    List<DdtzData> ts = (List<DdtzData>) JSONArray.parseArray(row, DdtzData.class);
-//    List<JkxlDetailFee> list = overheadLineService.getList(id,itemType);
-//    try {
-//      //更新细节费用表
-//      for(DdtzData ddtzData: ts){
-//        double tzFee = Double.valueOf(ddtzData.getFee());
-//        String wbsCode = ddtzData.getWbsCode();
-//        JkxlDetailFee jkxlDetailFee1 = overheadLineService.getData(id,wbsCode);
-//        List<JkxlDetailFee> list1 = new ArrayList<>();
-//        //递归获取需要更新的数据存入集合
-//        JkxlDetailFee jkxlDetailFee2 = getParent(jkxlDetailFee1,list,list1);
-//        list1.add(jkxlDetailFee1);
-//        for(JkxlDetailFee jkxlDetailFee3 : list1) {
-//          if(jkxlDetailFee3.getWbsCode().equals("20000000")){
-//            continue;
-//          }
-//          double totalFee = jkxlDetailFee3.getTotalFee();
-//          if (state.equals("1")) {
-//            totalFee = DoubleUtil.add(totalFee,tzFee);
-//          }
-//          if (state.equals("2")) {
-//            totalFee = DoubleUtil.sub(totalFee,tzFee);
-//          }
-////          JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
-////          jkxlDetailFee.setId(id);
-////          jkxlDetailFee.setWbsCode(wbsCode);
-//          jkxlDetailFee3.setTotalFee(totalFee);
-//          //更新明细表费用
-//          overheadLineService.updataDate(jkxlDetailFee3);
-//        }
-//
-//      }
-//      //更新未识别费用表
-//      JkxlAdjustFee jkxlAdjustFee = new JkxlAdjustFee();
-//      jkxlAdjustFee.setType(ftData.getType());
-//      jkxlAdjustFee.setId(id);
-//      feeAdjustService.updateFee(jkxlAdjustFee);
-//
-//    }catch (Exception e){
-//      addMessage(redirectAttributes, "调整失败");
-//    }
-//    addMessage(redirectAttributes, "调整成功");
-//    return "redirect:/a/jkxl/list?id="+id+"&type="+itemType;
-//  }
-
-  //递归获取节点
-//  private JkxlDetailFee getParent(JkxlDetailFee jkxlDetailFee,List<JkxlDetailFee> list,List<JkxlDetailFee> list1){
-//    if(jkxlDetailFee.getParentNode().equals("-1")){
-//      return jkxlDetailFee;
-//    }
-//    JkxlDetailFee jkxlDetailFee1 = null;
-//    for(JkxlDetailFee jkxlDetailFee2:list){
-//      if(jkxlDetailFee2.getWbsCode().equals(jkxlDetailFee.getParentNode())){
-//        jkxlDetailFee1 = jkxlDetailFee2;
-//        list1.add(jkxlDetailFee1);
-//        break;
-//      }
-//    }
-//    return getParent(jkxlDetailFee1,list,list1);
-//  }
-
 
   /**
    *结算书数据展示页面导出单个项目成果文件
@@ -462,250 +184,4 @@ public class OverheadLineController extends BaseController {
   }
 
 
-
-
-
-//  /**
-//   *求和 获取合计行数据
-//   */
-//  private List<JkxlDetailFee> getTotal(List<JkxlDetailFee> list,String type) {
-//    List<JkxlDetailFee> list1 = new ArrayList<>();
-//    List<JkxlDetailFee> list2  = new ArrayList<>();
-//    //获取主体部分list集合
-//    for(JkxlDetailFee jkxlDetailFee : list){
-//      if(jkxlDetailFee.getTotalFee() != null && jkxlDetailFee.getFeeType().equals("1")){
-//        list1.add(jkxlDetailFee);
-//      }
-//    }
-//    //获取其他费用list集合
-//    for(JkxlDetailFee jkxlDetailFee : list){
-//      if(jkxlDetailFee.getOriginalTotalCost() == null && jkxlDetailFee.getTotalFee() != null && jkxlDetailFee.getFeeType().equals("0")){
-//        list2.add(jkxlDetailFee);
-//      }
-//    }
-//    //变电站项目求和
-//    if(type.equals(BashInfo.PROJECT_BDZ)){
-//      double[][] zFees = new double[14][2];
-//       for(JkxlDetailFee jkxlDetailFee : list){
-//         //建筑部分求和
-//          if(jkxlDetailFee.getWbsCode().equals("21000000")){
-//            zFees[0][0] = jkxlDetailFee.getOriginalTotalCost()!=null? jkxlDetailFee.getOriginalTotalCost():0.00;
-//            zFees[1][0] = jkxlDetailFee.getZjgcFee()!=null? jkxlDetailFee.getZjgcFee():0.00;
-//            zFees[2][0] = jkxlDetailFee.getOriginalRgCost()!=null? jkxlDetailFee.getOriginalRgCost():0.00;
-//            zFees[3][0] = jkxlDetailFee.getOriginalCbrCost()!=null? jkxlDetailFee.getOriginalCbrCost():0.00;
-//            zFees[4][0] = jkxlDetailFee.getOriginalFbrCost()!=null? jkxlDetailFee.getOriginalFbrCost():0.00;
-//            zFees[5][0] = jkxlDetailFee.getOriginalJxCost()!=null? jkxlDetailFee.getOriginalJxCost():0.00;
-////            zFees[6][0] = jkxlDetailFee.getRgCost()!=null? jkxlDetailFee.getRgCost():0.00;
-//            zFees[6][0] = jkxlDetailFee.getMeasuresFee1()!=null? jkxlDetailFee.getMeasuresFee1():0.00;
-//            zFees[7][0] = jkxlDetailFee.getMeasuresFee2()!=null? jkxlDetailFee.getMeasuresFee2():0.00;
-//            zFees[8][0] = jkxlDetailFee.getMeasuresFee3()!=null? jkxlDetailFee.getMeasuresFee3():0.00;
-//            zFees[9][0] = jkxlDetailFee.getOtherCost()!=null? jkxlDetailFee.getOtherCost():0.00;
-//            zFees[10][0] = jkxlDetailFee.getFees()!=null? jkxlDetailFee.getFees():0.00;
-//            zFees[11][0] = jkxlDetailFee.getTex()!=null? jkxlDetailFee.getTex():0.00;
-//            zFees[12][0] = jkxlDetailFee.getRgFtFee()!=null? jkxlDetailFee.getRgFtFee():0.00;
-//            zFees[13][0] = jkxlDetailFee.getTotalFee()!=null? jkxlDetailFee.getTotalFee():0.00;
-//          }
-//          //安装部分求和
-//         if(jkxlDetailFee.getWbsCode().equals("23000000")){
-//           zFees[0][1] = jkxlDetailFee.getOriginalTotalCost()!=null? jkxlDetailFee.getOriginalTotalCost():0.00;
-//           zFees[1][1] = jkxlDetailFee.getZjgcFee()!=null? jkxlDetailFee.getZjgcFee():0.00;
-//           zFees[2][1] = jkxlDetailFee.getOriginalRgCost()!=null? jkxlDetailFee.getOriginalRgCost():0.00;
-//           zFees[3][1] = jkxlDetailFee.getOriginalCbrCost()!=null? jkxlDetailFee.getOriginalCbrCost():0.00;
-//           zFees[4][1] = jkxlDetailFee.getOriginalFbrCost()!=null? jkxlDetailFee.getOriginalFbrCost():0.00;
-//           zFees[5][1] = jkxlDetailFee.getOriginalJxCost()!=null? jkxlDetailFee.getOriginalJxCost():0.00;
-////           zFees[6][1] = jkxlDetailFee.getRgCost()!=null? jkxlDetailFee.getRgCost():0.00;
-//           zFees[6][1] = jkxlDetailFee.getMeasuresFee1()!=null? jkxlDetailFee.getMeasuresFee1():0.00;
-//           zFees[7][1] = jkxlDetailFee.getMeasuresFee2()!=null? jkxlDetailFee.getMeasuresFee2():0.00;
-//           zFees[8][1] = jkxlDetailFee.getMeasuresFee3()!=null? jkxlDetailFee.getMeasuresFee3():0.00;
-//           zFees[9][1] = jkxlDetailFee.getOtherCost()!=null? jkxlDetailFee.getOtherCost():0.00;
-//           zFees[10][1] = jkxlDetailFee.getFees()!=null? jkxlDetailFee.getFees():0.00;
-//           zFees[11][1] = jkxlDetailFee.getTex()!=null? jkxlDetailFee.getTex():0.00;
-//           zFees[12][1] = jkxlDetailFee.getRgFtFee()!=null? jkxlDetailFee.getRgFtFee():0.00;
-//           zFees[13][1] = jkxlDetailFee.getTotalFee()!=null? jkxlDetailFee.getTotalFee():0.00;
-//         }
-//       }
-//       //合并建筑和安装部分
-//      JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
-//      jkxlDetailFee.setOriginalTotalCost(new BigDecimal(zFees[0][0]+zFees[0][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setZjgcFee(new BigDecimal(zFees[1][0]+zFees[1][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setOriginalRgCost(new BigDecimal(zFees[2][0]+zFees[2][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setOriginalCbrCost(new BigDecimal(zFees[3][0]+zFees[3][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setOriginalFbrCost(new BigDecimal(zFees[4][0]+zFees[4][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setOriginalJxCost(new BigDecimal(zFees[5][0]+zFees[5][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-////      jkxlDetailFee.setRgCost(new BigDecimal(zFees[6][0]+zFees[6][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setMeasuresFee1(new BigDecimal(zFees[6][0]+zFees[6][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setMeasuresFee2(new BigDecimal(zFees[7][0]+zFees[7][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setMeasuresFee3(new BigDecimal(zFees[8][0]+zFees[8][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setOtherCost(new BigDecimal(zFees[9][0]+zFees[9][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setFees(new BigDecimal(zFees[10][0]+zFees[10][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setTex(new BigDecimal(zFees[11][0]+zFees[11][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setRgFtFee(new BigDecimal(zFees[12][0]+zFees[12][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setTotalFee(new BigDecimal(zFees[13][0]+zFees[13][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      jkxlDetailFee.setWbsCode("合计");
-//      jkxlDetailFee.setParentNode("20000000");
-//      jkxlDetailFee.setFeeType("1");
-//      JkxlDetailFee jkxlDetailFee1 = new JkxlDetailFee();
-//      jkxlDetailFee1.setWbsCode("合计");
-//      jkxlDetailFee1.setParentNode("24000000");
-//      double total1 = 0.00;
-//      for (JkxlDetailFee jkxlDetailFee2 :list2){
-//        total1 += jkxlDetailFee2.getTotalFee();
-//      }
-//      jkxlDetailFee1.setFeeType("0");
-//      jkxlDetailFee1.setTotalFee(total1);
-//      List<JkxlDetailFee> list3 = new ArrayList<>();
-//      list3.add(jkxlDetailFee);
-//      list3.add(jkxlDetailFee1);
-//      return list3;
-//
-//    }
-//    //架空线路和电缆求和
-//    double total1 = 0.00;
-//    for (JkxlDetailFee jkxlDetailFee :list2){
-//      total1 += jkxlDetailFee.getTotalFee();
-//    }
-//    double [] zFee = new double[14];
-//    //各项费用求和
-//    for(JkxlDetailFee jkxlDetailFee :list1){
-//      zFee[0] += jkxlDetailFee.getOriginalTotalCost()!=null? jkxlDetailFee.getOriginalTotalCost():0.00;
-//      zFee[1] += jkxlDetailFee.getZjgcFee()!=null? jkxlDetailFee.getZjgcFee():0.00;
-//      zFee[2] += jkxlDetailFee.getOriginalRgCost()!=null? jkxlDetailFee.getOriginalRgCost():0.00;
-//      zFee[3] += jkxlDetailFee.getOriginalCbrCost()!=null? jkxlDetailFee.getOriginalCbrCost():0.00;
-//      zFee[4] += jkxlDetailFee.getOriginalFbrCost()!=null? jkxlDetailFee.getOriginalFbrCost():0.00;
-//      zFee[5] += jkxlDetailFee.getOriginalJxCost()!=null? jkxlDetailFee.getOriginalJxCost():0.00;
-//      zFee[6] += jkxlDetailFee.getMeasuresFee1()!=null? jkxlDetailFee.getMeasuresFee1():0.00;
-//      zFee[7] += jkxlDetailFee.getMeasuresFee2()!=null? jkxlDetailFee.getMeasuresFee2():0.00;
-//      zFee[8] += jkxlDetailFee.getMeasuresFee3()!=null? jkxlDetailFee.getMeasuresFee3():0.00;
-//      zFee[9] += jkxlDetailFee.getOtherCost()!=null? jkxlDetailFee.getOtherCost():0.00;
-//      zFee[10] += jkxlDetailFee.getFees()!=null? jkxlDetailFee.getFees():0.00;
-//      zFee[11] += jkxlDetailFee.getTex()!=null? jkxlDetailFee.getTex():0.00;
-//      zFee[12] += jkxlDetailFee.getRgFtFee()!=null? jkxlDetailFee.getRgFtFee():0.00;
-//      zFee[13] += jkxlDetailFee.getTotalFee()!=null? jkxlDetailFee.getTotalFee():0.00;
-//    }
-//    JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
-//    JkxlDetailFee jkxlDetailFee1 = new JkxlDetailFee();
-//    jkxlDetailFee.setOriginalTotalCost(new BigDecimal(zFee[0]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setZjgcFee(new BigDecimal(zFee[1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setOriginalRgCost(new BigDecimal(zFee[2]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setOriginalCbrCost(new BigDecimal(zFee[3]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setOriginalFbrCost(new BigDecimal(zFee[4]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setOriginalJxCost(new BigDecimal(zFee[5]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-////    jkxlDetailFee.setRgCost(new BigDecimal(zFee[6]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setMeasuresFee1(new BigDecimal(zFee[6]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setMeasuresFee2(new BigDecimal(zFee[7]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setMeasuresFee3(new BigDecimal(zFee[8]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setOtherCost(new BigDecimal(zFee[9]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setFees(new BigDecimal(zFee[10]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setTex(new BigDecimal(zFee[11]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setRgFtFee(new BigDecimal(zFee[12]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setTotalFee(new BigDecimal(zFee[13]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//    jkxlDetailFee.setWbsCode("合计");
-//    if(type.equals(BashInfo.PROJECT_JKXL)) {
-//      jkxlDetailFee.setParentNode("30000000");
-//    }
-//    if(type.equals(BashInfo.PROJECT_DLXL)) {
-//      jkxlDetailFee.setParentNode("40000000");
-//    }
-//    jkxlDetailFee.setFeeType("1"); //1:本体部分  0,其他部分
-//    jkxlDetailFee1.setWbsCode(BashInfo.QT_HJ);
-//    if(type.equals(BashInfo.PROJECT_JKXL)) {
-//      jkxlDetailFee1.setParentNode("34000000");
-//    }
-//    if(type.equals(BashInfo.PROJECT_DLXL)) {
-//      jkxlDetailFee1.setParentNode("44000000");
-//    }
-//    jkxlDetailFee1.setFeeType("0");//1:本体部分  0,其他部分
-//    jkxlDetailFee1.setTotalFee(total1);
-//    List<JkxlDetailFee> list3 = new ArrayList<>();
-//    list3.add(jkxlDetailFee);
-//    list3.add(jkxlDetailFee1);
-//     return list3;
-//
-//
-//  }
-
-  //数据核验,各项差额计算
-//  private List<Settlement> disposeData(List<JkxlDetailFee> list, List<Settlement> list3,List<JkxlAdjustFee> list2) {
-//    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 ce1 = 0.00;
-//    double qt = 0.00;
-//    //总计算差额
-//    for(JkxlAdjustFee jkxlAdjustFee : list2){
-//      if(jkxlAdjustFee.getType().equals(BashInfo.CE)){
-//        ce1 = jkxlAdjustFee.getFee();
-//      }
-//    }
-//    for (JkxlDetailFee jkxlDetailFee : list){
-//      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 : list3){
-//      //分部分项工程费差额
-//      if(settlement.getEntryName().contains(BashInfo.JS_FBFX)){
-//        double ce = Math.abs(settlement.getMoney() - originalTotal);
-//        settlement.setTotalFee(originalTotal);
-//        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.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      }
-//      //措施费差额
-//      if(settlement.getEntryName().contains(BashInfo.JS_CSXM)){
-//        double ce = Math.abs(settlement.getMoney() - measuresFee);
-//        settlement.setTotalFee(measuresFee);
-//        settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      }
-//      //规费差额
-//      if(settlement.getEntryName().contains(BashInfo.JS_GF)){
-//        double ce = Math.abs(settlement.getMoney() - fees);
-//        settlement.setTotalFee(fees);
-//        settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      }
-//      //税金差额
-//      if(settlement.getEntryName().contains(BashInfo.JS_SJ)){
-//        double ce = Math.abs(settlement.getMoney() - tex);
-//        settlement.setTotalFee(tex);
-//        settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      }
-//      //其他费用差额
-//      if(settlement.getEntryName().contains(BashInfo.JS_QTXM)){
-//        double ce = Math.abs(settlement.getMoney() - otherCost-qt);
-//        settlement.setTotalFee(otherCost+qt);
-//        settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      }
-//      //结算差额
-//      if(settlement.getEntryName().contains("结算") || settlement.getEntryName().contains("报价") || settlement.getEntryName().contains("下浮后") || settlement.getEntryName().contains("最高")){
-//        settlement.setTotalFee(totalFee);
-//        settlement.setDifference(new BigDecimal(ce1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-//      }
-//
-//
-//    }
-//    return list3;
-//  }
-
-
-
-
 }

+ 8 - 52
src/main/java/com/jeeplus/modules/sg/project/entity/WbsSelection.java

@@ -8,20 +8,18 @@ import java.util.Date;
  * 工程项目查询条件
  */
 public class WbsSelection {
-//    private String projectId;      //工程ID
     private String projectName;    //工程名称
-//    private String createBy;      //登记人
     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
 
+    /**
+     * 根据工程相关查询条件 构建工程对象
+     * @return
+     */
     public WbsProject getProject(){
         WbsProject project = new WbsProject();
         project.setProjectName(projectName);
@@ -30,6 +28,10 @@ public class WbsSelection {
         return project;
     }
 
+    /**
+     * 根据项目相关查询条件 构建项目对象
+     * @return
+     */
     public WbsItem getItem(){
         WbsItem item = new WbsItem();
         item.setItemName(itemName);
@@ -50,29 +52,6 @@ public class WbsSelection {
     }
 
 
-//    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;
@@ -82,14 +61,6 @@ public class WbsSelection {
         this.projectName = projectName;
     }
 
-//    public String getCreateBy() {
-//        return createBy;
-//    }
-//
-//    public void setCreateBy(String createBy) {
-//        this.createBy = createBy;
-//    }
-
     public Date getProjectStartDate() {
         return projectStartDate;
     }
@@ -130,19 +101,4 @@ 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;
-//    }
 }

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

@@ -67,7 +67,7 @@
 		<where>
 			a.del_flag = '0'
 			<if test="itemName != null and itemName != ''">
-				AND a.item_name LIKE CONCAT(CONCAT('%',#{itemName},'%'))
+				AND a.item_name = #{itemName}
 			</if>
 			<if test="type != null  and type != ''">
 				AND a.type LIKE CONCAT(CONCAT('%',#{type},'%'))

+ 0 - 97
src/main/java/com/jeeplus/modules/sg/project/service/ItemService.java

@@ -20,37 +20,9 @@ import java.util.stream.Collectors;
 public class ItemService extends CrudService<ItemMapper, WbsItem> {
     @Autowired
     private ItemMapper itemMapper;
-//    @Autowired
-//    private ProjectService projectService;
     @Autowired
     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
@@ -66,56 +38,16 @@ public class ItemService extends CrudService<ItemMapper, WbsItem> {
         itemMapper.insert(wbsItem);
     }
 
-//    @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 deleteItem(String parentId){
-//        return itemMapper.deleteItem(parentId);
-//    }
-
     /**
      * 删除项目 并更新项目所属工程的项目数量
      * @param wbsItem
      */
     @Transactional(readOnly = false)
     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;
         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;
     }
 
     /**
@@ -124,36 +56,7 @@ public class ItemService extends CrudService<ItemMapper, WbsItem> {
      */
     @Transactional(readOnly = false)
     public void updateFee(List<WbsItem> list){
-//        List<WbsItem> newlist = list.stream().collect(Collectors.collectingAndThen(Collectors.
-//                toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getUnitType()))), ArrayList::new));
-//      List<WbsItem> list1 = getNew(list);
        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;
-//    }
-
-
-
 }

+ 4 - 2
src/main/java/com/jeeplus/modules/sg/project/service/ManualItemService.java

@@ -49,7 +49,7 @@ public class ManualItemService {
         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);
+            double agencyFee = excel.getDouble(i,2);
             String unit = excel.getValue(i,3);
             String wbsCode = WBS_MAP.get(itemName);
             if(mount==0.0){
@@ -73,9 +73,11 @@ public class ManualItemService {
             String id = ProjectUtil.getId();
             item.setId(id);
             item.setUnit(unit);
-            item.setTexDeal(tex);
             itemService.save(item);
             overheadLineService.saveLayerFee(id,wbsCode,"1",mount);
+//            通过观察得到招标代理费wbs规律
+            String agencyWbs = wbsCode.substring(0,1)+"4220000";
+            overheadLineService.saveLayerFee(id,agencyWbs,"0",agencyFee);
         }
     }
 

+ 1 - 108
src/main/java/com/jeeplus/modules/sg/project/service/ProjectService.java

@@ -39,20 +39,12 @@ import java.util.List;
 public class ProjectService extends CrudService<ProjectMapper, WbsProject> {
     @Autowired
     private ProjectMapper projectMapper;
-//    @Autowired
-//    private ItemService itemService;
     @Autowired
     private OverheadLineService overheadLineService;
     @Autowired
     private SubstationService substationService;
     @Autowired
     private ManualItemService manualItemService;
-//    @Autowired
-//    private SettlementService settlementService;
-//    @Autowired
-//    private FeeAdjustService feeAdjustService;
-//    @Autowired
-//    private OverheadLineMapper overheadLineMapper;
     @Autowired
     private WbsItemService wbsItemService;
     @Autowired
@@ -63,6 +55,7 @@ public class ProjectService extends CrudService<ProjectMapper, WbsProject> {
      * @param id
      * @return
      */
+    @Transactional(readOnly = false)
     public WbsProject get(String id) {
         WbsProject project =  projectMapper.get(id);
         WbsItem item = new WbsItem();
@@ -154,61 +147,6 @@ public class ProjectService extends CrudService<ProjectMapper, WbsProject> {
     }
 
 
-
-//    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;
-//    }
-
-//    /**
-//     * 分页查询工程及工程下项目
-//     * @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 分页对象
@@ -249,15 +187,6 @@ public class ProjectService extends CrudService<ProjectMapper, WbsProject> {
     }
 
 
-//    /**
-//     * 保存工程信息,id不为空则更新,id为空则插入
-//     * @param wbsProject
-//     */
-//    @Transactional(readOnly = false)
-//    public void save(WbsProject wbsProject) {
-//        super.save(wbsProject);
-//    }
-
     /**
      * 更新工程信息,及工程下项目的供应商信息
      * @param wbsProject
@@ -269,40 +198,6 @@ public class ProjectService extends CrudService<ProjectMapper, WbsProject> {
         itemMapper.updateList(wbsItems);
     }
 
-//    @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 Integer updateProjectNumber(WbsProject wbsProject){
-//        return projectMapper.updateProNumber(wbsProject);
-//    }
-
-    //根据id查找工程
-//    public WbsProject findProjectById(String id){
-//        return projectMapper.findProjectById(id);
-//    }
 
     /**
      * 逻辑删除工程及工程下的项目
@@ -311,9 +206,7 @@ public class ProjectService extends CrudService<ProjectMapper, WbsProject> {
      */
     @Transactional(readOnly = false)
     public void deleteProject(WbsProject wbsProject){
-//            itemService.deleteItem(wbsProject.getId());
         itemMapper.deleteItems(wbsProject.getId());
-//            wbsProject.setDelFlag("1");
         projectMapper.deleteProject(wbsProject);
     }
 

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

@@ -19,4 +19,16 @@ public class ProjectUtil {
         }
         return newDate+result;
     }
+
+    /**
+     * 处理信息中的双引号字符,替换为单引号。避免传到前台产生错误
+     * @param msg
+     * @return
+     */
+    public static String dealMsg(String msg){
+        if(msg!=null){
+            return msg.replace("\"","'");
+        }
+        return null;
+    }
 }

+ 3 - 212
src/main/java/com/jeeplus/modules/sg/project/web/ProjectController.java

@@ -46,8 +46,6 @@ public class ProjectController extends BaseController {
     private ProjectService projectService;
     @Autowired
     private OverheadLineService overheadLineService;
-//    @Autowired
-//    private SubstationService substationService;
     @Autowired
     private ItemService itemService;
 
@@ -56,7 +54,6 @@ public class ProjectController extends BaseController {
      * 历史工程管理页面 工程项目数据
      */
     @RequestMapping(value = {"list", ""})
-//    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);
@@ -142,67 +139,23 @@ public class ProjectController extends BaseController {
      *添加单个结算书
      */
     @RequestMapping("/import")
-    public String importFile(MultipartFile file,WbsItem wbsItem, RedirectAttributes redirectAttributes, HttpServletRequest request, Model model) throws IOException, InvalidFormatException {
+    public String importFile(MultipartFile file,WbsItem wbsItem, RedirectAttributes redirectAttributes, HttpServletRequest request,Model model) throws IOException, InvalidFormatException {
         String id = ProjectUtil.getId();
         wbsItem.setId(id);
         try {
            //判断结算数类型并保存数据到数据库
              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;
+            return "redirect:/a/jkxl/list?id="+id+"&type="+str;
         }   catch (Exception e){
-            addMessage(redirectAttributes, "导入失败,"+e.getMessage());
+            addMessage(redirectAttributes, "导入失败,"+ProjectUtil.dealMsg(e.getMessage()));
             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
@@ -251,70 +204,8 @@ public class ProjectController extends BaseController {
         String fileName = wbsProject.getProjectNo()+wbsProject.getProjectName()+".xlsx";
         exportUtil.write(response,fileName).dispose();
         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";
-//    }
 
     /**
      * 财务处理调整页面
@@ -329,33 +220,6 @@ public class ProjectController extends BaseController {
         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";
-//    }
 
     /**
      * 添加诚信扣款、甲供材超供抵扣工程款、税金处理
@@ -418,79 +282,6 @@ public class ProjectController extends BaseController {
         return j;
     }
 
-
-
-//    /**
-//     * 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";
-//    }
-
-
-
-//    /**
-//     * 创建项目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;
-//    }
-
     /**
      * 逻辑删除工程及工程下项目
      */

+ 22 - 48
src/main/java/com/jeeplus/modules/sg/project/web/ProjectTemController.java

@@ -51,27 +51,6 @@ public class ProjectTemController extends BaseController {
         return "modules/sg/projecttem/addItem2Form";
     }
 
-
-    /**
-     * 在单项工程导入页面导入结算书成功后跳转的 单个工程管理页面
-     * @param wbsProject
-     * @param request
-     * @param response
-     * @param model
-     * @return
-     */
-    @RequestMapping(value = {"list", ""})
-    public String list(WbsProject wbsProject, HttpServletRequest request, HttpServletResponse response, Model model) {
-//       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 文件数组
@@ -90,7 +69,7 @@ public class ProjectTemController extends BaseController {
             projectId = projectService.saveProjectDetail(file,projectName,projectNo,itemNames,units);
         }  catch (Exception e){
             map.put("code",0);
-            map.put("msg","导入失败,"+e.getMessage());
+            map.put("msg","导入失败,"+ProjectUtil.dealMsg(e.getMessage()));
             return map;
         }
         map.put("code",1);
@@ -101,6 +80,25 @@ public class ProjectTemController extends BaseController {
 
 
     /**
+     * 在单项工程导入页面导入结算书成功后跳转的 单个工程管理页面
+     * @param wbsProject
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @RequestMapping(value = {"list", ""})
+    public String list(WbsProject wbsProject, HttpServletRequest request, HttpServletResponse response, Model model) {
+       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 wbsItem 项目信息
@@ -123,27 +121,12 @@ public class ProjectTemController extends BaseController {
             }
             return "redirect:/a/jkxl/list?id="+id+"&type="+type+"&projectId="+projectId;
         }   catch (Exception e){
-            addMessage(redirectAttributes, "导入失败,"+e.getMessage());
+            addMessage(redirectAttributes, "导入失败,"+ProjectUtil.dealMsg(e.getMessage()));
             return "redirect:/a/project/tem/list?id="+projectId;
         }
     }
 
 
-
-
-
-    /**
-     * 跳转至单个工程管理页面,用于在结算书查看页面的返回
-     * @param request
-     * @return
-     */
-//    @RequestMapping(value = "tolist")
-//    public String toList(HttpServletRequest request){
-//        String projectId = request.getParameter("projectId");
-//        return "redirect:/a/project/tem/list?projectId="+projectId;
-//    }
-
-
     /**
      * 单个工程管理页面  查看或修改工程信息
      * @param wbsProject  工程id与打开方式
@@ -165,7 +148,6 @@ public class ProjectTemController extends BaseController {
         return "modules/sg/projecttem/"+view;
     }
 
-
     /**
      * 检验工程下是否存在某项目名称
      * @param itemName      项目名称
@@ -200,7 +182,7 @@ public class ProjectTemController extends BaseController {
         AjaxJson j = new AjaxJson();
         try {
             WbsItem item = itemService.get(wbsItem.getId());
-            itemService.deleteItemOne(wbsItem);
+            itemService.deleteItemOne(item);
             j.setSuccess(true);
             j.setMsg(item.getProjectId());
         }catch (Exception e){
@@ -211,12 +193,4 @@ public class ProjectTemController extends BaseController {
     }
 
 
-//    /**
-//     * 从单个工程管理页面返回至 单项工程导入页面
-//     * @return
-//     */
-//    @RequestMapping("/return")
-//    public String returnto(){
-//      return  "modules/sg/projecttem/addItem2Form";
-//    }
 }

+ 91 - 0
src/main/java/com/jeeplus/modules/sg/substation/entity/FeeTransfer.java

@@ -0,0 +1,91 @@
+package com.jeeplus.modules.sg.substation.entity;
+
+import com.jeeplus.modules.sg.overheadline.entity.JkxlDetailFee;
+
+/**
+ * 数据转移类,当我们在结算书中找到一些特殊节点时,需要将金额归到指定节点
+ */
+public class FeeTransfer {
+
+    private JkxlDetailFee sourceFee;  //数据转移来源
+    private JkxlDetailFee desFee; //数据转移目标fee
+    private String desWbs; //数据转移目的节点wbs
+    private Double originalTotalCost;  //分布分项合计金额
+    private Double zjgcFee;  //直接工程费
+    private Double originalRgCost;  //分布分项前人工费
+    private Double originalCbrCost;  //分布分项前承包人采购费
+    private Double originalFbrCost;  //分布分项前发包人采购费
+    private Double originalJxCost;  //分部分项前机械费
+
+    public JkxlDetailFee getDesFee() {
+        return desFee;
+    }
+
+    public void setDesFee(JkxlDetailFee desFee) {
+        this.desFee = desFee;
+    }
+
+    public JkxlDetailFee getSourceFee() {
+        return sourceFee;
+    }
+
+    public void setSourceFee(JkxlDetailFee sourceFee) {
+        this.sourceFee = sourceFee;
+    }
+
+    public String getDesWbs() {
+        return desWbs;
+    }
+
+    public void setDesWbs(String desWbs) {
+        this.desWbs = desWbs;
+    }
+
+    public Double getOriginalTotalCost() {
+        return originalTotalCost;
+    }
+
+    public void setOriginalTotalCost(Double originalTotalCost) {
+        this.originalTotalCost = originalTotalCost;
+    }
+
+    public Double getZjgcFee() {
+        return zjgcFee;
+    }
+
+    public void setZjgcFee(Double zjgcFee) {
+        this.zjgcFee = zjgcFee;
+    }
+
+    public Double getOriginalRgCost() {
+        return originalRgCost;
+    }
+
+    public void setOriginalRgCost(Double originalRgCost) {
+        this.originalRgCost = originalRgCost;
+    }
+
+    public Double getOriginalCbrCost() {
+        return originalCbrCost;
+    }
+
+    public void setOriginalCbrCost(Double originalCbrCost) {
+        this.originalCbrCost = originalCbrCost;
+    }
+
+    public Double getOriginalFbrCost() {
+        return originalFbrCost;
+    }
+
+    public void setOriginalFbrCost(Double originalFbrCost) {
+        this.originalFbrCost = originalFbrCost;
+    }
+
+    public Double getOriginalJxCost() {
+        return originalJxCost;
+    }
+
+    public void setOriginalJxCost(Double originalJxCost) {
+        this.originalJxCost = originalJxCost;
+    }
+}

+ 62 - 7
src/main/java/com/jeeplus/modules/sg/substation/service/SubstationService.java

@@ -16,6 +16,7 @@ import com.jeeplus.modules.sg.overheadline.util.DoubleUtil;
 import com.jeeplus.modules.sg.overheadline.util.SettementUtil;
 import com.jeeplus.modules.sg.project.entity.WbsItem;
 import com.jeeplus.modules.sg.project.service.ItemService;
+import com.jeeplus.modules.sg.substation.entity.FeeTransfer;
 import com.jeeplus.modules.sg.substation.util.SubstationInfo;
 import com.jeeplus.modules.sg.substation.util.SubstationUtil;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
@@ -138,17 +139,18 @@ public class SubstationService {
                 double zgJz = zjgcJzTotal - aqwmJzFees[1] / (aqwmJzFees[0]/100);
                 jxslJz = zgJz / (fbrJzFee - zgJz); //建筑甲供材进项税率
             }
+            List<FeeTransfer> transferList = new ArrayList<>();
             //建筑部分基础数据
             jz = SubstationUtil.getTotalBaseInfo(jzqd,jzhz,"21000000",SubstationInfo.JZMX_BJZ);  //3 建筑工程费
             JkxlDetailFee zyscGc = SubstationUtil.getBaseInfo(jzqd,jzhz,"21100000",SubstationInfo.JZMX_ZYGC);  //4 主要生产工程
-            JkxlDetailFee zyscjz = SubstationUtil.getZyscjz(jzqd,jzhz);     //5 主要生产建筑
-            JkxlDetailFee pdzzjz = SubstationUtil.getPdzzjz(jzqd,jzhz);     //5 配电装置建筑
-            JkxlDetailFee gsxtjz = SubstationUtil.getSubBaseInfos(jzqd,jzhz,SubstationUtil.WBS_JZ_GSXTJZ_HUI,SubstationUtil.NODE_JZ_GSXTJZ_HUI,SubstationUtil.NODE_BELONG_ZY); //5 供水系统建筑
-            JkxlDetailFee xfxtjz = SubstationUtil.getSubBaseInfos(jzqd,jzhz,SubstationUtil.WBS_JZ_XFXT_HUI,SubstationUtil.NODE_JZ_XFXT_HUI,SubstationUtil.NODE_BELONG_ZY);  //5 消防系统建筑
+            JkxlDetailFee zyscjz = SubstationUtil.getZyscjz(jzqd,jzhz,transferList);     //5 主要生产建筑
+            JkxlDetailFee pdzzjz = SubstationUtil.getPdzzjz(jzqd,jzhz,transferList);     //5 配电装置建筑
+            JkxlDetailFee gsxtjz = SubstationUtil.getSubBaseInfos(jzqd,jzhz,SubstationUtil.WBS_JZ_GSXTJZ_HUI,SubstationUtil.NODE_JZ_GSXTJZ_HUI,SubstationUtil.NODE_BELONG_ZY,transferList); //5 供水系统建筑
+            JkxlDetailFee xfxtjz = SubstationUtil.getSubBaseInfos(jzqd,jzhz,SubstationUtil.WBS_JZ_XFXT_HUI,SubstationUtil.NODE_JZ_XFXT_HUI,SubstationUtil.NODE_BELONG_ZY,transferList);  //5 消防系统建筑
             JkxlDetailFee fzscGc = SubstationUtil.getBaseInfo(jzqd,jzhz,"21200000",SubstationInfo.JZMX_FZSCGC); //4 辅助生产工程
-            JkxlDetailFee fzscjz = SubstationUtil.getSubBaseInfos(jzqd,jzhz,SubstationUtil.WBS_JZ_FZSCJZ_HUI,SubstationUtil.NODE_JZ_FZSCJZ_HUI,SubstationUtil.NODE_BELONG_FZ); //5 辅助生产建筑
-            JkxlDetailFee zqxjz = SubstationUtil.getSubBaseInfos(jzqd,jzhz,SubstationUtil.WBS_JZ_ZQXJZ_HUI,SubstationUtil.NODE_JZ_ZQXJZ_HUI,SubstationUtil.NODE_BELONG_FZ); //5 站区性建筑
-            JkxlDetailFee tsgzw = SubstationUtil.getSubBaseInfos(jzqd,jzhz,SubstationUtil.WBS_JZ_TSGZW_HUI,SubstationUtil.NODE_JZ_TSGZW_HUI,SubstationUtil.NODE_BELONG_FZ); //5 特殊构筑物
+            JkxlDetailFee fzscjz = SubstationUtil.getSubBaseInfos(jzqd,jzhz,SubstationUtil.WBS_JZ_FZSCJZ_HUI,SubstationUtil.NODE_JZ_FZSCJZ_HUI,SubstationUtil.NODE_BELONG_FZ,transferList); //5 辅助生产建筑
+            JkxlDetailFee zqxjz = SubstationUtil.getSubBaseInfos(jzqd,jzhz,SubstationUtil.WBS_JZ_ZQXJZ_HUI,SubstationUtil.NODE_JZ_ZQXJZ_HUI,SubstationUtil.NODE_BELONG_FZ,transferList); //5 站区性建筑
+            JkxlDetailFee tsgzw = SubstationUtil.getSubBaseInfos(jzqd,jzhz,SubstationUtil.WBS_JZ_TSGZW_HUI,SubstationUtil.NODE_JZ_TSGZW_HUI,SubstationUtil.NODE_BELONG_FZ,transferList); //5 特殊构筑物
             JkxlDetailFee zqlh = SubstationUtil.getBaseInfo(jzqd,jzhz,"21240000",SubstationInfo.JZMX_ZQLH);  //5 站区绿化
             JkxlDetailFee dxGc = SubstationUtil.getDxgc(jzqd,jzhz);  //4 与站址有关的单项工程
             //整理节点树
@@ -159,6 +161,8 @@ public class SubstationService {
                 fzscGc.addSubNode(fzscjz).addSubNode(zqxjz).addSubNode(tsgzw).addSubNode(zqlh);
             }
             jz.addSubNode(zyscGc).addSubNode(fzscGc).addSubNode(dxGc);
+//            处理特殊规则1
+            dealTransfer(jz,transferList);
             //处理节点树的基础数据,以上级为准保证上下级统一
             DetailFeeUtil.dealBaseInfo(jz);
             //生成每个节点的非本体费用
@@ -257,6 +261,57 @@ public class SubstationService {
         }
     }
 
+    public void dealTransfer(JkxlDetailFee mainFee,List<FeeTransfer> transfers){
+        if(mainFee!=null && transfers!=null && transfers.size()>0){
+            for(FeeTransfer transfer:transfers){
+                dealTransfer(transfer,0);
+                transfer.setDesFee(supplyNode(mainFee,transfer.getDesWbs()));
+                dealTransfer(transfer,1);
+            }
+        }
+    }
+
+    public void dealTransfer(FeeTransfer transfer,int type){
+        if(type == 0){
+            JkxlDetailFee sourceFee = transfer.getSourceFee();
+            if(sourceFee!=null){
+                sourceFee.setOriginalTotalCost(DoubleUtil.add(sourceFee.getOriginalTotalCost(),-transfer.getOriginalTotalCost()));
+                sourceFee.setOriginalRgCost(DoubleUtil.add(sourceFee.getOriginalRgCost(),-transfer.getOriginalRgCost()));
+                sourceFee.setOriginalCbrCost(DoubleUtil.add(sourceFee.getOriginalCbrCost(),-transfer.getOriginalCbrCost()));
+                sourceFee.setOriginalFbrCost(DoubleUtil.add(sourceFee.getOriginalFbrCost(),-transfer.getOriginalFbrCost()));
+                sourceFee.setOriginalJxCost(DoubleUtil.add(sourceFee.getOriginalJxCost(),-transfer.getOriginalJxCost()));
+                sourceFee.setZjgcFee(DoubleUtil.add(sourceFee.getZjgcFee(),-transfer.getZjgcFee()));
+                transfer.setSourceFee(sourceFee.getParentFee());
+                dealTransfer(transfer,type);
+            }
+        }else{
+            JkxlDetailFee desFee = transfer.getDesFee();
+            if(desFee!=null){
+                desFee.setOriginalTotalCost(DoubleUtil.add(desFee.getOriginalTotalCost(),transfer.getOriginalTotalCost()));
+                desFee.setOriginalRgCost(DoubleUtil.add(desFee.getOriginalRgCost(),transfer.getOriginalRgCost()));
+                desFee.setOriginalCbrCost(DoubleUtil.add(desFee.getOriginalCbrCost(),transfer.getOriginalCbrCost()));
+                desFee.setOriginalFbrCost(DoubleUtil.add(desFee.getOriginalFbrCost(),transfer.getOriginalFbrCost()));
+                desFee.setOriginalJxCost(DoubleUtil.add(desFee.getOriginalJxCost(),transfer.getOriginalJxCost()));
+                desFee.setZjgcFee(DoubleUtil.add(desFee.getZjgcFee(),transfer.getZjgcFee()));
+                transfer.setDesFee(desFee.getParentFee());
+                dealTransfer(transfer,type);
+            }
+        }
+    }
+
+
+    public JkxlDetailFee supplyNode(JkxlDetailFee mainFee,String wbs){
+        JkxlDetailFee wbsFee = DetailFeeUtil.findFeeByWbs(mainFee,wbs);
+        if(wbsFee==null){
+            JkxlDetailFee element = overheadLineMapper.getElement(wbs);
+            wbsFee = new JkxlDetailFee();
+            wbsFee.setWbsCode(wbs);
+            JkxlDetailFee parentFee = supplyNode(mainFee,element.getParentNode());
+            parentFee.addSubNode(wbsFee);
+        }
+        return wbsFee;
+    }
+
     /**
      * 处理建筑,除本体外金额。包括措施费、规费、其他费、税金
      * @param mainFee   包含基础信息的节点对象

+ 207 - 16
src/main/java/com/jeeplus/modules/sg/substation/util/SubstationUtil.java

@@ -5,6 +5,7 @@ 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.util.DoubleUtil;
+import com.jeeplus.modules.sg.substation.entity.FeeTransfer;
 
 import java.util.*;
 import java.util.regex.Matcher;
@@ -120,6 +121,56 @@ public class SubstationUtil {
     public static final String[] NODE_AZ_ZWTX_HUI = {"站外通信","站外通信线路"};
 
 
+    public static final List<String> TRAN_RULE_ONE_LIST = new ArrayList(){
+        {
+            this.add("BT1404B17001");
+            this.add("BT1404B17003");
+            this.add("BT1404B17004");
+            this.add("BT1404B17008");
+            this.add("BT1404B17005");
+            this.add("BT1404B17009");
+            this.add("BT1404B17010");
+            this.add("BT2305A13001");
+            this.add("BT2305A19001");
+            this.add("BT2305B37001");
+            this.add("BT2305E19001");
+            this.add("BT2305G24002");
+            this.add("BT2305G22001");
+            this.add("BT2305G22002");
+            this.add("BT1404B18001");
+            this.add("BT1404B17002");
+            this.add("BT1404A13006");
+            this.add("BT1404B17006");
+            this.add("BT1404B17007");
+            this.add("BT1408B17001");
+            this.add("BT1408B17002");
+            this.add("BT1408B17003");
+            this.add("BT1408B17004");
+            this.add("BT1408B17005");
+            this.add("BT1408B17006");
+            this.add("BT1408B18001");
+            this.add("BT1408B19001");
+            this.add("B18001");
+            this.add("BT1202M31005");
+            this.add("M22001");
+            this.add("M20001");
+            this.add("M20002");
+        }
+    };
+
+    public static final Map<String,String> TRAN_RULE_TWO_MAP = new HashMap(){
+        {
+            this.put("母线桥支柱基础","2112A200");
+            this.put("主变压器油坑","21121200");
+            this.put("事故油池","2112H100");
+            this.put("220kVGIS基础","21126200");
+            this.put("110kVGIS基础","21127200");
+            this.put("防火墙","2112H100");
+            this.put("电容器基础","2112C400");
+            this.put("主变压器设备基础","21121200");
+            this.put("主变压器油坑及卵石","21121200");
+        }
+    };
 
 
     /**
@@ -207,9 +258,10 @@ public class SubstationUtil {
      * @param wbs  子节点wbs编码
      * @param nodes  子节点名称
      * @param type   节点归属,1:节点属于主要生产工程  2:节点属于辅助生产工程 3:与站址有关的单项工程
+     * @param transfers   特殊节点处理list,为空则不进行特殊处理
      * @return
      */
-    public static void getSubBaseInfos(ImportExcel qd,JkxlDetailFee mainFee,String mainNode,String[] wbs,String[] nodes,Integer type){
+    public static void getSubBaseInfos(ImportExcel qd, JkxlDetailFee mainFee, String mainNode, String[] wbs, String[] nodes, Integer type, List<FeeTransfer> transfers){
         if(mainFee == null){
             return ;
         }
@@ -241,6 +293,17 @@ public class SubstationUtil {
                         fee.setOriginalJxCost(DoubleUtil.add(fee.getOriginalJxCost(),doubles[4]));
                         totalSum = DoubleUtil.add(totalSum,doubles[0]);
                         leftNodes.remove(node);
+//                        处理已识别子节点的无编码子节点 找到需特殊处理节点
+                        if(transfers!=null){
+                            FeeTransfer transferOne = getTransferRuleOne(fee,node,qd,type);
+                            if(transferOne!=null){
+                                transfers.add(transferOne);
+                            }
+                            FeeTransfer transferTwo = getTransferRuleTwo(fee,node,doubles);
+                            if(transferTwo!=null){
+                                transfers.add(transferTwo);
+                            }
+                        }
                         break;
                     }
                 }
@@ -264,6 +327,17 @@ public class SubstationUtil {
                     firstSubFee.setOriginalFbrCost(DoubleUtil.add(firstSubFee.getOriginalFbrCost(),doubles[3]));
                     firstSubFee.setOriginalJxCost(DoubleUtil.add(firstSubFee.getOriginalJxCost(),doubles[4]));
                     totalSum = DoubleUtil.add(totalSum,doubles[0]);
+//                    处理未识别子节点 找到需特殊处理子节点
+                    if(transfers!=null){
+                        FeeTransfer transferOne = getTransferRuleOne(firstSubFee,node,qd,type);
+                        if(transferOne!=null){
+                            transfers.add(transferOne);
+                        }
+                        FeeTransfer transferTwo = getTransferRuleTwo(firstSubFee,node,doubles);
+                        if(transferTwo!=null){
+                            transfers.add(transferTwo);
+                        }
+                    }
                 }
             }
 //            子节点的直接工程费,用父节点直接工程费根据分部分项费用进行分摊,这里没有做子节点差额处理
@@ -271,8 +345,120 @@ public class SubstationUtil {
                 JkxlDetailFee fee = subFees.get(i);
                 fee.setZjgcFee(DoubleUtil.round2(mainFee.getZjgcFee()*fee.getOriginalTotalCost()/totalSum));
             }
-            mainFee.setNodes(subFees);
+//            处理特殊处理节点的直接工程费
+            if(transfers!=null&&transfers.size()>0){
+                for(FeeTransfer transfer:transfers){
+                    JkxlDetailFee parentFee = transfer.getSourceFee();
+                    transfer.setZjgcFee(DoubleUtil.round2(parentFee.getZjgcFee()*transfer.getOriginalTotalCost()/parentFee.getOriginalTotalCost()));
+                }
+            }
+//            mainFee.setNodes(subFees);
+            mainFee.addSubNodes(subFees);
+        }
+    }
+
+    public static void getSubBaseInfos(ImportExcel qd, JkxlDetailFee mainFee, String mainNode, String[] wbs, String[] nodes, Integer type){
+        getSubBaseInfos(qd,mainFee,mainNode,wbs,nodes,type,null);
+    }
+
+    private static FeeTransfer getTransferRuleOne(JkxlDetailFee sourceFee,String node,ImportExcel qd,int type){
+        int startRow = 0;
+        int lastRow = qd.getLastDataRowNum();
+        if(type==NODE_BELONG_ZY) {
+            for (int i = 0; i < lastRow; i++) {
+                String name = qd.getValue(i + 1, 2);
+                if (name.contains("辅助生产工程")) {
+                    lastRow = i + 1;
+                    break;
+                }
+            }
+            if(lastRow == qd.getLastDataRowNum()){
+                for (int i = 0; i < lastRow; i++) {
+                    String name = qd.getValue(i + 1, 1);
+                    if (name.contains("与站址有关的单项工程")) {
+                        lastRow = i + 1;
+                        break;
+                    }
+                }
+            }
+        }
+        if(type==NODE_BELONG_FZ){
+            for (int i = 0; i < lastRow; i++) {
+                String name = qd.getValue(i + 1, 2);
+                if (name.contains("辅助生产工程")) {
+                    startRow = i + 1;
+                    break;
+                }
+            }
+            for (int i = 0; i < lastRow; i++) {
+                String name = qd.getValue(i + 1, 2);
+                if (name.contains("与站址有关的单项工程")) {
+                    lastRow = i + 1;
+                    break;
+                }
+            }
+        }
+        if(type==NODE_BELONG_DX){
+            for (int i = 0; i < lastRow; i++) {
+                String name = qd.getValue(i + 1, 2);
+                if (name.contains("与站址有关的单项工程")) {
+                    startRow = i + 1;
+                    break;
+                }
+            }
+        }
+
+        FeeTransfer transfer = null;
+        boolean findNode = false;
+        for(int i=startRow;i<lastRow;i++){
+            String name = qd.getValue(i+1,2).trim();
+            if(findNode){
+                String code = qd.getValue(i+1,1);
+                if(getMark(name)!=null){
+                    break;
+                }
+                if(TRAN_RULE_ONE_LIST.contains(code.trim())){
+                    if(transfer == null){
+                        transfer = new FeeTransfer();
+                        transfer.setSourceFee(sourceFee);
+//                        变电站工程-建筑工程费-配电装置建筑-1000kV构架及设备基础-设备支架及基础
+                        transfer.setDesWbs("21122200");
+                    }
+                    transfer.setOriginalTotalCost(DoubleUtil.add(transfer.getOriginalTotalCost(),qd.getDouble(i+1,12)));
+                    transfer.setOriginalRgCost(DoubleUtil.add(transfer.getOriginalRgCost(),qd.getDouble(i+1,13)));
+                    transfer.setOriginalCbrCost(DoubleUtil.add(transfer.getOriginalCbrCost(),qd.getDouble(i+1,14)));
+                    transfer.setOriginalFbrCost(DoubleUtil.add(transfer.getOriginalFbrCost(),qd.getDouble(i+1,15)));
+                    transfer.setOriginalJxCost(DoubleUtil.add(transfer.getOriginalJxCost(),qd.getDouble(i+1,17)));
+                }
+            }else if(name.trim().equals(node)){
+                findNode = true;
+            }
         }
+        return transfer;
+    }
+
+    private static FeeTransfer getTransferRuleTwo(JkxlDetailFee sourceFee,String node,double[] doubles){
+        String content = null;
+        String cut = "\\s+";
+        try {
+            content = node.trim().split(cut)[1].trim();
+        } catch (Exception e) {
+            throw new RuntimeException("节点:'"+node+"'格式错误");
+        }
+        for(String key:TRAN_RULE_TWO_MAP.keySet()){
+            if(key.equals(content)){
+                FeeTransfer transfer = new FeeTransfer();
+                transfer.setSourceFee(sourceFee);
+                transfer.setDesWbs(TRAN_RULE_TWO_MAP.get(key));
+                transfer.setOriginalTotalCost(doubles[0]);
+                transfer.setOriginalRgCost(doubles[1]);
+                transfer.setOriginalCbrCost(doubles[2]);
+                transfer.setOriginalFbrCost(doubles[3]);
+                transfer.setOriginalJxCost(doubles[4]);
+                return transfer;
+            }
+        }
+        return null;
     }
 
 
@@ -287,17 +473,21 @@ public class SubstationUtil {
      * @param type   节点归属,1:节点属于主要生产工程  2:节点属于辅助生产工程 3:与站址有关的单项工程
      * @return
      */
-    public static JkxlDetailFee getSubBaseInfos(ImportExcel qd,ImportExcel hz,String[] wbs,String[] nodes,Integer type){
+    public static JkxlDetailFee getSubBaseInfos(ImportExcel qd,ImportExcel hz,String[] wbs,String[] nodes,Integer type,List<FeeTransfer> transfers){
         JkxlDetailFee mainFee = getBaseInfo(qd,hz,wbs[0],nodes[0]);
         if(mainFee == null){
             return null;
         }
         String[] subWbs = Arrays.copyOfRange(wbs,1,wbs.length);
         String[] subNodes = Arrays.copyOfRange(nodes,1,nodes.length);
-        getSubBaseInfos(qd,mainFee,nodes[0],subWbs,subNodes,type);
+        getSubBaseInfos(qd,mainFee,nodes[0],subWbs,subNodes,type,transfers);
         return mainFee;
     }
 
+    public static JkxlDetailFee getSubBaseInfos(ImportExcel qd,ImportExcel hz,String[] wbs,String[] nodes,Integer type){
+        return getSubBaseInfos(qd,hz,wbs,nodes,type,null);
+    }
+
 
     /**
      * 获取建筑‘主要生产建筑’及其子节点基础数据
@@ -305,22 +495,23 @@ public class SubstationUtil {
      * @param jzhz  建筑工程汇总表
      * @return
      */
-    public static JkxlDetailFee getZyscjz(ImportExcel jzqd, ImportExcel jzhz){
-        JkxlDetailFee mainFee = getSubBaseInfos(jzqd,jzhz,WBS_JZ_ZYSCJZ_HUI,NODE_JZ_ZYSCJZ_HUI,NODE_BELONG_ZY);
+    public static JkxlDetailFee getZyscjz(ImportExcel jzqd, ImportExcel jzhz,List<FeeTransfer> transfers){
+        JkxlDetailFee mainFee = getSubBaseInfos(jzqd,jzhz,WBS_JZ_ZYSCJZ_HUI,NODE_JZ_ZYSCJZ_HUI,NODE_BELONG_ZY,transfers);
         if(mainFee!=null){
             List<JkxlDetailFee> subFees = mainFee.getNodes();
             List<JkxlDetailFee> addFees = new ArrayList<>();
+//            与wbs节点相比 结算书中所有继电器室与配电装置室多了一个父节点 需要把这个父节点处理掉
             if(subFees!=null&&subFees.size()>0){
                 for(int i=0;i<subFees.size();i++){
                     JkxlDetailFee fee = subFees.get(i);
                     if(fee.getWbsCode().equals(MADE_WBS_JDQS)){
-                        getSubBaseInfos(jzqd,fee,"继电器室",WBS_JZ_JDQS,NODE_JZ_JDQS,NODE_BELONG_ZY);
+                        getSubBaseInfos(jzqd,fee,"继电器室",WBS_JZ_JDQS,NODE_JZ_JDQS,NODE_BELONG_ZY,transfers);
                         addFees.addAll(fee.getNodes());
                         subFees.remove(fee);
                         continue;
                     }
                     if(fee.getWbsCode().equals(MADE_WBS_PDZZS)){
-                        getSubBaseInfos(jzqd,fee,"配电装置室",WBS_JZ_PDZZS,NODE_JZ_PDZZS,NODE_BELONG_ZY);
+                        getSubBaseInfos(jzqd,fee,"配电装置室",WBS_JZ_PDZZS,NODE_JZ_PDZZS,NODE_BELONG_ZY,transfers);
                         addFees.addAll(fee.getNodes());
                         subFees.remove(fee);
                     }
@@ -337,8 +528,8 @@ public class SubstationUtil {
      * @param jzhz  建筑工程汇总表
      * @return
      */
-    public static JkxlDetailFee getPdzzjz(ImportExcel jzqd, ImportExcel jzhz){
-        JkxlDetailFee mainFee = getSubBaseInfos(jzqd,jzhz,WBS_JZ_PDZZJZ_HUI,NODE_JZ_PDZZJZ_HUI,NODE_BELONG_ZY);
+    public static JkxlDetailFee getPdzzjz(ImportExcel jzqd, ImportExcel jzhz,List<FeeTransfer> transfers){
+        JkxlDetailFee mainFee = getSubBaseInfos(jzqd,jzhz,WBS_JZ_PDZZJZ_HUI,NODE_JZ_PDZZJZ_HUI,NODE_BELONG_ZY,transfers);
         if(mainFee!=null){
             List<JkxlDetailFee> subFees = mainFee.getNodes();
             if(subFees!=null&&subFees.size()>0){
@@ -346,27 +537,27 @@ public class SubstationUtil {
                 for(int i=0;i<subFees.size();i++){
                     JkxlDetailFee fee = subFees.get(i);
                     if(fee.getWbsCode().equals("21121000")){
-                        getSubBaseInfos(jzqd,fee,"主变压器系统",WBS_JZ_ZBYQXT,NODE_JZ_ZBYQXT,NODE_BELONG_ZY);
+                        getSubBaseInfos(jzqd,fee,"主变压器系统",WBS_JZ_ZBYQXT,NODE_JZ_ZBYQXT,NODE_BELONG_ZY,transfers);
                         continue; //处理主变压器系统子节点
                     }
                     if(fee.getWbsCode().equals("2112B000")){
-                        getSubBaseInfos(jzqd,fee,"高压电抗器系统",WBS_JZ_GYDKQXT,NODE_JZ_GYDKQXT,NODE_BELONG_ZY);
+                        getSubBaseInfos(jzqd,fee,"高压电抗器系统",WBS_JZ_GYDKQXT,NODE_JZ_GYDKQXT,NODE_BELONG_ZY,transfers);
                         continue; //处理高压电抗器系统子节点
                     }
                     if(fee.getWbsCode().equals("2112C000")){
-                        getSubBaseInfos(jzqd,fee,"串联补偿系统",WBS_JZ_CLBCXT,NODE_JZ_CLBCXT,NODE_BELONG_ZY);
+                        getSubBaseInfos(jzqd,fee,"串联补偿系统",WBS_JZ_CLBCXT,NODE_JZ_CLBCXT,NODE_BELONG_ZY,transfers);
                         continue; //处理串联补偿系统子节点
                     }
                     if(fee.getWbsCode().equals("2112G000")){
-                        getSubBaseInfos(jzqd,fee,"静止无功补偿装置",WBS_JZ_JZWGBCZZ,NODE_JZ_JZWGBCZZ,NODE_BELONG_ZY);
+                        getSubBaseInfos(jzqd,fee,"静止无功补偿装置",WBS_JZ_JZWGBCZZ,NODE_JZ_JZWGBCZZ,NODE_BELONG_ZY,transfers);
                         continue; //处理静止无功补偿装置子节点
                     }
                     if(fee.getWbsCode().equals("2112H000")){
-                        getSubBaseInfos(jzqd,fee,"站用变压器系统",WBS_JZ_ZYBYQXT,NODE_JZ_ZYBYQXT,NODE_BELONG_ZY);
+                        getSubBaseInfos(jzqd,fee,"站用变压器系统",WBS_JZ_ZYBYQXT,NODE_JZ_ZYBYQXT,NODE_BELONG_ZY,transfers);
                         continue; //处理站用变压器系统子节点
                     }
                     if(fee.getWbsCode().equals(MADE_WBS_GJJSBJC)){
-                        getSubBaseInfos(jzqd,fee,"构架及设备基础",WBS_JZ_GJJSBJC,NODE_JZ_GJJSBJC,NODE_BELONG_ZY);
+                        getSubBaseInfos(jzqd,fee,"构架及设备基础",WBS_JZ_GJJSBJC,NODE_JZ_GJJSBJC,NODE_BELONG_ZY,transfers);
                         subFees.remove(fee);
                         addFees = gjjsbjcDeal(fee.getNodes()); //处理构架及设备基础
                     }

二进制
src/main/webapp/static/template/template.xlsx


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

@@ -84,7 +84,8 @@
             $("#view_input").val(solr_file);
             $("#mydiv1").text(name);
             $("#mydiv2").text("");
-            if(nameHz == "手动模板.xlsx"){
+            var reg = new RegExp("^手动模板")
+            if(reg.test(nameHz)){
                 $("#mydiv2").text("无");
             }
         })

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

@@ -5,6 +5,8 @@
 <head>
     <title>工程管理</title>
     <meta http-equiv="X-UA-Compatible" content="IE=edge chrome=1">
+    <meta http-equiv="Pragma" content="no-cache">
+    <meta http-equiv="cache-control" content="no-cache">
     <link rel="stylesheet" href="${ctxp}/static/plugin/assets/layui/css/layui.css">
     <link rel="stylesheet" href="${ctxp}/static/plugin/assets/common.css"/>
     <link rel="stylesheet" href="${ctxp}/static/plugin/assets/vermeit.css">
@@ -24,9 +26,10 @@
     .layui-table-cell {height: inherit;}
 </style>
 <body style="height: 100%;line-height: 100%">
+<sys:message content="${message}"/>
 <input style="display: none;" id="addtext" value=""/>
 <div class="layui-main-bgc">
-    <sys:message content="${message}"/>
+    <%--<sys:message content="${message}"/>--%>
     <div class="layui-row layui-col-space15">
         <div class="layui-col-md12">
             <div class="layui-card">

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

@@ -68,7 +68,9 @@ $(document).ready(function() {
         $("#view_input").val(solr_file);
         $("#mydiv1").text(name);
         $("#mydiv2").text("");
-        if(nameHz == "手动模板.xlsx"){
+
+        var reg = new RegExp("^手动模板")
+        if(reg.test(nameHz)){
             $("#mydiv2").text("无");
         }
     })

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

@@ -23,7 +23,8 @@
                 //添加文件到数组
                 arrayFile.push(file);
                 //拼接生成表格
-                    if(file.name == "手动模板.xlsx"){
+                    var reg = new RegExp("^手动模板")
+                    if(reg.test(file.name)){
                             var tr = $(['<tr id='+index+'>'
                             ,'<td hidden><div class="td_id">'+index+'</div></td>'
                             ,'<td><div contenteditable="true" class="mydiv1 mydiv" placeholder="请输入项目名称">'+file.name.split(".")[0]+'</div></td>'

+ 7 - 7
src/main/webapp/webpage/modules/sg/projecttem/manageList.js

@@ -21,18 +21,18 @@
     treeLinkage: false,
     elem: '#table1',
     cols: [[ //生成表头
-        {field: 'gcmc',width:200,title: '工程名称'},
+        {field: 'gcmc',minWidth:180,width:200,title: '工程名称'},
         {field:'xmsl',width:180,title:"结算书数量"},
         {field:'cjsq',width:200,title: '创建时期'},
-        {field:'djr',width:200,title:'登记人'},
+        {field:'djr',width:150,title:'登记人'},
         {field:'op',align:'center',title:"操作",minWidth:330,templet:function(d){
     ////对操作进行初始化
     var xml = "";
     if(d.status==1){ //工程 表头
-    xml += "<div><a class='layui-btn layui-btn-primary layui-btn-xs' onclick=\"look( '${ctx}/project/tem/form?id=" + d.id + "&tabId=1')\">查看</a>"
-        +"<a class='layui-btn layui-btn-xs'  onclick=\"update( '${ctx}/project/tem/form?id=" + d.id + "&tabId=2')\">修改</a>"
-        +"<a class='layui-btn layui-btn-normal layui-btn-xs' lay-event='add'>添加结算书</a>"
-        +"<a  class='layui-btn layui-btn-warm layui-btn-xs'onclick=\"withhold( '${ctx}/project/withholdform?id=" + d.id + "&tabId=1')\">财务处理</a></div>";
+    xml += "<a style='margin-top: 3px;' class='layui-btn layui-btn-primary layui-btn-xs' onclick=\"look( '${ctx}/project/tem/form?id=" + d.id + "&tabId=1')\">查看</a>"
+        +"<a style='margin-top: 3px;' class='layui-btn layui-btn-xs'  onclick=\"update( '${ctx}/project/tem/form?id=" + d.id + "&tabId=2')\">修改</a>"
+        +"<a style='margin-top: 3px;' class='layui-btn layui-btn-normal layui-btn-xs' lay-event='add'>添加结算书</a>"
+        +"<a  style='margin-top: 3px;' class='layui-btn layui-btn-warm layui-btn-xs'onclick=\"withhold( '${ctx}/project/withholdform?id=" + d.id + "&tabId=1')\">财务处理</a>";
         // +"<a  class='layui-btn layui-btn-warm layui-btn-xs'onclick=\"materialOffset( '${ctx}/project/materialOffsetForm?id=" + d.id + "&tabId=1')\">甲供材抵扣</a>"
         // +"<a  class='layui-btn layui-btn-warm layui-btn-xs'onclick=\"taxDeductions( '${ctx}/project/taxDeductionsForm?id=" + d.id + "&tabId=1')\">税额扣减</a>";
     }
@@ -40,7 +40,7 @@
         xml +="<span class='myspan'>操作</span>";
     }
     if(d.status==3){
-        xml +="<a class='layui-btn layui-btn-xs' href=\"${ctx}/jkxl/list?id="+d.id+"&type="+d.type+"&projectId="+d.pid+"\">编辑</a>";
+        xml +="<a style='margin-top: 3px;'  class='layui-btn layui-btn-xs' href=\"${ctx}/jkxl/list?id="+d.id+"&type="+d.type+"&projectId="+d.pid+"\">编辑</a>";
     }
 
         return xml;