ソースを参照

linux文件路径

lem 4 年 前
コミット
5eacd8b237
36 ファイル変更7199 行追加0 行削除
  1. 772 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/ApplicationFor.java
  2. 172 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/BiddingContract.java
  3. 115 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/DesignStage.java
  4. 29 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/EarlyEngineering.java
  5. 341 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/LegalCompliance.java
  6. 166 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/ReviewStage.java
  7. 33 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/ApplicationForMapper.java
  8. 33 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/BiddingContractMapper.java
  9. 35 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/DesignStageMapper.java
  10. 34 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/ReviewStageMapper.java
  11. 377 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/xml/ApplicationForMapper.xml
  12. 193 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/xml/BiddingContractMapper.xml
  13. 179 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/xml/DesignStageMapper.xml
  14. 189 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/xml/ReviewStageMapper.xml
  15. 78 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/ApplicationForService.java
  16. 78 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/BiddingContractService.java
  17. 80 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/DesignStageService.java
  18. 78 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/ReviewStageService.java
  19. 242 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/ApplicationForController.java
  20. 242 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/BiddingContractController.java
  21. 250 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/DesignStageController.java
  22. 242 0
      src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/ReviewStageController.java
  23. 230 0
      src/main/java/com/jeeplus/modules/filing/filingImages/service/FilingImagesService.java
  24. 23 0
      src/main/java/com/jeeplus/modules/filing/filingImages/web/FilingImagesController.java
  25. 356 0
      src/main/webapp/webpage/modules/filing/applicationFor/applicationForForm.jsp
  26. 769 0
      src/main/webapp/webpage/modules/filing/applicationFor/applicationForList.js
  27. 87 0
      src/main/webapp/webpage/modules/filing/applicationFor/applicationForList.jsp
  28. 124 0
      src/main/webapp/webpage/modules/filing/biddingContract/biddingContractForm.jsp
  29. 349 0
      src/main/webapp/webpage/modules/filing/biddingContract/biddingContractList.js
  30. 87 0
      src/main/webapp/webpage/modules/filing/biddingContract/biddingContractList.jsp
  31. 98 0
      src/main/webapp/webpage/modules/filing/designStage/designStageForm.jsp
  32. 367 0
      src/main/webapp/webpage/modules/filing/designStage/designStageList.js
  33. 87 0
      src/main/webapp/webpage/modules/filing/designStage/designStageList.jsp
  34. 145 0
      src/main/webapp/webpage/modules/filing/reviewStage/reviewStageForm.jsp
  35. 437 0
      src/main/webapp/webpage/modules/filing/reviewStage/reviewStageList.js
  36. 82 0
      src/main/webapp/webpage/modules/filing/reviewStage/reviewStageList.jsp

+ 772 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/ApplicationFor.java

@@ -0,0 +1,772 @@
+package com.jeeplus.modules.filing.earlyEngineering.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.google.common.collect.Lists;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 报建审批实体类
+ * */
+public class ApplicationFor extends DataEntity<ApplicationFor> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+    /**
+     * 用地预审意见(变电站) 文号:
+     * */
+    private String landNo;
+    /**
+     * 用地预审意见(变电站) 日期:
+     * */
+    private Date landDate;
+    /**
+     * 用地预审意见(变电站) 附件:
+     * */
+    private String landAnnex;
+    /**
+     * 环评批复(变电站、线路) 文号:
+     * */
+    private String eiaNo;
+    /**
+     * 环评批复(变电站、线路) 日期:
+     * */
+    private Date eiaDate;
+    /**
+     * 环评批复(变电站、线路) 附件:
+     * */
+    private String eiaAnnex;
+    /**
+     * 环评验收文号及日期 文号:
+     * */
+    private String acceptanceNo;
+    /**
+     * 环评验收文号及日期 日期:
+     * */
+    private Date acceptanceDate;
+    /**
+     * 环评验收文号及日期 附件:
+     * */
+    private String acceptanceAnnex;
+    /**
+     * 水保批复(变电站、线路) 文号:
+     * */
+    private String replyNo;
+    /**
+     * 水保批复(变电站、线路) 日期:
+     * */
+    private Date replyDate;
+    /**
+     * 水保批复(变电站、线路) 附件:
+     * */
+    private String replyAnnex;
+    /**
+     * 水保验收文号及日期 文号:
+     * */
+    private String soilNo;
+    /**
+     * 水保验收文号及日期 日期:
+     * */
+    private Date soilDate;
+    /**
+     * 水保验收文号及日期 附件:
+     * */
+    private String soilannex;
+    /**
+     * 压覆矿藏复函(变电站) 文号:
+     * */
+    private String depositNo;
+    /**
+     * 压覆矿藏复函(变电站) 日期:
+     * */
+    private Date depositDate;
+    /**
+     * 压覆矿藏复函(变电站) 附件:
+     * */
+    private String depositAnnex;
+    /**
+     * 地灾评估备案表(变电站) 文号:
+     * */
+    private String recordNo;
+    /**
+     * 地灾评估备案表(变电站) 日期:
+     * */
+    private Date recordDate;
+    /**
+     * 地灾评估备案表(变电站) 附件:
+     * */
+    private String recordAnnex;
+    /**
+     * 选址意见书(变电站) 文号:
+     * */
+    private String siteProposalNo;
+    /**
+     * 选址意见书(变电站) 日期:
+     * */
+    private Date siteProposalDate;
+    /**
+     * 选址意见书(变电站) 附件:
+     * */
+    private String siteProposalAnnex;
+    /**
+     * 线路路径规划意见 文号:
+     * */
+    private String planningNo;
+    /**
+     * 线路路径规划意见 日期:
+     * */
+    private Date planningDate;
+    /**
+     * 线路路径规划意见 附件:
+     * */
+    private String planningAnnex;
+    /**
+     * 用地规划许可证 文号:
+     * */
+    private String usePlanNo;
+    /**
+     * 用地规划许可证 日期:
+     * */
+    private Date usePlanDate;
+    /**
+     * 用地规划许可证 附件:
+     * */
+    private String usePlanAnnex;
+    /**
+     * 征地补偿批复 文号:
+     * */
+    private String requisitonNo;
+    /**
+     * 征地补偿批复 日期:
+     * */
+    private Date requisitonDate;
+    /**
+     * 征地补偿批复 附件:
+     * */
+    private String requisitonAnnex;
+    /**
+     * 建设用地批准书 文号:
+     * */
+    private String conLandNo;
+    /**
+     * 建设用地批准书 日期:
+     * */
+    private Date conLandDate;
+    /**
+     * 建设用地批准书 附件:
+     * */
+    private String conLandAnnex;
+    /**
+     * 划拨决定书 文号:
+     * */
+    private String transferNo;
+    /**
+     * 划拨决定书 日期:
+     * */
+    private Date transferDate;
+    /**
+     * 划拨决定书 附件:
+     * */
+    private String transferAnnex;
+    /**
+     * 土地证(变电站) 文号:
+     * */
+    private String certificateNo;
+    /**
+     * 土地证(变电站) 日期:
+     * */
+    private Date certificateDate;
+    /**
+     * 土地证(变电站) 附件:
+     * */
+    private String certificateAnnex;
+    /**
+     * 建设工程规划许可证(变电站) 文号:
+     * */
+    private String permitNo;
+    /**
+     * 建设工程规划许可证(变电站) 日期:
+     * */
+    private Date permitDate;
+    /**
+     * 建设工程规划许可证(变电站) 附件:
+     * */
+    private String permitAnnex;
+    /**
+     * 消防设计审查/备案意见(变电站) 文号:
+     * */
+    private String fireProNo;
+    /**
+     * 消防设计审查/备案意见(变电站) 日期:
+     * */
+    private Date fireProdate;
+    /**
+     * 消防设计审查/备案意见(变电站) 附件:
+     * */
+    private String fireProAnnex;
+    /**
+     * 消防验收/备案意见(变电站) 文号:
+     * */
+    private String fireAccNo;
+    /**
+     * 消防验收/备案意见(变电站) 日期:
+     * */
+    private Date fireAccDate;
+    /**
+     * 消防验收/备案意见(变电站) 附件:
+     * */
+    private String fireAccAnnex;
+    /**
+     * 不动产权证 文号:
+     * */
+    private String estateNo;
+    /**
+     * 不动产权证 日期:
+     * */
+    private Date estateDate;
+    /**
+     * 不动产权证 附件:
+     * */
+    private String estateAnnex;
+
+    /**
+     * 子类数据集合
+     * */
+    private List<ApplicationFor> childList = Lists.newArrayList();
+
+    @ExcelField(title="项目编码", align=2, sort=1)
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    @ExcelField(title="单体编码", align=2, sort=2)
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    @ExcelField(title="用地预审意见(变电站) 文号", align=2, sort=4)
+    public String getLandNo() {
+        return landNo;
+    }
+
+    public void setLandNo(String landNo) {
+        this.landNo = landNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="用地预审意见(变电站) 日期", align=2, sort=5)
+    public Date getLandDate() {
+        return landDate;
+    }
+
+    public void setLandDate(Date landDate) {
+        this.landDate = landDate;
+    }
+
+    public String getLandAnnex() {
+        return landAnnex;
+    }
+
+    public void setLandAnnex(String landAnnex) {
+        this.landAnnex = landAnnex;
+    }
+
+    @ExcelField(title="环评批复(变电站、线路) 文号", align=2, sort=6)
+    public String getEiaNo() {
+        return eiaNo;
+    }
+
+    public void setEiaNo(String eiaNo) {
+        this.eiaNo = eiaNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="环评批复(变电站、线路) 日期", align=2, sort=7)
+    public Date getEiaDate() {
+        return eiaDate;
+    }
+
+    public void setEiaDate(Date eiaDate) {
+        this.eiaDate = eiaDate;
+    }
+
+    public String getEiaAnnex() {
+        return eiaAnnex;
+    }
+
+    public void setEiaAnnex(String eiaAnnex) {
+        this.eiaAnnex = eiaAnnex;
+    }
+
+    @ExcelField(title="环评验收文号及日期 文号", align=2, sort=8)
+    public String getAcceptanceNo() {
+        return acceptanceNo;
+    }
+
+    public void setAcceptanceNo(String acceptanceNo) {
+        this.acceptanceNo = acceptanceNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="环评验收文号及日期 日期", align=2, sort=9)
+    public Date getAcceptanceDate() {
+        return acceptanceDate;
+    }
+
+    public void setAcceptanceDate(Date acceptanceDate) {
+        this.acceptanceDate = acceptanceDate;
+    }
+
+    public String getAcceptanceAnnex() {
+        return acceptanceAnnex;
+    }
+
+    public void setAcceptanceAnnex(String acceptanceAnnex) {
+        this.acceptanceAnnex = acceptanceAnnex;
+    }
+
+    @ExcelField(title="水保批复(变电站、线路) 文号", align=2, sort=10)
+    public String getReplyNo() {
+        return replyNo;
+    }
+
+    public void setReplyNo(String replyNo) {
+        this.replyNo = replyNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="水保批复(变电站、线路) 日期", align=2, sort=11)
+    public Date getReplyDate() {
+        return replyDate;
+    }
+
+    public void setReplyDate(Date replyDate) {
+        this.replyDate = replyDate;
+    }
+
+    public String getReplyAnnex() {
+        return replyAnnex;
+    }
+
+    public void setReplyAnnex(String replyAnnex) {
+        this.replyAnnex = replyAnnex;
+    }
+
+    @ExcelField(title="水保验收文号及日期 文号", align=2, sort=12)
+    public String getSoilNo() {
+        return soilNo;
+    }
+
+    public void setSoilNo(String soilNo) {
+        this.soilNo = soilNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="水保验收文号及日期 日期", align=2, sort=13)
+    public Date getSoilDate() {
+        return soilDate;
+    }
+
+    public void setSoilDate(Date soilDate) {
+        this.soilDate = soilDate;
+    }
+
+    public String getSoilannex() {
+        return soilannex;
+    }
+
+    public void setSoilannex(String soilannex) {
+        this.soilannex = soilannex;
+    }
+
+    @ExcelField(title="压覆矿藏复函(变电站) 文号", align=2, sort=14)
+    public String getDepositNo() {
+        return depositNo;
+    }
+
+    public void setDepositNo(String depositNo) {
+        this.depositNo = depositNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="压覆矿藏复函(变电站) 日期", align=2, sort=15)
+    public Date getDepositDate() {
+        return depositDate;
+    }
+
+    public void setDepositDate(Date depositDate) {
+        this.depositDate = depositDate;
+    }
+
+    public String getDepositAnnex() {
+        return depositAnnex;
+    }
+
+    public void setDepositAnnex(String depositAnnex) {
+        this.depositAnnex = depositAnnex;
+    }
+
+    @ExcelField(title="地灾评估备案表(变电站) 文号", align=2, sort=16)
+    public String getRecordNo() {
+        return recordNo;
+    }
+
+    public void setRecordNo(String recordNo) {
+        this.recordNo = recordNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="地灾评估备案表(变电站) 日期", align=2, sort=17)
+    public Date getRecordDate() {
+        return recordDate;
+    }
+
+    public void setRecordDate(Date recordDate) {
+        this.recordDate = recordDate;
+    }
+
+    public String getRecordAnnex() {
+        return recordAnnex;
+    }
+
+    public void setRecordAnnex(String recordAnnex) {
+        this.recordAnnex = recordAnnex;
+    }
+
+    public String getSiteProposalNo() {
+        return siteProposalNo;
+    }
+
+    @ExcelField(title="选址意见书(变电站) 文号", align=2, sort=18)
+    public void setSiteProposalNo(String siteProposalNo) {
+        this.siteProposalNo = siteProposalNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="选址意见书(变电站) 日期", align=2, sort=19)
+    public Date getSiteProposalDate() {
+        return siteProposalDate;
+    }
+
+    public void setSiteProposalDate(Date siteProposalDate) {
+        this.siteProposalDate = siteProposalDate;
+    }
+
+    public String getSiteProposalAnnex() {
+        return siteProposalAnnex;
+    }
+
+    public void setSiteProposalAnnex(String siteProposalAnnex) {
+        this.siteProposalAnnex = siteProposalAnnex;
+    }
+
+    @ExcelField(title="线路路径规划意见 文号", align=2, sort=20)
+    public String getPlanningNo() {
+        return planningNo;
+    }
+
+    public void setPlanningNo(String planningNo) {
+        this.planningNo = planningNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="线路路径规划意见 日期", align=2, sort=21)
+    public Date getPlanningDate() {
+        return planningDate;
+    }
+
+    public void setPlanningDate(Date planningDate) {
+        this.planningDate = planningDate;
+    }
+
+    public String getPlanningAnnex() {
+        return planningAnnex;
+    }
+
+    public void setPlanningAnnex(String planningAnnex) {
+        this.planningAnnex = planningAnnex;
+    }
+
+    @ExcelField(title="用地规划许可证 文号", align=2, sort=22)
+    public String getUsePlanNo() {
+        return usePlanNo;
+    }
+
+    public void setUsePlanNo(String usePlanNo) {
+        this.usePlanNo = usePlanNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="用地规划许可证 日期", align=2, sort=23)
+    public Date getUsePlanDate() {
+        return usePlanDate;
+    }
+
+    public void setUsePlanDate(Date usePlanDate) {
+        this.usePlanDate = usePlanDate;
+    }
+
+    public String getUsePlanAnnex() {
+        return usePlanAnnex;
+    }
+
+    public void setUsePlanAnnex(String usePlanAnnex) {
+        this.usePlanAnnex = usePlanAnnex;
+    }
+
+    @ExcelField(title="征地补偿批复 文号", align=2, sort=24)
+    public String getRequisitonNo() {
+        return requisitonNo;
+    }
+
+    public void setRequisitonNo(String requisitonNo) {
+        this.requisitonNo = requisitonNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="征地补偿批复 日期", align=2, sort=25)
+    public Date getRequisitonDate() {
+        return requisitonDate;
+    }
+
+    public void setRequisitonDate(Date requisitonDate) {
+        this.requisitonDate = requisitonDate;
+    }
+
+    public String getRequisitonAnnex() {
+        return requisitonAnnex;
+    }
+
+    public void setRequisitonAnnex(String requisitonAnnex) {
+        this.requisitonAnnex = requisitonAnnex;
+    }
+
+    @ExcelField(title="建设用地批准书 文号", align=2, sort=26)
+    public String getConLandNo() {
+        return conLandNo;
+    }
+
+    public void setConLandNo(String conLandNo) {
+        this.conLandNo = conLandNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="建设用地批准书 日期", align=2, sort=27)
+    public Date getConLandDate() {
+        return conLandDate;
+    }
+
+    public void setConLandDate(Date conLandDate) {
+        this.conLandDate = conLandDate;
+    }
+
+    public String getConLandAnnex() {
+        return conLandAnnex;
+    }
+
+    public void setConLandAnnex(String conLandAnnex) {
+        this.conLandAnnex = conLandAnnex;
+    }
+
+    @ExcelField(title="划拨决定书 文号", align=2, sort=28)
+    public String getTransferNo() {
+        return transferNo;
+    }
+
+    public void setTransferNo(String transferNo) {
+        this.transferNo = transferNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="划拨决定书 日期", align=2, sort=29)
+    public Date getTransferDate() {
+        return transferDate;
+    }
+
+    public void setTransferDate(Date transferDate) {
+        this.transferDate = transferDate;
+    }
+
+    public String getTransferAnnex() {
+        return transferAnnex;
+    }
+
+    public void setTransferAnnex(String transferAnnex) {
+        this.transferAnnex = transferAnnex;
+    }
+
+    @ExcelField(title="土地证(变电站) 文号", align=2, sort=30)
+    public String getCertificateNo() {
+        return certificateNo;
+    }
+
+    public void setCertificateNo(String certificateNo) {
+        this.certificateNo = certificateNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="土地证(变电站) 日期", align=2, sort=31)
+    public Date getCertificateDate() {
+        return certificateDate;
+    }
+
+    public void setCertificateDate(Date certificateDate) {
+        this.certificateDate = certificateDate;
+    }
+
+    public String getCertificateAnnex() {
+        return certificateAnnex;
+    }
+
+    public void setCertificateAnnex(String certificateAnnex) {
+        this.certificateAnnex = certificateAnnex;
+    }
+
+    @ExcelField(title="建设工程规划许可证(变电站) 文号", align=2, sort=32)
+    public String getPermitNo() {
+        return permitNo;
+    }
+
+    public void setPermitNo(String permitNo) {
+        this.permitNo = permitNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="建设工程规划许可证(变电站) 日期", align=2, sort=33)
+    public Date getPermitDate() {
+        return permitDate;
+    }
+
+    public void setPermitDate(Date permitDate) {
+        this.permitDate = permitDate;
+    }
+
+    public String getPermitAnnex() {
+        return permitAnnex;
+    }
+
+    public void setPermitAnnex(String permitAnnex) {
+        this.permitAnnex = permitAnnex;
+    }
+
+    @ExcelField(title="消防设计审查/备案意见(变电站) 文号", align=2, sort=34)
+    public String getFireProNo() {
+        return fireProNo;
+    }
+
+    public void setFireProNo(String fireProNo) {
+        this.fireProNo = fireProNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="消防设计审查/备案意见(变电站) 日期", align=2, sort=35)
+    public Date getFireProdate() {
+        return fireProdate;
+    }
+
+    public void setFireProdate(Date fireProdate) {
+        this.fireProdate = fireProdate;
+    }
+
+    public String getFireProAnnex() {
+        return fireProAnnex;
+    }
+
+    public void setFireProAnnex(String fireProAnnex) {
+        this.fireProAnnex = fireProAnnex;
+    }
+
+    @ExcelField(title="消防验收/备案意见(变电站) 文号", align=2, sort=36)
+    public String getFireAccNo() {
+        return fireAccNo;
+    }
+
+    public void setFireAccNo(String fireAccNo) {
+        this.fireAccNo = fireAccNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="消防验收/备案意见(变电站) 日期", align=2, sort=37)
+    public Date getFireAccDate() {
+        return fireAccDate;
+    }
+
+    public void setFireAccDate(Date fireAccDate) {
+        this.fireAccDate = fireAccDate;
+    }
+
+    public String getFireAccAnnex() {
+        return fireAccAnnex;
+    }
+
+    public void setFireAccAnnex(String fireAccAnnex) {
+        this.fireAccAnnex = fireAccAnnex;
+    }
+
+    @ExcelField(title="不动产权证 文号", align=2, sort=38)
+    public String getEstateNo() {
+        return estateNo;
+    }
+
+    public void setEstateNo(String estateNo) {
+        this.estateNo = estateNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="不动产权证 日期", align=2, sort=39)
+    public Date getEstateDate() {
+        return estateDate;
+    }
+
+    public void setEstateDate(Date estateDate) {
+        this.estateDate = estateDate;
+    }
+
+    public String getEstateAnnex() {
+        return estateAnnex;
+    }
+
+    public void setEstateAnnex(String estateAnnex) {
+        this.estateAnnex = estateAnnex;
+    }
+
+    public List<ApplicationFor> getChildList() {
+        return childList;
+    }
+
+    public void setChildList(List<ApplicationFor> childList) {
+        this.childList = childList;
+    }
+}

