Selaa lähdekoodia

配网、政处模块代码提交

wangqiang 1 vuosi sitten
vanhempi
commit
6c4cd0400a
98 muutettua tiedostoa jossa 21185 lisäystä ja 3 poistoa
  1. 541 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/entity/DistributionDesignChange.java
  2. 379 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/entity/DistributionNetwork.java
  3. 479 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/entity/DistributionNetworkProcess.java
  4. 92 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/DistributionDesignChangeMapper.java
  5. 92 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/DistributionNetworkMapper.java
  6. 24 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/DistributionNetworkProcessMapper.java
  7. 249 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/xml/DistributionDesignChangeMapper.xml
  8. 330 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/xml/DistributionNetworkMapper.xml
  9. 132 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/xml/DistributionNetworkProcessMapper.xml
  10. 125 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/service/DistributionDesignChangeService.java
  11. 38 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/service/DistributionNetworkProcessService.java
  12. 129 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/service/DistributionNetworkService.java
  13. 336 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/util/DistributionExportUtil.java
  14. 137 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/util/DistributionImportUtil.java
  15. 519 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/web/DistributionController.java
  16. 664 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/web/DistributionDesignChangeController.java
  17. 378 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/web/DistributionNetworkController.java
  18. 400 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/entity/PoliceProcessBase.java
  19. 568 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/entity/PoliceProcessRecord.java
  20. 568 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/entity/PoliceProcessSchedule.java
  21. 85 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/PoliceProcessBaseMapper.java
  22. 98 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/PoliceProcessRecordMapper.java
  23. 92 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/PoliceProcessScheduleMapper.java
  24. 288 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/xml/PoliceProcessBaseMapper.xml
  25. 350 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/xml/PoliceProcessRecordMapper.xml
  26. 393 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/xml/PoliceProcessScheduleMapper.xml
  27. 120 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/service/PoliceProcessBaseService.java
  28. 136 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/service/PoliceProcessRecordService.java
  29. 132 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/service/PoliceProcessScheduleService.java
  30. 517 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/util/PolicyProcessExportUtil.java
  31. 189 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/util/PolicyProcessImportUtil.java
  32. 472 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/web/PoliceProcessBaseController.java
  33. 351 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/web/PoliceProcessRecordController.java
  34. 396 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/web/PoliceProcessScheduleController.java
  35. 11 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/DemoliteMapper.java
  36. 8 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/DocumentInfoMapper.java
  37. 10 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/ProjectTypeVerificateMapper.java
  38. 24 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/ReserveSummaryProcessMapper.java
  39. 35 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/xml/DemoliteMapper.xml
  40. 36 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/xml/DocumentInfoMapper.xml
  41. 7 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/xml/ProjectTypeVerificateMapper.xml
  42. 117 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/xml/ReserveSummaryProcessMapper.xml
  43. 12 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/service/DemoliteService.java
  44. 9 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/service/DocumentInfoService.java
  45. 9 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/service/ProjectTypeVerificateService.java
  46. 123 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/service/ReserveSummaryProcessService.java
  47. 83 1
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/web/ProcessController.java
  48. 56 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/web/SummaryStatisticController.java
  49. 4 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/mapper/CableMapper.java
  50. 9 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/mapper/ProgressStatsMapper.java
  51. 6 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/mapper/xml/CableMapper.xml
  52. 9 1
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/mapper/xml/ProgressStatsMapper.xml
  53. 14 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/service/CableService.java
  54. 12 0
      src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/service/ProgressStatsService.java
  55. 38 0
      src/main/java/com/jeeplus/modules/sg/raiseCapital/web/RaiseCapitalController.java
  56. 128 0
      src/main/java/com/jeeplus/modules/sg/raiseCapitalDesign/service/RaiseCapitalDesignService.java
  57. 67 0
      src/main/java/com/jeeplus/modules/sg/raiseCapitalDesign/web/RaiseCapitalDesignController.java
  58. BIN
      src/main/resources/freemarker/excelmodel/distributionDesignChange.xlsx
  59. BIN
      src/main/resources/freemarker/excelmodel/distributionNetwork.xlsx
  60. BIN
      src/main/resources/freemarker/excelmodel/policeProcessBase.xlsx
  61. BIN
      src/main/resources/freemarker/excelmodel/policeProcessRecord.xlsx
  62. BIN
      src/main/resources/freemarker/excelmodel/policeProcessSchedule.xlsx
  63. 268 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementForm.jsp
  64. 292 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementInformation.js
  65. 98 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementInformation.jsp
  66. 357 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementModifyByzz.jsp
  67. 327 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementView.jsp
  68. 268 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/network/reserveManagementForm.jsp
  69. 274 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/network/reserveManagementInformation.js
  70. 98 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/network/reserveManagementInformation.jsp
  71. 281 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/network/reserveManagementModifyByzz.jsp
  72. 237 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/network/reserveManagementView.jsp
  73. 356 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/budgetReview.js
  74. 443 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/designUnit.jsp
  75. 405 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/designUnitAgain.jsp
  76. 555 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/designUnitFile.jsp
  77. 420 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/leaderProcess.jsp
  78. 405 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/skillUnit.jsp
  79. 285 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementForm.jsp
  80. 274 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementInformation.js
  81. 98 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementInformation.jsp
  82. 317 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementModifyByzz.jsp
  83. 254 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementView.jsp
  84. 281 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementForm.jsp
  85. 657 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementInformation.js
  86. 98 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementInformation.jsp
  87. 283 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementModifyByzz.jsp
  88. 349 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementView.jsp
  89. 392 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementForm.jsp
  90. 297 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementInformation.js
  91. 98 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementInformation.jsp
  92. 390 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementModifyByzz.jsp
  93. 361 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementView.jsp
  94. 244 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/raiseCapital/aerialConductorForm2.jsp
  95. 593 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/raiseCapital/cableSectionForm2.jsp
  96. 21 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/raiseCapital/raiseCapital.js
  97. 182 0
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/raiseCapital/raiseCapital2.jsp
  98. 1 1
      src/main/webapp/webpage/modules/cg/reservemanagementcenter/reserveManage/summaryStatistics/designUnit.jsp

+ 541 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/entity/DistributionDesignChange.java

@@ -0,0 +1,541 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity;
+
+import com.jeeplus.core.persistence.ActEntity;
+
+/**
+ * 配网项目设计变更记录表
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 9:26
+ */
+public class DistributionDesignChange extends ActEntity<DistributionDesignChange> {
+
+    //储备项目基本信息
+    private String projectYear;             //项目年份
+    private String projectNature;           //项目性质
+    private String demandUnit;              //需求单位
+    private String district;                //区域
+    private String projectGroup;            //项目分组
+    private String reserveBatches;          //储备批次
+    private String blockSupply;             //供电区域
+    private String gridNumber;              //网格编号
+    private String cellNumber;              //单元格编号
+    private String projectReserveId;        //项目储备编号
+    private String projectName;             //项目名称
+    private String stateGridProjectCode;             //国网项目编码
+    private String stateGridProjectName;             //国网项目名称
+    private String constructionNecessityAndContent;           //建设必要性及内容
+    private String substationName;           //变电站名称
+    private String circuitName;              //线路名称
+    private String netRackProjectDivide;     //网架项目划分
+    private String requirementType;          //需求类型
+    private String projectType;              //项目类型
+    private String costEstimate;             //费用估算
+    private String basicRemarks;                  //备注
+    //项目参建(单位)人员信息
+    private String projectReleaseBatch;     //项目下达批次
+    private String ownerManager;            //业主项目经理
+    private String constructionManagementUnit;          //现场施工管理单位
+    private String dqProjectManager;          //施工项目经理(电气)
+    private String tjProjectManager;          //施工项目经理(土建)
+    private String cjRemarks;                 //备注
+    //项目总体进度
+    private String projectApproval;             //是否立项
+    private String completionStatus;            //竣工情况
+    private String completionDate;              //竣工日期
+    private String settlementStatus;            //结算状态
+    private String closeStatus;                 //关闭状态
+    private String projectDesignChangeStatus;   //设计变更状态
+    private String stockReturnStatus;           //拆旧物资退库状态
+    //设计变更进度
+    private String designChangeStatus;          //设计变更状态
+    private String designChangeType;            //设计变更类型 - 经理
+    private String designChangeTypeLeader;      //设计变更类型 - 领导
+    private String proposer;                    //提出人
+    private String proposeReasons;              //提出原因
+    private String designChangeContent;         //设计变更内容
+    private String changeType;                  //变更类型 - 经理
+    private String changeTypeLeader;            //变更类型 - 领导
+    private String designChangeProposeTime;     //设计变更提出时间
+    private String completeDesignChangeType;    //是否完成设计变更
+    private String projectManagerApproved;      //项目经理是否审核通过
+    private String electronDiagramCompleteTime; //电子图变更完成时间
+    private String completeBudgetAdjust;        //是否完成概预算调整
+    private String jjApproved;                  //设计是否审核通过
+    private String budgetCompleteTime;          //概预算变更完成时间
+    private String beforeChangeBudget;          //变更前预算
+    private String afterChangeBudget;           //变更后预算
+    private String afterChangeConstructionCost; //变更后施工费
+    private String drawingTransfer;             //变更纸质图纸是否移交
+    private String drawingTransferTime;         //变更纸质图纸移交时间
+    private String designChangeTime;            //设计变更时长
+    private String dataIntegrity;               //设计变更签字资料是否完整
+    private String scanningCopy;                //扫描件
+    private String remarks;                     //备注
+
+    public String getDesignChangeTypeLeader() {
+        return designChangeTypeLeader;
+    }
+
+    public void setDesignChangeTypeLeader(String designChangeTypeLeader) {
+        this.designChangeTypeLeader = designChangeTypeLeader;
+    }
+
+    public String getChangeTypeLeader() {
+        return changeTypeLeader;
+    }
+
+    public void setChangeTypeLeader(String changeTypeLeader) {
+        this.changeTypeLeader = changeTypeLeader;
+    }
+
+    public String getProjectYear() {
+        return projectYear;
+    }
+
+    public void setProjectYear(String projectYear) {
+        this.projectYear = projectYear;
+    }
+
+    public String getProjectNature() {
+        return projectNature;
+    }
+
+    public void setProjectNature(String projectNature) {
+        this.projectNature = projectNature;
+    }
+
+    public String getDemandUnit() {
+        return demandUnit;
+    }
+
+    public void setDemandUnit(String demandUnit) {
+        this.demandUnit = demandUnit;
+    }
+
+    public String getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(String district) {
+        this.district = district;
+    }
+
+    public String getProjectGroup() {
+        return projectGroup;
+    }
+
+    public void setProjectGroup(String projectGroup) {
+        this.projectGroup = projectGroup;
+    }
+
+    public String getReserveBatches() {
+        return reserveBatches;
+    }
+
+    public void setReserveBatches(String reserveBatches) {
+        this.reserveBatches = reserveBatches;
+    }
+
+    public String getBlockSupply() {
+        return blockSupply;
+    }
+
+    public void setBlockSupply(String blockSupply) {
+        this.blockSupply = blockSupply;
+    }
+
+    public String getGridNumber() {
+        return gridNumber;
+    }
+
+    public void setGridNumber(String gridNumber) {
+        this.gridNumber = gridNumber;
+    }
+
+    public String getCellNumber() {
+        return cellNumber;
+    }
+
+    public void setCellNumber(String cellNumber) {
+        this.cellNumber = cellNumber;
+    }
+
+    public String getProjectReserveId() {
+        return projectReserveId;
+    }
+
+    public void setProjectReserveId(String projectReserveId) {
+        this.projectReserveId = projectReserveId;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getStateGridProjectCode() {
+        return stateGridProjectCode;
+    }
+
+    public void setStateGridProjectCode(String stateGridProjectCode) {
+        this.stateGridProjectCode = stateGridProjectCode;
+    }
+
+    public String getStateGridProjectName() {
+        return stateGridProjectName;
+    }
+
+    public void setStateGridProjectName(String stateGridProjectName) {
+        this.stateGridProjectName = stateGridProjectName;
+    }
+
+    public String getConstructionNecessityAndContent() {
+        return constructionNecessityAndContent;
+    }
+
+    public void setConstructionNecessityAndContent(String constructionNecessityAndContent) {
+        this.constructionNecessityAndContent = constructionNecessityAndContent;
+    }
+
+    public String getSubstationName() {
+        return substationName;
+    }
+
+    public void setSubstationName(String substationName) {
+        this.substationName = substationName;
+    }
+
+    public String getCircuitName() {
+        return circuitName;
+    }
+
+    public void setCircuitName(String circuitName) {
+        this.circuitName = circuitName;
+    }
+
+    public String getNetRackProjectDivide() {
+        return netRackProjectDivide;
+    }
+
+    public void setNetRackProjectDivide(String netRackProjectDivide) {
+        this.netRackProjectDivide = netRackProjectDivide;
+    }
+
+    public String getRequirementType() {
+        return requirementType;
+    }
+
+    public void setRequirementType(String requirementType) {
+        this.requirementType = requirementType;
+    }
+
+    public String getProjectType() {
+        return projectType;
+    }
+
+    public void setProjectType(String projectType) {
+        this.projectType = projectType;
+    }
+
+    public String getCostEstimate() {
+        return costEstimate;
+    }
+
+    public void setCostEstimate(String costEstimate) {
+        this.costEstimate = costEstimate;
+    }
+
+    public String getBasicRemarks() {
+        return basicRemarks;
+    }
+
+    public void setBasicRemarks(String basicRemarks) {
+        this.basicRemarks = basicRemarks;
+    }
+
+    public String getProjectReleaseBatch() {
+        return projectReleaseBatch;
+    }
+
+    public void setProjectReleaseBatch(String projectReleaseBatch) {
+        this.projectReleaseBatch = projectReleaseBatch;
+    }
+
+    public String getOwnerManager() {
+        return ownerManager;
+    }
+
+    public void setOwnerManager(String ownerManager) {
+        this.ownerManager = ownerManager;
+    }
+
+    public String getConstructionManagementUnit() {
+        return constructionManagementUnit;
+    }
+
+    public void setConstructionManagementUnit(String constructionManagementUnit) {
+        constructionManagementUnit = constructionManagementUnit;
+    }
+
+    public String getDqProjectManager() {
+        return dqProjectManager;
+    }
+
+    public void setDqProjectManager(String dqProjectManager) {
+        this.dqProjectManager = dqProjectManager;
+    }
+
+    public String getTjProjectManager() {
+        return tjProjectManager;
+    }
+
+    public void setTjProjectManager(String tjProjectManager) {
+        this.tjProjectManager = tjProjectManager;
+    }
+
+    public String getCjRemarks() {
+        return cjRemarks;
+    }
+
+    public void setCjRemarks(String cjRemarks) {
+        this.cjRemarks = cjRemarks;
+    }
+
+    public String getProjectApproval() {
+        return projectApproval;
+    }
+
+    public void setProjectApproval(String projectApproval) {
+        this.projectApproval = projectApproval;
+    }
+
+    public String getCompletionStatus() {
+        return completionStatus;
+    }
+
+    public void setCompletionStatus(String completionStatus) {
+        this.completionStatus = completionStatus;
+    }
+
+    public String getCompletionDate() {
+        return completionDate;
+    }
+
+    public void setCompletionDate(String completionDate) {
+        this.completionDate = completionDate;
+    }
+
+    public String getSettlementStatus() {
+        return settlementStatus;
+    }
+
+    public void setSettlementStatus(String settlementStatus) {
+        this.settlementStatus = settlementStatus;
+    }
+
+    public String getCloseStatus() {
+        return closeStatus;
+    }
+
+    public void setCloseStatus(String closeStatus) {
+        this.closeStatus = closeStatus;
+    }
+
+    public String getProjectDesignChangeStatus() {
+        return projectDesignChangeStatus;
+    }
+
+    public void setProjectDesignChangeStatus(String projectDesignChangeStatus) {
+        this.projectDesignChangeStatus = projectDesignChangeStatus;
+    }
+
+    public String getStockReturnStatus() {
+        return stockReturnStatus;
+    }
+
+    public void setStockReturnStatus(String stockReturnStatus) {
+        this.stockReturnStatus = stockReturnStatus;
+    }
+
+    public String getDesignChangeStatus() {
+        return designChangeStatus;
+    }
+
+    public void setDesignChangeStatus(String designChangeStatus) {
+        this.designChangeStatus = designChangeStatus;
+    }
+
+    public String getDesignChangeType() {
+        return designChangeType;
+    }
+
+    public void setDesignChangeType(String designChangeType) {
+        this.designChangeType = designChangeType;
+    }
+
+    public String getProposer() {
+        return proposer;
+    }
+
+    public void setProposer(String proposer) {
+        this.proposer = proposer;
+    }
+
+    public String getProposeReasons() {
+        return proposeReasons;
+    }
+
+    public void setProposeReasons(String proposeReasons) {
+        this.proposeReasons = proposeReasons;
+    }
+
+    public String getDesignChangeContent() {
+        return designChangeContent;
+    }
+
+    public void setDesignChangeContent(String designChangeContent) {
+        this.designChangeContent = designChangeContent;
+    }
+
+    public String getChangeType() {
+        return changeType;
+    }
+
+    public void setChangeType(String changeType) {
+        this.changeType = changeType;
+    }
+
+    public String getDesignChangeProposeTime() {
+        return designChangeProposeTime;
+    }
+
+    public void setDesignChangeProposeTime(String designChangeProposeTime) {
+        this.designChangeProposeTime = designChangeProposeTime;
+    }
+
+    public String getCompleteDesignChangeType() {
+        return completeDesignChangeType;
+    }
+
+    public void setCompleteDesignChangeType(String completeDesignChangeType) {
+        this.completeDesignChangeType = completeDesignChangeType;
+    }
+
+    public String getProjectManagerApproved() {
+        return projectManagerApproved;
+    }
+
+    public void setProjectManagerApproved(String projectManagerApproved) {
+        this.projectManagerApproved = projectManagerApproved;
+    }
+
+    public String getElectronDiagramCompleteTime() {
+        return electronDiagramCompleteTime;
+    }
+
+    public void setElectronDiagramCompleteTime(String electronDiagramCompleteTime) {
+        this.electronDiagramCompleteTime = electronDiagramCompleteTime;
+    }
+
+    public String getCompleteBudgetAdjust() {
+        return completeBudgetAdjust;
+    }
+
+    public void setCompleteBudgetAdjust(String completeBudgetAdjust) {
+        this.completeBudgetAdjust = completeBudgetAdjust;
+    }
+
+    public String getJjApproved() {
+        return jjApproved;
+    }
+
+    public void setJjApproved(String jjApproved) {
+        this.jjApproved = jjApproved;
+    }
+
+    public String getBudgetCompleteTime() {
+        return budgetCompleteTime;
+    }
+
+    public void setBudgetCompleteTime(String budgetCompleteTime) {
+        this.budgetCompleteTime = budgetCompleteTime;
+    }
+
+    public String getBeforeChangeBudget() {
+        return beforeChangeBudget;
+    }
+
+    public void setBeforeChangeBudget(String beforeChangeBudget) {
+        this.beforeChangeBudget = beforeChangeBudget;
+    }
+
+    public String getAfterChangeBudget() {
+        return afterChangeBudget;
+    }
+
+    public void setAfterChangeBudget(String afterChangeBudget) {
+        this.afterChangeBudget = afterChangeBudget;
+    }
+
+    public String getAfterChangeConstructionCost() {
+        return afterChangeConstructionCost;
+    }
+
+    public void setAfterChangeConstructionCost(String afterChangeConstructionCost) {
+        this.afterChangeConstructionCost = afterChangeConstructionCost;
+    }
+
+    public String getDrawingTransfer() {
+        return drawingTransfer;
+    }
+
+    public void setDrawingTransfer(String drawingTransfer) {
+        this.drawingTransfer = drawingTransfer;
+    }
+
+    public String getDrawingTransferTime() {
+        return drawingTransferTime;
+    }
+
+    public void setDrawingTransferTime(String drawingTransferTime) {
+        this.drawingTransferTime = drawingTransferTime;
+    }
+
+    public String getDesignChangeTime() {
+        return designChangeTime;
+    }
+
+    public void setDesignChangeTime(String designChangeTime) {
+        this.designChangeTime = designChangeTime;
+    }
+
+    public String getDataIntegrity() {
+        return dataIntegrity;
+    }
+
+    public void setDataIntegrity(String dataIntegrity) {
+        this.dataIntegrity = dataIntegrity;
+    }
+
+    public String getScanningCopy() {
+        return scanningCopy;
+    }
+
+    public void setScanningCopy(String scanningCopy) {
+        this.scanningCopy = scanningCopy;
+    }
+
+    @Override
+    public String getRemarks() {
+        return remarks;
+    }
+
+    @Override
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+}

+ 379 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/entity/DistributionNetwork.java

@@ -0,0 +1,379 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity;
+
+import com.jeeplus.core.persistence.ActEntity;
+
+/**
+ * 配网项目问题表
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 9:26
+ */
+public class DistributionNetwork extends ActEntity<DistributionNetwork> {
+
+    //储备项目基本信息
+    private String projectYear;             //项目年份
+    private String projectNature;           //项目性质
+    private String demandUnit;              //需求单位
+    private String district;                //区域
+    private String projectGroup;            //项目分组
+    private String reserveBatches;          //储备批次
+    private String blockSupply;             //供电区域
+    private String gridNumber;              //网格编号
+    private String cellNumber;              //单元格编号
+    private String projectReserveId;        //项目储备编号
+    private String projectName;             //项目名称
+    private String stateGridProjectCode;             //国网项目编码
+    private String stateGridProjectName;             //国网项目名称
+    private String constructionNecessityAndContent;           //建设必要性及内容
+    private String substationName;           //变电站名称
+    private String circuitName;              //线路名称
+    private String netRackProjectDivide;     //网架项目划分
+    private String requirementType;          //需求类型
+    private String projectType;              //项目类型
+    private String costEstimate;             //费用估算
+    private String remarks;                  //备注
+    private String reserStatus;                 //储备流程状态
+    //问题发起
+    private String promoter;                  //问题发起人
+    private String problemStage;              //问题所处阶段
+    private String problemType;               //问题类型
+    private String problemDescript;           //问题描述
+    //业主项目经理
+    private String problemSolver;             //问题解决人-经理
+    private String problemResolved;           //问题是否解决-经理
+    private String problemResolvedDescript;   //问题解决描述-经理
+    private String designChange;              //是否需要设计变更-经理
+    private String changeType;                //变更类型-经理
+    private String designChangeType;          //设计变更类型-经理
+    private String reportToLeader;            //是否需要上报业主领导
+    //业主单位领导
+    private String problemSolverLeader;       //问题解决人-领导
+    private String problemResolvedLeader;         //问题是否解决-领导
+    private String problemResolvedDescriptLeader; //问题解决描述-领导
+    private String designChangeLeader;            //是否需要设计变更-领导
+    private String changeTypeLeader;              //变更类型-领导
+    private String designChangeTypeLeader;        //设计变更类型-领导
+    private String processStatus;                 //流程状态
+
+    public String getReserStatus() {
+        return reserStatus;
+    }
+
+    public void setReserStatus(String reserStatus) {
+        this.reserStatus = reserStatus;
+    }
+
+    public String getProjectYear() {
+        return projectYear;
+    }
+
+    public void setProjectYear(String projectYear) {
+        this.projectYear = projectYear;
+    }
+
+    public String getProjectNature() {
+        return projectNature;
+    }
+
+    public void setProjectNature(String projectNature) {
+        this.projectNature = projectNature;
+    }
+
+    public String getDemandUnit() {
+        return demandUnit;
+    }
+
+    public void setDemandUnit(String demandUnit) {
+        this.demandUnit = demandUnit;
+    }
+
+    public String getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(String district) {
+        this.district = district;
+    }
+
+    public String getProjectGroup() {
+        return projectGroup;
+    }
+
+    public void setProjectGroup(String projectGroup) {
+        this.projectGroup = projectGroup;
+    }
+
+    public String getReserveBatches() {
+        return reserveBatches;
+    }
+
+    public void setReserveBatches(String reserveBatches) {
+        this.reserveBatches = reserveBatches;
+    }
+
+    public String getBlockSupply() {
+        return blockSupply;
+    }
+
+    public void setBlockSupply(String blockSupply) {
+        this.blockSupply = blockSupply;
+    }
+
+    public String getGridNumber() {
+        return gridNumber;
+    }
+
+    public void setGridNumber(String gridNumber) {
+        this.gridNumber = gridNumber;
+    }
+
+    public String getCellNumber() {
+        return cellNumber;
+    }
+
+    public void setCellNumber(String cellNumber) {
+        this.cellNumber = cellNumber;
+    }
+
+    public String getProjectReserveId() {
+        return projectReserveId;
+    }
+
+    public void setProjectReserveId(String projectReserveId) {
+        this.projectReserveId = projectReserveId;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getStateGridProjectCode() {
+        return stateGridProjectCode;
+    }
+
+    public void setStateGridProjectCode(String stateGridProjectCode) {
+        this.stateGridProjectCode = stateGridProjectCode;
+    }
+
+    public String getStateGridProjectName() {
+        return stateGridProjectName;
+    }
+
+    public void setStateGridProjectName(String stateGridProjectName) {
+        this.stateGridProjectName = stateGridProjectName;
+    }
+
+    public String getConstructionNecessityAndContent() {
+        return constructionNecessityAndContent;
+    }
+
+    public void setConstructionNecessityAndContent(String constructionNecessityAndContent) {
+        this.constructionNecessityAndContent = constructionNecessityAndContent;
+    }
+
+    public String getSubstationName() {
+        return substationName;
+    }
+
+    public void setSubstationName(String substationName) {
+        this.substationName = substationName;
+    }
+
+    public String getCircuitName() {
+        return circuitName;
+    }
+
+    public void setCircuitName(String circuitName) {
+        this.circuitName = circuitName;
+    }
+
+    public String getNetRackProjectDivide() {
+        return netRackProjectDivide;
+    }
+
+    public void setNetRackProjectDivide(String netRackProjectDivide) {
+        this.netRackProjectDivide = netRackProjectDivide;
+    }
+
+    public String getRequirementType() {
+        return requirementType;
+    }
+
+    public void setRequirementType(String requirementType) {
+        this.requirementType = requirementType;
+    }
+
+    public String getProjectType() {
+        return projectType;
+    }
+
+    public void setProjectType(String projectType) {
+        this.projectType = projectType;
+    }
+
+    public String getCostEstimate() {
+        return costEstimate;
+    }
+
+    public void setCostEstimate(String costEstimate) {
+        this.costEstimate = costEstimate;
+    }
+
+    @Override
+    public String getRemarks() {
+        return remarks;
+    }
+
+    @Override
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getPromoter() {
+        return promoter;
+    }
+
+    public void setPromoter(String promoter) {
+        this.promoter = promoter;
+    }
+
+    public String getProblemStage() {
+        return problemStage;
+    }
+
+    public void setProblemStage(String problemStage) {
+        this.problemStage = problemStage;
+    }
+
+    public String getProblemType() {
+        return problemType;
+    }
+
+    public void setProblemType(String problemType) {
+        this.problemType = problemType;
+    }
+
+    public String getProblemDescript() {
+        return problemDescript;
+    }
+
+    public void setProblemDescript(String problemDescript) {
+        this.problemDescript = problemDescript;
+    }
+
+    public String getProblemSolver() {
+        return problemSolver;
+    }
+
+    public void setProblemSolver(String problemSolver) {
+        this.problemSolver = problemSolver;
+    }
+
+    public String getProblemResolved() {
+        return problemResolved;
+    }
+
+    public void setProblemResolved(String problemResolved) {
+        this.problemResolved = problemResolved;
+    }
+
+    public String getProblemResolvedDescript() {
+        return problemResolvedDescript;
+    }
+
+    public void setProblemResolvedDescript(String problemResolvedDescript) {
+        this.problemResolvedDescript = problemResolvedDescript;
+    }
+
+    public String getDesignChange() {
+        return designChange;
+    }
+
+    public void setDesignChange(String designChange) {
+        this.designChange = designChange;
+    }
+
+    public String getChangeType() {
+        return changeType;
+    }
+
+    public void setChangeType(String changeType) {
+        this.changeType = changeType;
+    }
+
+    public String getDesignChangeType() {
+        return designChangeType;
+    }
+
+    public void setDesignChangeType(String designChangeType) {
+        this.designChangeType = designChangeType;
+    }
+
+    public String getReportToLeader() {
+        return reportToLeader;
+    }
+
+    public void setReportToLeader(String reportToLeader) {
+        this.reportToLeader = reportToLeader;
+    }
+
+    public String getProblemSolverLeader() {
+        return problemSolverLeader;
+    }
+
+    public void setProblemSolverLeader(String problemSolverLeader) {
+        this.problemSolverLeader = problemSolverLeader;
+    }
+
+    public String getProblemResolvedLeader() {
+        return problemResolvedLeader;
+    }
+
+    public void setProblemResolvedLeader(String problemResolvedLeader) {
+        this.problemResolvedLeader = problemResolvedLeader;
+    }
+
+    public String getProblemResolvedDescriptLeader() {
+        return problemResolvedDescriptLeader;
+    }
+
+    public void setProblemResolvedDescriptLeader(String problemResolvedDescriptLeader) {
+        this.problemResolvedDescriptLeader = problemResolvedDescriptLeader;
+    }
+
+    public String getDesignChangeLeader() {
+        return designChangeLeader;
+    }
+
+    public void setDesignChangeLeader(String designChangeLeader) {
+        this.designChangeLeader = designChangeLeader;
+    }
+
+    public String getChangeTypeLeader() {
+        return changeTypeLeader;
+    }
+
+    public void setChangeTypeLeader(String changeTypeLeader) {
+        this.changeTypeLeader = changeTypeLeader;
+    }
+
+    public String getDesignChangeTypeLeader() {
+        return designChangeTypeLeader;
+    }
+
+    public void setDesignChangeTypeLeader(String designChangeTypeLeader) {
+        this.designChangeTypeLeader = designChangeTypeLeader;
+    }
+
+    public String getProcessStatus() {
+        return processStatus;
+    }
+
+    public void setProcessStatus(String processStatus) {
+        this.processStatus = processStatus;
+    }
+}

+ 479 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/entity/DistributionNetworkProcess.java

@@ -0,0 +1,479 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity;
+
+import com.jeeplus.core.persistence.ActEntity;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ScaleDetails;
+import com.jeeplus.modules.sys.entity.User;
+
+import java.util.List;
+
+/**
+ * 配网项目问题表
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 9:26
+ */
+public class DistributionNetworkProcess extends ActEntity<DistributionNetworkProcess> {
+
+    //储备项目基本信息
+    private String projectYear;             //项目年份
+    private String projectNature;           //项目性质
+    private String demandUnit;              //需求单位
+    private String district;                //区域
+    private String projectGroup;            //项目分组
+    private String reserveBatches;          //储备批次
+    private String blockSupply;             //供电区域
+    private String gridNumber;              //网格编号
+    private String cellNumber;              //单元格编号
+    private String projectReserveId;        //项目储备编号
+    private String projectName;             //项目名称
+    private String stateGridProjectCode;             //国网项目编码
+    private String stateGridProjectName;             //国网项目名称
+    private String constructionNecessityAndContent;           //建设必要性及内容
+    private String substationName;           //变电站名称
+    private String circuitName;              //线路名称
+    private String netRackProjectDivide;     //网架项目划分
+    private String requirementType;          //需求类型
+    private String projectType;              //项目类型
+    private String costEstimate;             //费用估算
+    private String remarks;                  //备注
+    private String reserStatus;                 //储备流程状态
+    //问题发起
+    private String promoter;                  //问题发起人
+    private String problemStage;              //问题所处阶段
+    private String problemType;               //问题类型
+    private String problemDescript;           //问题描述
+    //业主项目经理
+    private String problemSolver;             //问题解决人-经理
+    private String problemResolved;           //问题是否解决-经理
+    private String problemResolvedDescript;   //问题解决描述-经理
+    private String designChange;              //是否需要设计变更-经理
+    private String changeType;                //变更类型-经理
+    private String designChangeType;          //设计变更类型-经理
+    private String reportToLeader;            //是否需要上报业主领导
+    private List<String> userList;                //所有的领导
+    //业主单位领导
+    private String problemSolverLeader;       //问题解决人-领导
+    private String problemResolvedLeader;         //问题是否解决-领导
+    private String problemResolvedDescriptLeader; //问题解决描述-领导
+    private String designChangeLeader;            //是否需要设计变更-领导
+    private String changeTypeLeader;              //变更类型-领导
+    private String designChangeTypeLeader;        //设计变更类型-领导
+    private String processStatus;                 //流程状态
+
+    /**
+     * 预算书
+     * */
+    private String budgetStatement;
+    /**
+     * 项目建议书
+     * */
+    private String projectProposal;
+    /**
+     * 图纸
+     * */
+    private String drawings;
+    /**
+     * 甲供材清册
+     * */
+    private ScaleDetails scaleDetails;
+    /**
+     * 施工图设计说明书
+     * */
+    private String drawingSpecification;
+
+    /**
+     * 拆旧材料清册
+     */
+    private String demolition;
+
+    /**
+     * 土建现浇审批单
+     */
+    private String approvalForm;
+
+    public String getBudgetStatement() {
+        return budgetStatement;
+    }
+
+    public void setBudgetStatement(String budgetStatement) {
+        this.budgetStatement = budgetStatement;
+    }
+
+    public String getProjectProposal() {
+        return projectProposal;
+    }
+
+    public void setProjectProposal(String projectProposal) {
+        this.projectProposal = projectProposal;
+    }
+
+    public String getDrawings() {
+        return drawings;
+    }
+
+    public void setDrawings(String drawings) {
+        this.drawings = drawings;
+    }
+
+    public ScaleDetails getScaleDetails() {
+        return scaleDetails;
+    }
+
+    public void setScaleDetails(ScaleDetails scaleDetails) {
+        this.scaleDetails = scaleDetails;
+    }
+
+    public String getDrawingSpecification() {
+        return drawingSpecification;
+    }
+
+    public void setDrawingSpecification(String drawingSpecification) {
+        this.drawingSpecification = drawingSpecification;
+    }
+
+    public String getDemolition() {
+        return demolition;
+    }
+
+    public void setDemolition(String demolition) {
+        this.demolition = demolition;
+    }
+
+    public String getApprovalForm() {
+        return approvalForm;
+    }
+
+    public void setApprovalForm(String approvalForm) {
+        this.approvalForm = approvalForm;
+    }
+
+    public List<String> getUserList() {
+        return userList;
+    }
+
+        public void setUserList(List<String> userList) {
+        this.userList = userList;
+    }
+
+    public String getReserStatus() {
+        return reserStatus;
+    }
+
+    public void setReserStatus(String reserStatus) {
+        this.reserStatus = reserStatus;
+    }
+
+    public String getProjectYear() {
+        return projectYear;
+    }
+
+    public void setProjectYear(String projectYear) {
+        this.projectYear = projectYear;
+    }
+
+    public String getProjectNature() {
+        return projectNature;
+    }
+
+    public void setProjectNature(String projectNature) {
+        this.projectNature = projectNature;
+    }
+
+    public String getDemandUnit() {
+        return demandUnit;
+    }
+
+    public void setDemandUnit(String demandUnit) {
+        this.demandUnit = demandUnit;
+    }
+
+    public String getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(String district) {
+        this.district = district;
+    }
+
+    public String getProjectGroup() {
+        return projectGroup;
+    }
+
+    public void setProjectGroup(String projectGroup) {
+        this.projectGroup = projectGroup;
+    }
+
+    public String getReserveBatches() {
+        return reserveBatches;
+    }
+
+    public void setReserveBatches(String reserveBatches) {
+        this.reserveBatches = reserveBatches;
+    }
+
+    public String getBlockSupply() {
+        return blockSupply;
+    }
+
+    public void setBlockSupply(String blockSupply) {
+        this.blockSupply = blockSupply;
+    }
+
+    public String getGridNumber() {
+        return gridNumber;
+    }
+
+    public void setGridNumber(String gridNumber) {
+        this.gridNumber = gridNumber;
+    }
+
+    public String getCellNumber() {
+        return cellNumber;
+    }
+
+    public void setCellNumber(String cellNumber) {
+        this.cellNumber = cellNumber;
+    }
+
+    public String getProjectReserveId() {
+        return projectReserveId;
+    }
+
+    public void setProjectReserveId(String projectReserveId) {
+        this.projectReserveId = projectReserveId;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getStateGridProjectCode() {
+        return stateGridProjectCode;
+    }
+
+    public void setStateGridProjectCode(String stateGridProjectCode) {
+        this.stateGridProjectCode = stateGridProjectCode;
+    }
+
+    public String getStateGridProjectName() {
+        return stateGridProjectName;
+    }
+
+    public void setStateGridProjectName(String stateGridProjectName) {
+        this.stateGridProjectName = stateGridProjectName;
+    }
+
+    public String getConstructionNecessityAndContent() {
+        return constructionNecessityAndContent;
+    }
+
+    public void setConstructionNecessityAndContent(String constructionNecessityAndContent) {
+        this.constructionNecessityAndContent = constructionNecessityAndContent;
+    }
+
+    public String getSubstationName() {
+        return substationName;
+    }
+
+    public void setSubstationName(String substationName) {
+        this.substationName = substationName;
+    }
+
+    public String getCircuitName() {
+        return circuitName;
+    }
+
+    public void setCircuitName(String circuitName) {
+        this.circuitName = circuitName;
+    }
+
+    public String getNetRackProjectDivide() {
+        return netRackProjectDivide;
+    }
+
+    public void setNetRackProjectDivide(String netRackProjectDivide) {
+        this.netRackProjectDivide = netRackProjectDivide;
+    }
+
+    public String getRequirementType() {
+        return requirementType;
+    }
+
+    public void setRequirementType(String requirementType) {
+        this.requirementType = requirementType;
+    }
+
+    public String getProjectType() {
+        return projectType;
+    }
+
+    public void setProjectType(String projectType) {
+        this.projectType = projectType;
+    }
+
+    public String getCostEstimate() {
+        return costEstimate;
+    }
+
+    public void setCostEstimate(String costEstimate) {
+        this.costEstimate = costEstimate;
+    }
+
+    @Override
+    public String getRemarks() {
+        return remarks;
+    }
+
+    @Override
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getPromoter() {
+        return promoter;
+    }
+
+    public void setPromoter(String promoter) {
+        this.promoter = promoter;
+    }
+
+    public String getProblemStage() {
+        return problemStage;
+    }
+
+    public void setProblemStage(String problemStage) {
+        this.problemStage = problemStage;
+    }
+
+    public String getProblemType() {
+        return problemType;
+    }
+
+    public void setProblemType(String problemType) {
+        this.problemType = problemType;
+    }
+
+    public String getProblemDescript() {
+        return problemDescript;
+    }
+
+    public void setProblemDescript(String problemDescript) {
+        this.problemDescript = problemDescript;
+    }
+
+    public String getProblemSolver() {
+        return problemSolver;
+    }
+
+    public void setProblemSolver(String problemSolver) {
+        this.problemSolver = problemSolver;
+    }
+
+    public String getProblemResolved() {
+        return problemResolved;
+    }
+
+    public void setProblemResolved(String problemResolved) {
+        this.problemResolved = problemResolved;
+    }
+
+    public String getProblemResolvedDescript() {
+        return problemResolvedDescript;
+    }
+
+    public void setProblemResolvedDescript(String problemResolvedDescript) {
+        this.problemResolvedDescript = problemResolvedDescript;
+    }
+
+    public String getDesignChange() {
+        return designChange;
+    }
+
+    public void setDesignChange(String designChange) {
+        this.designChange = designChange;
+    }
+
+    public String getChangeType() {
+        return changeType;
+    }
+
+    public void setChangeType(String changeType) {
+        this.changeType = changeType;
+    }
+
+    public String getDesignChangeType() {
+        return designChangeType;
+    }
+
+    public void setDesignChangeType(String designChangeType) {
+        this.designChangeType = designChangeType;
+    }
+
+    public String getReportToLeader() {
+        return reportToLeader;
+    }
+
+    public void setReportToLeader(String reportToLeader) {
+        this.reportToLeader = reportToLeader;
+    }
+
+    public String getProblemSolverLeader() {
+        return problemSolverLeader;
+    }
+
+    public void setProblemSolverLeader(String problemSolverLeader) {
+        this.problemSolverLeader = problemSolverLeader;
+    }
+
+    public String getProblemResolvedLeader() {
+        return problemResolvedLeader;
+    }
+
+    public void setProblemResolvedLeader(String problemResolvedLeader) {
+        this.problemResolvedLeader = problemResolvedLeader;
+    }
+
+    public String getProblemResolvedDescriptLeader() {
+        return problemResolvedDescriptLeader;
+    }
+
+    public void setProblemResolvedDescriptLeader(String problemResolvedDescriptLeader) {
+        this.problemResolvedDescriptLeader = problemResolvedDescriptLeader;
+    }
+
+    public String getDesignChangeLeader() {
+        return designChangeLeader;
+    }
+
+    public void setDesignChangeLeader(String designChangeLeader) {
+        this.designChangeLeader = designChangeLeader;
+    }
+
+    public String getChangeTypeLeader() {
+        return changeTypeLeader;
+    }
+
+    public void setChangeTypeLeader(String changeTypeLeader) {
+        this.changeTypeLeader = changeTypeLeader;
+    }
+
+    public String getDesignChangeTypeLeader() {
+        return designChangeTypeLeader;
+    }
+
+    public void setDesignChangeTypeLeader(String designChangeTypeLeader) {
+        this.designChangeTypeLeader = designChangeTypeLeader;
+    }
+
+    public String getProcessStatus() {
+        return processStatus;
+    }
+
+    public void setProcessStatus(String processStatus) {
+        this.processStatus = processStatus;
+    }
+}

+ 92 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/DistributionDesignChangeMapper.java

@@ -0,0 +1,92 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionDesignChange;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 10:04
+ */
+@MyBatisMapper
+public interface DistributionDesignChangeMapper extends BaseMapper<DistributionDesignChange> {
+
+    /**
+     * 通过流程定义号删除流程对应信息
+     * */
+    void deleteAct(String projectReserveId);
+
+    /**
+     * 根据项目储备编号查数据
+     * @param reserveId
+     * @return
+     */
+    DistributionDesignChange getByReserveId(String reserveId);
+
+    /**
+     * 批量添加政策处理基本信息
+     * @param list
+     * @return
+     */
+    void insertList(@Param("list") List<DistributionDesignChange> list);
+
+    /**
+     * 根据项目储备编号删除政策处理基本信息
+     * @param projectReserveId
+     */
+    void deleteByProjectReserveId(String projectReserveId);
+
+    /**
+     * 根据项目储备id查询政策处理基本信息
+     * @param reserveManagement
+     * @return
+     */
+    DistributionDesignChange queryByProjectReserveId(DistributionDesignChange reserveManagement);
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    List<String> getAllProId();
+
+    /**
+     * 从基本数据表中获取所有的  项目储备编号
+     * @return
+     */
+    List<String> getAllProId2();
+
+    /**
+     * 导出数据查询
+     * @param reserveManagement
+     * @return
+     */
+    List<DistributionDesignChange> exportFindList(DistributionDesignChange reserveManagement);
+
+    /**
+     * 根据projectReserveId查出proc_ins_id
+     * @param projectReserveId
+     * @return
+     */
+    String getByProjectReserveId(String projectReserveId);
+
+    /**
+     * 根据executeId查出历史节点信息
+     * @param executeId
+     * @return
+     */
+    List<History> getHistoryByExecuteId(String executeId);
+
+    /**
+     * 根据executeId查出当前节点的名称
+     * @param executeId
+     * @return
+     */
+    String getByExecuteId(String executeId);
+
+    String getByUserName(String name);
+}

+ 92 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/DistributionNetworkMapper.java

@@ -0,0 +1,92 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetwork;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 9:33
+ */
+@MyBatisMapper
+public interface DistributionNetworkMapper extends BaseMapper<DistributionNetwork> {
+
+    /**
+     * 通过流程定义号删除流程对应信息
+     * */
+    void deleteAct(String projectReserveId);
+
+    /**
+     * 根据项目储备编号查数据
+     * @param reserveId
+     * @return
+     */
+    DistributionNetwork getByReserveId(String reserveId);
+
+    /**
+     * 批量添加政策处理基本信息
+     * @param list
+     * @return
+     */
+    void insertList(@Param("list") List<DistributionNetwork> list);
+
+    /**
+     * 根据项目储备编号删除政策处理基本信息
+     * @param projectReserveId
+     */
+    void deleteByProjectReserveId(String projectReserveId);
+
+    /**
+     * 根据项目储备id查询政策处理基本信息
+     * @param reserveManagement
+     * @return
+     */
+    DistributionNetwork queryByProjectReserveId(DistributionNetwork reserveManagement);
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    List<String> getAllProId();
+
+    /**
+     * 从基本数据表中获取所有的  项目储备编号
+     * @return
+     */
+    List<String> getAllProId2();
+
+    /**
+     * 导出数据查询
+     * @param reserveManagement
+     * @return
+     */
+    List<DistributionNetwork> exportFindList(DistributionNetwork reserveManagement);
+
+    /**
+     * 根据projectReserveId查出proc_ins_id
+     * @param projectReserveId
+     * @return
+     */
+    String getByProjectReserveId(String projectReserveId);
+
+    /**
+     * 根据executeId查出历史节点信息
+     * @param executeId
+     * @return
+     */
+    List<History> getHistoryByExecuteId(String executeId);
+
+    /**
+     * 根据executeId查出当前节点的名称
+     * @param executeId
+     * @return
+     */
+    String getByExecuteId(String executeId);
+
+    String getByUserName(String name);
+}

+ 24 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/DistributionNetworkProcessMapper.java

@@ -0,0 +1,24 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetworkProcess;
+import com.jeeplus.modules.sys.entity.User;
+
+import java.util.List;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 16:01
+ */
+@MyBatisMapper
+public interface DistributionNetworkProcessMapper extends BaseMapper<DistributionNetworkProcess> {
+
+    /**
+     * 通过procInsId查询项目定义号
+     * */
+    String findProjectId(DistributionNetworkProcess reserveProcess);
+
+    List<String> getUserInfo();
+}

+ 249 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/xml/DistributionDesignChangeMapper.xml

@@ -0,0 +1,249 @@
+<?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.cg.reservemanagementcenter.distribution.mapper.DistributionDesignChangeMapper">
+    <sql id="safeColumns">
+        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.del_flag AS "delFlag",
+        a.projectReserveId,
+        a.designChangeContent,
+        a.drawingTransfer,
+        a.drawingTransferTime,
+        a.dataIntegrity,
+        a.remarks
+
+    </sql>
+
+    <sql id="reserveManagementColumns">
+        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.del_flag AS "delFlag",
+		a.projectYear,
+		tv.projectNatureArtificial AS projectNature,
+		a.demandUnit,
+		a.district,
+		a.projectGroup,
+		a.ownerReserveProjectManagre as projectManager,
+		a.reserveBatches,
+		a.blockSupply,
+		a.gridNumber,
+		a.cellNumber,
+		a.projectReserveId,
+		a.projectName,
+		a.constructionNecessityAndContent,
+		a.substationName,
+		a.circuitName,
+		a.netRackProjectDivide,
+		a.requirementType,
+		a.costEstimate,
+		a.processStatus as reserStatus,
+		a.basicRemarks,
+		IFNULL(b.designChangeContent,"") as designChangeContent,
+		IFNULL(b.drawingTransfer,"") as drawingTransfer,
+		IFNULL(b.drawingTransferTime,"") as drawingTransferTime,
+		IFNULL(b.dataIntegrity,"") as dataIntegrity,
+		IFNULL(c.designChangeType,"") as designChangeType,
+		IFNULL(c.designChangeTypeLeader,"") as designChangeTypeLeader,
+		IFNULL(c.changeType,"") as changeType,
+		IFNULL(c.changeTypeLeader,"") as changeTypeLeader,
+		IFNULL(c.promoter,"") as proposer,
+		IFNULL(c.problemDescript,"") as proposeReasons
+
+    </sql>
+
+    <insert id="insert">
+        insert into cg_reserve_distribution_design_change (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        projectReserveId,
+        designChangeContent,
+        drawingTransfer,
+        drawingTransferTime,
+        dataIntegrity,
+        remarks
+        )
+        values
+        (
+            #{id},
+            #{createBy.id},
+            #{createDate},
+            #{updateBy.id},
+            #{updateDate},
+            #{delFlag},
+            #{projectReserveId},
+            #{designChangeContent},
+            #{drawingTransfer},
+            #{drawingTransferTime},
+            #{dataIntegrity},
+            #{remarks}
+            )
+    </insert>
+
+    <insert id="insertList">
+        insert into cg_reserve_distribution_design_change (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        projectReserveId,
+        designChangeContent,
+        drawingTransfer,
+        drawingTransferTime,
+        dataIntegrity,
+        remarks
+        )
+        values
+        <foreach collection="list" item="item" index="index" separator="," >
+            (
+            #{item.id},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate},
+            #{item.delFlag},
+            #{item.projectReserveId},
+            #{item.designChangeContent},
+            #{item.drawingTransfer},
+            #{item.drawingTransferTime},
+            #{item.dataIntegrity},
+            #{item.remarks}
+            )
+        </foreach>
+    </insert>
+
+    <update id="update">
+		update
+        cg_reserve_distribution_design_change
+        set
+        update_by = #{updateBy.id},
+        update_date = #{updateDate},
+        designChangeContent = #{designChangeContent},
+        drawingTransfer = #{drawingTransfer},
+        drawingTransferTime = #{drawingTransferTime},
+        dataIntegrity = #{dataIntegrity},
+        remarks = #{remarks}
+        where id = #{id}
+	</update>
+
+    <delete id="deleteByProjectReserveId">
+        delete from cg_reserve_distribution_design_change where projectReserveId = #{projectReserveId}
+    </delete>
+    <delete id="deleteAct">
+        delete
+        from cg_personnel_activiti_distribution
+        where projectReserveId = #{projectReserveId}
+    </delete>
+
+    <select id="queryByProjectReserveId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionDesignChange">
+        select
+        <include refid="safeColumns"/>
+        from cg_reserve_distribution_design_change a
+        where a.projectReserveId = #{projectReserveId}
+    </select>
+
+    <select id="findList" resultType="com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionDesignChange">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_distribution_design_change b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_reserve_distribution_network c
+        on a.projectReserveId = c.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        <where>
+            a.del_flag = 0 and a.projectYear like concat(#{projectYear}, '%')
+            <if test="projectReserveId!=null and projectReserveId!=''">
+                and a.projectReserveId like concat('%', #{projectReserveId}, '%')
+            </if>
+            <if test="projectName!=null and projectName!=''">
+                and a.projectName like concat('%', #{projectName}, '%')
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                ${dataScope}
+            </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="get" resultType="com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionDesignChange">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_distribution_design_change b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_reserve_distribution_network c
+        on a.projectReserveId = c.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        where a.id = #{id}
+    </select>
+    <select id="getAllProId" resultType="java.lang.String">
+        select projectReserveId from cg_reserve_distribution_design_change
+    </select>
+    <select id="getAllProId2" resultType="java.lang.String">
+        select projectReserveId from cg_reserve_process
+    </select>
+    <select id="exportFindList"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionDesignChange">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_distribution_design_change b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_reserve_distribution_network c
+        on a.projectReserveId = c.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        <where>
+            a.del_flag = 0 and a.projectYear like concat(#{projectYear}, '%')
+            <if test="projectReserveId!=null and projectReserveId!=''">
+                and a.projectReserveId like concat('%', #{projectReserveId}, '%')
+            </if>
+            <if test="projectName!=null and projectName!=''">
+                and a.projectName like concat('%', #{projectName}, '%')
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                ${dataScope}
+            </if>
+        </where>
+        ORDER BY a.update_date DESC
+    </select>
+    <select id="getByProjectReserveId" resultType="java.lang.String">
+        SELECT proc_ins_id from cg_personnel_activiti where projectReserveId = #{projectReserveId}
+    </select>
+    <select id="getHistoryByExecuteId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History">
+        select ACT_NAME_ as name,START_TIME_ as startTime,END_TIME_ as endTime from act_hi_actinst
+        WHERE PROC_INST_ID_ = #{executeId} and ACT_NAME_ is not null ORDER BY startTime desc
+    </select>
+    <select id="getByExecuteId" resultType="java.lang.String">
+        SELECT  GROUP_CONCAT(NAME_ SEPARATOR ', ') as  NAME_ FROM `act_ru_task` WHERE PROC_INST_ID_ = #{executeId}
+    </select>
+    <select id="getByReserveId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionDesignChange">
+        select
+        <include refid="safeColumns"/>
+        from cg_reserve_distribution_design_change a where a.projectReserveId = #{reserveId}
+    </select>
+    <select id="getByUserName" resultType="java.lang.String">
+        SELECT login_name FROM `sys_user` where name = #{name}
+    </select>
+</mapper>

+ 330 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/xml/DistributionNetworkMapper.xml

@@ -0,0 +1,330 @@
+<?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.cg.reservemanagementcenter.distribution.mapper.DistributionNetworkMapper">
+
+    <sql id="safeColumns">
+        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.del_flag AS "delFlag",
+        a.projectReserveId,
+        a.processStatus,
+        a.promoter,
+        a.problemStage,
+        a.problemType,
+        a.problemDescript,
+        a.problemSolver,
+        a.problemResolved,
+        a.problemResolvedDescript,
+        a.designChange,
+        a.changeType,
+        a.designChangeType,
+        a.reportToLeader,
+        a.problemSolverLeader,
+        a.problemResolvedLeader,
+        a.problemResolvedDescriptLeader,
+        a.designChangeLeader,
+        a.changeTypeLeader,
+        a.designChangeTypeLeader
+
+    </sql>
+
+    <sql id="reserveManagementColumns">
+        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.del_flag AS "delFlag",
+		a.projectYear,
+		tv.projectNatureArtificial AS projectNature,
+		a.demandUnit,
+		a.district,
+		a.projectGroup,
+		a.ownerReserveProjectManagre as projectManager,
+		a.reserveBatches,
+		a.blockSupply,
+		a.gridNumber,
+		a.cellNumber,
+		a.projectReserveId,
+		a.projectName,
+		a.constructionNecessityAndContent,
+		a.substationName,
+		a.circuitName,
+		a.netRackProjectDivide,
+		a.requirementType,
+		a.costEstimate,
+		a.processStatus as reserStatus,
+		a.basicRemarks as remarks,
+		IFNULL(b.processStatus,"") as processStatus,
+        IFNULL(b.promoter,"") as promoter,
+        IFNULL(b.problemStage,"") as problemStage,
+        IFNULL(b.problemType,"") as problemType,
+        IFNULL(b.problemDescript,"") as problemDescript,
+        IFNULL(b.problemSolver,"") as problemSolver,
+        IFNULL(b.problemResolved,"") as problemResolved,
+        IFNULL(b.problemResolvedDescript,"") as problemResolvedDescript,
+        IFNULL(b.designChange,"") as designChange,
+        IFNULL(b.changeType,"") as changeType,
+        IFNULL(b.designChangeType,"") as designChangeType,
+        IFNULL(b.reportToLeader,"") as reportToLeader,
+        IFNULL(b.problemSolverLeader,"") as problemSolverLeader,
+        IFNULL(b.problemResolvedLeader,"") as problemResolvedLeader,
+        IFNULL(b.problemResolvedDescriptLeader,"") as problemResolvedDescriptLeader,
+        IFNULL(b.designChangeLeader,"") as designChangeLeader,
+        IFNULL(b.changeTypeLeader,"") as changeTypeLeader,
+        IFNULL(b.designChangeTypeLeader,"") as designChangeTypeLeader
+
+    </sql>
+
+    <insert id="insert">
+        insert into cg_reserve_distribution_network (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        projectReserveId,
+        processStatus,
+        promoter,
+        problemStage,
+        problemType,
+        problemDescript,
+        problemSolver,
+        problemResolved,
+        problemResolvedDescript,
+        designChange,
+        changeType,
+        designChangeType,
+        reportToLeader,
+        problemSolverLeader,
+        problemResolvedLeader,
+        problemResolvedDescriptLeader,
+        designChangeLeader,
+        changeTypeLeader,
+        designChangeTypeLeader
+        )
+        values
+        (
+            #{id},
+            #{createBy.id},
+            #{createDate},
+            #{updateBy.id},
+            #{updateDate},
+            #{delFlag},
+            #{projectReserveId},
+            #{processStatus},
+            #{promoter},
+            #{problemStage},
+            #{problemType},
+            #{problemDescript},
+            #{problemSolver},
+            #{problemResolved},
+            #{problemResolvedDescript},
+            #{designChange},
+            #{changeType},
+            #{designChangeType},
+            #{reportToLeader},
+            #{problemSolverLeader},
+            #{problemResolvedLeader},
+            #{problemResolvedDescriptLeader},
+            #{designChangeLeader},
+            #{changeTypeLeader},
+            #{designChangeTypeLeader}
+            )
+    </insert>
+
+    <insert id="insertList">
+        insert into cg_reserve_distribution_network (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        projectReserveId,
+        processStatus,
+        promoter,
+        problemStage,
+        problemType,
+        problemDescript,
+        problemSolver,
+        problemResolved,
+        problemResolvedDescript,
+        designChange,
+        changeType,
+        designChangeType,
+        reportToLeader,
+        problemSolverLeader,
+        problemResolvedLeader,
+        problemResolvedDescriptLeader,
+        designChangeLeader,
+        changeTypeLeader,
+        designChangeTypeLeader
+        )
+        values
+        <foreach collection="list" item="item" index="index" separator="," >
+            (
+            #{item.id},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate},
+            #{item.delFlag},
+            #{item.projectReserveId},
+            #{item.processStatus},
+            #{item.promoter},
+            #{item.problemStage},
+            #{item.problemType},
+            #{item.problemDescript},
+            #{item.problemSolver},
+            #{item.problemResolved},
+            #{item.problemResolvedDescript},
+            #{item.designChange},
+            #{item.changeType},
+            #{item.designChangeType},
+            #{item.reportToLeader},
+            #{item.problemSolverLeader},
+            #{item.problemResolvedLeader},
+            #{item.problemResolvedDescriptLeader},
+            #{item.designChangeLeader},
+            #{item.changeTypeLeader},
+            #{item.designChangeTypeLeader}
+            )
+        </foreach>
+    </insert>
+
+    <update id="update">
+		update
+        cg_reserve_distribution_network
+        set
+        update_by = #{updateBy.id},
+        update_date = #{updateDate},
+        processStatus = #{processStatus},
+        promoter = #{promoter},
+        problemStage = #{problemStage},
+        problemType = #{problemType},
+        problemDescript = #{problemDescript},
+        problemSolver = #{problemSolver},
+        problemResolved = #{problemResolved},
+        problemResolvedDescript = #{problemResolvedDescript},
+        designChange = #{designChange},
+        changeType = #{changeType},
+        designChangeType = #{designChangeType},
+        reportToLeader = #{reportToLeader},
+        problemSolverLeader = #{problemSolverLeader},
+        problemResolvedLeader = #{problemResolvedLeader},
+        problemResolvedDescriptLeader = #{problemResolvedDescriptLeader},
+        designChangeLeader = #{designChangeLeader},
+        changeTypeLeader = #{changeTypeLeader},
+        designChangeTypeLeader = #{designChangeTypeLeader}
+        where id = #{id}
+	</update>
+
+    <delete id="deleteByProjectReserveId">
+        delete from cg_reserve_distribution_network where projectReserveId = #{projectReserveId}
+    </delete>
+    <delete id="deleteAct">
+        delete
+        from cg_personnel_activiti_distribution
+        where projectReserveId = #{projectReserveId}
+    </delete>
+
+    <select id="queryByProjectReserveId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetwork">
+        select
+        <include refid="safeColumns"/>
+        from cg_reserve_distribution_network a
+        where a.projectReserveId = #{projectReserveId}
+    </select>
+
+    <select id="findList" resultType="com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetwork">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_distribution_network b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        <where>
+            a.del_flag = 0 and a.projectYear like concat(#{projectYear}, '%')
+            <if test="projectReserveId!=null and projectReserveId!=''">
+                and a.projectReserveId like concat('%', #{projectReserveId}, '%')
+            </if>
+            <if test="projectName!=null and projectName!=''">
+                and a.projectName like concat('%', #{projectName}, '%')
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                ${dataScope}
+            </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="get" resultType="com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetwork">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_distribution_network b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        where a.id = #{id}
+    </select>
+    <select id="getAllProId" resultType="java.lang.String">
+        select projectReserveId from cg_reserve_distribution_network
+    </select>
+    <select id="getAllProId2" resultType="java.lang.String">
+        select projectReserveId from cg_reserve_process
+    </select>
+    <select id="exportFindList"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetwork">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_distribution_network b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        <where>
+            a.del_flag = 0 and a.projectYear like concat(#{projectYear}, '%')
+            <if test="projectReserveId!=null and projectReserveId!=''">
+                and a.projectReserveId like concat('%', #{projectReserveId}, '%')
+            </if>
+            <if test="projectName!=null and projectName!=''">
+                and a.projectName like concat('%', #{projectName}, '%')
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                ${dataScope}
+            </if>
+        </where>
+        ORDER BY a.update_date DESC
+    </select>
+    <select id="getByProjectReserveId" resultType="java.lang.String">
+        SELECT proc_ins_id from cg_personnel_activiti where projectReserveId = #{projectReserveId}
+    </select>
+    <select id="getHistoryByExecuteId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History">
+        select ACT_NAME_ as name,START_TIME_ as startTime,END_TIME_ as endTime from act_hi_actinst
+        WHERE PROC_INST_ID_ = #{executeId} and ACT_NAME_ is not null ORDER BY startTime desc
+    </select>
+    <select id="getByExecuteId" resultType="java.lang.String">
+        SELECT  GROUP_CONCAT(NAME_ SEPARATOR ', ') as  NAME_ FROM `act_ru_task` WHERE PROC_INST_ID_ = #{executeId}
+    </select>
+    <select id="getByReserveId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetwork">
+        select
+        <include refid="safeColumns"/>
+        from cg_reserve_distribution_network a where a.projectReserveId = #{reserveId}
+    </select>
+    <select id="getByUserName" resultType="java.lang.String">
+        SELECT login_name FROM `sys_user` where name = #{name}
+    </select>
+</mapper>

+ 132 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/mapper/xml/DistributionNetworkProcessMapper.xml

@@ -0,0 +1,132 @@
+<?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.cg.reservemanagementcenter.distribution.mapper.DistributionNetworkProcessMapper">
+
+    <sql id="standardColumns">
+        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.del_flag AS "delFlag",
+		a.projectReserveId,
+        b.projectName,
+		b.projectYear,
+		b.demandUnit,
+		b.district,
+		b.projectGroup,
+		b.reserveBatches,
+		b.blockSupply,
+		b.gridNumber,
+		b.cellNumber,
+		a.projectReserveId,
+		b.projectName,
+		b.constructionNecessityAndContent,
+		b.substationName,
+		b.circuitName,
+		b.netRackProjectDivide,
+		b.requirementType,
+		b.costEstimate,
+		b.basicRemarks,
+		a.processStatus,
+        a.promoter,
+        a.problemStage,
+        a.problemType,
+        a.problemDescript,
+        a.problemSolver,
+        a.problemResolved,
+        a.problemResolvedDescript,
+        a.designChange,
+        a.changeType,
+        a.designChangeType,
+        a.reportToLeader,
+        a.problemSolverLeader,
+        a.problemResolvedLeader,
+        a.problemResolvedDescriptLeader,
+        a.designChangeLeader,
+        a.changeTypeLeader,
+        a.designChangeTypeLeader
+
+    </sql>
+
+    <insert id="insert">
+        insert into cg_personnel_activiti_distribution (
+                                 id,
+                                 create_by,
+                                 create_date,
+                                 update_by,
+                                 update_date,
+                                 del_flag,
+                                 remarks,
+                                 projectReserveId)
+        values (#{id},
+                #{createBy.id},
+                #{createDate},
+                #{updateBy.id},
+                #{updateDate},
+                #{delFlag},
+                #{remarks},
+                #{projectReserveId})
+    </insert>
+
+    <select id="findProjectId" resultType="java.lang.String">
+        select projectReserveId from cg_personnel_activiti_distribution where id = #{id};
+    </select>
+
+    <select id="get" resultType="com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetworkProcess">
+        select
+        <include refid="standardColumns"/>,
+        cpa.submittedApproval,
+        cpa.constructionCost,
+        cpa.amountFunds,
+        cpa.otherExpenses,
+        cpa.preliminaryCost,
+        cpa.investigationFee,
+        cpa.designFee,
+        cpa.supervisionFee,
+        cpa.examineIncluding,
+        cpa.deductibleTaxes,
+        cpa.examineInExcluding,
+        cpa.constructionTax,
+        cpa.amountTax,
+        cpa.otherTax,
+        cpa.preliminaryTax,
+        cpa.investigationTax,
+        cpa.designTax,
+        cpa.supervisionTax,
+        fe.preferedCase,
+        fe.transferSituation,
+        fe.budgetTemplateCheck,
+        fe.quotaApplicationCheck,
+        fe.workLoadCheck,
+        fe.checkTheFee,
+        fe.supplyCheck,
+        fe.materialCheck,
+        fe.liveWorkFeeCheck,
+        fe.demolitionEngineeringProblems,
+        fe.otherProblem,
+        fe.drawingAndSiteProblem,
+        fe.communicationProblem,
+        fe.civilPrefabricateProblem,
+        fe.liveWorkNumProblem,
+        fe.projectManagerOtherProblem,
+        cdid.budgetStatement as budgetStatement,
+        cdid.projectProposal as projectProposal,
+        cdid.drawings as drawings,
+        cdid.drawingSpecification as drawingSpecification,
+        cdid.demolition as demolition,
+        cdid.approvalForm as approvalForm
+        from cg_reserve_distribution_network a
+        left join cg_reserve_process b on a.projectReserveId = b.projectReserveId
+        left join cg_document_info_distribution cdid on a.projectReserveId = cdid.projectReserveId
+        left join cg_personnel_activiti_distribution cpa on a.projectReserveId = cpa.projectReserveId
+        left join cg_feedback_on_budget fe on a.projectReserveId = fe.projectReserveId
+        where a.projectReserveId = #{projectReserveId}
+    </select>
+    <select id="getUserInfo" resultType="java.lang.String">
+        SELECT a.name FROM `sys_user` a
+        left join sys_user_role b on a.id = b.user_id
+        LEFT JOIN sys_role c on b.role_id = c.id
+        WHERE c.`name` = '项目管理中心领导'
+    </select>
+</mapper>

+ 125 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/service/DistributionDesignChangeService.java

@@ -0,0 +1,125 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.service;
+
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionDesignChange;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.mapper.DistributionDesignChangeMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.util.*;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 10:05
+ */
+@Service
+@Transactional(readOnly = true)
+public class DistributionDesignChangeService extends CrudService<DistributionDesignChangeMapper, DistributionDesignChange> {
+
+    @Autowired
+    private DistributionDesignChangeMapper dao;
+
+    @Transactional(readOnly = false)
+    public void deleteAct(String projectReserveId) {
+        mapper.deleteAct(projectReserveId);
+    }
+
+    public DistributionDesignChange getByReserveId(String reserveId){
+        return dao.getByReserveId(reserveId);
+    }
+
+    public Page<DistributionDesignChange> findPage(Page<DistributionDesignChange> page, DistributionDesignChange reserveManagement) {
+        if (StringUtils.isBlank(reserveManagement.getProjectYear())){
+            reserveManagement.setProjectYear(LocalDate.now().getYear()+"");
+        }
+        Page<DistributionDesignChange> pageList = super.findPage(page, reserveManagement);
+        return pageList;
+    }
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    public List<String> getAllProId(){
+        return dao.getAllProId();
+    }
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    public List<String> getAllProId2(){
+        return dao.getAllProId2();
+    }
+
+    /**
+     * 查询已有的参数数据 并分类返回已存在数据和未存在数据
+     * @param reserveManagement
+     * @return
+     */
+    public Map<String, List<DistributionDesignChange>> getExistProjectList(List<DistributionDesignChange> reserveManagement){
+        Map<String,List<DistributionDesignChange>> map = new HashMap();
+        List<DistributionDesignChange> existReserveManagementList = new ArrayList<>();
+        Iterator<DistributionDesignChange> iterator = reserveManagement.iterator();
+        while (iterator.hasNext()) {
+            DistributionDesignChange rm = iterator.next();
+            //对数据进行处理
+            rm.preInsert();
+            DistributionDesignChange reserveManag = dao.queryByProjectReserveId(rm);
+            //数据库中已含有的数据在list中删除并创建一个list加入 区分为已存在数据
+            if (null != reserveManag) {
+                rm.setId(reserveManag.getId());
+                existReserveManagementList.add(rm);
+                iterator.remove();//使用迭代器删除已存在的数据
+            }
+        }
+        map.put("without",reserveManagement);
+        System.out.println("未存在数据:" + reserveManagement);
+        map.put("exist",existReserveManagementList);
+        System.out.println("已存在数据:" + existReserveManagementList);
+        return map;
+    }
+
+    /**
+     * 批量添加数据
+     * @param reserveManagementList
+     */
+    @Transactional(readOnly = false)
+    public void insertList(List<DistributionDesignChange> reserveManagementList){
+
+        dao.insertList(reserveManagementList);
+    }
+
+    /**
+     * 专职修改方法
+     * @param reserveManagement
+     */
+    @Transactional(readOnly = false)
+    public void update(DistributionDesignChange reserveManagement) {
+
+        super.save(reserveManagement);
+    }
+
+    public List<DistributionDesignChange> exportFindList(DistributionDesignChange reserveManagement) {
+        List<DistributionDesignChange> pageList = dao.exportFindList(reserveManagement);
+        return pageList;
+    }
+
+    public String getByProjectReserveId(String projectReserveId){
+        return dao.getByProjectReserveId(projectReserveId);
+    }
+
+    public List<History> getHistoryByExecuteId(String executeId){
+        return dao.getHistoryByExecuteId(executeId);
+    }
+
+    public String getByExecuteId(String executeId){
+        return dao.getByExecuteId(executeId);
+    }
+}

+ 38 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/service/DistributionNetworkProcessService.java

@@ -0,0 +1,38 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.service;
+
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetworkProcess;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.mapper.DistributionNetworkProcessMapper;
+import com.jeeplus.modules.sys.entity.User;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 16:04
+ */
+@Service
+@Transactional(readOnly = true)
+public class DistributionNetworkProcessService extends CrudService<DistributionNetworkProcessMapper, DistributionNetworkProcess> {
+
+    @Override
+    public DistributionNetworkProcess get(String id) {
+        DistributionNetworkProcess entity = new DistributionNetworkProcess();
+        entity.setId(id);
+        String projectId = mapper.findProjectId(entity);
+        DistributionNetworkProcess reserveProcess = mapper.get(projectId);
+        return reserveProcess;
+    }
+
+    @Transactional(readOnly = false)
+    public void insert(DistributionNetworkProcess entity) {
+        mapper.insert(entity);
+    }
+
+    public List<String> getUserInfo(){
+        return mapper.getUserInfo();
+    }
+}

+ 129 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/service/DistributionNetworkService.java

@@ -0,0 +1,129 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.service;
+
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetwork;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.mapper.DistributionNetworkMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.util.*;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 9:34
+ */
+@Service
+@Transactional(readOnly = true)
+public class DistributionNetworkService extends CrudService<DistributionNetworkMapper, DistributionNetwork> {
+
+    @Autowired
+    private DistributionNetworkMapper dao;
+
+    public String getByUserName(String name){
+        return dao.getByUserName(name);
+    }
+
+    @Transactional(readOnly = false)
+    public void deleteAct(String projectReserveId) {
+        mapper.deleteAct(projectReserveId);
+    }
+
+    public DistributionNetwork getByReserveId(String reserveId){
+        return dao.getByReserveId(reserveId);
+    }
+
+    public Page<DistributionNetwork> findPage(Page<DistributionNetwork> page, DistributionNetwork reserveManagement) {
+        if (StringUtils.isBlank(reserveManagement.getProjectYear())){
+            reserveManagement.setProjectYear(LocalDate.now().getYear()+"");
+        }
+        Page<DistributionNetwork> pageList = super.findPage(page, reserveManagement);
+        return pageList;
+    }
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    public List<String> getAllProId(){
+        return dao.getAllProId();
+    }
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    public List<String> getAllProId2(){
+        return dao.getAllProId2();
+    }
+
+    /**
+     * 查询已有的参数数据 并分类返回已存在数据和未存在数据
+     * @param reserveManagement
+     * @return
+     */
+    public Map<String, List<DistributionNetwork>> getExistProjectList(List<DistributionNetwork> reserveManagement){
+        Map<String,List<DistributionNetwork>> map = new HashMap();
+        List<DistributionNetwork> existReserveManagementList = new ArrayList<>();
+        Iterator<DistributionNetwork> iterator = reserveManagement.iterator();
+        while (iterator.hasNext()) {
+            DistributionNetwork rm = iterator.next();
+            //对数据进行处理
+            rm.preInsert();
+            DistributionNetwork reserveManag = dao.queryByProjectReserveId(rm);
+            //数据库中已含有的数据在list中删除并创建一个list加入 区分为已存在数据
+            if (null != reserveManag) {
+                rm.setId(reserveManag.getId());
+                existReserveManagementList.add(rm);
+                iterator.remove();//使用迭代器删除已存在的数据
+            }
+        }
+        map.put("without",reserveManagement);
+        System.out.println("未存在数据:" + reserveManagement);
+        map.put("exist",existReserveManagementList);
+        System.out.println("已存在数据:" + existReserveManagementList);
+        return map;
+    }
+
+    /**
+     * 批量添加数据
+     * @param reserveManagementList
+     */
+    @Transactional(readOnly = false)
+    public void insertList(List<DistributionNetwork> reserveManagementList){
+
+        dao.insertList(reserveManagementList);
+    }
+
+    /**
+     * 专职修改方法
+     * @param reserveManagement
+     */
+    @Transactional(readOnly = false)
+    public void update(DistributionNetwork reserveManagement) {
+
+        super.save(reserveManagement);
+    }
+
+    public List<DistributionNetwork> exportFindList(DistributionNetwork reserveManagement) {
+        List<DistributionNetwork> pageList = dao.exportFindList(reserveManagement);
+        return pageList;
+    }
+
+    public String getByProjectReserveId(String projectReserveId){
+        return dao.getByProjectReserveId(projectReserveId);
+    }
+
+    public List<History> getHistoryByExecuteId(String executeId){
+        return dao.getHistoryByExecuteId(executeId);
+    }
+
+    public String getByExecuteId(String executeId){
+        return dao.getByExecuteId(executeId);
+    }
+}

+ 336 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/util/DistributionExportUtil.java

@@ -0,0 +1,336 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.util;
+
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionDesignChange;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetwork;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLEncoder;
+import java.util.List;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 9:37
+ */
+public class DistributionExportUtil {
+
+    private XSSFCellStyle style = null;
+
+    public static DistributionExportUtil getOne(){
+
+        return new DistributionExportUtil();
+    }
+
+    /**
+     * 导出政配网项目问题表信息
+     * @param response
+     * @param workbook
+     * @param list
+     */
+    public void exportDistributionNetwork(HttpServletResponse response, XSSFWorkbook workbook, List<DistributionNetwork> list){
+        try {
+            int index = 1;//第一列序号
+            int rowNum = 2;//数据起始列
+            Sheet sheet = workbook.getSheetAt(0);
+            for(int i=0;i<list.size();i++){
+                Row row = sheet.createRow(rowNum+i);
+                Cell cell0 = crateCell(workbook,row,0); //序号
+                Cell cell1 = crateCell(workbook,row,1); //项目年份
+                Cell cell2 = crateCell(workbook,row,2); //项目性质
+                Cell cell3 = crateCell(workbook,row,3); //需求单位
+                Cell cell4 = crateCell(workbook,row,4); //区域
+                Cell cell5 = crateCell(workbook,row,5); //项目分组
+                Cell cell6 = crateCell(workbook,row,6); //储备批次
+                Cell cell7 = crateCell(workbook,row,7); //供电区域
+                Cell cell8 = crateCell(workbook,row,8); //网格编号
+                Cell cell9 = crateCell(workbook,row,9); //单元格编号
+                Cell cell10 = crateCell(workbook,row,10); //项目储备编号
+                Cell cell11 = crateCell(workbook,row,11); //项目名称
+                Cell cell12 = crateCell(workbook,row,12); //国网项目编码
+                Cell cell13 = crateCell(workbook,row,13); //国网项目名称
+                Cell cell14 = crateCell(workbook,row,14); //建设必要性及内容
+                Cell cell15 = crateCell(workbook,row,15); //变电站名称
+                Cell cell16 = crateCell(workbook,row,16); //线路名称
+                Cell cell17 = crateCell(workbook,row,17); //网架项目划分
+                Cell cell18 = crateCell(workbook,row,18); //需求类型
+                Cell cell19 = crateCell(workbook,row,19); //项目类型
+                Cell cell20 = crateCell(workbook,row,20); //费用估算
+                Cell cell21 = crateCell(workbook,row,21); //备注
+
+                Cell cell22 = crateCell(workbook,row,22); //问题发起人
+                Cell cell23 = crateCell(workbook,row,23); //问题所处阶段
+                Cell cell24 = crateCell(workbook,row,24); //问题类型
+                Cell cell25 = crateCell(workbook,row,25); //问题描述
+                Cell cell26 = crateCell(workbook,row,26); //问题解决人
+                Cell cell27 = crateCell(workbook,row,27); //问题是否解决
+                Cell cell28 = crateCell(workbook,row,28); //问题解决描述
+
+                Cell cell29 = crateCell(workbook,row,29); //是否需要设计变更
+                Cell cell30 = crateCell(workbook,row,30); //变更类型
+                Cell cell31 = crateCell(workbook,row,31); //设计变更类型
+                Cell cell32 = crateCell(workbook,row,32); //是否需要上报业主领导
+
+                Cell cell33 = crateCell(workbook,row,33); //问题解决人
+                Cell cell34 = crateCell(workbook,row,34); //问题是否解决
+                Cell cell35 = crateCell(workbook,row,35); //问题解决描述
+                Cell cell36 = crateCell(workbook,row,36); //是否需要设计变更
+                Cell cell37 = crateCell(workbook,row,37); //变更类型
+                Cell cell38 = crateCell(workbook,row,38); //设计变更类型
+
+                DistributionNetwork reserveManagement = list.get(i);
+
+                cell0.setCellValue(String.valueOf(index++));
+                cell1.setCellValue(reserveManagement.getProjectYear());
+                cell2.setCellValue(reserveManagement.getProjectNature());
+                cell3.setCellValue(reserveManagement.getDemandUnit());
+                cell4.setCellValue(reserveManagement.getDistrict());
+                cell5.setCellValue(reserveManagement.getProjectGroup());
+                cell6.setCellValue(reserveManagement.getReserveBatches());
+                cell7.setCellValue(reserveManagement.getBlockSupply());
+                cell8.setCellValue(reserveManagement.getGridNumber());
+                cell9.setCellValue(reserveManagement.getCellNumber());
+                cell10.setCellValue(reserveManagement.getProjectReserveId());
+                cell11.setCellValue(reserveManagement.getProjectName());
+                cell12.setCellValue(reserveManagement.getStateGridProjectCode());
+                cell13.setCellValue(reserveManagement.getStateGridProjectName());
+                cell14.setCellValue(reserveManagement.getConstructionNecessityAndContent());
+                cell15.setCellValue(reserveManagement.getSubstationName());
+                cell16.setCellValue(reserveManagement.getCircuitName());
+                cell17.setCellValue(reserveManagement.getNetRackProjectDivide());
+                cell18.setCellValue(reserveManagement.getRequirementType());
+                cell19.setCellValue(reserveManagement.getProjectType());
+
+                String costEstimateStr= reserveManagement.getCostEstimate().toString();
+                if(StringUtils.isNotBlank(costEstimateStr)){
+                    cell20.setCellValue(Double.parseDouble(costEstimateStr));
+                }
+
+                cell21.setCellValue(reserveManagement.getRemarks());
+
+                cell22.setCellValue(reserveManagement.getPromoter());
+                cell23.setCellValue(reserveManagement.getProblemStage());
+                cell24.setCellValue(reserveManagement.getProblemType());
+                cell25.setCellValue(reserveManagement.getProblemDescript());
+                cell26.setCellValue(reserveManagement.getProblemSolver());
+                cell27.setCellValue(reserveManagement.getProblemResolved());
+                cell28.setCellValue(reserveManagement.getProblemResolvedDescript());
+                cell29.setCellValue(reserveManagement.getDesignChange());
+                cell30.setCellValue(reserveManagement.getChangeType());
+                cell31.setCellValue(reserveManagement.getDesignChangeType());
+                cell32.setCellValue(reserveManagement.getReportToLeader());
+                cell33.setCellValue(reserveManagement.getProblemSolverLeader());
+                cell34.setCellValue(reserveManagement.getProblemResolvedLeader());
+                cell35.setCellValue(reserveManagement.getProblemResolvedDescriptLeader());
+                cell36.setCellValue(reserveManagement.getDesignChangeLeader());
+                cell37.setCellValue(reserveManagement.getChangeTypeLeader());
+                cell38.setCellValue(reserveManagement.getDesignChangeTypeLeader());
+
+            }
+
+            String str = URLEncoder.encode("配网项目问题表信息.xlsx", "UTF8");
+            response.setHeader("Content-Disposition", "attachment;filename="+str);
+            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+            OutputStream outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+            outputStream.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 导出配网项目设计变更记录表信息
+     * @param response
+     * @param workbook
+     * @param list
+     */
+    public void exportDistributionDesignChange(HttpServletResponse response, XSSFWorkbook workbook, List<DistributionDesignChange> list){
+        try {
+            int index = 1;//第一列序号
+            int rowNum = 2;//数据起始列
+            Sheet sheet = workbook.getSheetAt(0);
+            for(int i=0;i<list.size();i++){
+                Row row = sheet.createRow(rowNum+i);
+                Cell cell0 = crateCell(workbook,row,0); //序号
+                Cell cell1 = crateCell(workbook,row,1); //项目年份
+                Cell cell2 = crateCell(workbook,row,2); //项目性质
+                Cell cell3 = crateCell(workbook,row,3); //需求单位
+                Cell cell4 = crateCell(workbook,row,4); //区域
+                Cell cell5 = crateCell(workbook,row,5); //项目分组
+                Cell cell6 = crateCell(workbook,row,6); //储备批次
+                Cell cell7 = crateCell(workbook,row,7); //供电区域
+                Cell cell8 = crateCell(workbook,row,8); //网格编号
+                Cell cell9 = crateCell(workbook,row,9); //单元格编号
+                Cell cell10 = crateCell(workbook,row,10); //项目储备编号
+                Cell cell11 = crateCell(workbook,row,11); //项目名称
+                Cell cell12 = crateCell(workbook,row,12); //国网项目编码
+                Cell cell13 = crateCell(workbook,row,13); //国网项目名称
+                Cell cell14 = crateCell(workbook,row,14); //建设必要性及内容
+                Cell cell15 = crateCell(workbook,row,15); //变电站名称
+                Cell cell16 = crateCell(workbook,row,16); //线路名称
+                Cell cell17 = crateCell(workbook,row,17); //网架项目划分
+                Cell cell18 = crateCell(workbook,row,18); //需求类型
+                Cell cell19 = crateCell(workbook,row,19); //项目类型
+                Cell cell20 = crateCell(workbook,row,20); //费用估算
+                Cell cell21 = crateCell(workbook,row,21); //备注
+
+                Cell cell22 = crateCell(workbook,row,22); //项目下达批次
+                Cell cell23 = crateCell(workbook,row,23); //业主项目经理
+                Cell cell24 = crateCell(workbook,row,24); //现场施工管理单位
+                Cell cell25 = crateCell(workbook,row,25); //施工项目经理(电气)
+                Cell cell26 = crateCell(workbook,row,26); //施工项目经理(土建)
+                Cell cell27 = crateCell(workbook,row,27); //备注
+
+                Cell cell28 = crateCell(workbook,row,28); //是否立项
+                Cell cell29 = crateCell(workbook,row,29); //竣工情况
+                Cell cell30 = crateCell(workbook,row,30); //竣工日期
+                Cell cell31 = crateCell(workbook,row,31); //结算状态
+                Cell cell32 = crateCell(workbook,row,32); //关闭状态
+                Cell cell33 = crateCell(workbook,row,33); //设计变更状态
+                Cell cell34 = crateCell(workbook,row,34); //拆旧物资退库状态
+
+                Cell cell35 = crateCell(workbook,row,35); //设计变更状态
+                Cell cell36 = crateCell(workbook,row,36); //设计变更类型
+                Cell cell37 = crateCell(workbook,row,37); //提出人
+                Cell cell38 = crateCell(workbook,row,38); //提出原因
+                Cell cell39 = crateCell(workbook,row,39); //设计变更内容
+                Cell cell40 = crateCell(workbook,row,40); //变更类型
+                Cell cell41 = crateCell(workbook,row,41); //设计变更提出时间
+                Cell cell42 = crateCell(workbook,row,42); //是否完成设计变更
+                Cell cell43 = crateCell(workbook,row,43); //项目经理是否审核通过
+                Cell cell44 = crateCell(workbook,row,44); //电子图变更完成时间
+                Cell cell45 = crateCell(workbook,row,45); //是否完成概预算调整
+                Cell cell46 = crateCell(workbook,row,46); //设计是否审核通过
+                Cell cell47 = crateCell(workbook,row,47); //概预算变更完成时间
+                Cell cell48 = crateCell(workbook,row,48); //变更前预算
+                Cell cell49 = crateCell(workbook,row,49); //变更后预算
+                Cell cell50 = crateCell(workbook,row,50); //变更后施工费
+                Cell cell51 = crateCell(workbook,row,51); //变更纸质图纸是否移交
+                Cell cell52 = crateCell(workbook,row,52); //变更纸质图纸移交时间
+                Cell cell53 = crateCell(workbook,row,53); //设计变更时长
+                Cell cell54 = crateCell(workbook,row,54); //设计变更签字资料是否完整
+                Cell cell55 = crateCell(workbook,row,55); //扫描件
+                Cell cell56 = crateCell(workbook,row,56); //备注
+
+                DistributionDesignChange reserveManagement = list.get(i);
+
+                cell0.setCellValue(String.valueOf(index++));
+                cell1.setCellValue(reserveManagement.getProjectYear());
+                cell2.setCellValue(reserveManagement.getProjectNature());
+                cell3.setCellValue(reserveManagement.getDemandUnit());
+                cell4.setCellValue(reserveManagement.getDistrict());
+                cell5.setCellValue(reserveManagement.getProjectGroup());
+                cell6.setCellValue(reserveManagement.getReserveBatches());
+                cell7.setCellValue(reserveManagement.getBlockSupply());
+                cell8.setCellValue(reserveManagement.getGridNumber());
+                cell9.setCellValue(reserveManagement.getCellNumber());
+                cell10.setCellValue(reserveManagement.getProjectReserveId());
+                cell11.setCellValue(reserveManagement.getProjectName());
+                cell12.setCellValue(reserveManagement.getStateGridProjectCode());
+                cell13.setCellValue(reserveManagement.getStateGridProjectName());
+                cell14.setCellValue(reserveManagement.getConstructionNecessityAndContent());
+                cell15.setCellValue(reserveManagement.getSubstationName());
+                cell16.setCellValue(reserveManagement.getCircuitName());
+                cell17.setCellValue(reserveManagement.getNetRackProjectDivide());
+                cell18.setCellValue(reserveManagement.getRequirementType());
+                cell19.setCellValue(reserveManagement.getProjectType());
+
+                String costEstimateStr= reserveManagement.getCostEstimate().toString();
+                if(StringUtils.isNotBlank(costEstimateStr)){
+                    cell20.setCellValue(Double.parseDouble(costEstimateStr));
+                }
+
+                cell21.setCellValue(reserveManagement.getBasicRemarks());
+                cell22.setCellValue(reserveManagement.getProjectReleaseBatch());
+                cell23.setCellValue(reserveManagement.getOwnerManager());
+                cell24.setCellValue(reserveManagement.getConstructionManagementUnit());
+                cell25.setCellValue(reserveManagement.getDqProjectManager());
+                cell26.setCellValue(reserveManagement.getTjProjectManager());
+                cell27.setCellValue(reserveManagement.getCjRemarks());
+                cell28.setCellValue(reserveManagement.getProjectApproval());
+                cell29.setCellValue(reserveManagement.getCompletionStatus());
+                cell30.setCellValue(reserveManagement.getCompletionDate());
+                cell31.setCellValue(reserveManagement.getSettlementStatus());
+                cell32.setCellValue(reserveManagement.getCloseStatus());
+                cell33.setCellValue(reserveManagement.getProjectDesignChangeStatus());
+                cell34.setCellValue(reserveManagement.getStockReturnStatus());
+                cell35.setCellValue(reserveManagement.getDesignChangeStatus());
+                cell36.setCellValue(reserveManagement.getDesignChangeType());
+                cell37.setCellValue(reserveManagement.getProposer());
+                cell38.setCellValue(reserveManagement.getProposeReasons());
+                cell39.setCellValue(reserveManagement.getDesignChangeContent());
+                cell40.setCellValue(reserveManagement.getChangeType());
+                cell41.setCellValue(reserveManagement.getDesignChangeProposeTime());
+                cell42.setCellValue(reserveManagement.getCompleteDesignChangeType());
+                cell43.setCellValue(reserveManagement.getProjectManagerApproved());
+                cell44.setCellValue(reserveManagement.getElectronDiagramCompleteTime());
+                cell45.setCellValue(reserveManagement.getCompleteBudgetAdjust());
+                cell46.setCellValue(reserveManagement.getJjApproved());
+                cell47.setCellValue(reserveManagement.getBudgetCompleteTime());
+                cell48.setCellValue(reserveManagement.getBeforeChangeBudget());
+                cell49.setCellValue(reserveManagement.getAfterChangeBudget());
+                cell50.setCellValue(reserveManagement.getAfterChangeConstructionCost());
+                cell51.setCellValue(reserveManagement.getDrawingTransfer());
+                cell52.setCellValue(reserveManagement.getDrawingTransferTime());
+                cell53.setCellValue(reserveManagement.getDesignChangeTime());
+                cell54.setCellValue(reserveManagement.getDataIntegrity());
+                cell55.setCellValue(reserveManagement.getScanningCopy());
+                cell56.setCellValue(reserveManagement.getRemarks());
+
+            }
+
+            String str = URLEncoder.encode("配网项目设计变更记录表信息.xlsx", "UTF8");
+            response.setHeader("Content-Disposition", "attachment;filename="+str);
+            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+            OutputStream outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+            outputStream.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+    /**
+     * 传入excel模板名称 获取workbook对象
+     * @param fileName excel模板名称
+     * @return
+     */
+    public XSSFWorkbook getWorkbook(String fileName){
+        InputStream inputStream = null;
+        XSSFWorkbook workbook = null;
+        try {
+            File file = new File(this.getClass().getResource("/").getPath() + "/freemarker/excelmodel/"+fileName+".xlsx");
+            inputStream = new FileInputStream(file);// 将excel文件转为输入流
+            workbook = new XSSFWorkbook(inputStream);// 创建个workbook,
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return workbook;
+    }
+
+    /**
+     * 创建Cell对象 同时设置style
+     * @param workbook
+     * @param row
+     * @param num
+     * @return
+     */
+    Cell crateCell(XSSFWorkbook workbook, Row row, int num){
+        Cell cell = row.createCell(num);
+        if(style == null){
+            style =workbook.createCellStyle();
+            style.setWrapText(true);
+            style.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
+        }
+        cell.setCellStyle(style);
+        return cell;
+    }
+}

+ 137 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/util/DistributionImportUtil.java

@@ -0,0 +1,137 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.util;
+
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionDesignChange;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetwork;
+import com.jeeplus.modules.sg.managementcenter.materialproject.util.ImportUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Row;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 9:37
+ */
+public class DistributionImportUtil {
+
+    /**
+     * 获取配网项目问题表数据
+     * @param importUtil
+     * @return List<ReserveManagementMapper> 导入表格数据
+     */
+    public static List<DistributionNetwork> getDistributionNetworkUtil(ImportUtil importUtil, List<String> proIdList, List<String> proIdList2) throws Exception {
+        int lastRow = importUtil.getLastDataRowNum();
+        List<DistributionNetwork> list = new ArrayList<DistributionNetwork>();
+
+        //项目储备编号唯一性判断
+        List<String> cbbhList = new ArrayList<>();
+
+        //建设必要性及内容
+        List<String> jsList = new ArrayList<>();
+        DistributionNetwork reserveManagement = null;
+        for(int i=2; i<=lastRow;i++){
+            reserveManagement = new DistributionNetwork();
+            Row row = importUtil.getRow(i);
+            //获取项目储备编号
+            String projectReserveId = (String) importUtil.getCellValue(row, 10);
+            if(StringUtils.isNotBlank(projectReserveId)){
+
+                reserveManagement.setProjectReserveId((String) importUtil.getCellValue(row,10));
+
+                //和基本信息表比对,是否有对应的数据
+                getBmList2(proIdList2,reserveManagement.getProjectReserveId());
+
+                reserveManagement.setPromoter((String) importUtil.getCellValue(row,22));
+                reserveManagement.setProblemStage((String) importUtil.getCellValue(row,23));
+                reserveManagement.setProblemType((String) importUtil.getCellValue(row,24));
+                reserveManagement.setProblemDescript((String) importUtil.getCellValue(row,25));
+                reserveManagement.setProblemSolver((String) importUtil.getCellValue(row,26));
+                reserveManagement.setProblemResolved((String) importUtil.getCellValue(row,27));
+                reserveManagement.setProblemResolvedDescript((String) importUtil.getCellValue(row,28));
+                reserveManagement.setDesignChange((String) importUtil.getCellValue(row,29));
+                reserveManagement.setChangeType((String) importUtil.getCellValue(row,30));
+                reserveManagement.setDesignChangeType((String) importUtil.getCellValue(row,31));
+                reserveManagement.setReportToLeader((String) importUtil.getCellValue(row,32));
+                reserveManagement.setProblemSolverLeader((String) importUtil.getCellValue(row,33));
+                reserveManagement.setProblemResolvedLeader((String) importUtil.getCellValue(row,34));
+                reserveManagement.setProblemResolvedDescriptLeader((String) importUtil.getCellValue(row,35));
+                reserveManagement.setDesignChangeLeader((String) importUtil.getCellValue(row,36));
+                reserveManagement.setChangeTypeLeader((String) importUtil.getCellValue(row,37));
+                reserveManagement.setDesignChangeTypeLeader((String) importUtil.getCellValue(row,38));
+                reserveManagement.setProcessStatus("0");
+
+
+                if (list.size() == 0){
+                    list.add(reserveManagement);
+                    cbbhList.add(reserveManagement.getProjectReserveId());
+                }else {
+                    if (!cbbhList.contains(reserveManagement.getProjectReserveId())){
+                        list.add(reserveManagement);
+                        cbbhList.add(reserveManagement.getProjectReserveId());
+                        jsList.add(reserveManagement.getConstructionNecessityAndContent());
+                    }
+                }
+
+            }
+        }
+        return list;
+    }
+
+    /**
+     * 获取配网项目设计变更记录表数据
+     * @param importUtil
+     * @return List<ReserveManagementMapper> 导入表格数据
+     */
+    public static List<DistributionDesignChange> getDistributionDesignChangeUtil(ImportUtil importUtil, List<String> proIdList, List<String> proIdList2) throws Exception {
+        int lastRow = importUtil.getLastDataRowNum();
+        List<DistributionDesignChange> list = new ArrayList<DistributionDesignChange>();
+
+        //项目储备编号唯一性判断
+        List<String> cbbhList = new ArrayList<>();
+
+        //建设必要性及内容
+        List<String> jsList = new ArrayList<>();
+        DistributionDesignChange reserveManagement = null;
+        for(int i=2; i<=lastRow;i++){
+            reserveManagement = new DistributionDesignChange();
+            Row row = importUtil.getRow(i);
+            //获取项目储备编号
+            String projectReserveId = (String) importUtil.getCellValue(row, 10);
+            if(StringUtils.isNotBlank(projectReserveId)){
+
+                reserveManagement.setProjectReserveId((String) importUtil.getCellValue(row,10));
+
+                //和基本信息表比对,是否有对应的数据
+                getBmList2(proIdList2,reserveManagement.getProjectReserveId());
+
+                reserveManagement.setDesignChangeContent((String) importUtil.getCellValue(row,39));
+                reserveManagement.setDrawingTransfer((String) importUtil.getCellValue(row,51));
+                reserveManagement.setDrawingTransferTime((String) importUtil.getCellValue(row,52));
+                reserveManagement.setDataIntegrity((String) importUtil.getCellValue(row,54));
+                reserveManagement.setRemarks((String) importUtil.getCellValue(row,56));
+
+
+                if (list.size() == 0){
+                    list.add(reserveManagement);
+                    cbbhList.add(reserveManagement.getProjectReserveId());
+                }else {
+                    if (!cbbhList.contains(reserveManagement.getProjectReserveId())){
+                        list.add(reserveManagement);
+                        cbbhList.add(reserveManagement.getProjectReserveId());
+                        jsList.add(reserveManagement.getConstructionNecessityAndContent());
+                    }
+                }
+
+            }
+        }
+        return list;
+    }
+
+    public static void getBmList2(List<String> sjkList, String proId) throws Exception {
+        if (!sjkList.contains(proId)){
+            throw new Exception( "项目储备编号为" + proId + "等项目在基础信息表中不存在相关数据!");
+        }
+    }
+}

+ 519 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/web/DistributionController.java

@@ -0,0 +1,519 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.web;
+
+import com.google.common.collect.Maps;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.PropertiesLoader;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.web.Servlets;
+import com.jeeplus.modules.act.entity.Act;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetwork;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetworkProcess;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.service.DistributionNetworkProcessService;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.service.DistributionNetworkService;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.entity.Demolite;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.entity.DocumentInfo;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.entity.ReserveProcessProject;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.entity.ReserveSummaryProcess;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.service.DemoliteService;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.service.DocumentInfoService;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.service.ReserveProcessProjectService;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.service.ReserveSummaryProcessService;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.utils.DataList;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.utils.ReserveProcessProjectProUtil;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.service.CableService;
+import com.jeeplus.modules.sg.managementcenter.materialinfo.entity.MaterialInfo;
+import com.jeeplus.modules.sg.managementcenter.materialproject.util.ImportUtil;
+import com.jeeplus.modules.sg.picking.activiti.entity.ShowList;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.activiti.engine.TaskService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
+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 java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 15:53
+ */
+
+@Controller
+@RequestMapping(value = "${adminPath}/cg/distribution/distribution")
+public class DistributionController {
+
+    @Autowired
+    private DistributionNetworkProcessService processService;
+
+    @Autowired
+    private DistributionNetworkService networkService;
+
+    @Autowired
+    private ReserveProcessProjectService projectService;
+
+    @Autowired
+    private TaskService taskService;
+
+    @Autowired
+    private DocumentInfoService infoService;
+
+    @Autowired
+    private DemoliteService demoliteService;
+
+    @Autowired
+    private ReserveSummaryProcessService reserveProcessService;
+
+    @Autowired
+    private CableService cableService;
+
+    /**
+     * 判断服务器系统类型,1是windows系统,2是linux系统
+     */
+    public static final String SYS_TYPE = System.getProperty("os.name").toLowerCase().startsWith("win") ? "1" : "2";
+
+
+    /**
+     * 属性文件加载对象
+     */
+    private static PropertiesLoader loader = new PropertiesLoader("/properties/jeeplus.properties");
+
+    @ModelAttribute
+    public DistributionNetworkProcess get(@RequestParam(required = false) String id) {
+        DistributionNetworkProcess entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = processService.get(id);
+        }
+        if (entity == null) {
+            entity = new DistributionNetworkProcess();
+        }
+        //查询项目中心领导信息
+        List<String> users = processService.getUserInfo();
+        entity.setUserList(users);
+        return entity;
+    }
+
+    /**
+     * 业主项目经理审核
+     */
+    @RequestMapping(value = "designUnit")
+    public String designUnit(DistributionNetworkProcess reserveProcess, Model model) {
+        //获取当前用户
+        String loginName = UserUtils.getUser().getName();
+        if (StringUtils.isBlank(reserveProcess.getProblemSolverLeader())){
+            reserveProcess.setProblemSolver(loginName);
+        }
+        //查询项目中心领导信息
+        List<String> users = processService.getUserInfo();
+        reserveProcess.setUserList(users);
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/cg/reservemanagementcenter/distribution/process/designUnit";
+    }
+
+    /**
+     * 业主项目经理再次审核
+     */
+    @RequestMapping(value = "designUnitAgain")
+    public String designUnitAgain(DistributionNetworkProcess reserveProcess, Model model) {
+        //获取当前用户
+        String loginName = UserUtils.getUser().getName();
+        if (StringUtils.isBlank(reserveProcess.getProblemSolverLeader())){
+            reserveProcess.setProblemSolver(loginName);
+        }
+        //查询项目中心领导信息
+        List<String> users = processService.getUserInfo();
+        reserveProcess.setUserList(users);
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/cg/reservemanagementcenter/distribution/process/designUnitAgain";
+    }
+
+    /**
+     * 业主领导审核
+     */
+    @RequestMapping(value = "leaderProcess")
+    public String leaderProcess(DistributionNetworkProcess reserveProcess, Model model) {
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/cg/reservemanagementcenter/distribution/process/leaderProcess";
+    }
+
+    /**
+     * 技经人员审核
+     */
+    @RequestMapping(value = "skillUnit")
+    public String skillUnit(DistributionNetworkProcess reserveProcess, Model model) {
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/cg/reservemanagementcenter/distribution/process/skillUnit";
+    }
+
+    /**
+     * 设计人员上传文件
+     */
+    @RequestMapping(value = "designUnitFile")
+    public String designUnitFile(DistributionNetworkProcess reserveProcess, Model model) {
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/cg/reservemanagementcenter/distribution/process/designUnitFile";
+    }
+
+    /***
+     * 业主项目经理 - 问题已解决
+     * */
+    @ResponseBody
+    @RequestMapping(value = "actDesignUnitNew")
+    public AjaxJson actDesignUnitNew(Act act, DistributionNetworkProcess reserveProcess) throws Exception {
+        AjaxJson j = new AjaxJson();
+
+        String flag = act.getFlag();
+        //提交流程任务
+        Map<String, Object> vars = Maps.newHashMap();
+        String comment = URLDecoder.decode(act.getComment(), "UTF-8");
+        act.setComment(comment);
+        DistributionNetwork network = networkService.getByReserveId(reserveProcess.getProjectReserveId());
+        if ("agree".equals(flag)){
+            network.setProblemSolver(reserveProcess.getProblemSolver());
+            network.setProblemResolved(reserveProcess.getProblemResolved());
+            network.setProblemResolvedDescript(reserveProcess.getProblemResolvedDescript());
+            network.setProcessStatus("2");
+            vars.put("agree",true);
+            vars.put("disAgree",false);
+            vars.put("pass",false);
+            vars.put("tg",false);
+        } else if ("disAgree".equals(flag)){
+            //驳回
+            network.setProcessStatus("3");
+            vars.put("disAgree",true);
+            vars.put("agree",false);
+            vars.put("pass",false);
+            vars.put("tg",false);
+        } else if ("pass".equals(flag)){
+            //领导审批
+            String  userName = networkService.getByUserName(reserveProcess.getProblemSolverLeader());
+            network.setProblemSolver("");
+            network.setProblemResolved(reserveProcess.getProblemResolved());
+            network.setProblemResolvedDescript(reserveProcess.getProblemResolvedDescript());
+            network.setDesignChange(reserveProcess.getDesignChange());
+            network.setReportToLeader(reserveProcess.getReportToLeader());
+            network.setProblemSolverLeader(reserveProcess.getProblemSolverLeader());
+            vars.put("manager", userName);
+            vars.put("pass",true);
+            vars.put("disAgree",false);
+            vars.put("agree",false);
+            vars.put("tg",false);
+        } else if ("tg".equals(flag)){
+            //设计单位上传文件
+            ReserveProcessProject processProject = projectService.queryByProjectId(reserveProcess.getProjectReserveId());
+            network.setProblemSolver("");
+            network.setProblemSolverLeader("");
+            network.setDesignChange(reserveProcess.getDesignChange());
+            network.setChangeType(reserveProcess.getChangeType());
+            network.setDesignChangeType(reserveProcess.getDesignChangeType());
+            vars.put("manager", UserUtils.getByUserName(processProject.getDesigner()).getLoginName());
+            vars.put("pass",false);
+            vars.put("disAgree",false);
+            vars.put("agree",false);
+            vars.put("tg",true);
+        }
+        act.preUpdate();
+        // 提交流程任务
+        complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+
+        networkService.update(network);
+        j.setMsg("流程结束");
+        return j;
+    }
+
+    /***
+     * 业主项目经理再次审核
+     * */
+    @ResponseBody
+    @RequestMapping(value = "actDesignUnitAgain")
+    public AjaxJson actDesignUnitAgain(Act act, DistributionNetworkProcess reserveProcess) throws Exception {
+        AjaxJson j = new AjaxJson();
+
+        String flag = act.getFlag();
+        //提交流程任务
+        Map<String, Object> vars = Maps.newHashMap();
+        String comment = URLDecoder.decode(act.getComment(), "UTF-8");
+        act.setComment(comment);
+        DistributionNetwork network = networkService.getByReserveId(reserveProcess.getProjectReserveId());
+        ReserveProcessProject processProject = projectService.queryByProjectId(reserveProcess.getProjectReserveId());
+        if ("agree".equals(flag)){
+            vars.put("agree",true);
+            vars.put("disAgree",false);
+            vars.put("manager", UserUtils.getByUserName(processProject.getTechnicalStaff()).getLoginName());
+        } else if ("disAgree".equals(flag)){
+            vars.put("manager", UserUtils.getByUserName(processProject.getOwnerReserveProjectManagre()).getLoginName());
+            //驳回
+            vars.put("disAgree",true);
+            vars.put("agree",false);
+        }
+
+        // 提交流程任务
+        complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+
+        networkService.update(network);
+        j.setMsg("流程结束");
+        return j;
+    }
+
+    /***
+     * 技经人员审核
+     * */
+    @ResponseBody
+    @RequestMapping(value = "technicalStaff")
+    public AjaxJson technicalStaff(Act act, DistributionNetworkProcess reserveProcess) throws Exception {
+        AjaxJson j = new AjaxJson();
+
+        String flag = act.getFlag();
+        //提交流程任务
+        Map<String, Object> vars = Maps.newHashMap();
+        String comment = URLDecoder.decode(act.getComment(), "UTF-8");
+        act.setComment(comment);
+        DistributionNetwork network = networkService.getByReserveId(reserveProcess.getProjectReserveId());
+        ReserveProcessProject processProject = projectService.queryByProjectId(reserveProcess.getProjectReserveId());
+        if ("agree".equals(flag)){
+            network.setProcessStatus("2");
+            vars.put("agree",true);
+            vars.put("disAgree",false);
+        } else if ("disAgree".equals(flag)){
+            vars.put("manager", UserUtils.getByUserName(processProject.getOwnerReserveProjectManagre()).getLoginName());
+            //驳回
+            vars.put("disAgree",true);
+            vars.put("agree",false);
+        }
+
+        // 提交流程任务
+        complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+
+        networkService.update(network);
+        j.setMsg("流程结束");
+        return j;
+    }
+
+    /***
+     * 业主单位领导 - 问题已解决
+     * */
+    @ResponseBody
+    @RequestMapping(value = "actDesignUnitLeader")
+    public AjaxJson actDesignUnitLeader(Act act, DistributionNetworkProcess reserveProcess) throws Exception {
+        AjaxJson j = new AjaxJson();
+        String comment = URLDecoder.decode(act.getComment(), "UTF-8");
+        act.setComment(comment);
+        String flag = act.getFlag();
+        //提交流程任务
+        Map<String, Object> vars = Maps.newHashMap();
+        DistributionNetwork network = networkService.getByReserveId(reserveProcess.getProjectReserveId());
+        if ("agree".equals(flag)){
+            network.setProblemResolvedLeader(reserveProcess.getProblemResolvedLeader());
+            network.setProblemResolvedDescriptLeader(reserveProcess.getProblemResolvedDescriptLeader());
+            network.setProcessStatus("2");
+            vars.put("agree",true);
+            vars.put("disAgree",false);
+            vars.put("tg",false);
+        } else if ("disAgree".equals(flag)){
+            ReserveProcessProject processProject = projectService.queryByProjectId(reserveProcess.getProjectReserveId());
+            //驳回
+            network.setProblemSolverLeader("");
+            vars.put("disAgree",true);
+            vars.put("agree",false);
+            vars.put("tg",false);
+            vars.put("manager", UserUtils.getByUserName(processProject.getOwnerReserveProjectManagre()).getLoginName());
+            network.setProblemResolvedLeader(reserveProcess.getProblemResolvedLeader());
+        } else if ("tg".equals(flag)){
+            network.setProblemResolvedLeader(reserveProcess.getProblemResolvedLeader());
+            //设计单位上传文件
+            ReserveProcessProject processProject = projectService.queryByProjectId(reserveProcess.getProjectReserveId());
+            network.setProblemSolver(reserveProcess.getProblemSolver());
+            network.setProblemSolverLeader(reserveProcess.getProblemSolverLeader());
+            network.setDesignChangeLeader(reserveProcess.getDesignChangeLeader());
+            network.setChangeTypeLeader(reserveProcess.getChangeTypeLeader());
+            network.setDesignChangeTypeLeader(reserveProcess.getDesignChangeTypeLeader());
+            vars.put("manager", UserUtils.getByUserName(processProject.getDesigner()).getLoginName());
+            vars.put("disAgree",false);
+            vars.put("agree",false);
+            vars.put("tg",true);
+        }
+
+        // 提交流程任务
+        complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+
+        networkService.update(network);
+        j.setMsg("流程结束");
+        return j;
+    }
+
+    /**
+     * 提交任务, 并保存意见
+     *
+     * @param taskId    任务ID
+     * @param procInsId 流程实例ID,如果为空,则不保存任务提交意见
+     * @param comment   任务提交意见的内容
+     * @param vars      任务变量
+     */
+    @Transactional(readOnly = false)
+    public void complete(String taskId, String procInsId, String comment, Map<String, Object> vars) {
+        complete(taskId, procInsId, comment, "", vars);
+    }
+
+    @Transactional(readOnly = false)
+    public void complete(String taskId, String procInsId, String comment, String title, Map<String, Object> vars) {
+        // 添加意见
+        if (StringUtils.isNotBlank(procInsId) && StringUtils.isNotBlank(comment)) {
+            taskService.addComment(taskId, procInsId, comment);
+        }
+
+        // 设置流程变量
+        if (vars == null) {
+            vars = Maps.newHashMap();
+        }
+
+        // 设置流程标题
+        if (StringUtils.isNotBlank(title)) {
+            vars.put("title", title);
+        }
+
+        // 提交任务
+        taskService.complete(taskId, vars);
+    }
+
+    /***
+     * 设计单位审核
+     * */
+    @ResponseBody
+    @RequestMapping(value = "actDesignUnitFile")
+    public AjaxJson actDesignUnitFile(Act act, ReserveSummaryProcess reserveProcess,String material,String drjgc,String uid) throws Exception {
+        AjaxJson j = new AjaxJson();
+
+        if (material != null || drjgc != null){
+            //将上传的文件进行持久化操作
+            //保存文件地址
+            DocumentInfo infoByProId = new DocumentInfo(reserveProcess.getProjectReserveId(),reserveProcess.getBudgetStatement(),reserveProcess.getProjectProposal(),
+                    reserveProcess.getDrawings(),
+                    reserveProcess.getDrawingSpecification(),reserveProcess.getDemolition(),
+                    reserveProcess.getApprovalForm());
+            infoService.distributionFileSave(infoByProId);
+
+            //在将拆旧清册数据存入数据库前先查出库中有没有这个project ReserveId的相关数据
+            String projectReserveId = reserveProcess.getProjectReserveId();
+            demoliteService.deleteDistributionByProjectReserveId(projectReserveId);
+            //获取拆旧清册数据
+            //String index out of range: -1 这个异常一般是截取字符串时报的错误。
+            File file = new File(reserveProcess.getDemolition());
+            String path = file.getAbsolutePath();
+//            int index = file.getAbsolutePath().indexOf("\\fileServer");
+            int index = file.getAbsolutePath().indexOf("fileServer");
+//            path = path.substring(index);
+
+            String FILE_PREFIX = loader.getProperty("linux.file.store.prefix");
+
+            if (SYS_TYPE.equals("1")) {
+                path = path.substring(index-1);
+
+            } else {
+                //liunx file store prefix
+                path = FILE_PREFIX + Servlets.getRequest().getContextPath() + path.substring(index-1);
+                path = path.replaceAll("\\\\","/");
+            }
+
+            File demoFile = new File(path);
+
+            InputStream inputStream = new FileInputStream(demoFile);
+            MultipartFile multipartFile = new MockMultipartFile("file", demoFile.getName(), null, inputStream);
+            ImportUtil importUtil = new ImportUtil(multipartFile, 0, 0);
+            //获取导入表格所有数据
+            List<Demolite> reserveManagementList = ReserveProcessProjectProUtil.getDemoliteUtil(importUtil, projectReserveId);
+            //将数据存入数据库
+            demoliteService.insertDistributionList(reserveManagementList);
+
+            String flag = act.getFlag();
+            try {
+                String comment = URLDecoder.decode(act.getComment(), "UTF-8");
+                act.setComment(comment);
+                if ("yes".equals(flag)) {
+
+                    //从redis中查看是否有在线开甲供材数据
+                    List<?> list = DataList.getList(reserveProcess.getProjectReserveId());
+                    List<MaterialInfo> infoList = new ArrayList<>();
+                    ShowList showList = null;
+                    MaterialInfo info = null;
+                    if ("".equals(drjgc) & "".equals(material)) {
+                        j.setMsg("该项目没有甲供材清册");
+                        j.setSuccess(false);
+                        return j;
+                    }else if ("".equals(drjgc) & !"".equals(material)){
+                        //将redis中的数据存入数据库   cg_material_data
+                        for (int i=0;i<list.size();i++){
+                            showList = (ShowList) list.get(i);
+                            info = new MaterialInfo();
+                            info.setProjectName(showList.getProjectName());
+                            info.setMaterialCode(showList.getMaterialCode());
+                            info.setMaterialName(showList.getMaterialDescription());
+                            info.setExtendDescription(showList.getExtensionDescription());
+                            info.setUnit(showList.getMdUnits());
+                            info.setTotalCount(showList.getMdTotalAmount());
+                            info.setWeightKg(showList.getMdSingleWeight());
+                            info.setWeightTon(showList.getMdTotalWeight());
+                            info.setSupplyType(showList.getMdTheParty());
+                            info.setNote(showList.getMdText());
+                            infoList.add(info);
+                        }
+                        //保存甲供材信息
+                        reserveProcessService.saveDistributionList(infoList);
+                        //保存项目储备编号及电缆分段存入redis的id
+                        //保存前先根据项目储备编号去删除
+                        cableService.deleteDistributionCableRedis(reserveProcess.getProjectReserveId());
+                        cableService.insertDistributionIntoCableRedis(reserveProcess.getProjectReserveId(),uid);
+
+                        //提交流程任务
+                        Map<String, Object> vars = Maps.newHashMap();
+                        ReserveProcessProject processProject = projectService.queryByProjectId(reserveProcess.getProjectReserveId());
+                        vars.put("manager", UserUtils.getByUserName(processProject.getOwnerReserveProjectManagre()).getLoginName());
+                        // 提交流程任务
+                        complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+
+                    }
+                }
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+        }
+
+        j.setMsg("审批成功");
+        return j;
+    }
+
+    /**
+     * 年度物资上报明细 多文件导入验证
+     */
+    @ResponseBody
+    @RequestMapping(value = "importCGValidations")
+    public AjaxJson importCGValidations(@RequestParam("file") MultipartFile[] file,String projectReserveId) {
+        AjaxJson j = new AjaxJson();
+
+        try {
+            for (int k = 0; k < file.length; k++) {
+                reserveProcessService.saveDistributData(file[k],projectReserveId);
+            }
+            j.setSuccess(true);
+            j.setErrorCode("0");
+            j.setMsg("导入成功");
+        } catch (Exception e) {
+            j.setSuccess(true);
+            j.setMsg("导入失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+}

+ 664 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/web/DistributionDesignChangeController.java

@@ -0,0 +1,664 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.web;
+
+import com.google.common.collect.Maps;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionDesignChange;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.service.DistributionDesignChangeService;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.util.DistributionExportUtil;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.util.DistributionImportUtil;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.entity.ReserveProcessProject;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.service.ProjectTypeVerificateService;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.service.ProgressStatsService;
+import com.jeeplus.modules.sg.managementcenter.materialproject.util.ImportUtil;
+import com.jeeplus.modules.sg.picking.activiti.entity.PickList;
+import com.jeeplus.modules.sg.raiseCapital.service.RaiseCapitalService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.activiti.engine.repository.ProcessDefinition;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+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.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 配网项目设计变更记录表
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 10:06
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/cg/distribution/designChange")
+public class DistributionDesignChangeController extends BaseController {
+
+    @Autowired
+    private DistributionDesignChangeService designChangeService;
+
+    @Autowired
+    private ProgressStatsService statsService;
+
+    @Autowired
+    private ProjectTypeVerificateService verificateService;
+
+    @Autowired
+    private RaiseCapitalService raiseCapitalService;
+
+    @ModelAttribute
+    public DistributionDesignChange get(@RequestParam(required = false) String id) {
+        DistributionDesignChange entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = designChangeService.get(id);
+        }
+        if (entity == null) {
+            entity = new DistributionDesignChange();
+        }
+
+        if (StringUtils.isNotBlank(entity.getDesignChangeTypeLeader())){
+            entity.setDesignChangeType(entity.getDesignChangeTypeLeader());
+        }
+        if (StringUtils.isNotBlank(entity.getChangeTypeLeader())){
+            entity.setChangeType(entity.getChangeTypeLeader());
+        }
+        //设置设计变更状态
+        String procInsId = statsService.getDistributionByProjectReserveId(entity.getProjectReserveId());
+        List<History> jlHistory = statsService.getHistoryByProInsId(procInsId, "是否需上报领导");
+        if (jlHistory.size()>0){
+            //获取最近的一个上报领导节点,
+            //根据这个节点的结束时间去查下一个节点信息,该节点的结束时间也是下一个节点的开始时间
+            if (StringUtils.isNotBlank(jlHistory.get(0).getEndTime())){
+                //不为空,说明已经到了  领导审核节点或者是设计变更节点
+                History history = statsService.getHistoryByStartTime(jlHistory.get(0).getEndTime());
+                if (null == history) {
+                    //流程直接结束了
+                    entity.setDesignChangeStatus("无");
+                } else if (history.getName().equals("领导-问题审核")){
+                    //根据领导审核节点的结束时间去查下一个节点的信息,判断是结束了还是设计变更节点
+                    if (StringUtils.isNotBlank(history.getEndTime())){
+                        //说明领导审批流程结束
+                        history = statsService.getHistoryByStartTime(history.getEndTime());
+                        if (null != history) {
+                            //说明流程没有结束
+                            if (StringUtils.isNotBlank(history.getEndTime())){
+                                //设计单位上传预算书节点结束了
+                                entity.setDesignChangeStatus("已变更");
+                                entity.setCompleteDesignChangeType("是");
+                                history = statsService.getHistoryByStartTime(history.getEndTime());
+                                if (StringUtils.isNotBlank(history.getEndTime())){
+                                    //说明通过了项目经理-审核节点
+                                    entity.setProjectManagerApproved("是");
+                                    entity.setElectronDiagramCompleteTime(history.getEndTime());
+                                    //根据项目经理-审核节点的结束时间查技经人员审核节点信息
+                                    history = statsService.getHistoryByStartTime(history.getEndTime());
+                                    if (StringUtils.isNotBlank(history.getEndTime())){
+                                        //通过了
+                                        entity.setCompleteBudgetAdjust("是");
+                                        entity.setJjApproved("是");
+                                        entity.setBudgetCompleteTime(history.getEndTime());
+                                    } else {
+                                        entity.setJjApproved("否");
+                                    }
+                                } else {
+                                    entity.setProjectManagerApproved("否");
+                                }
+                            } else {
+                                entity.setDesignChangeStatus("变更中");
+                                entity.setCompleteDesignChangeType("否");
+                                entity.setProjectManagerApproved("否");
+                            }
+                            entity.setDesignChangeProposeTime(history.getStartTime());
+                        } else {
+                            //流程直接结束了
+                            entity.setDesignChangeStatus("无");
+                            entity.setCompleteDesignChangeType("否");
+                            entity.setProjectManagerApproved("否");
+                        }
+                    }
+
+
+                }else if (history.getName().equals("设计单位上传预算书")){
+                    //设计变更节点
+                    if (StringUtils.isNotBlank(history.getEndTime())){
+                        //设计单位上传预算书节点结束了
+                        entity.setDesignChangeStatus("已变更");
+                        entity.setCompleteDesignChangeType("是");
+                        //根据上传预算书节点的结束时间去查项目经理-审核节点的信息
+                        history = statsService.getHistoryByStartTime(history.getEndTime());
+                        if (StringUtils.isNotBlank(history.getEndTime())){
+                            //说明通过了项目经理-审核节点
+                            entity.setProjectManagerApproved("是");
+                            entity.setElectronDiagramCompleteTime(history.getEndTime());
+                            history = statsService.getHistoryByStartTime(history.getEndTime());
+                            if (StringUtils.isNotBlank(history.getEndTime())){
+                                //通过了
+                                entity.setCompleteBudgetAdjust("是");
+                                entity.setJjApproved("是");
+                                entity.setBudgetCompleteTime(history.getEndTime());
+                            } else {
+                                entity.setJjApproved("否");
+                            }
+                        } else {
+                            entity.setProjectManagerApproved("否");
+                        }
+                    } else {
+                        entity.setDesignChangeStatus("变更中");
+                        entity.setCompleteDesignChangeType("否");
+                        entity.setProjectManagerApproved("否");
+                    }
+                    entity.setDesignChangeProposeTime(history.getStartTime());
+                }
+            } else {
+                //说明才发起流程,是否上报领导节点未结束
+                entity.setDesignChangeStatus("无");
+                entity.setCompleteDesignChangeType("否");
+                entity.setProjectManagerApproved("否");
+            }
+
+            //计算设计变更时长
+            // 定义两个 LocalDateTime 对象
+            if (StringUtils.isNotBlank(entity.getBudgetCompleteTime())){
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                LocalDateTime dateTime1 = LocalDateTime.parse(entity.getBudgetCompleteTime(), formatter);
+                LocalDateTime dateTime2 = LocalDateTime.parse(jlHistory.get(0).getStartTime(), formatter);
+
+                // 计算两个日期时间之间的时间差(秒数)
+                Long time = ChronoUnit.SECONDS.between(dateTime2, dateTime1);
+
+                entity.setDesignChangeTime(time.toString());
+            }
+
+        }
+        return entity;
+    }
+
+    /**
+     * 项目储备信息列表页面
+     * @param reserveManagement
+     * @param model
+     * @return
+     */
+    @RequiresPermissions("cg:distribution:designChange:list")
+    @RequestMapping(value = "skipList")
+    public String skipList(DistributionDesignChange reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        return "modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementInformation";
+    }
+
+    /**
+     * 查看表单页面
+     */
+    @RequiresPermissions(value={"cg:distribution:designChange:view"},logical= Logical.OR)
+    @RequestMapping(value = "view")
+    public String view(DistributionDesignChange reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        return "modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementView";
+    }
+
+    /**
+     * 项目储备信息数据列表
+     * @param reserveManagement
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("cg:distribution:designChange:list")
+    @RequestMapping(value = "list")
+    public Map<String, Object> basicData(DistributionDesignChange reserveManagement, HttpServletRequest request, HttpServletResponse response, Model model) {
+
+        Page<DistributionDesignChange> page = designChangeService.findPage(new Page<DistributionDesignChange>(request, response), reserveManagement);
+        List<DistributionDesignChange> list = page.getList();
+        List<DistributionDesignChange> changes = new ArrayList<>();
+
+        List<String> nameList = new ArrayList<>();
+        //获取所有小类的名称
+        List<PickList> pickListList = raiseCapitalService.newAllList();
+        if (null != pickListList) {
+            pickListList.forEach(k->{
+                if (k.getName().equals("三、设备")){
+                    k.getMdTheClassList().forEach(v->{
+                        v.getMdSmallClassList().forEach(na->{
+                            nameList.add(na.getName());
+                        });
+                    });
+                }
+            });
+        }
+
+        DistributionDesignChange change = new DistributionDesignChange();
+        for (int i=0;i<list.size();i++){
+            change = list.get(i);
+
+            //根据项目储备id去在线开甲供材表中查询物理信息
+            List<String> materialNameList = verificateService.getMaterialName2(change.getProjectName());
+            if (null != nameList & null != materialNameList){
+                DistributionDesignChange finalChange = change;
+                nameList.forEach(n->{
+                    if (StringUtils.isBlank(finalChange.getProjectNature())){
+                        if (materialNameList.contains(n)){
+                            finalChange.setProjectNature("资本");
+                        } else {
+                            finalChange.setProjectNature("成本");
+                        }
+                    }
+                });
+            }
+
+            if (StringUtils.isBlank(change.getDesignChangeType())){
+                change.setDesignChangeType(change.getDesignChangeTypeLeader());
+            }
+            if (StringUtils.isBlank(change.getChangeType())){
+                change.setChangeType(change.getChangeTypeLeader());
+            }
+            //设置设计变更状态
+            String procInsId = statsService.getDistributionByProjectReserveId(change.getProjectReserveId());
+            List<History> jlHistory = statsService.getHistoryByProInsId(procInsId, "是否需上报领导");
+            if (jlHistory.size()>0){
+                //获取最近的一个上报领导节点,
+                //根据这个节点的结束时间去查下一个节点信息,该节点的结束时间也是下一个节点的开始时间
+                if (StringUtils.isNotBlank(jlHistory.get(0).getEndTime())){
+                    //不为空,说明已经到了  领导审核节点或者是设计变更节点
+                    History history = statsService.getHistoryByStartTime(jlHistory.get(0).getEndTime());
+                    if (null == history) {
+                        //流程直接结束了
+                        change.setDesignChangeStatus("无");
+                    } else if (history.getName().equals("领导-问题审核")){
+                        //根据领导审核节点的结束时间去查下一个节点的信息,判断是结束了还是设计变更节点
+                        if (StringUtils.isNotBlank(history.getEndTime())){
+                            //说明领导审批流程结束
+                            history = statsService.getHistoryByStartTime(history.getEndTime());
+                            if (null != history) {
+                                //说明流程没有结束
+                                if (StringUtils.isNotBlank(history.getEndTime())){
+                                    //设计单位上传预算书节点结束了
+                                    change.setDesignChangeStatus("已变更");
+                                    change.setCompleteDesignChangeType("是");
+                                    history = statsService.getHistoryByStartTime(history.getEndTime());
+                                    if (StringUtils.isNotBlank(history.getEndTime())){
+                                        //说明通过了项目经理-审核节点
+                                        change.setProjectManagerApproved("是");
+                                        change.setElectronDiagramCompleteTime(history.getEndTime());
+                                        //根据项目经理-审核节点的结束时间查技经人员审核节点信息
+                                        history = statsService.getHistoryByStartTime(history.getEndTime());
+                                        if (StringUtils.isNotBlank(history.getEndTime())){
+                                            //通过了
+                                            change.setCompleteBudgetAdjust("是");
+                                            change.setJjApproved("是");
+                                            change.setBudgetCompleteTime(history.getEndTime());
+                                        } else {
+                                            change.setJjApproved("否");
+                                        }
+                                    } else {
+                                        change.setProjectManagerApproved("否");
+                                    }
+                                } else {
+                                    change.setDesignChangeStatus("变更中");
+                                    change.setCompleteDesignChangeType("否");
+                                    change.setProjectManagerApproved("否");
+                                }
+                                change.setDesignChangeProposeTime(history.getStartTime());
+                            } else {
+                                //流程直接结束了
+                                change.setDesignChangeStatus("无");
+                                change.setCompleteDesignChangeType("否");
+                                change.setProjectManagerApproved("否");
+                            }
+                        }
+
+
+                    }else if (history.getName().equals("设计单位上传预算书")){
+                        //设计变更节点
+                        if (StringUtils.isNotBlank(history.getEndTime())){
+                            //设计单位上传预算书节点结束了
+                            change.setDesignChangeStatus("已变更");
+                            change.setCompleteDesignChangeType("是");
+                            //根据上传预算书节点的结束时间去查项目经理-审核节点的信息
+                            history = statsService.getHistoryByStartTime(history.getEndTime());
+                            if (StringUtils.isNotBlank(history.getEndTime())){
+                                //说明通过了项目经理-审核节点
+                                change.setProjectManagerApproved("是");
+                                change.setElectronDiagramCompleteTime(history.getEndTime());
+                                history = statsService.getHistoryByStartTime(history.getEndTime());
+                                if (StringUtils.isNotBlank(history.getEndTime())){
+                                    //通过了
+                                    change.setCompleteBudgetAdjust("是");
+                                    change.setJjApproved("是");
+                                    change.setBudgetCompleteTime(history.getEndTime());
+                                } else {
+                                    change.setJjApproved("否");
+                                }
+                            } else {
+                                change.setProjectManagerApproved("否");
+                            }
+                        } else {
+                            change.setDesignChangeStatus("变更中");
+                            change.setCompleteDesignChangeType("否");
+                            change.setProjectManagerApproved("否");
+                        }
+                        change.setDesignChangeProposeTime(history.getStartTime());
+                    }
+                } else {
+                    //说明才发起流程,是否上报领导节点未结束
+                    change.setDesignChangeStatus("无");
+                    change.setCompleteDesignChangeType("否");
+                    change.setProjectManagerApproved("否");
+                }
+
+                //计算设计变更时长
+                // 定义两个 LocalDateTime 对象
+                if (StringUtils.isNotBlank(change.getBudgetCompleteTime())){
+                    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                    LocalDateTime dateTime1 = LocalDateTime.parse(change.getBudgetCompleteTime(), formatter);
+                    LocalDateTime dateTime2 = LocalDateTime.parse(jlHistory.get(0).getStartTime(), formatter);
+
+                    // 计算两个日期时间之间的时间差(秒数)
+                    Long time = ChronoUnit.SECONDS.between(dateTime2, dateTime1);
+
+                    change.setDesignChangeTime(time.toString());
+                }
+
+            }
+
+            changes.add(change);
+        }
+
+        return getBootstrapData(page);
+    }
+
+    /**
+     * 专职人员增加,编辑表单页面
+     * @param reserveManagement
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"cg:distribution:designChange:add","cg:distribution:designChange:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(DistributionDesignChange reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        //判断id是否为空 如果未空则为新增 否则为修改
+        if(StringUtils.isBlank(reserveManagement.getId())){
+            return "modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementForm";
+        }
+        return "modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementModifyByzz";
+    }
+
+    /**
+     * 专职人员保存表单
+     * @param reserveManagement
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"cg:distribution:designChange:add"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public AjaxJson save(DistributionDesignChange reserveManagement){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(reserveManagement);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //新增或编辑表单保存
+        designChangeService.save(reserveManagement);//保存
+        j.setSuccess(true);
+        j.setMsg("保存政策处理进度表信息成功");
+        return j;
+    }
+
+    /**
+     * 专职人员修改表单
+     * @param reserveManagement
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"cg:distribution:designChange:edit"},logical=Logical.OR)
+    @RequestMapping(value = "update")
+    public AjaxJson update(DistributionDesignChange reserveManagement){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(reserveManagement);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+
+        //根据项目储备编号查是否有改数据
+        DistributionDesignChange safety = designChangeService.getByReserveId(reserveManagement.getProjectReserveId());
+        if (null == safety){
+            safety = new DistributionDesignChange();
+            safety.setProjectReserveId(reserveManagement.getProjectReserveId());
+            safety.setDesignChangeContent(reserveManagement.getDesignChangeContent());
+            safety.setDrawingTransfer(reserveManagement.getDrawingTransfer());
+            safety.setDrawingTransferTime(reserveManagement.getDrawingTransferTime());
+            safety.setDataIntegrity(reserveManagement.getDataIntegrity());
+            safety.setRemarks(reserveManagement.getRemarks());
+        }else {
+            safety.setProjectReserveId(reserveManagement.getProjectReserveId());
+            safety.setDesignChangeContent(reserveManagement.getDesignChangeContent());
+            safety.setDrawingTransfer(reserveManagement.getDrawingTransfer());
+            safety.setDrawingTransferTime(reserveManagement.getDrawingTransferTime());
+            safety.setDataIntegrity(reserveManagement.getDataIntegrity());
+            safety.setRemarks(reserveManagement.getRemarks());
+        }
+
+        designChangeService.save(safety);
+        j.setSuccess(true);
+        j.setMsg("修改政策处理进度表信息成功");
+        return j;
+    }
+
+    /**
+     * 导入Excel数据
+     */
+    @ResponseBody
+    @RequiresPermissions("cg:distribution:designChange:import")
+    @RequestMapping(value = "import")
+    public AjaxJson importBasic(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        try {
+            ImportUtil importUtil = new ImportUtil(file, 0, 0);
+
+            //从数据库中查出所有的 项目储备编号
+            List<String> proIdList = designChangeService.getAllProId();
+
+            //从基本数据表中查出所有的 项目储备编号
+            List<String> proIdList2 = designChangeService.getAllProId2();
+
+            //获取导入表格所有数据
+            List<DistributionDesignChange> reserveManagementList = DistributionImportUtil.getDistributionDesignChangeUtil(importUtil,proIdList,proIdList2);
+            //查询已有的参数数据 并分类返回已存在数据和未存在数据
+            Map map = designChangeService.getExistProjectList(reserveManagementList);
+            //未存在数据
+            List<DistributionDesignChange> withoutList = (List<DistributionDesignChange>) map.get("without");
+            //已存在数据
+            List<DistributionDesignChange> existList = (List<DistributionDesignChange>) map.get("exist");
+
+            //对未存在的数据进行批量导入
+            if(withoutList.size()>0){
+                designChangeService.insertList(withoutList);
+            }
+
+            //对已存在的数据进行修改
+            if(existList.size()>0){
+                for (DistributionDesignChange reserveManagement : existList) {
+                    designChangeService.update(reserveManagement);
+                }
+            }
+            int i = withoutList.size() + existList.size();
+            j.setMsg("已成功导入" + i + "条政策处理进度表信息记录");
+
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入政策处理进度表信息失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    //导出excel
+    @ResponseBody
+    @RequiresPermissions("cg:distribution:designChange:export")
+    @RequestMapping(value = "export")
+    public void exportExcel(DistributionDesignChange reserveManagement, HttpServletRequest request, HttpServletResponse response) {
+        List<DistributionDesignChange> list = designChangeService.exportFindList(reserveManagement);
+
+        List<DistributionDesignChange> changes = new ArrayList<>();
+        DistributionDesignChange change = new DistributionDesignChange();
+        for (int i=0;i<list.size();i++){
+            change = list.get(i);
+            if (StringUtils.isBlank(change.getDesignChangeType())){
+                change.setDesignChangeType(change.getDesignChangeTypeLeader());
+            }
+            if (StringUtils.isBlank(change.getChangeType())){
+                change.setChangeType(change.getChangeTypeLeader());
+            }
+            //设置设计变更状态
+            String procInsId = statsService.getDistributionByProjectReserveId(change.getProjectReserveId());
+            List<History> jlHistory = statsService.getHistoryByProInsId(procInsId, "是否需上报领导");
+            if (jlHistory.size()>0){
+                //获取最近的一个上报领导节点,
+                //根据这个节点的结束时间去查下一个节点信息,该节点的结束时间也是下一个节点的开始时间
+                if (StringUtils.isNotBlank(jlHistory.get(0).getEndTime())){
+                    //不为空,说明已经到了  领导审核节点或者是设计变更节点
+                    History history = statsService.getHistoryByStartTime(jlHistory.get(0).getEndTime());
+                    if (null == history) {
+                        //流程直接结束了
+                        change.setDesignChangeStatus("无");
+                    } else if (history.getName().equals("领导-问题审核")){
+                        //根据领导审核节点的结束时间去查下一个节点的信息,判断是结束了还是设计变更节点
+                        if (StringUtils.isNotBlank(history.getEndTime())){
+                            //说明领导审批流程结束
+                            history = statsService.getHistoryByStartTime(history.getEndTime());
+                            if (null != history) {
+                                //说明流程没有结束
+                                if (StringUtils.isNotBlank(history.getEndTime())){
+                                    //设计单位上传预算书节点结束了
+                                    change.setDesignChangeStatus("已变更");
+                                    change.setCompleteDesignChangeType("是");
+                                    history = statsService.getHistoryByStartTime(history.getEndTime());
+                                    if (StringUtils.isNotBlank(history.getEndTime())){
+                                        //说明通过了项目经理-审核节点
+                                        change.setProjectManagerApproved("是");
+                                        change.setElectronDiagramCompleteTime(history.getEndTime());
+                                        //根据项目经理-审核节点的结束时间查技经人员审核节点信息
+                                        history = statsService.getHistoryByStartTime(history.getEndTime());
+                                        if (StringUtils.isNotBlank(history.getEndTime())){
+                                            //通过了
+                                            change.setCompleteBudgetAdjust("是");
+                                            change.setJjApproved("是");
+                                            change.setBudgetCompleteTime(history.getEndTime());
+                                        } else {
+                                            change.setJjApproved("否");
+                                        }
+                                    } else {
+                                        change.setProjectManagerApproved("否");
+                                    }
+                                } else {
+                                    change.setDesignChangeStatus("变更中");
+                                    change.setCompleteDesignChangeType("否");
+                                    change.setProjectManagerApproved("否");
+                                }
+                                change.setDesignChangeProposeTime(history.getStartTime());
+                            } else {
+                                //流程直接结束了
+                                change.setDesignChangeStatus("无");
+                                change.setCompleteDesignChangeType("否");
+                                change.setProjectManagerApproved("否");
+                            }
+                        }
+
+
+                    }else if (history.getName().equals("设计单位上传预算书")){
+                        //设计变更节点
+                        if (StringUtils.isNotBlank(history.getEndTime())){
+                            //设计单位上传预算书节点结束了
+                            change.setDesignChangeStatus("已变更");
+                            change.setCompleteDesignChangeType("是");
+                            //根据上传预算书节点的结束时间去查项目经理-审核节点的信息
+                            history = statsService.getHistoryByStartTime(history.getEndTime());
+                            if (StringUtils.isNotBlank(history.getEndTime())){
+                                //说明通过了项目经理-审核节点
+                                change.setProjectManagerApproved("是");
+                                change.setElectronDiagramCompleteTime(history.getEndTime());
+                                history = statsService.getHistoryByStartTime(history.getEndTime());
+                                if (StringUtils.isNotBlank(history.getEndTime())){
+                                    //通过了
+                                    change.setCompleteBudgetAdjust("是");
+                                    change.setJjApproved("是");
+                                    change.setBudgetCompleteTime(history.getEndTime());
+                                } else {
+                                    change.setJjApproved("否");
+                                }
+                            } else {
+                                change.setProjectManagerApproved("否");
+                            }
+                        } else {
+                            change.setDesignChangeStatus("变更中");
+                            change.setCompleteDesignChangeType("否");
+                            change.setProjectManagerApproved("否");
+                        }
+                        change.setDesignChangeProposeTime(history.getStartTime());
+                    }
+                } else {
+                    //说明才发起流程,是否上报领导节点未结束
+                    change.setDesignChangeStatus("无");
+                    change.setCompleteDesignChangeType("否");
+                    change.setProjectManagerApproved("否");
+                }
+
+                //计算设计变更时长
+                // 定义两个 LocalDateTime 对象
+                if (StringUtils.isNotBlank(change.getBudgetCompleteTime())){
+                    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                    LocalDateTime dateTime1 = LocalDateTime.parse(change.getBudgetCompleteTime(), formatter);
+                    LocalDateTime dateTime2 = LocalDateTime.parse(jlHistory.get(0).getStartTime(), formatter);
+
+                    // 计算两个日期时间之间的时间差(秒数)
+                    Long time = ChronoUnit.SECONDS.between(dateTime2, dateTime1);
+
+                    change.setDesignChangeTime(time.toString());
+                }
+
+            }
+
+            changes.add(change);
+        }
+
+        //生成序列号
+        int j = 1;
+        for (DistributionDesignChange s : changes) {
+            s.setId(String.valueOf(j));
+            j++;
+        }
+
+        DistributionExportUtil util = DistributionExportUtil.getOne();
+        XSSFWorkbook workbook = util.getWorkbook("distributionDesignChange");
+        util.exportDistributionDesignChange(response,workbook,changes);
+    }
+}

+ 378 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/distribution/web/DistributionNetworkController.java

@@ -0,0 +1,378 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.distribution.web;
+
+import com.google.common.collect.Maps;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.act.service.ActProcessService;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetwork;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.entity.DistributionNetworkProcess;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.service.DistributionNetworkProcessService;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.service.DistributionNetworkService;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.util.DistributionExportUtil;
+import com.jeeplus.modules.cg.reservemanagementcenter.distribution.util.DistributionImportUtil;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.entity.ReserveProcessProject;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.service.ProjectTypeVerificateService;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.service.ReserveProcessProjectService;
+import com.jeeplus.modules.sg.managementcenter.materialproject.util.ImportUtil;
+import com.jeeplus.modules.sg.picking.activiti.entity.PickList;
+import com.jeeplus.modules.sg.raiseCapital.service.RaiseCapitalService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.activiti.engine.repository.ProcessDefinition;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+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.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.StringJoiner;
+
+/**
+ * 配网项目配网项目问题表表
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-07 9:35
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/cg/distribution/network")
+public class DistributionNetworkController extends BaseController {
+
+    @Autowired
+    private ActTaskService actTaskService;
+
+    @Autowired
+    private ReserveProcessProjectService projectService;
+
+    @Autowired
+    private DistributionNetworkService networkService;
+
+    @Autowired
+    private ActProcessService actProcessService;
+
+    @Autowired
+    private DistributionNetworkProcessService processService;
+
+    @Autowired
+    private ProjectTypeVerificateService verificateService;
+
+    @Autowired
+    private RaiseCapitalService raiseCapitalService;
+
+    @ModelAttribute
+    public DistributionNetwork get(@RequestParam(required = false) String id) {
+        DistributionNetwork entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = networkService.get(id);
+        }
+        if (entity == null) {
+            entity = new DistributionNetwork();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目储备信息列表页面
+     * @param reserveManagement
+     * @param model
+     * @return
+     */
+    @RequiresPermissions("cg:distribution:network:list")
+    @RequestMapping(value = "skipList")
+    public String skipList(DistributionNetwork reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        return "modules/cg/reservemanagementcenter/distribution/network/reserveManagementInformation";
+    }
+
+    /**
+     * 查看表单页面
+     */
+    @RequiresPermissions(value={"cg:distribution:network:view"},logical= Logical.OR)
+    @RequestMapping(value = "view")
+    public String view(DistributionNetwork reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        return "modules/cg/reservemanagementcenter/distribution/network/reserveManagementView";
+    }
+
+    /**
+     * 项目储备信息数据列表
+     * @param reserveManagement
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("cg:distribution:network:list")
+    @RequestMapping(value = "list")
+    public Map<String, Object> basicData(DistributionNetwork reserveManagement, HttpServletRequest request, HttpServletResponse response, Model model) {
+
+        Page<DistributionNetwork> page = networkService.findPage(new Page<DistributionNetwork>(request, response), reserveManagement);
+        List<DistributionNetwork> list = page.getList();
+
+        List<String> nameList = new ArrayList<>();
+        //获取所有小类的名称
+        List<PickList> pickListList = raiseCapitalService.newAllList();
+        if (null != pickListList) {
+            pickListList.forEach(k->{
+                if (k.getName().equals("三、设备")){
+                    k.getMdTheClassList().forEach(v->{
+                        v.getMdSmallClassList().forEach(na->{
+                            nameList.add(na.getName());
+                        });
+                    });
+                }
+            });
+        }
+
+        for (DistributionNetwork network : list) {
+            //根据项目储备id去在线开甲供材表中查询物理信息
+            List<String> materialNameList = verificateService.getMaterialName2(network.getProjectName());
+            if (null != nameList & null != materialNameList){
+                nameList.forEach(n->{
+                    if (StringUtils.isBlank(network.getProjectNature())){
+                        if (materialNameList.contains(n)){
+                            network.setProjectNature("资本");
+                        } else {
+                            network.setProjectNature("成本");
+                        }
+                    }
+                });
+            }
+        }
+
+
+        return getBootstrapData(page);
+    }
+
+    /**
+     * 专职人员增加,编辑表单页面
+     * @param reserveManagement
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"cg:distribution:network:add","cg:distribution:network:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(DistributionNetwork reserveManagement, Model model) {
+        if (StringUtils.isBlank(reserveManagement.getPromoter())){
+            //获取当前用户
+            String loginName = UserUtils.getUser().getName();
+            reserveManagement.setPromoter(loginName);
+        }
+        model.addAttribute("reserveManagement", reserveManagement);
+        //判断id是否为空 如果未空则为新增 否则为修改
+        if(StringUtils.isBlank(reserveManagement.getId())){
+            return "modules/cg/reservemanagementcenter/distribution/network/reserveManagementForm";
+        }
+        return "modules/cg/reservemanagementcenter/distribution/network/reserveManagementModifyByzz";
+    }
+
+    /**
+     * 专职人员保存表单
+     * @param reserveManagement
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"cg:distribution:network:add"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public AjaxJson save(DistributionNetwork reserveManagement){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(reserveManagement);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //新增或编辑表单保存
+        networkService.save(reserveManagement);//保存
+        j.setSuccess(true);
+        j.setMsg("保存政策处理进度表信息成功");
+        return j;
+    }
+
+    /**
+     * 专职人员修改表单
+     * @param reserveManagement
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"cg:distribution:network:edit"},logical=Logical.OR)
+    @RequestMapping(value = "update")
+    public AjaxJson update(DistributionNetwork reserveManagement){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(reserveManagement);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        if (StringUtils.isBlank(reserveManagement.getReserStatus()) || !reserveManagement.getReserStatus().equals("2")){
+            j.setSuccess(false);
+            j.setMsg("该项目储备流程未结束,无法发起问题发起流程!");
+            return j;
+        }
+        if (StringUtils.isNotBlank(reserveManagement.getProcessStatus()) && (reserveManagement.getProcessStatus().equals("1")||
+                reserveManagement.getProcessStatus().equals("2"))){
+            j.setSuccess(false);
+            j.setMsg("该项目问题发起流程在进行中或已完成,无法进行修改!");
+            return j;
+        }
+
+        //根据项目储备编号查是否有改数据
+        DistributionNetwork safety = networkService.getByReserveId(reserveManagement.getProjectReserveId());
+        if (null == safety){
+            safety = new DistributionNetwork();
+            safety.setProjectReserveId(reserveManagement.getProjectReserveId());
+            safety.setPromoter(reserveManagement.getPromoter());
+            safety.setProblemStage(reserveManagement.getProblemStage());
+            safety.setProblemType(reserveManagement.getProblemType());
+            safety.setProblemDescript(reserveManagement.getProblemDescript());
+            safety.setProblemSolver(reserveManagement.getProblemSolver());
+            safety.setProblemResolved(reserveManagement.getProblemResolved());
+            safety.setProblemResolvedDescript(reserveManagement.getProblemResolvedDescript());
+            safety.setDesignChange(reserveManagement.getDesignChange());
+            safety.setChangeType(reserveManagement.getChangeType());
+            safety.setDesignChangeType(reserveManagement.getDesignChangeType());
+            safety.setReportToLeader(reserveManagement.getReportToLeader());
+            safety.setProblemSolverLeader(reserveManagement.getProblemSolverLeader());
+            safety.setProblemResolvedLeader(reserveManagement.getProblemResolvedLeader());
+            safety.setProblemResolvedDescriptLeader(reserveManagement.getProblemResolvedDescriptLeader());
+            safety.setDesignChangeLeader(reserveManagement.getDesignChangeLeader());
+            safety.setChangeTypeLeader(reserveManagement.getChangeTypeLeader());
+            safety.setDesignChangeTypeLeader(reserveManagement.getDesignChangeTypeLeader());
+            safety.setProcessStatus("1");
+        }else {
+            safety.setProjectReserveId(reserveManagement.getProjectReserveId());
+            safety.setPromoter(reserveManagement.getPromoter());
+            safety.setProblemStage(reserveManagement.getProblemStage());
+            safety.setProblemType(reserveManagement.getProblemType());
+            safety.setProblemDescript(reserveManagement.getProblemDescript());
+            safety.setProblemSolver(reserveManagement.getProblemSolver());
+            safety.setProblemResolved(reserveManagement.getProblemResolved());
+            safety.setProblemResolvedDescript(reserveManagement.getProblemResolvedDescript());
+            safety.setDesignChange(reserveManagement.getDesignChange());
+            safety.setChangeType(reserveManagement.getChangeType());
+            safety.setDesignChangeType(reserveManagement.getDesignChangeType());
+            safety.setReportToLeader(reserveManagement.getReportToLeader());
+            safety.setProblemSolverLeader(reserveManagement.getProblemSolverLeader());
+            safety.setProblemResolvedLeader(reserveManagement.getProblemResolvedLeader());
+            safety.setProblemResolvedDescriptLeader(reserveManagement.getProblemResolvedDescriptLeader());
+            safety.setDesignChangeLeader(reserveManagement.getDesignChangeLeader());
+            safety.setChangeTypeLeader(reserveManagement.getChangeTypeLeader());
+            safety.setDesignChangeTypeLeader(reserveManagement.getDesignChangeTypeLeader());
+            safety.setProcessStatus("1");
+            //新增或编辑表单保存
+//            networkService.update(safety);
+        }
+        //去掉之前的流程,重新开始流程
+        networkService.deleteAct(reserveManagement.getProjectReserveId());
+        //发起流程
+        DistributionNetworkProcess reserveProcess = new DistributionNetworkProcess();
+        reserveProcess.preInsert();
+        reserveProcess.setProjectReserveId(reserveManagement.getProjectReserveId());
+        //更新
+        processService.insert(reserveProcess);
+        //发送流程,更改项目状态
+        Map<String, Object> vars = Maps.newHashMap();
+
+        ReserveProcessProject processProject = projectService.queryByProjectId(reserveManagement.getProjectReserveId());
+        //审核代理人
+        vars.put("manager", UserUtils.getByUserName(processProject.getOwnerReserveProjectManagre()).getLoginName());
+        String procDefId = projectService.findDefId("pwlcTest");
+        ProcessDefinition p = actProcessService.getProcessDefinition(procDefId);
+        String title = reserveManagement.getCurrentUser().getName() + "在" + DateUtils.getDateTime() + "发起" + p.getName();
+        actTaskService.startProcess(p.getKey(), "cg_personnel_activiti_distribution", reserveProcess.getId(), title, vars);
+
+        networkService.save(safety);
+        j.setSuccess(true);
+        j.setMsg("修改政策处理进度表信息成功");
+        return j;
+    }
+
+    /**
+     * 导入Excel数据
+     */
+    @ResponseBody
+    @RequiresPermissions("cg:distribution:network:import")
+    @RequestMapping(value = "import")
+    public AjaxJson importBasic(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        try {
+            ImportUtil importUtil = new ImportUtil(file, 0, 0);
+
+            //从数据库中查出所有的 项目储备编号
+            List<String> proIdList = networkService.getAllProId();
+
+            //从基本数据表中查出所有的 项目储备编号
+            List<String> proIdList2 = networkService.getAllProId2();
+
+            //获取导入表格所有数据
+            List<DistributionNetwork> reserveManagementList = DistributionImportUtil.getDistributionNetworkUtil(importUtil,proIdList,proIdList2);
+            //查询已有的参数数据 并分类返回已存在数据和未存在数据
+            Map map = networkService.getExistProjectList(reserveManagementList);
+            //未存在数据
+            List<DistributionNetwork> withoutList = (List<DistributionNetwork>) map.get("without");
+            //已存在数据
+            List<DistributionNetwork> existList = (List<DistributionNetwork>) map.get("exist");
+
+            //对未存在的数据进行批量导入
+            if(withoutList.size()>0){
+                networkService.insertList(withoutList);
+            }
+
+            //对已存在的数据进行修改
+            if(existList.size()>0){
+                for (DistributionNetwork reserveManagement : existList) {
+                    networkService.update(reserveManagement);
+                }
+            }
+            int i = withoutList.size() + existList.size();
+            j.setMsg("已成功导入" + i + "条政策处理进度表信息记录");
+
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入政策处理进度表信息失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    //导出excel
+    @ResponseBody
+    @RequiresPermissions("cg:distribution:network:export")
+    @RequestMapping(value = "export")
+    public void exportExcel(DistributionNetwork reserveManagement, HttpServletRequest request, HttpServletResponse response) {
+        List<DistributionNetwork> list = networkService.exportFindList(reserveManagement);
+
+        //生成序列号
+        int j = 1;
+        for (DistributionNetwork s : list) {
+            s.setId(String.valueOf(j));
+            j++;
+        }
+
+        DistributionExportUtil util = DistributionExportUtil.getOne();
+        XSSFWorkbook workbook = util.getWorkbook("distributionNetwork");
+        util.exportDistributionNetwork(response,workbook,list);
+    }
+}

+ 400 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/entity/PoliceProcessBase.java

@@ -0,0 +1,400 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity;
+
+import com.jeeplus.core.persistence.ActEntity;
+
+/**
+ * 政策处理基本信息表
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 10:53
+ */
+public class PoliceProcessBase extends ActEntity<PoliceProcessBase> {
+    //储备项目基本信息
+    private String projectManager;          //项目储备经理
+    private String projectYear;             //项目年份
+    private String projectNature;           //项目性质
+    private String demandUnit;              //需求单位
+    private String district;                //区域
+    private String projectGroup;            //项目分组
+    private String reserveBatches;          //储备批次
+    private String blockSupply;             //供电区域
+    private String gridNumber;              //网格编号
+    private String cellNumber;              //单元格编号
+    private String projectReserveId;        //项目储备编号
+    private String projectName;             //项目名称
+    private String stateGridProjectCode;             //国网项目编码
+    private String stateGridProjectName;             //国网项目名称
+    private String constructionNecessityAndContent;           //建设必要性及内容
+    private String substationName;           //变电站名称
+    private String circuitName;              //线路名称
+    private String netRackProjectDivide;     //网架项目划分
+    private String requirementType;          //需求类型
+    private String projectType;              //项目类型
+    private String costEstimate;             //费用估算
+    private String remarks;                  //备注
+
+    //储备进度
+    private String reserveProgress;          //储备进度
+    private String implementPlan;            //是否纳入实施计划
+    private String implementBatch;           //初定实施批次
+
+    //工作量统计
+    private String civilEngineeringWorkload; //是否含土建工作量
+    private String engineeringWorkloadStatistic; //土建工作量统计
+    private String poleWorkload;             //是否含立杆工作量
+    private String poleWorkloadStatistic;    //立杆工作量统计
+    private String workRemark;               //工作量统计-备注
+
+    //政策处理基本信息
+    private String powerStationJurisdiction;        //供电所辖区
+    private String constructionLocation;            //施工地点
+    private String whetherExitPolitical;            //是否存在政处
+    private String politicalType;                   //政处类型
+    private String politicalDescribe;               //政处描述
+    private String politicalDifficulty;             //政处难度
+    private String whetherReport;                   //是否需规划报批
+    private String safetyProcedures;                //是否需办理安评手续
+    private String aviationReviewProcedures;        //是否需办理航评手续
+    private String startPolitical;                  //是否启动政处
+    private String startTime;                       //启动时间
+    private String politicalRemarks;                //政处备注
+
+
+    public String getProjectManager() {
+        return projectManager;
+    }
+
+    public void setProjectManager(String projectManager) {
+        this.projectManager = projectManager;
+    }
+
+    public String getProjectYear() {
+        return projectYear;
+    }
+
+    public void setProjectYear(String projectYear) {
+        this.projectYear = projectYear;
+    }
+
+    public String getProjectNature() {
+        return projectNature;
+    }
+
+    public void setProjectNature(String projectNature) {
+        this.projectNature = projectNature;
+    }
+
+    public String getDemandUnit() {
+        return demandUnit;
+    }
+
+    public void setDemandUnit(String demandUnit) {
+        this.demandUnit = demandUnit;
+    }
+
+    public String getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(String district) {
+        this.district = district;
+    }
+
+    public String getProjectGroup() {
+        return projectGroup;
+    }
+
+    public void setProjectGroup(String projectGroup) {
+        this.projectGroup = projectGroup;
+    }
+
+    public String getReserveBatches() {
+        return reserveBatches;
+    }
+
+    public void setReserveBatches(String reserveBatches) {
+        this.reserveBatches = reserveBatches;
+    }
+
+    public String getBlockSupply() {
+        return blockSupply;
+    }
+
+    public void setBlockSupply(String blockSupply) {
+        this.blockSupply = blockSupply;
+    }
+
+    public String getGridNumber() {
+        return gridNumber;
+    }
+
+    public void setGridNumber(String gridNumber) {
+        this.gridNumber = gridNumber;
+    }
+
+    public String getCellNumber() {
+        return cellNumber;
+    }
+
+    public void setCellNumber(String cellNumber) {
+        this.cellNumber = cellNumber;
+    }
+
+    public String getProjectReserveId() {
+        return projectReserveId;
+    }
+
+    public void setProjectReserveId(String projectReserveId) {
+        this.projectReserveId = projectReserveId;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getStateGridProjectCode() {
+        return stateGridProjectCode;
+    }
+
+    public void setStateGridProjectCode(String stateGridProjectCode) {
+        this.stateGridProjectCode = stateGridProjectCode;
+    }
+
+    public String getStateGridProjectName() {
+        return stateGridProjectName;
+    }
+
+    public void setStateGridProjectName(String stateGridProjectName) {
+        this.stateGridProjectName = stateGridProjectName;
+    }
+
+    public String getConstructionNecessityAndContent() {
+        return constructionNecessityAndContent;
+    }
+
+    public void setConstructionNecessityAndContent(String constructionNecessityAndContent) {
+        this.constructionNecessityAndContent = constructionNecessityAndContent;
+    }
+
+    public String getSubstationName() {
+        return substationName;
+    }
+
+    public void setSubstationName(String substationName) {
+        this.substationName = substationName;
+    }
+
+    public String getCircuitName() {
+        return circuitName;
+    }
+
+    public void setCircuitName(String circuitName) {
+        this.circuitName = circuitName;
+    }
+
+    public String getNetRackProjectDivide() {
+        return netRackProjectDivide;
+    }
+
+    public void setNetRackProjectDivide(String netRackProjectDivide) {
+        this.netRackProjectDivide = netRackProjectDivide;
+    }
+
+    public String getRequirementType() {
+        return requirementType;
+    }
+
+    public void setRequirementType(String requirementType) {
+        this.requirementType = requirementType;
+    }
+
+    public String getProjectType() {
+        return projectType;
+    }
+
+    public void setProjectType(String projectType) {
+        this.projectType = projectType;
+    }
+
+    public String getCostEstimate() {
+        return costEstimate;
+    }
+
+    public void setCostEstimate(String costEstimate) {
+        this.costEstimate = costEstimate;
+    }
+
+    @Override
+    public String getRemarks() {
+        return remarks;
+    }
+
+    @Override
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getReserveProgress() {
+        return reserveProgress;
+    }
+
+    public void setReserveProgress(String reserveProgress) {
+        this.reserveProgress = reserveProgress;
+    }
+
+    public String getImplementPlan() {
+        return implementPlan;
+    }
+
+    public void setImplementPlan(String implementPlan) {
+        this.implementPlan = implementPlan;
+    }
+
+    public String getImplementBatch() {
+        return implementBatch;
+    }
+
+    public void setImplementBatch(String implementBatch) {
+        this.implementBatch = implementBatch;
+    }
+
+    public String getCivilEngineeringWorkload() {
+        return civilEngineeringWorkload;
+    }
+
+    public void setCivilEngineeringWorkload(String civilEngineeringWorkload) {
+        this.civilEngineeringWorkload = civilEngineeringWorkload;
+    }
+
+    public String getEngineeringWorkloadStatistic() {
+        return engineeringWorkloadStatistic;
+    }
+
+    public void setEngineeringWorkloadStatistic(String engineeringWorkloadStatistic) {
+        this.engineeringWorkloadStatistic = engineeringWorkloadStatistic;
+    }
+
+    public String getPoleWorkload() {
+        return poleWorkload;
+    }
+
+    public void setPoleWorkload(String poleWorkload) {
+        this.poleWorkload = poleWorkload;
+    }
+
+    public String getPoleWorkloadStatistic() {
+        return poleWorkloadStatistic;
+    }
+
+    public void setPoleWorkloadStatistic(String poleWorkloadStatistic) {
+        this.poleWorkloadStatistic = poleWorkloadStatistic;
+    }
+
+    public String getWorkRemark() {
+        return workRemark;
+    }
+
+    public void setWorkRemark(String workRemark) {
+        this.workRemark = workRemark;
+    }
+
+    public String getPowerStationJurisdiction() {
+        return powerStationJurisdiction;
+    }
+
+    public void setPowerStationJurisdiction(String powerStationJurisdiction) {
+        this.powerStationJurisdiction = powerStationJurisdiction;
+    }
+
+    public String getConstructionLocation() {
+        return constructionLocation;
+    }
+
+    public void setConstructionLocation(String constructionLocation) {
+        this.constructionLocation = constructionLocation;
+    }
+
+    public String getWhetherExitPolitical() {
+        return whetherExitPolitical;
+    }
+
+    public void setWhetherExitPolitical(String whetherExitPolitical) {
+        this.whetherExitPolitical = whetherExitPolitical;
+    }
+
+    public String getPoliticalType() {
+        return politicalType;
+    }
+
+    public void setPoliticalType(String politicalType) {
+        this.politicalType = politicalType;
+    }
+
+    public String getPoliticalDescribe() {
+        return politicalDescribe;
+    }
+
+    public void setPoliticalDescribe(String politicalDescribe) {
+        this.politicalDescribe = politicalDescribe;
+    }
+
+    public String getPoliticalDifficulty() {
+        return politicalDifficulty;
+    }
+
+    public void setPoliticalDifficulty(String politicalDifficulty) {
+        this.politicalDifficulty = politicalDifficulty;
+    }
+
+    public String getWhetherReport() {
+        return whetherReport;
+    }
+
+    public void setWhetherReport(String whetherReport) {
+        this.whetherReport = whetherReport;
+    }
+
+    public String getSafetyProcedures() {
+        return safetyProcedures;
+    }
+
+    public void setSafetyProcedures(String safetyProcedures) {
+        this.safetyProcedures = safetyProcedures;
+    }
+
+    public String getAviationReviewProcedures() {
+        return aviationReviewProcedures;
+    }
+
+    public void setAviationReviewProcedures(String aviationReviewProcedures) {
+        this.aviationReviewProcedures = aviationReviewProcedures;
+    }
+
+    public String getStartPolitical() {
+        return startPolitical;
+    }
+
+    public void setStartPolitical(String startPolitical) {
+        this.startPolitical = startPolitical;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getPoliticalRemarks() {
+        return politicalRemarks;
+    }
+
+    public void setPoliticalRemarks(String politicalRemarks) {
+        this.politicalRemarks = politicalRemarks;
+    }
+}

+ 568 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/entity/PoliceProcessRecord.java

@@ -0,0 +1,568 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity;
+
+import com.jeeplus.core.persistence.ActEntity;
+
+/**
+ * 政策处理记录表
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 14:03
+ */
+public class PoliceProcessRecord extends ActEntity<PoliceProcessRecord> {
+    //储备项目基本信息
+    private String projectYear;             //项目年份
+    private String projectNature;           //项目性质
+    private String demandUnit;              //需求单位
+    private String district;                //区域
+    private String projectGroup;            //项目分组
+    private String reserveBatches;          //储备批次
+    private String blockSupply;             //供电区域
+    private String gridNumber;              //网格编号
+    private String cellNumber;              //单元格编号
+    private String projectReserveId;        //项目储备编号
+    private String projectName;             //项目名称
+    private String stateGridProjectCode;             //国网项目编码
+    private String stateGridProjectName;             //国网项目名称
+    private String constructionNecessityAndContent;           //建设必要性及内容
+    private String substationName;           //变电站名称
+    private String circuitName;              //线路名称
+    private String netRackProjectDivide;     //网架项目划分
+    private String requirementType;          //需求类型
+    private String projectType;              //项目类型
+    private String costEstimate;             //费用估算
+    private String remarks;                  //备注
+    //项目参建(单位)人员信息
+    private String implementBatch;           //初定实施批次
+    private String constructionUnit;        //初定施工单位
+    private String projectReleaseBatch;     //项目下达批次
+    private String ownerManager;            //业主项目经理
+    private String constructionManagementUnit;          //现场施工管理单位
+    private String dqProjectManager;          //施工项目经理(电气)
+    private String tjProjectManager;          //施工项目经理(土建)
+    //分包队伍
+    private String dqSubcontractingUnit;      //电气分包单位
+    private String dqContacts;                //电气联系人
+    private String tjSubcontractingUnit;      //土建分包单位
+    private String tjContacts;                //土建联系人
+    private String subpackageRemarks;         //分包队伍-备注
+    //项目工程量统计
+    private String civilEngineer;               //是否含土建
+    private String civilEngineerStatistic;      //土建工作量统计
+    private String poleWorkload;                //是否含立杆工作量
+    private String poleWorkloadStatistic;       //立杆工作量统计
+    private String statisticRemarks;            //立杆工作量统计-备注
+    //政处记录
+    private String serialNumber;                //序号
+    private String startPoliticalWork;          //是否启动政处工作
+    private String startPoliticalWork2;          //是否启动政处工作
+    private String startTime;                   //启动时间
+    private String startTime2;                   //启动时间
+    private String administrativeObject;        //政处对象
+    private String needCompensation;            //是否需赔付
+    private String compensationContent;         //赔付内容
+    private String compensationMoney;           //赔付金额
+    private String documentCommitTime;           //签字政处单据提交时间
+    private String financialPayment;            //是否财政付款
+    private String needSignContract;            //是否需签订合同
+    private String signContractTime;            //政处合同完成签订时间
+    private String weatherLoan;                 //是否借款
+    private String loanTime;                    //借款支付时间
+    private String completeFinancialReimbursement;    //是否完成财务报销
+    private String completeFinancialReimbursementTime;    //财务报销完成时间
+    private String possibleToEnterSite;         //是否可进场
+    private String possibleToEnterSiteTime;     //可进场日期
+    private String completeProcess;             //政处是否完成
+    private String negotiatingUnit;             //政处洽谈单位
+    private String coordinateUnit;             //政处配合单位
+    private String recordRemarks;               //政处记录-备注
+
+    public String getStartPoliticalWork2() {
+        return startPoliticalWork2;
+    }
+
+    public void setStartPoliticalWork2(String startPoliticalWork2) {
+        this.startPoliticalWork2 = startPoliticalWork2;
+    }
+
+    public String getStartTime2() {
+        return startTime2;
+    }
+
+    public void setStartTime2(String startTime2) {
+        this.startTime2 = startTime2;
+    }
+
+    public String getProjectYear() {
+        return projectYear;
+    }
+
+    public void setProjectYear(String projectYear) {
+        this.projectYear = projectYear;
+    }
+
+    public String getProjectNature() {
+        return projectNature;
+    }
+
+    public void setProjectNature(String projectNature) {
+        this.projectNature = projectNature;
+    }
+
+    public String getDemandUnit() {
+        return demandUnit;
+    }
+
+    public void setDemandUnit(String demandUnit) {
+        this.demandUnit = demandUnit;
+    }
+
+    public String getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(String district) {
+        this.district = district;
+    }
+
+    public String getProjectGroup() {
+        return projectGroup;
+    }
+
+    public void setProjectGroup(String projectGroup) {
+        this.projectGroup = projectGroup;
+    }
+
+    public String getReserveBatches() {
+        return reserveBatches;
+    }
+
+    public void setReserveBatches(String reserveBatches) {
+        this.reserveBatches = reserveBatches;
+    }
+
+    public String getBlockSupply() {
+        return blockSupply;
+    }
+
+    public void setBlockSupply(String blockSupply) {
+        this.blockSupply = blockSupply;
+    }
+
+    public String getGridNumber() {
+        return gridNumber;
+    }
+
+    public void setGridNumber(String gridNumber) {
+        this.gridNumber = gridNumber;
+    }
+
+    public String getCellNumber() {
+        return cellNumber;
+    }
+
+    public void setCellNumber(String cellNumber) {
+        this.cellNumber = cellNumber;
+    }
+
+    public String getProjectReserveId() {
+        return projectReserveId;
+    }
+
+    public void setProjectReserveId(String projectReserveId) {
+        this.projectReserveId = projectReserveId;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getStateGridProjectCode() {
+        return stateGridProjectCode;
+    }
+
+    public void setStateGridProjectCode(String stateGridProjectCode) {
+        this.stateGridProjectCode = stateGridProjectCode;
+    }
+
+    public String getStateGridProjectName() {
+        return stateGridProjectName;
+    }
+
+    public void setStateGridProjectName(String stateGridProjectName) {
+        this.stateGridProjectName = stateGridProjectName;
+    }
+
+    public String getConstructionNecessityAndContent() {
+        return constructionNecessityAndContent;
+    }
+
+    public void setConstructionNecessityAndContent(String constructionNecessityAndContent) {
+        this.constructionNecessityAndContent = constructionNecessityAndContent;
+    }
+
+    public String getSubstationName() {
+        return substationName;
+    }
+
+    public void setSubstationName(String substationName) {
+        this.substationName = substationName;
+    }
+
+    public String getCircuitName() {
+        return circuitName;
+    }
+
+    public void setCircuitName(String circuitName) {
+        this.circuitName = circuitName;
+    }
+
+    public String getNetRackProjectDivide() {
+        return netRackProjectDivide;
+    }
+
+    public void setNetRackProjectDivide(String netRackProjectDivide) {
+        this.netRackProjectDivide = netRackProjectDivide;
+    }
+
+    public String getRequirementType() {
+        return requirementType;
+    }
+
+    public void setRequirementType(String requirementType) {
+        this.requirementType = requirementType;
+    }
+
+    public String getProjectType() {
+        return projectType;
+    }
+
+    public void setProjectType(String projectType) {
+        this.projectType = projectType;
+    }
+
+    public String getCostEstimate() {
+        return costEstimate;
+    }
+
+    public void setCostEstimate(String costEstimate) {
+        this.costEstimate = costEstimate;
+    }
+
+    @Override
+    public String getRemarks() {
+        return remarks;
+    }
+
+    @Override
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getImplementBatch() {
+        return implementBatch;
+    }
+
+    public void setImplementBatch(String implementBatch) {
+        this.implementBatch = implementBatch;
+    }
+
+    public String getConstructionUnit() {
+        return constructionUnit;
+    }
+
+    public void setConstructionUnit(String constructionUnit) {
+        this.constructionUnit = constructionUnit;
+    }
+
+    public String getProjectReleaseBatch() {
+        return projectReleaseBatch;
+    }
+
+    public void setProjectReleaseBatch(String projectReleaseBatch) {
+        this.projectReleaseBatch = projectReleaseBatch;
+    }
+
+    public String getOwnerManager() {
+        return ownerManager;
+    }
+
+    public void setOwnerManager(String ownerManager) {
+        this.ownerManager = ownerManager;
+    }
+
+    public String getConstructionManagementUnit() {
+        return constructionManagementUnit;
+    }
+
+    public void setConstructionManagementUnit(String constructionManagementUnit) {
+        this.constructionManagementUnit = constructionManagementUnit;
+    }
+
+    public String getDqProjectManager() {
+        return dqProjectManager;
+    }
+
+    public void setDqProjectManager(String dqProjectManager) {
+        this.dqProjectManager = dqProjectManager;
+    }
+
+    public String getTjProjectManager() {
+        return tjProjectManager;
+    }
+
+    public void setTjProjectManager(String tjProjectManager) {
+        this.tjProjectManager = tjProjectManager;
+    }
+
+    public String getDqSubcontractingUnit() {
+        return dqSubcontractingUnit;
+    }
+
+    public void setDqSubcontractingUnit(String dqSubcontractingUnit) {
+        this.dqSubcontractingUnit = dqSubcontractingUnit;
+    }
+
+    public String getDqContacts() {
+        return dqContacts;
+    }
+
+    public void setDqContacts(String dqContacts) {
+        this.dqContacts = dqContacts;
+    }
+
+    public String getTjSubcontractingUnit() {
+        return tjSubcontractingUnit;
+    }
+
+    public void setTjSubcontractingUnit(String tjSubcontractingUnit) {
+        this.tjSubcontractingUnit = tjSubcontractingUnit;
+    }
+
+    public String getTjContacts() {
+        return tjContacts;
+    }
+
+    public void setTjContacts(String tjContacts) {
+        this.tjContacts = tjContacts;
+    }
+
+    public String getSubpackageRemarks() {
+        return subpackageRemarks;
+    }
+
+    public void setSubpackageRemarks(String subpackageRemarks) {
+        this.subpackageRemarks = subpackageRemarks;
+    }
+
+    public String getCivilEngineer() {
+        return civilEngineer;
+    }
+
+    public void setCivilEngineer(String civilEngineer) {
+        this.civilEngineer = civilEngineer;
+    }
+
+    public String getCivilEngineerStatistic() {
+        return civilEngineerStatistic;
+    }
+
+    public void setCivilEngineerStatistic(String civilEngineerStatistic) {
+        this.civilEngineerStatistic = civilEngineerStatistic;
+    }
+
+    public String getPoleWorkload() {
+        return poleWorkload;
+    }
+
+    public void setPoleWorkload(String poleWorkload) {
+        this.poleWorkload = poleWorkload;
+    }
+
+    public String getPoleWorkloadStatistic() {
+        return poleWorkloadStatistic;
+    }
+
+    public void setPoleWorkloadStatistic(String poleWorkloadStatistic) {
+        this.poleWorkloadStatistic = poleWorkloadStatistic;
+    }
+
+    public String getStatisticRemarks() {
+        return statisticRemarks;
+    }
+
+    public void setStatisticRemarks(String statisticRemarks) {
+        this.statisticRemarks = statisticRemarks;
+    }
+
+    public String getSerialNumber() {
+        return serialNumber;
+    }
+
+    public void setSerialNumber(String serialNumber) {
+        this.serialNumber = serialNumber;
+    }
+
+    public String getStartPoliticalWork() {
+        return startPoliticalWork;
+    }
+
+    public void setStartPoliticalWork(String startPoliticalWork) {
+        this.startPoliticalWork = startPoliticalWork;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getAdministrativeObject() {
+        return administrativeObject;
+    }
+
+    public void setAdministrativeObject(String administrativeObject) {
+        this.administrativeObject = administrativeObject;
+    }
+
+    public String getNeedCompensation() {
+        return needCompensation;
+    }
+
+    public void setNeedCompensation(String needCompensation) {
+        this.needCompensation = needCompensation;
+    }
+
+    public String getCompensationContent() {
+        return compensationContent;
+    }
+
+    public void setCompensationContent(String compensationContent) {
+        this.compensationContent = compensationContent;
+    }
+
+    public String getCompensationMoney() {
+        return compensationMoney;
+    }
+
+    public void setCompensationMoney(String compensationMoney) {
+        this.compensationMoney = compensationMoney;
+    }
+
+    public String getDocumentCommitTime() {
+        return documentCommitTime;
+    }
+
+    public void setDocumentCommitTime(String documentCommitTime) {
+        this.documentCommitTime = documentCommitTime;
+    }
+
+    public String getFinancialPayment() {
+        return financialPayment;
+    }
+
+    public void setFinancialPayment(String financialPayment) {
+        this.financialPayment = financialPayment;
+    }
+
+    public String getNeedSignContract() {
+        return needSignContract;
+    }
+
+    public void setNeedSignContract(String needSignContract) {
+        this.needSignContract = needSignContract;
+    }
+
+    public String getSignContractTime() {
+        return signContractTime;
+    }
+
+    public void setSignContractTime(String signContractTime) {
+        this.signContractTime = signContractTime;
+    }
+
+    public String getWeatherLoan() {
+        return weatherLoan;
+    }
+
+    public void setWeatherLoan(String weatherLoan) {
+        this.weatherLoan = weatherLoan;
+    }
+
+    public String getLoanTime() {
+        return loanTime;
+    }
+
+    public void setLoanTime(String loanTime) {
+        this.loanTime = loanTime;
+    }
+
+    public String getCompleteFinancialReimbursement() {
+        return completeFinancialReimbursement;
+    }
+
+    public void setCompleteFinancialReimbursement(String completeFinancialReimbursement) {
+        this.completeFinancialReimbursement = completeFinancialReimbursement;
+    }
+
+    public String getCompleteFinancialReimbursementTime() {
+        return completeFinancialReimbursementTime;
+    }
+
+    public void setCompleteFinancialReimbursementTime(String completeFinancialReimbursementTime) {
+        this.completeFinancialReimbursementTime = completeFinancialReimbursementTime;
+    }
+
+    public String getPossibleToEnterSite() {
+        return possibleToEnterSite;
+    }
+
+    public void setPossibleToEnterSite(String possibleToEnterSite) {
+        this.possibleToEnterSite = possibleToEnterSite;
+    }
+
+    public String getPossibleToEnterSiteTime() {
+        return possibleToEnterSiteTime;
+    }
+
+    public void setPossibleToEnterSiteTime(String possibleToEnterSiteTime) {
+        this.possibleToEnterSiteTime = possibleToEnterSiteTime;
+    }
+
+    public String getCompleteProcess() {
+        return completeProcess;
+    }
+
+    public void setCompleteProcess(String completeProcess) {
+        this.completeProcess = completeProcess;
+    }
+
+    public String getNegotiatingUnit() {
+        return negotiatingUnit;
+    }
+
+    public void setNegotiatingUnit(String negotiatingUnit) {
+        this.negotiatingUnit = negotiatingUnit;
+    }
+
+    public String getCoordinateUnit() {
+        return coordinateUnit;
+    }
+
+    public void setCoordinateUnit(String coordinateUnit) {
+        this.coordinateUnit = coordinateUnit;
+    }
+
+    public String getRecordRemarks() {
+        return recordRemarks;
+    }
+
+    public void setRecordRemarks(String recordRemarks) {
+        this.recordRemarks = recordRemarks;
+    }
+}

+ 568 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/entity/PoliceProcessSchedule.java

@@ -0,0 +1,568 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity;
+
+import com.jeeplus.core.persistence.ActEntity;
+
+/**
+ * 政策处理进度表
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 13:33
+ */
+public class PoliceProcessSchedule extends ActEntity<PoliceProcessSchedule> {
+
+    private String projectYear;             //项目年份
+    private String projectNature;           //项目性质
+    private String demandUnit;              //需求单位
+    private String district;                //区域
+    private String projectGroup;            //项目分组
+    private String reserveBatches;          //储备批次
+    private String blockSupply;             //供电区域
+    private String gridNumber;              //网格编号
+    private String cellNumber;              //单元格编号
+    private String projectReserveId;        //项目储备编号
+    private String projectName;             //项目名称
+    private String stateGridProjectCode;             //国网项目编码
+    private String stateGridProjectName;             //国网项目名称
+    private String constructionNecessityAndContent;           //建设必要性及内容
+    private String substationName;           //变电站名称
+    private String circuitName;              //线路名称
+    private String netRackProjectDivide;     //网架项目划分
+    private String requirementType;          //需求类型
+    private String projectType;              //项目类型
+    private String costEstimate;             //费用估算
+    private String remarks;                  //备注
+    //项目参建(单位)人员信息
+    private String implementBatch;           //初定实施批次
+    private String constructionUnit;        //初定施工单位
+    private String projectReleaseBatch;     //项目下达批次
+    private String ownerManager;            //业主项目经理
+    private String ConstructionManagementUnit;          //现场施工管理单位
+    private String dqProjectManager;          //施工项目经理(电气)
+    private String tjProjectManager;          //施工项目经理(土建)
+    //分包队伍
+    private String dqSubcontractingUnit;      //电气分包单位
+    private String dqContacts;                //电气联系人
+    private String tjSubcontractingUnit;      //土建分包单位
+    private String tjContacts;                //土建联系人
+    private String subpackageRemarks;         //分包队伍-备注
+    //项目工程量统计
+    private String civilEngineer;              //是否含土建
+    private String civilEngineerStatistic;     //土建工作量统计
+    private String poleWorkload;           //是否含立杆工作量
+    private String poleWorkloadStatistic;    //立杆工作量统计
+    private String statisticRemarks;         //立杆工作量统计-备注
+    //政处基本信息
+    private String powerStationJurisdiction;        //供电所辖区
+    private String constructionLocation;            //施工地点
+    private String whetherExitPolitical;            //是否存在政处
+    private String politicalType;                   //政处类型
+    private String politicalDescribe;               //政处描述
+    private String politicalDifficulty;             //政处难度
+    private String whetherReport;                   //是否需规划报批
+    private String safetyProcedures;                //是否需办理安评手续
+    private String aviationReviewProcedures;        //是否需办理航评手续
+    private String startPolitical;                  //是否启动政处
+    private String startTime;                       //启动时间
+    private String politicalRemarks;                //政处备注
+    //政处进度表
+    private String projectScheduleNum;              //该项目政处数量
+    private String scheduleNumDescription;          //政处对象描述
+    private String planApprovalCompletion;          //规划报批完成情况
+    private String safetyCompletion;                //安评完成情况
+    private String hongpingCompletion;              //洪评完成情况
+    private String administrativeProgress;          //政处进度
+    private String entryAllowed;                    //是否允许进场
+    private String entryAllowedTime;                //允许进场日期
+    private String designChangeRequired;            //是否需设计变更
+    private String designChangeState;               //设计变更状态
+    private String scheduleRemarks;                 //政处进度表-备注
+
+
+    public String getProjectYear() {
+        return projectYear;
+    }
+
+    public void setProjectYear(String projectYear) {
+        this.projectYear = projectYear;
+    }
+
+    public String getProjectNature() {
+        return projectNature;
+    }
+
+    public void setProjectNature(String projectNature) {
+        this.projectNature = projectNature;
+    }
+
+    public String getDemandUnit() {
+        return demandUnit;
+    }
+
+    public void setDemandUnit(String demandUnit) {
+        this.demandUnit = demandUnit;
+    }
+
+    public String getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(String district) {
+        this.district = district;
+    }
+
+    public String getProjectGroup() {
+        return projectGroup;
+    }
+
+    public void setProjectGroup(String projectGroup) {
+        this.projectGroup = projectGroup;
+    }
+
+    public String getReserveBatches() {
+        return reserveBatches;
+    }
+
+    public void setReserveBatches(String reserveBatches) {
+        this.reserveBatches = reserveBatches;
+    }
+
+    public String getBlockSupply() {
+        return blockSupply;
+    }
+
+    public void setBlockSupply(String blockSupply) {
+        this.blockSupply = blockSupply;
+    }
+
+    public String getGridNumber() {
+        return gridNumber;
+    }
+
+    public void setGridNumber(String gridNumber) {
+        this.gridNumber = gridNumber;
+    }
+
+    public String getCellNumber() {
+        return cellNumber;
+    }
+
+    public void setCellNumber(String cellNumber) {
+        this.cellNumber = cellNumber;
+    }
+
+    public String getProjectReserveId() {
+        return projectReserveId;
+    }
+
+    public void setProjectReserveId(String projectReserveId) {
+        this.projectReserveId = projectReserveId;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getStateGridProjectCode() {
+        return stateGridProjectCode;
+    }
+
+    public void setStateGridProjectCode(String stateGridProjectCode) {
+        this.stateGridProjectCode = stateGridProjectCode;
+    }
+
+    public String getStateGridProjectName() {
+        return stateGridProjectName;
+    }
+
+    public void setStateGridProjectName(String stateGridProjectName) {
+        this.stateGridProjectName = stateGridProjectName;
+    }
+
+    public String getConstructionNecessityAndContent() {
+        return constructionNecessityAndContent;
+    }
+
+    public void setConstructionNecessityAndContent(String constructionNecessityAndContent) {
+        this.constructionNecessityAndContent = constructionNecessityAndContent;
+    }
+
+    public String getSubstationName() {
+        return substationName;
+    }
+
+    public void setSubstationName(String substationName) {
+        this.substationName = substationName;
+    }
+
+    public String getCircuitName() {
+        return circuitName;
+    }
+
+    public void setCircuitName(String circuitName) {
+        this.circuitName = circuitName;
+    }
+
+    public String getNetRackProjectDivide() {
+        return netRackProjectDivide;
+    }
+
+    public void setNetRackProjectDivide(String netRackProjectDivide) {
+        this.netRackProjectDivide = netRackProjectDivide;
+    }
+
+    public String getRequirementType() {
+        return requirementType;
+    }
+
+    public void setRequirementType(String requirementType) {
+        this.requirementType = requirementType;
+    }
+
+    public String getProjectType() {
+        return projectType;
+    }
+
+    public void setProjectType(String projectType) {
+        this.projectType = projectType;
+    }
+
+    public String getCostEstimate() {
+        return costEstimate;
+    }
+
+    public void setCostEstimate(String costEstimate) {
+        this.costEstimate = costEstimate;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getImplementBatch() {
+        return implementBatch;
+    }
+
+    public void setImplementBatch(String implementBatch) {
+        this.implementBatch = implementBatch;
+    }
+
+    public String getConstructionUnit() {
+        return constructionUnit;
+    }
+
+    public void setConstructionUnit(String constructionUnit) {
+        this.constructionUnit = constructionUnit;
+    }
+
+    public String getProjectReleaseBatch() {
+        return projectReleaseBatch;
+    }
+
+    public void setProjectReleaseBatch(String projectReleaseBatch) {
+        this.projectReleaseBatch = projectReleaseBatch;
+    }
+
+    public String getOwnerManager() {
+        return ownerManager;
+    }
+
+    public void setOwnerManager(String ownerManager) {
+        this.ownerManager = ownerManager;
+    }
+
+    public String getConstructionManagementUnit() {
+        return ConstructionManagementUnit;
+    }
+
+    public void setConstructionManagementUnit(String constructionManagementUnit) {
+        ConstructionManagementUnit = constructionManagementUnit;
+    }
+
+    public String getDqProjectManager() {
+        return dqProjectManager;
+    }
+
+    public void setDqProjectManager(String dqProjectManager) {
+        this.dqProjectManager = dqProjectManager;
+    }
+
+    public String getTjProjectManager() {
+        return tjProjectManager;
+    }
+
+    public void setTjProjectManager(String tjProjectManager) {
+        this.tjProjectManager = tjProjectManager;
+    }
+
+    public String getDqSubcontractingUnit() {
+        return dqSubcontractingUnit;
+    }
+
+    public void setDqSubcontractingUnit(String dqSubcontractingUnit) {
+        this.dqSubcontractingUnit = dqSubcontractingUnit;
+    }
+
+    public String getDqContacts() {
+        return dqContacts;
+    }
+
+    public void setDqContacts(String dqContacts) {
+        this.dqContacts = dqContacts;
+    }
+
+    public String getTjSubcontractingUnit() {
+        return tjSubcontractingUnit;
+    }
+
+    public void setTjSubcontractingUnit(String tjSubcontractingUnit) {
+        this.tjSubcontractingUnit = tjSubcontractingUnit;
+    }
+
+    public String getTjContacts() {
+        return tjContacts;
+    }
+
+    public void setTjContacts(String tjContacts) {
+        this.tjContacts = tjContacts;
+    }
+
+    public String getSubpackageRemarks() {
+        return subpackageRemarks;
+    }
+
+    public void setSubpackageRemarks(String subpackageRemarks) {
+        this.subpackageRemarks = subpackageRemarks;
+    }
+
+    public String getCivilEngineer() {
+        return civilEngineer;
+    }
+
+    public void setCivilEngineer(String civilEngineer) {
+        this.civilEngineer = civilEngineer;
+    }
+
+    public String getCivilEngineerStatistic() {
+        return civilEngineerStatistic;
+    }
+
+    public void setCivilEngineerStatistic(String civilEngineerStatistic) {
+        this.civilEngineerStatistic = civilEngineerStatistic;
+    }
+
+    public String getPoleWorkload() {
+        return poleWorkload;
+    }
+
+    public void setPoleWorkload(String poleWorkload) {
+        this.poleWorkload = poleWorkload;
+    }
+
+    public String getPoleWorkloadStatistic() {
+        return poleWorkloadStatistic;
+    }
+
+    public void setPoleWorkloadStatistic(String poleWorkloadStatistic) {
+        this.poleWorkloadStatistic = poleWorkloadStatistic;
+    }
+
+    public String getStatisticRemarks() {
+        return statisticRemarks;
+    }
+
+    public void setStatisticRemarks(String statisticRemarks) {
+        this.statisticRemarks = statisticRemarks;
+    }
+
+    public String getPowerStationJurisdiction() {
+        return powerStationJurisdiction;
+    }
+
+    public void setPowerStationJurisdiction(String powerStationJurisdiction) {
+        this.powerStationJurisdiction = powerStationJurisdiction;
+    }
+
+    public String getConstructionLocation() {
+        return constructionLocation;
+    }
+
+    public void setConstructionLocation(String constructionLocation) {
+        this.constructionLocation = constructionLocation;
+    }
+
+    public String getWhetherExitPolitical() {
+        return whetherExitPolitical;
+    }
+
+    public void setWhetherExitPolitical(String whetherExitPolitical) {
+        this.whetherExitPolitical = whetherExitPolitical;
+    }
+
+    public String getPoliticalType() {
+        return politicalType;
+    }
+
+    public void setPoliticalType(String politicalType) {
+        this.politicalType = politicalType;
+    }
+
+    public String getPoliticalDescribe() {
+        return politicalDescribe;
+    }
+
+    public void setPoliticalDescribe(String politicalDescribe) {
+        this.politicalDescribe = politicalDescribe;
+    }
+
+    public String getPoliticalDifficulty() {
+        return politicalDifficulty;
+    }
+
+    public void setPoliticalDifficulty(String politicalDifficulty) {
+        this.politicalDifficulty = politicalDifficulty;
+    }
+
+    public String getWhetherReport() {
+        return whetherReport;
+    }
+
+    public void setWhetherReport(String whetherReport) {
+        this.whetherReport = whetherReport;
+    }
+
+    public String getSafetyProcedures() {
+        return safetyProcedures;
+    }
+
+    public void setSafetyProcedures(String safetyProcedures) {
+        this.safetyProcedures = safetyProcedures;
+    }
+
+    public String getAviationReviewProcedures() {
+        return aviationReviewProcedures;
+    }
+
+    public void setAviationReviewProcedures(String aviationReviewProcedures) {
+        this.aviationReviewProcedures = aviationReviewProcedures;
+    }
+
+    public String getStartPolitical() {
+        return startPolitical;
+    }
+
+    public void setStartPolitical(String startPolitical) {
+        this.startPolitical = startPolitical;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getPoliticalRemarks() {
+        return politicalRemarks;
+    }
+
+    public void setPoliticalRemarks(String politicalRemarks) {
+        this.politicalRemarks = politicalRemarks;
+    }
+
+    public String getProjectScheduleNum() {
+        return projectScheduleNum;
+    }
+
+    public void setProjectScheduleNum(String projectScheduleNum) {
+        this.projectScheduleNum = projectScheduleNum;
+    }
+
+    public String getScheduleNumDescription() {
+        return scheduleNumDescription;
+    }
+
+    public void setScheduleNumDescription(String scheduleNumDescription) {
+        this.scheduleNumDescription = scheduleNumDescription;
+    }
+
+    public String getPlanApprovalCompletion() {
+        return planApprovalCompletion;
+    }
+
+    public void setPlanApprovalCompletion(String planApprovalCompletion) {
+        this.planApprovalCompletion = planApprovalCompletion;
+    }
+
+    public String getSafetyCompletion() {
+        return safetyCompletion;
+    }
+
+    public void setSafetyCompletion(String safetyCompletion) {
+        this.safetyCompletion = safetyCompletion;
+    }
+
+    public String getHongpingCompletion() {
+        return hongpingCompletion;
+    }
+
+    public void setHongpingCompletion(String hongpingCompletion) {
+        this.hongpingCompletion = hongpingCompletion;
+    }
+
+    public String getAdministrativeProgress() {
+        return administrativeProgress;
+    }
+
+    public void setAdministrativeProgress(String administrativeProgress) {
+        this.administrativeProgress = administrativeProgress;
+    }
+
+    public String getEntryAllowed() {
+        return entryAllowed;
+    }
+
+    public void setEntryAllowed(String entryAllowed) {
+        this.entryAllowed = entryAllowed;
+    }
+
+    public String getEntryAllowedTime() {
+        return entryAllowedTime;
+    }
+
+    public void setEntryAllowedTime(String entryAllowedTime) {
+        this.entryAllowedTime = entryAllowedTime;
+    }
+
+    public String getDesignChangeRequired() {
+        return designChangeRequired;
+    }
+
+    public void setDesignChangeRequired(String designChangeRequired) {
+        this.designChangeRequired = designChangeRequired;
+    }
+
+    public String getDesignChangeState() {
+        return designChangeState;
+    }
+
+    public void setDesignChangeState(String designChangeState) {
+        this.designChangeState = designChangeState;
+    }
+
+    public String getScheduleRemarks() {
+        return scheduleRemarks;
+    }
+
+    public void setScheduleRemarks(String scheduleRemarks) {
+        this.scheduleRemarks = scheduleRemarks;
+    }
+}

+ 85 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/PoliceProcessBaseMapper.java

@@ -0,0 +1,85 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessBase;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 15:51
+ */
+@MyBatisMapper
+public interface PoliceProcessBaseMapper extends BaseMapper<PoliceProcessBase> {
+
+    /**
+     * 根据项目储备编号查数据
+     * @param reserveId
+     * @return
+     */
+    PoliceProcessBase getByReserveId(String reserveId);
+
+    /**
+     * 批量添加政策处理基本信息
+     * @param list
+     * @return
+     */
+    void insertList(@Param("list") List<PoliceProcessBase> list);
+
+    /**
+     * 根据项目储备编号删除政策处理基本信息
+     * @param projectReserveId
+     */
+    void deleteByProjectReserveId(String projectReserveId);
+
+    /**
+     * 根据项目储备id查询政策处理基本信息
+     * @param reserveManagement
+     * @return
+     */
+    PoliceProcessBase queryByProjectReserveId(PoliceProcessBase reserveManagement);
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    List<String> getAllProId();
+
+    /**
+     * 从基本数据表中获取所有的  项目储备编号
+     * @return
+     */
+    List<String> getAllProId2();
+
+    /**
+     * 导出数据查询
+     * @param reserveManagement
+     * @return
+     */
+    List<PoliceProcessBase> exportFindList(PoliceProcessBase reserveManagement);
+
+    /**
+     * 根据projectReserveId查出proc_ins_id
+     * @param projectReserveId
+     * @return
+     */
+    String getByProjectReserveId(String projectReserveId);
+
+    /**
+     * 根据executeId查出历史节点信息
+     * @param executeId
+     * @return
+     */
+    List<History> getHistoryByExecuteId(String executeId);
+
+    /**
+     * 根据executeId查出当前节点的名称
+     * @param executeId
+     * @return
+     */
+    String getByExecuteId(String executeId);
+}

+ 98 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/PoliceProcessRecordMapper.java

@@ -0,0 +1,98 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 15:45
+ */
+@MyBatisMapper
+public interface PoliceProcessRecordMapper extends BaseMapper<PoliceProcessRecord> {
+
+    /**
+     * 根据项目储备编号查数据
+     * @param reserveId
+     * @return
+     */
+    PoliceProcessRecord getByReserveId(String reserveId);
+
+    /**
+     * 批量添加政策处理基本信息
+     * @param list
+     * @return
+     */
+    void insertList(@Param("list") List<PoliceProcessRecord> list);
+
+    /**
+     * 根据项目储备编号删除政策处理基本信息
+     * @param projectReserveId
+     */
+    void deleteByProjectReserveId(String projectReserveId);
+
+    /**
+     * 根据项目储备id查询政策处理基本信息
+     * @param reserveManagement
+     * @return
+     */
+    PoliceProcessRecord queryByProjectReserveId(PoliceProcessRecord reserveManagement);
+
+    PoliceProcessRecord get(@Param("id")String id, @Param("serialNumber") String serialNumber);
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    List<String> getAllProId();
+
+    /**
+     * 从基本数据表中获取所有的  项目储备编号
+     * @return
+     */
+    List<String> getAllProId2();
+
+    /**
+     * 导出数据查询
+     * @param reserveManagement
+     * @return
+     */
+    List<PoliceProcessRecord> exportFindList(PoliceProcessRecord reserveManagement);
+
+    /**
+     * 根据projectReserveId查出proc_ins_id
+     * @param projectReserveId
+     * @return
+     */
+    String getByProjectReserveId(String projectReserveId);
+
+    /**
+     * 根据executeId查出历史节点信息
+     * @param executeId
+     * @return
+     */
+    List<History> getHistoryByExecuteId(String executeId);
+
+    /**
+     * 根据executeId查出当前节点的名称
+     * @param executeId
+     * @return
+     */
+    String getByExecuteId(String executeId);
+
+    /**
+     * 根据项目储备编号与序号查相关数据
+     * @param projectReserveId
+     * @param serialNumber
+     * @return
+     */
+    PoliceProcessRecord getInfoByReserveIdAndNum(@Param("projectReserveId")String projectReserveId, @Param("serialNumber") String serialNumber);
+
+
+    List<String> getSerialNumByReserveId(@Param("projectReserveId")String projectReserveId);
+}

+ 92 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/PoliceProcessScheduleMapper.java

@@ -0,0 +1,92 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessSchedule;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 政策处理进度表 mapper
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 15:37
+ */
+@MyBatisMapper
+public interface PoliceProcessScheduleMapper extends BaseMapper<PoliceProcessSchedule> {
+
+    /**
+     * 根据项目储备编号查数据
+     * @param reserveId
+     * @return
+     */
+    PoliceProcessSchedule getByReserveId(String reserveId);
+
+    /**
+     * 批量添加政策处理基本信息
+     * @param list
+     * @return
+     */
+    void insertList(@Param("list") List<PoliceProcessSchedule> list);
+
+    /**
+     * 根据项目储备编号删除政策处理基本信息
+     * @param projectReserveId
+     */
+    void deleteByProjectReserveId(String projectReserveId);
+
+    /**
+     * 根据项目储备id查询政策处理基本信息
+     * @param reserveManagement
+     * @return
+     */
+    PoliceProcessSchedule queryByProjectReserveId(PoliceProcessSchedule reserveManagement);
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    List<String> getAllProId();
+
+    /**
+     * 从基本数据表中获取所有的  项目储备编号
+     * @return
+     */
+    List<String> getAllProId2();
+
+    /**
+     * 导出数据查询
+     * @param reserveManagement
+     * @return
+     */
+    List<PoliceProcessSchedule> exportFindList(PoliceProcessSchedule reserveManagement);
+
+    /**
+     * 根据projectReserveId查出proc_ins_id
+     * @param projectReserveId
+     * @return
+     */
+    String getByProjectReserveId(String projectReserveId);
+
+    /**
+     * 根据executeId查出历史节点信息
+     * @param executeId
+     * @return
+     */
+    List<History> getHistoryByExecuteId(String executeId);
+
+    /**
+     * 根据executeId查出当前节点的名称
+     * @param executeId
+     * @return
+     */
+    String getByExecuteId(String executeId);
+
+    List<String> getInfoByProReserveId(String projectReserveId);
+
+    List<String> getJcInfoByProReserveId(String projectReserveId);
+
+    String getDateValByProReserveId(String projectReserveId);
+}

+ 288 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/xml/PoliceProcessBaseMapper.xml

@@ -0,0 +1,288 @@
+<?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.cg.reservemanagementcenter.policyProcess.mapper.PoliceProcessBaseMapper">
+
+    <sql id="safeColumns">
+        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.del_flag AS "delFlag",
+        a.powerStationJurisdiction,
+        a.projectReserveId,
+        a.constructionLocation,
+        a.whetherExitPolitical,
+        a.politicalType,
+        a.politicalDescribe,
+        a.politicalDifficulty,
+        a.whetherReport,
+        a.safetyProcedures,
+        a.aviationReviewProcedures,
+        a.startPolitical,
+        a.startTime,
+        a.politicalRemarks
+
+    </sql>
+
+    <sql id="reserveManagementColumns">
+        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.del_flag AS "delFlag",
+		a.projectYear,
+		tv.projectNatureArtificial AS projectNature,
+		a.demandUnit,
+		a.district,
+		a.projectGroup,
+		a.ownerReserveProjectManagre as projectManager,
+		a.reserveBatches,
+		a.blockSupply,
+		a.gridNumber,
+		a.cellNumber,
+		a.projectReserveId,
+		a.projectName,
+		a.constructionNecessityAndContent,
+		a.substationName,
+		a.circuitName,
+		a.netRackProjectDivide,
+		a.requirementType,
+		a.costEstimate,
+		a.basicRemarks as remarks,
+		IFNULL(b.powerStationJurisdiction,"") as powerStationJurisdiction,
+		IFNULL(b.constructionLocation,"") as constructionLocation,
+		IFNULL(b.whetherExitPolitical,"") as whetherExitPolitical,
+		IFNULL(b.politicalType,"") as politicalType,
+		IFNULL(b.politicalDescribe,"") as politicalDescribe,
+		IFNULL(b.politicalDifficulty,"") as politicalDifficulty,
+		IFNULL(b.whetherReport,"") as whetherReport,
+		IFNULL(b.safetyProcedures,"") as safetyProcedures,
+		IFNULL(b.aviationReviewProcedures,"") as aviationReviewProcedures,
+		IFNULL(b.startPolitical,"") as startPolitical,
+		IFNULL(b.startTime,"") as startTime,
+		IFNULL(b.politicalRemarks,"") as politicalRemarks,
+		IFNULL(c.implementPlan,"") as implementPlan,
+		IFNULL(c.implementBatchScreen,"") as implementBatch
+
+    </sql>
+
+    <insert id="insert">
+        insert into cg_reserve_police_process_base (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        projectReserveId,
+        powerStationJurisdiction,
+        constructionLocation,
+        whetherExitPolitical,
+        politicalType,
+        politicalDescribe,
+        politicalDifficulty,
+        whetherReport,
+        safetyProcedures,
+        aviationReviewProcedures,
+        startPolitical,
+        startTime,
+        politicalRemarks
+        )
+        values
+        (
+            #{id},
+            #{createBy.id},
+            #{createDate},
+            #{updateBy.id},
+            #{updateDate},
+            #{delFlag},
+            #{projectReserveId},
+            #{powerStationJurisdiction},
+            #{constructionLocation},
+            #{whetherExitPolitical},
+            #{politicalType},
+            #{politicalDescribe},
+            #{politicalDifficulty},
+            #{whetherReport},
+            #{safetyProcedures},
+            #{aviationReviewProcedures},
+            #{startPolitical},
+            #{startTime},
+            #{politicalRemarks}
+            )
+    </insert>
+
+    <insert id="insertList">
+        insert into cg_reserve_police_process_base (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        projectReserveId,
+        powerStationJurisdiction,
+        constructionLocation,
+        whetherExitPolitical,
+        politicalType,
+        politicalDescribe,
+        politicalDifficulty,
+        whetherReport,
+        safetyProcedures,
+        aviationReviewProcedures,
+        startPolitical,
+        startTime,
+        politicalRemarks
+        )
+        values
+        <foreach collection="list" item="item" index="index" separator="," >
+            (
+            #{item.id},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate},
+            #{item.delFlag},
+            #{item.projectReserveId},
+            #{item.powerStationJurisdiction},
+            #{item.constructionLocation},
+            #{item.whetherExitPolitical},
+            #{item.politicalType},
+            #{item.politicalDescribe},
+            #{item.politicalDifficulty},
+            #{item.whetherReport},
+            #{item.safetyProcedures},
+            #{item.aviationReviewProcedures},
+            #{item.startPolitical},
+            #{item.startTime},
+            #{item.politicalRemarks}
+            )
+        </foreach>
+    </insert>
+
+    <update id="update">
+		update
+        cg_reserve_police_process_base
+        set
+        update_by = #{updateBy.id},
+        update_date = #{updateDate},
+        powerStationJurisdiction = #{powerStationJurisdiction},
+        constructionLocation = #{constructionLocation},
+        whetherExitPolitical = #{whetherExitPolitical},
+        politicalType = #{politicalType},
+        politicalDescribe = #{politicalDescribe},
+        politicalDifficulty = #{politicalDifficulty},
+        whetherReport = #{whetherReport},
+        safetyProcedures = #{safetyProcedures},
+        aviationReviewProcedures = #{aviationReviewProcedures},
+        startPolitical = #{startPolitical},
+        startTime = #{startTime},
+        politicalRemarks = #{politicalRemarks}
+
+        where id = #{id}
+	</update>
+
+    <delete id="deleteByProjectReserveId">
+        delete from cg_reserve_police_process_base where projectReserveId = #{projectReserveId}
+    </delete>
+
+    <select id="queryByProjectReserveId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessBase">
+        select
+        <include refid="safeColumns"/>
+        from cg_reserve_police_process_base a
+        where a.projectReserveId = #{projectReserveId}
+    </select>
+
+    <select id="findList" resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessBase">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_police_process_base b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_project_screen c
+        on a.projectReserveId = c.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        <where>
+            a.del_flag = 0 and a.projectYear like concat(#{projectYear}, '%')
+            <if test="projectReserveId!=null and projectReserveId!=''">
+                and a.projectReserveId like concat('%', #{projectReserveId}, '%')
+            </if>
+            <if test="projectName!=null and projectName!=''">
+                and a.projectName like concat('%', #{projectName}, '%')
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                ${dataScope}
+            </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="get" resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessBase">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_police_process_base b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_project_screen c
+        on a.projectReserveId = c.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        where a.id = #{id}
+    </select>
+    <select id="getAllProId" resultType="java.lang.String">
+        select projectReserveId from cg_reserve_police_process_base
+    </select>
+    <select id="getAllProId2" resultType="java.lang.String">
+        select projectReserveId from cg_reserve_process
+    </select>
+    <select id="exportFindList"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessBase">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_police_process_base b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_project_screen c
+        on a.projectReserveId = c.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        <where>
+            a.del_flag = 0 and a.projectYear like concat(#{projectYear}, '%')
+            <if test="projectReserveId!=null and projectReserveId!=''">
+                and a.projectReserveId like concat('%', #{projectReserveId}, '%')
+            </if>
+            <if test="projectName!=null and projectName!=''">
+                and a.projectName like concat('%', #{projectName}, '%')
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                ${dataScope}
+            </if>
+        </where>
+        ORDER BY a.update_date DESC
+    </select>
+    <select id="getByProjectReserveId" resultType="java.lang.String">
+        SELECT proc_ins_id from cg_personnel_activiti where projectReserveId = #{projectReserveId}
+    </select>
+    <select id="getHistoryByExecuteId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History">
+        select ACT_NAME_ as name,START_TIME_ as startTime,END_TIME_ as endTime from act_hi_actinst
+        WHERE PROC_INST_ID_ = #{executeId} and ACT_NAME_ is not null ORDER BY startTime desc
+    </select>
+    <select id="getByExecuteId" resultType="java.lang.String">
+        SELECT  GROUP_CONCAT(NAME_ SEPARATOR ', ') as  NAME_ FROM `act_ru_task` WHERE PROC_INST_ID_ = #{executeId}
+    </select>
+    <select id="getByReserveId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessBase">
+        select
+        <include refid="safeColumns"/>
+        from cg_reserve_police_process_base a where a.projectReserveId = #{reserveId}
+    </select>
+</mapper>

+ 350 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/xml/PoliceProcessRecordMapper.xml

@@ -0,0 +1,350 @@
+<?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.cg.reservemanagementcenter.policyProcess.mapper.PoliceProcessRecordMapper">
+
+    <sql id="safeColumns">
+        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.del_flag AS "delFlag",
+        a.startTime,
+        a.administrativeObject,
+        a.needCompensation,
+        a.compensationMoney,
+        a.financialPayment,
+        a.needSignContract,
+        a.signContractTime,
+        a.weatherLoan,
+        a.loanTime,
+        a.completeFinancialReimbursement,
+        a.completeFinancialReimbursementTime,
+        a.possibleToEnterSite,
+        a.possibleToEnterSiteTime,
+        a.negotiatingUnit,
+        a.coordinateUnit,
+        a.recordRemarks,
+        a.serialNumber
+
+    </sql>
+
+    <sql id="reserveManagementColumns">
+        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.del_flag AS "delFlag",
+		a.projectYear,
+		tv.projectNatureArtificial AS projectNature,
+		a.demandUnit,
+		a.district,
+		a.projectGroup,
+		a.ownerReserveProjectManagre as projectManager,
+		a.reserveBatches,
+		a.blockSupply,
+		a.gridNumber,
+		a.cellNumber,
+		a.projectReserveId,
+		a.projectName,
+		a.constructionNecessityAndContent,
+		a.substationName,
+		a.circuitName,
+		a.netRackProjectDivide,
+		a.requirementType,
+		a.costEstimate,
+		a.basicRemarks as remarks,
+		IFNULL(b.startPoliticalWork,"") as startPoliticalWork,
+		IFNULL(b.serialNumber,"") as serialNumber,
+        IFNULL(b.startTime,"") as startTime,
+        IFNULL(b.administrativeObject,"") as administrativeObject,
+        IFNULL(b.needCompensation,"") as needCompensation,
+        IFNULL(b.compensationMoney,"") as compensationMoney,
+        IFNULL(b.financialPayment,"") as financialPayment,
+        IFNULL(b.needSignContract,"") as needSignContract,
+        IFNULL(b.signContractTime,"") as signContractTime,
+        IFNULL(b.weatherLoan,"") as weatherLoan,
+        IFNULL(b.loanTime,"") as loanTime,
+        IFNULL(b.completeFinancialReimbursement,"") as completeFinancialReimbursement,
+        IFNULL(b.completeFinancialReimbursementTime,"") as completeFinancialReimbursementTime,
+        IFNULL(b.possibleToEnterSite,"") as possibleToEnterSite,
+        IFNULL(b.possibleToEnterSiteTime,"") as possibleToEnterSiteTime,
+        IFNULL(b.negotiatingUnit,"") as negotiatingUnit,
+        IFNULL(b.coordinateUnit,"") as coordinateUnit,
+        IFNULL(b.recordRemarks,"") as recordRemarks,
+		IFNULL(c.implementPlan,"") as implementPlan,
+		IFNULL(c.implementBatchScreen,"") as implementBatch,
+		IFNULL(d.startPolitical,"") as startPoliticalWork2,
+		IFNULL(d.startTime,"") as startTime2
+
+    </sql>
+
+    <insert id="insert">
+        insert into cg_reserve_police_process_record (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        projectReserveId,
+        serialNumber,
+        startPoliticalWork,
+        startTime,
+        administrativeObject,
+        needCompensation,
+        compensationMoney,
+        financialPayment,
+        needSignContract,
+        signContractTime,
+        weatherLoan,
+        loanTime,
+        completeFinancialReimbursement,
+        completeFinancialReimbursementTime,
+        possibleToEnterSite,
+        possibleToEnterSiteTime,
+        negotiatingUnit,
+        coordinateUnit,
+        recordRemarks
+        )
+        values
+        (
+            #{id},
+            #{createBy.id},
+            #{createDate},
+            #{updateBy.id},
+            #{updateDate},
+            #{delFlag},
+            #{projectReserveId},
+            #{serialNumber},
+            #{startPoliticalWork},
+            #{startTime},
+            #{administrativeObject},
+            #{needCompensation},
+            #{compensationMoney},
+            #{financialPayment},
+            #{needSignContract},
+            #{signContractTime},
+            #{weatherLoan},
+            #{loanTime},
+            #{completeFinancialReimbursement},
+            #{completeFinancialReimbursementTime},
+            #{possibleToEnterSite},
+            #{possibleToEnterSiteTime},
+            #{negotiatingUnit},
+            #{coordinateUnit},
+            #{recordRemarks}
+            )
+    </insert>
+
+    <insert id="insertList">
+        insert into cg_reserve_police_process_record (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        projectReserveId,
+        serialNumber,
+        startPoliticalWork,
+        startTime,
+        administrativeObject,
+        needCompensation,
+        compensationMoney,
+        financialPayment,
+        needSignContract,
+        signContractTime,
+        weatherLoan,
+        loanTime,
+        completeFinancialReimbursement,
+        completeFinancialReimbursementTime,
+        possibleToEnterSite,
+        possibleToEnterSiteTime,
+        negotiatingUnit,
+        coordinateUnit,
+        recordRemarks
+        )
+        values
+        <foreach collection="list" item="item" index="index" separator="," >
+            (
+            #{item.id},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate},
+            #{item.delFlag},
+            #{item.projectReserveId},
+            #{item.serialNumber},
+            #{item.startPoliticalWork},
+            #{item.startTime},
+            #{item.administrativeObject},
+            #{item.needCompensation},
+            #{item.compensationMoney},
+            #{item.financialPayment},
+            #{item.needSignContract},
+            #{item.signContractTime},
+            #{item.weatherLoan},
+            #{item.loanTime},
+            #{item.completeFinancialReimbursement},
+            #{item.completeFinancialReimbursementTime},
+            #{item.possibleToEnterSite},
+            #{item.possibleToEnterSiteTime},
+            #{item.negotiatingUnit},
+            #{item.coordinateUnit},
+            #{item.recordRemarks}
+            )
+        </foreach>
+    </insert>
+
+    <update id="update">
+		update
+        cg_reserve_police_process_record
+        set
+        update_by = #{updateBy.id},
+        update_date = #{updateDate},
+        startPoliticalWork = #{startPoliticalWork},
+        startTime = #{startTime},
+        administrativeObject = #{administrativeObject},
+        needCompensation = #{needCompensation},
+        compensationMoney = #{compensationMoney},
+        financialPayment = #{financialPayment},
+        needSignContract = #{needSignContract},
+        signContractTime = #{signContractTime},
+        weatherLoan = #{weatherLoan},
+        loanTime = #{loanTime},
+        completeFinancialReimbursement = #{completeFinancialReimbursement},
+        completeFinancialReimbursementTime = #{completeFinancialReimbursementTime},
+        possibleToEnterSite = #{possibleToEnterSite},
+        possibleToEnterSiteTime = #{possibleToEnterSiteTime},
+        negotiatingUnit = #{negotiatingUnit},
+        coordinateUnit = #{coordinateUnit},
+        recordRemarks = #{recordRemarks}
+
+        where id = #{id}
+	</update>
+
+    <delete id="deleteByProjectReserveId">
+        delete from cg_reserve_police_process_record where projectReserveId = #{projectReserveId}
+    </delete>
+
+    <select id="queryByProjectReserveId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord">
+        select
+        <include refid="safeColumns"/>
+        from cg_reserve_police_process_record a
+        where a.projectReserveId = #{projectReserveId}
+    </select>
+
+    <select id="findList" resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_police_process_record b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_reserve_police_process_base d
+        on b.projectReserveId = d.projectReserveId
+        left join cg_project_screen c
+        on a.projectReserveId = c.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        <where>
+            a.del_flag = 0 and a.projectYear like concat(#{projectYear}, '%')
+            <if test="projectReserveId!=null and projectReserveId!=''">
+                and a.projectReserveId like concat('%', #{projectReserveId}, '%')
+            </if>
+            <if test="projectName!=null and projectName!=''">
+                and a.projectName like concat('%', #{projectName}, '%')
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                ${dataScope}
+            </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,b.serialNumber ASC
+            </otherwise>
+        </choose>
+    </select>
+
+    <select id="get" resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_police_process_record b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_reserve_police_process_base d
+        on b.projectReserveId = d.projectReserveId
+        left join cg_project_screen c
+        on a.projectReserveId = c.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        <where>
+            a.id = #{id}
+            <if test="serialNumber!=null and serialNumber!=''">
+                and b.serialNumber = #{serialNumber}
+            </if>
+        </where>
+    </select>
+    <select id="getAllProId" resultType="java.lang.String">
+        select projectReserveId from cg_reserve_police_process_record
+    </select>
+    <select id="getAllProId2" resultType="java.lang.String">
+        select projectReserveId from cg_reserve_process
+    </select>
+    <select id="exportFindList"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_police_process_record b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_reserve_police_process_base d
+        on b.projectReserveId = d.projectReserveId
+        left join cg_project_screen c
+        on a.projectReserveId = c.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        <where>
+            a.del_flag = 0 and a.projectYear like concat(#{projectYear}, '%')
+            <if test="projectReserveId!=null and projectReserveId!=''">
+                and a.projectReserveId like concat('%', #{projectReserveId}, '%')
+            </if>
+            <if test="projectName!=null and projectName!=''">
+                and a.projectName like concat('%', #{projectName}, '%')
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                ${dataScope}
+            </if>
+        </where>
+        ORDER BY a.update_date DESC,b.serialNumber ASC
+    </select>
+    <select id="getByProjectReserveId" resultType="java.lang.String">
+        SELECT proc_ins_id from cg_personnel_activiti where projectReserveId = #{projectReserveId}
+    </select>
+    <select id="getHistoryByExecuteId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History">
+        select ACT_NAME_ as name,START_TIME_ as startTime,END_TIME_ as endTime from act_hi_actinst
+        WHERE PROC_INST_ID_ = #{executeId} and ACT_NAME_ is not null ORDER BY startTime desc
+    </select>
+    <select id="getByExecuteId" resultType="java.lang.String">
+        SELECT  GROUP_CONCAT(NAME_ SEPARATOR ', ') as  NAME_ FROM `act_ru_task` WHERE PROC_INST_ID_ = #{executeId}
+    </select>
+    <select id="getByReserveId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord">
+        select
+        <include refid="safeColumns"/>
+        from cg_reserve_police_process_record a where a.projectReserveId = #{reserveId}
+    </select>
+    <select id="getInfoByReserveIdAndNum"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord">
+        select
+        <include refid="safeColumns"/>
+        from cg_reserve_police_process_record a where a.projectReserveId = #{projectReserveId} and a.serialNumber = #{serialNumber}
+    </select>
+    <select id="getSerialNumByReserveId" resultType="java.lang.String">
+        SELECT serialNumber FROM cg_reserve_police_process_record WHERE projectReserveId = #{projectReserveId}
+    </select>
+
+</mapper>

+ 393 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/mapper/xml/PoliceProcessScheduleMapper.xml

@@ -0,0 +1,393 @@
+<?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.cg.reservemanagementcenter.policyProcess.mapper.PoliceProcessScheduleMapper">
+
+    <sql id="safeColumns">
+        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.del_flag AS "delFlag",
+        a.projectReserveId,
+        a.designChangeRequired,
+        a.scheduleRemarks
+
+    </sql>
+
+    <sql id="reserveManagementColumns">
+        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.del_flag AS "delFlag",
+		a.projectYear,
+		tv.projectNatureArtificial AS projectNature,
+		a.demandUnit,
+		a.district,
+		a.projectGroup,
+		a.ownerReserveProjectManagre as projectManager,
+		a.reserveBatches,
+		a.blockSupply,
+		a.gridNumber,
+		a.cellNumber,
+		a.projectReserveId,
+		a.projectName,
+		a.constructionNecessityAndContent,
+		a.substationName,
+		a.circuitName,
+		a.netRackProjectDivide,
+		a.requirementType,
+		a.costEstimate,
+		a.basicRemarks as remarks,
+		IFNULL(b.designChangeRequired,"") as designChangeRequired,
+		IFNULL(b.scheduleRemarks,"") as scheduleRemarks,
+		IFNULL(c.powerStationJurisdiction,"") as powerStationJurisdiction,
+		IFNULL(c.constructionLocation,"") as constructionLocation,
+		IFNULL(c.whetherExitPolitical,"") as whetherExitPolitical,
+		IFNULL(c.politicalType,"") as politicalType,
+		IFNULL(c.politicalDescribe,"") as politicalDescribe,
+		IFNULL(c.politicalDifficulty,"") as politicalDifficulty,
+		IFNULL(c.whetherReport,"") as whetherReport,
+		IFNULL(c.safetyProcedures,"") as safetyProcedures,
+		IFNULL(c.aviationReviewProcedures,"") as aviationReviewProcedures,
+		IFNULL(c.startPolitical,"") as startPolitical,
+		IFNULL(c.startTime,"") as startTime,
+		IFNULL(c.politicalRemarks,"") as politicalRemarks,
+		IFNULL(d.serialNumber,"") as projectScheduleNum,
+		IFNULL(e.administrativeObject,"") as scheduleNumDescription,
+		IFNULL(f.planApprovalCompletion,"") as planApprovalCompletion,
+		IFNULL(g.safetyCompletion,"") as safetyCompletion,
+		IFNULL(h.hongpingCompletion,"") as hongpingCompletion
+
+    </sql>
+
+    <insert id="insert">
+        insert into cg_reserve_police_process_schedule (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        projectReserveId,
+        designChangeRequired,
+        scheduleRemarks
+        )
+        values
+        (
+            #{id},
+            #{createBy.id},
+            #{createDate},
+            #{updateBy.id},
+            #{updateDate},
+            #{delFlag},
+            #{projectReserveId},
+            #{designChangeRequired},
+            #{scheduleRemarks}
+            )
+    </insert>
+
+    <insert id="insertList">
+        insert into cg_reserve_police_process_schedule (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        projectReserveId,
+        designChangeRequired,
+        scheduleRemarks
+        )
+        values
+        <foreach collection="list" item="item" index="index" separator="," >
+            (
+            #{item.id},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate},
+            #{item.delFlag},
+            #{item.projectReserveId},
+            #{item.designChangeRequired},
+            #{item.scheduleRemarks}
+            )
+        </foreach>
+    </insert>
+
+    <update id="update">
+		update
+        cg_reserve_police_process_schedule
+        set
+        update_by = #{updateBy.id},
+        update_date = #{updateDate},
+        designChangeRequired = #{designChangeRequired},
+        scheduleRemarks = #{scheduleRemarks}
+        where id = #{id}
+	</update>
+
+    <delete id="deleteByProjectReserveId">
+        delete from cg_reserve_police_process_schedule where projectReserveId = #{projectReserveId}
+    </delete>
+
+    <select id="queryByProjectReserveId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessSchedule">
+        select
+        <include refid="safeColumns"/>
+        from cg_reserve_police_process_schedule a
+        where a.projectReserveId = #{projectReserveId}
+    </select>
+
+    <select id="findList" resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessSchedule">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_police_process_schedule b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        left join cg_reserve_police_process_base c
+        on a.projectReserveId = c.projectReserveId
+        left join (
+        SELECT projectReserveId,MAX(serialNumber) as serialNumber
+        FROM `cg_reserve_police_process_record` WHERE  <![CDATA[TRIM(serialNumber) <> '']]>  GROUP BY projectReserveId
+        ) d on a.projectReserveId = d.projectReserveId
+        left join (
+        SELECT GROUP_CONCAT(administrativeObject SEPARATOR ';') as administrativeObject,projectReserveId
+        FROM cg_reserve_police_process_record GROUP BY projectReserveId
+        ) e on a.projectReserveId = e.projectReserveId
+        left join (
+        SELECT projectReserveId,
+        case
+        when (serialNumber is null or serialNumber = '') Then '无'
+        when serialNumber = '1' and (needCompensation is null  or TRIM(needCompensation) = '') Then '未办理'
+        when serialNumber = '1' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement != '是' or
+        possibleToEnterSite != '是' Then '办理中'
+        when serialNumber = '1' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement = '是' and
+        possibleToEnterSite = '是'  Then '已完成'
+        ELSE '否'
+        END AS planApprovalCompletion
+        FROM `cg_reserve_police_process_record`
+        WHERE serialNumber = '1' GROUP BY projectReserveId
+        ) f on a.projectReserveId = f.projectReserveId
+        left join (
+        SELECT projectReserveId,
+        case
+        when (serialNumber is null or serialNumber = '') Then '无'
+        when serialNumber = '2' and (needCompensation is null  or TRIM(needCompensation) = '') Then '未办理'
+        when serialNumber = '2' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement != '是' or
+        possibleToEnterSite != '是' Then '办理中'
+        when serialNumber = '2' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement = '是' and
+        possibleToEnterSite = '是'  Then '已完成'
+        ELSE '否'
+        END AS safetyCompletion
+        FROM `cg_reserve_police_process_record`
+        WHERE serialNumber = '2' GROUP BY projectReserveId
+        ) g on a.projectReserveId = g.projectReserveId
+        left join (
+        SELECT projectReserveId,
+        case
+        when (serialNumber is null or serialNumber = '') Then '无'
+        when serialNumber = '3' and (needCompensation is null  or TRIM(needCompensation) = '') Then '未办理'
+        when serialNumber = '3' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement != '是' or
+        possibleToEnterSite != '是' Then '办理中'
+        when serialNumber = '3' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement = '是' and
+        possibleToEnterSite = '是'  Then '已完成'
+        ELSE '否'
+        END AS hongpingCompletion
+        FROM `cg_reserve_police_process_record`
+        WHERE serialNumber = '3' GROUP BY projectReserveId
+        ) h on a.projectReserveId = h.projectReserveId
+        <where>
+            a.del_flag = 0 and a.projectYear like concat(#{projectYear}, '%')
+            <if test="projectReserveId!=null and projectReserveId!=''">
+                and a.projectReserveId like concat('%', #{projectReserveId}, '%')
+            </if>
+            <if test="projectName!=null and projectName!=''">
+                and a.projectName like concat('%', #{projectName}, '%')
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                ${dataScope}
+            </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="get" resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessSchedule">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_police_process_schedule b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        left join cg_reserve_police_process_base c
+        on a.projectReserveId = c.projectReserveId
+        left join (
+        SELECT projectReserveId,MAX(serialNumber) as serialNumber
+        FROM `cg_reserve_police_process_record` WHERE  <![CDATA[TRIM(serialNumber) <> '']]>  GROUP BY projectReserveId
+        ) d on a.projectReserveId = d.projectReserveId
+        left join (
+        SELECT GROUP_CONCAT(administrativeObject SEPARATOR ';') as administrativeObject,projectReserveId
+        FROM cg_reserve_police_process_record GROUP BY projectReserveId
+        ) e on a.projectReserveId = e.projectReserveId
+        left join (
+        SELECT projectReserveId,
+        case
+        when (serialNumber is null or serialNumber = '') Then '无'
+        when serialNumber = '1' and (needCompensation is null  or TRIM(needCompensation) = '') Then '未办理'
+        when serialNumber = '1' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement != '是' or
+        possibleToEnterSite != '是' Then '办理中'
+        when serialNumber = '1' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement = '是' and
+        possibleToEnterSite = '是'  Then '已完成'
+        ELSE '否'
+        END AS planApprovalCompletion
+        FROM `cg_reserve_police_process_record`
+        WHERE serialNumber = '1' GROUP BY projectReserveId
+        ) f on a.projectReserveId = f.projectReserveId
+        left join (
+        SELECT projectReserveId,
+        case
+        when (serialNumber is null or serialNumber = '') Then '无'
+        when serialNumber = '2' and (needCompensation is null  or TRIM(needCompensation) = '') Then '未办理'
+        when serialNumber = '2' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement != '是' or
+        possibleToEnterSite != '是' Then '办理中'
+        when serialNumber = '2' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement = '是' and
+        possibleToEnterSite = '是'  Then '已完成'
+        ELSE '否'
+        END AS safetyCompletion
+        FROM `cg_reserve_police_process_record`
+        WHERE serialNumber = '2' GROUP BY projectReserveId
+        ) g on a.projectReserveId = g.projectReserveId
+        left join (
+        SELECT projectReserveId,
+        case
+        when (serialNumber is null or serialNumber = '') Then '无'
+        when serialNumber = '3' and (needCompensation is null  or TRIM(needCompensation) = '') Then '未办理'
+        when serialNumber = '3' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement != '是' or
+        possibleToEnterSite != '是' Then '办理中'
+        when serialNumber = '3' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement = '是' and
+        possibleToEnterSite = '是'  Then '已完成'
+        ELSE '否'
+        END AS hongpingCompletion
+        FROM `cg_reserve_police_process_record`
+        WHERE serialNumber = '3' GROUP BY projectReserveId
+        ) h on a.projectReserveId = h.projectReserveId
+        where a.id = #{id}
+    </select>
+    <select id="getAllProId" resultType="java.lang.String">
+        select projectReserveId from cg_reserve_police_process_schedule
+    </select>
+    <select id="getAllProId2" resultType="java.lang.String">
+        select projectReserveId from cg_reserve_process
+    </select>
+    <select id="exportFindList"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessSchedule">
+        select
+        <include refid="reserveManagementColumns"/>
+        from cg_reserve_process a
+        left join cg_reserve_police_process_schedule b
+        on a.projectReserveId = b.projectReserveId
+        left join cg_project_type_verificate tv on a.projectReserveId = tv.projectReserveId
+        left join cg_reserve_police_process_base c
+        on a.projectReserveId = c.projectReserveId
+        left join (
+        SELECT projectReserveId,MAX(serialNumber) as serialNumber
+        FROM `cg_reserve_police_process_record` WHERE  <![CDATA[TRIM(serialNumber) <> '']]>  GROUP BY projectReserveId
+        ) d on a.projectReserveId = d.projectReserveId
+        left join (
+        SELECT GROUP_CONCAT(administrativeObject SEPARATOR ';') as administrativeObject,projectReserveId
+        FROM cg_reserve_police_process_record GROUP BY projectReserveId
+        ) e on a.projectReserveId = e.projectReserveId
+        left join (
+        SELECT projectReserveId,
+        case
+        when (serialNumber is null or serialNumber = '') Then '无'
+        when serialNumber = '1' and (needCompensation is null  or TRIM(needCompensation) = '') Then '未办理'
+        when serialNumber = '1' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement != '是' or
+        possibleToEnterSite != '是' Then '办理中'
+        when serialNumber = '1' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement = '是' and
+        possibleToEnterSite = '是'  Then '已完成'
+        ELSE '否'
+        END AS planApprovalCompletion
+        FROM `cg_reserve_police_process_record`
+        WHERE serialNumber = '1' GROUP BY projectReserveId
+        ) f on a.projectReserveId = f.projectReserveId
+        left join (
+        SELECT projectReserveId,
+        case
+        when (serialNumber is null or serialNumber = '') Then '无'
+        when serialNumber = '2' and (needCompensation is null  or TRIM(needCompensation) = '') Then '未办理'
+        when serialNumber = '2' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement != '是' or
+        possibleToEnterSite != '是' Then '办理中'
+        when serialNumber = '2' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement = '是' and
+        possibleToEnterSite = '是'  Then '已完成'
+        ELSE '否'
+        END AS safetyCompletion
+        FROM `cg_reserve_police_process_record`
+        WHERE serialNumber = '2' GROUP BY projectReserveId
+        ) g on a.projectReserveId = g.projectReserveId
+        left join (
+        SELECT projectReserveId,
+        case
+        when (serialNumber is null or serialNumber = '') Then '无'
+        when serialNumber = '3' and (needCompensation is null  or TRIM(needCompensation) = '') Then '未办理'
+        when serialNumber = '3' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement != '是' or
+        possibleToEnterSite != '是' Then '办理中'
+        when serialNumber = '3' and (needCompensation is not null and <![CDATA[TRIM(needCompensation) <> '']]> ) and completeFinancialReimbursement = '是' and
+        possibleToEnterSite = '是'  Then '已完成'
+        ELSE '否'
+        END AS hongpingCompletion
+        FROM `cg_reserve_police_process_record`
+        WHERE serialNumber = '3' GROUP BY projectReserveId
+        ) h on a.projectReserveId = h.projectReserveId
+        <where>
+            a.del_flag = 0 and a.projectYear like concat(#{projectYear}, '%')
+            <if test="projectReserveId!=null and projectReserveId!=''">
+                and a.projectReserveId like concat('%', #{projectReserveId}, '%')
+            </if>
+            <if test="projectName!=null and projectName!=''">
+                and a.projectName like concat('%', #{projectName}, '%')
+            </if>
+            <if test="dataScope != null and dataScope != ''">
+                ${dataScope}
+            </if>
+        </where>
+        ORDER BY a.update_date DESC
+    </select>
+    <select id="getByProjectReserveId" resultType="java.lang.String">
+        SELECT proc_ins_id from cg_personnel_activiti where projectReserveId = #{projectReserveId}
+    </select>
+    <select id="getHistoryByExecuteId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History">
+        select ACT_NAME_ as name,START_TIME_ as startTime,END_TIME_ as endTime from act_hi_actinst
+        WHERE PROC_INST_ID_ = #{executeId} and ACT_NAME_ is not null ORDER BY startTime desc
+    </select>
+    <select id="getByExecuteId" resultType="java.lang.String">
+        SELECT  GROUP_CONCAT(NAME_ SEPARATOR ', ') as  NAME_ FROM `act_ru_task` WHERE PROC_INST_ID_ = #{executeId}
+    </select>
+    <select id="getByReserveId"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessSchedule">
+        select
+        <include refid="safeColumns"/>
+        from cg_reserve_police_process_schedule a where a.projectReserveId = #{reserveId}
+    </select>
+    <select id="getInfoByProReserveId" resultType="java.lang.String">
+        SELECT CONCAT(completeFinancialReimbursement, possibleToEnterSite) AS concatenatedValue FROM cg_reserve_police_process_record WHERE projectReserveId = #{projectReserveId}
+    </select>
+    <select id="getJcInfoByProReserveId" resultType="java.lang.String">
+         SELECT possibleToEnterSite FROM cg_reserve_police_process_record WHERE projectReserveId = #{projectReserveId}
+    </select>
+    <select id="getDateValByProReserveId" resultType="java.lang.String">
+        SELECT MAX(possibleToEnterSiteTime) AS latest_time
+        FROM cg_reserve_police_process_record
+        WHERE projectReserveId = #{projectReserveId};
+    </select>
+</mapper>

+ 120 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/service/PoliceProcessBaseService.java

@@ -0,0 +1,120 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.service;
+
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessBase;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.mapper.PoliceProcessBaseMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.util.*;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 15:52
+ */
+@Service
+@Transactional(readOnly = true)
+public class PoliceProcessBaseService extends CrudService<PoliceProcessBaseMapper, PoliceProcessBase> {
+
+    @Autowired
+    private PoliceProcessBaseMapper dao;
+
+    public PoliceProcessBase getByReserveId(String reserveId){
+        return dao.getByReserveId(reserveId);
+    }
+
+    public Page<PoliceProcessBase> findPage(Page<PoliceProcessBase> page, PoliceProcessBase reserveManagement) {
+        if (StringUtils.isBlank(reserveManagement.getProjectYear())){
+            reserveManagement.setProjectYear(LocalDate.now().getYear()+"");
+        }
+        Page<PoliceProcessBase> pageList = super.findPage(page, reserveManagement);
+        return pageList;
+    }
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    public List<String> getAllProId(){
+        return dao.getAllProId();
+    }
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    public List<String> getAllProId2(){
+        return dao.getAllProId2();
+    }
+
+    /**
+     * 查询已有的参数数据 并分类返回已存在数据和未存在数据
+     * @param reserveManagement
+     * @return
+     */
+    public Map<String, List<PoliceProcessBase>> getExistProjectList(List<PoliceProcessBase> reserveManagement){
+        Map<String,List<PoliceProcessBase>> map = new HashMap();
+        List<PoliceProcessBase> existReserveManagementList = new ArrayList<>();
+        Iterator<PoliceProcessBase> iterator = reserveManagement.iterator();
+        while (iterator.hasNext()) {
+            PoliceProcessBase rm = iterator.next();
+            //对数据进行处理
+            rm.preInsert();
+            PoliceProcessBase reserveManag = dao.queryByProjectReserveId(rm);
+            //数据库中已含有的数据在list中删除并创建一个list加入 区分为已存在数据
+            if (null != reserveManag) {
+                rm.setId(reserveManag.getId());
+                existReserveManagementList.add(rm);
+                iterator.remove();//使用迭代器删除已存在的数据
+            }
+        }
+        map.put("without",reserveManagement);
+        System.out.println("未存在数据:" + reserveManagement);
+        map.put("exist",existReserveManagementList);
+        System.out.println("已存在数据:" + existReserveManagementList);
+        return map;
+    }
+
+    /**
+     * 批量添加数据
+     * @param reserveManagementList
+     */
+    @Transactional(readOnly = false)
+    public void insertList(List<PoliceProcessBase> reserveManagementList){
+
+        dao.insertList(reserveManagementList);
+    }
+
+    /**
+     * 专职修改方法
+     * @param reserveManagement
+     */
+    @Transactional(readOnly = false)
+    public void update(PoliceProcessBase reserveManagement) {
+
+        super.save(reserveManagement);
+    }
+
+    public List<PoliceProcessBase> exportFindList(PoliceProcessBase reserveManagement) {
+        List<PoliceProcessBase> pageList = dao.exportFindList(reserveManagement);
+        return pageList;
+    }
+
+    public String getByProjectReserveId(String projectReserveId){
+        return dao.getByProjectReserveId(projectReserveId);
+    }
+
+    public List<History> getHistoryByExecuteId(String executeId){
+        return dao.getHistoryByExecuteId(executeId);
+    }
+
+    public String getByExecuteId(String executeId){
+        return dao.getByExecuteId(executeId);
+    }
+}

+ 136 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/service/PoliceProcessRecordService.java

@@ -0,0 +1,136 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.service;
+
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.mapper.PoliceProcessRecordMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.util.*;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 15:48
+ */
+@Service
+@Transactional(readOnly = true)
+public class PoliceProcessRecordService extends CrudService<PoliceProcessRecordMapper, PoliceProcessRecord> {
+
+    @Autowired
+    private PoliceProcessRecordMapper dao;
+
+    public PoliceProcessRecord get(String id,String serialNumber){
+        return dao.get(id,serialNumber);
+    }
+
+    public List<String> getSerialNumByReserveId(String projectReserveId){
+        return dao.getSerialNumByReserveId(projectReserveId);
+    }
+
+    public PoliceProcessRecord getInfoByReserveIdAndNum(String projectReserveId,String serialNumber){
+        return dao.getInfoByReserveIdAndNum(projectReserveId,serialNumber);
+    }
+
+    public PoliceProcessRecord getByReserveId(String reserveId){
+        return dao.getByReserveId(reserveId);
+    }
+
+    public Page<PoliceProcessRecord> findPage(Page<PoliceProcessRecord> page, PoliceProcessRecord reserveManagement) {
+        if (StringUtils.isBlank(reserveManagement.getProjectYear())){
+            reserveManagement.setProjectYear(LocalDate.now().getYear()+"");
+        }
+        Page<PoliceProcessRecord> pageList = super.findPage(page, reserveManagement);
+        return pageList;
+    }
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    public List<String> getAllProId(){
+        return dao.getAllProId();
+    }
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    public List<String> getAllProId2(){
+        return dao.getAllProId2();
+    }
+
+    /**
+     * 查询已有的参数数据 并分类返回已存在数据和未存在数据
+     * @param reserveManagement
+     * @return
+     */
+    public Map<String, List<PoliceProcessRecord>> getExistProjectList(List<PoliceProcessRecord> reserveManagement){
+        Map<String,List<PoliceProcessRecord>> map = new HashMap();
+        List<PoliceProcessRecord> existReserveManagementList = new ArrayList<>();
+        Iterator<PoliceProcessRecord> iterator = reserveManagement.iterator();
+        while (iterator.hasNext()) {
+            PoliceProcessRecord rm = iterator.next();
+            //对数据进行处理
+            rm.preInsert();
+            PoliceProcessRecord reserveManag = dao.getInfoByReserveIdAndNum(rm.getProjectReserveId(),rm.getSerialNumber());
+            //数据库中已含有的数据在list中删除并创建一个list加入 区分为已存在数据
+            if (null != reserveManag) {
+                rm.setId(reserveManag.getId());
+                existReserveManagementList.add(rm);
+                iterator.remove();//使用迭代器删除已存在的数据
+            }
+        }
+        map.put("without",reserveManagement);
+        System.out.println("未存在数据:" + reserveManagement);
+        map.put("exist",existReserveManagementList);
+        System.out.println("已存在数据:" + existReserveManagementList);
+        return map;
+    }
+
+    /**
+     * 批量添加数据
+     * @param reserveManagementList
+     */
+    @Transactional(readOnly = false)
+    public void insertList(List<PoliceProcessRecord> reserveManagementList){
+
+        dao.insertList(reserveManagementList);
+    }
+
+    /**
+     * 专职修改方法
+     * @param reserveManagement
+     */
+    @Transactional(readOnly = false)
+    public void update(PoliceProcessRecord reserveManagement) {
+
+        super.save(reserveManagement);
+    }
+
+    public List<PoliceProcessRecord> exportFindList(PoliceProcessRecord reserveManagement) {
+        List<PoliceProcessRecord> pageList = dao.exportFindList(reserveManagement);
+        return pageList;
+    }
+
+    public String getByProjectReserveId(String projectReserveId){
+        return dao.getByProjectReserveId(projectReserveId);
+    }
+
+    public List<History> getHistoryByExecuteId(String executeId){
+        return dao.getHistoryByExecuteId(executeId);
+    }
+
+    public String getByExecuteId(String executeId){
+        return dao.getByExecuteId(executeId);
+    }
+
+    public void deleteByReserveId(String projectReserveId){
+        dao.deleteByProjectReserveId(projectReserveId);
+    }
+}

+ 132 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/service/PoliceProcessScheduleService.java

@@ -0,0 +1,132 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.service;
+
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessSchedule;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.mapper.PoliceProcessScheduleMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.util.*;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 15:39
+ */
+@Service
+@Transactional(readOnly = true)
+public class PoliceProcessScheduleService extends CrudService<PoliceProcessScheduleMapper, PoliceProcessSchedule> {
+
+    @Autowired
+    private PoliceProcessScheduleMapper dao;
+
+    public List<String> getInfoByProReserveId(String projectReserveId){
+        return dao.getInfoByProReserveId(projectReserveId);
+    }
+
+    public List<String> getJcInfoByProReserveId(String projectReserveId){
+        return dao.getJcInfoByProReserveId(projectReserveId);
+    }
+
+    public String getDateValByProReserveId(String projectReserveId){
+        return dao.getDateValByProReserveId(projectReserveId);
+    }
+
+    public PoliceProcessSchedule getByReserveId(String reserveId){
+        return dao.getByReserveId(reserveId);
+    }
+
+    public Page<PoliceProcessSchedule> findPage(Page<PoliceProcessSchedule> page, PoliceProcessSchedule reserveManagement) {
+        if (StringUtils.isBlank(reserveManagement.getProjectYear())){
+            reserveManagement.setProjectYear(LocalDate.now().getYear()+"");
+        }
+        Page<PoliceProcessSchedule> pageList = super.findPage(page, reserveManagement);
+        return pageList;
+    }
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    public List<String> getAllProId(){
+        return dao.getAllProId();
+    }
+
+    /**
+     * 获取所有的  项目储备编号
+     * @return
+     */
+    public List<String> getAllProId2(){
+        return dao.getAllProId2();
+    }
+
+    /**
+     * 查询已有的参数数据 并分类返回已存在数据和未存在数据
+     * @param reserveManagement
+     * @return
+     */
+    public Map<String, List<PoliceProcessSchedule>> getExistProjectList(List<PoliceProcessSchedule> reserveManagement){
+        Map<String,List<PoliceProcessSchedule>> map = new HashMap();
+        List<PoliceProcessSchedule> existReserveManagementList = new ArrayList<>();
+        Iterator<PoliceProcessSchedule> iterator = reserveManagement.iterator();
+        while (iterator.hasNext()) {
+            PoliceProcessSchedule rm = iterator.next();
+            //对数据进行处理
+            rm.preInsert();
+            PoliceProcessSchedule reserveManag = dao.queryByProjectReserveId(rm);
+            //数据库中已含有的数据在list中删除并创建一个list加入 区分为已存在数据
+            if (null != reserveManag) {
+                rm.setId(reserveManag.getId());
+                existReserveManagementList.add(rm);
+                iterator.remove();//使用迭代器删除已存在的数据
+            }
+        }
+        map.put("without",reserveManagement);
+        System.out.println("未存在数据:" + reserveManagement);
+        map.put("exist",existReserveManagementList);
+        System.out.println("已存在数据:" + existReserveManagementList);
+        return map;
+    }
+
+    /**
+     * 批量添加数据
+     * @param reserveManagementList
+     */
+    @Transactional(readOnly = false)
+    public void insertList(List<PoliceProcessSchedule> reserveManagementList){
+
+        dao.insertList(reserveManagementList);
+    }
+
+    /**
+     * 专职修改方法
+     * @param reserveManagement
+     */
+    @Transactional(readOnly = false)
+    public void update(PoliceProcessSchedule reserveManagement) {
+
+        super.save(reserveManagement);
+    }
+
+    public List<PoliceProcessSchedule> exportFindList(PoliceProcessSchedule reserveManagement) {
+        List<PoliceProcessSchedule> pageList = dao.exportFindList(reserveManagement);
+        return pageList;
+    }
+
+    public String getByProjectReserveId(String projectReserveId){
+        return dao.getByProjectReserveId(projectReserveId);
+    }
+
+    public List<History> getHistoryByExecuteId(String executeId){
+        return dao.getHistoryByExecuteId(executeId);
+    }
+
+    public String getByExecuteId(String executeId){
+        return dao.getByExecuteId(executeId);
+    }
+}

+ 517 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/util/PolicyProcessExportUtil.java

@@ -0,0 +1,517 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.util;
+
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessBase;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessSchedule;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.utils.ReserveProcessProjectExportUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLEncoder;
+import java.util.List;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-04 9:16
+ */
+public class PolicyProcessExportUtil {
+
+    private  XSSFCellStyle style = null;
+
+    public static PolicyProcessExportUtil getOne(){
+
+        return new PolicyProcessExportUtil();
+    }
+
+    /**
+     * 传入excel模板名称 获取workbook对象
+     * @param fileName excel模板名称
+     * @return
+     */
+    public  XSSFWorkbook getWorkbook(String fileName){
+        InputStream inputStream = null;
+        XSSFWorkbook workbook = null;
+        try {
+            File file = new File(this.getClass().getResource("/").getPath() + "/freemarker/excelmodel/"+fileName+".xlsx");
+            inputStream = new FileInputStream(file);// 将excel文件转为输入流
+            workbook = new XSSFWorkbook(inputStream);// 创建个workbook,
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return workbook;
+    }
+
+
+    /**
+     * 导出储备项目安全交底信息
+     * @param response
+     * @param workbook
+     * @param list
+     */
+    public void exportSafety(HttpServletResponse response, XSSFWorkbook workbook, List<PoliceProcessBase> list){
+        try {
+            int index = 1;//第一列序号
+            int rowNum = 2;//数据起始列
+            Sheet sheet = workbook.getSheetAt(0);
+            for(int i=0;i<list.size();i++){
+                Row row = sheet.createRow(rowNum+i);
+                Cell cell0 = crateCell(workbook,row,0); //序号
+                Cell cell1 = crateCell(workbook,row,1); //储备项目经理
+                Cell cell2 = crateCell(workbook,row,2); //项目年份
+                Cell cell3 = crateCell(workbook,row,3); //项目性质
+                Cell cell4 = crateCell(workbook,row,4); //需求单位
+                Cell cell5 = crateCell(workbook,row,5); //区域
+                Cell cell6 = crateCell(workbook,row,6); //项目分组
+                Cell cell7 = crateCell(workbook,row,7); //储备批次
+
+                Cell cell8 = crateCell(workbook,row,8); //供电区域
+                Cell cell9 = crateCell(workbook,row,9); //网格编号
+                Cell cell10 = crateCell(workbook,row,10); //单元格编号
+                Cell cell11 = crateCell(workbook,row,11); //项目储备编号
+                Cell cell12 = crateCell(workbook,row,12); //项目名称
+                Cell cell13 = crateCell(workbook,row,13); //国网项目编码
+                Cell cell14 = crateCell(workbook,row,14); //国网项目名称
+                Cell cell15 = crateCell(workbook,row,15); //建设必要性及内容
+                Cell cell16 = crateCell(workbook,row,16); //变电站名称
+                Cell cell17 = crateCell(workbook,row,17); //线路名称
+                Cell cell18 = crateCell(workbook,row,18); //网架项目划分
+                Cell cell19 = crateCell(workbook,row,19); //需求类型
+                Cell cell20 = crateCell(workbook,row,20); //项目类型
+                Cell cell21 = crateCell(workbook,row,21); //费用估算
+                Cell cell22 = crateCell(workbook,row,22); //备注
+                Cell cell23 = crateCell(workbook,row,23); //储备进度
+                Cell cell24 = crateCell(workbook,row,24); //是否纳入实施计划
+                Cell cell25 = crateCell(workbook,row,25); //初定实施批次
+                Cell cell26 = crateCell(workbook,row,26); //是否含土建工作量
+                Cell cell27 = crateCell(workbook,row,27); //土建工作量统计
+                Cell cell28 = crateCell(workbook,row,28); //是否含立杆工作量
+                Cell cell29 = crateCell(workbook,row,29); //立杆工作量统计
+                Cell cell30 = crateCell(workbook,row,30); //工作量统计-备注
+                Cell cell31 = crateCell(workbook,row,31); //供电所辖区
+                Cell cell32 = crateCell(workbook,row,32); //施工地点
+                Cell cell33 = crateCell(workbook,row,33); //是否存在政处
+                Cell cell34 = crateCell(workbook,row,34); //政处类型
+                Cell cell35 = crateCell(workbook,row,35); //政处描述
+                Cell cell36 = crateCell(workbook,row,36); //政处难度
+                Cell cell37 = crateCell(workbook,row,37); //是否需规划报批
+                Cell cell38 = crateCell(workbook,row,38); //是否需办理安评手续
+                Cell cell39 = crateCell(workbook,row,39); //是否需办理航评手续
+                Cell cell40 = crateCell(workbook,row,40); //是否启动政处
+                Cell cell41 = crateCell(workbook,row,41); //政处备注
+
+
+                PoliceProcessBase reserveManagement = list.get(i);
+
+                cell0.setCellValue(String.valueOf(index++));
+                cell1.setCellValue(reserveManagement.getProjectManager());
+                cell2.setCellValue(reserveManagement.getProjectYear());
+                cell3.setCellValue(reserveManagement.getProjectNature());
+                cell4.setCellValue(reserveManagement.getDemandUnit());
+                cell5.setCellValue(reserveManagement.getDistrict());
+                cell6.setCellValue(reserveManagement.getProjectGroup());
+                cell7.setCellValue(reserveManagement.getReserveBatches());
+                cell8.setCellValue(reserveManagement.getBlockSupply());
+                cell9.setCellValue(reserveManagement.getGridNumber());
+                cell10.setCellValue(reserveManagement.getCellNumber());
+                cell11.setCellValue(reserveManagement.getProjectReserveId());
+                cell12.setCellValue(reserveManagement.getProjectName());
+                cell13.setCellValue(reserveManagement.getStateGridProjectCode());
+                cell14.setCellValue(reserveManagement.getStateGridProjectName());
+                cell15.setCellValue(reserveManagement.getConstructionNecessityAndContent());
+                cell16.setCellValue(reserveManagement.getSubstationName());
+                cell17.setCellValue(reserveManagement.getCircuitName());
+                cell18.setCellValue(reserveManagement.getNetRackProjectDivide());
+                cell19.setCellValue(reserveManagement.getRequirementType());
+                cell20.setCellValue(reserveManagement.getProjectType());
+
+                String costEstimateStr= reserveManagement.getCostEstimate().toString();
+                if(StringUtils.isNotBlank(costEstimateStr)){
+                    cell21.setCellValue(Double.parseDouble(costEstimateStr));
+                }
+                cell22.setCellValue(reserveManagement.getRemarks());
+                cell23.setCellValue(reserveManagement.getReserveProgress());
+                cell24.setCellValue(reserveManagement.getImplementPlan());
+                cell25.setCellValue(reserveManagement.getImplementBatch());
+                cell26.setCellValue(reserveManagement.getCivilEngineeringWorkload());
+                cell27.setCellValue(reserveManagement.getEngineeringWorkloadStatistic());
+                cell28.setCellValue(reserveManagement.getPoleWorkload());
+                cell29.setCellValue(reserveManagement.getPoleWorkloadStatistic());
+                cell30.setCellValue(reserveManagement.getWorkRemark());
+                cell31.setCellValue(reserveManagement.getPowerStationJurisdiction());
+                cell32.setCellValue(reserveManagement.getConstructionLocation());
+                cell33.setCellValue(reserveManagement.getWhetherExitPolitical());
+                cell34.setCellValue(reserveManagement.getPoliticalType());
+                cell35.setCellValue(reserveManagement.getPoliticalDescribe());
+                cell36.setCellValue(reserveManagement.getPoliticalDifficulty());
+                cell37.setCellValue(reserveManagement.getWhetherReport());
+                cell38.setCellValue(reserveManagement.getSafetyProcedures());
+                cell39.setCellValue(reserveManagement.getAviationReviewProcedures());
+                cell40.setCellValue(reserveManagement.getStartPolitical());
+                cell41.setCellValue(reserveManagement.getPoliticalRemarks());
+
+
+            }
+
+            String str = URLEncoder.encode("储备项目政策处理基本信息.xlsx", "UTF8");
+            response.setHeader("Content-Disposition", "attachment;filename="+str);
+            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+            OutputStream outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+            outputStream.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 导出政策处理记录信息
+     * @param response
+     * @param workbook
+     * @param list
+     */
+    public void exportRecord(HttpServletResponse response, XSSFWorkbook workbook, List<PoliceProcessRecord> list){
+        try {
+            int index = 1;//第一列序号
+            int rowNum = 2;//数据起始列
+            Sheet sheet = workbook.getSheetAt(0);
+            for(int i=0;i<list.size();i++){
+                Row row = sheet.createRow(rowNum+i);
+                Cell cell0 = crateCell(workbook,row,0); //序号
+                Cell cell1 = crateCell(workbook,row,1); //项目年份
+                Cell cell2 = crateCell(workbook,row,2); //项目性质
+                Cell cell3 = crateCell(workbook,row,3); //需求单位
+                Cell cell4 = crateCell(workbook,row,4); //区域
+                Cell cell5 = crateCell(workbook,row,5); //项目分组
+                Cell cell6 = crateCell(workbook,row,6); //储备批次
+                Cell cell7 = crateCell(workbook,row,7); //供电区域
+                Cell cell8 = crateCell(workbook,row,8); //网格编号
+                Cell cell9 = crateCell(workbook,row,9); //单元格编号
+                Cell cell10 = crateCell(workbook,row,10); //项目储备编号
+                Cell cell11 = crateCell(workbook,row,11); //项目名称
+                Cell cell12 = crateCell(workbook,row,12); //国网项目编码
+                Cell cell13 = crateCell(workbook,row,13); //国网项目名称
+                Cell cell14 = crateCell(workbook,row,14); //建设必要性及内容
+                Cell cell15 = crateCell(workbook,row,15); //变电站名称
+                Cell cell16 = crateCell(workbook,row,16); //线路名称
+                Cell cell17 = crateCell(workbook,row,17); //网架项目划分
+                Cell cell18 = crateCell(workbook,row,18); //需求类型
+                Cell cell19 = crateCell(workbook,row,19); //项目类型
+                Cell cell20 = crateCell(workbook,row,20); //费用估算
+                Cell cell21 = crateCell(workbook,row,21); //备注
+
+                Cell cell22 = crateCell(workbook,row,22); //初定实施批次
+                Cell cell23 = crateCell(workbook,row,23); //初定施工单位
+                Cell cell24 = crateCell(workbook,row,24); //项目下达批次
+                Cell cell25 = crateCell(workbook,row,25); //业主项目经理
+                Cell cell26 = crateCell(workbook,row,26); //现场施工管理单位
+                Cell cell27 = crateCell(workbook,row,27); //施工项目经理(电气)
+                Cell cell28 = crateCell(workbook,row,28); //施工项目经理(土建)
+
+                Cell cell29 = crateCell(workbook,row,29); //电气分包单位
+                Cell cell30 = crateCell(workbook,row,30); //电气联系人
+                Cell cell31 = crateCell(workbook,row,31); //土建分包单位
+                Cell cell32 = crateCell(workbook,row,32); //土建联系人
+                Cell cell33 = crateCell(workbook,row,33); //分包队伍-备注
+
+                Cell cell34 = crateCell(workbook,row,34); //是否含土建
+                Cell cell35 = crateCell(workbook,row,35); //土建工作量统计
+                Cell cell36 = crateCell(workbook,row,36); //是否含立杆工作量
+                Cell cell37 = crateCell(workbook,row,37); //立杆工作量统计
+                Cell cell38 = crateCell(workbook,row,38); //立杆工作量统计-备注
+
+                Cell cell39 = crateCell(workbook,row,39); //序号
+                Cell cell40 = crateCell(workbook,row,40); //是否启动政处工作
+                Cell cell41 = crateCell(workbook,row,41); //启动时间
+                Cell cell42 = crateCell(workbook,row,42); //政处对象
+                Cell cell43 = crateCell(workbook,row,43); //是否需赔付
+                Cell cell44 = crateCell(workbook,row,44); //赔付内容
+                Cell cell45 = crateCell(workbook,row,45); //赔付金额
+                Cell cell46 = crateCell(workbook,row,46); //签字政处单据提交时间
+                Cell cell47 = crateCell(workbook,row,47); //是否财政付款
+                Cell cell48 = crateCell(workbook,row,48); //是否需签订合同
+                Cell cell49 = crateCell(workbook,row,49); //政处合同完成签订时间
+                Cell cell50 = crateCell(workbook,row,50); //是否借款
+                Cell cell51 = crateCell(workbook,row,51); //借款支付时间
+                Cell cell52 = crateCell(workbook,row,52); //是否完成财务报销
+                Cell cell53 = crateCell(workbook,row,53); //财务报销完成时间
+                Cell cell54 = crateCell(workbook,row,54); //是否可进场
+                Cell cell55 = crateCell(workbook,row,55); //可进场日期
+                Cell cell56 = crateCell(workbook,row,56); //政处是否完成
+                Cell cell57 = crateCell(workbook,row,57); //政处洽谈单位
+                Cell cell58 = crateCell(workbook,row,58); //政处配合单位
+                Cell cell59 = crateCell(workbook,row,59); //政处记录-备注
+
+
+                PoliceProcessRecord reserveManagement = list.get(i);
+
+                cell0.setCellValue(String.valueOf(index++));
+                cell1.setCellValue(reserveManagement.getProjectYear());
+                cell2.setCellValue(reserveManagement.getProjectNature());
+                cell3.setCellValue(reserveManagement.getDemandUnit());
+                cell4.setCellValue(reserveManagement.getDistrict());
+                cell5.setCellValue(reserveManagement.getProjectGroup());
+                cell6.setCellValue(reserveManagement.getReserveBatches());
+                cell7.setCellValue(reserveManagement.getBlockSupply());
+                cell8.setCellValue(reserveManagement.getGridNumber());
+                cell9.setCellValue(reserveManagement.getCellNumber());
+                cell10.setCellValue(reserveManagement.getProjectReserveId());
+                cell11.setCellValue(reserveManagement.getProjectName());
+                cell12.setCellValue(reserveManagement.getStateGridProjectCode());
+                cell13.setCellValue(reserveManagement.getStateGridProjectName());
+                cell14.setCellValue(reserveManagement.getConstructionNecessityAndContent());
+                cell15.setCellValue(reserveManagement.getSubstationName());
+                cell16.setCellValue(reserveManagement.getCircuitName());
+                cell17.setCellValue(reserveManagement.getNetRackProjectDivide());
+                cell18.setCellValue(reserveManagement.getRequirementType());
+                cell19.setCellValue(reserveManagement.getProjectType());
+
+                String costEstimateStr= reserveManagement.getCostEstimate().toString();
+                if(StringUtils.isNotBlank(costEstimateStr)){
+                    cell20.setCellValue(Double.parseDouble(costEstimateStr));
+                }
+
+                cell21.setCellValue(reserveManagement.getRemarks());
+                cell22.setCellValue(reserveManagement.getImplementBatch());
+                cell23.setCellValue(reserveManagement.getConstructionUnit());
+                cell24.setCellValue(reserveManagement.getProjectReleaseBatch());
+                cell25.setCellValue(reserveManagement.getOwnerManager());
+                cell26.setCellValue(reserveManagement.getConstructionManagementUnit());
+                cell27.setCellValue(reserveManagement.getDqProjectManager());
+                cell28.setCellValue(reserveManagement.getTjProjectManager());
+                cell29.setCellValue(reserveManagement.getDqSubcontractingUnit());
+                cell30.setCellValue(reserveManagement.getDqContacts());
+                cell31.setCellValue(reserveManagement.getTjSubcontractingUnit());
+                cell32.setCellValue(reserveManagement.getTjContacts());
+                cell33.setCellValue(reserveManagement.getSubpackageRemarks());
+                cell34.setCellValue(reserveManagement.getCivilEngineer());
+                cell35.setCellValue(reserveManagement.getCivilEngineerStatistic());
+                cell36.setCellValue(reserveManagement.getPoleWorkload());
+                cell37.setCellValue(reserveManagement.getPoleWorkloadStatistic());
+                cell38.setCellValue(reserveManagement.getStatisticRemarks());
+                cell39.setCellValue(reserveManagement.getSerialNumber());
+                cell40.setCellValue(reserveManagement.getStartPoliticalWork());
+                cell41.setCellValue(reserveManagement.getStartTime());
+                cell42.setCellValue(reserveManagement.getAdministrativeObject());
+                cell43.setCellValue(reserveManagement.getNeedCompensation());
+                cell44.setCellValue(reserveManagement.getCompensationContent());
+                cell45.setCellValue(reserveManagement.getCompensationMoney());
+                cell46.setCellValue(reserveManagement.getDocumentCommitTime());
+                cell47.setCellValue(reserveManagement.getFinancialPayment());
+                cell48.setCellValue(reserveManagement.getNeedSignContract());
+                cell49.setCellValue(reserveManagement.getSignContractTime());
+                cell50.setCellValue(reserveManagement.getWeatherLoan());
+                cell51.setCellValue(reserveManagement.getLoanTime());
+                cell52.setCellValue(reserveManagement.getCompleteFinancialReimbursement());
+                cell53.setCellValue(reserveManagement.getCompleteFinancialReimbursementTime());
+                cell54.setCellValue(reserveManagement.getPossibleToEnterSite());
+                cell55.setCellValue(reserveManagement.getPossibleToEnterSiteTime());
+                cell56.setCellValue(reserveManagement.getCompleteProcess());
+                cell57.setCellValue(reserveManagement.getNegotiatingUnit());
+                cell58.setCellValue(reserveManagement.getCoordinateUnit());
+                cell59.setCellValue(reserveManagement.getRecordRemarks());
+
+            }
+
+            String str = URLEncoder.encode("储备项目政策记录表信息.xlsx", "UTF8");
+            response.setHeader("Content-Disposition", "attachment;filename="+str);
+            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+            OutputStream outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+            outputStream.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 导出政策处理进度信息
+     * @param response
+     * @param workbook
+     * @param list
+     */
+    public void exportSchedule(HttpServletResponse response, XSSFWorkbook workbook, List<PoliceProcessSchedule> list){
+        try {
+            int index = 1;//第一列序号
+            int rowNum = 2;//数据起始列
+            Sheet sheet = workbook.getSheetAt(0);
+            for(int i=0;i<list.size();i++){
+                Row row = sheet.createRow(rowNum+i);
+                Cell cell0 = crateCell(workbook,row,0); //序号
+                Cell cell1 = crateCell(workbook,row,1); //项目年份
+                Cell cell2 = crateCell(workbook,row,2); //项目性质
+                Cell cell3 = crateCell(workbook,row,3); //需求单位
+                Cell cell4 = crateCell(workbook,row,4); //区域
+                Cell cell5 = crateCell(workbook,row,5); //项目分组
+                Cell cell6 = crateCell(workbook,row,6); //储备批次
+                Cell cell7 = crateCell(workbook,row,7); //供电区域
+                Cell cell8 = crateCell(workbook,row,8); //网格编号
+                Cell cell9 = crateCell(workbook,row,9); //单元格编号
+                Cell cell10 = crateCell(workbook,row,10); //项目储备编号
+                Cell cell11 = crateCell(workbook,row,11); //项目名称
+                Cell cell12 = crateCell(workbook,row,12); //国网项目编码
+                Cell cell13 = crateCell(workbook,row,13); //国网项目名称
+                Cell cell14 = crateCell(workbook,row,14); //建设必要性及内容
+                Cell cell15 = crateCell(workbook,row,15); //变电站名称
+                Cell cell16 = crateCell(workbook,row,16); //线路名称
+                Cell cell17 = crateCell(workbook,row,17); //网架项目划分
+                Cell cell18 = crateCell(workbook,row,18); //需求类型
+                Cell cell19 = crateCell(workbook,row,19); //项目类型
+                Cell cell20 = crateCell(workbook,row,20); //费用估算
+                Cell cell21 = crateCell(workbook,row,21); //备注
+
+                Cell cell22 = crateCell(workbook,row,22); //初定实施批次
+                Cell cell23 = crateCell(workbook,row,23); //初定施工单位
+                Cell cell24 = crateCell(workbook,row,24); //项目下达批次
+                Cell cell25 = crateCell(workbook,row,25); //业主项目经理
+                Cell cell26 = crateCell(workbook,row,26); //现场施工管理单位
+                Cell cell27 = crateCell(workbook,row,27); //施工项目经理(电气)
+                Cell cell28 = crateCell(workbook,row,28); //施工项目经理(土建)
+
+                Cell cell29 = crateCell(workbook,row,29); //电气分包单位
+                Cell cell30 = crateCell(workbook,row,30); //电气联系人
+                Cell cell31 = crateCell(workbook,row,31); //土建分包单位
+                Cell cell32 = crateCell(workbook,row,32); //土建联系人
+                Cell cell33 = crateCell(workbook,row,33); //分包队伍-备注
+
+                Cell cell34 = crateCell(workbook,row,34); //是否含土建
+                Cell cell35 = crateCell(workbook,row,35); //土建工作量统计
+                Cell cell36 = crateCell(workbook,row,36); //是否含立杆工作量
+                Cell cell37 = crateCell(workbook,row,37); //立杆工作量统计
+                Cell cell38 = crateCell(workbook,row,38); //立杆工作量统计-备注
+
+                Cell cell39 = crateCell(workbook,row,39); //供电所辖区
+                Cell cell40 = crateCell(workbook,row,40); //施工地点
+                Cell cell41 = crateCell(workbook,row,41); //是否存在政处
+                Cell cell42 = crateCell(workbook,row,42); //政处类型
+                Cell cell43 = crateCell(workbook,row,43); //政处描述
+                Cell cell44 = crateCell(workbook,row,44); //政处难度
+                Cell cell45 = crateCell(workbook,row,45); //是否需规划报批
+                Cell cell46 = crateCell(workbook,row,46); //是否需办理安评手续
+                Cell cell47 = crateCell(workbook,row,47); //是否需办理航评手续
+                Cell cell48 = crateCell(workbook,row,48); //是否启动政处
+                Cell cell49 = crateCell(workbook,row,49); //启动时间
+                Cell cell50 = crateCell(workbook,row,50); //政处备注
+
+                Cell cell51 = crateCell(workbook,row,51); //该项目政处数量
+                Cell cell52 = crateCell(workbook,row,52); //政处对象描述
+                Cell cell53 = crateCell(workbook,row,53); //规划报批完成情况
+                Cell cell54 = crateCell(workbook,row,54); //安评完成情况
+                Cell cell55 = crateCell(workbook,row,55); //洪评完成情况
+                Cell cell56 = crateCell(workbook,row,56); //政处进度
+                Cell cell57 = crateCell(workbook,row,57); //是否允许进场
+                Cell cell58 = crateCell(workbook,row,58); //允许进场日期
+                Cell cell59 = crateCell(workbook,row,59); //是否需设计变更
+                Cell cell60 = crateCell(workbook,row,60); //设计变更状态
+                Cell cell61 = crateCell(workbook,row,61); //政处进度表-备注
+
+                PoliceProcessSchedule reserveManagement = list.get(i);
+
+                cell0.setCellValue(String.valueOf(index++));
+                cell1.setCellValue(reserveManagement.getProjectYear());
+                cell2.setCellValue(reserveManagement.getProjectNature());
+                cell3.setCellValue(reserveManagement.getDemandUnit());
+                cell4.setCellValue(reserveManagement.getDistrict());
+                cell5.setCellValue(reserveManagement.getProjectGroup());
+                cell6.setCellValue(reserveManagement.getReserveBatches());
+                cell7.setCellValue(reserveManagement.getBlockSupply());
+                cell8.setCellValue(reserveManagement.getGridNumber());
+                cell9.setCellValue(reserveManagement.getCellNumber());
+                cell10.setCellValue(reserveManagement.getProjectReserveId());
+                cell11.setCellValue(reserveManagement.getProjectName());
+                cell12.setCellValue(reserveManagement.getStateGridProjectCode());
+                cell13.setCellValue(reserveManagement.getStateGridProjectName());
+                cell14.setCellValue(reserveManagement.getConstructionNecessityAndContent());
+                cell15.setCellValue(reserveManagement.getSubstationName());
+                cell16.setCellValue(reserveManagement.getCircuitName());
+                cell17.setCellValue(reserveManagement.getNetRackProjectDivide());
+                cell18.setCellValue(reserveManagement.getRequirementType());
+                cell19.setCellValue(reserveManagement.getProjectType());
+
+                String costEstimateStr= reserveManagement.getCostEstimate().toString();
+                if(StringUtils.isNotBlank(costEstimateStr)){
+                    cell20.setCellValue(Double.parseDouble(costEstimateStr));
+                }
+
+                cell21.setCellValue(reserveManagement.getRemarks());
+                cell22.setCellValue(reserveManagement.getImplementBatch());
+                cell23.setCellValue(reserveManagement.getConstructionUnit());
+                cell24.setCellValue(reserveManagement.getProjectReleaseBatch());
+                cell25.setCellValue(reserveManagement.getOwnerManager());
+                cell26.setCellValue(reserveManagement.getConstructionManagementUnit());
+                cell27.setCellValue(reserveManagement.getDqProjectManager());
+                cell28.setCellValue(reserveManagement.getTjProjectManager());
+                cell29.setCellValue(reserveManagement.getDqSubcontractingUnit());
+                cell30.setCellValue(reserveManagement.getDqContacts());
+                cell31.setCellValue(reserveManagement.getTjSubcontractingUnit());
+                cell32.setCellValue(reserveManagement.getTjContacts());
+                cell33.setCellValue(reserveManagement.getSubpackageRemarks());
+                cell34.setCellValue(reserveManagement.getCivilEngineer());
+                cell35.setCellValue(reserveManagement.getCivilEngineerStatistic());
+                cell36.setCellValue(reserveManagement.getPoleWorkload());
+                cell37.setCellValue(reserveManagement.getPoleWorkloadStatistic());
+                cell38.setCellValue(reserveManagement.getStatisticRemarks());
+                cell39.setCellValue(reserveManagement.getPowerStationJurisdiction());
+                cell40.setCellValue(reserveManagement.getConstructionLocation());
+                cell41.setCellValue(reserveManagement.getWhetherExitPolitical());
+                cell42.setCellValue(reserveManagement.getPoliticalType());
+                cell43.setCellValue(reserveManagement.getPoliticalDescribe());
+                cell44.setCellValue(reserveManagement.getPoliticalDifficulty());
+                cell45.setCellValue(reserveManagement.getWhetherReport());
+                cell46.setCellValue(reserveManagement.getSafetyProcedures());
+                cell47.setCellValue(reserveManagement.getAviationReviewProcedures());
+                cell48.setCellValue(reserveManagement.getStartPolitical());
+                cell49.setCellValue(reserveManagement.getStartTime());
+                cell50.setCellValue(reserveManagement.getPoliticalRemarks());
+                cell51.setCellValue(reserveManagement.getProjectScheduleNum());
+                cell52.setCellValue(reserveManagement.getScheduleNumDescription());
+                cell53.setCellValue(reserveManagement.getPlanApprovalCompletion());
+                cell54.setCellValue(reserveManagement.getSafetyCompletion());
+                cell55.setCellValue(reserveManagement.getHongpingCompletion());
+                cell56.setCellValue(reserveManagement.getAdministrativeProgress());
+                cell57.setCellValue(reserveManagement.getEntryAllowed());
+                cell58.setCellValue(reserveManagement.getEntryAllowedTime());
+                cell59.setCellValue(reserveManagement.getDesignChangeRequired());
+                cell60.setCellValue(reserveManagement.getDesignChangeState());
+                cell61.setCellValue(reserveManagement.getScheduleRemarks());
+
+            }
+
+            String str = URLEncoder.encode("储备项目政策记录表信息.xlsx", "UTF8");
+            response.setHeader("Content-Disposition", "attachment;filename="+str);
+            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+            OutputStream outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+            outputStream.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 创建Cell对象 同时设置style
+     * @param workbook
+     * @param row
+     * @param num
+     * @return
+     */
+    Cell crateCell(XSSFWorkbook workbook,Row row, int num){
+        Cell cell = row.createCell(num);
+        if(style == null){
+            style =workbook.createCellStyle();
+            style.setWrapText(true);
+            style.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
+        }
+        cell.setCellStyle(style);
+        return cell;
+    }
+}

+ 189 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/util/PolicyProcessImportUtil.java

@@ -0,0 +1,189 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.util;
+
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessBase;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessSchedule;
+import com.jeeplus.modules.sg.managementcenter.materialproject.util.ImportUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Row;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-04 8:49
+ */
+public class PolicyProcessImportUtil {
+
+    /**
+     * 获取政策处理基本信息表格数据
+     * @param importUtil
+     * @return List<ReserveManagementMapper> 导入表格数据
+     */
+    public static List<PoliceProcessBase> getPoliceProcessBaseUtil(ImportUtil importUtil, List<String> proIdList, List<String> proIdList2) throws Exception {
+        int lastRow = importUtil.getLastDataRowNum();
+        List<PoliceProcessBase> list = new ArrayList<PoliceProcessBase>();
+
+        //项目储备编号唯一性判断
+        List<String> cbbhList = new ArrayList<>();
+
+        //建设必要性及内容
+        List<String> jsList = new ArrayList<>();
+        PoliceProcessBase reserveManagement = null;
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        for(int i=2; i<=lastRow;i++){
+            reserveManagement = new PoliceProcessBase();
+            Row row = importUtil.getRow(i);
+            //获取项目储备编号
+            String projectReserveId = (String) importUtil.getCellValue(row, 11);
+            if(StringUtils.isNotBlank(projectReserveId)){
+
+                reserveManagement.setProjectReserveId((String) importUtil.getCellValue(row,11));
+
+                //和基本信息表比对,是否有对应的数据
+                getBmList2(proIdList2,reserveManagement.getProjectReserveId());
+
+                reserveManagement.setPowerStationJurisdiction((String) importUtil.getCellValue(row,31));
+                reserveManagement.setConstructionLocation((String) importUtil.getCellValue(row,32));
+                reserveManagement.setWhetherExitPolitical((String) importUtil.getCellValue(row,33));
+                reserveManagement.setPoliticalType((String) importUtil.getCellValue(row,34));
+                reserveManagement.setPoliticalDescribe((String) importUtil.getCellValue(row,35));
+                reserveManagement.setPoliticalDifficulty((String) importUtil.getCellValue(row,36));
+                reserveManagement.setWhetherReport((String) importUtil.getCellValue(row,37));
+                reserveManagement.setSafetyProcedures((String) importUtil.getCellValue(row,38));
+                reserveManagement.setAviationReviewProcedures((String) importUtil.getCellValue(row,39));
+                reserveManagement.setStartPolitical((String) importUtil.getCellValue(row,40));
+                if (StringUtils.isNotBlank(reserveManagement.getStartPolitical())
+                        &&reserveManagement.getStartPolitical().equals("是")){
+                    reserveManagement.setStartTime(format.format(new Date()));
+                }
+                reserveManagement.setPoliticalRemarks((String) importUtil.getCellValue(row,41));
+
+
+                if (list.size() == 0){
+                    list.add(reserveManagement);
+                    cbbhList.add(reserveManagement.getProjectReserveId());
+                }else {
+                    if (!cbbhList.contains(reserveManagement.getProjectReserveId())){
+                        list.add(reserveManagement);
+                        cbbhList.add(reserveManagement.getProjectReserveId());
+                        jsList.add(reserveManagement.getConstructionNecessityAndContent());
+                    }
+                }
+
+            }
+        }
+        return list;
+    }
+
+    /**
+     * 获取政策处理记录表格数据
+     * @param importUtil
+     * @return List<ReserveManagementMapper> 导入表格数据
+     */
+    public static List<PoliceProcessRecord> getPoliceProcessRecordUtil(ImportUtil importUtil, List<String> proIdList, List<String> proIdList2) throws Exception {
+        int lastRow = importUtil.getLastDataRowNum();
+        List<PoliceProcessRecord> list = new ArrayList<PoliceProcessRecord>();
+
+        PoliceProcessRecord reserveManagement = null;
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        for(int i=2; i<=lastRow;i++){
+            reserveManagement = new PoliceProcessRecord();
+            Row row = importUtil.getRow(i);
+            //获取项目储备编号
+            String projectReserveId = (String) importUtil.getCellValue(row, 10);
+            if(StringUtils.isNotBlank(projectReserveId)){
+
+                reserveManagement.setProjectReserveId((String) importUtil.getCellValue(row,10));
+
+                //和基本信息表比对,是否有对应的数据
+                getBmList2(proIdList2,reserveManagement.getProjectReserveId());
+
+                reserveManagement.setSerialNumber((String) importUtil.getCellValue(row,39));
+                if (StringUtils.isNotBlank(reserveManagement.getSerialNumber())){
+                    int num = Integer.parseInt(reserveManagement.getSerialNumber());
+                    if (num>3){
+                        throw new Exception( "项目储备编号为" + reserveManagement.getProjectReserveId() + "的项目在政策记录表中的序号最大只能为3!");
+                    }
+                    reserveManagement.setStartPoliticalWork((String) importUtil.getCellValue(row,40));
+                    reserveManagement.setStartTime((String) importUtil.getCellValue(row,41));
+                    reserveManagement.setAdministrativeObject((String) importUtil.getCellValue(row,42));
+                    reserveManagement.setNeedCompensation((String) importUtil.getCellValue(row,43));
+                    reserveManagement.setCompensationMoney((String) importUtil.getCellValue(row,45));
+                    reserveManagement.setDocumentCommitTime((String) importUtil.getCellValue(row,46));
+                    reserveManagement.setFinancialPayment((String) importUtil.getCellValue(row,47));
+                    reserveManagement.setNeedSignContract((String) importUtil.getCellValue(row,48));
+                    reserveManagement.setSignContractTime((String) importUtil.getCellValue(row,49));
+                    reserveManagement.setWeatherLoan((String) importUtil.getCellValue(row,50));
+                    reserveManagement.setLoanTime((String) importUtil.getCellValue(row,51));
+                    reserveManagement.setCompleteFinancialReimbursement((String) importUtil.getCellValue(row,52));
+                    reserveManagement.setCompleteFinancialReimbursementTime((String) importUtil.getCellValue(row,53));
+                    reserveManagement.setPossibleToEnterSite((String) importUtil.getCellValue(row,54));
+                    reserveManagement.setPossibleToEnterSiteTime((String) importUtil.getCellValue(row,55));
+                    reserveManagement.setNegotiatingUnit((String) importUtil.getCellValue(row,57));
+                    reserveManagement.setCoordinateUnit((String) importUtil.getCellValue(row,58));
+                    reserveManagement.setRecordRemarks((String) importUtil.getCellValue(row,59));
+                    list.add(reserveManagement);
+                }
+            }
+        }
+        return list;
+    }
+
+    public static void getBmList2(List<String> sjkList, String proId) throws Exception {
+        if (!sjkList.contains(proId)){
+            throw new Exception( "项目储备编号为" + proId + "等项目在基础信息表中不存在相关数据!");
+        }
+    }
+
+    /**
+     * 获取政策处理进度表数据
+     * @param importUtil
+     * @return List<ReserveManagementMapper> 导入表格数据
+     */
+    public static List<PoliceProcessSchedule> getPoliceProcessScheduleUtil(ImportUtil importUtil, List<String> proIdList, List<String> proIdList2) throws Exception {
+        int lastRow = importUtil.getLastDataRowNum();
+        List<PoliceProcessSchedule> list = new ArrayList<PoliceProcessSchedule>();
+
+        //项目储备编号唯一性判断
+        List<String> cbbhList = new ArrayList<>();
+
+        //建设必要性及内容
+        List<String> jsList = new ArrayList<>();
+        PoliceProcessSchedule reserveManagement = null;
+        for(int i=2; i<=lastRow;i++){
+            reserveManagement = new PoliceProcessSchedule();
+            Row row = importUtil.getRow(i);
+            //获取项目储备编号
+            String projectReserveId = (String) importUtil.getCellValue(row, 10);
+            if(StringUtils.isNotBlank(projectReserveId)){
+
+                reserveManagement.setProjectReserveId((String) importUtil.getCellValue(row,10));
+
+                //和基本信息表比对,是否有对应的数据
+                getBmList2(proIdList2,reserveManagement.getProjectReserveId());
+
+                reserveManagement.setPowerStationJurisdiction((String) importUtil.getCellValue(row,59));
+                reserveManagement.setScheduleRemarks((String) importUtil.getCellValue(row,61));
+
+
+                if (list.size() == 0){
+                    list.add(reserveManagement);
+                    cbbhList.add(reserveManagement.getProjectReserveId());
+                }else {
+                    if (!cbbhList.contains(reserveManagement.getProjectReserveId())){
+                        list.add(reserveManagement);
+                        cbbhList.add(reserveManagement.getProjectReserveId());
+                        jsList.add(reserveManagement.getConstructionNecessityAndContent());
+                    }
+                }
+
+            }
+        }
+        return list;
+    }
+}

+ 472 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/web/PoliceProcessBaseController.java

@@ -0,0 +1,472 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.web;
+
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessBase;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.service.PoliceProcessBaseService;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.service.PoliceProcessRecordService;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.util.PolicyProcessExportUtil;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.util.PolicyProcessImportUtil;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.service.ProjectTypeVerificateService;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.service.ReserveElectricityWorkService;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.DemoliteList;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import com.jeeplus.modules.sg.managementcenter.materialproject.util.ImportUtil;
+import com.jeeplus.modules.sg.picking.activiti.entity.PickList;
+import com.jeeplus.modules.sg.raiseCapital.service.RaiseCapitalService;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+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.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 15:53
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/cg/policeProcess/base")
+public class PoliceProcessBaseController extends BaseController {
+
+    @Autowired
+    private PoliceProcessBaseService baseService;
+
+    @Autowired
+    private ReserveElectricityWorkService workService;
+
+    @Autowired
+    private PoliceProcessRecordService recordService;
+
+    @Autowired
+    private ProjectTypeVerificateService verificateService;
+
+    @Autowired
+    private RaiseCapitalService raiseCapitalService;
+
+    @ModelAttribute
+    public PoliceProcessBase get(@RequestParam(required = false) String id) {
+        PoliceProcessBase entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = baseService.get(id);
+        }
+        if (entity == null) {
+            entity = new PoliceProcessBase();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目储备信息列表页面
+     * @param reserveManagement
+     * @param model
+     * @return
+     */
+    @RequiresPermissions("cg:policeProcess:base:list")
+    @RequestMapping(value = "skipList")
+    public String skipList(PoliceProcessBase reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        return "modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementInformation";
+    }
+
+    /**
+     * 查看表单页面
+     */
+    @RequiresPermissions(value={"cg:policeProcess:base:view"},logical= Logical.OR)
+    @RequestMapping(value = "view")
+    public String view(PoliceProcessBase reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        return "modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementView";
+    }
+
+    /**
+     * 项目储备信息数据列表
+     * @param reserveManagement
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("cg:policeProcess:base:list")
+    @RequestMapping(value = "list")
+    public Map<String, Object> basicData(PoliceProcessBase reserveManagement, HttpServletRequest request, HttpServletResponse response, Model model) {
+
+        Page<PoliceProcessBase> page = baseService.findPage(new Page<PoliceProcessBase>(request, response), reserveManagement);
+        List<PoliceProcessBase> list = page.getList();
+
+        List<PoliceProcessBase> safetyList = new ArrayList<>();
+
+        List<String> nameList = new ArrayList<>();
+        //获取所有小类的名称
+        List<PickList> pickListList = raiseCapitalService.newAllList();
+        if (null != pickListList) {
+            pickListList.forEach(k->{
+                if (k.getName().equals("三、设备")){
+                    k.getMdTheClassList().forEach(v->{
+                        v.getMdSmallClassList().forEach(na->{
+                            nameList.add(na.getName());
+                        });
+                    });
+                }
+            });
+        }
+
+        List<DemoliteList> info = verificateService.getByProjectName();
+
+
+        for (PoliceProcessBase safety : list){
+
+            info.forEach(in->{
+                if (in.getProjectName().equals(safety.getProjectName())){
+                    if (StringUtils.isBlank(safety.getProjectNature())){
+                        if (nameList.contains(in.getMaterialName())){
+                            safety.setProjectNature("资本");
+                        } else {
+                            safety.setProjectNature("成本");
+                        }
+                    }
+                }
+            });
+//            //根据项目储备id去在线开甲供材表中查询物理信息
+//            List<String> materialNameList = verificateService.getMaterialName(safety.getProjectName());
+//            if (null != nameList & null != materialNameList){
+//                nameList.forEach(n->{
+//                    if (StringUtils.isBlank(safety.getProjectNature())){
+//                        if (materialNameList.contains(n)){
+//                            safety.setProjectNature("资本");
+//                        } else {
+//                            safety.setProjectNature("成本");
+//                        }
+//                    }
+//                });
+//            }
+
+            //根据projectReserveId查出流程表的proc_ins_id
+            String procInsId = baseService.getByProjectReserveId(safety.getProjectReserveId());
+            //根据procInsId查出历史流程名称和时间
+            List<History> histories = baseService.getHistoryByExecuteId(procInsId);
+            String historyName = workService.getHistoryName(procInsId);
+            //当size>0时待办有历史流程,
+            if (histories.size()>0){
+                //根据proc_ins_id去运行时任务节点表(act_ru_task)中查出当前流程名称
+                String name = baseService.getByExecuteId(procInsId);
+                //设置项目进度
+                if (StringUtils.isNotEmpty(name)){
+                    safety.setReserveProgress(name);
+                }else {
+                    if (StringUtils.isNotBlank(historyName) && historyName.equals("技经人员审预算")){
+                        safety.setReserveProgress("储备完成");
+                    } else {
+                        safety.setReserveProgress("");
+                    }
+                }
+            }else {
+                safety.setReserveProgress("");
+            }
+            safety.setWorkRemark("");
+            safety.setStateGridProjectName("");
+            safety.setStateGridProjectCode("");
+            safetyList.add(safety);
+        }
+        page.setList(safetyList);
+        return getBootstrapData(page);
+    }
+
+    /**
+     * 专职人员增加,编辑表单页面
+     * @param reserveManagement
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"cg:policeProcess:base:add","cg:policeProcess:base:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(PoliceProcessBase reserveManagement, Model model) {
+        //根据projectReserveId查出流程表的proc_ins_id
+        String procInsId = baseService.getByProjectReserveId(reserveManagement.getProjectReserveId());
+        //根据procInsId查出历史流程名称和时间
+        List<History> histories = baseService.getHistoryByExecuteId(procInsId);
+        //当size>0时待办有历史流程,
+        if (histories.size()>0){
+            //根据proc_ins_id去运行时任务节点表(act_ru_task)中查出当前流程名称
+            String name = baseService.getByExecuteId(procInsId);
+            //设置项目进度
+            reserveManagement.setReserveProgress(name);
+        }else {
+            reserveManagement.setReserveProgress("");
+        }
+        model.addAttribute("reserveManagement", reserveManagement);
+        //判断id是否为空 如果未空则为新增 否则为修改
+        if(StringUtils.isBlank(reserveManagement.getId())){
+            return "modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementForm";
+        }
+        return "modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementModifyByzz";
+    }
+
+    /**
+     * 专职人员保存表单
+     * @param reserveManagement
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"cg:policeProcess:base:add"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public AjaxJson save(PoliceProcessBase reserveManagement){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(reserveManagement);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //新增或编辑表单保存
+        baseService.save(reserveManagement);//保存
+        j.setSuccess(true);
+        j.setMsg("保存储备项目基本信息成功");
+        return j;
+    }
+
+    /**
+     * 专职人员修改表单
+     * @param reserveManagement
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"cg:policeProcess:base:edit"},logical=Logical.OR)
+    @RequestMapping(value = "update")
+    public AjaxJson update(PoliceProcessBase reserveManagement){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(reserveManagement);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //根据项目储备编号查是否有改数据
+        PoliceProcessBase safety = baseService.getByReserveId(reserveManagement.getProjectReserveId());
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        if (null == safety){
+            safety = new PoliceProcessBase();
+            safety.setProjectReserveId(reserveManagement.getProjectReserveId());
+            safety.setPowerStationJurisdiction(reserveManagement.getPowerStationJurisdiction());
+            safety.setConstructionLocation(reserveManagement.getConstructionLocation());
+            safety.setWhetherExitPolitical(reserveManagement.getWhetherExitPolitical());
+            safety.setPoliticalType(reserveManagement.getPoliticalType());
+            safety.setPoliticalDescribe(reserveManagement.getPoliticalDescribe());
+            safety.setPoliticalDifficulty(reserveManagement.getPoliticalDifficulty());
+            safety.setWhetherReport(reserveManagement.getWhetherReport());
+            safety.setSafetyProcedures(reserveManagement.getSafetyProcedures());
+            safety.setAviationReviewProcedures(reserveManagement.getAviationReviewProcedures());
+            safety.setStartPolitical(reserveManagement.getStartPolitical());
+            safety.setStartTime(format.format(new Date()));
+            safety.setPoliticalRemarks(reserveManagement.getPoliticalRemarks());
+            //对需要对政策处理记录表进行处理
+            mainTenanceRecord(safety);
+            baseService.save(safety);
+        }else {
+            safety.setPowerStationJurisdiction(reserveManagement.getPowerStationJurisdiction());
+            safety.setConstructionLocation(reserveManagement.getConstructionLocation());
+            safety.setWhetherExitPolitical(reserveManagement.getWhetherExitPolitical());
+            safety.setPoliticalType(reserveManagement.getPoliticalType());
+            safety.setPoliticalDescribe(reserveManagement.getPoliticalDescribe());
+            safety.setPoliticalDifficulty(reserveManagement.getPoliticalDifficulty());
+            safety.setWhetherReport(reserveManagement.getWhetherReport());
+            safety.setSafetyProcedures(reserveManagement.getSafetyProcedures());
+            safety.setAviationReviewProcedures(reserveManagement.getAviationReviewProcedures());
+            safety.setStartPolitical(reserveManagement.getStartPolitical());
+            safety.setStartTime(reserveManagement.getStartTime());
+            safety.setPoliticalRemarks(reserveManagement.getPoliticalRemarks());
+            mainTenanceRecord(safety);
+            //新增或编辑表单保存
+            baseService.update(safety);
+        }
+
+        j.setSuccess(true);
+        j.setMsg("修改储备项目基本信息成功");
+        return j;
+    }
+
+    /**
+     * 导入Excel数据
+     */
+    @ResponseBody
+    @RequiresPermissions("cg:policeProcess:base:import")
+    @RequestMapping(value = "import")
+    public AjaxJson importBasic(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        try {
+            ImportUtil importUtil = new ImportUtil(file, 0, 0);
+
+            //从数据库中查出所有的 项目储备编号
+            List<String> proIdList = baseService.getAllProId();
+
+            //从基本数据表中查出所有的 项目储备编号
+            List<String> proIdList2 = baseService.getAllProId2();
+
+            //获取导入表格所有数据
+            List<PoliceProcessBase> reserveManagementList = PolicyProcessImportUtil.getPoliceProcessBaseUtil(importUtil,proIdList,proIdList2);
+            //查询已有的参数数据 并分类返回已存在数据和未存在数据
+            Map map = baseService.getExistProjectList(reserveManagementList);
+            //未存在数据
+            List<PoliceProcessBase> withoutList = (List<PoliceProcessBase>) map.get("without");
+            //已存在数据
+            List<PoliceProcessBase> existList = (List<PoliceProcessBase>) map.get("exist");
+
+            //对未存在的数据进行批量导入
+            if(withoutList.size()>0){
+
+                for (PoliceProcessBase reserveManagement : withoutList) {
+                    if (StringUtils.isNotBlank(reserveManagement.getStartPolitical())
+                            &&reserveManagement.getStartPolitical().equals("是")){
+                        reserveManagement.setStartTime(format.format(new Date()));
+                    }
+                    mainTenanceRecord(reserveManagement);
+                }
+                baseService.insertList(withoutList);
+
+            }
+
+            //对已存在的数据进行修改
+            if(existList.size()>0){
+                for (PoliceProcessBase reserveManagement : existList) {
+                    if (StringUtils.isNotBlank(reserveManagement.getStartPolitical())
+                            &&reserveManagement.getStartPolitical().equals("是")){
+                        reserveManagement.setStartTime(format.format(new Date()));
+                    }
+                    mainTenanceRecord(reserveManagement);
+                    baseService.update(reserveManagement);
+                }
+            }
+            int i = withoutList.size() + existList.size();
+            j.setMsg("已成功导入" + i + "条政策处理基本信息记录");
+
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入政策处理信息失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    public void mainTenanceRecord(PoliceProcessBase reserveManagement){
+        //需要对政策处理记录表进行处理
+        if (StringUtils.isNotBlank(reserveManagement.getWhetherReport())
+                &&reserveManagement.getWhetherReport().equals("是")){
+            PoliceProcessRecord record = recordService.getInfoByReserveIdAndNum(reserveManagement.getProjectReserveId(),"1");
+            if (null == record){
+                record = new PoliceProcessRecord();
+                record.setProjectReserveId(reserveManagement.getProjectReserveId());
+                record.setSerialNumber("1");
+                record.setAdministrativeObject("规划报批");
+            } else {
+                record.setAdministrativeObject("规划报批");
+            }
+            recordService.save(record);
+        }
+        if (StringUtils.isNotBlank(reserveManagement.getSafetyProcedures())
+                &&reserveManagement.getSafetyProcedures().equals("是")){
+            PoliceProcessRecord record = recordService.getInfoByReserveIdAndNum(reserveManagement.getProjectReserveId(),"2");
+            if (null == record){
+                record = new PoliceProcessRecord();
+                record.setProjectReserveId(reserveManagement.getProjectReserveId());
+                record.setSerialNumber("2");
+                record.setAdministrativeObject("安评");
+            } else {
+                record.setAdministrativeObject("安评");
+            }
+            recordService.save(record);
+        }
+        if (StringUtils.isNotBlank(reserveManagement.getAviationReviewProcedures())
+                &&reserveManagement.getAviationReviewProcedures().equals("是")){
+            PoliceProcessRecord record = recordService.getInfoByReserveIdAndNum(reserveManagement.getProjectReserveId(),"3");
+            if (null == record){
+                record = new PoliceProcessRecord();
+                record.setProjectReserveId(reserveManagement.getProjectReserveId());
+                record.setSerialNumber("3");
+                record.setAdministrativeObject("航评");
+            } else {
+                record.setAdministrativeObject("航评");
+            }
+            recordService.save(record);
+        }
+        if (StringUtils.isBlank(reserveManagement.getWhetherReport())
+            && StringUtils.isBlank(reserveManagement.getSafetyProcedures())
+                && StringUtils.isBlank(reserveManagement.getAviationReviewProcedures())){
+            //当都为空的时候删除原有数据
+            recordService.deleteByReserveId(reserveManagement.getProjectReserveId());
+        }
+    }
+
+    //导出excel
+    @ResponseBody
+    @RequiresPermissions("cg:policeProcess:base:export")
+    @RequestMapping(value = "export")
+    public void exportExcel(PoliceProcessBase reserveManagement, HttpServletRequest request, HttpServletResponse response) {
+        List<PoliceProcessBase> list = baseService.exportFindList(reserveManagement);
+
+        List<PoliceProcessBase> safetyList = new ArrayList<>();
+
+        for (PoliceProcessBase safety : list){
+            //根据projectReserveId查出流程表的proc_ins_id
+            String procInsId = baseService.getByProjectReserveId(safety.getProjectReserveId());
+            //根据procInsId查出历史流程名称和时间
+            List<History> histories = baseService.getHistoryByExecuteId(procInsId);
+            String historyName = workService.getHistoryName(procInsId);
+            //当size>0时待办有历史流程,
+            if (histories.size()>0){
+                //根据proc_ins_id去运行时任务节点表(act_ru_task)中查出当前流程名称
+                String name = baseService.getByExecuteId(procInsId);
+                //设置项目进度
+                if (StringUtils.isNotEmpty(name)){
+                    safety.setReserveProgress(name);
+                }else {
+                    if (StringUtils.isNotBlank(historyName) && historyName.equals("技经人员审预算")){
+                        safety.setReserveProgress("储备完成");
+                    } else {
+                        safety.setReserveProgress("");
+                    }
+                }
+            }else {
+                safety.setReserveProgress("");
+            }
+            safety.setWorkRemark("");
+            safety.setStateGridProjectCode("");
+            safety.setStateGridProjectName("");
+            safetyList.add(safety);
+        }
+
+        //生成序列号
+        int i = 1;
+        for (PoliceProcessBase s : safetyList) {
+            s.setId(String.valueOf(i));
+            i++;
+        }
+
+        PolicyProcessExportUtil util = PolicyProcessExportUtil.getOne();
+        XSSFWorkbook workbook = util.getWorkbook("policeProcessBase");
+        util.exportSafety(response,workbook,safetyList);
+    }
+}

+ 351 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/web/PoliceProcessRecordController.java

@@ -0,0 +1,351 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.web;
+
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessBase;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessRecord;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.service.PoliceProcessBaseService;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.service.PoliceProcessRecordService;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.util.PolicyProcessExportUtil;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.util.PolicyProcessImportUtil;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.service.ProjectTypeVerificateService;
+import com.jeeplus.modules.sg.managementcenter.materialproject.util.ImportUtil;
+import com.jeeplus.modules.sg.picking.activiti.entity.PickList;
+import com.jeeplus.modules.sg.raiseCapital.service.RaiseCapitalService;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+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.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 15:49
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/cg/policeProcess/record")
+public class PoliceProcessRecordController extends BaseController {
+
+    @Autowired
+    private PoliceProcessRecordService recordService;
+
+    @Autowired
+    private PoliceProcessBaseService baseService;
+
+    @Autowired
+    private ProjectTypeVerificateService verificateService;
+
+    @Autowired
+    private RaiseCapitalService raiseCapitalService;
+
+    @ModelAttribute
+    public PoliceProcessRecord get(@RequestParam(required = false) String id,@RequestParam(required = false) String serialNumber) {
+        PoliceProcessRecord entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = recordService.get(id,serialNumber);
+        }
+        if (entity == null) {
+            entity = new PoliceProcessRecord();
+        }
+        return entity;
+    }
+
+    /**
+     * 项目储备信息列表页面
+     * @param reserveManagement
+     * @param model
+     * @return
+     */
+    @RequiresPermissions("cg:policeProcess:record:list")
+    @RequestMapping(value = "skipList")
+    public String skipList(PoliceProcessRecord reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        return "modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementInformation";
+    }
+
+    /**
+     * 查看表单页面
+     */
+    @RequiresPermissions(value={"cg:policeProcess:record:view"},logical= Logical.OR)
+    @RequestMapping(value = "view")
+    public String view(PoliceProcessRecord reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        return "modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementView";
+    }
+
+    /**
+     * 项目储备信息数据列表
+     * @param reserveManagement
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("cg:policeProcess:record:list")
+    @RequestMapping(value = "list")
+    public Map<String, Object> basicData(PoliceProcessRecord reserveManagement, HttpServletRequest request, HttpServletResponse response, Model model) {
+
+        Page<PoliceProcessRecord> page = recordService.findPage(new Page<PoliceProcessRecord>(request, response), reserveManagement);
+        List<PoliceProcessRecord> list = page.getList();
+
+        List<String> nameList = new ArrayList<>();
+        //获取所有小类的名称
+        List<PickList> pickListList = raiseCapitalService.newAllList();
+        if (null != pickListList) {
+            pickListList.forEach(k->{
+                if (k.getName().equals("三、设备")){
+                    k.getMdTheClassList().forEach(v->{
+                        v.getMdSmallClassList().forEach(na->{
+                            nameList.add(na.getName());
+                        });
+                    });
+                }
+            });
+        }
+
+        for (int i=0;i<list.size();i++){
+
+            //根据项目储备id去在线开甲供材表中查询物理信息
+            List<String> materialNameList = verificateService.getMaterialName(list.get(i).getProjectName());
+            if (null != nameList & null != materialNameList){
+                int finalI = i;
+                nameList.forEach(n->{
+                    if (StringUtils.isBlank(list.get(finalI).getProjectNature())){
+                        if (materialNameList.contains(n)){
+                            list.get(finalI).setProjectNature("资本");
+                        } else {
+                            list.get(finalI).setProjectNature("成本");
+                        }
+                    }
+                });
+            }
+
+            if (StringUtils.isNotBlank(list.get(i).getCompleteFinancialReimbursement())
+                    &&list.get(i).getCompleteFinancialReimbursement().equals("是")
+                    &&StringUtils.isNotBlank(list.get(i).getPossibleToEnterSite())&&list.get(i).getPossibleToEnterSite().equals("是")){
+                list.get(i).setCompleteProcess("是");
+            }else {
+                list.get(i).setCompleteProcess("否");
+            }
+            if (StringUtils.isBlank(list.get(i).getStartPoliticalWork())&&StringUtils.isNotBlank(list.get(i).getStartPoliticalWork2())){
+                list.get(i).setStartPoliticalWork(list.get(i).getStartPoliticalWork2());
+            }
+            if (StringUtils.isBlank(list.get(i).getStartTime())&&StringUtils.isNotBlank(list.get(i).getStartTime2())){
+                list.get(i).setStartTime(list.get(i).getStartTime2());
+            }
+        }
+        return getBootstrapData(page);
+    }
+
+    /**
+     * 专职人员增加,编辑表单页面
+     * @param reserveManagement
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"cg:policeProcess:record:add","cg:policeProcess:record:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(PoliceProcessRecord reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        //判断id是否为空 如果未空则为新增 否则为修改
+        if(StringUtils.isBlank(reserveManagement.getId())){
+            return "modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementForm";
+        }
+        return "modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementModifyByzz";
+    }
+
+    /**
+     * 专职人员保存表单
+     * @param reserveManagement
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"cg:policeProcess:record:add"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public AjaxJson save(PoliceProcessRecord reserveManagement){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(reserveManagement);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //新增或编辑表单保存
+        recordService.save(reserveManagement);//保存
+        j.setSuccess(true);
+        j.setMsg("保存储备项目基本信息成功");
+        return j;
+    }
+
+    /**
+     * 导入Excel数据
+     */
+    @ResponseBody
+    @RequiresPermissions("cg:policeProcess:record:import")
+    @RequestMapping(value = "import")
+    public AjaxJson importBasic(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        try {
+            ImportUtil importUtil = new ImportUtil(file, 0, 0);
+
+            //从数据库中查出所有的 项目储备编号
+            List<String> proIdList = recordService.getAllProId();
+
+            //从基本数据表中查出所有的 项目储备编号
+            List<String> proIdList2 = recordService.getAllProId2();
+
+            //获取导入表格所有数据
+            List<PoliceProcessRecord> reserveManagementList = PolicyProcessImportUtil.getPoliceProcessRecordUtil(importUtil,proIdList,proIdList2);
+            //查询已有的参数数据 并分类返回已存在数据和未存在数据
+            Map map = recordService.getExistProjectList(reserveManagementList);
+            //未存在数据
+            List<PoliceProcessRecord> withoutList = (List<PoliceProcessRecord>) map.get("without");
+            //已存在数据
+            List<PoliceProcessRecord> existList = (List<PoliceProcessRecord>) map.get("exist");
+
+            //对未存在的数据进行批量导入
+            if(withoutList.size()>0){
+                recordService.insertList(withoutList);
+            }
+
+            //对已存在的数据进行修改
+            if(existList.size()>0){
+                for (PoliceProcessRecord reserveManagement : existList) {
+                    recordService.update(reserveManagement);
+                }
+            }
+            int i = withoutList.size() + existList.size();
+            j.setMsg("已成功导入" + i + "条政策处理记录信息记录");
+
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入政策处理信息失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    /**
+     * 保存 评政策处理记录页面数据
+     * @param arrangement
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"cg:policeProcess:record:add"},logical=Logical.OR)
+    @RequestMapping(value = "reviewSave")
+    public AjaxJson reviewSave(@RequestBody PoliceProcessRecord arrangement){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(arrangement);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+
+        //新增或编辑表单保存
+        //根据projectReserveId与序号查相关数据
+        PoliceProcessRecord record = recordService.getInfoByReserveIdAndNum(arrangement.getProjectReserveId(),arrangement.getSerialNumber());
+        if (null == record) {
+            record = new PoliceProcessRecord();
+            record.setProjectReserveId(arrangement.getProjectReserveId());
+            record.setSerialNumber(arrangement.getSerialNumber());
+            record.setStartPoliticalWork(arrangement.getStartPoliticalWork());
+            record.setStartTime(arrangement.getStartTime());
+            record.setAdministrativeObject(arrangement.getAdministrativeObject());
+            record.setNeedCompensation(arrangement.getNeedCompensation());
+            record.setCompensationMoney(arrangement.getCompensationMoney());
+            record.setDocumentCommitTime(arrangement.getDocumentCommitTime());
+            record.setFinancialPayment(arrangement.getFinancialPayment());
+            record.setNeedSignContract(arrangement.getNeedSignContract());
+            record.setSignContractTime(arrangement.getSignContractTime());
+            record.setWeatherLoan(arrangement.getWeatherLoan());
+            record.setLoanTime(arrangement.getLoanTime());
+            record.setCompleteFinancialReimbursement(arrangement.getCompleteFinancialReimbursement());
+            record.setCompleteFinancialReimbursementTime(arrangement.getCompleteFinancialReimbursementTime());
+            record.setPossibleToEnterSite(arrangement.getPossibleToEnterSite());
+            record.setPossibleToEnterSiteTime(arrangement.getPossibleToEnterSiteTime());
+            record.setNegotiatingUnit(arrangement.getNegotiatingUnit());
+            record.setCoordinateUnit(arrangement.getCoordinateUnit());
+            record.setRecordRemarks(arrangement.getRecordRemarks());
+            recordService.save(record);//保存
+        } else {
+            record.setProjectReserveId(arrangement.getProjectReserveId());
+            record.setSerialNumber(arrangement.getSerialNumber());
+            record.setStartPoliticalWork(arrangement.getStartPoliticalWork());
+            record.setStartTime(arrangement.getStartTime());
+            record.setAdministrativeObject(arrangement.getAdministrativeObject());
+            record.setNeedCompensation(arrangement.getNeedCompensation());
+            record.setCompensationMoney(arrangement.getCompensationMoney());
+            record.setDocumentCommitTime(arrangement.getDocumentCommitTime());
+            record.setFinancialPayment(arrangement.getFinancialPayment());
+            record.setNeedSignContract(arrangement.getNeedSignContract());
+            record.setSignContractTime(arrangement.getSignContractTime());
+            record.setWeatherLoan(arrangement.getWeatherLoan());
+            record.setLoanTime(arrangement.getLoanTime());
+            record.setCompleteFinancialReimbursement(arrangement.getCompleteFinancialReimbursement());
+            record.setCompleteFinancialReimbursementTime(arrangement.getCompleteFinancialReimbursementTime());
+            record.setPossibleToEnterSite(arrangement.getPossibleToEnterSite());
+            record.setPossibleToEnterSiteTime(arrangement.getPossibleToEnterSiteTime());
+            record.setNegotiatingUnit(arrangement.getNegotiatingUnit());
+            record.setCoordinateUnit(arrangement.getCoordinateUnit());
+            record.setRecordRemarks(arrangement.getRecordRemarks());
+            recordService.update(record);//保存
+        }
+        j.setSuccess(true);
+        j.setMsg("保存政策处理记录信息成功");
+        return j;
+    }
+
+    //导出excel
+    @ResponseBody
+    @RequiresPermissions("cg:policeProcess:record:export")
+    @RequestMapping(value = "export")
+    public void exportExcel(PoliceProcessRecord reserveManagement, HttpServletRequest request, HttpServletResponse response) {
+        List<PoliceProcessRecord> list = recordService.exportFindList(reserveManagement);
+
+        //生成序列号
+        int j = 1;
+        for (PoliceProcessRecord s : list) {
+            s.setId(String.valueOf(j));
+            j++;
+        }
+
+        for (int i=0;i<list.size();i++){
+            if (StringUtils.isNotBlank(list.get(i).getCompleteFinancialReimbursement())
+                    &&list.get(i).getCompleteFinancialReimbursement().equals("是")
+                    &&StringUtils.isNotBlank(list.get(i).getPossibleToEnterSite())&&list.get(i).getPossibleToEnterSite().equals("是")){
+                list.get(i).setCompleteProcess("是");
+            }else {
+                list.get(i).setCompleteProcess("否");
+            }
+            if (StringUtils.isBlank(list.get(i).getStartPoliticalWork())&&StringUtils.isNotBlank(list.get(i).getStartPoliticalWork2())){
+                list.get(i).setStartPoliticalWork(list.get(i).getStartPoliticalWork2());
+            }
+            if (StringUtils.isBlank(list.get(i).getStartTime())&&StringUtils.isNotBlank(list.get(i).getStartTime2())){
+                list.get(i).setStartTime(list.get(i).getStartTime2());
+            }
+        }
+        PolicyProcessExportUtil util = PolicyProcessExportUtil.getOne();
+        XSSFWorkbook workbook = util.getWorkbook("policeProcessRecord");
+        util.exportRecord(response,workbook,list);
+    }
+}

+ 396 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/policyProcess/web/PoliceProcessScheduleController.java

@@ -0,0 +1,396 @@
+package com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.web;
+
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.entity.PoliceProcessSchedule;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.service.PoliceProcessScheduleService;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.util.PolicyProcessExportUtil;
+import com.jeeplus.modules.cg.reservemanagementcenter.policyProcess.util.PolicyProcessImportUtil;
+import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.service.ProjectTypeVerificateService;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
+import com.jeeplus.modules.sg.managementcenter.materialproject.util.ImportUtil;
+import com.jeeplus.modules.sg.picking.activiti.entity.PickList;
+import com.jeeplus.modules.sg.raiseCapital.service.RaiseCapitalService;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+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.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 政策处理进度表
+ * @author 王强
+ * @version 1.0
+ * @date 2023-09-01 15:41
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/cg/policeProcess/schedule")
+public class PoliceProcessScheduleController extends BaseController {
+
+    @Autowired
+    private PoliceProcessScheduleService scheduleService;
+
+    @Autowired
+    private ProjectTypeVerificateService verificateService;
+
+    @Autowired
+    private RaiseCapitalService raiseCapitalService;
+
+    @ModelAttribute
+    public PoliceProcessSchedule get(@RequestParam(required = false) String id) {
+        PoliceProcessSchedule entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = scheduleService.get(id);
+        }
+        if (entity == null) {
+            entity = new PoliceProcessSchedule();
+        }
+
+        List<String> vaList = scheduleService.getInfoByProReserveId(entity.getProjectReserveId());
+        StringJoiner joiner = new StringJoiner("");
+        for (String val : vaList){
+            joiner.add(val);
+        }
+        if (StringUtils.isNotBlank(joiner.toString()) && !joiner.toString().equals("null")){
+            if (joiner.toString().contains("是") && joiner.toString().contains("否")){
+                entity.setAdministrativeProgress("部分完成");
+            }else if (joiner.toString().matches("^是*$")){
+                entity.setAdministrativeProgress("已完成");
+            }
+        } else {
+            entity.setAdministrativeProgress("洽谈中");
+        }
+        if (StringUtils.isBlank(entity.getProjectScheduleNum())){
+            entity.setAdministrativeProgress("无政处");
+        }
+        List<String> value = scheduleService.getJcInfoByProReserveId(entity.getProjectReserveId());
+        StringJoiner joiner2 = new StringJoiner("");
+        for (String val : value){
+            joiner2.add(val);
+        }
+        if (StringUtils.isNotBlank(joiner2.toString()) && !joiner2.toString().equals("null")){
+            if (joiner2.toString().matches("^是*$")){
+                //查最晚时间
+                String dateVal = scheduleService.getDateValByProReserveId(entity.getProjectReserveId());
+                entity.setEntryAllowed("是");
+                entity.setEntryAllowedTime(dateVal);
+            }else {
+                entity.setEntryAllowed("否");
+            }
+        }else{
+            entity.setEntryAllowed("否");
+        }
+        return entity;
+    }
+
+    /**
+     * 项目储备信息列表页面
+     * @param reserveManagement
+     * @param model
+     * @return
+     */
+    @RequiresPermissions("cg:policeProcess:schedule:list")
+    @RequestMapping(value = "skipList")
+    public String skipList(PoliceProcessSchedule reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        return "modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementInformation";
+    }
+
+    /**
+     * 查看表单页面
+     */
+    @RequiresPermissions(value={"cg:policeProcess:schedule:view"},logical= Logical.OR)
+    @RequestMapping(value = "view")
+    public String view(PoliceProcessSchedule reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        return "modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementView";
+    }
+
+    /**
+     * 项目储备信息数据列表
+     * @param reserveManagement
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("cg:policeProcess:schedule:list")
+    @RequestMapping(value = "list")
+    public Map<String, Object> basicData(PoliceProcessSchedule reserveManagement, HttpServletRequest request, HttpServletResponse response, Model model) {
+
+        Page<PoliceProcessSchedule> page = scheduleService.findPage(new Page<PoliceProcessSchedule>(request, response), reserveManagement);
+        //根据projectReserveId查所有的是否完成财务报销及是否可进场
+        List<PoliceProcessSchedule> list = page.getList();
+
+        List<String> nameList = new ArrayList<>();
+        //获取所有小类的名称
+        List<PickList> pickListList = raiseCapitalService.newAllList();
+        if (null != pickListList) {
+            pickListList.forEach(k->{
+                if (k.getName().equals("三、设备")){
+                    k.getMdTheClassList().forEach(v->{
+                        v.getMdSmallClassList().forEach(na->{
+                            nameList.add(na.getName());
+                        });
+                    });
+                }
+            });
+        }
+
+        for (int i=0;i<list.size();i++){
+
+            //根据项目储备id去在线开甲供材表中查询物理信息
+            List<String> materialNameList = verificateService.getMaterialName(list.get(i).getProjectName());
+            if (null != nameList & null != materialNameList){
+                int finalI = i;
+                nameList.forEach(n->{
+                    if (StringUtils.isBlank(list.get(finalI).getProjectNature())){
+                        if (materialNameList.contains(n)){
+                            list.get(finalI).setProjectNature("资本");
+                        } else {
+                            list.get(finalI).setProjectNature("成本");
+                        }
+                    }
+                });
+            }
+
+            List<String> vaList = scheduleService.getInfoByProReserveId(list.get(i).getProjectReserveId());
+            StringJoiner joiner = new StringJoiner("");
+            for (String val : vaList){
+                joiner.add(val);
+            }
+            if (StringUtils.isNotBlank(joiner.toString()) && !joiner.toString().equals("null")){
+                if (joiner.toString().contains("是") && joiner.toString().contains("否")){
+                    list.get(i).setAdministrativeProgress("部分完成");
+                }else if (joiner.toString().matches("^是*$")){
+                    list.get(i).setAdministrativeProgress("已完成");
+                }
+            } else {
+                list.get(i).setAdministrativeProgress("洽谈中");
+            }
+            if (StringUtils.isBlank(list.get(i).getProjectScheduleNum())){
+                list.get(i).setAdministrativeProgress("无政处");
+            }
+            List<String> value = scheduleService.getJcInfoByProReserveId(list.get(i).getProjectReserveId());
+            StringJoiner joiner2 = new StringJoiner("");
+            for (String val : value){
+                joiner2.add(val);
+            }
+            if (StringUtils.isNotBlank(joiner2.toString()) && !joiner2.toString().equals("null")){
+                if (joiner2.toString().matches("^是*$")){
+                    //查最晚时间
+                    String dateVal = scheduleService.getDateValByProReserveId(list.get(i).getProjectReserveId());
+                    list.get(i).setEntryAllowed("是");
+                    list.get(i).setEntryAllowedTime(dateVal);
+                }else {
+                    list.get(i).setEntryAllowed("否");
+                }
+            }else{
+                list.get(i).setEntryAllowed("否");
+            }
+        }
+
+        return getBootstrapData(page);
+    }
+
+    /**
+     * 专职人员增加,编辑表单页面
+     * @param reserveManagement
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"cg:policeProcess:schedule:add","cg:policeProcess:schedule:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(PoliceProcessSchedule reserveManagement, Model model) {
+        model.addAttribute("reserveManagement", reserveManagement);
+        //判断id是否为空 如果未空则为新增 否则为修改
+        if(StringUtils.isBlank(reserveManagement.getId())){
+            return "modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementForm";
+        }
+        return "modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementModifyByzz";
+    }
+
+    /**
+     * 专职人员保存表单
+     * @param reserveManagement
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"cg:policeProcess:schedule:add"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public AjaxJson save(PoliceProcessSchedule reserveManagement){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(reserveManagement);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //新增或编辑表单保存
+        scheduleService.save(reserveManagement);//保存
+        j.setSuccess(true);
+        j.setMsg("保存政策处理进度表信息成功");
+        return j;
+    }
+
+    /**
+     * 专职人员修改表单
+     * @param reserveManagement
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"cg:policeProcess:schedule:edit"},logical=Logical.OR)
+    @RequestMapping(value = "update")
+    public AjaxJson update(PoliceProcessSchedule reserveManagement){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(reserveManagement);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //根据项目储备编号查是否有改数据
+        PoliceProcessSchedule safety = scheduleService.getByReserveId(reserveManagement.getProjectReserveId());
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        if (null == safety){
+            safety = new PoliceProcessSchedule();
+            safety.setProjectReserveId(reserveManagement.getProjectReserveId());
+            safety.setDesignChangeRequired(reserveManagement.getDesignChangeRequired());
+            safety.setScheduleRemarks(reserveManagement.getScheduleRemarks());
+            scheduleService.save(safety);
+        }else {
+            safety.setDesignChangeRequired(reserveManagement.getDesignChangeRequired());
+            safety.setScheduleRemarks(reserveManagement.getScheduleRemarks());
+            //新增或编辑表单保存
+            scheduleService.update(safety);
+        }
+
+        j.setSuccess(true);
+        j.setMsg("修改政策处理进度表信息成功");
+        return j;
+    }
+
+    /**
+     * 导入Excel数据
+     */
+    @ResponseBody
+    @RequiresPermissions("cg:policeProcess:schedule:import")
+    @RequestMapping(value = "import")
+    public AjaxJson importBasic(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        try {
+            ImportUtil importUtil = new ImportUtil(file, 0, 0);
+
+            //从数据库中查出所有的 项目储备编号
+            List<String> proIdList = scheduleService.getAllProId();
+
+            //从基本数据表中查出所有的 项目储备编号
+            List<String> proIdList2 = scheduleService.getAllProId2();
+
+            //获取导入表格所有数据
+            List<PoliceProcessSchedule> reserveManagementList = PolicyProcessImportUtil.getPoliceProcessScheduleUtil(importUtil,proIdList,proIdList2);
+            //查询已有的参数数据 并分类返回已存在数据和未存在数据
+            Map map = scheduleService.getExistProjectList(reserveManagementList);
+            //未存在数据
+            List<PoliceProcessSchedule> withoutList = (List<PoliceProcessSchedule>) map.get("without");
+            //已存在数据
+            List<PoliceProcessSchedule> existList = (List<PoliceProcessSchedule>) map.get("exist");
+
+            //对未存在的数据进行批量导入
+            if(withoutList.size()>0){
+                scheduleService.insertList(withoutList);
+            }
+
+            //对已存在的数据进行修改
+            if(existList.size()>0){
+                for (PoliceProcessSchedule reserveManagement : existList) {
+                    scheduleService.update(reserveManagement);
+                }
+            }
+            int i = withoutList.size() + existList.size();
+            j.setMsg("已成功导入" + i + "条政策处理进度表信息记录");
+
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入政策处理进度表信息失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    //导出excel
+    @ResponseBody
+    @RequiresPermissions("cg:policeProcess:schedule:export")
+    @RequestMapping(value = "export")
+    public void exportExcel(PoliceProcessSchedule reserveManagement, HttpServletRequest request, HttpServletResponse response) {
+        List<PoliceProcessSchedule> list = scheduleService.exportFindList(reserveManagement);
+
+        //生成序列号
+        int j = 1;
+        for (PoliceProcessSchedule s : list) {
+            s.setId(String.valueOf(j));
+            j++;
+        }
+
+        for (int i=0;i<list.size();i++){
+            List<String> vaList = scheduleService.getInfoByProReserveId(list.get(i).getProjectReserveId());
+            StringJoiner joiner = new StringJoiner("");
+            for (String val : vaList){
+                joiner.add(val);
+            }
+            if (StringUtils.isNotBlank(joiner.toString()) && !joiner.toString().equals("null")){
+                if (joiner.toString().contains("是") && joiner.toString().contains("否")){
+                    list.get(i).setAdministrativeProgress("部分完成");
+                }else if (joiner.toString().matches("^是*$")){
+                    list.get(i).setAdministrativeProgress("已完成");
+                }
+            } else {
+                list.get(i).setAdministrativeProgress("洽谈中");
+            }
+            if (StringUtils.isBlank(list.get(i).getProjectScheduleNum())){
+                list.get(i).setAdministrativeProgress("无政处");
+            }
+            List<String> value = scheduleService.getJcInfoByProReserveId(list.get(i).getProjectReserveId());
+            StringJoiner joiner2 = new StringJoiner("");
+            for (String val : value){
+                joiner2.add(val);
+            }
+            if (StringUtils.isNotBlank(joiner2.toString()) && !joiner2.toString().equals("null")){
+                if (joiner2.toString().matches("^是*$")){
+                    //查最晚时间
+                    String dateVal = scheduleService.getDateValByProReserveId(list.get(i).getProjectReserveId());
+                    list.get(i).setEntryAllowed("是");
+                    list.get(i).setEntryAllowedTime(dateVal);
+                }else {
+                    list.get(i).setEntryAllowed("否");
+                }
+            }else{
+                list.get(i).setEntryAllowed("否");
+            }
+        }
+
+        PolicyProcessExportUtil util = PolicyProcessExportUtil.getOne();
+        XSSFWorkbook workbook = util.getWorkbook("policeProcessSchedule");
+        util.exportSchedule(response,workbook,list);
+    }
+}

+ 11 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/DemoliteMapper.java

@@ -21,8 +21,19 @@ public interface DemoliteMapper extends BaseMapper<Demolite> {
     void insertList(@Param("list") List<Demolite> list);
 
     /**
+     * 插入配网对应的项目拆旧清册信息
+     * */
+    void insertDistributionList(@Param("list") List<Demolite> list);
+
+    /**
      * 根据 projectReserveId将相关的材料拆旧清册数据清空
      * @param projectReserveId
      */
     void deleteByProjectReserveId(String projectReserveId);
+
+    /**
+     * 根据 projectReserveId将配网相关的材料拆旧清册数据清空
+     * @param projectReserveId
+     */
+    void deleteDistributionByProjectReserveId(String projectReserveId);
 }

+ 8 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/DocumentInfoMapper.java

@@ -24,4 +24,12 @@ public interface DocumentInfoMapper extends BaseMapper<DocumentInfo> {
      * @return
      */
     DocumentInfo getInfoByProId(String proId);
+
+    /**
+     * 根据  项目储备id 删除配网流程文件数据
+     * @param projectReserveId
+     */
+    void deleteDistributionFileInfoByProId(String projectReserveId);
+
+    void insertDistributionFileInfo(DocumentInfo info);
 }

+ 10 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/ProjectTypeVerificateMapper.java

@@ -3,6 +3,7 @@ package com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.mapper;
 import com.jeeplus.core.persistence.BaseMapper;
 import com.jeeplus.core.persistence.annotation.MyBatisMapper;
 import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.entity.ProjectTypeVerificate;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.DemoliteList;
 import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
 import org.apache.ibatis.annotations.Param;
 
@@ -22,6 +23,15 @@ public interface ProjectTypeVerificateMapper extends BaseMapper<ProjectTypeVerif
      */
     List<String> getMaterialName(String projectName);
 
+    List<DemoliteList> getByProjectName();
+
+    /**
+     * 根据项目名称去在线开甲供材表中查询物料名称
+     * @param projectName
+     * @return
+     */
+    List<String> getMaterialName2(String projectName);
+
     /**
      * 导出数据查询
      * @param verificate

+ 24 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/ReserveSummaryProcessMapper.java

@@ -121,6 +121,10 @@ public interface ReserveSummaryProcessMapper extends BaseMapper<ReserveSummaryPr
     void deleteMaterial(String projectName);
 
     /**
+     * 通过项目名称删除配网对应甲供材信息数据
+     * */
+    void deleteDistributionMaterial(String projectName);
+    /**
      * 根据物料编码查出所有的 总数之和
      * @param materialCode
      * @return
@@ -133,6 +137,11 @@ public interface ReserveSummaryProcessMapper extends BaseMapper<ReserveSummaryPr
     void insertList(@Param("list") List<MaterialInfo> list);
 
     /**
+     * 插入配网对应的项目甲供材信息
+     * */
+    void insertDistributionList(@Param("list") List<MaterialInfo> list);
+
+    /**
      * 通过储备项目编号查询项目是否有甲供材清册
      */
     Integer findMaterialData(String procInsId);
@@ -153,16 +162,31 @@ public interface ReserveSummaryProcessMapper extends BaseMapper<ReserveSummaryPr
     List<ReserveSummaryProcess> findAllUpload(ReserveSummaryProcess reserveProcess);
 
     /**
+     * 储备文件管理,
+     */
+    List<ReserveSummaryProcess> findAllUpload2(ReserveSummaryProcess reserveProcess);
+
+    /**
      * 储备流程当前流程所有的甲供材数据
      */
     List<MaterialInfo> findMaterialList(MaterialInfo entity);
 
     /**
+     * 配网流程当前流程所有的甲供材数据
+     */
+    List<MaterialInfo> findMaterialList2(MaterialInfo entity);
+
+    /**
      * 通过项目名称导出符合条件的数据
      * */
     List<MaterialInfo> findMaterialActiviti(String projectName);
 
     /**
+     * 通过项目名称导出符合条件的数据
+     * */
+    List<MaterialInfo> findMaterialActiviti2(String projectName);
+
+    /**
      * 根据用户名查出登录名
      * @param name
      * @return

+ 35 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/xml/DemoliteMapper.xml

@@ -33,7 +33,42 @@
             )
         </foreach>
     </insert>
+    <insert id="insertDistributionList">
+        insert INTO cg_demolition_list_distribution(
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        name,
+        specification,
+        unit,
+        count,
+        projectReserveId,
+        remark
+        ) VALUES
+        <foreach collection="list" item="item" index="index" separator="," >
+            (
+            #{item.id},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate},
+            #{item.delFlag},
+            #{item.name},
+            #{item.specification},
+            #{item.unit},
+            #{item.count},
+            #{item.projectReserveId},
+            #{item.remark}
+            )
+        </foreach>
+    </insert>
     <delete id="deleteByProjectReserveId">
         delete from cg_demolition_list where projectReserveId = #{projectReserveId}
     </delete>
+    <delete id="deleteDistributionByProjectReserveId">
+        delete from cg_demolition_list_distribution where projectReserveId = #{projectReserveId}
+    </delete>
 </mapper>

+ 36 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/xml/DocumentInfoMapper.xml

@@ -52,9 +52,45 @@
             #{approvalForm}
             )
     </insert>
+    <insert id="insertDistributionFileInfo">
+        insert into cg_document_info_distribution (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        projectReserveId,
+		budgetStatement,
+		projectProposal,
+		drawings,
+		drawingSpecification,
+		demolition,
+		approvalForm
+        )
+        values
+            (
+            #{id},
+            #{createBy.id},
+            #{createDate},
+            #{updateBy.id},
+            #{updateDate},
+            #{delFlag},
+            #{projectReserveId},
+            #{budgetStatement},
+            #{projectProposal},
+            #{drawings},
+            #{drawingSpecification},
+            #{demolition},
+            #{approvalForm}
+            )
+    </insert>
     <delete id="deleteInfoByProId">
         delete from cg_document_info where projectReserveId = #{proId}
     </delete>
+    <delete id="deleteDistributionFileInfoByProId">
+        delete from cg_document_info_distribution where projectReserveId = #{proId}
+    </delete>
     <select id="getInfoByProId"
             resultType="com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.entity.DocumentInfo">
         select

+ 7 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/xml/ProjectTypeVerificateMapper.xml

@@ -233,5 +233,12 @@
     <select id="getMaterialName" resultType="java.lang.String">
         select materialName from cg_material_data where projectName = #{projectName}
     </select>
+    <select id="getMaterialName2" resultType="java.lang.String">
+        select materialName from cg_material_data_distribution where projectName = #{projectName}
+    </select>
+    <select id="getByProjectName"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.DemoliteList">
+        select materialName,projectName from cg_material_data
+    </select>
 
 </mapper>

+ 117 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/mapper/xml/ReserveSummaryProcessMapper.xml

@@ -161,6 +161,50 @@
                 #{formKey}
                 )
     </insert>
+    <insert id="insertDistributionList">
+        insert INTO cg_material_data_distribution(
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        remarks,
+        del_flag,
+        projectName,
+        materialCode,
+        materialName,
+        extendDescription ,
+        unit ,
+        totalCount,
+        weightKg,
+        weightTon,
+        supplyType,
+        note,
+        state
+        ) VALUES
+        <foreach collection="list" item="item" index="index" separator="," >
+            (
+            #{item.id},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate},
+            #{item.remarks},
+            #{item.delFlag},
+            #{item.projectName},
+            #{item.materialCode},
+            #{item.materialName},
+            #{item.extendDescription},
+            #{item.unit},
+            #{item.totalCount},
+            #{item.weightKg},
+            #{item.weightTon},
+            #{item.supplyType},
+            #{item.note},
+            #{item.state}
+            )
+        </foreach>
+    </insert>
     <update id="updateDesign">
         update cg_personnel_activiti
         set budgetStatement = #{budgetStatement},
@@ -197,6 +241,10 @@
     <delete id="deleteActivityByProId">
         delete from cg_personnel_activiti where projectReserveId = #{proId}
     </delete>
+    <delete id="deleteDistributionMaterial">
+        delete from cg_material_data_distribution
+        where projectName = #{projectName}
+    </delete>
     <select id="findProjectId" resultType="java.lang.String">
         select projectReserveId from cg_personnel_activiti where id = #{id};
     </select>
@@ -367,4 +415,73 @@
     <select id="getInfoByProId" resultType="java.lang.String">
          select proc_ins_id as procInsId from cg_personnel_activiti where projectReserveId = #{proId}
     </select>
+    <select id="findMaterialActiviti2"
+            resultType="com.jeeplus.modules.sg.managementcenter.materialinfo.entity.MaterialInfo">
+        select
+        projectName,
+        materialCode,
+        materialName,
+        extendDescription,
+        unit,
+        totalCount,
+        weightKg,
+        weightTon,
+        supplyType,
+        note,
+        state
+        from
+        cg_material_data_distribution
+        where projectName = #{projectName}
+    </select>
+    <select id="findAllUpload2"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.entity.ReserveSummaryProcess">
+        select
+        b.id,
+        b.projectReserveId,
+        c.projectName,
+        a.budgetStatement,
+        a.projectProposal,
+        a.drawings,
+        a.drawingSpecification,
+        a.demolition,
+        a.approvalForm
+        from cg_document_info_distribution a
+        left join cg_reserve_distribution_network b on a.projectReserveId = b.projectReserveId
+        left join cg_reserve_process c on a.projectReserveId = c.projectReserveId
+        <where>
+            1=1
+            <if test="projectReserveId!=null and projectReserveId !=''">
+                and b.projectReserveId = #{projectReserveId}
+            </if>
+        </where>
+    </select>
+    <select id="findMaterialList2"
+            resultType="com.jeeplus.modules.sg.managementcenter.materialinfo.entity.MaterialInfo">
+        SELECT
+        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.projectName AS "projectName",
+        a.materialCode AS "materialCode",
+        a.materialName AS "materialName",
+        a.extendDescription AS "extendDescription",
+        a.unit AS "unit",
+        a.totalCount AS "totalCount",
+        a.weightKg AS "weightKg",
+        a.weightTon AS "weightTon",
+        a.supplyType AS "supplyType",
+        a.note AS "note",
+        a.state AS "state"
+        FROM cg_material_data_distribution a
+        <where>
+            1=1
+            <if test="projectName!=null and projectName != ''">
+                and a.projectName = #{projectName}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 12 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/service/DemoliteService.java

@@ -38,4 +38,16 @@ public class DemoliteService extends CrudService<DemoliteMapper, Demolite> {
         dao.deleteByProjectReserveId(projectReserveId);
     }
 
+    @Transactional(readOnly = false)
+    public void insertDistributionList(@Param("list") List<Demolite> list){
+        for(Demolite maintainData : list){
+            maintainData.preInsert();
+        }
+        dao.insertDistributionList(list);
+    }
+
+    @Transactional(readOnly = false)
+    public void deleteDistributionByProjectReserveId(String projectReserveId){
+        dao.deleteDistributionByProjectReserveId(projectReserveId);
+    }
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/service/DocumentInfoService.java

@@ -45,4 +45,13 @@ public class DocumentInfoService extends CrudService<DocumentInfoMapper, Documen
             dao.insert(info);
         }
     }
+
+    @Transactional(readOnly = false)
+    public void distributionFileSave(DocumentInfo info){
+        if (info.getIsNewRecord()){
+            info.preInsert();
+            dao.deleteDistributionFileInfoByProId(info.getProjectReserveId());
+            dao.insertDistributionFileInfo(info);
+        }
+    }
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/service/ProjectTypeVerificateService.java

@@ -5,6 +5,7 @@ import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.entity.ProjectTypeVerificate;
 import com.jeeplus.modules.cg.reservemanagementcenter.reserveManage.mapper.ProjectTypeVerificateMapper;
+import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.DemoliteList;
 import com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -28,6 +29,14 @@ public class ProjectTypeVerificateService extends CrudService<ProjectTypeVerific
         return dao.getMaterialName(projectName);
     }
 
+    public List<DemoliteList> getByProjectName(){
+        return dao.getByProjectName();
+    }
+
+    public List<String> getMaterialName2(String projectName){
+        return dao.getMaterialName2(projectName);
+    }
+
     public Page<ProjectTypeVerificate> findPage(Page<ProjectTypeVerificate> page, ProjectTypeVerificate verificate) {
         if (StringUtils.isBlank(verificate.getProjectYear())){
             verificate.setProjectYear(LocalDate.now().getYear()+"");

+ 123 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/service/ReserveSummaryProcessService.java

@@ -230,6 +230,97 @@ public class ReserveSummaryProcessService extends CrudService<ReserveSummaryProc
         raiseCapitalDesignService.saveCableOnline(cableSectionData,projectReserveId);
     }
 
+    /**
+     *在年度物资上报统计表中保存项目信息,在年度上报明细表中保存物资信息
+     */
+    @Transactional(readOnly = false)
+    public void saveDistributData(MultipartFile file,String projectReserveId) throws IOException, InvalidFormatException {
+        ImportExcel module = new ImportExcel(file,1,"模块表");
+        Row row = module.getRow(0);
+        Object obj = module.getCellValue(row, 1);
+        if(obj==null){
+            throw new RuntimeException("找不到项目名称!");
+        }
+        String projectName = ((String) obj).trim();
+        //删除对应项目名称的甲供材信息
+        mapper.deleteDistributionMaterial(projectName);
+        ImportExcel pick = new ImportExcel(file,7,"领料清单");
+        List<MaterialInfo> materialInfos = MaterialInfoUtil.getCbData(pick,projectName);   //获取领料清单数据
+        List<MaterialInfo> materialInfoList = new ArrayList<>();
+        for (MaterialInfo materialInfo : materialInfos) {
+            if (materialInfo.getTotalCount()>0){
+                materialInfoList.add(materialInfo);
+            }
+        }
+        List<MaterialInfo> list = MaterialInfoUtil.combineData(materialInfoList);      //合并数据
+        //通过甲供材信息比对物料规范获得项目建设规模
+        saveDistributionList(list);
+        //获取电缆分段表的数据,将数据存入到redis中
+//        ImportUtil importUtil = new ImportUtil(file, 0, 5);
+        ImportExcel importUtil = new ImportExcel(file,3,"电缆分段表");
+        int lastRow = importUtil.getLastDataRowNum();
+        //获取指定的列数据  YJV22-3×400mm²单元格下的行数据
+        List<CableSectionInfo> cableFourHundredList = new ArrayList<>();
+        List<CableSectionInfo> cableThreeHundredList = new ArrayList<>();   //YJV22-3×300mm²
+        List<CableSectionInfo> cableTwoHundredFortyList = new ArrayList<>();    //YJV22-3×240mm²
+        List<CableSectionInfo> cableSeventyList = new ArrayList<>();       //YJV22-3×70mm²
+        for (int i=2;i<=lastRow;i++){
+            Row infoRow = importUtil.getRow(i);
+            CableSectionInfo hundredInfo = new CableSectionInfo();
+            if (StringUtils.isNotBlank(importUtil.getCellValue(infoRow,0).toString()) && !importUtil.getCellValue(infoRow,0).toString().equals("总长(km):")){
+                hundredInfo.setDestination(importUtil.getCellValue(infoRow,0).toString());
+                hundredInfo.setPathLength(importUtil.getCellValue(infoRow,1).toString());
+                hundredInfo.setUpperRod(importUtil.getCellValue(infoRow,2).toString());
+                hundredInfo.setArrival(importUtil.getCellValue(infoRow,3).toString());
+                hundredInfo.setIncomingEquipment(importUtil.getCellValue(infoRow,4).toString());
+                hundredInfo.setCoefficient(importUtil.getCellValue(infoRow,5).toString());
+                hundredInfo.setElectricalChief(importUtil.getCellValue(infoRow,6).toString());
+                cableFourHundredList.add(hundredInfo);
+            }
+
+            if (StringUtils.isNotBlank(importUtil.getCellValue(infoRow,8).toString())&& !importUtil.getCellValue(infoRow,0).toString().equals("总长(km):")){
+                CableSectionInfo hundredAndTwenty = new CableSectionInfo();
+                hundredAndTwenty.setDestination(importUtil.getCellValue(infoRow,8).toString());
+                hundredAndTwenty.setPathLength(importUtil.getCellValue(infoRow,9).toString());
+                hundredAndTwenty.setUpperRod(importUtil.getCellValue(infoRow,10).toString());
+                hundredAndTwenty.setArrival(importUtil.getCellValue(infoRow,11).toString());
+                hundredAndTwenty.setIncomingEquipment(importUtil.getCellValue(infoRow,12).toString());
+                hundredAndTwenty.setCoefficient(importUtil.getCellValue(infoRow,13).toString());
+                hundredAndTwenty.setElectricalChief(importUtil.getCellValue(infoRow,14).toString());
+                cableThreeHundredList.add(hundredAndTwenty);
+            }
+
+            if (StringUtils.isNotBlank(importUtil.getCellValue(infoRow,16).toString())&& !importUtil.getCellValue(infoRow,0).toString().equals("总长(km):")){
+                CableSectionInfo hundredAndTwenty = new CableSectionInfo();
+                hundredAndTwenty.setDestination(importUtil.getCellValue(infoRow,16).toString());
+                hundredAndTwenty.setPathLength(importUtil.getCellValue(infoRow,17).toString());
+                hundredAndTwenty.setUpperRod(importUtil.getCellValue(infoRow,18).toString());
+                hundredAndTwenty.setArrival(importUtil.getCellValue(infoRow,19).toString());
+                hundredAndTwenty.setIncomingEquipment(importUtil.getCellValue(infoRow,20).toString());
+                hundredAndTwenty.setCoefficient(importUtil.getCellValue(infoRow,21).toString());
+                hundredAndTwenty.setElectricalChief(importUtil.getCellValue(infoRow,22).toString());
+                cableTwoHundredFortyList.add(hundredAndTwenty);
+            }
+            if (StringUtils.isNotBlank(importUtil.getCellValue(infoRow,24).toString())&& !importUtil.getCellValue(infoRow,0).toString().equals("总长(km):")){
+                CableSectionInfo hundredAndTwenty = new CableSectionInfo();
+                hundredAndTwenty.setDestination(importUtil.getCellValue(infoRow,24).toString());
+                hundredAndTwenty.setPathLength(importUtil.getCellValue(infoRow,25).toString());
+                hundredAndTwenty.setUpperRod(importUtil.getCellValue(infoRow,26).toString());
+                hundredAndTwenty.setArrival(importUtil.getCellValue(infoRow,27).toString());
+                hundredAndTwenty.setIncomingEquipment( importUtil.getCellValue(infoRow,28).toString());
+                hundredAndTwenty.setCoefficient(importUtil.getCellValue(infoRow,29).toString());
+                hundredAndTwenty.setElectricalChief(importUtil.getCellValue(infoRow,30).toString());
+                cableSeventyList.add(hundredAndTwenty);
+            }
+        }
+        CableSectionData cableSectionData = new CableSectionData();
+        cableSectionData.setCableFourHundredList(cableFourHundredList);
+        cableSectionData.setCableThreeHundredList(cableThreeHundredList);
+        cableSectionData.setCableTwoHundredFortyList(cableTwoHundredFortyList);
+        cableSectionData.setCableSeventyList(cableSeventyList);
+        raiseCapitalDesignService.saveCableOnline(cableSectionData,projectReserveId);
+    }
+
     @Transactional(readOnly = false)
     public void saveList(List<MaterialInfo> list) {
 
@@ -239,6 +330,17 @@ public class ReserveSummaryProcessService extends CrudService<ReserveSummaryProc
         }
         mapper.insertList(list);
     }
+
+    @Transactional(readOnly = false)
+    public void saveDistributionList(List<MaterialInfo> list) {
+
+        for(MaterialInfo maintainData : list){
+            maintainData.preInsert();
+            mapper.deleteDistributionMaterial(maintainData.getProjectName());
+        }
+        mapper.insertDistributionList(list);
+    }
+
     @Transactional(readOnly = false)
     public void deleteMaterial(String projectName){
         mapper.deleteMaterial(projectName);
@@ -352,6 +454,13 @@ public class ReserveSummaryProcessService extends CrudService<ReserveSummaryProc
         return page;
     }
 
+    public Page<ReserveSummaryProcess> findAllUploadPage2(Page<ReserveSummaryProcess> page, ReserveSummaryProcess entity) {
+        dataRuleFilter(entity);
+        entity.setPage(page);
+        page.setList(mapper.findAllUpload2(entity));
+        return page;
+    }
+
     public Page<MaterialInfo> findMaterialPage(Page<MaterialInfo> page, MaterialInfo entity) {
         dataRuleFilter(entity);
         entity.setPage(page);
@@ -359,6 +468,13 @@ public class ReserveSummaryProcessService extends CrudService<ReserveSummaryProc
         return page;
     }
 
+    public Page<MaterialInfo> findMaterialPage2(Page<MaterialInfo> page, MaterialInfo entity) {
+        dataRuleFilter(entity);
+        entity.setPage(page);
+        page.setList(mapper.findMaterialList2(entity));
+        return page;
+    }
+
     /**
      * 通过项目名称导出符合条件的数据
      */
@@ -367,6 +483,13 @@ public class ReserveSummaryProcessService extends CrudService<ReserveSummaryProc
     }
 
     /**
+     * 通过项目名称导出符合条件的数据
+     */
+    public List<MaterialInfo> findMaterialActiviti2(String projectName) {
+        return mapper.findMaterialActiviti2(projectName);
+    }
+
+    /**
      * 项目经理判定是否通过
      */
     @Transactional(readOnly = false)

+ 83 - 1
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/web/ProcessController.java

@@ -380,7 +380,7 @@ public class ProcessController extends BaseController {
                         info.setSupplyType(showList.getMdTheParty());
                         info.setNote(showList.getMdText());
                         infoList.add(info);
-                    }
+                     }
                     //保存甲供材信息
                     reserveProcessService.saveList(infoList);
                     //修改项目设计单位上传文件部分
@@ -701,6 +701,61 @@ public class ProcessController extends BaseController {
     }
 
     /**
+     * 储备流程,文件显示管理
+     */
+    @ResponseBody
+    @RequestMapping(value = "allUploadData2")
+    public Map<String, Object> allUploadData2(ReserveSummaryProcess reserveProcess, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<ReserveSummaryProcess> page = reserveProcessService.findAllUploadPage2(new Page<ReserveSummaryProcess>(request, response), reserveProcess);
+        //当判定系统为linux的时候
+        if (Global.SYS_TYPE.equals("2")) {
+            List<ReserveSummaryProcess> list = page.getList();
+            for (ReserveSummaryProcess upload :
+                    list) {
+                String a = "";
+                String b = "";
+                String c = "";
+                String d = "";
+                String path = upload.getBudgetStatement();
+                if (null != path && !"".equals(path)) {
+                    String[] split = path.split("\\|");
+                    for (int i = 0; i < split.length; i++) {
+                        a += "http://" + request.getServerName() + split[i] + "|";
+                    }
+                    upload.setBudgetStatement(a);
+                }
+
+                String projectProposal = upload.getProjectProposal();
+                if (null != projectProposal && !"".equals(projectProposal)) {
+                    String[] split1 = projectProposal.split("\\|");
+                    for (int i = 0; i < split1.length; i++) {
+                        b += "http://" + request.getServerName() + split1[i] + "|";
+                    }
+                    upload.setProjectProposal(b);
+                }
+
+                String drawings = upload.getDrawings();
+                if (null != drawings && !"".equals(drawings)) {
+                    String[] split2 = drawings.split("\\|");
+                    for (int i = 0; i < split2.length; i++) {
+                        c += "http://" + request.getServerName() + split2[i] + "|";
+                    }
+                    upload.setDrawings(c);
+                }
+
+                String drawingSpecification = upload.getDrawingSpecification();
+                if (null != drawingSpecification && !"".equals(drawingSpecification)) {
+                    String[] split3 = drawingSpecification.split("\\|");
+                    for (int i = 0; i < split3.length; i++) {
+                        d += "http://" + request.getServerName() + split3[i] + "|";
+                    }
+                    upload.setDrawingSpecification(d);
+                }
+            }
+        }
+        return getBootstrapData(page);
+    }
+    /**
      * 甲供材 列表数据
      */
     @ResponseBody
@@ -710,6 +765,15 @@ public class ProcessController extends BaseController {
         return getBootstrapData(page);
     }
 
+    /**
+     * 甲供材 列表数据
+     */
+    @ResponseBody
+    @RequestMapping(value = "materialData2")
+    public Map<String, Object> data2(MaterialInfo materialInfo, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<MaterialInfo> page = reserveProcessService.findMaterialPage2(new Page<MaterialInfo>(request, response), materialInfo);
+        return getBootstrapData(page);
+    }
     @ResponseBody
     @RequestMapping(value = "exportAct")
     public AjaxJson exportAct(String projectName, ReserveProcess reserveProcess, HttpServletRequest request, HttpServletResponse response) {
@@ -728,6 +792,24 @@ public class ProcessController extends BaseController {
         return j;
     }
 
+    @ResponseBody
+    @RequestMapping(value = "exportAct2")
+    public AjaxJson exportAct2(String projectName, ReserveProcess reserveProcess, HttpServletRequest request, HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "甲供材清册" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
+            List<MaterialInfo> list = reserveProcessService.findMaterialActiviti2(projectName);
+            new ExportExcel("甲供材清册", MaterialInfo.class).setDataList(list).write(response, fileName).dispose();
+            j.setSuccess(true);
+            j.setMsg("导出成功!");
+            return j;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导出甲供材清册失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
     /***
      * 项目经理审图(储备专职/配网项目经理)
      * */

+ 56 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/reserveManage/web/SummaryStatisticController.java

@@ -677,6 +677,33 @@ public class SummaryStatisticController extends BaseController {
     }
 
     /**
+     * 电缆分段
+     * 查看,增加,编辑提资表单表单页面
+     */
+    @RequestMapping(value = "cableSectionForm2")
+    public String cableSectionForm2(String uuid, Model model,String projectName,String projectReserveId) {
+        List<CableSectionData> cableSectionData = raiseCapitalDesignService.getCableSectionData();
+        List<CableSectionInfo> cableFourHundredList = raiseCapitalDesignService.getCableSection(projectReserveId + "pw" + "cableFourHundred","cableFourHundred");
+        List<CableSectionInfo> cableHundredAndTwentyList = raiseCapitalDesignService.getCableSection(projectReserveId + "pw" + "cableHundredAndTwenty","cableHundredAndTwenty");
+        List<CableSectionInfo> cableThreeHundredList = raiseCapitalDesignService.getCableSection(projectReserveId + "pw" + "cableThreeHundred","cableThreeHundred");
+        List<CableSectionInfo> cableTwoHundredFortyList = raiseCapitalDesignService.getCableSection(projectReserveId + "pw" + "cableTwoHundredForty","cableTwoHundredForty");
+        List<CableSectionInfo> cableSeventyList = raiseCapitalDesignService.getCableSection(projectReserveId + "pw" + "cableSeventy","cableSeventy");
+        //获取电缆分段的系数
+        String cableFactor = DictUtils.getDictLabel("cableFactor", "designCalculateCoefficient", "");
+        model.addAttribute("cableFactor", cableFactor);
+        model.addAttribute("cableSectionData", cableSectionData);
+        model.addAttribute("cableFourHundredList", cableFourHundredList);
+        model.addAttribute("cableHundredAndTwentyList", cableHundredAndTwentyList);
+        model.addAttribute("cableThreeHundredList", cableThreeHundredList);
+        model.addAttribute("cableTwoHundredFortyList", cableTwoHundredFortyList);
+        model.addAttribute("cableSeventyList", cableSeventyList);
+        model.addAttribute("uuid", uuid);
+        model.addAttribute("projectName", projectName);
+        model.addAttribute("projectReserveId", projectReserveId);
+        return "modules/cg/reservemanagementcenter/raiseCapital/cableSectionForm2";
+    }
+
+    /**
      * 跳转架空导线处理页面
      */
     //@RequiresPermissions(value={"test:raiseCapitalDesign:view","test:raiseCapitalDesign:add","test:raiseCapitalDesign:edit"},logical=Logical.OR)
@@ -704,4 +731,33 @@ public class SummaryStatisticController extends BaseController {
         model.addAttribute("uuid", uuid);
         return "modules/cg/reservemanagementcenter/raiseCapital/aerialConductorForm";
     }
+
+    /**
+     * 跳转架空导线处理页面
+     */
+    //@RequiresPermissions(value={"test:raiseCapitalDesign:view","test:raiseCapitalDesign:add","test:raiseCapitalDesign:edit"},logical=Logical.OR)
+    @RequestMapping(value = "aerialConductorForm2")
+    public String aerialConductorForm2(String uuid,String item, Model model,String projectName) {
+        //将新增页数据保存到redis中(item)
+        //raiseCapitalDesignService.disposeFormData(uuid,item);
+        //查询10KV计算系数
+        String highSingleVoltageCoefficient = DictUtils.getDictLabel("highSingleVoltageCoefficient", "designCalculateCoefficient", "");
+        String highDoubleVoltageCoefficient = DictUtils.getDictLabel("highDoubleVoltageCoefficient", "designCalculateCoefficient", "");
+        //查询0.4KV计算系数
+        String lowSingleVoltageCoefficient = DictUtils.getDictLabel("lowSingleVoltageCoefficient", "designCalculateCoefficient", "");
+        String lowDoubleVoltageCoefficient = DictUtils.getDictLabel("lowDoubleVoltageCoefficient", "designCalculateCoefficient", "");
+        //查询10KV数据
+        List<VoltageInfo> highVoltageList = raiseCapitalDesignService.getAerialConductor(uuid + "highVoltage","highVoltage");
+        //查询0.4KV数据
+        List<VoltageInfo> lowVoltageList = raiseCapitalDesignService.getAerialConductor(uuid + "lowVoltage","lowVoltage");
+        model.addAttribute("highSingleVoltageCoefficient", highSingleVoltageCoefficient);
+        model.addAttribute("highDoubleVoltageCoefficient", highDoubleVoltageCoefficient);
+        model.addAttribute("lowSingleVoltageCoefficient", lowSingleVoltageCoefficient);
+        model.addAttribute("lowDoubleVoltageCoefficient", lowDoubleVoltageCoefficient);
+        model.addAttribute("highVoltageList", highVoltageList);
+        model.addAttribute("lowVoltageList", lowVoltageList);
+        model.addAttribute("projectName", projectName);
+        model.addAttribute("uuid", uuid);
+        return "modules/cg/reservemanagementcenter/raiseCapital/aerialConductorForm2";
+    }
 }

+ 4 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/mapper/CableMapper.java

@@ -63,4 +63,8 @@ public interface CableMapper extends BaseMapper<Cable> {
     void deleteCableRedis(String projectReserveId);
 
     String getRedisIdByProjectReserveId(String reserveId);
+
+    void deleteDistributionCableRedis(String projectReserveId);
+
+    void insertDistributionIntoCableRedis(@Param("projectReserveId") String projectReserveId, @Param("redisId")String redisId);
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/mapper/ProgressStatsMapper.java

@@ -60,6 +60,13 @@ public interface ProgressStatsMapper extends BaseMapper<ProgressStats> {
     String getByProjectReserveId(String projectReserveId);
 
     /**
+     * 根据projectReserveId查出proc_ins_id
+     * @param projectReserveId
+     * @return
+     */
+    String getDistributionByProjectReserveId(String projectReserveId);
+
+    /**
      * 根据proInsId 和节点名称去 历史表中 查设计单位节点信息
      * @param proInsId
      * @param name
@@ -72,4 +79,6 @@ public interface ProgressStatsMapper extends BaseMapper<ProgressStats> {
      * @return
      */
     FeedBackBudget getByProId(String proId);
+
+    History getHistoryByStartTime(String endTime);
 }

+ 6 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/mapper/xml/CableMapper.xml

@@ -118,6 +118,9 @@
     <insert id="insertIntoCableRedis">
         insert into cg_cable_redis values (#{projectReserveId},#{redisId})
     </insert>
+    <insert id="insertDistributionIntoCableRedis">
+        insert into cg_cable_redis_distribution values (#{projectReserveId},#{redisId})
+    </insert>
     <delete id="deleteByProId">
         delete from
         cg_cable
@@ -126,6 +129,9 @@
     <delete id="deleteCableRedis">
         delete from cg_cable_redis where projectReserveId = #{projectReserveId}
     </delete>
+    <delete id="deleteDistributionCableRedis">
+        delete from cg_cable_redis_distribution where projectReserveId = #{projectReserveId}
+    </delete>
 
     <select id="findList" resultType="com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.Cable">
         select

+ 9 - 1
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/mapper/xml/ProgressStatsMapper.xml

@@ -189,7 +189,7 @@
     </select>
     <select id="getHistoryByProInsId"
             resultType="com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History">
-            SELECT ACT_NAME_,END_TIME_,START_TIME_ FROM `act_hi_actinst`
+            SELECT ACT_NAME_ as name,END_TIME_,START_TIME_ FROM `act_hi_actinst`
             WHERE PROC_INST_ID_ = #{proInsId} AND ACT_NAME_ = #{name}  ORDER BY START_TIME_ DESC
     </select>
     <select id="getByProId"
@@ -220,6 +220,14 @@
     <select id="getAllProId" resultType="java.lang.String">
         select projectReserveId from cg_reserve_process
     </select>
+    <select id="getDistributionByProjectReserveId" resultType="java.lang.String">
+        SELECT proc_ins_id from cg_personnel_activiti_distribution where projectReserveId = #{projectReserveId}
+    </select>
+    <select id="getHistoryByStartTime"
+            resultType="com.jeeplus.modules.cg.reservemanagementcenter.statisticalTable.entity.History">
+        SELECT ACT_NAME_ as name,END_TIME_,START_TIME_ FROM `act_hi_actinst`
+            WHERE START_TIME_ = #{endTime} and ACT_NAME_ IS NOT NULL
+    </select>
 
 
 </mapper>

+ 14 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/service/CableService.java

@@ -37,6 +37,11 @@ public class CableService extends CrudService<CableMapper, Cable> {
         dao.insertIntoCableRedis(projectReserveId, redisId);
     }
 
+    @Transactional(readOnly = false)
+    public void insertDistributionIntoCableRedis(String projectReserveId,String redisId){
+        dao.insertDistributionIntoCableRedis(projectReserveId, redisId);
+    }
+
     /**
      * 根据项目储备编号删除
      * @param projectReserveId
@@ -46,6 +51,15 @@ public class CableService extends CrudService<CableMapper, Cable> {
         dao.deleteCableRedis(projectReserveId);
     }
 
+    /**
+     * 根据项目储备编号删除
+     * @param projectReserveId
+     */
+    @Transactional(readOnly = false)
+    public void deleteDistributionCableRedis(String projectReserveId){
+        dao.deleteDistributionCableRedis(projectReserveId);
+    }
+
 
     /**
      * 获取所有的  项目储备编号

+ 12 - 0
src/main/java/com/jeeplus/modules/cg/reservemanagementcenter/statisticalTable/service/ProgressStatsService.java

@@ -83,6 +83,9 @@ public class ProgressStatsService extends CrudService<ProgressStatsMapper, Progr
         return dao.getByProjectReserveId(projectReserveId);
     }
 
+    public String getDistributionByProjectReserveId(String projectReserveId){
+        return dao.getDistributionByProjectReserveId(projectReserveId);
+    }
     /**
      * 根据proInsId 和节点名称去 历史表中 查设计单位节点信息
      * @param proInsId
@@ -94,6 +97,15 @@ public class ProgressStatsService extends CrudService<ProgressStatsMapper, Progr
     }
 
     /**
+     * 根据上一个节点的结束时间去查询下一个节点的信息
+     * @param endTime
+     * @return
+     */
+    public History getHistoryByStartTime(String endTime){
+        return dao.getHistoryByStartTime(endTime);
+    }
+
+    /**
      * 根据项目储备id查反馈信息
      * @return
      */

+ 38 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapital/web/RaiseCapitalController.java

@@ -128,6 +128,44 @@ public class RaiseCapitalController extends BaseController {
 		return "modules/cg/reservemanagementcenter/raiseCapital/raiseCapital";
 	}
 
+	/**
+	 * 配网-在线开甲供材列表页面
+	 */
+	@RequestMapping(value = {"distributionJgcList", ""})
+	public String distributionJgcList(RaiseCapital raiseCapital, Model model,String projectName,String projectReserveId,String uid) {
+		//创建一个临时UUID信息
+		UUID uuid = UUID.randomUUID();
+		List<PickList> pickListList = raiseCapitalService.newAllList();
+		//将新增页数据保存到redis中(item)
+		if (StringUtils.isNotBlank(uid)){
+			List<DisposeCableData> voltageDisposeDataList = raiseCapitalDesignService.disposeFormCableDataList(uid);
+			Map<String,String> map = new HashMap<>();
+			voltageDisposeDataList.forEach(vo->{
+				map.put(vo.getId(),vo.getNumber());
+			});
+			for (int i=0;i<pickListList.size();i++){
+				List<MdTheClass> mdList = pickListList.get(i).getMdTheClassList();
+				for (int j=0;j<mdList.size();j++){
+					List<MdSmallClass> smallList = mdList.get(j).getMdSmallClassList();
+					smallList.forEach(sm->{
+						if (StringUtils.isNotBlank(map.get(sm.getId()))){
+							sm.setNumber(map.get(sm.getId()));
+						}
+					});
+					mdList.get(j).setMdSmallClassList(smallList);
+				}
+				pickListList.get(i).setMdTheClassList(mdList);
+			}
+		}
+		model.addAttribute("pickUuid", uuid);
+		model.addAttribute("uid", uid);
+		model.addAttribute("pickListList", pickListList);
+		model.addAttribute("raiseCapital", raiseCapital);
+		model.addAttribute("projectName", projectName);
+		model.addAttribute("projectReserveId", projectReserveId);
+		return "modules/cg/reservemanagementcenter/raiseCapital/raiseCapital2";
+	}
+
 		/**
 	 * 提资表单列表数据
 	 */

+ 128 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapitalDesign/service/RaiseCapitalDesignService.java

@@ -420,6 +420,31 @@ public class RaiseCapitalDesignService extends CrudService<RaiseCapitalDesignMap
 		}
 		return voltageDisposeDataList;
 	}
+
+	/**
+	 * 遍历查询结构 大类 中类 小类
+	 * 去除重复,记录大类
+	 * 根据大类查询它的中类放入list并记录
+	 */
+	public List<DisposeData> getDisposeFormData2(String uuid) {
+		//创建通道,查询redis中数据
+		List<DisposeData> voltageDisposeDataList = Lists.newArrayList();
+		CacheChannel channel = J2Cache.getChannel();
+		RedisClient client = ((RedisCacheProvider)channel.getL2Provider()).getRedisClient();
+		try {
+			BinaryJedisCommands binaryJedisCommands = client.get();
+			byte[] voltageDisposeBytes = binaryJedisCommands.get((uuid+"voltageDisposeData").getBytes());
+			String voltageDisposeItem = null;
+			if(null != voltageDisposeBytes){
+				voltageDisposeItem = new String(voltageDisposeBytes);
+				if(StringUtils.isNotBlank(voltageDisposeItem))
+					voltageDisposeDataList = JSON.parseArray(voltageDisposeItem,DisposeData.class);
+			}
+		} finally {
+			client.release();
+		}
+		return voltageDisposeDataList;
+	}
 	/**
 	 * 遍历查询结构 大类 中类 小类
 	 * 去除重复,记录大类
@@ -463,6 +488,27 @@ public class RaiseCapitalDesignService extends CrudService<RaiseCapitalDesignMap
 	}
 
 	/**
+	 * 遍历查询结构 大类 中类 小类
+	 * 去除重复,记录大类
+	 * 根据大类查询它的中类放入list并记录
+	 */
+	public List<DisposeCableData> disposeFormCableDataList3(String projectReserveId) {
+		//创建通道,查询redis中数据
+		List<DisposeCableData> voltageDisposeDataList = Lists.newArrayList();
+		CacheChannel channel = J2Cache.getChannel();
+		RedisClient client = ((RedisCacheProvider)channel.getL2Provider()).getRedisClient();
+		BinaryJedisCommands binaryJedisCommands = client.get();
+		byte[] voltageDisposeBytes = binaryJedisCommands.get((projectReserveId+"pw"+"cableDisposeData").getBytes());
+		String voltageDisposeItem = null;
+		if(null != voltageDisposeBytes){
+			voltageDisposeItem = new String(voltageDisposeBytes);
+			if(StringUtils.isNotBlank(voltageDisposeItem))
+				voltageDisposeDataList = JSON.parseArray(voltageDisposeItem,DisposeCableData.class);
+		}
+		return voltageDisposeDataList;
+	}
+
+	/**
 	 * 将页面数据保存到redis中
 	 * @param uuid
 	 * @param item
@@ -618,6 +664,47 @@ public class RaiseCapitalDesignService extends CrudService<RaiseCapitalDesignMap
 			client.release();
 		}
 	}
+
+	/**
+	 * 架空导线计算处理
+	 * @param voltageData
+	 */
+	@Transactional(readOnly = false)
+	public void saveVlatage2(VoltageData voltageData) {
+		List<DisposeData> dataList = Lists.newArrayList();
+		List<VoltageInfo> highVoltageList = voltageData.getHighVoltageList();
+		List<VoltageInfo> lowVoltageList = voltageData.getLowVoltageList();
+		DisposeData data = null;
+		for (VoltageInfo highVoltage: highVoltageList) {
+			data = new DisposeData();
+			data.setId(highVoltage.getId());
+			data.setNumber(highVoltage.getSingleLong());
+			dataList.add(data);
+		}
+		for (VoltageInfo lowVoltage: lowVoltageList) {
+			data = new DisposeData();
+			data.setId(lowVoltage.getId());
+			data.setNumber(lowVoltage.getSingleLong());
+			dataList.add(data);
+		}
+		String voltageDisposeDataJson = JSON.toJSONString(dataList);
+		String highVoltageJson = JSON.toJSONString(highVoltageList);
+		String lowVoltageJson = JSON.toJSONString(lowVoltageList);
+
+		CacheChannel channel = J2Cache.getChannel();
+		RedisClient client = ((RedisCacheProvider)channel.getL2Provider()).getRedisClient();
+		try {
+			BinaryJedisCommands binaryJedisCommands = client.get();
+			binaryJedisCommands.set((voltageData.getUuid()+"voltageDisposeData").getBytes(),voltageDisposeDataJson.getBytes());
+			binaryJedisCommands.set((voltageData.getUuid()+"highVoltage").getBytes(),highVoltageJson.getBytes());
+			binaryJedisCommands.set((voltageData.getUuid()+"lowVoltage").getBytes(),lowVoltageJson.getBytes());
+			binaryJedisCommands.expire((voltageData.getUuid()+"voltageDisposeData").getBytes(),86400);
+			binaryJedisCommands.expire((voltageData.getUuid()+"highVoltage").getBytes(),86400);
+			binaryJedisCommands.expire((voltageData.getUuid()+"lowVoltage").getBytes(),86400);
+		} finally {
+			client.release();
+		}
+	}
 	/**
 	 * 电缆分段计算处理
 	 * @param cableSectionData
@@ -699,6 +786,47 @@ public class RaiseCapitalDesignService extends CrudService<RaiseCapitalDesignMap
 
 
 	}
+
+	/**
+	 * 电缆分段计算处理(在线)
+	 * @param cableSectionData
+	 */
+	@Transactional(readOnly = false)
+	public void saveCableOnline2(CableSectionData cableSectionData,String projectReserveId) {
+		List<DisposeCableData> dataList = this.CableDataList(cableSectionData);
+		List<CableSectionInfo> cableFourHundredList=cableSectionData.getCableFourHundredList();
+		List<CableSectionInfo> cableHundredAndTwentyList=cableSectionData.getCableHundredAndTwentyList();
+		List<CableSectionInfo> cableThreeHundredList=cableSectionData.getCableThreeHundredList();
+		List<CableSectionInfo> cableTwoHundredFortyList=cableSectionData.getCableTwoHundredFortyList();
+		List<CableSectionInfo> cableSeventyList=cableSectionData.getCableSeventyList();
+		String cableDisposeDataJson = JSON.toJSONString(dataList);
+		String cableFourHundredListJson = JSON.toJSONString(cableFourHundredList);
+		String cableHundredAndTwentyListJson = JSON.toJSONString(cableHundredAndTwentyList);
+		String cableThreeHundredListJson = JSON.toJSONString(cableThreeHundredList);
+		String cableTwoHundredFortyListJson = JSON.toJSONString(cableTwoHundredFortyList);
+		String cableSeventyListJson = JSON.toJSONString(cableSeventyList);
+		CacheChannel channel = J2Cache.getChannel();
+		RedisClient client = ((RedisCacheProvider)channel.getL2Provider()).getRedisClient();
+		try {
+			BinaryJedisCommands binaryJedisCommands = client.get();
+			binaryJedisCommands.set((projectReserveId+"pw"+"cableDisposeData").getBytes(),cableDisposeDataJson.getBytes());
+			binaryJedisCommands.set((projectReserveId+"pw"+"cableFourHundred").getBytes(),cableFourHundredListJson.getBytes());
+			binaryJedisCommands.set((projectReserveId+"pw"+"cableHundredAndTwenty").getBytes(),cableHundredAndTwentyListJson.getBytes());
+			binaryJedisCommands.set((projectReserveId+"pw"+"cableThreeHundred").getBytes(),cableThreeHundredListJson.getBytes());
+			binaryJedisCommands.set((projectReserveId+"pw"+"cableTwoHundredForty").getBytes(),cableTwoHundredFortyListJson.getBytes());
+			binaryJedisCommands.set((projectReserveId+"pw"+"cableSeventy").getBytes(),cableSeventyListJson.getBytes());
+			binaryJedisCommands.expire((projectReserveId+"pw"+"cableDisposeData").getBytes(),86400);
+			binaryJedisCommands.expire((projectReserveId+"pw"+"cableFourHundred").getBytes(),86400);
+			binaryJedisCommands.expire((projectReserveId+"pw"+"cableHundredAndTwenty").getBytes(),86400);
+			binaryJedisCommands.expire((projectReserveId+"pw"+"cableThreeHundred").getBytes(),86400);
+			binaryJedisCommands.expire((projectReserveId+"pw"+"cableTwoHundredForty").getBytes(),86400);
+			binaryJedisCommands.expire((projectReserveId+"pw"+"cableSeventy").getBytes(),86400);
+		}finally {
+			client.release();
+		}
+
+
+	}
 	/**
 	 * 拆旧材料清单计算处理
 	 * @param inventoryData

+ 67 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapitalDesign/web/RaiseCapitalDesignController.java

@@ -90,6 +90,16 @@ public class RaiseCapitalDesignController extends BaseController {
 		map.put("success",true);
 		return map;
 	}
+	@RequestMapping(value = "disposeFormDataOnList2")
+	@ResponseBody
+	public Map disposeFormDataOnList2(String uuid) {
+		Map<String,Object> map = new HashMap<>();
+		//将新增页数据保存到redis中(item)
+		List<DisposeData> voltageDisposeDataList = raiseCapitalDesignService.getDisposeFormData2(uuid);
+		map.put("data",voltageDisposeDataList);
+		map.put("success",true);
+		return map;
+	}
 	@RequestMapping(value = "disposeFormCableDataList")
 	@ResponseBody
 	public Map disposeFormCableDataList(String uuid) {
@@ -112,6 +122,17 @@ public class RaiseCapitalDesignController extends BaseController {
 		return map;
 	}
 
+	@RequestMapping(value = "disposeFormCableDataList3")
+	@ResponseBody
+	public Map disposeFormCableDataList3(String projectReserveId) {
+		Map<String,Object> map = new HashMap<>();
+		//将新增页数据保存到redis中(item)
+		List<DisposeCableData> voltageDisposeDataList = raiseCapitalDesignService.disposeFormCableDataList3(projectReserveId);
+		map.put("data",voltageDisposeDataList);
+		map.put("success",true);
+		return map;
+	}
+
 		/**
 	 * 提资表单列表数据
 	 */
@@ -219,6 +240,30 @@ public class RaiseCapitalDesignController extends BaseController {
 		j.setMsg("处理完成");
 		return j;
 	}
+
+	/**
+	 * 架空导线计算处理
+	 */
+	@ResponseBody
+	//@RequiresPermissions(value={"test:raiseCapitalDesign:add","test:raiseCapitalDesign:edit"},logical=Logical.OR)
+	@RequestMapping(value = "saveVlatage2")
+	public AjaxJson saveVlatage2(VoltageData voltageData, Model model) throws Exception{
+		AjaxJson j = new AjaxJson();
+		/**
+		 * 后台hibernate-validation插件校验
+		 */
+		String errMsg = beanValidator(voltageData);
+		if (StringUtils.isNotBlank(errMsg)){
+			j.setSuccess(false);
+			j.setMsg(errMsg);
+			return j;
+		}
+		//新增或编辑表单保存
+		raiseCapitalDesignService.saveVlatage2(voltageData);//处理
+		j.setSuccess(true);
+		j.setMsg("处理完成");
+		return j;
+	}
 	/**
 	 * 电缆分段计算处理
 	 */
@@ -264,6 +309,28 @@ public class RaiseCapitalDesignController extends BaseController {
 		return j;
 	}
 	/**
+	 * 电缆分段计算处理(在线)
+	 */
+	@ResponseBody
+	@RequestMapping(value = "saveCableOnline2")
+	public AjaxJson saveCableOnline2(CableSectionData cableSectionData, Model model,String projectReserveId) throws Exception{
+		AjaxJson j = new AjaxJson();
+		/**
+		 * 后台hibernate-validation插件校验
+		 */
+		String errMsg = beanValidator(cableSectionData);
+		if (StringUtils.isNotBlank(errMsg)){
+			j.setSuccess(false);
+			j.setMsg(errMsg);
+			return j;
+		}
+		//新增或编辑表单保存
+		raiseCapitalDesignService.saveCableOnline2(cableSectionData,projectReserveId);//处理
+		j.setSuccess(true);
+		j.setMsg("处理完成");
+		return j;
+	}
+	/**
 	 * 电缆分段计算处理
 	 */
 	@ResponseBody

BIN
src/main/resources/freemarker/excelmodel/distributionDesignChange.xlsx


BIN
src/main/resources/freemarker/excelmodel/distributionNetwork.xlsx


BIN
src/main/resources/freemarker/excelmodel/policeProcessBase.xlsx


BIN
src/main/resources/freemarker/excelmodel/policeProcessRecord.xlsx


BIN
src/main/resources/freemarker/excelmodel/policeProcessSchedule.xlsx


+ 268 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementForm.jsp

@@ -0,0 +1,268 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>配网项目问题表信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+		    var projectReserveId = $("#projectReserveId").val();
+		    var projectName = $("#projectName").val();
+		    var construct = $("#constructionNecessityAndContent").val();
+
+
+		    if (null==projectReserveId||""==projectReserveId){
+                jp.error("请填写项目储备编号!");
+			}else if(null==projectName||""==projectName){
+				jp.error("请填写项目名称!");
+			}else if (null==construct||""==construct){
+		    	jp.error("请填写建设必要性及内容!")
+			}
+
+
+		    else {
+                var isValidate = jp.validateForm('#inputForm');//校验表单
+                if(!isValidate){
+                    return false;
+                }else{
+                    jp.loading();
+                    jp.post("${ctx}/cg/policeProcess/base/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="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:textarea path="remarks" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">问题发起:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题发起人:</label></td>
+			<td class="width-35">
+				<form:input path="promoter" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题所处阶段:</label></td>
+			<td class="width-35">
+				<form:input path="problemStage" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题类型:</label></td>
+			<td class="width-35">
+				<form:input path="problemType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题描述:</label></td>
+			<td class="width-35">
+				<form:textarea path="problemDescript" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">业主项目经理:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决人:</label></td>
+			<td class="width-35">
+				<form:input path="problemSolver" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题是否解决:</label></td>
+			<td class="width-35">
+				<form:input path="problemResolved" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决描述:</label></td>
+			<td class="width-35">
+				<form:textarea path="problemResolvedDescript" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="designChange" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="changeType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需要上报业主领导:</label></td>
+			<td class="width-35">
+				<form:input path="reportToLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">业主单位领导:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决人:</label></td>
+			<td class="width-35">
+				<form:input path="problemSolverLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题是否解决:</label></td>
+			<td class="width-35">
+				<form:input path="problemResolvedLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决描述:</label></td>
+			<td class="width-35">
+				<form:textarea path="problemResolvedDescriptLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="changeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 292 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementInformation.js

@@ -0,0 +1,292 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script >
+$(document).ready(function () {
+    $('#projectTable').bootstrapTable({
+        //请求方法
+        method: 'post',
+        //类型json
+        dataType: "json",
+        contentType: "application/x-www-form-urlencoded",
+        //显示检索按钮
+        showSearch: true,
+        //显示刷新按钮
+        showRefresh: true,
+        //显示切换手机试图按钮
+        showToggle: true,
+        //显示 内容列下拉框
+        showColumns: true,
+        //显示到处按钮
+        showExport: true,
+        //显示切换分页按钮
+        showPaginationSwitch: true,
+        //最低显示2行
+        minimumCountColumns: 2,
+        //是否显示行间隔色
+        striped: true,
+        //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+        cache: false,
+        //是否显示分页(*)
+        pagination: true,
+        //排序方式
+        sortOrder: "asc",
+        //初始化加载第一页,默认第一页
+        pageNumber: 1,
+        //每页的记录行数(*)
+        pageSize: 25,
+        //可供选择的每页的行数(*)
+        pageList: [5, 10, 25, 50, 100],
+        //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+        url: "${ctx}/cg/distribution/designChange/list",
+        //默认值为 '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}/cg/reservemanagementcenter/project/delete?id=" + row.id, function (data) {
+                        if (data.success) {
+                            $('#projectTable').bootstrapTable('refresh');
+                            jp.success(data.msg);
+                        } else {
+                            jp.error(data.msg);
+                        }
+                    })
+                });
+            }
+        },
+
+        onClickRow: function (row, $el) {
+        },
+        onShowSearch: function () {
+            $("#search-collapse").slideToggle();
+        },
+        columns:
+            [
+                [
+                    {checkbox:true,width: 36},
+                    {"title":"储备项目基本信息","colspan":21,"halign":"center","align": "center",width: "4200px"},
+                    {"title":"项目参建(单位)人员信息","colspan":6,"halign":"center","align": "center",width: "1200px"},
+                    {"title":"项目总体进度","colspan":7,"halign":"center","align": "center",width: "1400px"},
+                    {"title":"设计变更进度","colspan":22,"halign":"center","align": "center",width: "4400px"}
+
+                ],
+                [
+                    {checkbox:true,width: 36},
+                    { field: 'projectYear', title: "项目年份", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectNature', title: "项目性质", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'demandUnit', title: "需求单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'district', title: "区域", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectGroup', title: "项目分组", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'reserveBatches', title: "储备批次", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'blockSupply', title: "供电区域", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'gridNumber', title: "网格编号", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'cellNumber', title: "单元格编号", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectReserveId', title: "项目储备编号", valign:"middle", align:"center", colspan: 1, rowspan: 1,
+                        formatter:function(value, row , index){
+
+                            if(value == null || value ==""){
+                                value = "-";
+                            }
+                        <c:choose>
+                            <c:when test="${fns:hasPermission('cg:distribution:designChange:view')}">
+                            return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+                        </c:when>
+                            <c:otherwise>
+                            return value;
+                        </c:otherwise>
+                            </c:choose>
+                        }},
+                    { field: 'projectName', title: "储备项目名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'stateGridProjectCode', title: "国网项目编码", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'stateGridProjectName', title: "国网项目名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'constructionNecessityAndContent', title: "建设必要性及内容", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'substationName', title: "变电站名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'circuitName', title: "线路名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'netRackProjectDivide', title: "网架项目划分", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'requirementType', title: "需求类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectType', title: "项目类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'costEstimate', title: "费用估算", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'basicRemarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'projectReleaseBatch', title: "项目下达批次", valign:"middle", align:"center", colspan: 1, rowspan: 1},
+                    { field: 'ownerManager', title: "业主项目经理", valign:"middle", align:"center", colspan: 1, rowspan: 1},
+                    { field: 'constructionManagementUnit', title: "现场施工管理单位", valign:"middle", align:"center", colspan: 1, rowspan: 1},
+                    { field: 'dqProjectManager', title: "施工项目经理(电气)", valign:"middle", align:"center", colspan: 1, rowspan: 1},
+                    { field: 'tjProjectManager', title: "施工项目经理(土建)", valign:"middle", align:"center", colspan: 1, rowspan: 1},
+                    { field: 'cjRemarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'projectApproval', title: "是否立项", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'completionStatus', title: "竣工情况", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'completionDate', title: "竣工日期", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'settlementStatus', title: "结算状态", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'closeStatus', title: "关闭状态", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectDesignChangeStatus', title: "设计变更状态", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'stockReturnStatus', title: "拆旧物资退库状态", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'designChangeStatus', title: "设计变更状态", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'designChangeType', title: "设计变更类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'proposer', title: "提出人", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'proposeReasons', title: "提出原因", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter },
+                    { field: 'designChangeContent', title: "设计变更内容", valign:"middle", align:"center", colspan: 1, rowspan: 1  ,formatter:paramsMatter},
+                    { field: 'changeType', title: "变更类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'designChangeProposeTime', title: "设计变更提出时间", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'completeDesignChangeType', title: "是否完成设计变更", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectManagerApproved', title: "项目经理是否审核通过", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'electronDiagramCompleteTime', title: "电子图变更完成时间", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'completeBudgetAdjust', title: "是否完成概预算调整", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'jjApproved', title: "设计是否审核通过", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'budgetCompleteTime', title: "概预算变更完成时间", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'beforeChangeBudget', title: "变更前预算", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'afterChangeBudget', title: "变更后预算", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'afterChangeConstructionCost', title: "变更后施工费", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'drawingTransfer', title: "变更纸质图纸是否移交", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'drawingTransferTime', title: "变更纸质图纸移交时间", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'designChangeTime', title: "设计变更时长(秒)", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'dataIntegrity', title: "设计变更签字资料是否完整", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'scanningCopy', title: "扫描件", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'remarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                ]
+
+            ]
+    });
+
+
+    if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端
+        $('#projectTable').bootstrapTable("toggleView");
+    }
+
+    $('#projectTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+        'check-all.bs.table uncheck-all.bs.table', function () {
+        $('#remove').prop('disabled', !$('#projectTable').bootstrapTable('getSelections').length);
+        $('#view,#edit,#jlEdit').prop('disabled', $('#projectTable').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) {
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                iframeWin.contentWindow.importExcel('${ctx}/cg/distribution/designChange/import', function (data) {
+                    if (data.success) {
+                        jp.success(data.msg);
+                        refresh();
+                    } else {
+                        jp.error(data.msg);
+                    }
+                    jp.close(index);
+                });//调用保存事件
+                return false;
+            },
+            btn2: function (index) {
+                //  jp.close(index);
+            }
+        });
+    });
+
+    $("#btnExport").click(function () {
+        var projectReserveId = $("#projectReserveId").val();
+        var projectName = $("#projectName").val();
+        var projectYear = $("#projectYear").val();
+        jp.downloadFile('${ctx}/cg/distribution/designChange/export?projectReserveId=' + projectReserveId + '&projectName=' + projectName + '&projectYear=' + projectYear);
+    });
+
+    $("#search").click("click", function () {// 绑定查询按扭
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $("#reset").click("click", function () {// 绑定查询按扭
+        $("#searchForm  input").val("");
+        $("#searchForm  select").val("");
+        $("#searchForm  .select-item").html("");
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $('#beginBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+});
+
+//表格超出宽度鼠标悬停显示td内容
+function paramsMatter(value,row,index,field) {
+    if (value === '' || value === null || value === undefined){
+        return ''
+    }
+    var span = document.createElement('span');
+    span.setAttribute('title',value);
+    span.innerHTML = value;
+    return span.outerHTML;
+}
+
+function getIdSelections() {
+    return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+
+//刷新列表
+function refresh() {
+    $('#projectTable').bootstrapTable('refresh');
+}
+
+function add() {
+    jp.openSaveDialog('新增储备项目基本信息', "${ctx}/cg/distribution/designChange/form", '800px', '500px');
+}
+
+
+function edit(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑储备项目基本信息', "${ctx}/cg/distribution/designChange/form?id=" + id, '800px', '500px');
+}
+
+function view(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openViewDialog('查看储备项目基本信息', "${ctx}/cg/distribution/designChange/view?id=" + id, '800px', '500px');
+}
+
+//转换日期格式(时间戳转换为datetime格式)
+function changeDateFormat(cellval) {
+    var dateVal = cellval + "";
+    if (cellval != null) {
+        var date = new Date(parseInt(dateVal.replace("/Date(", "").replace(")/", ""), 10));
+        var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+        var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+
+        /*var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
+        var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+        var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();*/
+
+        return date.getFullYear() + "-" + month + "-" + currentDate /*+ " " + hours + ":" + minutes + ":" + seconds*/;
+    }
+}
+
+</script>

+ 98 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementInformation.jsp

@@ -0,0 +1,98 @@
+<%@ page import="java.time.LocalDate" %>
+<%@ 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="reserveManagementInformation.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;
+			white-space: nowrap;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			word-wrap:break-word;
+		}
+		.bootstrap-table .table thead>tr>th {
+			padding: 0;
+			margin: 0;
+			width: 3500px;
+		}
+	</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="reserveManagement" class="form form-horizontal well clearfix">
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label for="projectYear" class="label-item single-overflow pull-left">项目年份:</label>
+						<select name="projectYear" id="projectYear" class="form-control">
+							<%
+								int currentYear = LocalDate.now().getYear();
+								for (int i = 1997; i <= 2033; i++) { %>
+							<option value="<%= i %>" <% if (i == currentYear) { %>selected<% } %>><%= i %></option>
+							<% } %>
+						</select>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label class="label-item single-overflow pull-left" title="储备编码:">储备编码:</label>
+						<form:input path="projectReserveId" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label class="label-item single-overflow pull-left" title="项目名称:">项目名称:</label>
+						<form:input path="projectName" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<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">
+			<shiro:hasPermission name="cg:distribution:designChange:edit">
+				<button id="edit" class="btn btn-primary" onclick="edit()">
+					<i class="glyphicon glyphicon-edit"></i> 修改 <!--专职修改-->
+				</button>
+			</shiro:hasPermission>
+<%--			<shiro:hasPermission name="cg:distribution:designChange:list">--%>
+<%--				<button id="btnImport" class="btn btn-info">--%>
+<%--					<i class="fa fa-folder-open-o"></i> 导入  <!--专职导入-->--%>
+<%--				</button>--%>
+<%--			</shiro:hasPermission>--%>
+			<shiro:hasPermission name="cg:distribution:designChange:export">
+				<button id="btnExport" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 导出
+				</button>
+			</shiro:hasPermission>
+		    </div>
+	<!-- 表格 -->
+	<table id="projectTable"  data-toolbar="#toolbar"></table>
+
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 357 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementModifyByzz.jsp

@@ -0,0 +1,357 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>修改安全交底信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+			var projectReserveId = $("#projectReserveId").val();
+			var projectName = $("#projectName").val();
+			var construct = $("#constructionNecessityAndContent").val();
+
+			if (null==projectReserveId||""==projectReserveId){
+				jp.error("请填写项目储备编号!");
+			}else if(null==projectName||""==projectName){
+				jp.error("请填写项目名称!");
+			}else if (null==construct||""==construct){
+				jp.error("请填写建设必要性及内容!")
+			}
+
+		    else {
+                var isValidate = jp.validateForm('#inputForm');//校验表单
+                if(!isValidate){
+                    return false;
+                }else{
+                    jp.loading();
+                    jp.post("${ctx}/cg/distribution/designChange/update",$('#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="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="basicRemarks" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目参建(单位)人员信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目下达批次:</label></td>
+			<td class="width-35">
+				<form:input path="projectReleaseBatch" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">业主项目经理:</label></td>
+			<td class="width-35">
+				<form:input path="ownerManager" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">现场施工管理单位:</label></td>
+			<td class="width-35">
+				<form:input path="constructionManagementUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">施工项目经理(电气):</label></td>
+			<td class="width-35">
+				<form:input path="dqProjectManager" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">施工项目经理(土建):</label></td>
+			<td class="width-35">
+				<form:input path="tjProjectManager" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="cjRemarks" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目总体进度:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否立项:</label></td>
+			<td class="width-35">
+				<form:input path="projectApproval" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">竣工情况:</label></td>
+			<td class="width-35">
+				<form:input path="completionStatus" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">竣工日期:</label></td>
+			<td class="width-35">
+				<form:input path="completionDate" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">结算状态:</label></td>
+			<td class="width-35">
+				<form:input path="settlementStatus" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">关闭状态:</label></td>
+			<td class="width-35">
+				<form:input path="closeStatus" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更状态:</label></td>
+			<td class="width-35">
+				<form:input path="projectDesignChangeStatus" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">拆旧物资退库状态:</label></td>
+			<td class="width-35">
+				<form:input path="stockReturnStatus" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">设计变更进度:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">设计变更状态:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeStatus" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeType" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">提出人:</label></td>
+			<td class="width-35">
+				<form:input path="proposer" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">提出原因:</label></td>
+			<td class="width-35">
+				<form:input path="proposeReasons" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">设计变更内容:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="changeType" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">设计变更提出时间:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeProposeTime" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否完成设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="completeDesignChangeType" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目经理是否审核通过:</label></td>
+			<td class="width-35">
+				<form:input path="projectManagerApproved" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">电子图变更完成时间:</label></td>
+			<td class="width-35">
+				<form:input path="electronDiagramCompleteTime" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否完成概预算调整:</label></td>
+			<td class="width-35">
+				<form:input path="completeBudgetAdjust" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计是否审核通过:</label></td>
+			<td class="width-35">
+				<form:input path="jjApproved" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">概预算变更完成时间:</label></td>
+			<td class="width-35">
+				<form:input path="budgetCompleteTime" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变更前预算:</label></td>
+			<td class="width-35">
+				<form:input path="beforeChangeBudget" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更后预算:</label></td>
+			<td class="width-35">
+				<form:input path="afterChangeBudget" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变更后施工费:</label></td>
+			<td class="width-35">
+				<form:input path="afterChangeConstructionCost" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更纸质图纸是否移交:</label></td>
+			<td class="width-35">
+				<form:input path="drawingTransfer" htmlEscape="false" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变更纸质图纸移交时间:</label></td>
+			<td class="width-35">
+<%--				<form:input path="drawingTransferTime" htmlEscape="false"  class="form-control "/>--%>
+				<form:input type="date" id="drawingTransferTime" path="drawingTransferTime" htmlEscape="false" class="form-control" value="${reserveManagement.drawingTransferTime}"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">设计变更时长:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeTime" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更签字资料是否完整:</label></td>
+			<td class="width-35">
+				<form:input path="dataIntegrity" htmlEscape="false" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">扫描件:</label></td>
+			<td class="width-35">
+				<form:input path="scanningCopy" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  class="form-control "/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 327 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/designChange/reserveManagementView.jsp

@@ -0,0 +1,327 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>配网项目问题表信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+			$('#disclosureFinishDate').datetimepicker({
+				format: "YYYY-MM-DD"
+			});
+		});
+		function save() {
+			var isValidate = jp.validateForm('#inputForm');//校验表单
+			if(!isValidate){
+				return false;
+			}else{
+
+			}
+		}
+	</script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="basicRemarks" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目参建(单位)人员信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目下达批次:</label></td>
+			<td class="width-35">
+				<form:input path="projectReleaseBatch" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">业主项目经理:</label></td>
+			<td class="width-35">
+				<form:input path="ownerManager" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">现场施工管理单位:</label></td>
+			<td class="width-35">
+				<form:input path="constructionManagementUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">施工项目经理(电气):</label></td>
+			<td class="width-35">
+				<form:input path="dqProjectManager" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">施工项目经理(土建):</label></td>
+			<td class="width-35">
+				<form:input path="tjProjectManager" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="cjRemarks" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目总体进度:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否立项:</label></td>
+			<td class="width-35">
+				<form:input path="projectApproval" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">竣工情况:</label></td>
+			<td class="width-35">
+				<form:input path="completionStatus" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">竣工日期:</label></td>
+			<td class="width-35">
+				<form:input path="completionDate" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">结算状态:</label></td>
+			<td class="width-35">
+				<form:input path="settlementStatus" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">关闭状态:</label></td>
+			<td class="width-35">
+				<form:input path="closeStatus" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更状态:</label></td>
+			<td class="width-35">
+				<form:input path="projectDesignChangeStatus" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">拆旧物资退库状态:</label></td>
+			<td class="width-35">
+				<form:input path="stockReturnStatus" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">设计变更进度:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">设计变更状态:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeStatus" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeType" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">提出人:</label></td>
+			<td class="width-35">
+				<form:input path="proposer" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">提出原因:</label></td>
+			<td class="width-35">
+				<form:input path="proposeReasons" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">设计变更内容:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="changeType" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">设计变更提出时间:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeProposeTime" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否完成设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="completeDesignChangeType" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目经理是否审核通过:</label></td>
+			<td class="width-35">
+				<form:input path="projectManagerApproved" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">电子图变更完成时间:</label></td>
+			<td class="width-35">
+				<form:input path="electronDiagramCompleteTime" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否完成概预算调整:</label></td>
+			<td class="width-35">
+				<form:input path="completeBudgetAdjust" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计是否审核通过:</label></td>
+			<td class="width-35">
+				<form:input path="jjApproved" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">概预算变更完成时间:</label></td>
+			<td class="width-35">
+				<form:input path="budgetCompleteTime" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变更前预算:</label></td>
+			<td class="width-35">
+				<form:input path="beforeChangeBudget" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更后预算:</label></td>
+			<td class="width-35">
+				<form:input path="afterChangeBudget" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变更后施工费:</label></td>
+			<td class="width-35">
+				<form:input path="afterChangeConstructionCost" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更纸质图纸是否移交:</label></td>
+			<td class="width-35">
+				<form:input path="drawingTransfer" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变更纸质图纸移交时间:</label></td>
+			<td class="width-35">
+				<form:input path="drawingTransferTime" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">设计变更时长:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeTime" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更签字资料是否完整:</label></td>
+			<td class="width-35">
+				<form:input path="dataIntegrity" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">扫描件:</label></td>
+			<td class="width-35">
+				<form:input path="scanningCopy" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control "/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 268 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/network/reserveManagementForm.jsp

@@ -0,0 +1,268 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>配网项目问题表信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+		    var projectReserveId = $("#projectReserveId").val();
+		    var projectName = $("#projectName").val();
+		    var construct = $("#constructionNecessityAndContent").val();
+
+
+		    if (null==projectReserveId||""==projectReserveId){
+                jp.error("请填写项目储备编号!");
+			}else if(null==projectName||""==projectName){
+				jp.error("请填写项目名称!");
+			}else if (null==construct||""==construct){
+		    	jp.error("请填写建设必要性及内容!")
+			}
+
+
+		    else {
+                var isValidate = jp.validateForm('#inputForm');//校验表单
+                if(!isValidate){
+                    return false;
+                }else{
+                    jp.loading();
+                    jp.post("${ctx}/cg/policeProcess/base/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="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:textarea path="remarks" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">问题发起:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题发起人:</label></td>
+			<td class="width-35">
+				<form:input path="promoter" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题所处阶段:</label></td>
+			<td class="width-35">
+				<form:input path="problemStage" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题类型:</label></td>
+			<td class="width-35">
+				<form:input path="problemType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题描述:</label></td>
+			<td class="width-35">
+				<form:textarea path="problemDescript" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">业主项目经理:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决人:</label></td>
+			<td class="width-35">
+				<form:input path="problemSolver" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题是否解决:</label></td>
+			<td class="width-35">
+				<form:input path="problemResolved" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决描述:</label></td>
+			<td class="width-35">
+				<form:textarea path="problemResolvedDescript" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="designChange" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="changeType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需要上报业主领导:</label></td>
+			<td class="width-35">
+				<form:input path="reportToLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">业主单位领导:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决人:</label></td>
+			<td class="width-35">
+				<form:input path="problemSolverLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题是否解决:</label></td>
+			<td class="width-35">
+				<form:input path="problemResolvedLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决描述:</label></td>
+			<td class="width-35">
+				<form:textarea path="problemResolvedDescriptLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="changeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 274 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/network/reserveManagementInformation.js

@@ -0,0 +1,274 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script >
+$(document).ready(function () {
+    $('#projectTable').bootstrapTable({
+        //请求方法
+        method: 'post',
+        //类型json
+        dataType: "json",
+        contentType: "application/x-www-form-urlencoded",
+        //显示检索按钮
+        showSearch: true,
+        //显示刷新按钮
+        showRefresh: true,
+        //显示切换手机试图按钮
+        showToggle: true,
+        //显示 内容列下拉框
+        showColumns: true,
+        //显示到处按钮
+        showExport: true,
+        //显示切换分页按钮
+        showPaginationSwitch: true,
+        //最低显示2行
+        minimumCountColumns: 2,
+        //是否显示行间隔色
+        striped: true,
+        //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+        cache: false,
+        //是否显示分页(*)
+        pagination: true,
+        //排序方式
+        sortOrder: "asc",
+        //初始化加载第一页,默认第一页
+        pageNumber: 1,
+        //每页的记录行数(*)
+        pageSize: 25,
+        //可供选择的每页的行数(*)
+        pageList: [5, 10, 25, 50, 100],
+        //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+        url: "${ctx}/cg/distribution/network/list",
+        //默认值为 '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}/cg/reservemanagementcenter/project/delete?id=" + row.id, function (data) {
+                        if (data.success) {
+                            $('#projectTable').bootstrapTable('refresh');
+                            jp.success(data.msg);
+                        } else {
+                            jp.error(data.msg);
+                        }
+                    })
+                });
+            }
+        },
+
+        onClickRow: function (row, $el) {
+        },
+        onShowSearch: function () {
+            $("#search-collapse").slideToggle();
+        },
+        columns:
+            [
+                [
+                    {checkbox:true,width: 36},
+                    {"title":"储备项目基本信息","colspan":21,"halign":"center","align": "center",width: "4200px"},
+                    {"title":"问题发起","colspan":4,"halign":"center","align": "center",width: "800px"},
+                    {"title":"业主项目经理","colspan":7,"halign":"center","align": "center",width: "1400px"},
+                    {"title":"业主单位领导","colspan":6,"halign":"center","align": "center",width: "1200px"}
+
+                ],
+                [
+                    {checkbox:true,width: 36},
+                    { field: 'projectYear', title: "项目年份", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectNature', title: "项目性质", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'demandUnit', title: "需求单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'district', title: "区域", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectGroup', title: "项目分组", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'reserveBatches', title: "储备批次", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'blockSupply', title: "供电区域", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'gridNumber', title: "网格编号", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'cellNumber', title: "单元格编号", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectReserveId', title: "项目储备编号", valign:"middle", align:"center", colspan: 1, rowspan: 1,
+                        formatter:function(value, row , index){
+
+                            if(value == null || value ==""){
+                                value = "-";
+                            }
+                        <c:choose>
+                            <c:when test="${fns:hasPermission('cg:distribution:network:view')}">
+                            return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+                        </c:when>
+                            <c:otherwise>
+                            return value;
+                        </c:otherwise>
+                            </c:choose>
+                        }},
+                    { field: 'projectName', title: "储备项目名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'stateGridProjectCode', title: "国网项目编码", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'stateGridProjectName', title: "国网项目名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'constructionNecessityAndContent', title: "建设必要性及内容", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'substationName', title: "变电站名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'circuitName', title: "线路名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'netRackProjectDivide', title: "网架项目划分", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'requirementType', title: "需求类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectType', title: "项目类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'costEstimate', title: "费用估算", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'remarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'promoter', title: "问题发起人", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'problemStage', title: "问题所处阶段", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'problemType', title: "问题类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'problemDescript', title: "问题描述", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'problemSolver', title: "问题解决人", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'problemResolved', title: "问题是否解决", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'problemResolvedDescript', title: "问题解决描述", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'designChange', title: "是否需要设计变更", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'changeType', title: "变更类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'designChangeType', title: "设计变更类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'reportToLeader', title: "是否需要上报业主领导", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'problemSolverLeader', title: "问题解决人", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'problemResolvedLeader', title: "问题是否解决", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'problemResolvedDescriptLeader', title: "问题解决描述", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'designChangeLeader', title: "是否需要设计变更", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'changeTypeLeader', title: "变更类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'designChangeTypeLeader', title: "设计变更类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                ]
+
+            ]
+    });
+
+
+    if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端
+        $('#projectTable').bootstrapTable("toggleView");
+    }
+
+    $('#projectTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+        'check-all.bs.table uncheck-all.bs.table', function () {
+        $('#remove').prop('disabled', !$('#projectTable').bootstrapTable('getSelections').length);
+        $('#view,#edit,#jlEdit').prop('disabled', $('#projectTable').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) {
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                iframeWin.contentWindow.importExcel('${ctx}/cg/distribution/network/import', function (data) {
+                    if (data.success) {
+                        jp.success(data.msg);
+                        refresh();
+                    } else {
+                        jp.error(data.msg);
+                    }
+                    jp.close(index);
+                });//调用保存事件
+                return false;
+            },
+            btn2: function (index) {
+                //  jp.close(index);
+            }
+        });
+    });
+
+    $("#btnExport").click(function () {
+        var projectReserveId = $("#projectReserveId").val();
+        var projectName = $("#projectName").val();
+        var projectYear = $("#projectYear").val();
+        jp.downloadFile('${ctx}/cg/distribution/network/export?projectReserveId=' + projectReserveId + '&projectName=' + projectName + '&projectYear=' + projectYear);
+    });
+
+    $("#search").click("click", function () {// 绑定查询按扭
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $("#reset").click("click", function () {// 绑定查询按扭
+        $("#searchForm  input").val("");
+        $("#searchForm  select").val("");
+        $("#searchForm  .select-item").html("");
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $('#beginBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+});
+
+//表格超出宽度鼠标悬停显示td内容
+function paramsMatter(value,row,index,field) {
+    if (value === '' || value === null || value === undefined){
+        return ''
+    }
+    var span = document.createElement('span');
+    span.setAttribute('title',value);
+    span.innerHTML = value;
+    return span.outerHTML;
+}
+
+function getIdSelections() {
+    return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+
+//刷新列表
+function refresh() {
+    $('#projectTable').bootstrapTable('refresh');
+}
+
+function add() {
+    jp.openSaveDialog('新增储备项目基本信息', "${ctx}/cg/distribution/network/form", '800px', '500px');
+}
+
+
+function edit(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑储备项目基本信息', "${ctx}/cg/distribution/network/form?id=" + id, '800px', '500px');
+}
+
+function view(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openViewDialog('查看储备项目基本信息', "${ctx}/cg/distribution/network/view?id=" + id, '800px', '500px');
+}
+
+//转换日期格式(时间戳转换为datetime格式)
+function changeDateFormat(cellval) {
+    var dateVal = cellval + "";
+    if (cellval != null) {
+        var date = new Date(parseInt(dateVal.replace("/Date(", "").replace(")/", ""), 10));
+        var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+        var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+
+        /*var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
+        var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+        var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();*/
+
+        return date.getFullYear() + "-" + month + "-" + currentDate /*+ " " + hours + ":" + minutes + ":" + seconds*/;
+    }
+}
+
+</script>

+ 98 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/network/reserveManagementInformation.jsp

@@ -0,0 +1,98 @@
+<%@ page import="java.time.LocalDate" %>
+<%@ 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="reserveManagementInformation.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;
+			white-space: nowrap;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			word-wrap:break-word;
+		}
+		.bootstrap-table .table thead>tr>th {
+			padding: 0;
+			margin: 0;
+			width: 3500px;
+		}
+	</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="reserveManagement" class="form form-horizontal well clearfix">
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label for="projectYear" class="label-item single-overflow pull-left">项目年份:</label>
+						<select name="projectYear" id="projectYear" class="form-control">
+							<%
+								int currentYear = LocalDate.now().getYear();
+								for (int i = 1997; i <= 2033; i++) { %>
+							<option value="<%= i %>" <% if (i == currentYear) { %>selected<% } %>><%= i %></option>
+							<% } %>
+						</select>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label class="label-item single-overflow pull-left" title="储备编码:">储备编码:</label>
+						<form:input path="projectReserveId" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label class="label-item single-overflow pull-left" title="项目名称:">项目名称:</label>
+						<form:input path="projectName" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<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">
+			<shiro:hasPermission name="cg:distribution:network:edit">
+				<button id="edit" class="btn btn-primary" onclick="edit()">
+					<i class="glyphicon glyphicon-edit"></i> 问题发起 <!--专职修改-->
+				</button>
+			</shiro:hasPermission>
+<%--			<shiro:hasPermission name="cg:distribution:network:list">--%>
+<%--				<button id="btnImport" class="btn btn-info">--%>
+<%--					<i class="fa fa-folder-open-o"></i> 导入  <!--专职导入-->--%>
+<%--				</button>--%>
+<%--			</shiro:hasPermission>--%>
+			<shiro:hasPermission name="cg:distribution:network:export">
+				<button id="btnExport" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 导出
+				</button>
+			</shiro:hasPermission>
+		    </div>
+	<!-- 表格 -->
+	<table id="projectTable"  data-toolbar="#toolbar"></table>
+
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 281 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/network/reserveManagementModifyByzz.jsp

@@ -0,0 +1,281 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>修改安全交底信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+			var projectReserveId = $("#projectReserveId").val();
+			var projectName = $("#projectName").val();
+			var construct = $("#constructionNecessityAndContent").val();
+
+			if (null==projectReserveId||""==projectReserveId){
+				jp.error("请填写项目储备编号!");
+			}else if(null==projectName||""==projectName){
+				jp.error("请填写项目名称!");
+			}else if (null==construct||""==construct){
+				jp.error("请填写建设必要性及内容!")
+			}
+
+		    else {
+                var isValidate = jp.validateForm('#inputForm');//校验表单
+                if(!isValidate){
+                    return false;
+                }else{
+                    jp.loading();
+                    jp.post("${ctx}/cg/distribution/network/update",$('#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="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:textarea path="remarks" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">问题发起:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>问题发起人:</label></td>
+			<td class="width-35">
+				<form:input path="promoter" htmlEscape="false"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>问题所处阶段:</label></td>
+			<td class="width-35">
+				<select id="problemStage" name="problemStage"  class="form-control required">
+					<option value="">请选择</option>
+					<option value="施工图交底阶段" <c:if test="${reserveManagement.problemStage=='施工图交底阶段'}">selected</c:if>>施工图交底阶段</option>
+					<option value="施工准备阶段" <c:if test="${reserveManagement.problemStage=='施工准备阶段'}">selected</c:if>>施工准备阶段</option>
+					<option value="现场施工阶段" <c:if test="${reserveManagement.problemStage=='现场施工阶段'}">selected</c:if>>现场施工阶段</option>
+					<option value="停电验收阶段" <c:if test="${reserveManagement.problemStage=='停电验收阶段'}">selected</c:if>>停电验收阶段</option>
+					<option value="竣工后阶段" <c:if test="${reserveManagement.problemStage=='竣工后阶段'}">selected</c:if>>竣工后阶段</option>
+				</select>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>问题类型:</label></td>
+			<td class="width-35">
+				<select id="problemType" name="problemType"  class="form-control required">
+					<option value="">请选择</option>
+					<option value="政策处理问题" <c:if test="${reserveManagement.problemType=='政策处理问题'}">selected</c:if>>政策处理问题</option>
+					<option value="图纸方案问题" <c:if test="${reserveManagement.problemType=='图纸方案问题'}">selected</c:if>>图纸方案问题</option>
+					<option value="物资问题" <c:if test="${reserveManagement.problemType=='物资问题'}">selected</c:if>>物资问题</option>
+					<option value="施工管理问题" <c:if test="${reserveManagement.problemType=='施工管理问题'}">selected</c:if>>施工管理问题</option>
+					<option value="停电验收问题" <c:if test="${reserveManagement.problemType=='停电验收问题'}">selected</c:if>>停电验收问题</option>
+					<option value="其他" <c:if test="${reserveManagement.problemType=='其他'}">selected</c:if>>其他</option>
+				</select>
+			</td>
+			<td class="width-15 active"><label class="">问题描述:</label></td>
+			<td class="width-35">
+				<form:textarea path="problemDescript" htmlEscape="false" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">业主项目经理:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决人:</label></td>
+			<td class="width-35">
+				<form:input path="problemSolver" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题是否解决:</label></td>
+			<td class="width-35">
+				<form:input path="problemResolved" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决描述:</label></td>
+			<td class="width-35">
+				<form:textarea path="problemResolvedDescript" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="designChange" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="changeType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需要上报业主领导:</label></td>
+			<td class="width-35">
+				<form:input path="reportToLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">业主单位领导:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决人:</label></td>
+			<td class="width-35">
+				<form:input path="problemSolverLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题是否解决:</label></td>
+			<td class="width-35">
+				<form:input path="problemResolvedLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决描述:</label></td>
+			<td class="width-35">
+				<form:textarea path="problemResolvedDescriptLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="changeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 237 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/network/reserveManagementView.jsp

@@ -0,0 +1,237 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>配网项目问题表信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+			$('#disclosureFinishDate').datetimepicker({
+				format: "YYYY-MM-DD"
+			});
+		});
+		function save() {
+			var isValidate = jp.validateForm('#inputForm');//校验表单
+			if(!isValidate){
+				return false;
+			}else{
+
+			}
+		}
+	</script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">问题发起:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题发起人:</label></td>
+			<td class="width-35">
+				<form:input path="promoter" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题所处阶段:</label></td>
+			<td class="width-35">
+				<form:input path="problemStage" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题类型:</label></td>
+			<td class="width-35">
+				<form:input path="problemType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题描述:</label></td>
+			<td class="width-35">
+				<form:input path="problemDescript" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">业主项目经理:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决人:</label></td>
+			<td class="width-35">
+				<form:input path="problemSolver" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题是否解决:</label></td>
+			<td class="width-35">
+				<form:input path="problemResolved" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决描述:</label></td>
+			<td class="width-35">
+				<form:input path="problemResolvedDescript" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="designChange" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="changeType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeType" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需要上报业主领导:</label></td>
+			<td class="width-35">
+				<form:input path="reportToLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">业主单位领导:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决人:</label></td>
+			<td class="width-35">
+				<form:input path="problemSolverLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">问题是否解决:</label></td>
+			<td class="width-35">
+				<form:input path="problemResolvedLeader" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">问题解决描述:</label></td>
+			<td class="width-35">
+				<form:input path="problemResolvedDescriptLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeLeader" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="changeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更类型:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 356 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/budgetReview.js

@@ -0,0 +1,356 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+	<script>
+	$(document).ready(function() {
+		$('#testPicTable').bootstrapTable({
+			//请求方法
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			//显示检索按钮
+			showSearch: false,
+			//显示刷新按钮
+			showRefresh: false,
+			//显示切换手机试图按钮
+			showToggle: false,
+			//显示 内容列下拉框
+			showColumns: false,
+			//显示到处按钮
+			showExport: false,
+			//显示切换分页按钮
+			showPaginationSwitch: false,
+			//最低显示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}/cg/reservemanagementcenter/process/allUploadData2",
+			//默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+			//queryParamsType:'',
+			////查询参数,每次调用是会带上这个参数,可自定义
+			queryParams : function(params) {
+				var searchParam = $("#inputForm").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){
+			},
+			onClickRow: function(row, $el){
+			},
+			onShowSearch: function () {
+
+			},
+			columns: [
+				{
+					field: 'budgetStatement',
+					title: '预算书',
+					formatter:function(value, row , index){
+						if (value){
+							var valueArray = value.split("|");
+							var labelArray = [];
+							for(var i =0 ; i<valueArray.length; i++){
+								if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(valueArray[i]))
+								{
+									labelArray[i] = "<a href=\""+valueArray[i]+"\" url=\""+valueArray[i]+"\" target=\"_blank\">"+decodeURIComponent(valueArray[i].substring(valueArray[i].lastIndexOf("/")+1))+"</a>"
+								}else{
+									labelArray[i] = '<img   onclick="jp.showPic(\''+valueArray[i]+'\')"'+' height="50px" src="'+valueArray[i]+'">';
+								}
+							}
+							return labelArray.join(" ");
+						}
+					}
+				}, {
+					field: 'projectProposal',
+					title: '项目建议书',
+					formatter:function(value, row , index){
+						if (value){
+							var valueArray = value.split("|");
+							var labelArray = [];
+							for(var i =0 ; i<valueArray.length; i++){
+								if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(valueArray[i]))
+								{
+									labelArray[i] = "<a href=\""+valueArray[i]+"\" url=\""+valueArray[i]+"\" target=\"_blank\">"+decodeURIComponent(valueArray[i].substring(valueArray[i].lastIndexOf("/")+1))+"</a>"
+								}else{
+									labelArray[i] = '<img   onclick="jp.showPic(\''+valueArray[i]+'\')"'+' height="50px" src="'+valueArray[i]+'">';
+								}
+							}
+							return labelArray.join(" ");
+						}
+					}
+
+				}, {
+					field: 'drawings',
+					title: '图纸',
+					formatter:function(value, row , index){
+						if (value){
+							var valueArray = value.split("|");
+							var labelArray = [];
+							for(var i =0 ; i<valueArray.length; i++){
+								if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(valueArray[i]))
+								{
+									labelArray[i] = "<a href=\""+valueArray[i]+"\" url=\""+valueArray[i]+"\" target=\"_blank\">"+decodeURIComponent(valueArray[i].substring(valueArray[i].lastIndexOf("/")+1))+"</a>"
+								}else{
+									labelArray[i] = '<img   onclick="jp.showPic(\''+valueArray[i]+'\')"'+' height="50px" src="'+valueArray[i]+'">';
+								}
+							}
+							return labelArray.join(" ");
+						}
+					}
+
+				}, {
+					field: 'drawingSpecification',
+					title: '施工图设计说明书',
+					formatter:function(value, row , index){
+						console.log(value);
+						if (value){
+							var valueArray = value.split("|");
+							var labelArray = [];
+							for(var i =0 ; i<valueArray.length; i++){
+								if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(valueArray[i]))
+								{
+									labelArray[i] = "<a href=\""+valueArray[i]+"\" url=\""+valueArray[i]+"\" target=\"_blank\">"+decodeURIComponent(valueArray[i].substring(valueArray[i].lastIndexOf("/")+1))+"</a>"
+								}else{
+									labelArray[i] = '<img   onclick="jp.showPic(\''+valueArray[i]+'\')"'+' height="50px" src="'+valueArray[i]+'">';
+								}
+							}
+							return labelArray.join(" ");
+						}
+					}
+				}, {
+					field: 'demolition',
+					title: '拆旧清册',
+					formatter:function(value, row , index){
+						console.log(value);
+						if (value){
+							var valueArray = value.split("|");
+							var labelArray = [];
+							for(var i =0 ; i<valueArray.length; i++){
+								if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(valueArray[i]))
+								{
+									labelArray[i] = "<a href=\""+valueArray[i]+"\" url=\""+valueArray[i]+"\" target=\"_blank\">"+decodeURIComponent(valueArray[i].substring(valueArray[i].lastIndexOf("/")+1))+"</a>"
+								}else{
+									labelArray[i] = '<img   onclick="jp.showPic(\''+valueArray[i]+'\')"'+' height="50px" src="'+valueArray[i]+'">';
+								}
+							}
+							return labelArray.join(" ");
+						}
+					}
+				}, {
+					field: 'approvalForm',
+					title: '土建现浇审批单',
+					formatter:function(value, row , index){
+						console.log(value);
+						if (value){
+							var valueArray = value.split("|");
+							var labelArray = [];
+							for(var i =0 ; i<valueArray.length; i++){
+								if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(valueArray[i]))
+								{
+									labelArray[i] = "<a href=\""+valueArray[i]+"\" url=\""+valueArray[i]+"\" target=\"_blank\">"+decodeURIComponent(valueArray[i].substring(valueArray[i].lastIndexOf("/")+1))+"</a>"
+								}else{
+									labelArray[i] = '<img   onclick="jp.showPic(\''+valueArray[i]+'\')"'+' height="50px" src="'+valueArray[i]+'">';
+								}
+							}
+							return labelArray.join(" ");
+						}
+					}
+				}
+			]
+		});
+
+		$('#dataTable').bootstrapTable({
+			//请求方法
+			method: 'post',
+			//类型json
+			dataType: "json",
+			contentType: "application/x-www-form-urlencoded",
+			//显示检索按钮
+			showSearch: false,
+			//显示刷新按钮
+			showRefresh: true,
+			//显示切换手机试图按钮
+			showToggle: false,
+			//显示 内容列下拉框
+			showColumns: false,
+			//显示到处按钮
+			showExport: false,
+			//显示切换分页按钮
+			showPaginationSwitch: false,
+			//最低显示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}/cg/reservemanagementcenter/process/materialData2",
+			//默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+			//queryParamsType:'',
+			////查询参数,每次调用是会带上这个参数,可自定义
+			queryParams : function(params) {
+				var searchParam = $("#searchForm").serializeJSON();
+				searchParam.projectName = $("#projectName").val();
+				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){
+			},
+			onClickRow: function(row, $el){
+			},
+			onLoadSuccess: function () {  //加载成功时执行
+			},
+			onShowSearch: function () {
+				$("#search-collapse").slideToggle();
+			},
+			columns: [
+				/*{
+                    field: 'projectName',
+                    width:230,
+                    title: '项目名称'
+                }*/
+				{
+					field: 'materialCode',
+					width:100,
+					title: '物料编码'
+				}
+				,{
+					field: 'materialName',
+					width:200,
+					title: '物料名称'
+				}
+				,{
+					field: 'extendDescription',
+					width:200,
+					title: '扩展描述'
+				}
+				,{
+					field: 'unit',
+					width:60,
+					title: '单位'
+				}
+				,{
+					field: 'totalCount',
+					width:60,
+					title: '总量'
+				}
+				,{
+					field: 'weightKg',
+					width:80,
+					title: '单重/kg'
+				}
+				,{
+					field: 'weightTon',
+					width:80,
+					title: '总重/吨'
+				}
+				,{
+					field: 'supplyType',
+					width:80,
+					title: '甲乙供'
+				}
+			]
+
+		})
+
+
+		if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+
+			$('#testPicTable').bootstrapTable("toggleView");
+		}
+
+		$('#testPicTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+			'check-all.bs.table uncheck-all.bs.table', function () {
+			$('#remove').prop('disabled', ! $('#testPicTable').bootstrapTable('getSelections').length);
+			$('#view,#edit').prop('disabled', $('#testPicTable').bootstrapTable('getSelections').length!=1);
+		});
+
+		$("#export").click(function(){//导出甲供材清册
+			var projectName = $("#projectName").val();
+			jp.downloadFile('${ctx}/cg/reservemanagementcenter/process/exportAct2?projectName=' + projectName);
+		});
+
+
+
+		$("#search").click("click", function() {// 绑定查询按扭
+			$('#testPicTable').bootstrapTable('refresh');
+		});
+
+		$("#reset").click("click", function() {// 绑定查询按扭
+			$("#searchForm  input").val("");
+			$("#searchForm  select").val("");
+			$("#searchForm  .select-item").html("");
+			$('#testPicTable').bootstrapTable('refresh');
+		});
+
+
+
+
+	});
+
+function getIdSelections() {
+	return $.map($("#testPicTable").bootstrapTable('getSelections'), function (row) {
+		return row.id
+	});
+}
+
+function deleteAll(){
+	jp.confirm('确认要删除该图片管理记录吗?', function(){
+		jp.loading();
+		jp.get("${ctx}/managementcenter/upload/delete?ids=" + getIdSelections(), function(data){
+			if(data.success){
+				$('#testPicTable').bootstrapTable('refresh');
+				jp.success(data.msg);
+			}else{
+				jp.error(data.msg);
+			}
+		})
+
+	})
+}
+
+//刷新列表
+function refresh(){
+	$('#testPicTable').bootstrapTable('refresh');
+}
+
+
+
+
+</script>

+ 443 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/designUnit.jsp

@@ -0,0 +1,443 @@
+<%@ 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/modules/bpm/task/history/taskHistoricList.js" %>--%>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@ include file="/webpage/include/treeview.jsp" %>
+	<%@ include file="budgetReview.js"%>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+			$("#agree").click(function () {
+				jp.prompt("通过", function (message) {
+					var problemResolved = $("#problemResolved").val();
+					var projectReserveId = $("#projectReserveId").val();
+					var problemSolver = $("#problemSolver").val();
+					var problemResolvedDescript = $("#problemResolvedDescript").val();
+					var projectName = $("#projectName").val();
+					if (problemResolved !== '是') {
+						jp.error("问题是否解决框不能为空且不能为否");
+					} else {
+						jp.post("${ctx}/cg/distribution/distribution/actDesignUnitNew",
+								{
+									"taskId": "${reserveProcess.act.taskId}",
+									"taskName": "${reserveProcess.act.taskName}",
+									"taskDefKey": "${reserveProcess.act.taskDefKey}",
+									"procInsId": "${reserveProcess.act.procInsId}",
+									"procDefId": "${reserveProcess.act.procDefId}",
+									"flag": "agree",
+									"projectReserveId":projectReserveId,
+									"problemResolved":problemResolved,
+									"problemSolver":problemSolver,
+									"problemResolvedDescript":problemResolvedDescript,
+									"projectName":projectName,
+									"comment": window.encodeURI(message)
+								},
+								function (data) {
+									if (data.success) {
+										jp.success(data.msg);
+										jp.go("${ctx}/act/task/todo");
+									} else {
+										jp.error(data.msg);
+									}
+								}
+						);
+					}
+				})
+			});
+			$("#disAgree").click(function () {
+				jp.prompt("驳回", function (message) {
+					var projectReserveId = $("#projectReserveId").val();
+					var projectName = $("#projectName").val();
+					jp.post("${ctx}/cg/distribution/distribution/actDesignUnitNew",
+							{
+								"taskId": "${reserveProcess.act.taskId}",
+								"taskName": "${reserveProcess.act.taskName}",
+								"taskDefKey": "${reserveProcess.act.taskDefKey}",
+								"procInsId": "${reserveProcess.act.procInsId}",
+								"procDefId": "${reserveProcess.act.procDefId}",
+								"flag": "disAgree",
+								"projectReserveId":projectReserveId,
+								"projectName":projectName,
+								"comment": window.encodeURI(message)
+							},
+							function (data) {
+								if (data.success) {
+									jp.success(data.msg);
+									jp.go("${ctx}/act/task/todo");
+								} else {
+									jp.error(data.msg);
+								}
+							}
+					);
+				})
+			});
+			$("#pass").click(function () {
+				jp.prompt("上报业主领导", function (message) {
+					var projectReserveId = $("#projectReserveId").val();
+					var projectName = $("#projectName").val();
+					var reportToLeader = $("#reportToLeader").val();
+					var userList = $("#userList").val();
+					var problemResolved = $("#problemResolved").val();
+					var problemResolvedDescript = $("#problemResolvedDescript").val();
+					var designChange = $("#designChange").val();
+					if (reportToLeader !== '是'){
+						jp.error("是否需要上报业主领导必须为是才能发起上报业主领导流程!");
+					}else if (!userList){
+						jp.error("请选择指定领导审批!");
+					} else {
+						jp.post("${ctx}/cg/distribution/distribution/actDesignUnitNew",
+								{
+									"taskId": "${reserveProcess.act.taskId}",
+									"taskName": "${reserveProcess.act.taskName}",
+									"taskDefKey": "${reserveProcess.act.taskDefKey}",
+									"procInsId": "${reserveProcess.act.procInsId}",
+									"procDefId": "${reserveProcess.act.procDefId}",
+									"flag": "pass",
+									"projectReserveId":projectReserveId,
+									"reportToLeader":reportToLeader,
+									"problemSolverLeader":userList,
+									"designChange":designChange,
+									"problemResolvedDescript":problemResolvedDescript,
+									"problemResolved":problemResolved,
+									"projectName":projectName,
+									"comment": window.encodeURI(message)
+								},
+								function (data) {
+									if (data.success) {
+										jp.success(data.msg);
+										jp.go("${ctx}/act/task/todo");
+									} else {
+										jp.error(data.msg);
+									}
+								}
+						);
+					}
+				})
+			});
+			$("#tg").click(function () {
+				jp.prompt("是否需要设计变更", function (message) {
+					var projectReserveId = $("#projectReserveId").val();
+					var projectName = $("#projectName").val();
+					var designChange = $("#designChange").val();
+					var changeType = $("#changeType").val();
+					var designChangeType = $("#designChangeType").val();
+					if (designChange !== '是'){
+						jp.error("是否需设计变更必须为是才能发起上设计变更流程!");
+					} else {
+						jp.post("${ctx}/cg/distribution/distribution/actDesignUnitNew",
+								{
+									"taskId": "${reserveProcess.act.taskId}",
+									"taskName": "${reserveProcess.act.taskName}",
+									"taskDefKey": "${reserveProcess.act.taskDefKey}",
+									"procInsId": "${reserveProcess.act.procInsId}",
+									"procDefId": "${reserveProcess.act.procDefId}",
+									"flag": "tg",
+									"projectReserveId":projectReserveId,
+									"projectName":projectName,
+									"designChange":designChange,
+									"changeType":changeType,
+									"designChangeType":designChangeType,
+									"comment": window.encodeURI(message)
+								},
+								function (data) {
+									if (data.success) {
+										jp.success(data.msg);
+										jp.go("${ctx}/act/task/todo");
+									} else {
+										jp.error(data.msg);
+									}
+								}
+						);
+					}
+				})
+			});
+		});
+	</script>
+</head>
+<body class="bg-white">
+	<div class="wrapper wrapper-content">
+		<div class="row">
+			<div class="col-md-12">
+				<div class="panel panel-primary">
+					<div class="panel-heading">
+						<h3 class="panel-title">
+							<h3 class="panel-title">业主项目经理审核</h3>
+						</h3>
+					</div>
+					<div class="panel-body">
+						<form:form id="inputForm" modelAttribute="reserveProcess" class="form-horizontal">
+							<form:hidden path="id"/>
+							<form:hidden path="act.taskId"/>
+							<form:hidden path="act.taskName"/>
+							<form:hidden path="act.taskDefKey"/>
+							<form:hidden path="act.procInsId"/>
+							<form:hidden path="act.procDefId"/>
+							<form:hidden id="flag" path="act.flag"/>
+							<table class="table table-bordered">
+								<tbody>
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">项目年份:</label></td>
+									<td class="width-35">
+										<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">项目性质:</label></td>
+									<td class="width-35">
+										<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">需求单位:</label></td>
+									<td class="width-35">
+										<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">区域:</label></td>
+									<td class="width-35">
+										<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">项目分组:</label></td>
+									<td class="width-35">
+										<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">储备批次:</label></td>
+									<td class="width-35">
+										<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">供电区域:</label></td>
+									<td class="width-35">
+										<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+									<td class="width-35">
+										<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+									<td class="width-35">
+										<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+									<td class="width-35">
+										<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+									<td class="width-35">
+										<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+									</td>
+									<td class="width-15 active"><label class="">国网项目编码:</label></td>
+									<td class="width-35">
+										<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">国网项目名称:</label></td>
+									<td class="width-35">
+										<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+									<td class="width-35">
+										<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">变电站名称:</label></td>
+									<td class="width-35">
+										<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">线路名称:</label></td>
+									<td class="width-35">
+										<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">网架项目划分:</label></td>
+									<td class="width-35">
+										<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">需求类型:</label></td>
+									<td class="width-35">
+										<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">项目类型:</label></td>
+									<td class="width-35">
+										<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">费用估算:</label></td>
+									<td class="width-35">
+										<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">备注:</label></td>
+									<td class="width-35">
+										<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">问题发起:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题发起人:</label></td>
+									<td class="width-35">
+										<form:input path="promoter" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题所处阶段:</label></td>
+									<td class="width-35">
+										<form:input path="problemStage" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题类型:</label></td>
+									<td class="width-35">
+										<form:input path="problemType" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题描述:</label></td>
+									<td class="width-35">
+										<form:input path="problemDescript" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">业主项目经理:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决人:</label></td>
+									<td class="width-35">
+										<form:input path="problemSolver" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题是否解决:</label></td>
+									<td class="width-35">
+										<select id="problemResolved" name="problemResolved"  class="form-control required">
+											<option value="">请选择</option>
+											<option value="是" <c:if test="${reserveProcess.problemResolved=='是'}">selected</c:if>>是</option>
+											<option value="否" <c:if test="${reserveProcess.problemResolved=='否'}">selected</c:if>>否</option>
+										</select>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="problemResolvedDescript" htmlEscape="false" class="form-control"/>
+									</td>
+									<td class="width-15 active" id="problemResolvedRow"><label class="">是否需要设计变更:</label></td>
+									<td class="width-35" id="problemResolvedRow1">
+										<select id="designChange" name="designChange"  class="form-control required">
+											<option value="">请选择</option>
+											<option value="是" <c:if test="${reserveProcess.designChange=='是'}">selected</c:if>>是</option>
+											<option value="否" <c:if test="${reserveProcess.designChange=='否'}">selected</c:if>>否</option>
+										</select>
+									</td>								</tr>
+								<tr id="problemResolvedRow2">
+									<td class="width-15 active"><label class="">变更类型:</label></td>
+									<td class="width-35">
+										<select id="changeType" name="changeType"  class="form-control required">
+											<option value="">请选择</option>
+											<option value="重出施工图" <c:if test="${reserveProcess.changeType=='重出施工图'}">selected</c:if>>重出施工图</option>
+											<option value="直接出竣工图" <c:if test="${reserveProcess.changeType=='直接出竣工图'}">selected</c:if>>直接出竣工图</option>
+										</select>
+									</td>
+									<td class="width-15 active"><label class="">设计变更类型:</label></td>
+									<td class="width-35">
+										<select id="designChangeType" name="designChangeType"  class="form-control required">
+											<option value="">请选择</option>
+											<option value="普通" <c:if test="${reserveProcess.designChangeType=='普通'}">selected</c:if>>普通</option>
+											<option value="重大" <c:if test="${reserveProcess.designChangeType=='重大'}">selected</c:if>>重大</option>
+										</select>
+									</td>
+								</tr>
+								<tr id="problemResolvedRow3">
+									<td class="width-15 active"><label class="">是否需要上报业主领导:</label></td>
+									<td class="width-35">
+										<select id="reportToLeader" name="reportToLeader"  class="form-control required">
+											<option value="0">请选择</option>
+											<option value="是" <c:if test="${reserveProcess.reportToLeader=='是'}">selected</c:if>>是</option>
+											<option value="否" <c:if test="${reserveProcess.reportToLeader=='否'}">selected</c:if>>否</option>
+										</select>
+									</td>
+									<td class="width-15 active"><label class="">选择指定领导审批:</label></td>
+									<td class="width-35">
+										<select id="userList" name="userList" class="form-control required">
+											<option value="">请选择</option>
+											<c:forEach items="${reserveProcess.userList}" var="user">
+												<option value="${user}">${user}</option>
+											</c:forEach>
+										</select>
+									</td>
+								</tr>
+								<%--<tr>
+									<td colspan="4" class="width-15 active"><label class="">业主单位领导:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决人:</label></td>
+									<td class="width-35">
+										<form:input path="problemSolverLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题是否解决:</label></td>
+									<td class="width-35">
+										<form:input path="problemResolvedLeader" htmlEscape="false"  readonly="true"  class="form-control required"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决描述:</label></td>
+									<td class="width-35">
+										<form:input path="problemResolvedDescriptLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+									<td class="width-35">
+										<form:input path="designChangeLeader" htmlEscape="false"  readonly="true"  class="form-control required"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">变更类型:</label></td>
+									<td class="width-35">
+										<form:input path="changeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control required"/>
+									</td>
+									<td class="width-15 active"><label class="">设计变更类型:</label></td>
+									<td class="width-35">
+										<form:input path="designChangeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control required"/>
+									</td>
+								</tr>--%>
+								</tbody>
+							</table>
+						</form:form>
+
+<%--						<table id="dataTable"   data-toolbar="#toolbar"></table>--%>
+
+						<div class="row">
+							<div class="col-sm-3"></div>
+							<div class="col-sm-6">
+								<div class="form-group text-center">
+									<input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="submit" value="问题已解决"/>&nbsp;
+									<input id="disAgree" class="btn  btn-danger btn-lg btn-parsley" type="submit" value="驳回"/>
+									<input id="pass" class="btn  btn-danger btn-lg btn-parsley" type="submit" value="上报业主领导"/>
+									<input id="tg" class="btn  btn-danger btn-lg btn-parsley" type="submit" value="设计变更"/>
+								</div>
+							</div>
+						</div>
+
+						<c:if test="${not empty reserveProcess.id}">
+							<act:flowChart procInsId="${reserveProcess.act.procInsId}"/>
+							<act:histoicFlow procInsId="${reserveProcess.act.procInsId}" />
+						</c:if>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</body>
+</html>

+ 405 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/designUnitAgain.jsp

@@ -0,0 +1,405 @@
+<%@ 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/modules/bpm/task/history/taskHistoricList.js" %>--%>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@ include file="/webpage/include/treeview.jsp" %>
+	<%@ include file="budgetReview.js"%>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+			$("#agree").click(function () {
+				jp.prompt("通过", function (message) {
+					var projectReserveId = $("#projectReserveId").val();
+					var projectName = $("#projectName").val();
+					jp.post("${ctx}/cg/distribution/distribution/actDesignUnitNew",
+							{
+								"taskId": "${reserveProcess.act.taskId}",
+								"taskName": "${reserveProcess.act.taskName}",
+								"taskDefKey": "${reserveProcess.act.taskDefKey}",
+								"procInsId": "${reserveProcess.act.procInsId}",
+								"procDefId": "${reserveProcess.act.procDefId}",
+								"flag": "agree",
+								"projectReserveId":projectReserveId,
+								"projectName":projectName,
+								"comment": window.encodeURI(message)
+							},
+							function (data) {
+								if (data.success) {
+									jp.success(data.msg);
+									jp.go("${ctx}/act/task/todo");
+								} else {
+									jp.error(data.msg);
+								}
+							}
+					);
+				})
+			});
+			$("#disAgree").click(function () {
+				jp.prompt("驳回", function (message) {
+					var projectReserveId = $("#projectReserveId").val();
+					var projectName = $("#projectName").val();
+					jp.post("${ctx}/cg/distribution/distribution/actDesignUnitAgain",
+							{
+								"taskId": "${reserveProcess.act.taskId}",
+								"taskName": "${reserveProcess.act.taskName}",
+								"taskDefKey": "${reserveProcess.act.taskDefKey}",
+								"procInsId": "${reserveProcess.act.procInsId}",
+								"procDefId": "${reserveProcess.act.procDefId}",
+								"flag": "disAgree",
+								"projectReserveId":projectReserveId,
+								"projectName":projectName,
+								"comment": window.encodeURI(message)
+							},
+							function (data) {
+								if (data.success) {
+									jp.success(data.msg);
+									jp.go("${ctx}/act/task/todo");
+								} else {
+									jp.error(data.msg);
+								}
+							}
+					);
+				})
+			});
+		});
+	</script>
+</head>
+<body class="bg-white">
+<input id="uid" type="hidden">
+<div class="wrapper wrapper-content">
+	<div class="row">
+		<div class="col-md-12">
+			<div class="panel panel-primary">
+				<div class="panel-heading">
+					<h3 class="panel-title">
+						<h3 class="panel-title">设计单位上传施工图</h3>
+					</h3>
+				</div>
+				<div class="panel-body">
+					<form:form id="inputForm" modelAttribute="reserveProcess" class="form-horizontal">
+						<form:hidden path="id"/>
+						<form:hidden path="act.taskId"/>
+						<form:hidden path="act.taskName"/>
+						<form:hidden path="act.taskDefKey"/>
+						<form:hidden path="act.procInsId"/>
+						<form:hidden path="act.procDefId"/>
+						<form:hidden id="flag" path="act.flag"/>
+						<table class="table table-bordered">
+							<tbody>
+							<tr>
+								<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">项目年份:</label></td>
+								<td class="width-35">
+									<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">项目性质:</label></td>
+								<td class="width-35">
+									<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">需求单位:</label></td>
+								<td class="width-35">
+									<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">区域:</label></td>
+								<td class="width-35">
+									<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">项目分组:</label></td>
+								<td class="width-35">
+									<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">储备批次:</label></td>
+								<td class="width-35">
+									<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">供电区域:</label></td>
+								<td class="width-35">
+									<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+								<td class="width-35">
+									<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+								<td class="width-35">
+									<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+								<td class="width-35">
+									<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+								<td class="width-35">
+									<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+								</td>
+								<td class="width-15 active"><label class="">国网项目编码:</label></td>
+								<td class="width-35">
+									<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">国网项目名称:</label></td>
+								<td class="width-35">
+									<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+								<td class="width-35">
+									<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">变电站名称:</label></td>
+								<td class="width-35">
+									<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">线路名称:</label></td>
+								<td class="width-35">
+									<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">网架项目划分:</label></td>
+								<td class="width-35">
+									<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">需求类型:</label></td>
+								<td class="width-35">
+									<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">项目类型:</label></td>
+								<td class="width-35">
+									<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">费用估算:</label></td>
+								<td class="width-35">
+									<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">备注:</label></td>
+								<td class="width-35">
+									<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td colspan="4" class="width-15 active"><label class="">问题发起:</label></td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题发起人:</label></td>
+								<td class="width-35">
+									<form:input path="promoter" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">问题所处阶段:</label></td>
+								<td class="width-35">
+									<form:input path="problemStage" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题类型:</label></td>
+								<td class="width-35">
+									<form:input path="problemType" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">问题描述:</label></td>
+								<td class="width-35">
+									<form:input path="problemDescript" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td colspan="4" class="width-15 active"><label class="">业主项目经理:</label></td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题解决人:</label></td>
+								<td class="width-35">
+									<form:input path="problemSolver" htmlEscape="false" readonly="true" class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">问题是否解决:</label></td>
+								<td class="width-35">
+									<select id="problemResolved" name="problemResolved" disabled class="form-control">
+										<option value="">请选择</option>
+										<option value="是" <c:if test="${reserveProcess.problemResolved=='是'}">selected</c:if>>是</option>
+										<option value="否" <c:if test="${reserveProcess.problemResolved=='否'}">selected</c:if>>否</option>
+									</select>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题解决描述:</label></td>
+								<td class="width-35">
+									<form:textarea path="problemResolvedDescript" readonly="true" htmlEscape="false" class="form-control"/>
+								</td>
+								<td class="width-15 active" id="problemResolvedRow"><label class="">是否需要设计变更:</label></td>
+								<td class="width-35" id="problemResolvedRow1">
+									<select id="designChange" name="designChange" disabled class="form-control">
+										<option value="">请选择</option>
+										<option value="是" <c:if test="${reserveProcess.designChange=='是'}">selected</c:if>>是</option>
+										<option value="否" <c:if test="${reserveProcess.designChange=='否'}">selected</c:if>>否</option>
+									</select>
+								</td>								</tr>
+							<tr id="problemResolvedRow2">
+								<td class="width-15 active"><label class="">变更类型:</label></td>
+								<td class="width-35">
+									<select id="changeType" name="changeType" disabled class="form-control">
+										<option value="">请选择</option>
+										<option value="重出施工图" <c:if test="${reserveProcess.changeType=='重出施工图'}">selected</c:if>>重出施工图</option>
+										<option value="直接出竣工图" <c:if test="${reserveProcess.changeType=='直接出竣工图'}">selected</c:if>>直接出竣工图</option>
+									</select>
+								</td>
+								<td class="width-15 active"><label class="">设计变更类型:</label></td>
+								<td class="width-35">
+									<select id="designChangeType" name="designChangeType" disabled class="form-control">
+										<option value="">请选择</option>
+										<option value="普通" <c:if test="${reserveProcess.designChangeType=='普通'}">selected</c:if>>普通</option>
+										<option value="重大" <c:if test="${reserveProcess.designChangeType=='重大'}">selected</c:if>>重大</option>
+									</select>
+								</td>
+							</tr>
+							<tr id="problemResolvedRow3">
+								<td class="width-15 active"><label class="">是否需要上报业主领导:</label></td>
+								<td class="width-35">
+									<select id="reportToLeader" name="reportToLeader" disabled class="form-control">
+										<option value="0">请选择</option>
+										<option value="是" <c:if test="${reserveProcess.reportToLeader=='是'}">selected</c:if>>是</option>
+										<option value="否" <c:if test="${reserveProcess.reportToLeader=='否'}">selected</c:if>>否</option>
+									</select>
+								</td>
+								<td class="width-15 active"><label class="">选择指定领导审批:</label></td>
+								<td class="width-35">
+									<select id="userList" name="userList" disabled class="form-control">
+										<option value="">请选择</option>
+										<c:forEach items="${reserveProcess.userList}" var="user">
+											<option value="${user}">${user}</option>
+										</c:forEach>
+									</select>
+								</td>
+							</tr>
+							<tr>
+								<td colspan="4" class="width-15 active"><label class="">业主单位领导:</label></td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题解决人:</label></td>
+								<td class="width-35">
+									<form:input path="problemSolverLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">问题是否解决:</label></td>
+								<td class="width-35">
+									<form:input path="problemResolvedLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题解决描述:</label></td>
+								<td class="width-35">
+									<form:input path="problemResolvedDescriptLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+								<td class="width-35">
+									<form:input path="designChangeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">变更类型:</label></td>
+								<td class="width-35">
+									<form:input path="changeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">设计变更类型:</label></td>
+								<td class="width-35">
+									<form:input path="designChangeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+
+							<%--<tr>
+								<td colspan="4" class="width-15 active"><label class="">设计资料:</label></td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">预算书:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="budgetStatement" value="${reserveProcess.budgetStatement}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+								<td class="width-15 active"><label class="">项目建议书:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="projectProposal" value="${reserveProcess.projectProposal}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">施工图纸:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="drawings" value="${reserveProcess.drawings}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+								<td class="width-15 active"><label class="">施工图设计说明书:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="drawingSpecification" value="${reserveProcess.drawingSpecification}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+							</tr>
+
+							<tr>
+								<td class="width-15 active"><label class="">拆旧清册:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="demolition" value="${reserveProcess.demolition}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+								<td class="width-15 active"><label class="">土建现浇审批单:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="approvalForm" value="${reserveProcess.approvalForm}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+							</tr>
+
+							<tr>
+								<td class="width-15 active"><label class="">甲供材清册:</label></td>
+								<td class="width-35">
+									<a id="moreImport" class="btn btn-info" onclick="return false;">
+										<i class="fa fa-file-excel-o"></i> 多文件导入
+									</a>
+									<a id="onLine" class="btn btn-info" onclick="return false;">
+										<i class="fa fa-file-excel-o"></i> 在线开甲供材
+									</a>
+								</td>
+							</tr>--%>
+							</tbody>
+						</table>
+					</form:form>
+					<td class="width-15 active"><label class="">历史数据展示:</label></td>
+					<table id="testPicTable"   data-toolbar="#toolbar"></table>
+					<div id="toolbar">
+						<button id="export" class="btn btn-warning">
+							<i class="fa fa-file-excel-o"></i> 导出甲供材清册
+						</button>
+					</div>
+					<table id="dataTable"   data-toolbar="#toolbar"></table>
+
+					<div class="row">
+						<div class="col-sm-3"></div>
+						<div class="col-sm-6">
+							<div class="form-group text-center">
+								<input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="submit" value="通过"/>&nbsp;
+								<input id="disAgree" class="btn  btn-danger btn-lg btn-parsley" type="submit" value="驳回"/>
+							</div>
+						</div>
+					</div>
+
+					<c:if test="${not empty reserveProcess.id}">
+						<act:flowChart procInsId="${reserveProcess.act.procInsId}"/>
+						<act:histoicFlow procInsId="${reserveProcess.act.procInsId}" />
+					</c:if>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 555 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/designUnitFile.jsp

@@ -0,0 +1,555 @@
+<%@ 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/modules/bpm/task/history/taskHistoricList.js" %>--%>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@ include file="/webpage/include/treeview.jsp" %>
+	<%@ include file="budgetReview.js"%>
+	<script type="text/javascript">
+		function testSay(uuid) {
+
+			document.getElementById("uid").value = uuid
+			var body = top.layer.getChildFrame('body', 0);
+			var pickUuid = body.find('#test');
+			body.find('#uid').val(uuid);
+
+			pickUuid.click()
+		}
+		function testSay2(uuid) {
+			console.log('say2')
+			document.getElementById("uid").value = uuid
+			var body = top.layer.getChildFrame('body', 0);
+			var pickUuid = body.find('#test2');
+			body.find('#uid').val(uuid);
+
+			pickUuid.click()
+		}
+	var subVar;
+		$(document).ready(function() {
+
+			var drawingAndSiteProblem = $("#drawingAndSiteProblem").val();
+			var communicationProblem = $("#communicationProblem").val();
+			var civilPrefabricateProblem = $("#civilPrefabricateProblem").val();
+			var liveWorkNumProblem = $("#liveWorkNumProblem").val();
+			var projectManagerOtherProblem = $("#projectManagerOtherProblem").val();
+
+			if (drawingAndSiteProblem=="" & communicationProblem=="" & civilPrefabricateProblem==""
+					& liveWorkNumProblem=="" & projectManagerOtherProblem==""){
+				$("#pro01").css('display','none');
+				$("#pro02").css('display','none');
+				$("#pro03").css('display','none');
+				$("#pro04").css('display','none');
+			}
+
+			var preferedCase = $("#preferedCase").val();
+			var transferSituation = $("#transferSituation").val();
+			var budgetTemplateCheck = $("#budgetTemplateCheck").val();
+			var quotaApplicationCheck = $("#quotaApplicationCheck").val();
+			var workLoadCheck = $("#workLoadCheck").val();
+			var checkTheFee = $("#checkTheFee").val();
+			var supplyCheck = $("#supplyCheck").val();
+			var materialCheck = $("#materialCheck").val();
+			var liveWorkFeeCheck = $("#liveWorkFeeCheck").val();
+			var demolitionEngineeringProblems = $("#demolitionEngineeringProblems").val();
+			var otherProblem = $("#otherProblem").val();
+
+			if (preferedCase=="" & transferSituation=="" & budgetTemplateCheck==""
+					& quotaApplicationCheck=="" & workLoadCheck=="" & checkTheFee==""
+					& supplyCheck=="" & materialCheck=="" & liveWorkFeeCheck==""
+					& demolitionEngineeringProblems=="" & otherProblem==""){
+				$("#test1").css('display','none');
+				$("#test2").css('display','none');
+				$("#test3").css('display','none');
+				$("#test4").css('display','none');
+				$("#test5").css('display','none');
+				$("#test6").css('display','none');
+				$("#test7").css('display','none');
+			}
+
+			$('#disclosureFinishDate').datetimepicker({
+				format: "YYYY-MM-DD"
+			});
+
+			$("#agree").click(function () {
+				jp.prompt("通过", function (message) {
+					//预算书
+					var budgetStatement = $("input[name='budgetStatement']").val();
+					//项目建议书
+					var projectProposal = $("input[name='projectProposal']").val();
+					var drawings = $("input[name='drawings']").val();
+					//施工图设计说明书
+					var drawingSpecification = $("input[name='drawingSpecification']").val();
+					//拆旧清册
+					var demolition = $("input[name='demolition']").val();
+					//土建现浇审批单
+					var approvalForm = $("input[name='approvalForm']").val();
+
+					var projectReserveId = $("#projectReserveId").val();
+					var projectName = $("#projectName").val();
+
+
+					var material = $("#material").val()
+					var drjgc = $("#drjgc").val()
+					var uid = $("#uid").val()
+
+
+					if (budgetStatement == ""
+							|| budgetStatement == undefined
+							|| budgetStatement == 'undefined') {
+						jp.error("预算书不能为空");
+					}else if (projectProposal == ""
+							|| projectProposal == undefined
+							|| projectProposal == 'undefined'){
+						jp.error("项目建议书不能为空");
+					}else if (drawings == ""
+							|| drawings == undefined
+							|| drawings == 'undefined') {
+						jp.error("施工图纸不能为空");
+					}else if (drawingSpecification == ""
+							|| drawingSpecification == undefined
+							|| drawingSpecification == 'undefined') {
+						jp.error("施工图设计说明书不能为空");
+					}else if (demolition == ""
+							|| demolition == undefined
+							|| demolition == 'undefined') {
+						jp.error("拆旧清册不能为空");
+					}else if (approvalForm == ""
+							|| approvalForm == undefined
+							|| approvalForm == 'undefined') {
+						jp.error("土建现浇审批单不能为空");
+					}else if (material == "" & drjgc =="" ){
+						jp.error("甲供材信息不能为空");
+					} else {
+						jp.post("${ctx}/cg/distribution/distribution/actDesignUnitFile",
+								{
+									"taskId": "${reserveProcess.act.taskId}",
+									"taskName": "${reserveProcess.act.taskName}",
+									"taskDefKey": "${reserveProcess.act.taskDefKey}",
+									"procInsId": "${reserveProcess.act.procInsId}",
+									"procDefId": "${reserveProcess.act.procDefId}",
+									"uid": uid,
+									"flag": "yes",
+									"projectReserveId":projectReserveId,
+									"projectName":projectName,
+									"budgetStatement":budgetStatement,
+									"projectProposal":projectProposal,
+									"drawings":drawings,
+									"drawingSpecification":drawingSpecification,
+									"demolition":demolition,
+									"approvalForm":approvalForm,
+									"material":material,
+									"drjgc":drjgc,
+									"comment": window.encodeURI(message)
+								},
+								function (data) {
+									if (data.success) {
+										jp.success(data.msg);
+										jp.go("${ctx}/act/task/todo");
+									} else {
+										jp.error(data.msg);
+									}
+								}
+						);
+					}
+
+
+				})
+			});
+
+			$("#moreImport").click(function(){
+				var projectReserveId = $("#projectReserveId").val();
+				jp.open({
+					type: 2,
+					area: [800, 400],
+					auto: true,
+					title:"导入数据",
+					content: "${ctx}/managementcenter/materialinfo/importMore/Process",
+					btn: ['确定', '关闭'],
+					btn1: function(index, layero){
+						var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/cg/distribution/distribution/importCGValidations?projectReserveId=' + projectReserveId, function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								jp.close(index);
+								document.getElementById("drjgc").value = "cs"
+							}else{
+								jp.error(data.msg);
+							}
+						});//调用保存事件
+						return false;
+					},
+
+					btn2: function(index){
+						jp.close(index);
+					}
+				});
+			});
+			$("#onLine").click(function(){
+				var projectName = $("#projectName").val();
+				var projectReserveId = $("#projectReserveId").val();
+				jp.open({
+					type: 2,
+					area: [2000, 1000],
+					auto: true,
+					title:"在线开甲供材",
+					content: "${ctx}/raiseCapital/distributionJgcList?projectReserveId=" + projectReserveId +"&projectName=" + projectName ,
+					btn: ['确定', '关闭'],
+					btn1: function(index, layero){
+						//当确定的时候将数据查出来
+						var body = top.layer.getChildFrame('body', index);
+						var materialCode = body.find('#projectName').val();
+						var test = $("#drjgc").val();
+						console.log(test + "测试")
+
+						document.getElementById("material").value = materialCode
+						jp.close(index);
+					},
+
+
+					btn2: function(index){
+						jp.close(index);
+					}
+				});
+			});
+		});
+	</script>
+</head>
+<body class="bg-white">
+	<input id="material" type="hidden" value="${material}">
+	<input id="drjgc" type="hidden" value="${drjgc}">
+	<input id="uid" type="hidden">
+	<div class="wrapper wrapper-content">
+		<div class="row">
+			<div class="col-md-12">
+				<div class="panel panel-primary">
+					<div class="panel-heading">
+						<h3 class="panel-title">
+							<h3 class="panel-title">设计单位上传施工图</h3>
+						</h3>
+					</div>
+					<div class="panel-body">
+						<form:form id="inputForm" modelAttribute="reserveProcess" class="form-horizontal">
+							<form:hidden path="id"/>
+							<form:hidden path="act.taskId"/>
+							<form:hidden path="act.taskName"/>
+							<form:hidden path="act.taskDefKey"/>
+							<form:hidden path="act.procInsId"/>
+							<form:hidden path="act.procDefId"/>
+							<form:hidden id="flag" path="act.flag"/>
+							<table class="table table-bordered">
+								<tbody>
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">项目年份:</label></td>
+									<td class="width-35">
+										<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">项目性质:</label></td>
+									<td class="width-35">
+										<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">需求单位:</label></td>
+									<td class="width-35">
+										<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">区域:</label></td>
+									<td class="width-35">
+										<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">项目分组:</label></td>
+									<td class="width-35">
+										<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">储备批次:</label></td>
+									<td class="width-35">
+										<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">供电区域:</label></td>
+									<td class="width-35">
+										<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+									<td class="width-35">
+										<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+									<td class="width-35">
+										<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+									<td class="width-35">
+										<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+									<td class="width-35">
+										<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+									</td>
+									<td class="width-15 active"><label class="">国网项目编码:</label></td>
+									<td class="width-35">
+										<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">国网项目名称:</label></td>
+									<td class="width-35">
+										<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+									<td class="width-35">
+										<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">变电站名称:</label></td>
+									<td class="width-35">
+										<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">线路名称:</label></td>
+									<td class="width-35">
+										<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">网架项目划分:</label></td>
+									<td class="width-35">
+										<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">需求类型:</label></td>
+									<td class="width-35">
+										<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">项目类型:</label></td>
+									<td class="width-35">
+										<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">费用估算:</label></td>
+									<td class="width-35">
+										<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">备注:</label></td>
+									<td class="width-35">
+										<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">问题发起:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题发起人:</label></td>
+									<td class="width-35">
+										<form:input path="promoter" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题所处阶段:</label></td>
+									<td class="width-35">
+										<form:input path="problemStage" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题类型:</label></td>
+									<td class="width-35">
+										<form:input path="problemType" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题描述:</label></td>
+									<td class="width-35">
+										<form:input path="problemDescript" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">业主项目经理:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决人:</label></td>
+									<td class="width-35">
+										<form:input path="problemSolver" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题是否解决:</label></td>
+									<td class="width-35">
+										<select id="problemResolved" name="problemResolved" disabled class="form-control">
+											<option value="">请选择</option>
+											<option value="是" <c:if test="${reserveProcess.problemResolved=='是'}">selected</c:if>>是</option>
+											<option value="否" <c:if test="${reserveProcess.problemResolved=='否'}">selected</c:if>>否</option>
+										</select>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="problemResolvedDescript" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active" id="problemResolvedRow"><label class="">是否需要设计变更:</label></td>
+									<td class="width-35" id="problemResolvedRow1">
+										<select id="designChange" name="designChange" disabled class="form-control">
+											<option value="">请选择</option>
+											<option value="是" <c:if test="${reserveProcess.designChange=='是'}">selected</c:if>>是</option>
+											<option value="否" <c:if test="${reserveProcess.designChange=='否'}">selected</c:if>>否</option>
+										</select>
+									</td>								</tr>
+								<tr id="problemResolvedRow2">
+									<td class="width-15 active"><label class="">变更类型:</label></td>
+									<td class="width-35">
+										<select id="changeType" name="changeType" disabled class="form-control">
+											<option value="">请选择</option>
+											<option value="重出施工图" <c:if test="${reserveProcess.changeType=='重出施工图'}">selected</c:if>>重出施工图</option>
+											<option value="直接出竣工图" <c:if test="${reserveProcess.changeType=='直接出竣工图'}">selected</c:if>>直接出竣工图</option>
+										</select>
+									</td>
+									<td class="width-15 active"><label class="">设计变更类型:</label></td>
+									<td class="width-35">
+										<select id="designChangeType" name="designChangeType" disabled class="form-control">
+											<option value="">请选择</option>
+											<option value="普通" <c:if test="${reserveProcess.designChangeType=='普通'}">selected</c:if>>普通</option>
+											<option value="重大" <c:if test="${reserveProcess.designChangeType=='重大'}">selected</c:if>>重大</option>
+										</select>
+									</td>
+								</tr>
+								<tr id="problemResolvedRow3">
+									<td class="width-15 active"><label class="">是否需要上报业主领导:</label></td>
+									<td class="width-35">
+										<select id="reportToLeader" name="reportToLeader" disabled class="form-control">
+											<option value="0">请选择</option>
+											<option value="是" <c:if test="${reserveProcess.reportToLeader=='是'}">selected</c:if>>是</option>
+											<option value="否" <c:if test="${reserveProcess.reportToLeader=='否'}">selected</c:if>>否</option>
+										</select>
+									</td>
+									<%--<td class="width-15 active"><label class="">选择指定领导审批:</label></td>
+									<td class="width-35">
+										<select id="userList" name="userList" disabled class="form-control">
+											<option value="">请选择</option>
+											<c:forEach items="${reserveProcess.userList}" var="user">
+												<option value="${user}">${user}</option>
+											</c:forEach>
+										</select>
+									</td>--%>
+								</tr>
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">业主单位领导:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决人:</label></td>
+									<td class="width-35">
+										<form:input path="problemSolverLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题是否解决:</label></td>
+									<td class="width-35">
+										<form:input path="problemResolvedLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决描述:</label></td>
+									<td class="width-35">
+										<form:input path="problemResolvedDescriptLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+									<td class="width-35">
+										<form:input path="designChangeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">变更类型:</label></td>
+									<td class="width-35">
+										<form:input path="changeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">设计变更类型:</label></td>
+									<td class="width-35">
+										<form:input path="designChangeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">设计资料:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">预算书:</label></td>
+									<td class="width-35">
+										<sys:fileUpload path="budgetStatement"  value="${reserveProcess.budgetStatement}" type="*" uploadPath="/personnelTurnover"  readonly="false"/>
+									</td>
+									<td class="width-15 active"><label class="">项目建议书:</label></td>
+									<td class="width-35">
+										<sys:fileUpload path="projectProposal"  value="${reserveProcess.projectProposal}" type="*" uploadPath="/personnelTurnover"  readonly="false"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">施工图纸:</label></td>
+									<td class="width-35">
+										<sys:fileUpload path="drawings"  value="${reserveProcess.drawings}" type="*" uploadPath="/personnelTurnover"  readonly="false"/>
+									</td>
+									<td class="width-15 active"><label class="">施工图设计说明书:</label></td>
+									<td class="width-35">
+										<sys:fileUpload path="drawingSpecification"  value="${reserveProcess.drawingSpecification}" type="*" uploadPath="/personnelTurnover"  readonly="false"/>
+									</td>
+								</tr>
+
+								<tr>
+									<td class="width-15 active"><label class="">拆旧清册:</label></td>
+									<td class="width-35">
+										<sys:fileUpload path="demolition"  value="${reserveProcess.demolition}" type="*" uploadPath="/personnelTurnover"  readonly="false"/>
+									</td>
+									<td class="width-15 active"><label class="">土建现浇审批单:</label></td>
+									<td class="width-35">
+										<sys:fileUpload path="approvalForm"  value="${reserveProcess.approvalForm}" type="*" uploadPath="/personnelTurnover"  readonly="false"/>
+									</td>
+								</tr>
+
+								<tr>
+									<td class="width-15 active"><label class="">甲供材清册:</label></td>
+									<td class="width-35">
+										<a id="moreImport" class="btn btn-info">
+											<i class="fa fa-file-excel-o"></i> 多文件导入
+										</a>
+										<a id="onLine" class="btn btn-info">
+											<i class="fa fa-file-excel-o"></i> 在线开甲供材
+										</a>
+									</td>
+								</tr>
+								</tbody>
+							</table>
+						</form:form>
+						<td class="width-15 active"><label class="">历史数据展示:</label></td>
+						<table id="testPicTable"   data-toolbar="#toolbar"></table>
+						<div id="toolbar">
+							<button id="export" class="btn btn-warning">
+								<i class="fa fa-file-excel-o"></i> 导出甲供材清册
+							</button>
+						</div>
+						<table id="dataTable"   data-toolbar="#toolbar"></table>
+
+						<div class="row">
+							<div class="col-sm-3"></div>
+							<div class="col-sm-6">
+								<div class="form-group text-center">
+									<input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="submit" value="通过"/>&nbsp;
+<%--									<input id="no" class="btn  btn-danger btn-lg btn-parsley" type="submit" value="取消流程"/>--%>
+								</div>
+							</div>
+						</div>
+
+						<c:if test="${not empty reserveProcess.id}">
+							<act:flowChart procInsId="${reserveProcess.act.procInsId}"/>
+							<act:histoicFlow procInsId="${reserveProcess.act.procInsId}" />
+						</c:if>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</body>
+</html>

+ 420 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/leaderProcess.jsp

@@ -0,0 +1,420 @@
+<%@ 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/modules/bpm/task/history/taskHistoricList.js" %>--%>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@ include file="/webpage/include/treeview.jsp" %>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+
+			$("#agree").click(function () {
+				jp.prompt("问题已解决", function (message) {
+					var problemResolvedLeader = $("#problemResolvedLeader").val();
+					var projectReserveId = $("#projectReserveId").val();
+					var problemResolvedDescriptLeader = $("#problemResolvedDescriptLeader").val();
+					var projectName = $("#projectName").val();
+					if (problemResolvedLeader !== '是') {
+						jp.error("问题是否解决框不能为空且不能为否");
+					} else {
+						jp.post("${ctx}/cg/distribution/distribution/actDesignUnitLeader",
+								{
+									"taskId": "${reserveProcess.act.taskId}",
+									"taskName": "${reserveProcess.act.taskName}",
+									"taskDefKey": "${reserveProcess.act.taskDefKey}",
+									"procInsId": "${reserveProcess.act.procInsId}",
+									"procDefId": "${reserveProcess.act.procDefId}",
+									"flag": "agree",
+									"projectReserveId":projectReserveId,
+									"problemResolvedLeader":problemResolvedLeader,
+									"problemResolvedDescriptLeader":problemResolvedDescriptLeader,
+									"projectName":projectName,
+									"comment": window.encodeURI(message)
+								},
+								function (data) {
+									if (data.success) {
+										jp.success(data.msg);
+										jp.go("${ctx}/act/task/todo");
+									} else {
+										jp.error(data.msg);
+									}
+								}
+						);
+					}
+				})
+			});
+			$("#disAgree").click(function () {
+				jp.prompt("驳回", function (message) {
+					var projectReserveId = $("#projectReserveId").val();
+					var projectName = $("#projectName").val();
+					var problemResolvedLeader = $("#problemResolvedLeader").val();
+					jp.post("${ctx}/cg/distribution/distribution/actDesignUnitLeader",
+							{
+								"taskId": "${reserveProcess.act.taskId}",
+								"taskName": "${reserveProcess.act.taskName}",
+								"taskDefKey": "${reserveProcess.act.taskDefKey}",
+								"procInsId": "${reserveProcess.act.procInsId}",
+								"procDefId": "${reserveProcess.act.procDefId}",
+								"flag": "disAgree",
+								"projectReserveId":projectReserveId,
+								"problemResolvedLeader":problemResolvedLeader,
+								"projectName":projectName,
+								"comment": window.encodeURI(message)
+							},
+							function (data) {
+								if (data.success) {
+									jp.success(data.msg);
+									jp.go("${ctx}/act/task/todo");
+								} else {
+									jp.error(data.msg);
+								}
+							}
+					);
+				})
+			});
+			$("#tg").click(function () {
+				jp.prompt("是否需要设计变更", function (message) {
+					var projectReserveId = $("#projectReserveId").val();
+					var projectName = $("#projectName").val();
+					var designChangeLeader = $("#designChangeLeader").val();
+					var problemResolvedLeader = $("#problemResolvedLeader").val();
+					var problemSolverLeader = $("#problemSolverLeader").val();
+					var changeTypeLeader = $("#changeTypeLeader").val();
+					var designChangeTypeLeader = $("#designChangeTypeLeader").val();
+					if (designChangeLeader !== '是'){
+						jp.error("是否需设计变更必须为是才能发起上设计变更流程!");
+					} else {
+						jp.post("${ctx}/cg/distribution/distribution/actDesignUnitLeader",
+								{
+									"taskId": "${reserveProcess.act.taskId}",
+									"taskName": "${reserveProcess.act.taskName}",
+									"taskDefKey": "${reserveProcess.act.taskDefKey}",
+									"procInsId": "${reserveProcess.act.procInsId}",
+									"procDefId": "${reserveProcess.act.procDefId}",
+									"flag": "tg",
+									"projectReserveId":projectReserveId,
+									"projectName":projectName,
+									"designChangeLeader":designChangeLeader,
+									"problemResolvedLeader":problemResolvedLeader,
+									"problemSolverLeader":problemSolverLeader,
+									"changeTypeLeader":changeTypeLeader,
+									"designChangeTypeLeader":designChangeTypeLeader,
+									"comment": window.encodeURI(message)
+								},
+								function (data) {
+									if (data.success) {
+										jp.success(data.msg);
+										jp.go("${ctx}/act/task/todo");
+									} else {
+										jp.error(data.msg);
+									}
+								}
+						);
+					}
+				})
+			});
+		});
+	</script>
+</head>
+<body class="bg-white">
+	<div class="wrapper wrapper-content">
+		<div class="row">
+			<div class="col-md-12">
+				<div class="panel panel-primary">
+					<div class="panel-heading">
+						<h3 class="panel-title">
+							<h3 class="panel-title">业主项目经理审核</h3>
+						</h3>
+					</div>
+					<div class="panel-body">
+						<form:form id="inputForm" modelAttribute="reserveProcess" class="form-horizontal">
+							<form:hidden path="id"/>
+							<form:hidden path="act.taskId"/>
+							<form:hidden path="act.taskName"/>
+							<form:hidden path="act.taskDefKey"/>
+							<form:hidden path="act.procInsId"/>
+							<form:hidden path="act.procDefId"/>
+							<form:hidden id="flag" path="act.flag"/>
+							<table class="table table-bordered">
+								<tbody>
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">项目年份:</label></td>
+									<td class="width-35">
+										<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">项目性质:</label></td>
+									<td class="width-35">
+										<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">需求单位:</label></td>
+									<td class="width-35">
+										<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">区域:</label></td>
+									<td class="width-35">
+										<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">项目分组:</label></td>
+									<td class="width-35">
+										<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">储备批次:</label></td>
+									<td class="width-35">
+										<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">供电区域:</label></td>
+									<td class="width-35">
+										<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+									<td class="width-35">
+										<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+									<td class="width-35">
+										<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+									<td class="width-35">
+										<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+									<td class="width-35">
+										<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+									</td>
+									<td class="width-15 active"><label class="">国网项目编码:</label></td>
+									<td class="width-35">
+										<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">国网项目名称:</label></td>
+									<td class="width-35">
+										<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+									<td class="width-35">
+										<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">变电站名称:</label></td>
+									<td class="width-35">
+										<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">线路名称:</label></td>
+									<td class="width-35">
+										<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">网架项目划分:</label></td>
+									<td class="width-35">
+										<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">需求类型:</label></td>
+									<td class="width-35">
+										<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">项目类型:</label></td>
+									<td class="width-35">
+										<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">费用估算:</label></td>
+									<td class="width-35">
+										<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">备注:</label></td>
+									<td class="width-35">
+										<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">问题发起:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题发起人:</label></td>
+									<td class="width-35">
+										<form:input path="promoter" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题所处阶段:</label></td>
+									<td class="width-35">
+										<form:input path="problemStage" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题类型:</label></td>
+									<td class="width-35">
+										<form:input path="problemType" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题描述:</label></td>
+									<td class="width-35">
+										<form:input path="problemDescript" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">业主项目经理:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决人:</label></td>
+									<td class="width-35">
+										<form:input path="problemSolver" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题是否解决:</label></td>
+									<td class="width-35">
+										<select id="problemResolved" name="problemResolved" disabled class="form-control">
+											<option value="">请选择</option>
+											<option value="是" <c:if test="${reserveProcess.problemResolved=='是'}">selected</c:if>>是</option>
+											<option value="否" <c:if test="${reserveProcess.problemResolved=='否'}">selected</c:if>>否</option>
+										</select>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="problemResolvedDescript" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active" ><label class="">是否需要设计变更:</label></td>
+									<td class="width-35" >
+										<select id="designChange" name="designChange" disabled class="form-control">
+											<option value="">请选择</option>
+											<option value="是" <c:if test="${reserveProcess.designChange=='是'}">selected</c:if>>是</option>
+											<option value="否" <c:if test="${reserveProcess.designChange=='否'}">selected</c:if>>否</option>
+										</select>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">变更类型:</label></td>
+									<td class="width-35">
+										<select id="changeType" name="changeType" disabled class="form-control">
+											<option value="">请选择</option>
+											<option value="重出施工图" <c:if test="${reserveProcess.changeType=='重出施工图'}">selected</c:if>>重出施工图</option>
+											<option value="直接出竣工图" <c:if test="${reserveProcess.changeType=='直接出竣工图'}">selected</c:if>>直接出竣工图</option>
+										</select>
+									</td>
+									<td class="width-15 active"><label class="">设计变更类型:</label></td>
+									<td class="width-35">
+										<select id="designChangeType" name="designChangeType" disabled class="form-control">
+											<option value="">请选择</option>
+											<option value="普通" <c:if test="${reserveProcess.designChangeType=='普通'}">selected</c:if>>普通</option>
+											<option value="重大" <c:if test="${reserveProcess.designChangeType=='重大'}">selected</c:if>>重大</option>
+										</select>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否需要上报业主领导:</label></td>
+									<td class="width-35">
+										<select id="reportToLeader" name="reportToLeader" disabled class="form-control">
+											<option value="0">请选择</option>
+											<option value="是" <c:if test="${reserveProcess.reportToLeader=='是'}">selected</c:if>>是</option>
+											<option value="否" <c:if test="${reserveProcess.reportToLeader=='否'}">selected</c:if>>否</option>
+										</select>
+									</td>
+									<td class="width-15 active"><label class="">选择指定领导审批:</label></td>
+									<td class="width-35">
+										<select id="userList" name="userList" disabled class="form-control">
+											<option value="">请选择</option>
+											<c:forEach items="${reserveProcess.userList}" var="user">
+												<option value="${user}">${user}</option>
+											</c:forEach>
+										</select>
+									</td>
+								</tr>
+								<tr>
+									<td colspan="4" class="width-15 active"><label class="">业主单位领导:</label></td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决人:</label></td>
+									<td class="width-35">
+										<form:input path="problemSolverLeader" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">问题是否解决:</label></td>
+									<td class="width-35">
+										<select id="problemResolvedLeader" name="problemResolvedLeader" class="form-control">
+											<option value="">请选择</option>
+											<option value="是" <c:if test="${reserveProcess.problemResolvedLeader=='是'}">selected</c:if>>是</option>
+											<option value="否" <c:if test="${reserveProcess.problemResolvedLeader=='否'}">selected</c:if>>否</option>
+										</select>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">问题解决描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="problemResolvedDescriptLeader" htmlEscape="false" class="form-control"/>
+									</td>
+									<td class="width-15 active" id="problemResolvedRow"><label class="">是否需要设计变更:</label></td>
+									<td class="width-35" id="problemResolvedRow1">
+										<select id="designChangeLeader" name="designChangeLeader" class="form-control">
+											<option value="">请选择</option>
+											<option value="是" <c:if test="${reserveProcess.designChangeLeader=='是'}">selected</c:if>>是</option>
+											<option value="否" <c:if test="${reserveProcess.designChangeLeader=='否'}">selected</c:if>>否</option>
+										</select>
+									</td>
+								</tr>
+								<tr id="problemResolvedRow2">
+									<td class="width-15 active"><label class="">变更类型:</label></td>
+									<td class="width-35">
+										<select id="changeTypeLeader" name="changeTypeLeader" class="form-control">
+											<option value="">请选择</option>
+											<option value="重出施工图" <c:if test="${reserveProcess.changeTypeLeader=='重出施工图'}">selected</c:if>>重出施工图</option>
+											<option value="直接出竣工图" <c:if test="${reserveProcess.changeTypeLeader=='直接出竣工图'}">selected</c:if>>直接出竣工图</option>
+										</select>
+									</td>
+									<td class="width-15 active"><label class="">设计变更类型:</label></td>
+									<td class="width-35">
+										<select id="designChangeTypeLeader" name="designChangeTypeLeader" class="form-control">
+											<option value="">请选择</option>
+											<option value="普通" <c:if test="${reserveProcess.designChangeTypeLeader=='普通'}">selected</c:if>>普通</option>
+											<option value="重大" <c:if test="${reserveProcess.designChangeTypeLeader=='重大'}">selected</c:if>>重大</option>
+										</select>
+									</td>
+								</tr>
+								</tbody>
+							</table>
+						</form:form>
+
+						<table id="dataTable"   data-toolbar="#toolbar"></table>
+
+						<div class="row">
+							<div class="col-sm-3"></div>
+							<div class="col-sm-6">
+								<div class="form-group text-center">
+									<input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="submit" value="问题已解决"/>&nbsp;
+									<input id="disAgree" class="btn  btn-danger btn-lg btn-parsley" type="submit" value="驳回"/>
+									<input id="tg" class="btn  btn-danger btn-lg btn-parsley" type="submit" value="设计变更"/>
+								</div>
+							</div>
+						</div>
+
+						<c:if test="${not empty reserveProcess.id}">
+							<act:flowChart procInsId="${reserveProcess.act.procInsId}"/>
+							<act:histoicFlow procInsId="${reserveProcess.act.procInsId}" />
+						</c:if>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</body>
+</html>

+ 405 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/distribution/process/skillUnit.jsp

@@ -0,0 +1,405 @@
+<%@ 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/modules/bpm/task/history/taskHistoricList.js" %>--%>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@ include file="/webpage/include/treeview.jsp" %>
+	<%@ include file="budgetReview.js"%>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+			$("#agree").click(function () {
+				jp.prompt("通过", function (message) {
+					var projectReserveId = $("#projectReserveId").val();
+					var projectName = $("#projectName").val();
+					jp.post("${ctx}/cg/distribution/distribution/technicalStaff",
+							{
+								"taskId": "${reserveProcess.act.taskId}",
+								"taskName": "${reserveProcess.act.taskName}",
+								"taskDefKey": "${reserveProcess.act.taskDefKey}",
+								"procInsId": "${reserveProcess.act.procInsId}",
+								"procDefId": "${reserveProcess.act.procDefId}",
+								"flag": "agree",
+								"projectReserveId":projectReserveId,
+								"projectName":projectName,
+								"comment": window.encodeURI(message)
+							},
+							function (data) {
+								if (data.success) {
+									jp.success(data.msg);
+									jp.go("${ctx}/act/task/todo");
+								} else {
+									jp.error(data.msg);
+								}
+							}
+					);
+				})
+			});
+			$("#disAgree").click(function () {
+				jp.prompt("驳回", function (message) {
+					var projectReserveId = $("#projectReserveId").val();
+					var projectName = $("#projectName").val();
+					jp.post("${ctx}/cg/distribution/distribution/technicalStaff",
+							{
+								"taskId": "${reserveProcess.act.taskId}",
+								"taskName": "${reserveProcess.act.taskName}",
+								"taskDefKey": "${reserveProcess.act.taskDefKey}",
+								"procInsId": "${reserveProcess.act.procInsId}",
+								"procDefId": "${reserveProcess.act.procDefId}",
+								"flag": "disAgree",
+								"projectReserveId":projectReserveId,
+								"projectName":projectName,
+								"comment": window.encodeURI(message)
+							},
+							function (data) {
+								if (data.success) {
+									jp.success(data.msg);
+									jp.go("${ctx}/act/task/todo");
+								} else {
+									jp.error(data.msg);
+								}
+							}
+					);
+				})
+			});
+		});
+	</script>
+</head>
+<body class="bg-white">
+<input id="uid" type="hidden">
+<div class="wrapper wrapper-content">
+	<div class="row">
+		<div class="col-md-12">
+			<div class="panel panel-primary">
+				<div class="panel-heading">
+					<h3 class="panel-title">
+						<h3 class="panel-title">设计单位上传施工图</h3>
+					</h3>
+				</div>
+				<div class="panel-body">
+					<form:form id="inputForm" modelAttribute="reserveProcess" class="form-horizontal">
+						<form:hidden path="id"/>
+						<form:hidden path="act.taskId"/>
+						<form:hidden path="act.taskName"/>
+						<form:hidden path="act.taskDefKey"/>
+						<form:hidden path="act.procInsId"/>
+						<form:hidden path="act.procDefId"/>
+						<form:hidden id="flag" path="act.flag"/>
+						<table class="table table-bordered">
+							<tbody>
+							<tr>
+								<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">项目年份:</label></td>
+								<td class="width-35">
+									<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">项目性质:</label></td>
+								<td class="width-35">
+									<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">需求单位:</label></td>
+								<td class="width-35">
+									<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">区域:</label></td>
+								<td class="width-35">
+									<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">项目分组:</label></td>
+								<td class="width-35">
+									<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">储备批次:</label></td>
+								<td class="width-35">
+									<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">供电区域:</label></td>
+								<td class="width-35">
+									<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+								<td class="width-35">
+									<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+								<td class="width-35">
+									<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+								<td class="width-35">
+									<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+								<td class="width-35">
+									<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+								</td>
+								<td class="width-15 active"><label class="">国网项目编码:</label></td>
+								<td class="width-35">
+									<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">国网项目名称:</label></td>
+								<td class="width-35">
+									<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+								<td class="width-35">
+									<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">变电站名称:</label></td>
+								<td class="width-35">
+									<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">线路名称:</label></td>
+								<td class="width-35">
+									<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">网架项目划分:</label></td>
+								<td class="width-35">
+									<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">需求类型:</label></td>
+								<td class="width-35">
+									<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">项目类型:</label></td>
+								<td class="width-35">
+									<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">费用估算:</label></td>
+								<td class="width-35">
+									<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">备注:</label></td>
+								<td class="width-35">
+									<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td colspan="4" class="width-15 active"><label class="">问题发起:</label></td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题发起人:</label></td>
+								<td class="width-35">
+									<form:input path="promoter" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">问题所处阶段:</label></td>
+								<td class="width-35">
+									<form:input path="problemStage" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题类型:</label></td>
+								<td class="width-35">
+									<form:input path="problemType" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">问题描述:</label></td>
+								<td class="width-35">
+									<form:input path="problemDescript" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td colspan="4" class="width-15 active"><label class="">业主项目经理:</label></td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题解决人:</label></td>
+								<td class="width-35">
+									<form:input path="problemSolver" htmlEscape="false" readonly="true" class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">问题是否解决:</label></td>
+								<td class="width-35">
+									<select id="problemResolved" name="problemResolved" disabled class="form-control">
+										<option value="">请选择</option>
+										<option value="是" <c:if test="${reserveProcess.problemResolved=='是'}">selected</c:if>>是</option>
+										<option value="否" <c:if test="${reserveProcess.problemResolved=='否'}">selected</c:if>>否</option>
+									</select>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题解决描述:</label></td>
+								<td class="width-35">
+									<form:textarea path="problemResolvedDescript" htmlEscape="false" readonly="true" class="form-control"/>
+								</td>
+								<td class="width-15 active" id="problemResolvedRow"><label class="">是否需要设计变更:</label></td>
+								<td class="width-35" id="problemResolvedRow1">
+									<select id="designChange" name="designChange" disabled class="form-control">
+										<option value="">请选择</option>
+										<option value="是" <c:if test="${reserveProcess.designChange=='是'}">selected</c:if>>是</option>
+										<option value="否" <c:if test="${reserveProcess.designChange=='否'}">selected</c:if>>否</option>
+									</select>
+								</td>								</tr>
+							<tr id="problemResolvedRow2">
+								<td class="width-15 active"><label class="">变更类型:</label></td>
+								<td class="width-35">
+									<select id="changeType" name="changeType" disabled class="form-control">
+										<option value="">请选择</option>
+										<option value="重出施工图" <c:if test="${reserveProcess.changeType=='重出施工图'}">selected</c:if>>重出施工图</option>
+										<option value="直接出竣工图" <c:if test="${reserveProcess.changeType=='直接出竣工图'}">selected</c:if>>直接出竣工图</option>
+									</select>
+								</td>
+								<td class="width-15 active"><label class="">设计变更类型:</label></td>
+								<td class="width-35">
+									<select id="designChangeType" name="designChangeType" disabled class="form-control">
+										<option value="">请选择</option>
+										<option value="普通" <c:if test="${reserveProcess.designChangeType=='普通'}">selected</c:if>>普通</option>
+										<option value="重大" <c:if test="${reserveProcess.designChangeType=='重大'}">selected</c:if>>重大</option>
+									</select>
+								</td>
+							</tr>
+							<tr id="problemResolvedRow3">
+								<td class="width-15 active"><label class="">是否需要上报业主领导:</label></td>
+								<td class="width-35">
+									<select id="reportToLeader" name="reportToLeader" disabled class="form-control">
+										<option value="0">请选择</option>
+										<option value="是" <c:if test="${reserveProcess.reportToLeader=='是'}">selected</c:if>>是</option>
+										<option value="否" <c:if test="${reserveProcess.reportToLeader=='否'}">selected</c:if>>否</option>
+									</select>
+								</td>
+								<%--<td class="width-15 active"><label class="">选择指定领导审批:</label></td>
+								<td class="width-35">
+									<select id="userList" name="userList" disabled class="form-control">
+										<option value="">请选择</option>
+										<c:forEach items="${reserveProcess.userList}" var="user">
+											<option value="${user}">${user}</option>
+										</c:forEach>
+									</select>
+								</td>--%>
+							</tr>
+							<tr>
+								<td colspan="4" class="width-15 active"><label class="">业主单位领导:</label></td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题解决人:</label></td>
+								<td class="width-35">
+									<form:input path="problemSolverLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">问题是否解决:</label></td>
+								<td class="width-35">
+									<form:input path="problemResolvedLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">问题解决描述:</label></td>
+								<td class="width-35">
+									<form:input path="problemResolvedDescriptLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">是否需要设计变更:</label></td>
+								<td class="width-35">
+									<form:input path="designChangeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">变更类型:</label></td>
+								<td class="width-35">
+									<form:input path="changeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+								<td class="width-15 active"><label class="">设计变更类型:</label></td>
+								<td class="width-35">
+									<form:input path="designChangeTypeLeader" htmlEscape="false"  readonly="true"  class="form-control"/>
+								</td>
+							</tr>
+
+							<%--<tr>
+								<td colspan="4" class="width-15 active"><label class="">设计资料:</label></td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">预算书:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="budgetStatement" value="${reserveProcess.budgetStatement}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+								<td class="width-15 active"><label class="">项目建议书:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="projectProposal" value="${reserveProcess.projectProposal}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+							</tr>
+							<tr>
+								<td class="width-15 active"><label class="">施工图纸:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="drawings" value="${reserveProcess.drawings}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+								<td class="width-15 active"><label class="">施工图设计说明书:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="drawingSpecification" value="${reserveProcess.drawingSpecification}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+							</tr>
+
+							<tr>
+								<td class="width-15 active"><label class="">拆旧清册:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="demolition" value="${reserveProcess.demolition}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+								<td class="width-15 active"><label class="">土建现浇审批单:</label></td>
+								<td class="width-35">
+									<sys:fileUpload path="approvalForm" value="${reserveProcess.approvalForm}" type="*" uploadPath="/personnelTurnover"  readonly="true"/>
+								</td>
+							</tr>
+
+							<tr>
+								<td class="width-15 active"><label class="">甲供材清册:</label></td>
+								<td class="width-35">
+									<a id="moreImport" class="btn btn-info" onclick="return false;">
+										<i class="fa fa-file-excel-o"></i> 多文件导入
+									</a>
+									<a id="onLine" class="btn btn-info" onclick="return false;">
+										<i class="fa fa-file-excel-o"></i> 在线开甲供材
+									</a>
+								</td>
+							</tr>--%>
+							</tbody>
+						</table>
+					</form:form>
+					<td class="width-15 active"><label class="">历史数据展示:</label></td>
+					<table id="testPicTable"   data-toolbar="#toolbar"></table>
+					<div id="toolbar">
+						<button id="export" class="btn btn-warning">
+							<i class="fa fa-file-excel-o"></i> 导出甲供材清册
+						</button>
+					</div>
+					<table id="dataTable"   data-toolbar="#toolbar"></table>
+
+					<div class="row">
+						<div class="col-sm-3"></div>
+						<div class="col-sm-6">
+							<div class="form-group text-center">
+								<input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="submit" value="通过"/>&nbsp;
+								<input id="disAgree" class="btn  btn-danger btn-lg btn-parsley" type="submit" value="驳回"/>
+							</div>
+						</div>
+					</div>
+
+					<c:if test="${not empty reserveProcess.id}">
+						<act:flowChart procInsId="${reserveProcess.act.procInsId}"/>
+						<act:histoicFlow procInsId="${reserveProcess.act.procInsId}" />
+					</c:if>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 285 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementForm.jsp

@@ -0,0 +1,285 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>新增带电作业信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+		    var projectReserveId = $("#projectReserveId").val();
+		    var projectName = $("#projectName").val();
+		    var construct = $("#constructionNecessityAndContent").val();
+
+
+		    if (null==projectReserveId||""==projectReserveId){
+                jp.error("请填写项目储备编号!");
+			}else if(null==projectName||""==projectName){
+				jp.error("请填写项目名称!");
+			}else if (null==construct||""==construct){
+		    	jp.error("请填写建设必要性及内容!")
+			}
+
+
+		    else {
+                var isValidate = jp.validateForm('#inputForm');//校验表单
+                if(!isValidate){
+                    return false;
+                }else{
+                    jp.loading();
+                    jp.post("${ctx}/cg/policeProcess/base/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="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备项目经理:</label></td>
+			<td class="width-35">
+				<form:input path="projectManager" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备进度:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备进度:</label></td>
+			<td class="width-35">
+				<form:input path="reserveProgress" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否纳入实施计划:</label></td>
+			<td class="width-35">
+				<form:input path="implementPlan" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">初定实施批次:</label></td>
+			<td class="width-35">
+				<form:input path="implementBatch" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">工作量统计:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含土建工作量:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineeringWorkload" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">土建工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="engineeringWorkloadStatistic" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含立杆工作量:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkload" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">立杆工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkloadStatistic" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="workRemark" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政策处理基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电所辖区:</label></td>
+			<td class="width-35">
+				<form:input path="powerStationJurisdiction" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">施工地点:</label></td>
+			<td class="width-35">
+				<form:input path="constructionLocation" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否存在政处:</label></td>
+			<td class="width-35">
+				<form:input path="whetherExitPolitical" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">政处类型:</label></td>
+			<td class="width-35">
+				<form:input path="politicalType" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">政处描述:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDescribe" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">政处难度:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDifficulty" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+			<td class="width-35">
+				<form:input path="whetherReport" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需办理安评手续:</label></td>
+			<td class="width-35">
+				<form:input path="safetyProcedures" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需办理航评手续:</label></td>
+			<td class="width-35">
+				<form:input path="aviationReviewProcedures" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否启动政处:</label></td>
+			<td class="width-35">
+				<form:input path="startPolitical" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="politicalRemarks" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 274 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementInformation.js

@@ -0,0 +1,274 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script >
+$(document).ready(function () {
+    $('#projectTable').bootstrapTable({
+        //请求方法
+        method: 'post',
+        //类型json
+        dataType: "json",
+        contentType: "application/x-www-form-urlencoded",
+        //显示检索按钮
+        showSearch: true,
+        //显示刷新按钮
+        showRefresh: true,
+        //显示切换手机试图按钮
+        showToggle: true,
+        //显示 内容列下拉框
+        showColumns: true,
+        //显示到处按钮
+        showExport: true,
+        //显示切换分页按钮
+        showPaginationSwitch: true,
+        //最低显示2行
+        minimumCountColumns: 2,
+        //是否显示行间隔色
+        striped: true,
+        //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+        cache: false,
+        //是否显示分页(*)
+        pagination: true,
+        //排序方式
+        sortOrder: "asc",
+        //初始化加载第一页,默认第一页
+        pageNumber: 1,
+        //每页的记录行数(*)
+        pageSize: 25,
+        //可供选择的每页的行数(*)
+        pageList: [5, 10, 25, 50, 100],
+        //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+        url: "${ctx}/cg/policeProcess/base/list",
+        //默认值为 '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}/cg/reservemanagementcenter/project/delete?id=" + row.id, function (data) {
+                        if (data.success) {
+                            $('#projectTable').bootstrapTable('refresh');
+                            jp.success(data.msg);
+                        } else {
+                            jp.error(data.msg);
+                        }
+                    })
+                });
+            }
+        },
+
+        onClickRow: function (row, $el) {
+        },
+        onShowSearch: function () {
+            $("#search-collapse").slideToggle();
+        },
+        columns:
+            [
+                [
+                    {checkbox:true,width: 36},
+                    {"title":"储备项目基本信息","colspan":22,"halign":"center","align": "center",width: "4400px"},
+                    {"title":"储备进度","colspan":3,"halign":"center","align": "center",width: "600px"},
+                    {"title":"工作量统计","colspan":5,"halign":"center","align": "center",width: "1000px"},
+                    {"title":"政处基本信息","colspan":11,"halign":"center","align": "center",width: "2200px"}
+
+                ],
+                [
+                    {checkbox:true,width: 36},
+                    { field: 'projectManager', title: "储备项目经理", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectYear', title: "项目年份", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectNature', title: "项目性质", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'demandUnit', title: "需求单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'district', title: "区域", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectGroup', title: "项目分组", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'reserveBatches', title: "储备批次", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'blockSupply', title: "供电区域", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'gridNumber', title: "网格编号", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'cellNumber', title: "单元格编号", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectReserveId', title: "项目储备编号", valign:"middle", align:"center", colspan: 1, rowspan: 1,
+                        formatter:function(value, row , index){
+
+                            if(value == null || value ==""){
+                                value = "-";
+                            }
+                        <c:choose>
+                            <c:when test="${fns:hasPermission('cg:reservemanagementcenter:reserveManage:view')}">
+                            return "<a href='javascript:view(\""+row.id+"\")'>"+value+"</a>";
+                        </c:when>
+                            <c:otherwise>
+                            return value;
+                        </c:otherwise>
+                            </c:choose>
+                        }},
+                    { field: 'projectName', title: "储备项目名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'stateGridProjectCode', title: "国网项目编码", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'stateGridProjectName', title: "国网项目名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'constructionNecessityAndContent', title: "建设必要性及内容", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'substationName', title: "变电站名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'circuitName', title: "线路名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'netRackProjectDivide', title: "网架项目划分", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'requirementType', title: "需求类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectType', title: "项目类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'costEstimate', title: "费用估算", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'remarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'reserveProgress', title: "储备进度", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'implementPlan', title: "是否纳入实施计划", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'implementBatch', title: "初定实施批次", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'civilEngineeringWorkload', title: "是否含土建工作量", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'engineeringWorkloadStatistic', title: "土建工作量统计", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'poleWorkload', title: "是否含立杆工作量", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'poleWorkloadStatistic', title: "立杆工作量统计", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'workRemark', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'powerStationJurisdiction', title: "供电所辖区", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'constructionLocation', title: "施工地点", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'whetherExitPolitical', title: "是否存在政处", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'politicalType', title: "政处类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'politicalDescribe', title: "政处描述", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'politicalDifficulty', title: "政处难度", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'whetherReport', title: "是否需规划报批", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'safetyProcedures', title: "是否需办理安评手续", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'aviationReviewProcedures', title: "是否需办理航评手续", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'startPolitical', title: "是否启动政处", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'politicalRemarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                ]
+
+            ]
+    });
+
+
+    if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端
+        $('#projectTable').bootstrapTable("toggleView");
+    }
+
+    $('#projectTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+        'check-all.bs.table uncheck-all.bs.table', function () {
+        $('#remove').prop('disabled', !$('#projectTable').bootstrapTable('getSelections').length);
+        $('#view,#edit,#jlEdit').prop('disabled', $('#projectTable').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) {
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                iframeWin.contentWindow.importExcel('${ctx}/cg/policeProcess/base/import', function (data) {
+                    if (data.success) {
+                        jp.success(data.msg);
+                        refresh();
+                    } else {
+                        jp.error(data.msg);
+                    }
+                    jp.close(index);
+                });//调用保存事件
+                return false;
+            },
+            btn2: function (index) {
+                //  jp.close(index);
+            }
+        });
+    });
+
+    $("#btnExport").click(function () {
+        var projectReserveId = $("#projectReserveId").val();
+        var projectName = $("#projectName").val();
+        var projectYear = $("#projectYear").val();
+        jp.downloadFile('${ctx}/cg/policeProcess/base/export?projectReserveId=' + projectReserveId + '&projectName=' + projectName + '&projectYear=' + projectYear);
+    });
+
+    $("#search").click("click", function () {// 绑定查询按扭
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $("#reset").click("click", function () {// 绑定查询按扭
+        $("#searchForm  input").val("");
+        $("#searchForm  select").val("");
+        $("#searchForm  .select-item").html("");
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $('#beginBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+});
+
+//表格超出宽度鼠标悬停显示td内容
+function paramsMatter(value,row,index,field) {
+    var span = document.createElement('span');
+    span.setAttribute('title',value);
+    span.innerHTML = value;
+    return span.outerHTML;
+}
+
+function getIdSelections() {
+    return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+
+//刷新列表
+function refresh() {
+    $('#projectTable').bootstrapTable('refresh');
+}
+
+function add() {
+    jp.openSaveDialog('新增储备项目基本信息', "${ctx}/cg/policeProcess/base/form", '800px', '500px');
+}
+
+
+function edit(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑储备项目基本信息', "${ctx}/cg/policeProcess/base/form?id=" + id, '800px', '500px');
+}
+
+function view(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openViewDialog('查看储备项目基本信息', "${ctx}/cg/policeProcess/base/view?id=" + id, '800px', '500px');
+}
+
+//转换日期格式(时间戳转换为datetime格式)
+function changeDateFormat(cellval) {
+    var dateVal = cellval + "";
+    if (cellval != null) {
+        var date = new Date(parseInt(dateVal.replace("/Date(", "").replace(")/", ""), 10));
+        var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+        var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+
+        /*var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
+        var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+        var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();*/
+
+        return date.getFullYear() + "-" + month + "-" + currentDate /*+ " " + hours + ":" + minutes + ":" + seconds*/;
+    }
+}
+
+</script>

+ 98 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementInformation.jsp

@@ -0,0 +1,98 @@
+<%@ page import="java.time.LocalDate" %>
+<%@ 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="reserveManagementInformation.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;
+			white-space: nowrap;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			word-wrap:break-word;
+		}
+		.bootstrap-table .table thead>tr>th {
+			padding: 0;
+			margin: 0;
+			width: 3500px;
+		}
+	</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="reserveManagement" class="form form-horizontal well clearfix">
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label for="projectYear" class="label-item single-overflow pull-left">项目年份:</label>
+						<select name="projectYear" id="projectYear" class="form-control">
+							<%
+								int currentYear = LocalDate.now().getYear();
+								for (int i = 1997; i <= 2033; i++) { %>
+							<option value="<%= i %>" <% if (i == currentYear) { %>selected<% } %>><%= i %></option>
+							<% } %>
+						</select>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label class="label-item single-overflow pull-left" title="储备编码:">储备编码:</label>
+						<form:input path="projectReserveId" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label class="label-item single-overflow pull-left" title="项目名称:">项目名称:</label>
+						<form:input path="projectName" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<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">
+			<shiro:hasPermission name="cg:policeProcess:base:edit">
+				<button id="edit" class="btn btn-primary" onclick="edit()">
+					<i class="glyphicon glyphicon-edit"></i> 修改 <!--专职修改-->
+				</button>
+			</shiro:hasPermission>
+			<shiro:hasPermission name="cg:policeProcess:base:list">
+				<button id="btnImport" class="btn btn-info">
+					<i class="fa fa-folder-open-o"></i> 导入  <!--专职导入-->
+				</button>
+			</shiro:hasPermission>
+			<shiro:hasPermission name="cg:policeProcess:base:export">
+				<button id="btnExport" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 导出
+				</button>
+			</shiro:hasPermission>
+		    </div>
+	<!-- 表格 -->
+	<table id="projectTable"  data-toolbar="#toolbar"></table>
+
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 317 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementModifyByzz.jsp

@@ -0,0 +1,317 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>修改安全交底信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+			var projectReserveId = $("#projectReserveId").val();
+			var projectName = $("#projectName").val();
+			var construct = $("#constructionNecessityAndContent").val();
+
+			if (null==projectReserveId||""==projectReserveId){
+				jp.error("请填写项目储备编号!");
+			}else if(null==projectName||""==projectName){
+				jp.error("请填写项目名称!");
+			}else if (null==construct||""==construct){
+				jp.error("请填写建设必要性及内容!")
+			}
+
+		    else {
+                var isValidate = jp.validateForm('#inputForm');//校验表单
+                if(!isValidate){
+                    return false;
+                }else{
+                    jp.loading();
+                    jp.post("${ctx}/cg/policeProcess/base/update",$('#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="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备项目经理:</label></td>
+			<td class="width-35">
+				<form:input path="projectManager" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备进度:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备进度:</label></td>
+			<td class="width-35">
+				<form:input path="reserveProgress" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否纳入实施计划:</label></td>
+			<td class="width-35">
+				<form:input path="implementPlan" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">初定实施批次:</label></td>
+			<td class="width-35">
+				<form:input path="implementBatch" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">工作量统计:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含土建工作量:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineeringWorkload" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">土建工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="engineeringWorkloadStatistic" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含立杆工作量:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkload" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">立杆工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkloadStatistic" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="workRemark" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政策处理基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电所辖区:</label></td>
+			<td class="width-35">
+				<form:input path="powerStationJurisdiction" htmlEscape="false" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">施工地点:</label></td>
+			<td class="width-35">
+				<form:input path="constructionLocation" htmlEscape="false" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否存在政处:</label></td>
+			<td class="width-35">
+				<select id="whetherExitPolitical" name="whetherExitPolitical"  class="form-control">
+					<option value="">请选择</option>
+					<option value="是" <c:if test="${reserveManagement.whetherExitPolitical=='是'}">selected</c:if>>是</option>
+					<option value="无政处" <c:if test="${reserveManagement.whetherExitPolitical=='无政处'}">selected</c:if>>无政处</option>
+					<option value="不确定" <c:if test="${reserveManagement.whetherExitPolitical=='不确定'}">selected</c:if>>不确定</option>
+				</select>
+			</td>
+			<td class="width-15 active">
+				<label class="">政处类型:</label>
+			</td>
+			<td class="width-35">
+				<label>
+					<input type="checkbox" name="politicalType" value="行政政处" <c:if test="${reserveManagement.politicalType.contains('行政政处')}">checked</c:if>> 行政政处
+				</label>
+				<label>
+					<input type="checkbox" name="politicalType" value="民事政处" <c:if test="${reserveManagement.politicalType.contains('民事政处')}">checked</c:if>> 民事政处
+				</label>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">政处描述:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDescribe" htmlEscape="false" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">政处难度:</label></td>
+			<td class="width-35">
+				<select id="politicalDifficulty" name="politicalDifficulty"  class="form-control">
+					<option value="">请选择</option>
+					<option value="极难" <c:if test="${reserveManagement.politicalDifficulty=='极难'}">selected</c:if>>极难</option>
+					<option value="难" <c:if test="${reserveManagement.politicalDifficulty=='难'}">selected</c:if>>难</option>
+					<option value="中" <c:if test="${reserveManagement.politicalDifficulty=='中'}">selected</c:if>>中</option>
+					<option value="易" <c:if test="${reserveManagement.politicalDifficulty=='易'}">selected</c:if>>易</option>
+				</select>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+			<td class="width-35">
+				<select id="whetherReport" name="whetherReport"  class="form-control">
+					<option value="">请选择</option>
+					<option value="是" <c:if test="${reserveManagement.whetherReport=='是'}">selected</c:if>>是</option>
+					<option value="否" <c:if test="${reserveManagement.whetherReport=='否'}">selected</c:if>>否</option>
+				</select>
+			</td>
+			<td class="width-15 active"><label class="">是否需办理安评手续:</label></td>
+			<td class="width-35">
+				<select id="safetyProcedures" name="safetyProcedures"  class="form-control">
+					<option value="">请选择</option>
+					<option value="是" <c:if test="${reserveManagement.safetyProcedures=='是'}">selected</c:if>>是</option>
+					<option value="否" <c:if test="${reserveManagement.safetyProcedures=='否'}">selected</c:if>>否</option>
+				</select>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需办理航评手续:</label></td>
+			<td class="width-35">
+				<select id="aviationReviewProcedures" name="aviationReviewProcedures"  class="form-control">
+					<option value="">请选择</option>
+					<option value="是" <c:if test="${reserveManagement.aviationReviewProcedures=='是'}">selected</c:if>>是</option>
+					<option value="否" <c:if test="${reserveManagement.aviationReviewProcedures=='否'}">selected</c:if>>否</option>
+				</select>
+			</td>
+			<td class="width-15 active"><label class="">是否启动政处:</label></td>
+			<td class="width-35">
+				<select id="startPolitical" name="startPolitical"  class="form-control">
+					<option value="">请选择</option>
+					<option value="是" <c:if test="${reserveManagement.startPolitical=='是'}">selected</c:if>>是</option>
+					<option value="否" <c:if test="${reserveManagement.startPolitical=='否'}">selected</c:if>>否</option>
+				</select>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="politicalRemarks" htmlEscape="false" class="form-control"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 254 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessBase/reserveManagementView.jsp

@@ -0,0 +1,254 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目储备信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+			$('#disclosureFinishDate').datetimepicker({
+				format: "YYYY-MM-DD"
+			});
+		});
+		function save() {
+			var isValidate = jp.validateForm('#inputForm');//校验表单
+			if(!isValidate){
+				return false;
+			}else{
+
+			}
+		}
+	</script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备项目经理:</label></td>
+			<td class="width-35">
+				<form:input path="projectManager" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备进度:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备进度:</label></td>
+			<td class="width-35">
+				<form:input path="reserveProgress" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否纳入实施计划:</label></td>
+			<td class="width-35">
+				<form:input path="implementPlan" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">初定实施批次:</label></td>
+			<td class="width-35">
+				<form:input path="implementBatch" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">工作量统计:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含土建工作量:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineeringWorkload" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">土建工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="engineeringWorkloadStatistic" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含立杆工作量:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkload" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">立杆工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkloadStatistic" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="workRemark" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政策处理基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电所辖区:</label></td>
+			<td class="width-35">
+				<form:input path="powerStationJurisdiction" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">施工地点:</label></td>
+			<td class="width-35">
+				<form:input path="constructionLocation" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否存在政处:</label></td>
+			<td class="width-35">
+				<form:input path="whetherExitPolitical" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">政处类型:</label></td>
+			<td class="width-35">
+				<form:input path="politicalType" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">政处描述:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDescribe" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">政处难度:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDifficulty" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+			<td class="width-35">
+				<form:input path="whetherReport" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需办理安评手续:</label></td>
+			<td class="width-35">
+				<form:input path="safetyProcedures" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需办理航评手续:</label></td>
+			<td class="width-35">
+				<form:input path="aviationReviewProcedures" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否启动政处:</label></td>
+			<td class="width-35">
+				<form:input path="startPolitical" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="politicalRemarks" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 281 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementForm.jsp

@@ -0,0 +1,281 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>新增带电作业信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+		    var projectReserveId = $("#projectReserveId").val();
+		    var projectName = $("#projectName").val();
+		    var construct = $("#constructionNecessityAndContent").val();
+
+
+		    if (null==projectReserveId||""==projectReserveId){
+                jp.error("请填写项目储备编号!");
+			}else if(null==projectName||""==projectName){
+				jp.error("请填写项目名称!");
+			}else if (null==construct||""==construct){
+		    	jp.error("请填写建设必要性及内容!")
+			}
+
+
+		    else {
+                var isValidate = jp.validateForm('#inputForm');//校验表单
+                if(!isValidate){
+                    return false;
+                }else{
+                    jp.loading();
+                    jp.post("${ctx}/cg/policeProcess/base/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="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备进度:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备进度:</label></td>
+			<td class="width-35">
+				<form:input path="reserveProgress" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否纳入实施计划:</label></td>
+			<td class="width-35">
+				<form:input path="implementPlan" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">初定实施批次:</label></td>
+			<td class="width-35">
+				<form:input path="implementBatch" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">工作量统计:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含土建工作量:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineeringWorkload" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">土建工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="engineeringWorkloadStatistic" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含立杆工作量:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkload" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">立杆工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkloadStatistic" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="workRemark" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政策处理基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电所辖区:</label></td>
+			<td class="width-35">
+				<form:input path="powerStationJurisdiction" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">施工地点:</label></td>
+			<td class="width-35">
+				<form:input path="constructionLocation" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否存在政处:</label></td>
+			<td class="width-35">
+				<form:input path="whetherExitPolitical" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">政处类型:</label></td>
+			<td class="width-35">
+				<form:input path="politicalType" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">政处描述:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDescribe" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">政处难度:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDifficulty" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+			<td class="width-35">
+				<form:input path="whetherReport" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需办理安评手续:</label></td>
+			<td class="width-35">
+				<form:input path="safetyProcedures" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需办理航评手续:</label></td>
+			<td class="width-35">
+				<form:input path="aviationReviewProcedures" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否启动政处:</label></td>
+			<td class="width-35">
+				<form:input path="startPolitical" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="politicalRemarks" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 657 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementInformation.js

@@ -0,0 +1,657 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script >
+$(document).ready(function () {
+    $('#projectTable').bootstrapTable({
+        //请求方法
+        method: 'post',
+        //类型json
+        dataType: "json",
+        contentType: "application/x-www-form-urlencoded",
+        //显示检索按钮
+        showSearch: true,
+        //显示刷新按钮
+        showRefresh: true,
+        //显示切换手机试图按钮
+        showToggle: true,
+        //显示 内容列下拉框
+        showColumns: true,
+        //显示到处按钮
+        showExport: true,
+        //显示切换分页按钮
+        showPaginationSwitch: true,
+        //最低显示2行
+        minimumCountColumns: 2,
+        //是否显示行间隔色
+        striped: true,
+        //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+        cache: false,
+        //是否显示分页(*)
+        pagination: true,
+        //排序方式
+        sortOrder: "asc",
+        //初始化加载第一页,默认第一页
+        pageNumber: 1,
+        //每页的记录行数(*)
+        pageSize: 25,
+        //可供选择的每页的行数(*)
+        pageList: [5, 10, 25, 50, 100],
+        //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+        url: "${ctx}/cg/policeProcess/record/list",
+        //默认值为 '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}/cg/reservemanagementcenter/project/delete?id=" + row.id, function (data) {
+                        if (data.success) {
+                            $('#projectTable').bootstrapTable('refresh');
+                            jp.success(data.msg);
+                        } else {
+                            jp.error(data.msg);
+                        }
+                    })
+                });
+            }
+        },
+        /*onLoadSuccess: function () {  //加载成功时执行
+            var data = $("#projectTable").bootstrapTable('getData', true)
+            //合并单元格
+            mergeTable($('#projectTable'),"projectYear");
+            mergeTable($('#projectTable'),"projectNature");
+            mergeTable($('#projectTable'),"demandUnit");
+            mergeTable($('#projectTable'),"district");
+            mergeTable($('#projectTable'),"projectGroup");
+            mergeTable($('#projectTable'),"reserveBatches");
+            mergeTable($('#projectTable'),"blockSupply");
+            mergeTable($('#projectTable'),"gridNumber");
+            mergeTable($('#projectTable'),"cellNumber");
+            mergeTable($('#projectTable'),"projectReserveId");
+            mergeTable($('#projectTable'),"projectName");
+            mergeTable($('#projectTable'),"stateGridProjectCode");
+            mergeTable($('#projectTable'),"stateGridProjectName");
+            mergeTable($('#projectTable'),"constructionNecessityAndContent");
+            mergeTable($('#projectTable'),"substationName");
+            mergeTable($('#projectTable'),"circuitName");
+            mergeTable($('#projectTable'),"netRackProjectDivide");
+            mergeTable($('#projectTable'),"requirementType");
+            mergeTable($('#projectTable'),"projectType");
+            mergeTable($('#projectTable'),"costEstimate");
+            mergeTable($('#projectTable'),"remarks");
+            mergeTable($('#projectTable'),"implementBatch");
+            mergeTable($('#projectTable'),"constructionUnit");
+            mergeTable($('#projectTable'),"projectReleaseBatch");
+            mergeTable($('#projectTable'),"ownerManager");
+            mergeTable($('#projectTable'),"constructionManagementUnit");
+            mergeTable($('#projectTable'),"dqProjectManager");
+            mergeTable($('#projectTable'),"tjProjectManager");
+            mergeTable($('#projectTable'),"dqSubcontractingUnit");
+            mergeTable($('#projectTable'),"dqContacts");
+            mergeTable($('#projectTable'),"tjSubcontractingUnit");
+            mergeTable($('#projectTable'),"tjContacts");
+            mergeTable($('#projectTable'),"subpackageRemarks");
+            mergeTable($('#projectTable'),"civilEngineer");
+            mergeTable($('#projectTable'),"civilEngineerStatistic");
+            mergeTable($('#projectTable'),"poleWorkload");
+            mergeTable($('#projectTable'),"poleWorkloadStatistic");
+            mergeTable($('#projectTable'),"statisticRemarks");
+        },*/
+
+        onClickRow: function (row, $el) {
+        },
+        onShowSearch: function () {
+            $("#search-collapse").slideToggle();
+        },
+        columns:
+            [
+                [
+                    {checkbox:true,width: 36},
+                    {"title":"储备项目基本信息","colspan":21,"halign":"center","align": "center",width: "4200px"},
+                    {"title":"项目参建(单位)人员信息","colspan":7,"halign":"center","align": "center",width: "1400px"},
+                    {"title":"分包队伍","colspan":5,"halign":"center","align": "center",width: "1000px"},
+                    {"title":"项目工程量统计","colspan":5,"halign":"center","align": "center",width: "1000px"},
+                    {"title":"政处记录","colspan":21,"halign":"center","align": "center",width: "4200px"}
+                ],
+                [
+                    {checkbox:true,width: 36},
+                    { field: 'projectYear', title: "项目年份", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectNature', title: "项目性质", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'demandUnit', title: "需求单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'district', title: "区域", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectGroup', title: "项目分组", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'reserveBatches', title: "储备批次", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'blockSupply', title: "供电区域", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'gridNumber', title: "网格编号", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'cellNumber', title: "单元格编号", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectReserveId', title: "项目储备编号", valign:"middle", align:"center", colspan: 1, rowspan: 1,
+                        formatter:function(value, row , index){
+
+                            if(value == null || value ==""){
+                                value = "-";
+                            }
+                        <c:choose>
+                            <c:when test="${fns:hasPermission('cg:reservemanagementcenter:reserveManage:view')}">
+                            return "<a href='javascript:view(\"" + row.id + "\", " + index + ")'>" + value + "</a>";
+
+                        </c:when>
+                            <c:otherwise>
+                            return value;
+                        </c:otherwise>
+                            </c:choose>
+                        }},
+                    { field: 'projectName', title: "储备项目名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'stateGridProjectCode', title: "国网项目编码", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'stateGridProjectName', title: "国网项目名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'constructionNecessityAndContent', title: "建设必要性及内容", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'substationName', title: "变电站名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'circuitName', title: "线路名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'netRackProjectDivide', title: "网架项目划分", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'requirementType', title: "需求类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectType', title: "项目类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'costEstimate', title: "费用估算", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'remarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'implementBatch', title: "初定实施批次", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'constructionUnit', title: "初定施工单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectReleaseBatch', title: "项目下达批次", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'ownerManager', title: "业主项目经理", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'ConstructionManagementUnit', title: "现场施工管理单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'dqProjectManager', title: "施工项目经理(电气)", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'tjProjectManager', title: "施工项目经理(土建)", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'dqSubcontractingUnit', title: "电气分包单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'dqContacts', title: "电气联系人", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'tjSubcontractingUnit', title: "土建分包单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'tjContacts', title: "土建联系人", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'subpackageRemarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'civilEngineer', title: "是否含土建", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'civilEngineerStatistic', title: "土建工作量统计", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'poleWorkload', title: "是否含立杆工作量", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'poleWorkloadStatistic', title: "立杆工作量统计", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'statisticRemarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'serialNumber', title: "序号", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'startPoliticalWork', title: "是否启动政处工作", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'startTime', title: "政处启动日期", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="date" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'administrativeObject', title: "政处对象", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                // return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                                return '<select id="administrativeObject" name="administrativeObject" class="form-control" onchange="getValue(event, ' + index + ')">' +
+                                    '<option value="">请选择</option>' +
+                                    '<option value="规划报批" ' + (value === '规划报批' ? 'selected' : '') + '>规划报批</option>' +
+                                    '<option value="安评" ' + (value === '安评' ? 'selected' : '') + '>安评</option>' +
+                                    '<option value="航评" ' + (value === '航评' ? 'selected' : '') + '>航评</option>' +
+                                    '</select>';
+
+                            }
+                        }
+                    },
+                    { field: 'needCompensation', title: "是否需赔付", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'compensationContent', title: "赔付内容", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'compensationMoney', title: "赔付金额", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'documentCommitTime', title: "签字政处单据提交时间", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="date" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'financialPayment', title: "是否财政付款", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'needSignContract', title: "是否需签订合同", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'signContractTime', title: "政处合同完成签订时间", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="date" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'weatherLoan', title: "是否借款", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'loanTime', title: "借款支付时间", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'completeFinancialReimbursement', title: "是否完成财务报销", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'completeFinancialReimbursementTime', title: "财务报销完成时间", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="date" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'possibleToEnterSite', title: "是否可进场", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'possibleToEnterSiteTime', title: "可进场日期", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="date" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'completeProcess', title: "政处是否完成", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'negotiatingUnit', title: "政处洽谈单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'coordinateUnit', title: "政处配合单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                    { field: 'recordRemarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,
+                        formatter: function(value, row, index) {
+                            var inputId = 'datepicker-' + index;
+                            var tableData = $('#projectTable').bootstrapTable('getData');
+                            if (tableData[index].serialNumber === null || tableData[index].serialNumber === '') {
+                                return ''
+                            } else {
+                                return '<input type="text" id="' + inputId + '" class="form-control" value="' + value + '" onchange="getValue(event, ' + index + ')">';
+                            }
+                        }
+                    },
+                ]
+            ]
+    });
+
+
+    if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端
+        $('#projectTable').bootstrapTable("toggleView");
+    }
+
+    $('#projectTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+        'check-all.bs.table uncheck-all.bs.table', function () {
+        $('#remove').prop('disabled', !$('#projectTable').bootstrapTable('getSelections').length);
+        $('#view,#edit,#jlEdit').prop('disabled', $('#projectTable').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) {
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                iframeWin.contentWindow.importExcel('${ctx}/cg/policeProcess/record/import', function (data) {
+                    if (data.success) {
+                        jp.success(data.msg);
+                        refresh();
+                    } else {
+                        jp.error(data.msg);
+                    }
+                    jp.close(index);
+                });//调用保存事件
+                return false;
+            },
+            btn2: function (index) {
+                //  jp.close(index);
+            }
+        });
+    });
+
+    $("#btnExport").click(function () {
+        var projectReserveId = $("#projectReserveId").val();
+        var projectName = $("#projectName").val();
+        var projectYear = $("#projectYear").val();
+        jp.downloadFile('${ctx}/cg/policeProcess/record/export?projectReserveId=' + projectReserveId + '&projectName=' + projectName + '&projectYear=' + projectYear);
+    });
+
+    $("#search").click("click", function () {// 绑定查询按扭
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $("#reset").click("click", function () {// 绑定查询按扭
+        $("#searchForm  input").val("");
+        $("#searchForm  select").val("");
+        $("#searchForm  .select-item").html("");
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $('#beginBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+});
+
+//表格超出宽度鼠标悬停显示td内容
+function paramsMatter(value,row,index,field) {
+    if (value === '' || value === null || value === undefined){
+        return ''
+    }
+    var span = document.createElement('span');
+    span.setAttribute('title',value);
+    span.innerHTML = value;
+    return span.outerHTML;
+}
+
+function getIdSelections() {
+    return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+
+//刷新列表
+function refresh() {
+    $('#projectTable').bootstrapTable('refresh');
+}
+
+function add() {
+    jp.openSaveDialog('新增储备项目基本信息', "${ctx}/cg/policeProcess/record/form", '800px', '500px');
+}
+
+
+function edit(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑储备项目基本信息', "${ctx}/cg/policeProcess/record/form?id=" + id, '800px', '500px');
+}
+
+function view(id,index) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    var tableData = $('#projectTable').bootstrapTable('getData');
+    var serialNumber = tableData[index].serialNumber
+
+    jp.openViewDialog('查看储备项目基本信息', "${ctx}/cg/policeProcess/record/view?id=" + id + '&serialNumber=' +serialNumber, '800px', '500px');
+}
+
+//转换日期格式(时间戳转换为datetime格式)
+function changeDateFormat(cellval) {
+    var dateVal = cellval + "";
+    if (cellval != null) {
+        var date = new Date(parseInt(dateVal.replace("/Date(", "").replace(")/", ""), 10));
+        var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+        var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+
+        return date.getFullYear() + "-" + month + "-" + currentDate ;
+    }
+}
+
+/**
+ * 合并单元格
+ * @param bstable
+ * @param fieldname
+ */
+function mergeTable(bstable, fieldname) {
+    var rows = bstable.bootstrapTable('getData');
+    var rowspan = 0;
+    var index = 0;
+    var first_yjzbmc = '';
+    $.each(rows, function (i, row) {
+        if (i == 0) {
+            first_yjzbmc = row[fieldname];
+            rowspan = 1;
+            index = i;
+        } else {
+            if (first_yjzbmc === row[fieldname]) {
+                rowspan++;
+            }
+            else {
+                $(bstable).bootstrapTable('mergeCells', { index: index, field: fieldname, colspan: 1, rowspan: rowspan });
+                first_yjzbmc = row[fieldname];
+                rowspan = 1;
+                index = i;
+            }
+            if (i == (rows.length - 1)) {
+                $(bstable).bootstrapTable('mergeCells', { index: index, field: fieldname, colspan: 1, rowspan: rowspan });
+            }
+        }
+    });
+}
+
+function getValue(element,index) {
+    //获取修改后的值
+    var value = event.target.value;
+    //将 - 替换为 /
+    var position = getElementPosition(event.target); // 获取元素所在的行和列索引
+    var rowIndex = position.row;
+    var arrangeIndex = position.column;
+
+    // 将获取到的新值发送到后台进行保存等操作
+    // 获取表格数据
+    var tableData = $('#projectTable').bootstrapTable('getData');
+    // 修改第一行某 是否涉及新建变电站 的值为指定值
+    console.log('arrangeIndex', arrangeIndex)
+    if (arrangeIndex === 40){
+        tableData[index].startPoliticalWork = value;
+    }
+    if (arrangeIndex === 41){
+        tableData[index].startTime = value;
+    }
+    if (arrangeIndex === 42){
+        tableData[index].administrativeObject = value;
+    }
+    if (arrangeIndex === 43){
+        tableData[index].needCompensation = value;
+    }
+    if (arrangeIndex === 45){
+        tableData[index].compensationMoney = value;
+    }
+    if (arrangeIndex === 46){
+        tableData[index].documentCommitTime = value;
+    }
+    if (arrangeIndex === 47){
+        tableData[index].financialPayment = value;
+    }
+    if (arrangeIndex === 48){
+        tableData[index].needSignContract = value;
+    }
+    if (arrangeIndex === 49){
+        tableData[index].signContractTime = value;
+    }
+    if (arrangeIndex === 50){
+        tableData[index].weatherLoan = value;
+    }
+    if (arrangeIndex === 51){
+        tableData[index].loanTime = value;
+    }
+    if (arrangeIndex === 52){
+        tableData[index].completeFinancialReimbursement = value;
+    }
+    if (arrangeIndex === 53){
+        tableData[index].completeFinancialReimbursementTime = value;
+    }
+    if (arrangeIndex === 54){
+        tableData[index].possibleToEnterSite = value;
+    }
+    if (arrangeIndex === 55){
+        tableData[index].possibleToEnterSiteTime = value;
+    }
+    if (arrangeIndex === 57){
+        tableData[index].negotiatingUnit = value;
+    }
+    if (arrangeIndex === 58){
+        tableData[index].coordinateUnit = value;
+    }
+    if (arrangeIndex === 59){
+        tableData[index].recordRemarks = value;
+    }
+
+    // 获取表格数据  第一行
+    var tableData = $('#projectTable').bootstrapTable('getData')[index];
+    // 将数据封装成 JSON 格式
+    var jsonData = JSON.stringify(tableData);
+    $.ajax({
+        url: '${ctx}/cg/policeProcess/record/reviewSave',
+        type: 'POST',
+        data: JSON.stringify(tableData),
+        contentType: 'application/json',
+        success: function(data) {
+            //处理返回结果
+            jp.success(data.msg)
+            refresh();
+        },
+        error: function (data) {
+            jp.error(data.msg);
+            refresh();
+        }
+    })
+}
+
+function getElementPosition(element) {
+    var $cell = $(element).closest('td'); // 获取元素的父元素(通常是 <td> 元素)
+    var $row = $cell.closest('tr'); // 获取父元素所在的行 <tr> 元素
+
+    var rowIndex = $row.index(); // 行索引(从 0 开始)
+    var columnIndex = $cell.index(); // 列索引(从 0 开始)
+
+    return {
+        row: rowIndex,
+        column: columnIndex
+    };
+}
+
+</script>

+ 98 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementInformation.jsp

@@ -0,0 +1,98 @@
+<%@ page import="java.time.LocalDate" %>
+<%@ 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="reserveManagementInformation.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;
+			white-space: nowrap;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			word-wrap:break-word;
+		}
+		.bootstrap-table .table thead>tr>th {
+			padding: 0;
+			margin: 0;
+			width: 3500px;
+		}
+	</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="reserveManagement" class="form form-horizontal well clearfix">
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label for="projectYear" class="label-item single-overflow pull-left">项目年份:</label>
+						<select name="projectYear" id="projectYear" class="form-control">
+							<%
+								int currentYear = LocalDate.now().getYear();
+								for (int i = 1997; i <= 2033; i++) { %>
+							<option value="<%= i %>" <% if (i == currentYear) { %>selected<% } %>><%= i %></option>
+							<% } %>
+						</select>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label class="label-item single-overflow pull-left" title="储备编码:">储备编码:</label>
+						<form:input path="projectReserveId" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label class="label-item single-overflow pull-left" title="项目名称:">项目名称:</label>
+						<form:input path="projectName" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<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">
+			<shiro:hasPermission name="cg:policeProcess:record:edit">
+				<button id="edit" class="btn btn-primary" onclick="edit()">
+					<i class="glyphicon glyphicon-edit"></i> 修改 <!--专职修改-->
+				</button>
+			</shiro:hasPermission>
+			<shiro:hasPermission name="cg:policeProcess:record:list">
+				<button id="btnImport" class="btn btn-info">
+					<i class="fa fa-folder-open-o"></i> 导入  <!--专职导入-->
+				</button>
+			</shiro:hasPermission>
+			<shiro:hasPermission name="cg:policeProcess:record:export">
+				<button id="btnExport" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 导出
+				</button>
+			</shiro:hasPermission>
+		    </div>
+	<!-- 表格 -->
+	<table id="projectTable"  data-toolbar="#toolbar"></table>
+
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 283 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementModifyByzz.jsp

@@ -0,0 +1,283 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>修改安全交底信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+			var projectReserveId = $("#projectReserveId").val();
+			var projectName = $("#projectName").val();
+			var construct = $("#constructionNecessityAndContent").val();
+
+			if (null==projectReserveId||""==projectReserveId){
+				jp.error("请填写项目储备编号!");
+			}else if(null==projectName||""==projectName){
+				jp.error("请填写项目名称!");
+			}else if (null==construct||""==construct){
+				jp.error("请填写建设必要性及内容!")
+			}
+
+		    else {
+                var isValidate = jp.validateForm('#inputForm');//校验表单
+                if(!isValidate){
+                    return false;
+                }else{
+                    jp.loading();
+                    jp.post("${ctx}/cg/policeProcess/base/update",$('#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="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备项目经理:</label></td>
+			<td class="width-35">
+				<form:input path="projectManager" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备进度:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">储备进度:</label></td>
+			<td class="width-35">
+				<form:input path="reserveProgress" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否纳入实施计划:</label></td>
+			<td class="width-35">
+				<form:input path="implementPlan" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">初定实施批次:</label></td>
+			<td class="width-35">
+				<form:input path="implementBatch" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">工作量统计:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含土建工作量:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineeringWorkload" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">土建工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="engineeringWorkloadStatistic" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含立杆工作量:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkload" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">立杆工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkloadStatistic" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="workRemark" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政策处理基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电所辖区:</label></td>
+			<td class="width-35">
+				<form:input path="powerStationJurisdiction" htmlEscape="false" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">施工地点:</label></td>
+			<td class="width-35">
+				<form:input path="constructionLocation" htmlEscape="false" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否存在政处:</label></td>
+			<td class="width-35">
+				<form:input path="whetherExitPolitical" htmlEscape="false" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">政处类型:</label></td>
+			<td class="width-35">
+				<form:input path="politicalType" htmlEscape="false" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">政处描述:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDescribe" htmlEscape="false" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">政处难度:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDifficulty" htmlEscape="false" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+			<td class="width-35">
+				<form:input path="whetherReport" htmlEscape="false" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需办理安评手续:</label></td>
+			<td class="width-35">
+				<form:input path="safetyProcedures" htmlEscape="false" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需办理航评手续:</label></td>
+			<td class="width-35">
+				<form:input path="aviationReviewProcedures" htmlEscape="false" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">是否启动政处:</label></td>
+			<td class="width-35">
+				<form:input path="startPolitical" htmlEscape="false" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="politicalRemarks" htmlEscape="false" class="form-control"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 349 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessRecord/reserveManagementView.jsp

@@ -0,0 +1,349 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目储备信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+			$('#disclosureFinishDate').datetimepicker({
+				format: "YYYY-MM-DD"
+			});
+		});
+		function save() {
+			var isValidate = jp.validateForm('#inputForm');//校验表单
+			if(!isValidate){
+				return false;
+			}else{
+
+			}
+		}
+	</script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<form:hidden path="serialNumber"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目参建(单位)人员信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">初定实施批次:</label></td>
+			<td class="width-35">
+				<form:input path="implementBatch" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">初定施工单位:</label></td>
+			<td class="width-35">
+				<form:input path="constructionUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目下达批次:</label></td>
+			<td class="width-35">
+				<form:input path="projectReleaseBatch" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">业主项目经理:</label></td>
+			<td class="width-35">
+				<form:input path="ownerManager" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">现场施工管理单位:</label></td>
+			<td class="width-35">
+				<form:input path="constructionManagementUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">施工项目经理(电气):</label></td>
+			<td class="width-35">
+				<form:input path="dqProjectManager" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">施工项目经理(土建):</label></td>
+			<td class="width-35">
+				<form:input path="tjProjectManager" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">分包队伍:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">电气分包单位:</label></td>
+			<td class="width-35">
+				<form:input path="dqSubcontractingUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">电气联系人:</label></td>
+			<td class="width-35">
+				<form:input path="dqContacts" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">土建分包单位:</label></td>
+			<td class="width-35">
+				<form:input path="tjSubcontractingUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">土建联系人:</label></td>
+			<td class="width-35">
+				<form:input path="tjContacts" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="subpackageRemarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目工程量统计:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含土建:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineer" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">土建工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineerStatistic" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含立杆工作量:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkload" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">立杆工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkloadStatistic" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="statisticRemarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政处记录:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">序号:</label></td>
+			<td class="width-35">
+				<form:input path="serialNumber" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">是否启动政处工作:</label></td>
+			<td class="width-35">
+				<form:input path="startPoliticalWork" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">启动时间:</label></td>
+			<td class="width-35">
+				<form:input path="startTime" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">政处对象:</label></td>
+			<td class="width-35">
+				<form:input path="administrativeObject" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需赔付:</label></td>
+			<td class="width-35">
+				<form:input path="needCompensation" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">赔付内容:</label></td>
+			<td class="width-35">
+				<form:input path="compensationContent" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">赔付金额:</label></td>
+			<td class="width-35">
+				<form:input path="compensationMoney" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">签字政处单据提交时间:</label></td>
+			<td class="width-35">
+				<form:input path="documentCommitTime" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否财政付款:</label></td>
+			<td class="width-35">
+				<form:input path="financialPayment" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需签订合同:</label></td>
+			<td class="width-35">
+				<form:input path="needSignContract" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">政处合同完成签订时间:</label></td>
+			<td class="width-35">
+				<form:input path="signContractTime" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">是否借款:</label></td>
+			<td class="width-35">
+				<form:input path="weatherLoan" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">借款支付时间:</label></td>
+			<td class="width-35">
+				<form:input path="loanTime" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">是否完成财务报销:</label></td>
+			<td class="width-35">
+				<form:input path="completeFinancialReimbursement" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">财务报销完成时间:</label></td>
+			<td class="width-35">
+				<form:input path="completeFinancialReimbursementTime" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">是否可进场:</label></td>
+			<td class="width-35">
+				<form:input path="possibleToEnterSite" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">可进场日期:</label></td>
+			<td class="width-35">
+				<form:input path="possibleToEnterSiteTime" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">政处是否完成:</label></td>
+			<td class="width-35">
+				<form:input path="completeProcess" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">政处洽谈单位:</label></td>
+			<td class="width-35">
+				<form:input path="negotiatingUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">政处配合单位:</label></td>
+			<td class="width-35">
+				<form:input path="coordinateUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="recordRemarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 392 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementForm.jsp

@@ -0,0 +1,392 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>新增带电作业信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+		    var projectReserveId = $("#projectReserveId").val();
+		    var projectName = $("#projectName").val();
+		    var construct = $("#constructionNecessityAndContent").val();
+
+
+		    if (null==projectReserveId||""==projectReserveId){
+                jp.error("请填写项目储备编号!");
+			}else if(null==projectName||""==projectName){
+				jp.error("请填写项目名称!");
+			}else if (null==construct||""==construct){
+		    	jp.error("请填写建设必要性及内容!")
+			}
+
+
+		    else {
+                var isValidate = jp.validateForm('#inputForm');//校验表单
+                if(!isValidate){
+                    return false;
+                }else{
+                    jp.loading();
+                    jp.post("${ctx}/cg/policeProcess/schedule/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="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目参建(单位)人员信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">初定实施批次:</label></td>
+			<td class="width-35">
+				<form:input path="implementBatch" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">初定施工单位:</label></td>
+			<td class="width-35">
+				<form:input path="constructionUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目下达批次:</label></td>
+			<td class="width-35">
+				<form:input path="projectReleaseBatch" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">业主项目经理:</label></td>
+			<td class="width-35">
+				<form:input path="ownerManager" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">现场施工管理单位:</label></td>
+			<td class="width-35">
+				<form:input path="constructionManagementUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">施工项目经理(电气):</label></td>
+			<td class="width-35">
+				<form:input path="dqProjectManager" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">施工项目经理(土建):</label></td>
+			<td class="width-35">
+				<form:input path="tjProjectManager" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">分包队伍:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">电气分包单位:</label></td>
+			<td class="width-35">
+				<form:input path="dqSubcontractingUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">电气联系人:</label></td>
+			<td class="width-35">
+				<form:input path="dqContacts" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">土建分包单位:</label></td>
+			<td class="width-35">
+				<form:input path="tjSubcontractingUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">土建联系人:</label></td>
+			<td class="width-35">
+				<form:input path="tjContacts" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="subpackageRemarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目工程量统计:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含土建:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineer" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">土建工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineerStatistic" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含立杆工作量:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkload" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">立杆工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkloadStatistic" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="statisticRemarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政处基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电所辖区:</label></td>
+			<td class="width-35">
+				<form:input path="powerStationJurisdiction" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">施工地点:</label></td>
+			<td class="width-35">
+				<form:input path="constructionLocation" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否存在政处:</label></td>
+			<td class="width-35">
+				<form:input path="whetherExitPolitical" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">政处类型:</label></td>
+			<td class="width-35">
+				<form:input path="politicalType" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">政处描述:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDescribe" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">政处难度:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDifficulty" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+			<td class="width-35">
+				<form:input path="whetherReport" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需办理安评手续:</label></td>
+			<td class="width-35">
+				<form:input path="safetyProcedures" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需办理航评手续:</label></td>
+			<td class="width-35">
+				<form:input path="aviationReviewProcedures" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">是否启动政处:</label></td>
+			<td class="width-35">
+				<form:input path="startPolitical" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">启动时间:</label></td>
+			<td class="width-35">
+				<form:input path="startTime" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="politicalRemarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政处进度表:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">该项目政处数量:</label></td>
+			<td class="width-35">
+				<form:input path="projectScheduleNum" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">政处对象描述:</label></td>
+			<td class="width-35">
+				<form:input path="scheduleNumDescription" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">规划报批完成情况:</label></td>
+			<td class="width-35">
+				<form:input path="planApprovalCompletion" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">安评完成情况:</label></td>
+			<td class="width-35">
+				<form:input path="safetyCompletion" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">航评完成情况:</label></td>
+			<td class="width-35">
+				<form:input path="hongpingCompletion" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">政处进度:</label></td>
+			<td class="width-35">
+				<form:input path="administrativeProgress" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否允许进场:</label></td>
+			<td class="width-35">
+				<form:input path="entryAllowed" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">允许进场日期:</label></td>
+			<td class="width-35">
+				<form:input path="entryAllowedTime" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeRequired" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更状态:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeState" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="scheduleRemarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 297 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementInformation.js

@@ -0,0 +1,297 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script >
+$(document).ready(function () {
+    $('#projectTable').bootstrapTable({
+        //请求方法
+        method: 'post',
+        //类型json
+        dataType: "json",
+        contentType: "application/x-www-form-urlencoded",
+        //显示检索按钮
+        showSearch: true,
+        //显示刷新按钮
+        showRefresh: true,
+        //显示切换手机试图按钮
+        showToggle: true,
+        //显示 内容列下拉框
+        showColumns: true,
+        //显示到处按钮
+        showExport: true,
+        //显示切换分页按钮
+        showPaginationSwitch: true,
+        //最低显示2行
+        minimumCountColumns: 2,
+        //是否显示行间隔色
+        striped: true,
+        //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+        cache: false,
+        //是否显示分页(*)
+        pagination: true,
+        //排序方式
+        sortOrder: "asc",
+        //初始化加载第一页,默认第一页
+        pageNumber: 1,
+        //每页的记录行数(*)
+        pageSize: 25,
+        //可供选择的每页的行数(*)
+        pageList: [5, 10, 25, 50, 100],
+        //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+        url: "${ctx}/cg/policeProcess/schedule/list",
+        //默认值为 '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}/cg/reservemanagementcenter/project/delete?id=" + row.id, function (data) {
+                        if (data.success) {
+                            $('#projectTable').bootstrapTable('refresh');
+                            jp.success(data.msg);
+                        } else {
+                            jp.error(data.msg);
+                        }
+                    })
+                });
+            }
+        },
+
+        onClickRow: function (row, $el) {
+        },
+        onShowSearch: function () {
+            $("#search-collapse").slideToggle();
+        },
+        columns:
+            [
+                [
+                    {checkbox:true,width: 36},
+                    {"title":"储备项目基本信息","colspan":21,"halign":"center","align": "center",width: "4200px"},
+                    {"title":"项目参建(单位)人员信息","colspan":7,"halign":"center","align": "center",width: "1400px"},
+                    {"title":"分包队伍","colspan":5,"halign":"center","align": "center",width: "1000px"},
+                    {"title":"项目工程量统计","colspan":5,"halign":"center","align": "center",width: "1000px"},
+                    {"title":"政处基本信息","colspan":12,"halign":"center","align": "center",width: "2400px"},
+                    {"title":"政处进度表","colspan":11,"halign":"center","align": "center",width: "2200px"}
+                ],
+                [
+                    {checkbox:true,width: 36},
+                    { field: 'projectYear', title: "项目年份", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectNature', title: "项目性质", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'demandUnit', title: "需求单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'district', title: "区域", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectGroup', title: "项目分组", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'reserveBatches', title: "储备批次", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'blockSupply', title: "供电区域", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'gridNumber', title: "网格编号", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'cellNumber', title: "单元格编号", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectReserveId', title: "项目储备编号", valign:"middle", align:"center", colspan: 1, rowspan: 1,
+                        formatter:function(value, row , index){
+
+                            if(value == null || value ==""){
+                                value = "-";
+                            }
+                        <c:choose>
+                            <c:when test="${fns:hasPermission('cg:reservemanagementcenter:reserveManage:view')}">
+                            return "<a href='javascript:view(\"" + row.id + "\", " + index + ")'>" + value + "</a>";
+
+                        </c:when>
+                            <c:otherwise>
+                            return value;
+                        </c:otherwise>
+                            </c:choose>
+                        }},
+                    { field: 'projectName', title: "储备项目名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'stateGridProjectCode', title: "国网项目编码", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'stateGridProjectName', title: "国网项目名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'constructionNecessityAndContent', title: "建设必要性及内容", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'substationName', title: "变电站名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'circuitName', title: "线路名称", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'netRackProjectDivide', title: "网架项目划分", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'requirementType', title: "需求类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectType', title: "项目类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'costEstimate', title: "费用估算", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'remarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'implementBatch', title: "初定实施批次", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'constructionUnit', title: "初定施工单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectReleaseBatch', title: "项目下达批次", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'ownerManager', title: "业主项目经理", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'ConstructionManagementUnit', title: "现场施工管理单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'dqProjectManager', title: "施工项目经理(电气)", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'tjProjectManager', title: "施工项目经理(土建)", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'dqSubcontractingUnit', title: "电气分包单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'dqContacts', title: "电气联系人", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'tjSubcontractingUnit', title: "土建分包单位", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'tjContacts', title: "土建联系人", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'subpackageRemarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'civilEngineer', title: "是否含土建", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'civilEngineerStatistic', title: "土建工作量统计", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'poleWorkload', title: "是否含立杆工作量", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'poleWorkloadStatistic', title: "立杆工作量统计", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'statisticRemarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'powerStationJurisdiction', title: "供电所辖区", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'constructionLocation', title: "施工地点", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'whetherExitPolitical', title: "是否存在政处", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'politicalType', title: "政处类型", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'politicalDescribe', title: "政处描述", valign:"middle", align:"center", colspan: 1, rowspan: 1 ,formatter:paramsMatter},
+                    { field: 'politicalDifficulty', title: "政处难度", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'whetherReport', title: "是否需规划报批", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'safetyProcedures', title: "是否需办理安评手续", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'aviationReviewProcedures', title: "是否需办理航评手续", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'startPolitical', title: "是否启动政处", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'startTime', title: "启动时间", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'politicalRemarks', title: "政处备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'projectScheduleNum', title: "该项目政处数量", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'scheduleNumDescription', title: "政处对象描述", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'planApprovalCompletion', title: "规划报批完成情况", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'safetyCompletion', title: "安评完成情况", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'hongpingCompletion', title: "航评完成情况", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'administrativeProgress', title: "政处进度", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'entryAllowed', title: "是否允许进场", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'entryAllowedTime', title: "允许进场日期", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'designChangeRequired', title: "是否需设计变更", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'designChangeState', title: "设计变更状态", valign:"middle", align:"center", colspan: 1, rowspan: 1 },
+                    { field: 'scheduleRemarks', title: "备注", valign:"middle", align:"center", colspan: 1, rowspan: 1 }
+                ]
+            ]
+    });
+
+
+    if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端
+        $('#projectTable').bootstrapTable("toggleView");
+    }
+
+    $('#projectTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+        'check-all.bs.table uncheck-all.bs.table', function () {
+        $('#remove').prop('disabled', !$('#projectTable').bootstrapTable('getSelections').length);
+        $('#view,#edit,#jlEdit').prop('disabled', $('#projectTable').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) {
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                iframeWin.contentWindow.importExcel('${ctx}/cg/policeProcess/schedule/import', function (data) {
+                    if (data.success) {
+                        jp.success(data.msg);
+                        refresh();
+                    } else {
+                        jp.error(data.msg);
+                    }
+                    jp.close(index);
+                });//调用保存事件
+                return false;
+            },
+            btn2: function (index) {
+                //  jp.close(index);
+            }
+        });
+    });
+
+    $("#btnExport").click(function () {
+        var projectReserveId = $("#projectReserveId").val();
+        var projectName = $("#projectName").val();
+        var projectYear = $("#projectYear").val();
+        jp.downloadFile('${ctx}/cg/policeProcess/schedule/export?projectReserveId=' + projectReserveId + '&projectName=' + projectName + '&projectYear=' + projectYear);
+    });
+
+    $("#search").click("click", function () {// 绑定查询按扭
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $("#reset").click("click", function () {// 绑定查询按扭
+        $("#searchForm  input").val("");
+        $("#searchForm  select").val("");
+        $("#searchForm  .select-item").html("");
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $('#beginBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+});
+
+//表格超出宽度鼠标悬停显示td内容
+function paramsMatter(value,row,index,field) {
+    if (value === '' || value === null || value === undefined){
+        return ''
+    }
+    var span = document.createElement('span');
+    span.setAttribute('title',value);
+    span.innerHTML = value;
+    return span.outerHTML;
+}
+
+function getIdSelections() {
+    return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+
+//刷新列表
+function refresh() {
+    $('#projectTable').bootstrapTable('refresh');
+}
+
+function add() {
+    jp.openSaveDialog('新增储备项目基本信息', "${ctx}/cg/policeProcess/schedule/form", '800px', '500px');
+}
+
+
+function edit(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑储备项目基本信息', "${ctx}/cg/policeProcess/schedule/form?id=" + id, '800px', '500px');
+}
+
+function view(id,index) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    var tableData = $('#projectTable').bootstrapTable('getData');
+    var serialNumber = tableData[index].serialNumber
+
+    jp.openViewDialog('查看储备项目基本信息', "${ctx}/cg/policeProcess/schedule/view?id=" + id + '&serialNumber=' +serialNumber, '800px', '500px');
+}
+
+//转换日期格式(时间戳转换为datetime格式)
+function changeDateFormat(cellval) {
+    var dateVal = cellval + "";
+    if (cellval != null) {
+        var date = new Date(parseInt(dateVal.replace("/Date(", "").replace(")/", ""), 10));
+        var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+        var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+
+        return date.getFullYear() + "-" + month + "-" + currentDate ;
+    }
+}
+
+</script>

+ 98 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementInformation.jsp

@@ -0,0 +1,98 @@
+<%@ page import="java.time.LocalDate" %>
+<%@ 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="reserveManagementInformation.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;
+			white-space: nowrap;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			word-wrap:break-word;
+		}
+		.bootstrap-table .table thead>tr>th {
+			padding: 0;
+			margin: 0;
+			width: 3500px;
+		}
+	</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="reserveManagement" class="form form-horizontal well clearfix">
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label for="projectYear" class="label-item single-overflow pull-left">项目年份:</label>
+						<select name="projectYear" id="projectYear" class="form-control">
+							<%
+								int currentYear = LocalDate.now().getYear();
+								for (int i = 1997; i <= 2033; i++) { %>
+							<option value="<%= i %>" <% if (i == currentYear) { %>selected<% } %>><%= i %></option>
+							<% } %>
+						</select>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label class="label-item single-overflow pull-left" title="储备编码:">储备编码:</label>
+						<form:input path="projectReserveId" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<label class="label-item single-overflow pull-left" title="项目名称:">项目名称:</label>
+						<form:input path="projectName" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-3">
+						<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">
+			<shiro:hasPermission name="cg:policeProcess:schedule:edit">
+				<button id="edit" class="btn btn-primary" onclick="edit()">
+					<i class="glyphicon glyphicon-edit"></i> 修改 <!--专职修改-->
+				</button>
+			</shiro:hasPermission>
+			<shiro:hasPermission name="cg:policeProcess:schedule:list">
+				<button id="btnImport" class="btn btn-info">
+					<i class="fa fa-folder-open-o"></i> 导入  <!--专职导入-->
+				</button>
+			</shiro:hasPermission>
+			<shiro:hasPermission name="cg:policeProcess:schedule:export">
+				<button id="btnExport" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 导出
+				</button>
+			</shiro:hasPermission>
+		    </div>
+	<!-- 表格 -->
+	<table id="projectTable"  data-toolbar="#toolbar"></table>
+
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 390 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementModifyByzz.jsp

@@ -0,0 +1,390 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>修改安全交底信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+			var projectReserveId = $("#projectReserveId").val();
+			var projectName = $("#projectName").val();
+			var construct = $("#constructionNecessityAndContent").val();
+
+			if (null==projectReserveId||""==projectReserveId){
+				jp.error("请填写项目储备编号!");
+			}else if(null==projectName||""==projectName){
+				jp.error("请填写项目名称!");
+			}else if (null==construct||""==construct){
+				jp.error("请填写建设必要性及内容!")
+			}
+
+		    else {
+                var isValidate = jp.validateForm('#inputForm');//校验表单
+                if(!isValidate){
+                    return false;
+                }else{
+                    jp.loading();
+                    jp.post("${ctx}/cg/policeProcess/schedule/update",$('#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="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目参建(单位)人员信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">初定实施批次:</label></td>
+			<td class="width-35">
+				<form:input path="implementBatch" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">初定施工单位:</label></td>
+			<td class="width-35">
+				<form:input path="constructionUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目下达批次:</label></td>
+			<td class="width-35">
+				<form:input path="projectReleaseBatch" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">业主项目经理:</label></td>
+			<td class="width-35">
+				<form:input path="ownerManager" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">现场施工管理单位:</label></td>
+			<td class="width-35">
+				<form:input path="constructionManagementUnit" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">施工项目经理(电气):</label></td>
+			<td class="width-35">
+				<form:input path="dqProjectManager" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">施工项目经理(土建):</label></td>
+			<td class="width-35">
+				<form:input path="tjProjectManager" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">分包队伍:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">电气分包单位:</label></td>
+			<td class="width-35">
+				<form:input path="dqSubcontractingUnit" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">电气联系人:</label></td>
+			<td class="width-35">
+				<form:input path="dqContacts" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">土建分包单位:</label></td>
+			<td class="width-35">
+				<form:input path="tjSubcontractingUnit" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">土建联系人:</label></td>
+			<td class="width-35">
+				<form:input path="tjContacts" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="subpackageRemarks" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目工程量统计:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含土建:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineer" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">土建工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineerStatistic" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含立杆工作量:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkload" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">立杆工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkloadStatistic" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="statisticRemarks" htmlEscape="false"  readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政处基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电所辖区:</label></td>
+			<td class="width-35">
+				<form:input path="powerStationJurisdiction" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">施工地点:</label></td>
+			<td class="width-35">
+				<form:input path="constructionLocation" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否存在政处:</label></td>
+			<td class="width-35">
+				<form:input path="whetherExitPolitical" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">政处类型:</label></td>
+			<td class="width-35">
+				<form:input path="politicalType" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">政处描述:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDescribe" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">政处难度:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDifficulty" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+			<td class="width-35">
+				<form:input path="whetherReport" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">是否需办理安评手续:</label></td>
+			<td class="width-35">
+				<form:input path="safetyProcedures" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需办理航评手续:</label></td>
+			<td class="width-35">
+				<form:input path="aviationReviewProcedures" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">是否启动政处:</label></td>
+			<td class="width-35">
+				<form:input path="startPolitical" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">启动时间:</label></td>
+			<td class="width-35">
+				<form:input path="startTime" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="politicalRemarks" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政处进度表:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">该项目政处数量:</label></td>
+			<td class="width-35">
+				<form:input path="projectScheduleNum" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">政处对象描述:</label></td>
+			<td class="width-35">
+				<form:input path="scheduleNumDescription" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">规划报批完成情况:</label></td>
+			<td class="width-35">
+				<form:input path="planApprovalCompletion" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">安评完成情况:</label></td>
+			<td class="width-35">
+				<form:input path="safetyCompletion" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">洪评完成情况:</label></td>
+			<td class="width-35">
+				<form:input path="hongpingCompletion" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">政处进度:</label></td>
+			<td class="width-35">
+				<form:input path="administrativeProgress" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否允许进场:</label></td>
+			<td class="width-35">
+				<form:input path="entryAllowed" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+			<td class="width-15 active"><label class="">允许进场日期:</label></td>
+			<td class="width-35">
+				<form:input path="entryAllowedTime" htmlEscape="false"  readonly="true" class="form-control" />
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeRequired" htmlEscape="false" class="form-control"  />
+			</td>
+			<td class="width-15 active"><label class="">设计变更状态:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeState" htmlEscape="false"  readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="scheduleRemarks" htmlEscape="false" class="form-control"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 361 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/policyProcess/policyProcessSchedule/reserveManagementView.jsp

@@ -0,0 +1,361 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目储备信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+			$('#disclosureFinishDate').datetimepicker({
+				format: "YYYY-MM-DD"
+			});
+		});
+		function save() {
+			var isValidate = jp.validateForm('#inputForm');//校验表单
+			if(!isValidate){
+				return false;
+			}else{
+
+			}
+		}
+	</script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="reserveManagement" class="form-horizontal">
+	<form:hidden path="id"/>
+	<table class="table table-bordered">
+		<tbody>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">储备项目基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目年份:</label></td>
+			<td class="width-35">
+				<form:input path="projectYear" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">项目性质:</label></td>
+			<td class="width-35">
+				<form:input path="projectNature" htmlEscape="false" readonly="true" class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">需求单位:</label></td>
+			<td class="width-35">
+				<form:input path="demandUnit" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">区域:</label></td>
+			<td class="width-35">
+				<form:input path="district" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目分组:</label></td>
+			<td class="width-35">
+				<form:input path="projectGroup" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">储备批次:</label></td>
+			<td class="width-35">
+				<form:input path="reserveBatches" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电区域:</label></td>
+			<td class="width-35">
+				<form:input path="blockSupply" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>网格编号:</label></td>
+			<td class="width-35">
+				<form:input path="gridNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>单元格编号:</label></td>
+			<td class="width-35">
+				<form:input path="cellNumber" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目储备编号:</label></td>
+			<td class="width-35">
+				<form:input path="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="projectName" htmlEscape="false"  readonly="true"  class="form-control required"/>
+			</td>
+			<td class="width-15 active"><label class="">国网项目编码:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectCode" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">国网项目名称:</label></td>
+			<td class="width-35">
+				<form:input path="stateGridProjectName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class=""><font color="red">*</font>建设必要性及内容:</label></td>
+			<td class="width-35">
+				<form:input path="constructionNecessityAndContent" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">变电站名称:</label></td>
+			<td class="width-35">
+				<form:input path="substationName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">线路名称:</label></td>
+			<td class="width-35">
+				<form:input path="circuitName" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">网架项目划分:</label></td>
+			<td class="width-35">
+				<form:input path="netRackProjectDivide" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">需求类型:</label></td>
+			<td class="width-35">
+				<form:input path="requirementType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目类型:</label></td>
+			<td class="width-35">
+				<form:input path="projectType" htmlEscape="false"  readonly="true"  class="form-control"/>
+			</td>
+			<td class="width-15 active"><label class="">费用估算:</label></td>
+			<td class="width-35">
+				<form:input path="costEstimate" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="remarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目参建(单位)人员信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">初定实施批次:</label></td>
+			<td class="width-35">
+				<form:input path="implementBatch" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">初定施工单位:</label></td>
+			<td class="width-35">
+				<form:input path="constructionUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">项目下达批次:</label></td>
+			<td class="width-35">
+				<form:input path="projectReleaseBatch" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">业主项目经理:</label></td>
+			<td class="width-35">
+				<form:input path="ownerManager" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">现场施工管理单位:</label></td>
+			<td class="width-35">
+				<form:input path="constructionManagementUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">施工项目经理(电气):</label></td>
+			<td class="width-35">
+				<form:input path="dqProjectManager" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">施工项目经理(土建):</label></td>
+			<td class="width-35">
+				<form:input path="tjProjectManager" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">分包队伍:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">电气分包单位:</label></td>
+			<td class="width-35">
+				<form:input path="dqSubcontractingUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">电气联系人:</label></td>
+			<td class="width-35">
+				<form:input path="dqContacts" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">土建分包单位:</label></td>
+			<td class="width-35">
+				<form:input path="tjSubcontractingUnit" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">土建联系人:</label></td>
+			<td class="width-35">
+				<form:input path="tjContacts" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="subpackageRemarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">项目工程量统计:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含土建:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineer" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">土建工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="civilEngineerStatistic" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否含立杆工作量:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkload" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">立杆工作量统计:</label></td>
+			<td class="width-35">
+				<form:input path="poleWorkloadStatistic" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="statisticRemarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政处基本信息:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">供电所辖区:</label></td>
+			<td class="width-35">
+				<form:input path="powerStationJurisdiction" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">施工地点:</label></td>
+			<td class="width-35">
+				<form:input path="constructionLocation" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否存在政处:</label></td>
+			<td class="width-35">
+				<form:input path="whetherExitPolitical" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">政处类型:</label></td>
+			<td class="width-35">
+				<form:input path="politicalType" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">政处描述:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDescribe" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">政处难度:</label></td>
+			<td class="width-35">
+				<form:input path="politicalDifficulty" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+			<td class="width-35">
+				<form:input path="whetherReport" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">是否需办理安评手续:</label></td>
+			<td class="width-35">
+				<form:input path="safetyProcedures" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需办理航评手续:</label></td>
+			<td class="width-35">
+				<form:input path="aviationReviewProcedures" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">是否启动政处:</label></td>
+			<td class="width-35">
+				<form:input path="startPolitical" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">启动时间:</label></td>
+			<td class="width-35">
+				<form:input path="startTime" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="politicalRemarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4" class="width-15 active"><label class="">政处进度表:</label></td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">该项目政处数量:</label></td>
+			<td class="width-35">
+				<form:input path="projectScheduleNum" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">政处对象描述:</label></td>
+			<td class="width-35">
+				<form:input path="scheduleNumDescription" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">规划报批完成情况:</label></td>
+			<td class="width-35">
+				<form:input path="planApprovalCompletion" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">安评完成情况:</label></td>
+			<td class="width-35">
+				<form:input path="safetyCompletion" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">洪评完成情况:</label></td>
+			<td class="width-35">
+				<form:input path="hongpingCompletion" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">政处进度:</label></td>
+			<td class="width-35">
+				<form:input path="administrativeProgress" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否允许进场:</label></td>
+			<td class="width-35">
+				<form:input path="entryAllowed" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">允许进场日期:</label></td>
+			<td class="width-35">
+				<form:input path="entryAllowedTime" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">是否需设计变更:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeRequired" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+			<td class="width-15 active"><label class="">设计变更状态:</label></td>
+			<td class="width-35">
+				<form:input path="designChangeState" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		<tr>
+			<td class="width-15 active"><label class="">备注:</label></td>
+			<td class="width-35">
+				<form:input path="scheduleRemarks" htmlEscape="false"  readonly="true"  class="form-control number money"/>
+			</td>
+		</tr>
+		</tbody>
+	</table>
+</form:form>
+</body>
+</html>

+ 244 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/raiseCapital/aerialConductorForm2.jsp

@@ -0,0 +1,244 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>核准阶段管理</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+	        $('#inDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+
+		function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if(!isValidate){
+                return false;
+			}else{
+            	var uuid = $("#uuid").val();
+                jp.loading();
+                jp.post("${ctx}/raiseCapitalDesign/saveVlatage2",$('#inputForm').serialize(),function(data){
+                    if(data.success){
+                        jp.getParent().refresh();
+						jp.getParent().testSay2(uuid);
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+						// jp.getParent().refreshCharts(uuid);
+                    }else{
+                        jp.error(data.msg);
+                    }
+                })
+			}
+
+        }
+		function addRow(list, idx, tpl, row){
+			$(list).append(Mustache.render(tpl, {
+				idx: idx, delBtn: true, row: row
+			}));
+			$(list+idx).find("select").each(function(){
+				$(this).val($(this).attr("data-value"));
+			});
+			$(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+				var ss = $(this).attr("data-value").split(',');
+				for (var i=0; i<ss.length; i++){
+					if($(this).val() == ss[i]){
+						$(this).attr("checked","checked");
+					}
+				}
+			});
+			$(list+idx).find(".form_datetime").each(function(){
+				 $(this).datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+			    });
+			});
+		}
+		function delRow(obj, prefix){
+			var id = $(prefix+"_id");
+			var delFlag = $(prefix+"_delFlag");
+			if (id.val() == ""){
+				$(obj).parent().parent().remove();
+			}else if(delFlag.val() == "0"){
+				delFlag.val("1");
+				$(obj).html("&divide;").attr("title", "撤销删除");
+				$(obj).parent().parent().addClass("error");
+			}else if(delFlag.val() == "1"){
+				delFlag.val("0");
+				$(obj).html("&times;").attr("title", "删除");
+				$(obj).parent().parent().removeClass("error");
+			}
+		}
+
+		function highVoltageCalculate(obj,prefix) {
+			var tr=$(obj).parent().parent();
+			var singleCircuitPath =document.getElementById(prefix+"_singleCircuitPath").value;//单回路路径
+			var doubleCircuitPath =document.getElementById(prefix+"_doubleCircuitPath").value;//双回路路径
+			var highSingleVoltageCoefficient = $("#highSingleVoltageCoefficient").val();//10KV单回路路径系数
+			var highDoubleVoltageCoefficient = $("#highDoubleVoltageCoefficient").val();//10KV双回路路径系数
+
+			if (singleCircuitPath==undefined || singleCircuitPath==null || singleCircuitPath==''){
+				singleCircuitPath=0;
+			}
+			if (doubleCircuitPath==undefined || doubleCircuitPath==null || doubleCircuitPath==''){
+				doubleCircuitPath=0;
+			}
+			if (highSingleVoltageCoefficient==undefined || highSingleVoltageCoefficient==null || highSingleVoltageCoefficient==''){
+				highSingleVoltageCoefficient=1;
+			}
+			if (highDoubleVoltageCoefficient==undefined || highDoubleVoltageCoefficient==null || highDoubleVoltageCoefficient==''){
+				highDoubleVoltageCoefficient=1;
+			}
+			var total=parseFloat(singleCircuitPath)*parseFloat(highSingleVoltageCoefficient)+parseFloat(doubleCircuitPath)*parseFloat(highDoubleVoltageCoefficient);
+			document.getElementById(prefix+"_singleLong").value=total.toFixed(2);
+		}
+
+		function lowVoltageCalculate(obj,prefix) {
+			var tr=$(obj).parent().parent();
+			var singleCircuitPath =document.getElementById(prefix+"_singleCircuitPath").value;//单回路路径
+			var doubleCircuitPath =document.getElementById(prefix+"_doubleCircuitPath").value;//双回路路径
+			var lowSingleVoltageCoefficient = $("#lowSingleVoltageCoefficient").val();//0.4KV单回路路径系数
+			var lowDoubleVoltageCoefficient = $("#lowDoubleVoltageCoefficient").val();//0.4KV双回路路径系数
+
+			if (singleCircuitPath==undefined || singleCircuitPath==null || singleCircuitPath==''){
+				singleCircuitPath=0;
+			}
+			if (doubleCircuitPath==undefined || doubleCircuitPath==null || doubleCircuitPath==''){
+				doubleCircuitPath=0;
+			}
+			if (lowSingleVoltageCoefficient==undefined || lowSingleVoltageCoefficient==null || lowSingleVoltageCoefficient==''){
+				lowSingleVoltageCoefficient=1;
+			}
+			if (lowDoubleVoltageCoefficient==undefined || lowDoubleVoltageCoefficient==null || lowDoubleVoltageCoefficient==''){
+				lowDoubleVoltageCoefficient=1;
+			}
+			var total=parseFloat(singleCircuitPath)*parseFloat(lowSingleVoltageCoefficient)+parseFloat(doubleCircuitPath)*parseFloat(lowDoubleVoltageCoefficient);
+			document.getElementById(prefix+"_singleLong").value=total.toFixed(2);
+		}
+	</script>
+</head>
+<body class="bg-white">
+<div>
+	<ul class="nav nav-tabs list-tabs">
+		<li class="active" role="presentation" id="click1"><a id="dq" href="javascript:void(0)">10kV部分</a></li>
+	</ul>
+</div>
+		<form:form id="inputForm" modelAttribute="voltageData" action="${ctx}/filing/basicInformation/save" method="post" class="form-horizontal">
+			<input type="hidden" id="uuid" name="uuid" value="${uuid}">
+			<input type="hidden" id="highSingleVoltageCoefficient" value="${highSingleVoltageCoefficient}">
+			<input type="hidden" id="highDoubleVoltageCoefficient" value="${highDoubleVoltageCoefficient}">
+			<input type="hidden" id="lowSingleVoltageCoefficient" value="${lowSingleVoltageCoefficient}">
+			<input type="hidden" id="lowDoubleVoltageCoefficient" value="${lowDoubleVoltageCoefficient}">
+			<div class="tabs-container">
+				<div class="tab-content">
+					<div id="tab-1" class="tab-pane fade in  active">
+				<table class="table table-striped table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th class="hide"></th>
+							<th>导线型号</th>
+							<th>单回路路径(km)</th>
+							<th>双回路路径(km)</th>
+							<th>单线长(km)</th>
+						</tr>
+					</thead>
+					<tbody id="highVoltageList">
+					</tbody>
+				</table>
+				<script type="text/template" id="basicInformationTpl">//<!--
+					<tr id="highVoltageList{{idx}}">
+						<td class="hide">
+							<input id="highVoltageList{{idx}}_id" name="highVoltageList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+							<input id="highVoltageList{{idx}}_delFlag" name="highVoltageList[{{idx}}].delFlag" type="hidden" value="0"/>
+						</td>
+
+						<td  class="max-width-250">
+						<input type='text' id="highVoltageList[{{idx}}]_voltageName"  name="highVoltageList[{{idx}}].voltageName" readonly= "true" class="form-control"  value="{{row.voltageName}}"/>
+						</td>
+
+						<td  class="max-width-250">
+							<input type='text' id="highVoltageList[{{idx}}]_singleCircuitPath" name="highVoltageList[{{idx}}].singleCircuitPath" placeholder="请输入数字"  onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10" class="form-control number"  value="{{row.singleCircuitPath}}" onchange="highVoltageCalculate(this,'highVoltageList[{{idx}}]')"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="highVoltageList[{{idx}}]_doubleCircuitPath" name="highVoltageList[{{idx}}].doubleCircuitPath" placeholder="请输入数字"  onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10" class="form-control number"  value="{{row.doubleCircuitPath}}" onchange="highVoltageCalculate(this,'highVoltageList[{{idx}}]')"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="highVoltageList[{{idx}}]_singleLong" name="highVoltageList[{{idx}}].singleLong" readonly= "true" class="form-control number"  value="{{row.singleLong}}"/>
+						</td>
+					</tr>//-->
+				</script>
+				<script type="text/javascript">
+					var basicInformationRowIdx = 0, basicInformationTpl = $("#basicInformationTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+					$(document).ready(function() {
+						var data = ${fns:toJson(highVoltageList)};
+						for (var i=0; i<data.length; i++){
+							addRow('#highVoltageList', basicInformationRowIdx, basicInformationTpl, data[i]);
+							basicInformationRowIdx = basicInformationRowIdx + 1;
+						}
+					});
+				</script>
+				</div>
+			</div>
+		</div>
+
+			<div>
+				<ul class="nav nav-tabs list-tabs">
+					<li class="active" role="presentation" id="click2" ><a id="qd" href="javascript:void(0)">0.4kV部分</a></li>
+				</ul>
+			</div>
+
+			<div class="tabs-container">
+				<div class="tab-content">
+					<div id="tab-2" class="tab-pane fade in  active">
+						<table class="table table-striped table-bordered table-condensed">
+							<thead>
+							<tr>
+								<th class="hide"></th>
+								<th>导线型号</th>
+								<th>单回路路径(km)</th>
+								<th>双回路路径(km)</th>
+								<th>单线长(km)</th>
+							</tr>
+							</thead>
+							<tbody id="lowVoltageList">
+							</tbody>
+						</table>
+						<script type="text/template" id="lowVoltageTpl">//<!--
+				<tr id="lowVoltageList{{idx}}">
+					<td class="hide">
+						<input id="lowVoltageList{{idx}}_id" name="lowVoltageList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+						<input id="lowVoltageList{{idx}}_delFlag" name="lowVoltageList[{{idx}}].delFlag" type="hidden" value="0"/>
+					</td>
+
+					<td  class="max-width-250">
+					<input type='text' id="lowVoltageList[{{idx}}]_voltageName" name="lowVoltageList[{{idx}}].voltageName"  readonly= "true" class="form-control"  value="{{row.voltageName}}"/>
+					</td>
+
+					<td  class="max-width-250">
+						<input type='text' id="lowVoltageList[{{idx}}]_singleCircuitPath" name="lowVoltageList[{{idx}}].singleCircuitPath" placeholder="请输入数字"  onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10" class="form-control number"  value="{{row.singleCircuitPath}}" onchange="lowVoltageCalculate(this,'lowVoltageList[{{idx}}]')"/>
+					</td>
+					<td class="max-width-250">
+						<input type='text' id="lowVoltageList[{{idx}}]_doubleCircuitPath" name="lowVoltageList[{{idx}}].doubleCircuitPath" placeholder="请输入数字"  onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10" class="form-control number"  value="{{row.doubleCircuitPath}}" onchange="lowVoltageCalculate(this,'lowVoltageList[{{idx}}]')"/>
+					</td>
+					<td class="max-width-250">
+						<input type='text' id="lowVoltageList[{{idx}}]_singleLong" name="lowVoltageList[{{idx}}].singleLong" readonly= "true" class="form-control number"  value="{{row.singleLong}}"/>
+					</td>
+				</tr>//-->
+						</script>
+						<script type="text/javascript">
+							var lowVoltageRowIdx = 0, lowVoltageTpl = $("#lowVoltageTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+							$(document).ready(function() {
+								var data = ${fns:toJson(lowVoltageList)};
+								for (var i=0; i<data.length; i++){
+									addRow('#lowVoltageList', lowVoltageRowIdx, lowVoltageTpl, data[i]);
+									lowVoltageRowIdx = lowVoltageRowIdx + 1;
+								}
+							});
+						</script>
+					</div>
+				</div>
+			</div>
+		</form:form>
+</body>
+</html>

+ 593 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/raiseCapital/cableSectionForm2.jsp

@@ -0,0 +1,593 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>核准阶段管理</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+	        $('#inDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+
+			$(".list-tabs li").click(function(){
+				$(".list-tabs li").each(function(){
+					$(this).removeAttr("class","active");
+					var id='#'+$(this).find("span").html();
+					$(id).attr("class","hide");
+				})
+				$(this).attr("class","active");
+				var id='#'+$(this).find("span").html();
+				$(id).removeAttr("class","hide");
+			})
+
+			$(".list-tabs li").each(function(){
+				var data = ${fns:toJson(cableSectionData)};
+				var name=$(this).find("span").eq(1).html();
+				for (var i=0;i<data.length;i++){
+					if (name==data[i].voltageName){
+						$(this).find("input").val(data[i].id);
+					}
+				}
+			})
+			//400mm
+			var cableFourHundredList = ${fns:toJson(cableFourHundredList)};
+			if (null != cableFourHundredList){
+				var cableFourHundredListTotal=0;
+				for (var i=0;i<cableFourHundredList.length;i++){
+					var electricalChief=cableFourHundredList[i].electricalChief;
+					cableFourHundredListTotal=cableFourHundredListTotal+parseFloat(electricalChief);
+				}
+				document.getElementById("cableFourHundredListTotal").value=(cableFourHundredListTotal/1000).toFixed(4);
+			}
+			//300mm
+			var cableThreeHundredList = ${fns:toJson(cableThreeHundredList)};
+			if (null != cableThreeHundredList){
+				var cableThreeHundredListTotal=0;
+				for (var i=0;i<cableThreeHundredList.length;i++){
+					var electricalChief=cableThreeHundredList[i].electricalChief;
+					cableThreeHundredListTotal=cableThreeHundredListTotal+parseFloat(electricalChief);
+				}
+				document.getElementById("cableThreeHundredListTotal").value=(cableThreeHundredListTotal/1000).toFixed(4);
+			}
+			//240mm
+			var cableTwoHundredFortyList = ${fns:toJson(cableTwoHundredFortyList)};
+			if (null != cableTwoHundredFortyList){
+				var cableTwoHundredFortyListTotal=0;
+				for (var i=0;i<cableTwoHundredFortyList.length;i++){
+					var electricalChief=cableTwoHundredFortyList[i].electricalChief;
+					cableTwoHundredFortyListTotal=cableTwoHundredFortyListTotal+parseFloat(electricalChief);
+				}
+				document.getElementById("cableTwoHundredFortyListTotal").value=(cableTwoHundredFortyListTotal/1000).toFixed(4);
+			}
+			//120mm
+			var cableHundredAndTwentyList = ${fns:toJson(cableHundredAndTwentyList)};
+			if (null != cableHundredAndTwentyList){
+				var cableHundredAndTwentyListTotal=0;
+				for (var i=0;i<cableHundredAndTwentyList.length;i++){
+					var electricalChief=cableHundredAndTwentyList[i].electricalChief;
+					cableHundredAndTwentyListTotal=cableHundredAndTwentyListTotal+parseFloat(electricalChief);
+				}
+				document.getElementById("cableHundredAndTwentyListTotal").value=(cableHundredAndTwentyListTotal/1000).toFixed(4);
+			}
+			//70mm
+			var cableSeventyList = ${fns:toJson(cableSeventyList)};
+			if (null != cableSeventyList){
+				var cableSeventyListTotal=0;
+				for (var i=0;i<cableSeventyList.length;i++){
+					var electricalChief=cableSeventyList[i].electricalChief;
+					cableSeventyListTotal=cableSeventyListTotal+parseFloat(electricalChief);
+				}
+				document.getElementById("cableSeventyListTotal").value=(cableSeventyListTotal/1000).toFixed(4);
+			}
+
+		});
+
+		function save() {
+			var isValidate = jp.validateForm('#inputForm');//校验表单
+			var projectReserveId = $("#projectReserveId").val();
+			if(!isValidate){
+				return false;
+			}else{
+				var uuid = $("#uuid").val();
+				jp.loading();
+				jp.post("${ctx}/raiseCapitalDesign/saveCableOnline2?projectReserveId=" + projectReserveId,$('#inputForm').serialize(),function(data){
+					if(data.success){
+						jp.getParent().refresh();
+						jp.getParent().testSay(uuid);
+						var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+						parent.layer.close(dialogIndex);
+						jp.success(data.msg)
+					}else{
+						jp.error(data.msg);
+					}
+				})
+			}
+
+		}
+
+		function addRow(list, idx, tpl, row){
+			$(list).prepend(Mustache.render(tpl, {
+				idx: idx, delBtn: true, row: row
+			}));
+			$(list+idx).find("select").each(function(){
+				$(this).val($(this).attr("data-value"));
+			});
+			$(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+				var ss = $(this).attr("data-value").split(',');
+				for (var i=0; i<ss.length; i++){
+					if($(this).val() == ss[i]){
+						$(this).attr("checked","checked");
+					}
+				}
+			});
+			$(list+idx).find(".form_datetime").each(function(){
+				 $(this).datetimepicker({
+					 format: "YYYY-MM-DD HH:mm:ss"
+			    });
+			});
+		}
+		function delRow(obj, prefix,tbody,idx){
+			var id = $(prefix+"_id");
+			var delFlag = $(prefix+"_delFlag");
+			if (id.val() == ""){
+				$(obj).parent().parent().remove();
+				if (idx=='cableFourHundredRowIdx'){
+					cableFourHundredRowIdx=cableFourHundredRowIdx-1;
+					cableFourHundredTotal(tbody,cableFourHundredRowIdx);
+				}else if (idx=='cableThreeHundredRowIdx'){
+					cableThreeHundredRowIdx=cableThreeHundredRowIdx-1;
+					cableFourHundredTotal(tbody,cableThreeHundredRowIdx);
+				}else if (idx=='cableTwoHundredFortyRowIdx'){
+					cableTwoHundredFortyRowIdx=cableTwoHundredFortyRowIdx-1;
+					cableFourHundredTotal(tbody,cableTwoHundredFortyRowIdx);
+				}else if (idx=='cableHundredAndTwentyRowIdx'){
+					cableHundredAndTwentyRowIdx=cableHundredAndTwentyRowIdx-1;
+					cableFourHundredTotal(tbody,cableHundredAndTwentyRowIdx);
+				}else if (idx=='cableSeventyRowIdx'){
+					cableSeventyRowIdx=cableSeventyRowIdx-1;
+					cableFourHundredTotal(tbody,cableSeventyRowIdx);
+				}
+			}else if(delFlag.val() == "0"){
+				delFlag.val("1");
+				$(obj).html("&divide;").attr("title", "撤销删除");
+				$(obj).parent().parent().addClass("error");
+			}else if(delFlag.val() == "1"){
+				delFlag.val("0");
+				$(obj).html("&times;").attr("title", "删除");
+				$(obj).parent().parent().removeClass("error");
+			}
+		}
+		function cableJiSuan(obj,prefix,tbody,idx) {
+			var tr=$(obj).parent().parent();
+			// var pathLength =$(tr).find("td").eq(2).val();//路径长(m)
+			var pathLength =document.getElementById(prefix+"_pathLength").value;//路径长(m)
+			var upperRod =document.getElementById(prefix+"_upperRod").value;//上杆(m)
+			var arrival =document.getElementById(prefix+"_arrival").value;//进站(m)
+			var incomingEquipment =document.getElementById(prefix+"_incomingEquipment").value;//进设备(m)
+			var coefficient =document.getElementById(prefix+"_coefficient").value;//系数
+			if (pathLength==undefined || pathLength=='' ){
+				pathLength=0;
+			}if (upperRod==undefined || upperRod==''){
+				upperRod=0;
+			}if ( arrival==undefined || arrival==''){
+				arrival=0;
+			}if (incomingEquipment==undefined || incomingEquipment==''){
+				incomingEquipment=0;
+			}
+			var total=(parseFloat(pathLength)+parseFloat(upperRod)+parseFloat(arrival)+parseFloat(incomingEquipment))*parseFloat(coefficient);
+			document.getElementById(prefix+"_electricalChief").value=total.toFixed(2);
+			cableFourHundredTotal(tbody,idx);
+		}
+		function cableFourHundredTotal(tbody,idx) {
+			var length=idx;
+			var totalLength=0
+			for (var i=0;i<length;i++){
+				var ss=$("#"+tbody).find('tr').eq(i).attr("id");
+				var id=ss+"_electricalChief";
+				var electricalChief =document.getElementById(id).value;//电气长(m)
+				if (electricalChief==''){
+					electricalChief=0;
+				}
+				totalLength+=parseFloat(electricalChief)
+			}
+			var totalName=tbody+"Total"
+			document.getElementById(totalName).value=(totalLength/1000).toFixed(4);
+		}
+	</script>
+</head>
+<body class="bg-white">
+
+		<form:form id="inputForm" modelAttribute="cableSectionData" action="${ctx}/filing/basicInformation/save" method="post" class="form-horizontal">
+			<input type="hidden" id="uuid" name="uuid" value="${uuid}">
+			<input type="hidden" id="projectName" value="${projectName}">
+			<input type="hidden" id="projectReserveId" value="${projectReserveId}">
+			<div>
+				<ul class="nav nav-tabs list-tabs">
+					<li class="active" role="presentation" id="click1"><a id="dq" href="javascript:void(0)"><span class="hide">cableFourHundred</span><span>YJV22-3×400mm²</span></a><input type="hidden" name="cableFourHundredId"/></li>
+					<li role="presentation"><a href="javascript:void(0)"><span class="hide">cableThreeHundred</span><span>YJV22-3×300mm²</span></a><input type="hidden" name="cableThreeHundredId"/></li>
+					<li role="presentation"><a href="javascript:void(0)"><span class="hide">cableTwoHundredForty</span><span>YJV22-3×240mm²</span></a><input type="hidden" name="cableTwoHundredFortyId"/></li>
+					<li role="presentation"><a href="javascript:void(0)"><span class="hide">cableHundredAndTwenty</span><span>YJV22-3×120mm²</span></a><input type="hidden" name="cableHundredAndTwentyId"/></li>
+					<li role="presentation"><a href="javascript:void(0)"><span class="hide">cableSeventy</span><span>YJV22-3×70mm²</span></a><input type="hidden" name="cableSeventyId"/></li>
+				</ul>
+			</div>
+			<div class="tabs-container" id="cableFourHundred">
+				<div class="tab-content">
+					<div id="tab-1" class="tab-pane fade in  active">
+					<a class="btn btn-white btn-sm" onclick="addRow('#cableFourHundredList', cableFourHundredRowIdx, cableFourHundredTpl);cableFourHundredRowIdx = cableFourHundredRowIdx + 1;" title="新增">	<i class="glyphicon glyphicon-plus"></i> 新建</a>
+					<table class="table table-striped table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th class="hide"></th>
+							<th>起讫点</th>
+							<th>路径长(m)</th>
+							<th>上杆(m)</th>
+							<th>进站(m)</th>
+							<th>进设备(m)</th>
+							<th>系数</th>
+							<th>电气长(m)</th>
+							<th width="10">&nbsp;</th>
+						</tr>
+					</thead>
+					<tbody id="cableFourHundredList">
+						<tr>
+							<td colspan="6">总长(km):</td>
+							<td width="200px">
+								<input type='text' id="cableFourHundredListTotal"  name="cableFourHundredListTotal" readonly= "true" class="form-control"  value=""/>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				<script type="text/template" id="cableFourHundredTpl">//<!--
+					<tr id="cableFourHundredList[{{idx}}]">
+						<td class="hide">
+							<input id="cableFourHundredList{{idx}}_id" name="cableFourHundredList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+							<input id="cableFourHundredList{{idx}}_delFlag" name="cableFourHundredList[{{idx}}].delFlag" type="hidden" value="0"/>
+						</td>
+
+						<td  class="max-width-250">
+						<input type='text' id="cableFourHundredList[{{idx}}]_destination" name="cableFourHundredList[{{idx}}].destination" class="form-control"  value="{{row.destination}}" />
+						</td>
+
+						<td  class="max-width-250">
+							<input type='text' id="cableFourHundredList[{{idx}}]_pathLength" name="cableFourHundredList[{{idx}}].pathLength" class="form-control" onchange="cableJiSuan(this,'cableFourHundredList[{{idx}}]','cableFourHundredList',cableFourHundredRowIdx)"  value="{{row.pathLength}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableFourHundredList[{{idx}}]_upperRod" name="cableFourHundredList[{{idx}}].upperRod" class="form-control" onchange="cableJiSuan(this,'cableFourHundredList[{{idx}}]','cableFourHundredList',cableFourHundredRowIdx)"  value="{{row.upperRod}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableFourHundredList[{{idx}}]_arrival" name="cableFourHundredList[{{idx}}].arrival" class="form-control" onchange="cableJiSuan(this,'cableFourHundredList[{{idx}}]','cableFourHundredList',cableFourHundredRowIdx)"  value="{{row.arrival}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableFourHundredList[{{idx}}]_incomingEquipment" name="cableFourHundredList[{{idx}}].incomingEquipment" onchange="cableJiSuan(this,'cableFourHundredList[{{idx}}]','cableFourHundredList',cableFourHundredRowIdx)" class="form-control"  value="{{row.incomingEquipment}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableFourHundredList[{{idx}}]_coefficient"  name="cableFourHundredList[{{idx}}].coefficient" readonly= "true" class="form-control"  value="${cableFactor}"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableFourHundredList[{{idx}}]_electricalChief"  name="cableFourHundredList[{{idx}}].electricalChief" readonly= "true" class="form-control"  value="{{row.electricalChief}}"/>
+						</td>
+						<td class="text-center" width="10">
+							{{#delBtn}}<span class="close" onclick="delRow(this, '#cableFourHundredList{{idx}}','cableFourHundredList','cableFourHundredRowIdx')" title="删除">&times;</span>{{/delBtn}}
+						</td>
+					</tr>//-->
+				</script>
+				<script type="text/javascript">
+					var cableFourHundredRowIdx = 0, cableFourHundredTpl = $("#cableFourHundredTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+					$(document).ready(function() {
+						var data = ${fns:toJson(cableFourHundredList)};
+						for (var i=0; i<data.length; i++){
+							console.log(data[i])
+							addRow('#cableFourHundredList', cableFourHundredRowIdx, cableFourHundredTpl, data[i]);
+							cableFourHundredRowIdx = cableFourHundredRowIdx + 1;
+						}
+					});
+				</script>
+				</div>
+			</div>
+		</div>
+			<div class="tabs-container hide" id="cableThreeHundred">
+				<div class="tab-content">
+					<div id="tab-2" class="tab-pane fade in  active">
+					<a class="btn btn-white btn-sm" onclick="addRow('#cableThreeHundredList', cableThreeHundredRowIdx, cableThreeHundredTpl);cableThreeHundredRowIdx = cableThreeHundredRowIdx + 1;" title="新增">	<i class="glyphicon glyphicon-plus"></i> 新建</a>
+					<table class="table table-striped table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th class="hide"></th>
+							<th>起讫点</th>
+							<th>路径长(m)</th>
+							<th>上杆(m)</th>
+							<th>进站(m)</th>
+							<th>进设备(m)</th>
+							<th>系数</th>
+							<th>电气长(m)</th>
+							<th width="10">&nbsp;</th>
+						</tr>
+					</thead>
+					<tbody id="cableThreeHundredList">
+						<tr>
+							<td colspan="6">总长(km):</td>
+							<td width="200px">
+								<input type='text' id="cableThreeHundredListTotal"  name="cableThreeHundredListTotal" readonly= "true" class="form-control"  value=""/>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				<script type="text/template" id="cableThreeHundredTpl">//<!--
+				<tr id="cableThreeHundredList[{{idx}}]">
+						<td class="hide">
+							<input id="cableThreeHundredList{{idx}}_id" name="cableThreeHundredList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+							<input id="cableThreeHundredList{{idx}}_delFlag" name="cableThreeHundredList[{{idx}}].delFlag" type="hidden" value="0"/>
+						</td>
+
+						<td  class="max-width-250">
+						<input type='text' id="cableThreeHundredList[{{idx}}]_destination" name="cableThreeHundredList[{{idx}}].destination" class="form-control"  value="{{row.destination}}"/>
+						</td>
+
+						<td  class="max-width-250">
+							<input type='text' id="cableThreeHundredList[{{idx}}]_pathLength" name="cableThreeHundredList[{{idx}}].pathLength" class="form-control" onchange="cableJiSuan(this,'cableThreeHundredList[{{idx}}]','cableThreeHundredList',cableThreeHundredRowIdx)"  value="{{row.pathLength}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableThreeHundredList[{{idx}}]_upperRod" name="cableThreeHundredList[{{idx}}].upperRod" class="form-control" onchange="cableJiSuan(this,'cableThreeHundredList[{{idx}}]','cableThreeHundredList',cableThreeHundredRowIdx)"  value="{{row.upperRod}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableThreeHundredList[{{idx}}]_arrival" name="cableThreeHundredList[{{idx}}].arrival" class="form-control" onchange="cableJiSuan(this,'cableThreeHundredList[{{idx}}]','cableThreeHundredList',cableThreeHundredRowIdx)"  value="{{row.arrival}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableThreeHundredList[{{idx}}]_incomingEquipment" name="cableThreeHundredList[{{idx}}].incomingEquipment" onchange="cableJiSuan(this,'cableThreeHundredList[{{idx}}]','cableThreeHundredList',cableThreeHundredRowIdx)" class="form-control"  value="{{row.incomingEquipment}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableThreeHundredList[{{idx}}]_coefficient"  name="cableThreeHundredList[{{idx}}].coefficient" readonly= "true" class="form-control"  value="${cableFactor}"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableThreeHundredList[{{idx}}]_electricalChief"  name="cableThreeHundredList[{{idx}}].electricalChief" readonly= "true" class="form-control"  value="{{row.electricalChief}}"/>
+						</td>
+						<td class="text-center" width="10">
+							{{#delBtn}}<span class="close" onclick="delRow(this, '#cableThreeHundredList{{idx}}','cableThreeHundredList','cableThreeHundredRowIdx')" title="删除">&times;</span>{{/delBtn}}
+						</td>
+					</tr>//-->
+				</script>
+				<script type="text/javascript">
+					var cableThreeHundredRowIdx = 0, cableThreeHundredTpl = $("#cableThreeHundredTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+					$(document).ready(function() {
+						var data = ${fns:toJson(cableThreeHundredList)};
+						for (var i=0; i<data.length; i++){
+							console.log(data[i])
+							addRow('#cableThreeHundredList', cableThreeHundredRowIdx, cableThreeHundredTpl, data[i]);
+							cableThreeHundredRowIdx = cableThreeHundredRowIdx + 1;
+						}
+					});
+				</script>
+				</div>
+			</div>
+		</div>
+			<div class="tabs-container hide" id="cableTwoHundredForty">
+				<div class="tab-content">
+					<div id="tab-3" class="tab-pane fade in  active">
+					<a class="btn btn-white btn-sm" onclick="addRow('#cableTwoHundredFortyList', cableTwoHundredFortyRowIdx, cableTwoHundredFortyTpl);cableTwoHundredFortyRowIdx = cableTwoHundredFortyRowIdx + 1;" title="新增">	<i class="glyphicon glyphicon-plus"></i> 新建</a>
+					<table class="table table-striped table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th class="hide"></th>
+							<th>起讫点</th>
+							<th>路径长(m)</th>
+							<th>上杆(m)</th>
+							<th>进站(m)</th>
+							<th>进设备(m)</th>
+							<th>系数</th>
+							<th>电气长(m)</th>
+							<th width="10">&nbsp;</th>
+
+						</tr>
+					</thead>
+					<tbody id="cableTwoHundredFortyList">
+						<tr>
+							<td colspan="6">总长(km):</td>
+							<td width="200px">
+								<input type='text' id="cableTwoHundredFortyListTotal"  name="cableTwoHundredFortyListTotal" readonly= "true" class="form-control"  value=""/>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				<script type="text/template" id="cableTwoHundredFortyTpl">//<!--
+				<tr id="cableTwoHundredFortyList[{{idx}}]">
+						<td class="hide">
+							<input id="cableTwoHundredFortyList{{idx}}_id" name="cableTwoHundredFortyList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+							<input id="cableTwoHundredFortyList{{idx}}_delFlag" name="cableTwoHundredFortyList[{{idx}}].delFlag" type="hidden" value="0"/>
+						</td>
+
+						<td  class="max-width-250">
+						<input type='text' id="cableTwoHundredFortyList[{{idx}}]_destination" name="cableTwoHundredFortyList[{{idx}}].destination" class="form-control"  value="{{row.destination}}"/>
+						</td>
+
+						<td  class="max-width-250">
+							<input type='text' id="cableTwoHundredFortyList[{{idx}}]_pathLength" name="cableTwoHundredFortyList[{{idx}}].pathLength" class="form-control" onchange="cableJiSuan(this,'cableTwoHundredFortyList[{{idx}}]','cableTwoHundredFortyList',cableTwoHundredFortyRowIdx)"  value="{{row.pathLength}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableTwoHundredFortyList[{{idx}}]_upperRod" name="cableTwoHundredFortyList[{{idx}}].upperRod" class="form-control" onchange="cableJiSuan(this,'cableTwoHundredFortyList[{{idx}}]','cableTwoHundredFortyList',cableTwoHundredFortyRowIdx)"  value="{{row.upperRod}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableTwoHundredFortyList[{{idx}}]_arrival" name="cableTwoHundredFortyList[{{idx}}].arrival" class="form-control" onchange="cableJiSuan(this,'cableTwoHundredFortyList[{{idx}}]','cableTwoHundredFortyList',cableTwoHundredFortyRowIdx)"  value="{{row.arrival}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableTwoHundredFortyList[{{idx}}]_incomingEquipment" name="cableTwoHundredFortyList[{{idx}}].incomingEquipment" onchange="cableJiSuan(this,'cableTwoHundredFortyList[{{idx}}]','cableTwoHundredFortyList',cableTwoHundredFortyRowIdx)" class="form-control"  value="{{row.incomingEquipment}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableTwoHundredFortyList[{{idx}}]_coefficient"  name="cableTwoHundredFortyList[{{idx}}].coefficient" readonly= "true" class="form-control"  value="${cableFactor}"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableTwoHundredFortyList[{{idx}}]_electricalChief"  name="cableTwoHundredFortyList[{{idx}}].electricalChief" readonly= "true" class="form-control"  value="{{row.electricalChief}}"/>
+						</td>
+						<td class="text-center" width="10">
+							{{#delBtn}}<span class="close" onclick="delRow(this, '#cableTwoHundredFortyList{{idx}}','cableTwoHundredFortyList','cableTwoHundredFortyRowIdx')" title="删除">&times;</span>{{/delBtn}}
+						</td>
+					</tr>//-->
+				</script>
+				<script type="text/javascript">
+					var cableTwoHundredFortyRowIdx = 0, cableTwoHundredFortyTpl = $("#cableTwoHundredFortyTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+					$(document).ready(function() {
+						var data = ${fns:toJson(cableTwoHundredFortyList)};
+						for (var i=0; i<data.length; i++){
+							console.log(data[i])
+							addRow('#cableTwoHundredFortyList', cableTwoHundredFortyRowIdx, cableTwoHundredFortyTpl, data[i]);
+							cableTwoHundredFortyRowIdx = cableTwoHundredFortyRowIdx + 1;
+						}
+					});
+				</script>
+				</div>
+			</div>
+		</div>
+			<div class="tabs-container hide" id="cableHundredAndTwenty">
+				<div class="tab-content">
+					<div id="tab-4" class="tab-pane fade in  active">
+					<a class="btn btn-white btn-sm" onclick="addRow('#cableHundredAndTwentyList', cableHundredAndTwentyRowIdx, cableHundredAndTwentyTpl);cableHundredAndTwentyRowIdx = cableHundredAndTwentyRowIdx + 1;" title="新增">	<i class="glyphicon glyphicon-plus"></i> 新建</a>
+					<table class="table table-striped table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th class="hide"></th>
+							<th>起讫点</th>
+							<th>路径长(m)</th>
+							<th>上杆(m)</th>
+							<th>进站(m)</th>
+							<th>进设备(m)</th>
+							<th>系数</th>
+							<th>电气长(m)</th>
+							<th width="10">&nbsp;</th>
+						</tr>
+					</thead>
+					<tbody id="cableHundredAndTwentyList">
+						<tr>
+							<td colspan="6">总长(km):</td>
+							<td width="200px">
+								<input type='text' id="cableHundredAndTwentyListTotal"  name="cableHundredAndTwentyListTotal" readonly= "true" class="form-control"  value=""/>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				<script type="text/template" id="cableHundredAndTwentyTpl">//<!--
+				<tr id="cableHundredAndTwentyList[{{idx}}]">
+						<td class="hide">
+							<input id="cableHundredAndTwentyList{{idx}}_id" name="cableHundredAndTwentyList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+							<input id="cableHundredAndTwentyList{{idx}}_delFlag" name="cableHundredAndTwentyList[{{idx}}].delFlag" type="hidden" value="0"/>
+						</td>
+
+						<td  class="max-width-250">
+						<input type='text' id="cableHundredAndTwentyList[{{idx}}]_destination" name="cableHundredAndTwentyList[{{idx}}].destination" class="form-control"  value="{{row.destination}}"/>
+						</td>
+
+						<td  class="max-width-250">
+							<input type='text' id="cableHundredAndTwentyList[{{idx}}]_pathLength" name="cableHundredAndTwentyList[{{idx}}].pathLength" class="form-control" onchange="cableJiSuan(this,'cableHundredAndTwentyList[{{idx}}]','cableHundredAndTwentyList',cableHundredAndTwentyRowIdx)"  value="{{row.pathLength}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableHundredAndTwentyList[{{idx}}]_upperRod" name="cableHundredAndTwentyList[{{idx}}].upperRod" class="form-control" onchange="cableJiSuan(this,'cableHundredAndTwentyList[{{idx}}]','cableHundredAndTwentyList',cableHundredAndTwentyRowIdx)"  value="{{row.upperRod}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableHundredAndTwentyList[{{idx}}]_arrival" name="cableHundredAndTwentyList[{{idx}}].arrival" class="form-control" onchange="cableJiSuan(this,'cableHundredAndTwentyList[{{idx}}]','cableHundredAndTwentyList',cableHundredAndTwentyRowIdx)"  value="{{row.arrival}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableHundredAndTwentyList[{{idx}}]_incomingEquipment" name="cableHundredAndTwentyList[{{idx}}].incomingEquipment" onchange="cableJiSuan(this,'cableHundredAndTwentyList[{{idx}}]','cableHundredAndTwentyList',cableHundredAndTwentyRowIdx)" class="form-control"  value="{{row.incomingEquipment}}" onkeyup="this.value=this.value.replace(/^(\d*\.?\d{0,2}).*/,'$1')" maxlength="10"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableHundredAndTwentyList[{{idx}}]_coefficient"  name="cableHundredAndTwentyList[{{idx}}].coefficient" readonly= "true" class="form-control"  value="${cableFactor}"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableHundredAndTwentyList[{{idx}}]_electricalChief"  name="cableHundredAndTwentyList[{{idx}}].electricalChief" readonly= "true" class="form-control"  value="{{row.electricalChief}}"/>
+						</td>
+						<td class="text-center" width="10">
+							{{#delBtn}}<span class="close" onclick="delRow(this, '#cableHundredAndTwentyList{{idx}}','cableHundredAndTwentyList','cableHundredAndTwentyRowIdx')" title="删除">&times;</span>{{/delBtn}}
+						</td>
+					</tr>//-->
+				</script>
+				<script type="text/javascript">
+					var cableHundredAndTwentyRowIdx = 0, cableHundredAndTwentyTpl = $("#cableHundredAndTwentyTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+					$(document).ready(function() {
+						var data = ${fns:toJson(cableHundredAndTwentyList)};
+						for (var i=0; i<data.length; i++){
+							console.log(data[i])
+							addRow('#cableHundredAndTwentyList', cableHundredAndTwentyRowIdx, cableHundredAndTwentyTpl, data[i]);
+							cableHundredAndTwentyRowIdx = cableHundredAndTwentyRowIdx + 1;
+						}
+					});
+				</script>
+				</div>
+			</div>
+		</div>
+			<div class="tabs-container hide" id="cableSeventy">
+				<div class="tab-content">
+					<div id="tab-5" class="tab-pane fade in  active">
+					<a class="btn btn-white btn-sm" onclick="addRow('#cableSeventyList', cableSeventyRowIdx, cableSeventyTpl);cableSeventyRowIdx = cableSeventyRowIdx + 1;" title="新增">	<i class="glyphicon glyphicon-plus"></i> 新建</a>
+					<table class="table table-striped table-bordered table-condensed">
+					<thead>
+						<tr>
+							<th class="hide"></th>
+							<th>起讫点</th>
+							<th>路径长(m)</th>
+							<th>上杆(m)</th>
+							<th>进站(m)</th>
+							<th>进设备(m)</th>
+							<th>系数</th>
+							<th>电气长(m)</th>
+							<th width="10">&nbsp;</th>
+						</tr>
+					</thead>
+					<tbody id="cableSeventyList">
+						<tr>
+							<td colspan="6">总长(km):</td>
+							<td width="200px">
+								<input type='text' id="cableSeventyListTotal"  name="cableSeventyListTotal" readonly= "true" class="form-control"  value=""/>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				<script type="text/template" id="cableSeventyTpl">//<!--
+				<tr id="cableSeventyList[{{idx}}]">
+						<td class="hide">
+							<input id="cableSeventyList{{idx}}_id" name="cableSeventyList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+							<input id="cableSeventyList{{idx}}_delFlag" name="cableSeventyList[{{idx}}].delFlag" type="hidden" value="0"/>
+						</td>
+
+						<td  class="max-width-250">
+						<input type='text' id="cableSeventyList[{{idx}}]_destination" name="cableSeventyList[{{idx}}].destination" class="form-control"  value="{{row.destination}}"/>
+						</td>
+
+						<td  class="max-width-250">
+							<input type='text' id="cableSeventyList[{{idx}}]_pathLength" name="cableSeventyList[{{idx}}].pathLength" class="form-control" onchange="cableJiSuan(this,'cableSeventyList[{{idx}}]','cableSeventyList',cableSeventyRowIdx)"  value="{{row.pathLength}}"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableSeventyList[{{idx}}]_upperRod" name="cableSeventyList[{{idx}}].upperRod" class="form-control" onchange="cableJiSuan(this,'cableSeventyList[{{idx}}]','cableSeventyList',cableSeventyRowIdx)"  value="{{row.upperRod}}"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableSeventyList[{{idx}}]_arrival" name="cableSeventyList[{{idx}}].arrival" class="form-control" onchange="cableJiSuan(this,'cableSeventyList[{{idx}}]','cableSeventyList',cableSeventyRowIdx)"  value="{{row.arrival}}"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableSeventyList[{{idx}}]_incomingEquipment" name="cableSeventyList[{{idx}}].incomingEquipment" onchange="cableJiSuan(this,'cableSeventyList[{{idx}}]','cableSeventyList',cableSeventyRowIdx)" class="form-control"  value="{{row.incomingEquipment}}"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableSeventyList[{{idx}}]_coefficient"  name="cableSeventyList[{{idx}}].coefficient" readonly= "true" class="form-control"  value="${cableFactor}"/>
+						</td>
+						<td class="max-width-250">
+							<input type='text' id="cableSeventyList[{{idx}}]_electricalChief"  name="cableSeventyList[{{idx}}].electricalChief" readonly= "true" class="form-control"  value="{{row.electricalChief}}"/>
+						</td>
+						<td class="text-center" width="10">
+							{{#delBtn}}<span class="close" onclick="delRow(this, '#cableSeventyList{{idx}}','cableSeventyList','cableSeventyRowIdx')" title="删除">&times;</span>{{/delBtn}}
+						</td>
+					</tr>//-->
+				</script>
+				<script type="text/javascript">
+					var cableSeventyRowIdx = 0, cableSeventyTpl = $("#cableSeventyTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+					$(document).ready(function() {
+						var data = ${fns:toJson(cableSeventyList)};
+						for (var i=0; i<data.length; i++){
+							console.log(data[i])
+							addRow('#cableSeventyList', cableSeventyRowIdx, cableSeventyTpl, data[i]);
+							cableSeventyRowIdx = cableSeventyRowIdx + 1;
+						}
+					});
+				</script>
+				</div>
+			</div>
+		</div>
+		</form:form>
+</body>
+</html>

+ 21 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/raiseCapital/raiseCapital.js

@@ -436,6 +436,20 @@ function aerialConductor(){
 
 }
 
+function aerialConductor2(){
+    var item = "";
+    $('input[name="need"]').each(function(){
+        var val = $(this).val();
+        if (val!=null&&val!=""&&val>0) {
+            item += $(this).attr("id")+":"+val+";"
+        }
+    })
+    var pickUuid = $("#pickUuid").val();
+    console.log(pickUuid);
+    jp.openSaveDialog('架空导线计算表', "${ctx}/cg/reservemanagementcenter/summaryStatistics/aerialConductorForm2?uuid="+pickUuid+"&item="+item, '800px', '500px');
+
+}
+
 function cableSection(){
     var pickUuid = $("#pickUuid").val();
     var projectReserveId = $("#projectReserveId").val();
@@ -443,5 +457,12 @@ function cableSection(){
     jp.openSaveDialog('新增领料信息', "${ctx}/cg/reservemanagementcenter/summaryStatistics/cableSectionForm?uuid="+pickUuid+"&projectReserveId="+projectReserveId, '80%', '80%');
 }
 
+function cableSection2(){
+    var pickUuid = $("#pickUuid").val();
+    var projectReserveId = $("#projectReserveId").val();
+    console.log(pickUuid);
+    jp.openSaveDialog('新增领料信息', "${ctx}/cg/reservemanagementcenter/summaryStatistics/cableSectionForm2?uuid="+pickUuid+"&projectReserveId="+projectReserveId, '80%', '80%');
+}
+
 
 </script>

+ 182 - 0
src/main/webapp/webpage/modules/cg/reservemanagementcenter/raiseCapital/raiseCapital2.jsp

@@ -0,0 +1,182 @@
+<%@ 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="raiseCapital.js" %>
+	<script>
+		function testSay() {
+			var uuid = $("#uid").val();
+			let projectName = this.$("#projectName").val();
+			let projectReserveId = this.$("#projectReserveId").val();
+			console.log('projectName', projectName)
+			jp.post("${ctx}/raiseCapitalDesign/disposeFormCableDataList3",
+					{
+						"projectReserveId":projectReserveId
+					},
+					function (data) {
+						console.log('data', data)
+						if(data.success){
+							for (var i = 0; i < data.data.length; i++) {
+								$("#"+data.data[i].id).val(data.data[i].number)
+								console.log('val',$("#"+data.data[i].id).val())
+							}
+						}
+					})
+		}
+		function testSay2() {
+			var uuid = $("#uid").val();
+			console.log('uuid', uuid)
+			let projectName = this.$("#projectName").val();
+			console.log('projectName', projectName)
+			jp.post("${ctx}/raiseCapitalDesign/disposeFormDataOnList2",
+					{
+						"uuid":uuid
+					},
+					function (data) {
+						console.log('data', data)
+						if(data.success){
+							for (var i = 0; i < data.data.length; i++) {
+								$("#"+data.data[i].id).val(data.data[i].number)
+								console.log('val',$("#"+data.data[i].id).val())
+							}
+						}
+					})
+		}
+	</script>
+	<style type="text/css">
+		#div1{
+			margin-top: 10px;
+		}
+		.well-class-body{
+			width: 150px;
+			word-wrap: break-word;
+			word-break: break-all;
+			/*text-align: right;*/
+			margin: 2px;
+		}
+		.list-lig-one{
+			color: #0C0C0C;
+			/*text-align: center;*/
+			font-size: 17px;
+			background-color: whitesmoke;
+		}
+		.list-lig-two{
+			/*background-color: #6495ED;*/
+			color: #333333;
+			font-size: 14px;
+		}
+	</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">
+			<input type="hidden" id="pickUuid" name="pickUuid" value="${pickUuid}">
+			<input type="hidden" id="uid" name="pickUuid" value="${uid}">
+			<input type="hidden" id="test" name="pickUuid" onclick="testSay()">
+			<input type="hidden" id="test2" name="pickUuid" onclick="testSay2()">
+			<div>
+				<ul class="nav nav-tabs">
+					<li role="presentation" id="click1" style="border-bottom: 0px;border-left: 1px solid rgb(221,221,221);border-right: 1px solid rgb(221,221,221);border-top: 1px solid rgb(221,221,221)"><a id="dq" href="javascript:void(0)">填写需要材料</a></li>
+					<li role="presentation" id="click2" ><a id="qd" href="javascript:void(0)">查看领料清单</a></li>
+				</ul>
+			</div>
+			<!-- 表格 -->
+			<div id="div1">
+				<input type="hidden" id="projectName" value="${projectName}">
+				<input type="hidden" id="projectReserveId" value="${projectReserveId}">
+				<div>
+					<button id="aerialConductor2" class="btn btn-primary" onclick="aerialConductor2()">
+						架空导线
+					</button>
+					<button id="cableSection2" class="btn btn-primary" onclick="cableSection2()">
+						电缆分段
+					</button>
+				</div>
+				<table class="table table-view">
+					<tbody>
+					<c:forEach items="${pickListList}" var="items" varStatus="status">
+						<c:if test="${status.count eq 1 || (status.count-1) % 1 eq 0}">
+							<tr>
+						</c:if>
+						<td colspan="4" class="list-lig-one">${items.name}</td>
+						<c:if test="${status.count % 1 eq 0 || status.count eq 1}">
+							</tr>
+						</c:if>
+
+						<c:forEach items="${items.mdTheClassList}" var="items" varStatus="status">
+							<c:if test="${status.count eq 1 || (status.count-1) % 1 eq 0}">
+								<tr>
+							</c:if>
+							<td colspan="4" class="list-lig-two">${items.name}</td>
+							<c:if test="${status.count % 1 eq 0 || status.count eq 1}">
+								</tr>
+							</c:if>
+
+							<c:forEach items="${items.mdSmallClassList}" var="itemss" varStatus="status">
+								<c:if test="${status.count eq 1 || (status.count-1) % 4 eq 0}">
+									<tr>
+								</c:if>
+								<td style="text-align: center;vertical-align: middle">
+									<div class="well-class-body" style="float: left;">
+										<a href="javascript:jp.openViewDialog('模块清单','${ctx}/managementcenter/moduleacquisition/moduleListing/list?blockId=${itemss.id}', '800px', '500px');">
+												${itemss.name}
+										</a>
+									</div>
+									<div style="float: left;margin-left: 5px;margin: auto">
+										<input style="width:70px;" placeholder="0" type="number" min="0" name="need" id="${itemss.id}"/><span>&nbsp;${itemss.mdUnit}</span>
+											<%--                                 <span><img onclick="jp.showPic('${itemss.mdImg}')" src="${itemss.mdImg}" height="50px"></span>--%>
+										<c:if test="${not empty itemss.mdImg}">
+											<a id="imgButton" class="btn btn-success btn-xs waves-effect m-r-5" href="javascript:jp.openViewDialog('查看附件','${ctx}/picking/activiti/pickPic?id=${itemss.id}', '800px', '500px')">显示附件</a>
+										</c:if>
+									</div>
+								</td>
+								<c:if test="${status.count % 4 eq 0 || status.count eq 4}">
+									</tr>
+								</c:if>
+							</c:forEach>
+
+						</c:forEach>
+					</c:forEach>
+					</tbody>
+				</table>
+			</div>
+			<%--         //领料--%>
+			<div id="div2" style="display: none">
+				<!-- 工具栏 -->
+				<div style="margin-top: 10px;">
+					<button id="add" class="btn btn-primary" onclick="add()">
+						<i class="glyphicon glyphicon-plus"></i> 新建
+					</button>
+					<button id="remove" class="btn btn-danger" disabled onclick="deleteAll()">
+						<i class="glyphicon glyphicon-remove"></i> 删除
+					</button>
+				</div>
+				<table id="informationTable"   data-toolbar="#toolbar" class="table"></table>
+				<%--<div class="row">
+                   <div class="col-sm-3"></div>
+                   <div class="col-sm-6">
+                      <div class="form-group text-center">
+                         <input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="submit" value="导出文档" />&nbsp;
+                      </div>
+                   </div>
+                </div>--%>
+			</div>
+			<%--         //模块清单
+                     <div id="div3" style="display: none">
+                        <table id="informationTable2"   data-toolbar="#toolbar" class="table"></table>
+                     </div>--%>
+
+		</div>
+
+	</div>
+</div>
+</body>
+</html>

+ 1 - 1
src/main/webapp/webpage/modules/cg/reservemanagementcenter/reserveManage/summaryStatistics/designUnit.jsp

@@ -174,10 +174,10 @@
 							if(data.success){
 								jp.success(data.msg);
 								jp.close(index);
+								document.getElementById("drjgc").value = "cs"
 							}else{
 								jp.error(data.msg);
 							}
-							document.getElementById("drjgc").value = "cs"
 						});//调用保存事件
 						return false;
 					},