+ 172 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/BiddingContract.java

@@ -0,0 +1,172 @@
+package com.jeeplus.modules.filing.earlyEngineering.entity;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.List;
+
+/**
+ * 招标与合同管理实体类
+ * */
+public class BiddingContract extends DataEntity<BiddingContract> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+    /**
+     * 可研初设一体化设计中标通知书
+     * */
+    private String letterDesign;
+
+    /**
+     * 勘察设计合同
+     * */
+    private String disigningContract;
+
+    /**
+     * 业主项目部成立文件
+     * */
+    private String ownerDapartment;
+
+    /**
+     * 三个项目部关键人员信息
+     * */
+    private String threeDepartment;
+
+    /**
+     * 监理合同
+     * */
+    private String inspectionControl;
+
+    /**
+     * 施工中标通知书
+     * */
+    private String letterAcceptance;
+
+    /**
+     * 施工合同
+     * */
+    private String conContract;
+
+    /**
+     * 其他合同
+     * */
+    private String otherContracts;
+
+    /**
+     * 子类数据集合
+     * */
+    private List<BiddingContract> childList = Lists.newArrayList();
+
+    @ExcelField(title="项目编码", align=2, sort=1)
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    @ExcelField(title="单体编码", align=2, sort=2)
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    public String getLetterDesign() {
+        return letterDesign;
+    }
+
+    public void setLetterDesign(String letterDesign) {
+        this.letterDesign = letterDesign;
+    }
+
+    public String getDisigningContract() {
+        return disigningContract;
+    }
+
+    public void setDisigningContract(String disigningContract) {
+        this.disigningContract = disigningContract;
+    }
+
+    public String getOwnerDapartment() {
+        return ownerDapartment;
+    }
+
+    public void setOwnerDapartment(String ownerDapartment) {
+        this.ownerDapartment = ownerDapartment;
+    }
+
+    @ExcelField(title="三个项目部关键人员信息", align=2, sort=4)
+    public String getThreeDepartment() {
+        return threeDepartment;
+    }
+
+    public void setThreeDepartment(String threeDepartment) {
+        this.threeDepartment = threeDepartment;
+    }
+
+    public String getInspectionControl() {
+        return inspectionControl;
+    }
+
+    public void setInspectionControl(String inspectionControl) {
+        this.inspectionControl = inspectionControl;
+    }
+
+    public String getLetterAcceptance() {
+        return letterAcceptance;
+    }
+
+    public void setLetterAcceptance(String letterAcceptance) {
+        this.letterAcceptance = letterAcceptance;
+    }
+
+    public String getConContract() {
+        return conContract;
+    }
+
+    public void setConContract(String conContract) {
+        this.conContract = conContract;
+    }
+
+    public String getOtherContracts() {
+        return otherContracts;
+    }
+
+    public void setOtherContracts(String otherContracts) {
+        this.otherContracts = otherContracts;
+    }
+
+    public List<BiddingContract> getChildList() {
+        return childList;
+    }
+
+    public void setChildList(List<BiddingContract> childList) {
+        this.childList = childList;
+    }
+}

+ 115 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/DesignStage.java

@@ -0,0 +1,115 @@
+package com.jeeplus.modules.filing.earlyEngineering.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.google.common.collect.Lists;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 初设阶段实体类
+ * */
+public class DesignStage extends DataEntity<DesignStage> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+    /**
+     * 初设批复文号
+     * */
+    private String preDesignNo;
+
+    /**
+     * 初设批复日期
+     * */
+    private Date initialDesignDate;
+
+    /**
+     * 初设附件
+     * */
+    private String preDesignAnnex;
+
+
+    /**
+     * 子类数据集合
+     * */
+    private List<DesignStage> childList = Lists.newArrayList();
+
+    @ExcelField(title="项目编码", align=2, sort=1)
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    @ExcelField(title="单体编码", align=2, sort=2)
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    @ExcelField(title="初设批复文号", align=2, sort=4)
+    public String getPreDesignNo() {
+        return preDesignNo;
+    }
+
+    public void setPreDesignNo(String preDesignNo) {
+        this.preDesignNo = preDesignNo;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelField(title="初设批复日期", align=2, sort=5)
+    public Date getInitialDesignDate() {
+        return initialDesignDate;
+    }
+
+    public void setInitialDesignDate(Date initialDesignDate) {
+        this.initialDesignDate = initialDesignDate;
+    }
+
+
+
+
+    public String getPreDesignAnnex() {
+        return preDesignAnnex;
+    }
+
+    public void setPreDesignAnnex(String preDesignAnnex) {
+        this.preDesignAnnex = preDesignAnnex;
+    }
+
+    public List<DesignStage> getChildList() {
+        return childList;
+    }
+
+    public void setChildList(List<DesignStage> childList) {
+        this.childList = childList;
+    }
+}

+ 29 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/EarlyEngineering.java

@@ -0,0 +1,29 @@
+package com.jeeplus.modules.filing.earlyEngineering.entity;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.List;
+
+public class EarlyEngineering extends DataEntity<EarlyEngineering> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+
+    /**
+     * 子类数据集合
+     * */
+    private List<EarlyEngineering> childList = Lists.newArrayList();
+}

+ 341 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/LegalCompliance.java

@@ -0,0 +1,341 @@
+package com.jeeplus.modules.filing.earlyEngineering.entity;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.core.persistence.DataEntity;
+import com.jeeplus.modules.filing.approvalStage.entity.StudyStage;
+
+import java.util.List;
+
+/**
+ * 依法合规实体类
+ * */
+public class LegalCompliance extends DataEntity<LegalCompliance> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+    /**
+     * 规划总平(变电站)
+     * */
+    private String planningLevel;
+    /**
+     * 勘察定界报告(变电站)
+     * */
+    private String surveyReport;
+    /**
+     * 征地红线图(变电站)
+     * */
+    private String redLineMap;
+    /**
+     * 用地红线图(变电站)
+     * */
+    private String redLineLand;
+    /**
+     * 宗地图
+     * */
+    private String zongMap;
+    /**
+     * 勘察合同备案表(变电站)
+     * */
+    private String recordSurvey;
+    /**
+     * 设计合同备案表(变电站)
+     * */
+    private String recordDesign;
+    /**
+     * 施工合同备案表(变电站)
+     * */
+    private String recordContract;
+    /**
+     * 监理合同备案表(变电站)
+     * */
+    private String supervisionRecord;
+    /**
+     * 岩土勘察报告审查合格意见(变电站)
+     * */
+    private String qulifiedOpinions;
+    /**
+     * 施工图审查合格意见(变电站)
+     * */
+    private String constructionComments;
+    /**
+     * 施工图审查合格证(变电站)
+     * */
+    private String constructionDrawing;
+    /**
+     * 抗震设防审查证书(变电站)
+     * */
+    private String seismicReview;
+    /**
+     * 规划放线报告(变电站)
+     * */
+    private String planningSetting;
+    /**
+     * 安监申报书、备案表(变电站)
+     * */
+    private String safetyRecord;
+    /**
+     * 质监申报书、备案表(变电站)
+     * */
+    private String qualityRecord;
+    /**
+     * 施工许可证
+     * */
+    private String constructionPermit;
+    /**
+     * 规划竣工测绘现状图及管线、绿化、比较图(变电站)
+     * */
+    private String planBuiltMapping;
+    /**
+     * 质监竣工验收意见(变电站)
+     * */
+    private String qualityAcceptance;
+    /**
+     * 城建档案接收合格证明(变电站)
+     * */
+    private String urbanArchives;
+    /**
+     * 竣工备案表(变电站)
+     * */
+    private String completionRecord;
+    /**
+     * 房产测绘报告
+     * */
+    private String realEstate;
+    /**
+     * 宗地复测报告
+     * */
+    private String reportOnLang;
+
+    /**
+     * 子类数据集合
+     * */
+    private List<LegalCompliance> childList = Lists.newArrayList();
+
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    public String getPlanningLevel() {
+        return planningLevel;
+    }
+
+    public void setPlanningLevel(String planningLevel) {
+        this.planningLevel = planningLevel;
+    }
+
+    public String getSurveyReport() {
+        return surveyReport;
+    }
+
+    public void setSurveyReport(String surveyReport) {
+        this.surveyReport = surveyReport;
+    }
+
+    public String getRedLineMap() {
+        return redLineMap;
+    }
+
+    public void setRedLineMap(String redLineMap) {
+        this.redLineMap = redLineMap;
+    }
+
+    public String getRedLineLand() {
+        return redLineLand;
+    }
+
+    public void setRedLineLand(String redLineLand) {
+        this.redLineLand = redLineLand;
+    }
+
+    public String getZongMap() {
+        return zongMap;
+    }
+
+    public void setZongMap(String zongMap) {
+        this.zongMap = zongMap;
+    }
+
+    public String getRecordSurvey() {
+        return recordSurvey;
+    }
+
+    public void setRecordSurvey(String recordSurvey) {
+        this.recordSurvey = recordSurvey;
+    }
+
+    public String getRecordDesign() {
+        return recordDesign;
+    }
+
+    public void setRecordDesign(String recordDesign) {
+        this.recordDesign = recordDesign;
+    }
+
+    public String getRecordContract() {
+        return recordContract;
+    }
+
+    public void setRecordContract(String recordContract) {
+        this.recordContract = recordContract;
+    }
+
+    public String getSupervisionRecord() {
+        return supervisionRecord;
+    }
+
+    public void setSupervisionRecord(String supervisionRecord) {
+        this.supervisionRecord = supervisionRecord;
+    }
+
+    public String getQulifiedOpinions() {
+        return qulifiedOpinions;
+    }
+
+    public void setQulifiedOpinions(String qulifiedOpinions) {
+        this.qulifiedOpinions = qulifiedOpinions;
+    }
+
+    public String getConstructionComments() {
+        return constructionComments;
+    }
+
+    public void setConstructionComments(String constructionComments) {
+        this.constructionComments = constructionComments;
+    }
+
+    public String getConstructionDrawing() {
+        return constructionDrawing;
+    }
+
+    public void setConstructionDrawing(String constructionDrawing) {
+        this.constructionDrawing = constructionDrawing;
+    }
+
+    public String getSeismicReview() {
+        return seismicReview;
+    }
+
+    public void setSeismicReview(String seismicReview) {
+        this.seismicReview = seismicReview;
+    }
+
+    public String getPlanningSetting() {
+        return planningSetting;
+    }
+
+    public void setPlanningSetting(String planningSetting) {
+        this.planningSetting = planningSetting;
+    }
+
+    public String getSafetyRecord() {
+        return safetyRecord;
+    }
+
+    public void setSafetyRecord(String safetyRecord) {
+        this.safetyRecord = safetyRecord;
+    }
+
+    public String getQualityRecord() {
+        return qualityRecord;
+    }
+
+    public void setQualityRecord(String qualityRecord) {
+        this.qualityRecord = qualityRecord;
+    }
+
+    public String getConstructionPermit() {
+        return constructionPermit;
+    }
+
+    public void setConstructionPermit(String constructionPermit) {
+        this.constructionPermit = constructionPermit;
+    }
+
+    public String getPlanBuiltMapping() {
+        return planBuiltMapping;
+    }
+
+    public void setPlanBuiltMapping(String planBuiltMapping) {
+        this.planBuiltMapping = planBuiltMapping;
+    }
+
+    public String getQualityAcceptance() {
+        return qualityAcceptance;
+    }
+
+    public void setQualityAcceptance(String qualityAcceptance) {
+        this.qualityAcceptance = qualityAcceptance;
+    }
+
+    public String getUrbanArchives() {
+        return urbanArchives;
+    }
+
+    public void setUrbanArchives(String urbanArchives) {
+        this.urbanArchives = urbanArchives;
+    }
+
+    public String getCompletionRecord() {
+        return completionRecord;
+    }
+
+    public void setCompletionRecord(String completionRecord) {
+        this.completionRecord = completionRecord;
+    }
+
+    public String getRealEstate() {
+        return realEstate;
+    }
+
+    public void setRealEstate(String realEstate) {
+        this.realEstate = realEstate;
+    }
+
+    public String getReportOnLang() {
+        return reportOnLang;
+    }
+
+    public void setReportOnLang(String reportOnLang) {
+        this.reportOnLang = reportOnLang;
+    }
+
+    public List<LegalCompliance> getChildList() {
+        return childList;
+    }
+
+    public void setChildList(List<LegalCompliance> childList) {
+        this.childList = childList;
+    }
+}

+ 166 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/entity/ReviewStage.java

@@ -0,0 +1,166 @@
+package com.jeeplus.modules.filing.earlyEngineering.entity;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.List;
+
+/**
+ * 批概阶段实体类
+ * */
+public class ReviewStage extends DataEntity<ReviewStage> {
+    /**
+     * 项目编码
+     */
+    private String projectCode;
+
+    /**
+     * 单体编码
+     */
+    private String monomerCode;
+
+    /**
+     * 项目名称
+     */
+    private String entryName;
+
+
+    /**
+     * 批概动态
+     * */
+    private String batchOverview;
+
+    /**
+     * 批概静态
+     * */
+    private String batchStatistics;
+
+    /**
+     * 批概场地清理费/相应的WBS编码
+     * */
+    private String estimateCode;
+
+    /**
+     * 设计费批概相应的/相应的WBS编码WBS编码
+     * */
+    private String designCost;
+
+    /**
+     * 监理费批概/相应的WBS编码
+     * */
+    private String supervisionFeeCode;
+
+    /**
+     * 批概法人管理费/相应的WBS编码
+     * */
+    private String managementFeeCode;
+
+    /**
+     * 其他概算中需要的数据/相应的WBS编码
+     * */
+    private String dataCode;
+
+    /**
+     * 子类数据集合
+     * */
+    private List<ReviewStage> childList = Lists.newArrayList();
+
+    @ExcelField(title="项目编码", align=2, sort=1)
+    public String getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(String projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    @ExcelField(title="单体编码", align=2, sort=2)
+    public String getMonomerCode() {
+        return monomerCode;
+    }
+
+    public void setMonomerCode(String monomerCode) {
+        this.monomerCode = monomerCode;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=3)
+    public String getEntryName() {
+        return entryName;
+    }
+
+    public void setEntryName(String entryName) {
+        this.entryName = entryName;
+    }
+
+    @ExcelField(title="批概动态", align=2, sort=4)
+    public String getBatchOverview() {
+        return batchOverview;
+    }
+
+    public void setBatchOverview(String batchOverview) {
+        this.batchOverview = batchOverview;
+    }
+
+    @ExcelField(title="批概静态", align=2, sort=5)
+    public String getBatchStatistics() {
+        return batchStatistics;
+    }
+
+    public void setBatchStatistics(String batchStatistics) {
+        this.batchStatistics = batchStatistics;
+    }
+
+    @ExcelField(title="批概场地清理费/相应的WBS编码", align=2, sort=6)
+    public String getEstimateCode() {
+        return estimateCode;
+    }
+
+    public void setEstimateCode(String estimateCode) {
+        this.estimateCode = estimateCode;
+    }
+
+    @ExcelField(title="设计费批概相应的/相应的WBS编码WBS编码", align=2, sort=7)
+    public String getDesignCost() {
+        return designCost;
+    }
+
+    public void setDesignCost(String designCost) {
+        this.designCost = designCost;
+    }
+
+    @ExcelField(title="监理费批概/相应的WBS编码", align=2, sort=8)
+    public String getSupervisionFeeCode() {
+        return supervisionFeeCode;
+    }
+
+    public void setSupervisionFeeCode(String supervisionFeeCode) {
+        this.supervisionFeeCode = supervisionFeeCode;
+    }
+
+    @ExcelField(title="批概法人管理费/相应的WBS编码", align=2, sort=9)
+    public String getManagementFeeCode() {
+        return managementFeeCode;
+    }
+
+    public void setManagementFeeCode(String managementFeeCode) {
+        this.managementFeeCode = managementFeeCode;
+    }
+
+    @ExcelField(title="其他概算中需要的数据/相应的WBS编码", align=2, sort=10)
+    public String getDataCode() {
+        return dataCode;
+    }
+
+    public void setDataCode(String dataCode) {
+        this.dataCode = dataCode;
+    }
+
+    public List<ReviewStage> getChildList() {
+        return childList;
+    }
+
+    public void setChildList(List<ReviewStage> childList) {
+        this.childList = childList;
+    }
+}

+ 33 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/ApplicationForMapper.java

@@ -0,0 +1,33 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.filing.earlyEngineering.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.filing.earlyEngineering.entity.ApplicationFor;
+
+import java.util.List;
+
+/**
+ * 核准阶段MAPPER接口
+ * @author qy
+ * @version 2021-03-25
+ */
+@MyBatisMapper
+public interface ApplicationForMapper extends BaseMapper<ApplicationFor> {
+    List<ApplicationFor> findChildList(ApplicationFor entity);
+
+    Integer findByCode(ApplicationFor entity);
+
+
+    /**
+     * 通过id集合查询出所有符合条件的项目基础信息
+     */
+    List<ApplicationFor> findByIdList(List<String> idList);
+
+    /**
+     * 通过项目id查询出所有的项目信息
+     * */
+    List<ApplicationFor> findAll(List<String> idList);
+}

+ 33 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/BiddingContractMapper.java

@@ -0,0 +1,33 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.filing.earlyEngineering.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.filing.earlyEngineering.entity.BiddingContract;
+
+import java.util.List;
+
+/**
+ * 核准阶段MAPPER接口
+ * @author qy
+ * @version 2021-03-25
+ */
+@MyBatisMapper
+public interface BiddingContractMapper extends BaseMapper<BiddingContract> {
+    List<BiddingContract> findChildList(BiddingContract entity);
+
+    Integer findByCode(BiddingContract entity);
+
+
+    /**
+     * 通过id集合查询出所有符合条件的项目基础信息
+     */
+    List<BiddingContract> findByIdList(List<String> idList);
+
+    /**
+     * 通过项目id查询出所有的项目信息
+     * */
+    List<BiddingContract> findAll(List<String> idList);
+}

+ 35 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/DesignStageMapper.java

@@ -0,0 +1,35 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.filing.earlyEngineering.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.filing.approvalStage.entity.ApprovalStage;
+import com.jeeplus.modules.filing.approvalStage.entity.EarlyStage;
+import com.jeeplus.modules.filing.earlyEngineering.entity.DesignStage;
+
+import java.util.List;
+
+/**
+ * 核准阶段MAPPER接口
+ * @author qy
+ * @version 2021-03-25
+ */
+@MyBatisMapper
+public interface DesignStageMapper extends BaseMapper<DesignStage> {
+    List<DesignStage> findChildList(DesignStage entity);
+
+    Integer findByCode(DesignStage entity);
+
+
+    /**
+     * 通过id集合查询出所有符合条件的项目基础信息
+     */
+    List<DesignStage> findByIdList(List<String> idList);
+
+    /**
+     * 通过项目id查询出所有的项目信息
+     * */
+    List<DesignStage> findAll(List<String> idList);
+}

+ 34 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/ReviewStageMapper.java

@@ -0,0 +1,34 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.filing.earlyEngineering.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.filing.earlyEngineering.entity.DesignStage;
+import com.jeeplus.modules.filing.earlyEngineering.entity.ReviewStage;
+
+import java.util.List;
+
+/**
+ * 核准阶段MAPPER接口
+ * @author qy
+ * @version 2021-03-25
+ */
+@MyBatisMapper
+public interface ReviewStageMapper extends BaseMapper<ReviewStage> {
+    List<ReviewStage> findChildList(ReviewStage entity);
+
+    Integer findByCode(ReviewStage entity);
+
+
+    /**
+     * 通过id集合查询出所有符合条件的项目基础信息
+     */
+    List<ReviewStage> findByIdList(List<String> idList);
+
+    /**
+     * 通过项目id查询出所有的项目信息
+     * */
+    List<ReviewStage> findAll(List<String> idList);
+}

+ 377 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/xml/ApplicationForMapper.xml

@@ -0,0 +1,377 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.filing.earlyEngineering.mapper.ApplicationForMapper">
+    
+	<sql id="applicationForColumns">
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.projectCode AS "projectCode",
+		a.monomerCode AS "monomerCode",
+		a.entryName AS "entryName",
+		b.landNo,
+		b.landDate,
+		b.landAnnex,
+		b.eiaNo,
+		b.eiaDate,
+		b.eiaAnnex,
+		b.acceptanceNo,
+		b.acceptanceDate,
+		b.acceptanceAnnex,
+		b.replyNo,
+		b.replyDate,
+		b.replyAnnex,
+		b.soilNo,
+		b.soilDate,
+		b.soilannex,
+		b.depositNo,
+		b.depositDate,
+		b.depositAnnex,
+		b.recordNo,
+		b.recordDate,
+		b.recordAnnex,
+		b.siteProposalNo,
+		b.siteProposalDate,
+		b.siteProposalAnnex,
+		b.planningNo,
+		b.planningDate,
+		b.planningAnnex,
+		b.usePlanNo,
+		b.usePlanDate,
+		b.usePlanAnnex,
+		b.requisitonNo,
+		b.requisitonDate,
+		b.requisitonAnnex,
+		b.conLandNo,
+		b.conLandDate,
+		b.conLandAnnex,
+		b.transferNo,
+		b.transferDate,
+		b.transferAnnex,
+		b.certificateNo,
+		b.certificateDate,
+		b.certificateAnnex,
+		b.permitNo,
+		b.permitDate,
+		b.permitAnnex,
+		b.fireProNo,
+		b.fireProdate,
+		b.fireProAnnex,
+		b.fireAccNo,
+		b.fireAccDate,
+		b.fireAccAnnex,
+		b.estateNo,
+		b.estateDate,
+		b.estateAnnex
+	</sql>
+	
+	<sql id="applicationForJoins">
+		LEFT JOIN filing_early_applicationfor b on a.projectCode = b.projectCode
+	</sql>
+	
+    
+	<select id="get" resultType="ApplicationFor" >
+		SELECT 
+			<include refid="applicationForColumns"/>
+		FROM filing_basic_information a
+		<include refid="applicationForJoins"/>
+		WHERE a.id = #{id}
+	</select>
+	
+	<select id="findList" resultType="ApplicationFor">
+		SELECT 
+			<include refid="applicationForColumns"/>
+		FROM filing_basic_information a
+		<include refid="applicationForJoins"/>
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+			and a.parentId = '0'
+			<if test="projectCode != null  and projectCode != ''">
+				and a.projectCode = #{projectCode}
+			</if>
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<select id="findAllList" resultType="ApplicationFor" >
+		SELECT 
+			<include refid="applicationForColumns"/>
+		FROM filing_basic_information a
+		<include refid="applicationForJoins"/>
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+		</where>		
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<insert id="insert">
+		INSERT INTO filing_early_applicationfor(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+	  		projectCode,
+			landNo,
+			landDate,
+			landAnnex,
+			eiaNo,
+			eiaDate,
+			eiaAnnex,
+			acceptanceNo,
+			acceptanceDate,
+			acceptanceAnnex,
+			replyNo,
+			replyDate,
+			replyAnnex,
+			soilNo,
+			soilDate,
+			soilannex,
+			depositNo,
+			depositDate,
+			depositAnnex,
+			recordNo,
+			recordDate,
+			recordAnnex,
+			siteProposalNo,
+			siteProposalDate,
+			siteProposalAnnex,
+			planningNo,
+			planningDate,
+			planningAnnex,
+			usePlanNo,
+			usePlanDate,
+			usePlanAnnex,
+			requisitonNo,
+			requisitonDate,
+			requisitonAnnex,
+			conLandNo,
+			conLandDate,
+			conLandAnnex,
+			transferNo,
+			transferDate,
+			transferAnnex,
+			certificateNo,
+			certificateDate,
+			certificateAnnex,
+			permitNo,
+			permitDate,
+			permitAnnex,
+			fireProNo,
+			fireProdate,
+			fireProAnnex,
+			fireAccNo,
+			fireAccDate,
+			fireAccAnnex,
+			estateNo,
+			estateDate,
+			estateAnnex
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{projectCode},
+			#{landNo},
+			#{landDate},
+			#{landAnnex},
+			#{eiaNo},
+			#{eiaDate},
+			#{eiaAnnex},
+			#{acceptanceNo},
+			#{acceptanceDate},
+			#{acceptanceAnnex},
+			#{replyNo},
+			#{replyDate},
+			#{replyAnnex},
+			#{soilNo},
+			#{soilDate},
+			#{soilannex},
+			#{depositNo},
+			#{depositDate},
+			#{depositAnnex},
+			#{recordNo},
+			#{recordDate},
+			#{recordAnnex},
+			#{siteProposalNo},
+			#{siteProposalDate},
+			#{siteProposalAnnex},
+			#{planningNo},
+			#{planningDate},
+			#{planningAnnex},
+			#{usePlanNo},
+			#{usePlanDate},
+			#{usePlanAnnex},
+			#{requisitonNo},
+			#{requisitonDate},
+			#{requisitonAnnex},
+			#{conLandNo},
+			#{conLandDate},
+			#{conLandAnnex},
+			#{transferNo},
+			#{transferDate},
+			#{transferAnnex},
+			#{certificateNo},
+			#{certificateDate},
+			#{certificateAnnex},
+			#{permitNo},
+			#{permitDate},
+			#{permitAnnex},
+			#{fireProNo},
+			#{fireProdate},
+			#{fireProAnnex},
+			#{fireAccNo},
+			#{fireAccDate},
+			#{fireAccAnnex},
+			#{estateNo},
+			#{estateDate},
+			#{estateAnnex}
+		)
+	</insert>
+	
+	<update id="update">
+		UPDATE filing_early_applicationfor SET
+			create_date = #{createDate},
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks},
+			landNo = #{landNo},
+			landDate = #{landDate},
+			landAnnex = #{landAnnex},
+			eiaNo = #{eiaNo},
+			eiaDate = #{eiaDate},
+			eiaAnnex = #{eiaAnnex},
+			acceptanceNo = #{acceptanceNo},
+			acceptanceDate = #{acceptanceDate},
+			acceptanceAnnex = #{acceptanceAnnex},
+			replyNo = #{replyNo},
+			replyDate = #{replyDate},
+			replyAnnex = #{replyAnnex},
+			soilNo = #{soilNo},
+			soilDate = #{soilDate},
+			soilannex = #{soilannex},
+			depositNo = #{depositNo},
+			depositDate = #{depositDate},
+			depositAnnex = #{depositAnnex},
+			recordNo = #{recordNo},
+			recordDate = #{recordDate},
+			recordAnnex = #{recordAnnex},
+			siteProposalNo = #{siteProposalNo},
+			siteProposalDate = #{siteProposalDate},
+			siteProposalAnnex = #{siteProposalAnnex},
+			planningNo = #{planningNo},
+			planningDate = #{planningDate},
+			planningAnnex = #{planningAnnex},
+			usePlanNo = #{usePlanNo},
+			usePlanDate = #{usePlanDate},
+			usePlanAnnex = #{usePlanAnnex},
+			requisitonNo = #{requisitonNo},
+			requisitonDate = #{requisitonDate},
+			requisitonAnnex = #{requisitonAnnex},
+			conLandNo = #{conLandNo},
+			conLandDate = #{conLandDate},
+			conLandAnnex = #{conLandAnnex},
+			transferNo = #{transferNo},
+			transferDate = #{transferDate},
+			transferAnnex = #{transferAnnex},
+			certificateNo = #{certificateNo},
+			certificateDate = #{certificateDate},
+			certificateAnnex = #{certificateAnnex},
+			permitNo = #{permitNo},
+			permitDate = #{permitDate},
+			permitAnnex = #{permitAnnex},
+			fireProNo = #{fireProNo},
+			fireProdate = #{fireProdate},
+			fireProAnnex = #{fireProAnnex},
+			fireAccNo = #{fireAccNo},
+			fireAccDate = #{fireAccDate},
+			fireAccAnnex = #{fireAccAnnex},
+			estateNo = #{estateNo},
+			estateDate = #{estateDate},
+			estateAnnex = #{estateAnnex}
+		WHERE projectCode = #{projectCode}
+	</update>
+	
+	
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM filing_early_applicationfor
+		WHERE id = #{id}
+	</update>
+	
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE filing_early_applicationfor SET 
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
+	<select id="findUniqueByProperty" resultType="ApplicationFor" statementType="STATEMENT">
+		select * FROM filing_early_applicationfor  where ${propertyName} = '${value}'
+	</select>
+	<select id="findChildList" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.ApplicationFor">
+		select
+		<include refid="applicationForColumns"/>
+		FROM filing_basic_information a
+		<include refid="applicationForJoins"/>
+		<where>
+			<if test="projectCode != null  and projectCode != ''">
+				a.parentId = #{projectCode}
+			</if>
+		</where>
+	</select>
+	<select id="findByCode" resultType="java.lang.Integer">
+		select count(id) from filing_early_applicationfor
+		where projectCode = #{projectCode}
+	</select>
+	<select id="findByIdList" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.ApplicationFor">
+		SELECT
+		<include refid="applicationForColumns"/>
+		FROM filing_basic_information a
+		<include refid="applicationForJoins"/>
+		WHERE a.id in(
+		<foreach collection="list" index="index" item="item" separator=",">
+			#{item}
+		</foreach>
+		)
+	</select>
+	<select id="findAll" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.ApplicationFor">
+		SELECT
+		<include refid="applicationForColumns"/>
+		FROM filing_basic_information a
+		<include refid="applicationForJoins"/>
+		WHERE a.id in(
+		<foreach collection="list" index="index" item="item" separator=",">
+			#{item}
+		</foreach>
+		)
+	</select>
+
+</mapper>

+ 193 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/xml/BiddingContractMapper.xml

@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.filing.earlyEngineering.mapper.BiddingContractMapper">
+    
+	<sql id="biddingContractColumns">
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.projectCode AS "projectCode",
+		a.monomerCode AS "monomerCode",
+		a.entryName AS "entryName",
+		b.letterDesign AS "letterDesign",
+		b.disigningContract AS "disigningContract",
+		b.ownerDapartment AS "ownerDapartment",
+		b.threeDepartment AS "threeDepartment",
+		b.inspectionControl AS "inspectionControl",
+		b.letterAcceptance AS "letterAcceptance",
+		b.conContract AS "conContract",
+		b.otherContracts AS "otherContracts"
+	</sql>
+	
+	<sql id="biddingContractJoins">
+		LEFT JOIN filing_early_biddingcontract b on a.projectCode = b.projectCode
+	</sql>
+	
+    
+	<select id="get" resultType="BiddingContract" >
+		SELECT 
+			<include refid="biddingContractColumns"/>
+		FROM filing_basic_information a
+		<include refid="biddingContractJoins"/>
+		WHERE a.id = #{id}
+	</select>
+	
+	<select id="findList" resultType="BiddingContract">
+		SELECT 
+			<include refid="biddingContractColumns"/>
+		FROM filing_basic_information a
+		<include refid="biddingContractJoins"/>
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+			and a.parentId = '0'
+			<if test="projectCode != null  and projectCode != ''">
+				and a.projectCode = #{projectCode}
+			</if>
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<select id="findAllList" resultType="BiddingContract" >
+		SELECT 
+			<include refid="biddingContractColumns"/>
+		FROM filing_basic_information a
+		<include refid="biddingContractJoins"/>
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+		</where>		
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<insert id="insert">
+		INSERT INTO filing_early_biddingcontract(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+	  		projectCode,
+			letterDesign,
+			disigningContract,
+			ownerDapartment,
+			threeDepartment,
+			inspectionControl,
+			letterAcceptance,
+			conContract,
+			otherContracts
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{projectCode},
+			#{letterDesign},
+			#{disigningContract},
+			#{ownerDapartment},
+			#{threeDepartment},
+			#{inspectionControl},
+			#{letterAcceptance},
+			#{conContract},
+			#{otherContracts}
+		)
+	</insert>
+	
+	<update id="update">
+		UPDATE filing_early_biddingcontract SET
+			create_date = #{createDate},
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks},
+			letterDesign = #{letterDesign},
+			disigningContract = #{disigningContract},
+			ownerDapartment = #{ownerDapartment},
+			threeDepartment = #{threeDepartment},
+			inspectionControl = #{inspectionControl},
+			letterAcceptance = #{letterAcceptance},
+			conContract = #{conContract},
+			otherContracts = #{otherContracts}
+		WHERE projectCode = #{projectCode}
+	</update>
+	
+	
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM filing_early_biddingcontract
+		WHERE id = #{id}
+	</update>
+	
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE filing_early_biddingcontract SET 
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
+	<select id="findUniqueByProperty" resultType="BiddingContract" statementType="STATEMENT">
+		select * FROM filing_early_biddingcontract  where ${propertyName} = '${value}'
+	</select>
+	<select id="findChildList" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.BiddingContract">
+		select
+		<include refid="biddingContractColumns"/>
+		FROM filing_basic_information a
+		<include refid="biddingContractJoins"/>
+		<where>
+			<if test="projectCode != null  and projectCode != ''">
+				a.parentId = #{projectCode}
+			</if>
+		</where>
+	</select>
+	<select id="findByCode" resultType="java.lang.Integer">
+		select count(id) from filing_early_biddingcontract
+		where projectCode = #{projectCode}
+	</select>
+	<select id="findByIdList" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.BiddingContract">
+		SELECT
+		<include refid="biddingContractColumns"/>
+		FROM filing_basic_information a
+		<include refid="biddingContractJoins"/>
+		WHERE a.id in(
+		<foreach collection="list" index="index" item="item" separator=",">
+			#{item}
+		</foreach>
+		)
+	</select>
+	<select id="findAll" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.BiddingContract">
+		SELECT
+		<include refid="biddingContractColumns"/>
+		FROM filing_basic_information a
+		<include refid="biddingContractJoins"/>
+		WHERE a.id in(
+		<foreach collection="list" index="index" item="item" separator=",">
+			#{item}
+		</foreach>
+		)
+	</select>
+
+</mapper>

+ 179 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/xml/DesignStageMapper.xml

@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.filing.earlyEngineering.mapper.DesignStageMapper">
+    
+	<sql id="designStageColumns">
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.projectCode AS "projectCode",
+		a.monomerCode AS "monomerCode",
+		a.entryName AS "entryName",
+		b.preDesignNo AS "preDesignNo",
+		b.initialDesignDate AS "initialDesignDate",
+		b.preDesignAnnex AS "preDesignAnnex"
+	</sql>
+	
+	<sql id="designStageJoins">
+		LEFT JOIN filing_early_designstage b on a.projectCode = b.projectCode
+	</sql>
+	
+    
+	<select id="get" resultType="DesignStage" >
+		SELECT 
+			<include refid="designStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="designStageJoins"/>
+		WHERE a.id = #{id}
+	</select>
+	
+	<select id="findList" resultType="DesignStage">
+		SELECT 
+			<include refid="designStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="designStageJoins"/>
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+			and a.parentId = '0'
+			<if test="projectCode != null  and projectCode != ''">
+				and a.projectCode = #{projectCode}
+			</if>
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<select id="findAllList" resultType="DesignStage" >
+		SELECT 
+			<include refid="designStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="designStageJoins"/>
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+		</where>		
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<insert id="insert">
+		INSERT INTO filing_early_designstage(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+	  		projectCode,
+			preDesignNo,
+			initialDesignDate,
+			preDesignAnnex
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{projectCode},
+			#{preDesignNo},
+			#{initialDesignDate},
+			#{preDesignAnnex}
+		)
+	</insert>
+	
+	<update id="update">
+		UPDATE filing_early_designstage SET
+			create_date = #{createDate},
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks},
+			preDesignNo = #{preDesignNo},
+			initialDesignDate = #{initialDesignDate},
+			preDesignAnnex = #{preDesignAnnex}
+		WHERE projectCode = #{projectCode}
+	</update>
+	
+	
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM filing_early_designstage
+		WHERE id = #{id}
+	</update>
+	
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE filing_early_designstage SET 
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
+	<select id="findUniqueByProperty" resultType="DesignStage" statementType="STATEMENT">
+		select * FROM filing_early_designstage  where ${propertyName} = '${value}'
+	</select>
+	<select id="findChildList" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.DesignStage">
+		select
+			a.id AS "id",
+			a.projectCode AS "projectCode",
+			a.monomerCode AS "monomerCode",
+			a.entryName AS "entryName",
+			b.preDesignNo AS "preDesignNo",
+			b.initialDesignDate AS "initialDesignDate",
+			b.preDesignAnnex AS "preDesignAnnex"
+		from filing_basic_information a
+				 LEFT JOIN filing_early_designstage b on a.projectCode = b.projectCode
+		<where>
+			<if test="projectCode != null  and projectCode != ''">
+				a.parentId = #{projectCode}
+			</if>
+		</where>
+	</select>
+	<select id="findByCode" resultType="java.lang.Integer">
+		select count(id) from filing_early_designstage
+		where projectCode = #{projectCode}
+	</select>
+	<select id="findByIdList" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.DesignStage">
+		SELECT
+		<include refid="designStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="designStageJoins"/>
+		WHERE a.id in(
+		<foreach collection="list" index="index" item="item" separator=",">
+			#{item}
+		</foreach>
+		)
+	</select>
+	<select id="findAll" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.DesignStage">
+		SELECT
+		<include refid="designStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="designStageJoins"/>
+		WHERE a.id in(
+		<foreach collection="list" index="index" item="item" separator=",">
+			#{item}
+		</foreach>
+		)
+	</select>
+
+</mapper>

+ 189 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/mapper/xml/ReviewStageMapper.xml

@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.filing.earlyEngineering.mapper.ReviewStageMapper">
+    
+	<sql id="reviewStageColumns">
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.projectCode AS "projectCode",
+		a.monomerCode AS "monomerCode",
+		a.entryName AS "entryName",
+		b.batchOverview AS "batchOverview",
+		b.batchStatistics AS "batchStatistics",
+		b.estimateCode AS "estimateCode",
+		b.designCost AS "designCost",
+		b.supervisionFeeCode AS "supervisionFeeCode",
+		b.managementFeeCode AS "managementFeeCode",
+		b.dataCode AS "dataCode"
+	</sql>
+	
+	<sql id="reviewStageJoins">
+		LEFT JOIN filing_early_reviewstage b on a.projectCode = b.projectCode
+	</sql>
+	
+    
+	<select id="get" resultType="ReviewStage" >
+		SELECT 
+			<include refid="reviewStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="reviewStageJoins"/>
+		WHERE a.id = #{id}
+	</select>
+	
+	<select id="findList" resultType="ReviewStage">
+		SELECT 
+			<include refid="reviewStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="reviewStageJoins"/>
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+			and a.parentId = '0'
+			<if test="projectCode != null  and projectCode != ''">
+				and a.projectCode = #{projectCode}
+			</if>
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<select id="findAllList" resultType="ReviewStage" >
+		SELECT 
+			<include refid="reviewStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="reviewStageJoins"/>
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+		</where>		
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<insert id="insert">
+		INSERT INTO filing_early_reviewstage(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+	  		projectCode,
+			batchOverview,
+			batchStatistics,
+			estimateCode,
+			designCost,
+			supervisionFeeCode,
+			managementFeeCode,
+			dataCode
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{projectCode},
+			#{batchOverview},
+			#{batchStatistics},
+			#{estimateCode},
+			#{designCost},
+			#{supervisionFeeCode},
+			#{managementFeeCode},
+			#{dataCode}
+		)
+	</insert>
+	
+	<update id="update">
+		UPDATE filing_early_reviewstage SET
+			create_date = #{createDate},
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks},
+			batchOverview = #{batchOverview},
+			batchStatistics = #{batchStatistics},
+			estimateCode = #{estimateCode},
+			designCost = #{designCost},
+			supervisionFeeCode = #{supervisionFeeCode},
+			managementFeeCode = #{managementFeeCode},
+			dataCode = #{dataCode}
+		WHERE projectCode = #{projectCode}
+	</update>
+	
+	
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM filing_early_reviewstage
+		WHERE id = #{id}
+	</update>
+	
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE filing_early_reviewstage SET 
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
+	<select id="findUniqueByProperty" resultType="ReviewStage" statementType="STATEMENT">
+		select * FROM filing_early_reviewstage  where ${propertyName} = '${value}'
+	</select>
+	<select id="findChildList" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.ReviewStage">
+		select
+		<include refid="reviewStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="reviewStageJoins"/>
+		<where>
+			<if test="projectCode != null  and projectCode != ''">
+				a.parentId = #{projectCode}
+			</if>
+		</where>
+	</select>
+	<select id="findByCode" resultType="java.lang.Integer">
+		select count(id) from filing_early_reviewstage
+		where projectCode = #{projectCode}
+	</select>
+	<select id="findByIdList" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.ReviewStage">
+		SELECT
+		<include refid="reviewStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="reviewStageJoins"/>
+		WHERE a.id in(
+		<foreach collection="list" index="index" item="item" separator=",">
+			#{item}
+		</foreach>
+		)
+	</select>
+	<select id="findAll" resultType="com.jeeplus.modules.filing.earlyEngineering.entity.ReviewStage">
+		SELECT
+		<include refid="reviewStageColumns"/>
+		FROM filing_basic_information a
+		<include refid="reviewStageJoins"/>
+		WHERE a.id in(
+		<foreach collection="list" index="index" item="item" separator=",">
+			#{item}
+		</foreach>
+		)
+	</select>
+
+</mapper>

+ 78 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/ApplicationForService.java

@@ -0,0 +1,78 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.filing.earlyEngineering.service;
+
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.filing.earlyEngineering.entity.ApplicationFor;
+import com.jeeplus.modules.filing.earlyEngineering.mapper.ApplicationForMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 核准阶段Service
+ *
+ * @author qy
+ * @version 2021-03-25
+ */
+@Service
+@Transactional(readOnly = true)
+public class ApplicationForService extends CrudService<ApplicationForMapper, ApplicationFor> {
+
+
+	@Override
+	public ApplicationFor get(ApplicationFor entity) {
+		return super.get(entity);
+	}
+
+	@Override
+	public List<ApplicationFor> findList(ApplicationFor entity) {
+		return super.findList(entity);
+	}
+
+	@Override
+	public Page<ApplicationFor> findPage(Page<ApplicationFor> page, ApplicationFor entity) {
+		return super.findPage(page, entity);
+	}
+
+	public Page<ApplicationFor> findAllPage(Page<ApplicationFor> page, ApplicationFor entity){
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		page.setList(mapper.findAllList(entity));
+		return page;
+	}
+
+	public Page<ApplicationFor> findChildPage(Page<ApplicationFor> page, ApplicationFor entity) {
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		page.setList(mapper.findChildList(entity));
+		return page;
+	}
+
+
+
+	@Override
+	public void delete(ApplicationFor entity) {
+		super.delete(entity);
+	}
+
+	@Override
+	@Transactional(readOnly = false)
+	public void save(ApplicationFor entity) {
+		Integer byCode = mapper.findByCode(entity);
+		if (0 == byCode || null == byCode) {
+			entity.preInsert();
+			mapper.insert(entity);
+		} else {
+			entity.preUpdate();
+			mapper.update(entity);
+		}
+	}
+
+	public Integer findByCode(ApplicationFor entity) {
+		return mapper.findByCode(entity);
+	}
+}

+ 78 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/BiddingContractService.java

@@ -0,0 +1,78 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.filing.earlyEngineering.service;
+
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.filing.earlyEngineering.entity.BiddingContract;
+import com.jeeplus.modules.filing.earlyEngineering.mapper.BiddingContractMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 核准阶段Service
+ *
+ * @author qy
+ * @version 2021-03-25
+ */
+@Service
+@Transactional(readOnly = true)
+public class BiddingContractService extends CrudService<BiddingContractMapper, BiddingContract> {
+
+
+	@Override
+	public BiddingContract get(BiddingContract entity) {
+		return super.get(entity);
+	}
+
+	@Override
+	public List<BiddingContract> findList(BiddingContract entity) {
+		return super.findList(entity);
+	}
+
+	@Override
+	public Page<BiddingContract> findPage(Page<BiddingContract> page, BiddingContract entity) {
+		return super.findPage(page, entity);
+	}
+
+	public Page<BiddingContract> findAllPage(Page<BiddingContract> page, BiddingContract entity){
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		page.setList(mapper.findAllList(entity));
+		return page;
+	}
+
+	public Page<BiddingContract> findChildPage(Page<BiddingContract> page, BiddingContract entity) {
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		page.setList(mapper.findChildList(entity));
+		return page;
+	}
+
+
+
+	@Override
+	public void delete(BiddingContract entity) {
+		super.delete(entity);
+	}
+
+	@Override
+	@Transactional(readOnly = false)
+	public void save(BiddingContract entity) {
+		Integer byCode = mapper.findByCode(entity);
+		if (0 == byCode || null == byCode) {
+			entity.preInsert();
+			mapper.insert(entity);
+		} else {
+			entity.preUpdate();
+			mapper.update(entity);
+		}
+	}
+
+	public Integer findByCode(BiddingContract entity) {
+		return mapper.findByCode(entity);
+	}
+}

+ 80 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/DesignStageService.java

@@ -0,0 +1,80 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.filing.earlyEngineering.service;
+
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.filing.approvalStage.entity.ApprovalStage;
+import com.jeeplus.modules.filing.approvalStage.mapper.ApprovalStageMapper;
+import com.jeeplus.modules.filing.earlyEngineering.entity.DesignStage;
+import com.jeeplus.modules.filing.earlyEngineering.mapper.DesignStageMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 核准阶段Service
+ *
+ * @author qy
+ * @version 2021-03-25
+ */
+@Service
+@Transactional(readOnly = true)
+public class DesignStageService extends CrudService<DesignStageMapper, DesignStage> {
+
+
+	@Override
+	public DesignStage get(DesignStage entity) {
+		return super.get(entity);
+	}
+
+	@Override
+	public List<DesignStage> findList(DesignStage entity) {
+		return super.findList(entity);
+	}
+
+	@Override
+	public Page<DesignStage> findPage(Page<DesignStage> page, DesignStage entity) {
+		return super.findPage(page, entity);
+	}
+
+	public Page<DesignStage> findAllPage(Page<DesignStage> page, DesignStage entity){
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		page.setList(mapper.findAllList(entity));
+		return page;
+	}
+
+	public Page<DesignStage> findChildPage(Page<DesignStage> page, DesignStage entity) {
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		page.setList(mapper.findChildList(entity));
+		return page;
+	}
+
+
+
+	@Override
+	public void delete(DesignStage entity) {
+		super.delete(entity);
+	}
+
+	@Override
+	@Transactional(readOnly = false)
+	public void save(DesignStage entity) {
+		Integer byCode = mapper.findByCode(entity);
+		if (0 == byCode || null == byCode) {
+			entity.preInsert();
+			mapper.insert(entity);
+		} else {
+			entity.preUpdate();
+			mapper.update(entity);
+		}
+	}
+
+	public Integer findByCode(DesignStage entity) {
+		return mapper.findByCode(entity);
+	}
+}

+ 78 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/service/ReviewStageService.java

@@ -0,0 +1,78 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.filing.earlyEngineering.service;
+
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.filing.earlyEngineering.entity.ReviewStage;
+import com.jeeplus.modules.filing.earlyEngineering.mapper.ReviewStageMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 核准阶段Service
+ *
+ * @author qy
+ * @version 2021-03-25
+ */
+@Service
+@Transactional(readOnly = true)
+public class ReviewStageService extends CrudService<ReviewStageMapper, ReviewStage> {
+
+
+	@Override
+	public ReviewStage get(ReviewStage entity) {
+		return super.get(entity);
+	}
+
+	@Override
+	public List<ReviewStage> findList(ReviewStage entity) {
+		return super.findList(entity);
+	}
+
+	@Override
+	public Page<ReviewStage> findPage(Page<ReviewStage> page, ReviewStage entity) {
+		return super.findPage(page, entity);
+	}
+
+	public Page<ReviewStage> findAllPage(Page<ReviewStage> page, ReviewStage entity){
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		page.setList(mapper.findAllList(entity));
+		return page;
+	}
+
+	public Page<ReviewStage> findChildPage(Page<ReviewStage> page, ReviewStage entity) {
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		page.setList(mapper.findChildList(entity));
+		return page;
+	}
+
+
+
+	@Override
+	public void delete(ReviewStage entity) {
+		super.delete(entity);
+	}
+
+	@Override
+	@Transactional(readOnly = false)
+	public void save(ReviewStage entity) {
+		Integer byCode = mapper.findByCode(entity);
+		if (0 == byCode || null == byCode) {
+			entity.preInsert();
+			mapper.insert(entity);
+		} else {
+			entity.preUpdate();
+			mapper.update(entity);
+		}
+	}
+
+	public Integer findByCode(ReviewStage entity) {
+		return mapper.findByCode(entity);
+	}
+}

+ 242 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/ApplicationForController.java

@@ -0,0 +1,242 @@
+package com.jeeplus.modules.filing.earlyEngineering.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.earlyEngineering.entity.ApplicationFor;
+import com.jeeplus.modules.filing.earlyEngineering.service.ApplicationForService;
+import com.jeeplus.modules.filing.filingImages.service.FilingImagesService;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 报建审批Controller
+ * @author qy
+ * @version 2021-03-24
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/filing/applicationFor")
+public class ApplicationForController extends BaseController {
+
+	@Autowired
+	private ApplicationForService applicationForService;
+
+	@Autowired
+	private FilingImagesService filingImagesService;
+
+	@ModelAttribute
+	public ApplicationFor get(@RequestParam(required=false) String id) {
+		ApplicationFor entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = applicationForService.get(id);
+		}
+		if (entity == null){
+			entity = new ApplicationFor();
+		}
+		return entity;
+	}
+	
+	/**
+	 * 报建审批列表页面
+	 */
+	@RequiresPermissions("test:filing:applicationFor:list")
+	@RequestMapping(value = {"list", ""})
+	public String list(ApplicationFor applicationFor, Model model) {
+		model.addAttribute("applicationFor", applicationFor);
+		return "modules/filing/applicationFor/applicationForList";
+	}
+	
+		/**
+	 * 报建审批列表数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:applicationFor:list")
+	@RequestMapping(value = "data")
+	public Map<String, Object> data(ApplicationFor applicationFor, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<ApplicationFor> page = applicationForService.findPage(new Page<ApplicationFor>(request, response,-1), applicationFor);
+		return getBootstrapData(page);
+	}
+
+	/**
+	 * 查看,增加,报建审批表单页面
+	 */
+	@RequiresPermissions(value={"test:filing:applicationFor:view","test:filing:applicationFor:add","test:filing:applicationFor:edit"},logical=Logical.OR)
+	@RequestMapping(value = "form")
+	public String form(ApplicationFor applicationFor, Model model) {
+		model.addAttribute("applicationFor", applicationFor);
+		return "modules/filing/applicationFor/applicationForForm";
+	}
+
+	
+	/**
+	 * 保存报建审批
+	 */
+	@ResponseBody
+	@RequiresPermissions(value={"test:filing:applicationFor:add","test:filing:applicationFor:edit"},logical=Logical.OR)
+	@RequestMapping(value = "save")
+	public AjaxJson save(ApplicationFor applicationFor, Model model) throws Exception{
+		AjaxJson j = new AjaxJson();
+		/**
+		 * 后台hibernate-validation插件校验
+		 */
+		String errMsg = beanValidator(applicationFor);
+		if (StringUtils.isNotBlank(errMsg)){
+			j.setSuccess(false);
+			j.setMsg(errMsg);
+			return j;
+		}
+		//新增或编辑表单保存
+		applicationForService.save(applicationFor);//保存
+		j.setSuccess(true);
+		j.setMsg("保存报建审批成功");
+		return j;
+	}
+
+	/**
+	 * 保存报建审批
+	 */
+	@ResponseBody
+	@RequiresPermissions(value={"test:filing:applicationFor:add","test:filing:applicationFor:edit"},logical=Logical.OR)
+	@RequestMapping(value = "updateSave")
+	public AjaxJson updateSave(ApplicationFor applicationFor, Model model) throws Exception{
+		AjaxJson j = new AjaxJson();
+		/**
+		 * 后台hibernate-validation插件校验
+		 */
+		String errMsg = beanValidator(applicationFor);
+		if (StringUtils.isNotBlank(errMsg)){
+			j.setSuccess(false);
+			j.setMsg(errMsg);
+			return j;
+		}
+		//新增或编辑表单保存
+		applicationForService.save(applicationFor);//保存
+		j.setSuccess(true);
+		j.setMsg("保存报建审批成功");
+		return j;
+	}
+
+
+	/**
+	 * 删除报建审批
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:applicationFor:del")
+	@RequestMapping(value = "delete")
+	public AjaxJson delete(ApplicationFor applicationFor) {
+		AjaxJson j = new AjaxJson();
+		applicationForService.delete(applicationFor);
+		j.setMsg("删除报建审批成功");
+		return j;
+	}
+	
+	/**
+	 * 批量删除报建审批
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:applicationFor:del")
+	@RequestMapping(value = "deleteAll")
+	public AjaxJson deleteAll(String ids) {
+		AjaxJson j = new AjaxJson();
+		String idArray[] =ids.split(",");
+		for(String id : idArray){
+			applicationForService.delete(applicationForService.get(id));
+		}
+		j.setMsg("删除报建审批成功");
+		return j;
+	}
+	
+	/**
+	 * 导出excel文件
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:applicationFor:export")
+    @RequestMapping(value = "export")
+    public AjaxJson exportFile(ApplicationFor applicationFor, HttpServletRequest request, HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+            String fileName = "报建审批"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<ApplicationFor> page = applicationForService.findAllPage(new Page<ApplicationFor>(request, response, -1), applicationFor);
+    		new ExportExcel("报建审批", ApplicationFor.class).setDataList(page.getList()).write(response, fileName).dispose();
+    		j.setSuccess(true);
+    		j.setMsg("导出成功!");
+    		return j;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导出报建审批记录失败!失败信息:"+e.getMessage());
+		}
+			return j;
+    }
+
+    
+    @ResponseBody
+    @RequestMapping(value = "detail")
+	public Map<String, Object> detail(ApplicationFor applicationFor, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<ApplicationFor> page = applicationForService.findChildPage(new Page<ApplicationFor>(request, response), applicationFor);
+		return getBootstrapData(page);
+	}
+	
+
+	/**
+	 * 导入Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:applicationFor:import")
+    @RequestMapping(value = "import")
+   	public AjaxJson importFile(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<ApplicationFor> list = ei.getDataList(ApplicationFor.class);
+			for (ApplicationFor applicationFor :
+					list) {
+				applicationForService.save(applicationFor);
+			}
+			j.setMsg( "已成功导入条报建审批记录");
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入报建审批失败!失败信息:"+e.getMessage());
+		}
+		return j;
+    }
+	
+	/**
+	 * 下载导入报建审批数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:applicationFor:import")
+    @RequestMapping(value = "import/template")
+     public AjaxJson importFileTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+            String fileName = "报建审批数据导入模板.xlsx";
+    		List<ApplicationFor> list = Lists.newArrayList(); 
+    		new ExportExcel("报建审批数据", ApplicationFor.class, 1).setDataList(list).write(response, fileName).dispose();
+    		return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+    }
+	
+
+}

+ 242 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/BiddingContractController.java

@@ -0,0 +1,242 @@
+package com.jeeplus.modules.filing.earlyEngineering.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.earlyEngineering.entity.BiddingContract;
+import com.jeeplus.modules.filing.earlyEngineering.service.BiddingContractService;
+import com.jeeplus.modules.filing.filingImages.service.FilingImagesService;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 招标与合同管理Controller
+ * @author qy
+ * @version 2021-03-24
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/filing/biddingContract")
+public class BiddingContractController extends BaseController {
+
+	@Autowired
+	private BiddingContractService biddingContractService;
+
+	@Autowired
+	private FilingImagesService filingImagesService;
+
+	@ModelAttribute
+	public BiddingContract get(@RequestParam(required=false) String id) {
+		BiddingContract entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = biddingContractService.get(id);
+		}
+		if (entity == null){
+			entity = new BiddingContract();
+		}
+		return entity;
+	}
+	
+	/**
+	 * 招标与合同管理列表页面
+	 */
+	@RequiresPermissions("test:filing:biddingContract:list")
+	@RequestMapping(value = {"list", ""})
+	public String list(BiddingContract biddingContract, Model model) {
+		model.addAttribute("biddingContract", biddingContract);
+		return "modules/filing/biddingContract/biddingContractList";
+	}
+	
+		/**
+	 * 招标与合同管理列表数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:biddingContract:list")
+	@RequestMapping(value = "data")
+	public Map<String, Object> data(BiddingContract biddingContract, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<BiddingContract> page = biddingContractService.findPage(new Page<BiddingContract>(request, response,-1), biddingContract);
+		return getBootstrapData(page);
+	}
+
+	/**
+	 * 查看,增加,招标与合同管理表单页面
+	 */
+	@RequiresPermissions(value={"test:filing:biddingContract:view","test:filing:biddingContract:add","test:filing:biddingContract:edit"},logical=Logical.OR)
+	@RequestMapping(value = "form")
+	public String form(BiddingContract biddingContract, Model model) {
+		model.addAttribute("biddingContract", biddingContract);
+		return "modules/filing/biddingContract/biddingContractForm";
+	}
+
+	
+	/**
+	 * 保存招标与合同管理
+	 */
+	@ResponseBody
+	@RequiresPermissions(value={"test:filing:biddingContract:add","test:filing:biddingContract:edit"},logical=Logical.OR)
+	@RequestMapping(value = "save")
+	public AjaxJson save(BiddingContract biddingContract, Model model) throws Exception{
+		AjaxJson j = new AjaxJson();
+		/**
+		 * 后台hibernate-validation插件校验
+		 */
+		String errMsg = beanValidator(biddingContract);
+		if (StringUtils.isNotBlank(errMsg)){
+			j.setSuccess(false);
+			j.setMsg(errMsg);
+			return j;
+		}
+		//新增或编辑表单保存
+		biddingContractService.save(biddingContract);//保存
+		j.setSuccess(true);
+		j.setMsg("保存招标与合同管理成功");
+		return j;
+	}
+
+	/**
+	 * 保存招标与合同管理
+	 */
+	@ResponseBody
+	@RequiresPermissions(value={"test:filing:biddingContract:add","test:filing:biddingContract:edit"},logical=Logical.OR)
+	@RequestMapping(value = "updateSave")
+	public AjaxJson updateSave(BiddingContract biddingContract, Model model) throws Exception{
+		AjaxJson j = new AjaxJson();
+		/**
+		 * 后台hibernate-validation插件校验
+		 */
+		String errMsg = beanValidator(biddingContract);
+		if (StringUtils.isNotBlank(errMsg)){
+			j.setSuccess(false);
+			j.setMsg(errMsg);
+			return j;
+		}
+		//新增或编辑表单保存
+		biddingContractService.save(biddingContract);//保存
+		j.setSuccess(true);
+		j.setMsg("保存招标与合同管理成功");
+		return j;
+	}
+
+
+	/**
+	 * 删除招标与合同管理
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:biddingContract:del")
+	@RequestMapping(value = "delete")
+	public AjaxJson delete(BiddingContract biddingContract) {
+		AjaxJson j = new AjaxJson();
+		biddingContractService.delete(biddingContract);
+		j.setMsg("删除招标与合同管理成功");
+		return j;
+	}
+	
+	/**
+	 * 批量删除招标与合同管理
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:biddingContract:del")
+	@RequestMapping(value = "deleteAll")
+	public AjaxJson deleteAll(String ids) {
+		AjaxJson j = new AjaxJson();
+		String idArray[] =ids.split(",");
+		for(String id : idArray){
+			biddingContractService.delete(biddingContractService.get(id));
+		}
+		j.setMsg("删除招标与合同管理成功");
+		return j;
+	}
+	
+	/**
+	 * 导出excel文件
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:biddingContract:export")
+    @RequestMapping(value = "export")
+    public AjaxJson exportFile(BiddingContract biddingContract, HttpServletRequest request, HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+            String fileName = "招标与合同管理"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<BiddingContract> page = biddingContractService.findAllPage(new Page<BiddingContract>(request, response, -1), biddingContract);
+    		new ExportExcel("招标与合同管理", BiddingContract.class).setDataList(page.getList()).write(response, fileName).dispose();
+    		j.setSuccess(true);
+    		j.setMsg("导出成功!");
+    		return j;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导出招标与合同管理记录失败!失败信息:"+e.getMessage());
+		}
+			return j;
+    }
+
+    
+    @ResponseBody
+    @RequestMapping(value = "detail")
+	public Map<String, Object> detail(BiddingContract biddingContract, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<BiddingContract> page = biddingContractService.findChildPage(new Page<BiddingContract>(request, response), biddingContract);
+		return getBootstrapData(page);
+	}
+	
+
+	/**
+	 * 导入Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:biddingContract:import")
+    @RequestMapping(value = "import")
+   	public AjaxJson importFile(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<BiddingContract> list = ei.getDataList(BiddingContract.class);
+			for (BiddingContract biddingContract :
+					list) {
+				biddingContractService.save(biddingContract);
+			}
+			j.setMsg( "已成功导入条招标与合同管理记录");
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入招标与合同管理失败!失败信息:"+e.getMessage());
+		}
+		return j;
+    }
+	
+	/**
+	 * 下载导入招标与合同管理数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:biddingContract:import")
+    @RequestMapping(value = "import/template")
+     public AjaxJson importFileTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+            String fileName = "招标与合同管理数据导入模板.xlsx";
+    		List<BiddingContract> list = Lists.newArrayList(); 
+    		new ExportExcel("招标与合同管理数据", BiddingContract.class, 1).setDataList(list).write(response, fileName).dispose();
+    		return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+    }
+	
+
+}

+ 250 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/DesignStageController.java

@@ -0,0 +1,250 @@
+package com.jeeplus.modules.filing.earlyEngineering.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.earlyEngineering.entity.DesignStage;
+import com.jeeplus.modules.filing.earlyEngineering.service.DesignStageService;
+import com.jeeplus.modules.filing.filingImages.entity.FilingImages;
+import com.jeeplus.modules.filing.filingImages.service.FilingImagesService;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+/**
+ * 初设阶段Controller
+ * @author qy
+ * @version 2021-03-24
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/filing/designStage")
+public class DesignStageController extends BaseController {
+
+	@Autowired
+	private DesignStageService designStageService;
+
+	@Autowired
+	private FilingImagesService filingImagesService;
+
+	@ModelAttribute
+	public DesignStage get(@RequestParam(required=false) String id) {
+		DesignStage entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = designStageService.get(id);
+		}
+		if (entity == null){
+			entity = new DesignStage();
+		}
+		return entity;
+	}
+	
+	/**
+	 * 初设阶段列表页面
+	 */
+	@RequiresPermissions("test:filing:designStage:list")
+	@RequestMapping(value = {"list", ""})
+	public String list(DesignStage designStage, Model model) {
+		model.addAttribute("designStage", designStage);
+		return "modules/filing/designStage/designStageList";
+	}
+	
+		/**
+	 * 初设阶段列表数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:designStage:list")
+	@RequestMapping(value = "data")
+	public Map<String, Object> data(DesignStage designStage, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<DesignStage> page = designStageService.findPage(new Page<DesignStage>(request, response,-1), designStage);
+		return getBootstrapData(page);
+	}
+
+	/**
+	 * 查看,增加,初设阶段表单页面
+	 */
+	@RequiresPermissions(value={"test:filing:designStage:view","test:filing:designStage:add","test:filing:designStage:edit"},logical=Logical.OR)
+	@RequestMapping(value = "form")
+	public String form(DesignStage designStage, Model model) {
+		model.addAttribute("designStage", designStage);
+		return "modules/filing/designStage/designStageForm";
+	}
+
+	
+	/**
+	 * 保存初设阶段
+	 */
+	@ResponseBody
+	@RequiresPermissions(value={"test:filing:designStage:add","test:filing:designStage:edit"},logical=Logical.OR)
+	@RequestMapping(value = "save")
+	public AjaxJson save(DesignStage designStage, Model model) throws Exception{
+		AjaxJson j = new AjaxJson();
+		/**
+		 * 后台hibernate-validation插件校验
+		 */
+		String errMsg = beanValidator(designStage);
+		if (StringUtils.isNotBlank(errMsg)){
+			j.setSuccess(false);
+			j.setMsg(errMsg);
+			return j;
+		}
+		//新增或编辑表单保存
+		designStageService.save(designStage);//保存
+		j.setSuccess(true);
+		j.setMsg("保存初设阶段成功");
+		return j;
+	}
+
+	/**
+	 * 保存初设阶段
+	 */
+	@ResponseBody
+	@RequiresPermissions(value={"test:filing:designStage:add","test:filing:designStage:edit"},logical=Logical.OR)
+	@RequestMapping(value = "updateSave")
+	public AjaxJson updateSave(DesignStage designStage, Model model) throws Exception{
+		AjaxJson j = new AjaxJson();
+		/**
+		 * 后台hibernate-validation插件校验
+		 */
+		String errMsg = beanValidator(designStage);
+		if (StringUtils.isNotBlank(errMsg)){
+			j.setSuccess(false);
+			j.setMsg(errMsg);
+			return j;
+		}
+		//新增或编辑表单保存
+		designStageService.save(designStage);//保存
+		j.setSuccess(true);
+		j.setMsg("保存初设阶段成功");
+		return j;
+	}
+
+
+	/**
+	 * 删除初设阶段
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:designStage:del")
+	@RequestMapping(value = "delete")
+	public AjaxJson delete(DesignStage designStage) {
+		AjaxJson j = new AjaxJson();
+		designStageService.delete(designStage);
+		j.setMsg("删除初设阶段成功");
+		return j;
+	}
+	
+	/**
+	 * 批量删除初设阶段
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:designStage:del")
+	@RequestMapping(value = "deleteAll")
+	public AjaxJson deleteAll(String ids) {
+		AjaxJson j = new AjaxJson();
+		String idArray[] =ids.split(",");
+		for(String id : idArray){
+			designStageService.delete(designStageService.get(id));
+		}
+		j.setMsg("删除初设阶段成功");
+		return j;
+	}
+	
+	/**
+	 * 导出excel文件
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:designStage:export")
+    @RequestMapping(value = "export")
+    public AjaxJson exportFile(DesignStage designStage, HttpServletRequest request, HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+            String fileName = "初设阶段"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<DesignStage> page = designStageService.findAllPage(new Page<DesignStage>(request, response, -1), designStage);
+    		new ExportExcel("初设阶段", DesignStage.class).setDataList(page.getList()).write(response, fileName).dispose();
+    		j.setSuccess(true);
+    		j.setMsg("导出成功!");
+    		return j;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导出初设阶段记录失败!失败信息:"+e.getMessage());
+		}
+			return j;
+    }
+
+    
+    @ResponseBody
+    @RequestMapping(value = "detail")
+	public Map<String, Object> detail(DesignStage designStage, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<DesignStage> page = designStageService.findChildPage(new Page<DesignStage>(request, response), designStage);
+		return getBootstrapData(page);
+	}
+	
+
+	/**
+	 * 导入Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:designStage:import")
+    @RequestMapping(value = "import")
+   	public AjaxJson importFile(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<DesignStage> list = ei.getDataList(DesignStage.class);
+			for (DesignStage designStage :
+					list) {
+				designStageService.save(designStage);
+			}
+			j.setMsg( "已成功导入条初设阶段记录");
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入初设阶段失败!失败信息:"+e.getMessage());
+		}
+		return j;
+    }
+	
+	/**
+	 * 下载导入初设阶段数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:designStage:import")
+    @RequestMapping(value = "import/template")
+     public AjaxJson importFileTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+            String fileName = "初设阶段数据导入模板.xlsx";
+    		List<DesignStage> list = Lists.newArrayList(); 
+    		new ExportExcel("初设阶段数据", DesignStage.class, 1).setDataList(list).write(response, fileName).dispose();
+    		return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+    }
+	
+
+}

+ 242 - 0
src/main/java/com/jeeplus/modules/filing/earlyEngineering/web/ReviewStageController.java

@@ -0,0 +1,242 @@
+package com.jeeplus.modules.filing.earlyEngineering.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.earlyEngineering.entity.ReviewStage;
+import com.jeeplus.modules.filing.earlyEngineering.service.ReviewStageService;
+import com.jeeplus.modules.filing.filingImages.service.FilingImagesService;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 批概阶段Controller
+ * @author qy
+ * @version 2021-03-24
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/filing/reviewStage")
+public class ReviewStageController extends BaseController {
+
+	@Autowired
+	private ReviewStageService reviewStageService;
+
+	@Autowired
+	private FilingImagesService filingImagesService;
+
+	@ModelAttribute
+	public ReviewStage get(@RequestParam(required=false) String id) {
+		ReviewStage entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = reviewStageService.get(id);
+		}
+		if (entity == null){
+			entity = new ReviewStage();
+		}
+		return entity;
+	}
+	
+	/**
+	 * 批概阶段列表页面
+	 */
+	@RequiresPermissions("test:filing:reviewStage:list")
+	@RequestMapping(value = {"list", ""})
+	public String list(ReviewStage reviewStage, Model model) {
+		model.addAttribute("reviewStage", reviewStage);
+		return "modules/filing/reviewStage/reviewStageList";
+	}
+	
+		/**
+	 * 批概阶段列表数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:reviewStage:list")
+	@RequestMapping(value = "data")
+	public Map<String, Object> data(ReviewStage reviewStage, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<ReviewStage> page = reviewStageService.findPage(new Page<ReviewStage>(request, response,-1), reviewStage);
+		return getBootstrapData(page);
+	}
+
+	/**
+	 * 查看,增加,批概阶段表单页面
+	 */
+	@RequiresPermissions(value={"test:filing:reviewStage:view","test:filing:reviewStage:add","test:filing:reviewStage:edit"},logical=Logical.OR)
+	@RequestMapping(value = "form")
+	public String form(ReviewStage reviewStage, Model model) {
+		model.addAttribute("reviewStage", reviewStage);
+		return "modules/filing/reviewStage/reviewStageForm";
+	}
+
+	
+	/**
+	 * 保存批概阶段
+	 */
+	@ResponseBody
+	@RequiresPermissions(value={"test:filing:reviewStage:add","test:filing:reviewStage:edit"},logical=Logical.OR)
+	@RequestMapping(value = "save")
+	public AjaxJson save(ReviewStage reviewStage, Model model) throws Exception{
+		AjaxJson j = new AjaxJson();
+		/**
+		 * 后台hibernate-validation插件校验
+		 */
+		String errMsg = beanValidator(reviewStage);
+		if (StringUtils.isNotBlank(errMsg)){
+			j.setSuccess(false);
+			j.setMsg(errMsg);
+			return j;
+		}
+		//新增或编辑表单保存
+		reviewStageService.save(reviewStage);//保存
+		j.setSuccess(true);
+		j.setMsg("保存批概阶段成功");
+		return j;
+	}
+
+	/**
+	 * 保存批概阶段
+	 */
+	@ResponseBody
+	@RequiresPermissions(value={"test:filing:reviewStage:add","test:filing:reviewStage:edit"},logical=Logical.OR)
+	@RequestMapping(value = "updateSave")
+	public AjaxJson updateSave(ReviewStage reviewStage, Model model) throws Exception{
+		AjaxJson j = new AjaxJson();
+		/**
+		 * 后台hibernate-validation插件校验
+		 */
+		String errMsg = beanValidator(reviewStage);
+		if (StringUtils.isNotBlank(errMsg)){
+			j.setSuccess(false);
+			j.setMsg(errMsg);
+			return j;
+		}
+		//新增或编辑表单保存
+		reviewStageService.save(reviewStage);//保存
+		j.setSuccess(true);
+		j.setMsg("保存批概阶段成功");
+		return j;
+	}
+
+
+	/**
+	 * 删除批概阶段
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:reviewStage:del")
+	@RequestMapping(value = "delete")
+	public AjaxJson delete(ReviewStage reviewStage) {
+		AjaxJson j = new AjaxJson();
+		reviewStageService.delete(reviewStage);
+		j.setMsg("删除批概阶段成功");
+		return j;
+	}
+	
+	/**
+	 * 批量删除批概阶段
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:reviewStage:del")
+	@RequestMapping(value = "deleteAll")
+	public AjaxJson deleteAll(String ids) {
+		AjaxJson j = new AjaxJson();
+		String idArray[] =ids.split(",");
+		for(String id : idArray){
+			reviewStageService.delete(reviewStageService.get(id));
+		}
+		j.setMsg("删除批概阶段成功");
+		return j;
+	}
+	
+	/**
+	 * 导出excel文件
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:reviewStage:export")
+    @RequestMapping(value = "export")
+    public AjaxJson exportFile(ReviewStage reviewStage, HttpServletRequest request, HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+            String fileName = "批概阶段"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<ReviewStage> page = reviewStageService.findAllPage(new Page<ReviewStage>(request, response, -1), reviewStage);
+    		new ExportExcel("批概阶段", ReviewStage.class).setDataList(page.getList()).write(response, fileName).dispose();
+    		j.setSuccess(true);
+    		j.setMsg("导出成功!");
+    		return j;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导出批概阶段记录失败!失败信息:"+e.getMessage());
+		}
+			return j;
+    }
+
+    
+    @ResponseBody
+    @RequestMapping(value = "detail")
+	public Map<String, Object> detail(ReviewStage reviewStage, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<ReviewStage> page = reviewStageService.findChildPage(new Page<ReviewStage>(request, response), reviewStage);
+		return getBootstrapData(page);
+	}
+	
+
+	/**
+	 * 导入Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:reviewStage:import")
+    @RequestMapping(value = "import")
+   	public AjaxJson importFile(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<ReviewStage> list = ei.getDataList(ReviewStage.class);
+			for (ReviewStage reviewStage :
+					list) {
+				reviewStageService.save(reviewStage);
+			}
+			j.setMsg( "已成功导入条批概阶段记录");
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入批概阶段失败!失败信息:"+e.getMessage());
+		}
+		return j;
+    }
+	
+	/**
+	 * 下载导入批概阶段数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:filing:reviewStage:import")
+    @RequestMapping(value = "import/template")
+     public AjaxJson importFileTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+            String fileName = "批概阶段数据导入模板.xlsx";
+    		List<ReviewStage> list = Lists.newArrayList(); 
+    		new ExportExcel("批概阶段数据", ReviewStage.class, 1).setDataList(list).write(response, fileName).dispose();
+    		return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+    }
+	
+
+}

+ 230 - 0
src/main/java/com/jeeplus/modules/filing/filingImages/service/FilingImagesService.java

@@ -17,8 +17,10 @@ import com.jeeplus.modules.filing.approvalStage.mapper.EarlyStageMapper;
 import com.jeeplus.modules.filing.approvalStage.mapper.StudyStageMapper;
 import com.jeeplus.modules.filing.basicInformation.entity.BasicInformation;
 import com.jeeplus.modules.filing.basicInformation.mapper.BasicInformationMapper;
+import com.jeeplus.modules.filing.earlyEngineering.entity.BiddingContract;
 import com.jeeplus.modules.filing.earlyEngineering.entity.DesignStage;
 import com.jeeplus.modules.filing.earlyEngineering.entity.ReviewStage;
+import com.jeeplus.modules.filing.earlyEngineering.mapper.BiddingContractMapper;
 import com.jeeplus.modules.filing.earlyEngineering.mapper.DesignStageMapper;
 import com.jeeplus.modules.filing.earlyEngineering.mapper.ReviewStageMapper;
 import com.jeeplus.modules.filing.filingImages.entity.FilingImages;
@@ -69,6 +71,9 @@ public class FilingImagesService extends CrudService<FilingImagesMapper, FilingI
     @Autowired
     private ReviewStageMapper reviewStageMapper;
 
+    @Autowired
+    private BiddingContractMapper biddingContractMapper;
+
     /**
      * 属性文件加载对象
      */
@@ -546,4 +551,229 @@ public class FilingImagesService extends CrudService<FilingImagesMapper, FilingI
         return file.getPath();
     }
 
+
+    /**
+     * 通过项目id导出项目的招标与合同管理
+     *
+     * @param idList
+     */
+    public String exportBiddingContract(List<String> idList) throws Exception {
+        //设置下载的压缩包名(固定字符+时间戳)
+        long timeMillis = System.currentTimeMillis();
+        String fileLocality = "项目附件_" + timeMillis;
+        //判定当前系统
+        String path = Global.getPath();
+        path = path + "/" + fileLocality;
+        //检查该路径对应的目录是否存在. 如果不存在则创建目录
+        File dir = new File(path);
+        if (!dir.exists()) {
+            dir.mkdirs();
+        }
+
+        List<BiddingContract> allList = new ArrayList<>();
+        //通过id查询出所有的项目信息
+        List<BiddingContract> byIdList = biddingContractMapper.findAll(idList);
+
+        for (BiddingContract a :
+                byIdList) {
+            allList.add(a);
+            List<BiddingContract> childList = biddingContractMapper.findChildList(a);
+            if (childList.size() > 0) {
+                for (BiddingContract b :
+                        childList) {
+                    allList.add(b);
+                }
+            }
+        }
+        //循环遍历,判断项目是否存在
+        for (BiddingContract a :
+                allList) {
+            File dirFile = null;
+            List<FilingImages> exportList = new ArrayList<>();
+            List<FilingImages> exportList2 = new ArrayList<>();
+            List<FilingImages> exportList3 = new ArrayList<>();
+            List<FilingImages> exportList4 = new ArrayList<>();
+            List<FilingImages> exportList5 = new ArrayList<>();
+            List<FilingImages> exportList6 = new ArrayList<>();
+            List<FilingImages> exportList7 = new ArrayList<>();
+            String downloadPath = path + "/" + a.getProjectCode();
+
+            String letterDesign = a.getLetterDesign();
+            String disigningContract = a.getDisigningContract();
+            String ownerDapartment = a.getOwnerDapartment();
+            String inspectionControl = a.getInspectionControl();
+            String letterAcceptance = a.getLetterAcceptance();
+            String conContract = a.getConContract();
+            String otherContracts = a.getOtherContracts();
+
+
+            if (null!=letterDesign && !"".equals(letterDesign)) {
+                dirFile = new File(downloadPath + "/招标与合同管理");
+                if (letterDesign.contains("|")) {
+                    String[] split = letterDesign.split("\\|");
+                    for (int i = 0; i < split.length; i++) {
+                        FilingImages filingImages = new FilingImages();
+                        filingImages.setImgPath(split[i]);
+                        filingImages.setProjectCode(a.getProjectCode());
+                        filingImages.setPurpose("招标与合同管理附件");
+                        exportList.add(filingImages);
+                    }
+                } else {
+                    FilingImages filingImages = new FilingImages();
+                    filingImages.setImgPath(letterDesign);
+                    filingImages.setProjectCode(a.getProjectCode());
+                    filingImages.setPurpose("招标与合同管理附件");
+                    exportList.add(filingImages);
+                }
+            }
+
+            if (null!=disigningContract && !"".equals(disigningContract)) {
+                dirFile = new File(downloadPath + "/招标与合同管理");
+                if (disigningContract.contains("|")) {
+                    String[] split = disigningContract.split("\\|");
+                    for (int i = 0; i < split.length; i++) {
+                        FilingImages filingImages = new FilingImages();
+                        filingImages.setImgPath(split[i]);
+                        filingImages.setProjectCode(a.getProjectCode());
+                        filingImages.setPurpose("招标与合同管理附件");
+                        exportList2.add(filingImages);
+                    }
+                } else {
+                    FilingImages filingImages = new FilingImages();
+                    filingImages.setImgPath(disigningContract);
+                    filingImages.setProjectCode(a.getProjectCode());
+                    filingImages.setPurpose("招标与合同管理附件");
+                    exportList2.add(filingImages);
+                }
+            }
+
+            if (null!=ownerDapartment && !"".equals(ownerDapartment)) {
+                dirFile = new File(downloadPath + "/招标与合同管理");
+                if (ownerDapartment.contains("|")) {
+                    String[] split = ownerDapartment.split("\\|");
+                    for (int i = 0; i < split.length; i++) {
+                        FilingImages filingImages = new FilingImages();
+                        filingImages.setImgPath(split[i]);
+                        filingImages.setProjectCode(a.getProjectCode());
+                        filingImages.setPurpose("招标与合同管理附件");
+                        exportList3.add(filingImages);
+                    }
+                } else {
+                    FilingImages filingImages = new FilingImages();
+                    filingImages.setImgPath(ownerDapartment);
+                    filingImages.setProjectCode(a.getProjectCode());
+                    filingImages.setPurpose("招标与合同管理附件");
+                    exportList3.add(filingImages);
+                }
+            }
+
+            if (null!=inspectionControl && !"".equals(inspectionControl)) {
+                dirFile = new File(downloadPath + "/招标与合同管理");
+                if (inspectionControl.contains("|")) {
+                    String[] split = inspectionControl.split("\\|");
+                    for (int i = 0; i < split.length; i++) {
+                        FilingImages filingImages = new FilingImages();
+                        filingImages.setImgPath(split[i]);
+                        filingImages.setProjectCode(a.getProjectCode());
+                        filingImages.setPurpose("招标与合同管理附件");
+                        exportList4.add(filingImages);
+                    }
+                } else {
+                    FilingImages filingImages = new FilingImages();
+                    filingImages.setImgPath(inspectionControl);
+                    filingImages.setProjectCode(a.getProjectCode());
+                    filingImages.setPurpose("招标与合同管理附件");
+                    exportList4.add(filingImages);
+                }
+            }
+
+            if (null!=letterAcceptance && !"".equals(letterAcceptance)) {
+                dirFile = new File(downloadPath + "/招标与合同管理");
+                if (letterAcceptance.contains("|")) {
+                    String[] split = letterAcceptance.split("\\|");
+                    for (int i = 0; i < split.length; i++) {
+                        FilingImages filingImages = new FilingImages();
+                        filingImages.setImgPath(split[i]);
+                        filingImages.setProjectCode(a.getProjectCode());
+                        filingImages.setPurpose("招标与合同管理附件");
+                        exportList5.add(filingImages);
+                    }
+                } else {
+                    FilingImages filingImages = new FilingImages();
+                    filingImages.setImgPath(letterAcceptance);
+                    filingImages.setProjectCode(a.getProjectCode());
+                    filingImages.setPurpose("招标与合同管理附件");
+                    exportList5.add(filingImages);
+                }
+            }
+
+            if (null!=conContract && !"".equals(conContract)) {
+                dirFile = new File(downloadPath + "/招标与合同管理");
+                if (conContract.contains("|")) {
+                    String[] split = conContract.split("\\|");
+                    for (int i = 0; i < split.length; i++) {
+                        FilingImages filingImages = new FilingImages();
+                        filingImages.setImgPath(split[i]);
+                        filingImages.setProjectCode(a.getProjectCode());
+                        filingImages.setPurpose("招标与合同管理附件");
+                        exportList6.add(filingImages);
+                    }
+                } else {
+                    FilingImages filingImages = new FilingImages();
+                    filingImages.setImgPath(conContract);
+                    filingImages.setProjectCode(a.getProjectCode());
+                    filingImages.setPurpose("招标与合同管理附件");
+                    exportList6.add(filingImages);
+                }
+            }
+
+            if (null!=otherContracts && !"".equals(otherContracts)) {
+                dirFile = new File(downloadPath + "/招标与合同管理");
+                if (otherContracts.contains("|")) {
+                    String[] split = otherContracts.split("\\|");
+                    for (int i = 0; i < split.length; i++) {
+                        FilingImages filingImages = new FilingImages();
+                        filingImages.setImgPath(split[i]);
+                        filingImages.setProjectCode(a.getProjectCode());
+                        filingImages.setPurpose("招标与合同管理附件");
+                        exportList7.add(filingImages);
+                    }
+                } else {
+                    FilingImages filingImages = new FilingImages();
+                    filingImages.setImgPath(otherContracts);
+                    filingImages.setProjectCode(a.getProjectCode());
+                    filingImages.setPurpose("招标与合同管理附件");
+                    exportList7.add(filingImages);
+                }
+            }
+
+            if (exportList.size() > 0) {
+                this.disposeFileList(exportList, dirFile.getPath());
+            }
+            if (exportList2.size() > 0) {
+                this.disposeFileList(exportList2, dirFile.getPath());
+            }
+            if (exportList3.size() > 0) {
+                this.disposeFileList(exportList3, dirFile.getPath());
+            }
+            if (exportList4.size() > 0) {
+                this.disposeFileList(exportList4, dirFile.getPath());
+            }
+            if (exportList5.size() > 0) {
+                this.disposeFileList(exportList5, dirFile.getPath());
+            }
+            if (exportList6.size() > 0) {
+                this.disposeFileList(exportList6, dirFile.getPath());
+            }
+            if (exportList7.size() > 0) {
+                this.disposeFileList(exportList7, dirFile.getPath());
+            }
+
+        }
+        //处理完之后进行打包压缩并删除之前的文件
+        ZipCompressUtil zipUtil = new ZipCompressUtil();
+        File resultFile = new File(path);
+        File file = zipUtil.zipCompress(resultFile, true);
+        return file.getPath();
+    }
 }

+ 23 - 0
src/main/java/com/jeeplus/modules/filing/filingImages/web/FilingImagesController.java

@@ -175,5 +175,28 @@ public class FilingImagesController extends BaseController {
 	}
 
 
+	/**
+	 * 项目相应文件批量下载并压缩
+	 */
+	@RequestMapping(value = "exportBiddingContract")
+	public String exportBiddingContract(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		String listIds = request.getParameter("ids");
+		List<String> idList = new ArrayList<>();
+		if (null != listIds && !"".equals(listIds)) {
+			idList = Arrays.asList(listIds.split(","));
+		} else {
+			idList = basicInformationService.findAllId();
+		}
+		try {
+			String filePath = filingImagesService.exportBiddingContract(idList);
+			filingImagesService.downloadZipFile(filePath,response);
+			return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "批量下载项目文件失败!");
+		}
+		return "redirect:"+Global.getAdminPath()+"/filing/biddingContract/";
+	}
+
+
 
 }

+ 356 - 0
src/main/webapp/webpage/modules/filing/applicationFor/applicationForForm.jsp

@@ -0,0 +1,356 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>批概阶段管理</title>
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp" %>
+	<style type="text/css">
+		/* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+		.deal::-webkit-inner-spin-button {
+			-webkit-appearance: none !important;
+		}
+		.deal::-webkit-outer-spin-button {
+			-webkit-appearance: none !important;
+		}
+		input[type="number"]{
+			-moz-appearance:textfield;
+		}
+	</style>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+	        $('#initialDesignDate').datetimepicker({
+				 format: "YYYY-MM-DD"
+		    });
+		});
+
+		function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if(!isValidate){
+                return false;
+			}else{
+                jp.loading();
+                jp.post("${ctx}/filing/applicationFor/save",$('#inputForm').serialize(),function(data){
+                    if(data.success){
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    }else{
+                        jp.error(data.msg);
+                    }
+                })
+			}
+
+        }
+
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="applicationFor" action="${ctx}/filing/applicationFor/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<table class="table table-bordered">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编码:</label></td>
+					<td class="width-35">
+						<form:input path="projectCode" readonly="true" htmlEscape="false"  class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">单体编码:</label></td>
+					<td class="width-35">
+						<form:input path="monomerCode" readonly="true" htmlEscape="false"  class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-35">
+						<form:input path="entryName" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">用地预审意见(变电站) 文号</label></td>
+					<td class="width-35">
+						<form:input path="landNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">用地预审意见(变电站) 日期:</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='landDate'>
+							<input type='text'  name="landDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.landDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">用地预审意见(变电站) 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="landAnnex"  value="${applicationFor.landAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+		  		</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">环评批复(变电站、线路) 文号</label></td>
+					<td class="width-35">
+						<form:input path="eiaNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">环评批复(变电站、线路) 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='eiaDate'>
+							<input type='text'  name="eiaDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.eiaDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">环评批复(变电站、线路) 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="eiaAnnex"  value="${applicationFor.eiaAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">环评验收文号及日期 文号</label></td>
+					<td class="width-35">
+						<form:input path="acceptanceNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">环评验收文号及日期 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='acceptanceDate'>
+							<input type='text'  name="acceptanceDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.acceptanceDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">环评验收文号及日期 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="acceptanceAnnex"  value="${applicationFor.acceptanceAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">水保批复(变电站、线路) 文号</label></td>
+					<td class="width-35">
+						<form:input path="replyNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">水保批复(变电站、线路) 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='replyDate'>
+							<input type='text'  name="replyDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.replyDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">水保批复(变电站、线路) 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="replyAnnex"  value="${applicationFor.replyAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">水保验收文号及日期 文号</label></td>
+					<td class="width-35">
+						<form:input path="soilNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">水保验收文号及日期 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='soilDate'>
+							<input type='text'  name="soilDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.soilDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">水保验收文号及日期 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="soilannex"  value="${applicationFor.soilannex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">压覆矿藏复函(变电站) 文号</label></td>
+					<td class="width-35">
+						<form:input path="depositNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">压覆矿藏复函(变电站) 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='depositDate'>
+							<input type='text'  name="depositDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.depositDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">压覆矿藏复函(变电站) 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="depositAnnex"  value="${applicationFor.depositAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">地灾评估备案表(变电站) 文号</label></td>
+					<td class="width-35">
+						<form:input path="recordNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">地灾评估备案表(变电站) 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='recordDate'>
+							<input type='text'  name="recordDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.recordDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">地灾评估备案表(变电站) 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="recordAnnex"  value="${applicationFor.recordAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">选址意见书(变电站) 文号</label></td>
+					<td class="width-35">
+						<form:input path="siteProposalNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">选址意见书(变电站) 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='siteProposalDate'>
+							<input type='text'  name="siteProposalDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.siteProposalDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">选址意见书(变电站) 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="siteProposalAnnex"  value="${applicationFor.siteProposalAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">线路路径规划意见 文号</label></td>
+					<td class="width-35">
+						<form:input path="planningNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">线路路径规划意见 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='planningDate'>
+							<input type='text'  name="planningDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.planningDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">线路路径规划意见 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="planningAnnex"  value="${applicationFor.planningAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">用地规划许可证 文号</label></td>
+					<td class="width-35">
+						<form:input path="usePlanNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">用地规划许可证 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='usePlanDate'>
+							<input type='text'  name="usePlanDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.usePlanDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">用地规划许可证 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="usePlanAnnex"  value="${applicationFor.usePlanAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">征地补偿批复 文号</label></td>
+					<td class="width-35">
+						<form:input path="requisitonNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">征地补偿批复 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='requisitonDate'>
+							<input type='text'  name="requisitonDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.requisitonDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">征地补偿批复 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="requisitonAnnex"  value="${applicationFor.requisitonAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">建设用地批准书 文号</label></td>
+					<td class="width-35">
+						<form:input path="conLandNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">建设用地批准书 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='conLandDate'>
+							<input type='text'  name="conLandDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.conLandDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">建设用地批准书 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="conLandAnnex"  value="${applicationFor.conLandAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">划拨决定书 文号</label></td>
+					<td class="width-35">
+						<form:input path="transferNo" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">划拨决定书 日期</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='transferDate'>
+							<input type='text'  name="transferDate" class="form-control"  value="<fmt:formatDate value="${applicationFor.transferDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">地灾评估备案表(变电站) 附件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="recordAnnex"  value="${applicationFor.recordAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+		</div>
+		</form:form>
+</body>
+</html>

+ 769 - 0
src/main/webapp/webpage/modules/filing/applicationFor/applicationForList.js

@@ -0,0 +1,769 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#basicTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //显示详情按钮
+    	       detailView: true,
+    	       	//显示详细内容函数
+	           // detailFormatter: "detailFormatter",
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/filing/applicationFor/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该招标与合同管理记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/filing/applicationFor/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#basicTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+		/*		onPostBody:function(){
+					window.rowProps = undefined;
+					_table_rowspan("#basicTable" , 1);
+					_table_rowspan("#basicTable" , 2);
+					_table_rowspan("#basicTable" , 3);
+					_table_rowspan("#basicTable" , 4);
+					_table_rowspan("#basicTable" , 5);
+					return true;
+				},*/
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'projectCode',
+		        title: '项目编码',
+			    width: '100px',
+		        sortable: true,
+		        sortName: 'projectCode'
+		        ,formatter:function(value, row , index){
+			   if(value == null || value ==""){
+				   value = "-";
+			   }
+			   <c:choose>
+				   <c:when test="${fns:hasPermission('test:filing:approvalStage:edit')}">
+				      return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:when test="${fns:hasPermission('test:filing:approvalStage:view')}">
+				      return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:otherwise>
+				      return value;
+			      </c:otherwise>
+			   </c:choose>
+
+		        }
+		    }
+			,{
+		        field: 'monomerCode',
+		        title: '单体编码',
+		        sortable: true,
+			   width: '100px',
+		        sortName: 'monomerCode'
+
+		    }
+			,{
+		        field: 'entryName',
+		        title: '项目名称',
+					   width: '100px',
+		        sortable: true,
+		        sortName: 'entryName'
+
+		    }
+			,{
+		        field: 'landNo',
+		        title: '用地预审意见(变电站) 文号',
+			    width: '100px',
+		        sortable: true,
+		        sortName: 'landNo'
+		    },{
+					   field: 'landDate',
+					   title: '用地预审意见(变电站) 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'landDate'
+				   },{
+					   field: 'eiaNo',
+					   title: '环评批复(变电站、线路) 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'eiaNo'
+				   },{
+					   field: 'eiaDate',
+					   title: '环评批复(变电站、线路) 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'eiaDate'
+				   },{
+					   field: 'acceptanceNo',
+					   title: '环评验收文号及日期 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'acceptanceNo'
+				   },{
+					   field: 'acceptanceDate',
+					   title: '环评验收文号及日期 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'acceptanceDate'
+				   },{
+					   field: 'replyNo',
+					   title: '水保批复(变电站、线路) 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'replyNo'
+				   },{
+					   field: 'replyDate',
+					   title: '水保批复(变电站、线路) 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'replyDate'
+				   },{
+					   field: 'soilNo',
+					   title: '水保验收文号及日期 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'soilNo'
+				   },{
+					   field: 'soilDate',
+					   title: '水保验收文号及日期 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'soilDate'
+				   },{
+					   field: 'depositNo',
+					   title: '压覆矿藏复函(变电站) 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'depositNo'
+				   },{
+					   field: 'depositDate',
+					   title: '压覆矿藏复函(变电站) 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'depositDate'
+				   },{
+					   field: 'recordNo',
+					   title: '地灾评估备案表(变电站) 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'recordNo'
+				   },{
+					   field: 'recordDate',
+					   title: '地灾评估备案表(变电站) 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'recordDate'
+				   },{
+					   field: 'siteProposalNo',
+					   title: '选址意见书(变电站) 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'siteProposalNo'
+				   },{
+					   field: 'siteProposalDate',
+					   title: '选址意见书(变电站) 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'siteProposalDate'
+				   },{
+					   field: 'planningNo',
+					   title: '线路路径规划意见 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'planningNo'
+				   },{
+					   field: 'planningDate',
+					   title: '线路路径规划意见 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'planningDate'
+				   },{
+					   field: 'usePlanNo',
+					   title: '用地规划许可证 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'usePlanNo'
+				   },{
+					   field: 'usePlanDate',
+					   title: '用地规划许可证 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'usePlanDate'
+				   },{
+					   field: 'requisitonNo',
+					   title: '征地补偿批复 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'requisitonNo'
+				   },{
+					   field: 'requisitonDate',
+					   title: '征地补偿批复 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'requisitonDate'
+				   },{
+					   field: 'conLandNo',
+					   title: '建设用地批准书 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'conLandNo'
+				   },{
+					   field: 'conLandDate',
+					   title: '建设用地批准书 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'conLandDate'
+				   },{
+					   field: 'transferNo',
+					   title: '划拨决定书 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'transferNo'
+				   },{
+					   field: 'transferDate',
+					   title: '划拨决定书 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'transferDate'
+				   },{
+					   field: 'certificateNo',
+					   title: '土地证(变电站) 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'certificateNo'
+				   },{
+					   field: 'certificateDate',
+					   title: '土地证(变电站) 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'certificateDate'
+				   },{
+					   field: 'permitNo',
+					   title: '建设工程规划许可证(变电站) 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'permitNo'
+				   },{
+					   field: 'permitDate',
+					   title: '建设工程规划许可证(变电站) 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'permitDate'
+				   },{
+					   field: 'fireProNo',
+					   title: '消防设计审查/备案意见(变电站) 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'fireProNo'
+				   },{
+					   field: 'fireProdate',
+					   title: '消防设计审查/备案意见(变电站) 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'fireProdate'
+				   },{
+					   field: 'fireAccNo',
+					   title: '消防验收/备案意见(变电站) 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'fireAccNo'
+				   },{
+					   field: 'fireAccDate',
+					   title: '消防验收/备案意见(变电站) 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'fireAccDate'
+				   },{
+					   field: 'estateNo',
+					   title: '不动产权证 文号',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'estateNo'
+				   },{
+					   field: 'estateDate',
+					   title: '不动产权证 日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'estateDate'
+				   }
+		     ],
+		onExpandRow: function (index, row, $detail) {
+			initSubTable(index, row, $detail);
+		}
+		});
+
+	//初始化子表格(无线循环)
+	initSubTable = function (index, row, $detail) {
+		var parentid = row.projectCode;
+		var cur_table = $detail.html('<table></table>').find('table');
+		$(cur_table).bootstrapTable({
+			url: '${ctx}/filing/applicationFor/detail',
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				searchParam.projectCode = parentid;
+				return searchParam;
+			},
+			striped: true, //是否显示行间隔色
+			pagination: false,//显示分页
+			sidePagination: "server",
+			pageNumber:1,
+			pageSize: 10,
+			pageList: [10, 25],
+			columns: [{
+				field: 'projectCode',
+				title: '项目编码',
+				width: '100px',
+				sortable: true,
+				sortName: 'projectCode'
+				,formatter:function(value, row , index){
+					if(value == null || value ==""){
+						value = "-";
+					}
+				<c:choose>
+					<c:when test="${fns:hasPermission('test:filing:approvalStage:edit')}">
+					return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+				</c:when>
+					<c:otherwise>
+					return value;
+				</c:otherwise>
+					</c:choose>
+				}
+			}, {
+				field: 'monomerCode',
+				title: '单体编码',
+				width: '100px'
+			}, {
+				field: 'entryName',
+				title: '项目名称',
+				width: '100px',
+			},{
+				field: 'landNo',
+				title: '用地预审意见(变电站) 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'landNo'
+			},{
+				field: 'landDate',
+				title: '用地预审意见(变电站) 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'landDate'
+			},{
+				field: 'eiaNo',
+				title: '环评批复(变电站、线路) 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'eiaNo'
+			},{
+				field: 'eiaDate',
+				title: '环评批复(变电站、线路) 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'eiaDate'
+			},{
+				field: 'acceptanceNo',
+				title: '环评验收文号及日期 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'acceptanceNo'
+			},{
+				field: 'acceptanceDate',
+				title: '环评验收文号及日期 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'acceptanceDate'
+			},{
+				field: 'replyNo',
+				title: '水保批复(变电站、线路) 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'replyNo'
+			},{
+				field: 'replyDate',
+				title: '水保批复(变电站、线路) 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'replyDate'
+			},{
+				field: 'soilNo',
+				title: '水保验收文号及日期 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'soilNo'
+			},{
+				field: 'soilDate',
+				title: '水保验收文号及日期 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'soilDate'
+			},{
+				field: 'depositNo',
+				title: '压覆矿藏复函(变电站) 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'depositNo'
+			},{
+				field: 'depositDate',
+				title: '压覆矿藏复函(变电站) 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'depositDate'
+			},{
+				field: 'recordNo',
+				title: '地灾评估备案表(变电站) 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'recordNo'
+			},{
+				field: 'recordDate',
+				title: '地灾评估备案表(变电站) 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'recordDate'
+			},{
+				field: 'siteProposalNo',
+				title: '选址意见书(变电站) 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'siteProposalNo'
+			},{
+				field: 'siteProposalDate',
+				title: '选址意见书(变电站) 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'siteProposalDate'
+			},{
+				field: 'planningNo',
+				title: '线路路径规划意见 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'planningNo'
+			},{
+				field: 'planningDate',
+				title: '线路路径规划意见 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'planningDate'
+			},{
+				field: 'usePlanNo',
+				title: '用地规划许可证 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'usePlanNo'
+			},{
+				field: 'usePlanDate',
+				title: '用地规划许可证 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'usePlanDate'
+			},{
+				field: 'requisitonNo',
+				title: '征地补偿批复 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'requisitonNo'
+			},{
+				field: 'requisitonDate',
+				title: '征地补偿批复 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'requisitonDate'
+			},{
+				field: 'conLandNo',
+				title: '建设用地批准书 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'conLandNo'
+			},{
+				field: 'conLandDate',
+				title: '建设用地批准书 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'conLandDate'
+			},{
+				field: 'transferNo',
+				title: '划拨决定书 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'transferNo'
+			},{
+				field: 'transferDate',
+				title: '划拨决定书 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'transferDate'
+			},{
+				field: 'certificateNo',
+				title: '土地证(变电站) 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'certificateNo'
+			},{
+				field: 'certificateDate',
+				title: '土地证(变电站) 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'certificateDate'
+			},{
+				field: 'permitNo',
+				title: '建设工程规划许可证(变电站) 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'permitNo'
+			},{
+				field: 'permitDate',
+				title: '建设工程规划许可证(变电站) 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'permitDate'
+			},{
+				field: 'fireProNo',
+				title: '消防设计审查/备案意见(变电站) 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'fireProNo'
+			},{
+				field: 'fireProdate',
+				title: '消防设计审查/备案意见(变电站) 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'fireProdate'
+			},{
+				field: 'fireAccNo',
+				title: '消防验收/备案意见(变电站) 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'fireAccNo'
+			},{
+				field: 'fireAccDate',
+				title: '消防验收/备案意见(变电站) 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'fireAccDate'
+			},{
+				field: 'estateNo',
+				title: '不动产权证 文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'estateNo'
+			},{
+				field: 'estateDate',
+				title: '不动产权证 日期',
+				width: '100px',
+				sortable: true,
+				sortName: 'estateDate'
+			}
+				]
+		});
+	};
+
+		  
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#basicTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#basicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#basicTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#basicTable').bootstrapTable('getSelections').length!=1);
+        });
+		  
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/filing/applicationFor/import/template');
+				  },
+			    btn2: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/filing/applicationFor/import', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+				 
+				  btn3: function(index){ 
+					  jp.close(index);
+	    	       }
+			}); 
+		});
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/filing/applicationFor/export');
+	  });
+
+	$("#exportFiles").bind("click", function () {
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportBiddingContract?ids="+ getIdSelections());
+		$("#searchForm").submit();
+		return true;
+	});
+
+
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+	  $("#open").click(function () {
+		  $("#basicTable").bootstrapTable('expandAllRows');
+	  })
+
+		$("#close").click(function (row) {
+			$('#basicTable').bootstrapTable('refresh');
+		})
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		   $("#searchForm  .select-item").html("");
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+		
+				$('#beginInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+				$('#endInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#basicTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+  
+  function deleteAll(){
+
+		jp.confirm('确认要删除该招标与合同管理记录吗?', function(){
+			jp.loading();  	
+			jp.get("${ctx}/filing/applicationFor/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#basicTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+          	   
+		})
+  }
+  
+    //刷新列表
+  function refresh() {
+      $('#basicTable').bootstrapTable('refresh');
+  }
+  function add(){
+	  jp.openSaveDialog('新增招标与合同管理', "${ctx}/filing/applicationFor/form",'1000px', '800px');
+  }
+  
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑招标与合同管理', "${ctx}/filing/applicationFor/form?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看招标与合同管理', "${ctx}/filing/applicationFor/form?id=" + id, '800px', '500px');
+ }
+
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+			
+</script>
+
+

+ 87 - 0
src/main/webapp/webpage/modules/filing/applicationFor/applicationForList.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>批概阶段管理</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="applicationForList.js" %>
+    <style type="text/css">
+        .table {
+            table-layout: fixed;
+            word-break: break-all;
+            word-wrap: break-word;
+            text-align: center;
+        }
+
+        .table th, .table td {
+            text-align: center;
+            vertical-align: middle !important;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">批概阶段列表</h3>
+        </div>
+        <div class="panel-body">
+            <!-- 搜索 -->
+            <div id="search-collapse" class="collapse">
+                <div class="accordion-inner">
+                    <form:form id="searchForm" modelAttribute="applicationFor"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="项目编码:">项目编码:</label>
+                            <form:input path="projectCode" htmlEscape="false" maxlength="257"  class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="test:filing:applicationFor:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:applicationFor:import">
+                    <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:applicationFor:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:designStage:export">
+                    <button id="exportFiles" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出附件
+                    </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="basicTable" data-toolbar="#toolbar"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 124 - 0
src/main/webapp/webpage/modules/filing/biddingContract/biddingContractForm.jsp

@@ -0,0 +1,124 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>批概阶段管理</title>
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp" %>
+	<style type="text/css">
+		/* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+		.deal::-webkit-inner-spin-button {
+			-webkit-appearance: none !important;
+		}
+		.deal::-webkit-outer-spin-button {
+			-webkit-appearance: none !important;
+		}
+		input[type="number"]{
+			-moz-appearance:textfield;
+		}
+	</style>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+	        $('#initialDesignDate').datetimepicker({
+				 format: "YYYY-MM-DD"
+		    });
+		});
+
+		function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if(!isValidate){
+                return false;
+			}else{
+                jp.loading();
+                jp.post("${ctx}/filing/biddingContract/save",$('#inputForm').serialize(),function(data){
+                    if(data.success){
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    }else{
+                        jp.error(data.msg);
+                    }
+                })
+			}
+
+        }
+
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="biddingContract" action="${ctx}/filing/biddingContract/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<table class="table table-bordered">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编码:</label></td>
+					<td class="width-35">
+						<form:input path="projectCode" readonly="true" htmlEscape="false"  class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">单体编码:</label></td>
+					<td class="width-35">
+						<form:input path="monomerCode" readonly="true" htmlEscape="false"  class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-35">
+						<form:input path="entryName" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">可研初设一体化设计中标通知书</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="letterDesign"  value="${biddingContract.letterDesign}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">勘察设计合同</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="disigningContract"  value="${biddingContract.disigningContract}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">业主项目部成立文件</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="ownerDapartment"  value="${biddingContract.ownerDapartment}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+		  		</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">三个项目部关键人员信息</label></td>
+					<td class="width-35">
+						<form:input path="threeDepartment" htmlEscape="false" class="form-control"/>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">监理合同</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="inspectionControl"  value="${biddingContract.inspectionControl}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">施工中标通知书</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="letterAcceptance"  value="${biddingContract.letterAcceptance}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">施工合同</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="conContract"  value="${biddingContract.conContract}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">其他合同</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="otherContracts"  value="${biddingContract.otherContracts}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+		</div>
+		</form:form>
+</body>
+</html>

+ 349 - 0
src/main/webapp/webpage/modules/filing/biddingContract/biddingContractList.js

@@ -0,0 +1,349 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#basicTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //显示详情按钮
+    	       detailView: true,
+    	       	//显示详细内容函数
+	           // detailFormatter: "detailFormatter",
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/filing/biddingContract/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该招标与合同管理记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/filing/biddingContract/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#basicTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+		/*		onPostBody:function(){
+					window.rowProps = undefined;
+					_table_rowspan("#basicTable" , 1);
+					_table_rowspan("#basicTable" , 2);
+					_table_rowspan("#basicTable" , 3);
+					_table_rowspan("#basicTable" , 4);
+					_table_rowspan("#basicTable" , 5);
+					return true;
+				},*/
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'projectCode',
+		        title: '项目编码',
+			    width: '100px',
+		        sortable: true,
+		        sortName: 'projectCode'
+		        ,formatter:function(value, row , index){
+			   if(value == null || value ==""){
+				   value = "-";
+			   }
+			   <c:choose>
+				   <c:when test="${fns:hasPermission('test:filing:approvalStage:edit')}">
+				      return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:when test="${fns:hasPermission('test:filing:approvalStage:view')}">
+				      return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:otherwise>
+				      return value;
+			      </c:otherwise>
+			   </c:choose>
+
+		        }
+		    }
+			,{
+		        field: 'monomerCode',
+		        title: '单体编码',
+		        sortable: true,
+			   width: '100px',
+		        sortName: 'monomerCode'
+
+		    }
+			,{
+		        field: 'entryName',
+		        title: '项目名称',
+					   width: '100px',
+		        sortable: true,
+		        sortName: 'entryName'
+
+		    }
+			,{
+		        field: 'threeDepartment',
+		        title: '三个项目部关键人员信息',
+					   width: '100px',
+		        sortable: true,
+		        sortName: 'threeDepartment'
+		    }
+		     ],
+		onExpandRow: function (index, row, $detail) {
+			initSubTable(index, row, $detail);
+		}
+		});
+
+	//初始化子表格(无线循环)
+	initSubTable = function (index, row, $detail) {
+		var parentid = row.projectCode;
+		var cur_table = $detail.html('<table></table>').find('table');
+		$(cur_table).bootstrapTable({
+			url: '${ctx}/filing/biddingContract/detail',
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				searchParam.projectCode = parentid;
+				return searchParam;
+			},
+			striped: true, //是否显示行间隔色
+			pagination: false,//显示分页
+			sidePagination: "server",
+			pageNumber:1,
+			pageSize: 10,
+			pageList: [10, 25],
+			columns: [{
+				field: 'projectCode',
+				title: '项目编码',
+				width: '100px',
+				sortable: true,
+				sortName: 'projectCode'
+				,formatter:function(value, row , index){
+					if(value == null || value ==""){
+						value = "-";
+					}
+				<c:choose>
+					<c:when test="${fns:hasPermission('test:filing:approvalStage:edit')}">
+					return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+				</c:when>
+					<c:otherwise>
+					return value;
+				</c:otherwise>
+					</c:choose>
+				}
+			}, {
+				field: 'monomerCode',
+				title: '单体编码',
+				width: '100px'
+			}, {
+				field: 'entryName',
+				title: '项目名称',
+				width: '100px',
+			},{
+				field: 'threeDepartment',
+				title: '三个项目部关键人员信息',
+				width: '100px',
+				sortable: true,
+				sortName: 'threeDepartment'
+			}
+				]
+		});
+	};
+
+		  
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#basicTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#basicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#basicTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#basicTable').bootstrapTable('getSelections').length!=1);
+        });
+		  
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/filing/biddingContract/import/template');
+				  },
+			    btn2: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/filing/biddingContract/import', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+				 
+				  btn3: function(index){ 
+					  jp.close(index);
+	    	       }
+			}); 
+		});
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/filing/biddingContract/export');
+	  });
+
+	$("#exportFiles").bind("click", function () {
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportBiddingContract?ids="+ getIdSelections());
+		$("#searchForm").submit();
+		return true;
+	});
+
+
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+	  $("#open").click(function () {
+		  $("#basicTable").bootstrapTable('expandAllRows');
+	  })
+
+		$("#close").click(function (row) {
+			$('#basicTable').bootstrapTable('refresh');
+		})
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		   $("#searchForm  .select-item").html("");
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+		
+				$('#beginInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+				$('#endInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#basicTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+  
+  function deleteAll(){
+
+		jp.confirm('确认要删除该招标与合同管理记录吗?', function(){
+			jp.loading();  	
+			jp.get("${ctx}/filing/biddingContract/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#basicTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+          	   
+		})
+  }
+  
+    //刷新列表
+  function refresh() {
+      $('#basicTable').bootstrapTable('refresh');
+  }
+  function add(){
+	  jp.openSaveDialog('新增招标与合同管理', "${ctx}/filing/biddingContract/form",'1000px', '800px');
+  }
+  
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑招标与合同管理', "${ctx}/filing/biddingContract/form?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看招标与合同管理', "${ctx}/filing/biddingContract/form?id=" + id, '800px', '500px');
+ }
+
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+			
+</script>
+
+

+ 87 - 0
src/main/webapp/webpage/modules/filing/biddingContract/biddingContractList.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>批概阶段管理</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="biddingContractList.js" %>
+    <style type="text/css">
+        .table {
+            table-layout: fixed;
+            word-break: break-all;
+            word-wrap: break-word;
+            text-align: center;
+        }
+
+        .table th, .table td {
+            text-align: center;
+            vertical-align: middle !important;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">批概阶段列表</h3>
+        </div>
+        <div class="panel-body">
+            <!-- 搜索 -->
+            <div id="search-collapse" class="collapse">
+                <div class="accordion-inner">
+                    <form:form id="searchForm" modelAttribute="biddingContract"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="项目编码:">项目编码:</label>
+                            <form:input path="projectCode" htmlEscape="false" maxlength="257"  class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="test:filing:biddingContract:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:biddingContract:import">
+                    <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:biddingContract:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:designStage:export">
+                    <button id="exportFiles" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出附件
+                    </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="basicTable" data-toolbar="#toolbar"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 98 - 0
src/main/webapp/webpage/modules/filing/designStage/designStageForm.jsp

@@ -0,0 +1,98 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>核准阶段管理</title>
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp" %>
+	<style type="text/css">
+		/* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+		.deal::-webkit-inner-spin-button {
+			-webkit-appearance: none !important;
+		}
+		.deal::-webkit-outer-spin-button {
+			-webkit-appearance: none !important;
+		}
+		input[type="number"]{
+			-moz-appearance:textfield;
+		}
+	</style>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+	        $('#initialDesignDate').datetimepicker({
+				 format: "YYYY-MM-DD"
+		    });
+		});
+
+		function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if(!isValidate){
+                return false;
+			}else{
+                jp.loading();
+                jp.post("${ctx}/filing/designStage/save",$('#inputForm').serialize(),function(data){
+                    if(data.success){
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    }else{
+                        jp.error(data.msg);
+                    }
+                })
+			}
+
+        }
+
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="designStage" action="${ctx}/filing/designStage/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<table class="table table-bordered">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编码:</label></td>
+					<td class="width-35">
+						<form:input path="projectCode" readonly="true" htmlEscape="false"  class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">单体编码:</label></td>
+					<td class="width-35">
+						<form:input path="monomerCode" readonly="true" htmlEscape="false"  class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-35">
+						<form:input path="entryName" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">初设批复文号:</label></td>
+					<td class="width-35">
+						<form:input path="preDesignNo" htmlEscape="false" class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">初设批复日期:</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='initialDesignDate'>
+							<input type='text'  name="initialDesignDate" class="form-control"  value="<fmt:formatDate value="${designStage.initialDesignDate}" pattern="yyyy-MM-dd"/>"/>
+							<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">初设附件:</label></td>
+					<td class="width-35">
+						<sys:fileUpload path="preDesignAnnex"  value="${designStage.preDesignAnnex}" type="*" uploadPath="/photo"  readonly="false"/></td>
+					</td>
+					</td>
+		  		</tr>
+		 	</tbody>
+		</table>
+		</div>
+		</form:form>
+</body>
+</html>

+ 367 - 0
src/main/webapp/webpage/modules/filing/designStage/designStageList.js

@@ -0,0 +1,367 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#basicTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //显示详情按钮
+    	       detailView: true,
+    	       	//显示详细内容函数
+	           // detailFormatter: "detailFormatter",
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/filing/designStage/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该初设阶段记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/filing/designStage/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#basicTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+		/*		onPostBody:function(){
+					window.rowProps = undefined;
+					_table_rowspan("#basicTable" , 1);
+					_table_rowspan("#basicTable" , 2);
+					_table_rowspan("#basicTable" , 3);
+					_table_rowspan("#basicTable" , 4);
+					_table_rowspan("#basicTable" , 5);
+					return true;
+				},*/
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'projectCode',
+		        title: '项目编码',
+			    width: '100px',
+		        sortable: true,
+		        sortName: 'projectCode'
+		        ,formatter:function(value, row , index){
+			   if(value == null || value ==""){
+				   value = "-";
+			   }
+			   <c:choose>
+				   <c:when test="${fns:hasPermission('test:filing:approvalStage:edit')}">
+				      return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:when test="${fns:hasPermission('test:filing:approvalStage:view')}">
+				      return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:otherwise>
+				      return value;
+			      </c:otherwise>
+			   </c:choose>
+
+		        }
+		    }
+			,{
+		        field: 'monomerCode',
+		        title: '单体编码',
+		        sortable: true,
+			   width: '100px',
+		        sortName: 'monomerCode'
+
+		    }
+			,{
+		        field: 'entryName',
+		        title: '项目名称',
+					   width: '100px',
+		        sortable: true,
+		        sortName: 'entryName'
+
+		    }
+			,{
+		        field: 'preDesignNo',
+		        title: '初设批复文号',
+					   width: '100px',
+		        sortable: true,
+		        sortName: 'preDesignNo'
+		    }
+			, {
+					   field: 'initialDesignDate',
+					   title: '初设批复日期',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'initialDesignDate'
+
+				   }
+		     ],
+		onExpandRow: function (index, row, $detail) {
+			initSubTable(index, row, $detail);
+		}
+		});
+
+	//初始化子表格(无线循环)
+	initSubTable = function (index, row, $detail) {
+		var parentid = row.projectCode;
+		var cur_table = $detail.html('<table></table>').find('table');
+		$(cur_table).bootstrapTable({
+			url: '${ctx}/filing/designStage/detail',
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				searchParam.projectCode = parentid;
+				return searchParam;
+			},
+			striped: true, //是否显示行间隔色
+			pagination: false,//显示分页
+			sidePagination: "server",
+			pageNumber:1,
+			pageSize: 10,
+			pageList: [10, 25],
+			columns: [{
+				field: 'projectCode',
+				title: '项目编码',
+				width: '100px',
+				sortable: true,
+				sortName: 'projectCode'
+				,formatter:function(value, row , index){
+					if(value == null || value ==""){
+						value = "-";
+					}
+				<c:choose>
+					<c:when test="${fns:hasPermission('test:filing:approvalStage:edit')}">
+					return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+				</c:when>
+					<c:otherwise>
+					return value;
+				</c:otherwise>
+					</c:choose>
+				}
+			}, {
+				field: 'monomerCode',
+				title: '单体编码',
+				width: '100px'
+			}, {
+				field: 'entryName',
+				title: '项目名称',
+				width: '100px',
+			},{
+				field: 'preDesignNo',
+				title: '初设批复文号',
+				width: '100px',
+				sortable: true,
+				sortName: 'preDesignNo'
+			}
+				,{
+					field: 'initialDesignDate',
+					title: '初设批复日期',
+					width: '100px',
+					sortable: true,
+					sortName: 'initialDesignDate'
+
+				}
+				]
+		});
+	};
+
+		  
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#basicTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#basicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#basicTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#basicTable').bootstrapTable('getSelections').length!=1);
+        });
+		  
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/filing/designStage/import/template');
+				  },
+			    btn2: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/filing/designStage/import', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+				 
+				  btn3: function(index){ 
+					  jp.close(index);
+	    	       }
+			}); 
+		});
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/filing/designStage/export');
+	  });
+
+	$("#exportFiles").bind("click", function () {
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportDesignStage?ids="+ getIdSelections());
+		$("#searchForm").submit();
+		return true;
+	});
+
+	/*$("#exportFiles").click(function(){//导出Excel文件
+		jp.downloadFile('${ctx}/filing/designStage/exportFiles?ids=' + getIdSelections());
+	});*/
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+	  $("#open").click(function () {
+		  $("#basicTable").bootstrapTable('expandAllRows');
+	  })
+
+		$("#close").click(function (row) {
+			$('#basicTable').bootstrapTable('refresh');
+		})
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		   $("#searchForm  .select-item").html("");
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+		
+				$('#beginInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+				$('#endInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#basicTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+  
+  function deleteAll(){
+
+		jp.confirm('确认要删除该初设阶段记录吗?', function(){
+			jp.loading();  	
+			jp.get("${ctx}/filing/designStage/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#basicTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+          	   
+		})
+  }
+  
+    //刷新列表
+  function refresh() {
+      $('#basicTable').bootstrapTable('refresh');
+  }
+  function add(){
+	  jp.openSaveDialog('新增初设阶段', "${ctx}/filing/designStage/form",'1000px', '800px');
+  }
+  
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑初设阶段', "${ctx}/filing/designStage/form?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看初设阶段', "${ctx}/filing/designStage/form?id=" + id, '800px', '500px');
+ }
+
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+			
+</script>
+
+

+ 87 - 0
src/main/webapp/webpage/modules/filing/designStage/designStageList.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>票务代理管理</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="designStageList.js" %>
+    <style type="text/css">
+        .table {
+            table-layout: fixed;
+            word-break: break-all;
+            word-wrap: break-word;
+            text-align: center;
+        }
+
+        .table th, .table td {
+            text-align: center;
+            vertical-align: middle !important;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">基础信息列表</h3>
+        </div>
+        <div class="panel-body">
+            <!-- 搜索 -->
+            <div id="search-collapse" class="collapse">
+                <div class="accordion-inner">
+                    <form:form id="searchForm" modelAttribute="designStage"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="项目编码:">项目编码:</label>
+                            <form:input path="projectCode" htmlEscape="false" maxlength="257"  class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="test:filing:designStage:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:designStage:import">
+                    <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:designStage:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:designStage:export">
+                <button id="exportFiles" class="btn btn-warning">
+                    <i class="fa fa-file-excel-o"></i> 导出附件
+                </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="basicTable" data-toolbar="#toolbar"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 145 - 0
src/main/webapp/webpage/modules/filing/reviewStage/reviewStageForm.jsp

@@ -0,0 +1,145 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>批概阶段管理</title>
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp" %>
+	<style type="text/css">
+		/* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+		.deal::-webkit-inner-spin-button {
+			-webkit-appearance: none !important;
+		}
+		.deal::-webkit-outer-spin-button {
+			-webkit-appearance: none !important;
+		}
+		input[type="number"]{
+			-moz-appearance:textfield;
+		}
+	</style>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+	        $('#initialDesignDate').datetimepicker({
+				 format: "YYYY-MM-DD"
+		    });
+		});
+
+		function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if(!isValidate){
+                return false;
+			}else{
+                jp.loading();
+                jp.post("${ctx}/filing/reviewStage/save",$('#inputForm').serialize(),function(data){
+                    if(data.success){
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    }else{
+                        jp.error(data.msg);
+                    }
+                })
+			}
+
+        }
+		function noFue(val){
+			document.getElementById('batchOverview').value = val >= 0 ? val : 0;
+		}
+
+		function noFue2(val){
+			document.getElementById('batchStatistics').value = val >= 0 ? val : 0;
+		}
+
+		function noFue3(val){
+			document.getElementById('estimateCode').value = val >= 0 ? val : 0;
+		}
+
+		function noFue4(val){
+			document.getElementById('designCost').value = val >= 0 ? val : 0;
+		}
+
+		function noFue5(val){
+			document.getElementById('supervisionFeeCode').value = val >= 0 ? val : 0;
+		}
+
+		function noFue6(val){
+			document.getElementById('managementFeeCode').value = val >= 0 ? val : 0;
+		}
+
+		function noFue7(val){
+			document.getElementById('dataCode').value = val >= 0 ? val : 0;
+		}
+
+
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="reviewStage" action="${ctx}/filing/reviewStage/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+		<table class="table table-bordered">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目编码:</label></td>
+					<td class="width-35">
+						<form:input path="projectCode" readonly="true" htmlEscape="false"  class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">单体编码:</label></td>
+					<td class="width-35">
+						<form:input path="monomerCode" readonly="true" htmlEscape="false"  class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+					<td class="width-35">
+						<form:input path="entryName" readonly="true" htmlEscape="false" class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">批概动态:</label></td>
+					<td class="width-35">
+						<form:input type="number" onblur="noFue(this.value)" path="batchOverview" htmlEscape="false" rows="4" class="form-control"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">批概静态:</label></td>
+					<td class="width-35">
+						<form:input type="number" onblur="noFue2(this.value)" path="batchStatistics" htmlEscape="false" rows="4" class="form-control"/>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">批概场地清理费/相应的WBS编码:</label></td>
+					<td class="width-35">
+						<form:input type="number" onblur="noFue3(this.value)" path="estimateCode" htmlEscape="false" rows="4" class="form-control"/>
+					</td>
+					</td>
+		  		</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">设计费批概相应的/相应的WBS编码WBS编码:</label></td>
+					<td class="width-35">
+						<form:input type="number" onblur="noFue4(this.value)" path="designCost" htmlEscape="false" rows="4" class="form-control"/>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">监理费批概/相应的WBS编码:</label></td>
+					<td class="width-35">
+						<form:input type="number" onblur="noFue5(this.value)" path="supervisionFeeCode" htmlEscape="false" rows="4" class="form-control"/>
+					</td>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="pull-right">批概法人管理费/相应的WBS编码:</label></td>
+					<td class="width-35">
+						<form:input type="number" onblur="noFue6(this.value)" path="managementFeeCode" htmlEscape="false" rows="4" class="form-control"/>
+					</td>
+					</td>
+					<td class="width-15 active"><label class="pull-right">其他概算中需要的数据/相应的WBS编码:</label></td>
+					<td class="width-35">
+						<form:input type="number" onblur="noFue7(this.value)" path="dataCode" htmlEscape="false" rows="4" class="form-control"/>
+					</td>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+		</div>
+		</form:form>
+</body>
+</html>

+ 437 - 0
src/main/webapp/webpage/modules/filing/reviewStage/reviewStageList.js

@@ -0,0 +1,437 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#basicTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //显示详情按钮
+    	       detailView: true,
+    	       	//显示详细内容函数
+	           // detailFormatter: "detailFormatter",
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 10,
+               //可供选择的每页的行数(*)
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/filing/reviewStage/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该批概阶段记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/filing/reviewStage/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#basicTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+		/*		onPostBody:function(){
+					window.rowProps = undefined;
+					_table_rowspan("#basicTable" , 1);
+					_table_rowspan("#basicTable" , 2);
+					_table_rowspan("#basicTable" , 3);
+					_table_rowspan("#basicTable" , 4);
+					_table_rowspan("#basicTable" , 5);
+					return true;
+				},*/
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+
+		    }
+			,{
+		        field: 'projectCode',
+		        title: '项目编码',
+			    width: '100px',
+		        sortable: true,
+		        sortName: 'projectCode'
+		        ,formatter:function(value, row , index){
+			   if(value == null || value ==""){
+				   value = "-";
+			   }
+			   <c:choose>
+				   <c:when test="${fns:hasPermission('test:filing:approvalStage:edit')}">
+				      return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:when test="${fns:hasPermission('test:filing:approvalStage:view')}">
+				      return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+			      </c:when>
+				  <c:otherwise>
+				      return value;
+			      </c:otherwise>
+			   </c:choose>
+
+		        }
+		    }
+			,{
+		        field: 'monomerCode',
+		        title: '单体编码',
+		        sortable: true,
+			   width: '100px',
+		        sortName: 'monomerCode'
+
+		    }
+			,{
+		        field: 'entryName',
+		        title: '项目名称',
+					   width: '100px',
+		        sortable: true,
+		        sortName: 'entryName'
+
+		    }
+			,{
+		        field: 'batchOverview',
+		        title: '批概动态',
+					   width: '100px',
+		        sortable: true,
+		        sortName: 'batchOverview'
+		    }
+				   ,{
+					   field: 'batchStatistics',
+					   title: '批概静态',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'batchStatistics'
+				   }
+			, {
+					   field: 'estimateCode',
+					   title: '批概场地清理费',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'estimateCode'
+
+				   }, {
+					   field: 'designCost',
+					   title: '设计费批概',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'designCost'
+
+				   }, {
+					   field: 'supervisionFeeCode',
+					   title: '监理费批概',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'supervisionFeeCode'
+
+				   }, {
+					   field: 'managementFeeCode',
+					   title: '批概法人管理费',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'managementFeeCode'
+
+				   }, {
+					   field: 'dataCode',
+					   title: '其他概算中需要的数据',
+					   width: '100px',
+					   sortable: true,
+					   sortName: 'dataCode'
+
+				   }
+		     ],
+		onExpandRow: function (index, row, $detail) {
+			initSubTable(index, row, $detail);
+		}
+		});
+
+	//初始化子表格(无线循环)
+	initSubTable = function (index, row, $detail) {
+		var parentid = row.projectCode;
+		var cur_table = $detail.html('<table></table>').find('table');
+		$(cur_table).bootstrapTable({
+			url: '${ctx}/filing/reviewStage/detail',
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+				searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+				searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+				searchParam.projectCode = parentid;
+				return searchParam;
+			},
+			striped: true, //是否显示行间隔色
+			pagination: false,//显示分页
+			sidePagination: "server",
+			pageNumber:1,
+			pageSize: 10,
+			pageList: [10, 25],
+			columns: [{
+				field: 'projectCode',
+				title: '项目编码',
+				width: '100px',
+				sortable: true,
+				sortName: 'projectCode'
+				,formatter:function(value, row , index){
+					if(value == null || value ==""){
+						value = "-";
+					}
+				<c:choose>
+					<c:when test="${fns:hasPermission('test:filing:approvalStage:edit')}">
+					return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+				</c:when>
+					<c:otherwise>
+					return value;
+				</c:otherwise>
+					</c:choose>
+				}
+			}, {
+				field: 'monomerCode',
+				title: '单体编码',
+				width: '100px'
+			}, {
+				field: 'entryName',
+				title: '项目名称',
+				width: '100px',
+			},{
+				field: 'batchOverview',
+				title: '批概动态',
+				width: '100px',
+				sortable: true,
+				sortName: 'batchOverview'
+			}
+				,{
+					field: 'batchStatistics',
+					title: '批概静态',
+					width: '100px',
+					sortable: true,
+					sortName: 'batchStatistics'
+				}
+				, {
+					field: 'estimateCode',
+					title: '批概场地清理费',
+					width: '100px',
+					sortable: true,
+					sortName: 'estimateCode'
+
+				}, {
+					field: 'designCost',
+					title: '设计费批概',
+					width: '100px',
+					sortable: true,
+					sortName: 'designCost'
+
+				}, {
+					field: 'supervisionFeeCode',
+					title: '监理费批概',
+					width: '100px',
+					sortable: true,
+					sortName: 'supervisionFeeCode'
+
+				}, {
+					field: 'managementFeeCode',
+					title: '批概法人管理费',
+					width: '100px',
+					sortable: true,
+					sortName: 'managementFeeCode'
+
+				}, {
+					field: 'dataCode',
+					title: '其他概算中需要的数据',
+					width: '100px',
+					sortable: true,
+					sortName: 'dataCode'
+
+				}
+				]
+		});
+	};
+
+		  
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#basicTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#basicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#basicTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#basicTable').bootstrapTable('getSelections').length!=1);
+        });
+		  
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/filing/reviewStage/import/template');
+				  },
+			    btn2: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/filing/reviewStage/import', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+				 
+				  btn3: function(index){ 
+					  jp.close(index);
+	    	       }
+			}); 
+		});
+	  $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/filing/reviewStage/export');
+	  });
+
+	$("#exportFiles").bind("click", function () {
+		$("#searchForm").attr("action","${ctx}/filing/filingImages/exportDesignStage?ids="+ getIdSelections());
+		$("#searchForm").submit();
+		return true;
+	});
+
+	/*$("#exportFiles").click(function(){//导出Excel文件
+		jp.downloadFile('${ctx}/filing/reviewStage/exportFiles?ids=' + getIdSelections());
+	});*/
+
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+
+	  $("#open").click(function () {
+		  $("#basicTable").bootstrapTable('expandAllRows');
+	  })
+
+		$("#close").click(function (row) {
+			$('#basicTable').bootstrapTable('refresh');
+		})
+
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		   $("#searchForm  .select-item").html("");
+		  $('#basicTable').bootstrapTable('refresh');
+		});
+		
+				$('#beginInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+				$('#endInDate').datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+				});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#basicTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+  
+  function deleteAll(){
+
+		jp.confirm('确认要删除该批概阶段记录吗?', function(){
+			jp.loading();  	
+			jp.get("${ctx}/filing/reviewStage/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#basicTable').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+          	   
+		})
+  }
+  
+    //刷新列表
+  function refresh() {
+      $('#basicTable').bootstrapTable('refresh');
+  }
+  function add(){
+	  jp.openSaveDialog('新增批概阶段', "${ctx}/filing/reviewStage/form",'1000px', '800px');
+  }
+  
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑批概阶段', "${ctx}/filing/reviewStage/form?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看批概阶段', "${ctx}/filing/reviewStage/form?id=" + id, '800px', '500px');
+ }
+
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+			
+</script>
+
+

+ 82 - 0
src/main/webapp/webpage/modules/filing/reviewStage/reviewStageList.jsp

@@ -0,0 +1,82 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>批概阶段管理</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="reviewStageList.js" %>
+    <style type="text/css">
+        .table {
+            table-layout: fixed;
+            word-break: break-all;
+            word-wrap: break-word;
+            text-align: center;
+        }
+
+        .table th, .table td {
+            text-align: center;
+            vertical-align: middle !important;
+        }
+    </style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">批概阶段列表</h3>
+        </div>
+        <div class="panel-body">
+            <!-- 搜索 -->
+            <div id="search-collapse" class="collapse">
+                <div class="accordion-inner">
+                    <form:form id="searchForm" modelAttribute="reviewStage"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="项目编码:">项目编码:</label>
+                            <form:input path="projectCode" htmlEscape="false" maxlength="257"  class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="test:filing:reviewStage:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:reviewStage:import">
+                    <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="test:filing:reviewStage:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="basicTable" data-toolbar="#toolbar"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>