Kaynağa Gözat

储备流程所有页面,项目进度显示管理,物料规范基础库管理

lem 4 yıl önce
ebeveyn
işleme
e6e51394e6
49 değiştirilmiş dosya ile 8604 ekleme ve 3 silme
  1. 9 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/utils/MyActiviUtils.java
  2. 8 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/materialinfo/web/MaterialInfoController.java
  3. 9 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/mapper/ProjectMapper.java
  4. 5 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/mapper/xml/ProjectMapper.xml
  5. 9 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/service/ProjectService.java
  6. 112 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/entity/PersonnelTurnover.java
  7. 105 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/entity/ProgressSchedule.java
  8. 323 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/entity/ReserveProcess.java
  9. 258 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/entity/ScaleDetails.java
  10. 64 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/entity/Standard.java
  11. 34 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/PersonnelTurnoverMapper.java
  12. 25 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/ProgressScheduleMapper.java
  13. 69 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/ReserveProcessMapper.java
  14. 16 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/ScaleDetailsMapper.java
  15. 48 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/StandardMapper.java
  16. 143 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/xml/PersonnelTurnoverMapper.xml
  17. 169 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/xml/ProgressScheduleMapper.xml
  18. 327 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/xml/ReserveProcessMapper.xml
  19. 89 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/xml/ScaleDetailsMapper.xml
  20. 183 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/xml/StandardMapper.xml
  21. 140 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/PersonnelTurnoverService.java
  22. 74 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/ProgressScheduleService.java
  23. 72 3
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/ReserveManagementService.java
  24. 336 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/ReserveProcessService.java
  25. 74 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/ScaleDetailsService.java
  26. 131 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/StandardService.java
  27. 270 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/web/PersonnelTurnoverController.java
  28. 116 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/web/ProgressScheduleController.java
  29. 471 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/web/ReserveProcessController.java
  30. 209 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/web/ScaleDetailsController.java
  31. 224 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/web/StandardController.java
  32. 246 0
      src/main/webapp/webpage/modules/sg/managementcenter/materialinfo/importProcess.jsp
  33. 230 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/allUploadList.js
  34. 57 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/allUploadList.jsp
  35. 549 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/designUnit.jsp
  36. 224 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/drawingReview.js
  37. 482 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/drawingReview.jsp
  38. 216 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/economicPersonnel.js
  39. 615 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/economicPersonnel.jsp
  40. 216 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/operationUnit.js
  41. 579 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/operationUnit.jsp
  42. 84 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/personnelTurnoverForm.jsp
  43. 253 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/personnelTurnoverList.js
  44. 74 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/personnelTurnoverList.jsp
  45. 125 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/progressScheduleList.js
  46. 57 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/progressScheduleList.jsp
  47. 135 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/standardForm.jsp
  48. 248 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/standardList.js
  49. 92 0
      src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/standardList.jsp

+ 9 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/utils/MyActiviUtils.java

@@ -8,6 +8,7 @@ import com.jeeplus.modules.sg.managementcenter.activiti.mapper.ConstructionMappe
 import com.jeeplus.modules.sg.managementcenter.activiti.service.ConstructionService;
 import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
 import com.jeeplus.modules.sg.managementcenter.project.service.ProjectService;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.PersonnelTurnover;
 import com.jeeplus.modules.sg.picking.activiti.entity.ShowList;
 import com.jeeplus.modules.sg.picking.activiti.service.ShowListService;
 import com.jeeplus.modules.sys.entity.DictValue;
@@ -270,6 +271,14 @@ public class MyActiviUtils {
     }
 
     /**
+     * 通过流程定实例id查询储备人员信息
+     * */
+    public static PersonnelTurnover findCbUser(String procInsId) {
+        PersonnelTurnover user = projectService.findCbUser(procInsId);
+        return user;
+    }
+
+    /**
      * 通过流程定义号查询项目的流转人员信息-转资流程
      * */
     public static Project findFundUser(String procInsId) {

+ 8 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/materialinfo/web/MaterialInfoController.java

@@ -213,6 +213,14 @@ public class MaterialInfoController extends BaseController {
 		return "modules/sg/managementcenter/materialinfo/importmore";
 	}
 
+
+	@RequestMapping(value = "/importMore/Process")
+	public String importProcess(Model model){
+		List<MaterialProject> list = materialProjectService.findBatch();
+		model.addAttribute("batch",list);
+		return "modules/sg/managementcenter/materialinfo/importProcess";
+	}
+
 	/**
 	 * 导出excel文件
 	 */

+ 9 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/project/mapper/ProjectMapper.java

@@ -9,6 +9,7 @@ import com.jeeplus.modules.sg.managementcenter.activiti.entity.Construction;
 import com.jeeplus.modules.sg.managementcenter.activiti.entity.Quantity;
 import com.jeeplus.modules.sg.managementcenter.materialinfo.entity.MaterialInfo;
 import com.jeeplus.modules.sg.managementcenter.project.entity.*;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.PersonnelTurnover;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -342,6 +343,14 @@ public interface ProjectMapper extends BaseMapper<Project> {
      * */
     Project findUser(String procInsId);
 
+
+    /**
+     * 通过流程定实例id查询储备人员信息
+     * @return 人员流转信息
+     * @param procInsId 流程实例id
+     * */
+    PersonnelTurnover findCbUser(String procInsId);
+
     /**
      * 通过流程定义id查询项目流转人员信息-土建流程
      * @return 人员流转信息

+ 5 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/project/mapper/xml/ProjectMapper.xml

@@ -2091,4 +2091,9 @@
             </if>
         </where>
     </select>
+    <select id="findCbUser" resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.PersonnelTurnover">
+        select *
+        from cb_personnel_turnover
+        where projectReserveId = (select projectReserveId from cb_personnel_activiti where proc_ins_id = #{procInsId})
+    </select>
 </mapper>

+ 9 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/project/service/ProjectService.java

@@ -10,6 +10,7 @@ import com.jeeplus.modules.sg.managementcenter.activiti.entity.Quantity;
 import com.jeeplus.modules.sg.managementcenter.materialinfo.entity.MaterialInfo;
 import com.jeeplus.modules.sg.managementcenter.project.entity.*;
 import com.jeeplus.modules.sg.managementcenter.project.mapper.ProjectMapper;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.PersonnelTurnover;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -377,6 +378,14 @@ public class ProjectService extends CrudService<ProjectMapper, Project> {
     }
 
     /**
+     * 通过流程定实例id查询储备人员信息
+     */
+    public PersonnelTurnover findCbUser(String procInsId) {
+        return projectMapper.findCbUser(procInsId);
+    }
+
+
+    /**
      * 通过流程定义id查询项目流转人员信息-土建流程
      */
     public Project findTJUser(String procInsId) {

+ 112 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/entity/PersonnelTurnover.java

@@ -0,0 +1,112 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.entity;
+
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+/**
+ * 储备项目,人员流转填写实体类
+ */
+public class PersonnelTurnover extends DataEntity<PersonnelTurnover> {
+
+    //储备项目编号
+    private String projectReserveId;
+    //项目名称
+    private String projectName;
+    //设计单位人员
+    private String designUnit;
+    //项目经理审图
+    private String projectManager;
+    //技经人员审概算
+    private String economicPersonnel;
+    //运行单位审图
+    private String operationUnit;
+    //开启流程状态 0-未开启 1-开启
+    private String openProcessStatus;
+    //添加入库状态 0-入库前 1-已入库 2-入库退回 3-入库退回再入库
+    private String addWareHousing;
+    //项目甲供材清册状态
+    private String materialsStatus;
+
+
+    @ExcelField(title = "储备项目编号", align = 2, sort = 1)
+    public String getProjectReserveId() {
+        return projectReserveId;
+    }
+
+    public void setProjectReserveId(String projectReserveId) {
+        this.projectReserveId = projectReserveId;
+    }
+
+    @ExcelField(title = "项目名称", align = 2, sort = 2)
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    @ExcelField(title = "设计单位人员", align = 2, sort = 3)
+    public String getDesignUnit() {
+        return designUnit;
+    }
+
+    public void setDesignUnit(String designUnit) {
+        this.designUnit = designUnit;
+    }
+
+    @ExcelField(title = "项目经理审图", align = 2, sort = 4)
+    public String getProjectManager() {
+        return projectManager;
+    }
+
+    public void setProjectManager(String projectManager) {
+        this.projectManager = projectManager;
+    }
+
+    @ExcelField(title = "技经人员审概算", align = 2, sort = 5)
+    public String getEconomicPersonnel() {
+        return economicPersonnel;
+    }
+
+    public void setEconomicPersonnel(String economicPersonnel) {
+        this.economicPersonnel = economicPersonnel;
+    }
+
+    @ExcelField(title = "运行单位审图", align = 2, sort = 6)
+    public String getOperationUnit() {
+        return operationUnit;
+    }
+
+    public void setOperationUnit(String operationUnit) {
+        this.operationUnit = operationUnit;
+    }
+
+
+    public String getOpenProcessStatus() {
+        return openProcessStatus;
+    }
+
+    public void setOpenProcessStatus(String openProcessStatus) {
+        this.openProcessStatus = openProcessStatus;
+    }
+
+
+    public String getAddWareHousing() {
+        return addWareHousing;
+    }
+
+    public void setAddWareHousing(String addWareHousing) {
+        this.addWareHousing = addWareHousing;
+    }
+
+
+    public String getMaterialsStatus() {
+        return materialsStatus;
+    }
+
+    public void setMaterialsStatus(String materialsStatus) {
+        this.materialsStatus = materialsStatus;
+    }
+
+}

+ 105 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/entity/ProgressSchedule.java

@@ -0,0 +1,105 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.entity;
+
+import com.jeeplus.core.persistence.DataEntity;
+
+/**
+ * 储备项目进度表实体类
+ * */
+public class ProgressSchedule extends DataEntity<ProgressSchedule> {
+    /**
+     * 储备项目名称
+     * */
+    private String projectName;
+    /**
+     * 储备项目编码
+     * */
+    private String projectReserveId;
+    /**
+     * 储备项目基本信息(完成时间)
+     * */
+    private String projectBasic;
+    /**
+     * 方案交底结论(完成时间)
+     * */
+    private String conclusionDisclosure;
+    /**
+     * 设计单位上传(完成时间)
+     * */
+    private String designUpload;
+    /**
+     * 项目经理审图(完成时间)
+     * */
+    private String drawingReview;
+    /**
+     * 技经人员审概算(完成时间)
+     * */
+    private String estimate;
+    /**
+     * 联合审图(完成时间)
+     * */
+    private String jointDrawing;
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getProjectReserveId() {
+        return projectReserveId;
+    }
+
+    public void setProjectReserveId(String projectReserveId) {
+        this.projectReserveId = projectReserveId;
+    }
+
+    public String getProjectBasic() {
+        return projectBasic;
+    }
+
+    public void setProjectBasic(String projectBasic) {
+        this.projectBasic = projectBasic;
+    }
+
+    public String getConclusionDisclosure() {
+        return conclusionDisclosure;
+    }
+
+    public void setConclusionDisclosure(String conclusionDisclosure) {
+        this.conclusionDisclosure = conclusionDisclosure;
+    }
+
+    public String getDesignUpload() {
+        return designUpload;
+    }
+
+    public void setDesignUpload(String designUpload) {
+        this.designUpload = designUpload;
+    }
+
+    public String getDrawingReview() {
+        return drawingReview;
+    }
+
+    public void setDrawingReview(String drawingReview) {
+        this.drawingReview = drawingReview;
+    }
+
+    public String getEstimate() {
+        return estimate;
+    }
+
+    public void setEstimate(String estimate) {
+        this.estimate = estimate;
+    }
+
+    public String getJointDrawing() {
+        return jointDrawing;
+    }
+
+    public void setJointDrawing(String jointDrawing) {
+        this.jointDrawing = jointDrawing;
+    }
+}

+ 323 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/entity/ReserveProcess.java

@@ -0,0 +1,323 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.entity;
+
+import com.jeeplus.core.persistence.ActEntity;
+
+/**
+ * 储备流程实体类
+ * */
+public class ReserveProcess extends ActEntity<ReserveProcess> {
+
+    /**
+     * 储备项目编号
+     * */
+    private String projectReserveId;
+
+    /**
+     * 项目名称
+     * */
+    private String projectName;
+    /**
+     * 储备项目基础数据
+     */
+    private ReserveManagement reserveManagement;
+    /**
+     * 预算书
+     * */
+    private String budgetStatement;
+    /**
+     * 项目建议书
+     * */
+    private String projectProposal;
+    /**
+     * 图纸
+     * */
+    private String drawings;
+    /**
+     * 甲供材清册
+     * */
+    private ScaleDetails scaleDetails;
+    /**
+     * 施工图设计说明书
+     * */
+    private String drawingSpecification;
+    /**
+     * 送审概算金额(含税)
+     * */
+    private String submittedApproval;
+    /**
+     * 施工费(含税)
+     * */
+    private String constructionCost;
+    /**
+     * 甲供物资金额(含税)
+     * */
+    private String amountFunds;
+    /**
+     * 其他费用(含税)
+     * */
+    private String otherExpenses;
+    /**
+     * 送审前期工程费(含税)
+     * */
+    private String preliminaryCost;
+    /**
+     * 送审勘察费(含税)
+     * */
+    private String investigationFee;
+    /**
+     * 送审设计费(含税)
+     * */
+    private String designFee;
+    /**
+     * 送审监理费(含税)
+     * */
+    private String supervisionFee;
+    /**
+     * 审定概算金额(含税)
+     * */
+    private String examineIncluding;
+    /**
+     * 可抵扣税金
+     * */
+    private String deductibleTaxes;
+    /**
+     * 审定概算金额(除税)
+     * */
+    private String examineInExcluding;
+    /**
+     * 施工费(含税)
+     * */
+    private String constructionTax;
+    /**
+     * 甲供物资金额(含税)
+     * */
+    private String amountTax;
+    /**
+     * 其他费用(含税)
+     * */
+    private String otherTax;
+    /**
+     * 送审前期工程费(含税)
+     * */
+    private String preliminaryTax;
+    /**
+     * 送审勘察费(含税)
+     * */
+    private String investigationTax;
+    /**
+     * 送审设计费(含税)
+     * */
+    private String designTax;
+    /**
+     * 送审监理费(含税)
+     * */
+    private String supervisionTax;
+
+    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 ReserveManagement getReserveManagement() {
+        return reserveManagement;
+    }
+
+    public void setReserveManagement(ReserveManagement reserveManagement) {
+        this.reserveManagement = reserveManagement;
+    }
+
+    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 getSubmittedApproval() {
+        return submittedApproval;
+    }
+
+    public void setSubmittedApproval(String submittedApproval) {
+        this.submittedApproval = submittedApproval;
+    }
+
+    public String getConstructionCost() {
+        return constructionCost;
+    }
+
+    public void setConstructionCost(String constructionCost) {
+        this.constructionCost = constructionCost;
+    }
+
+    public String getAmountFunds() {
+        return amountFunds;
+    }
+
+    public void setAmountFunds(String amountFunds) {
+        this.amountFunds = amountFunds;
+    }
+
+    public String getOtherExpenses() {
+        return otherExpenses;
+    }
+
+    public void setOtherExpenses(String otherExpenses) {
+        this.otherExpenses = otherExpenses;
+    }
+
+    public String getPreliminaryCost() {
+        return preliminaryCost;
+    }
+
+    public void setPreliminaryCost(String preliminaryCost) {
+        this.preliminaryCost = preliminaryCost;
+    }
+
+    public String getInvestigationFee() {
+        return investigationFee;
+    }
+
+    public void setInvestigationFee(String investigationFee) {
+        this.investigationFee = investigationFee;
+    }
+
+    public String getDesignFee() {
+        return designFee;
+    }
+
+    public void setDesignFee(String designFee) {
+        this.designFee = designFee;
+    }
+
+    public String getSupervisionFee() {
+        return supervisionFee;
+    }
+
+    public void setSupervisionFee(String supervisionFee) {
+        this.supervisionFee = supervisionFee;
+    }
+
+    public String getExamineIncluding() {
+        return examineIncluding;
+    }
+
+    public void setExamineIncluding(String examineIncluding) {
+        this.examineIncluding = examineIncluding;
+    }
+
+    public String getDeductibleTaxes() {
+        return deductibleTaxes;
+    }
+
+    public void setDeductibleTaxes(String deductibleTaxes) {
+        this.deductibleTaxes = deductibleTaxes;
+    }
+
+    public String getExamineInExcluding() {
+        return examineInExcluding;
+    }
+
+    public void setExamineInExcluding(String examineInExcluding) {
+        this.examineInExcluding = examineInExcluding;
+    }
+
+    public String getConstructionTax() {
+        return constructionTax;
+    }
+
+    public void setConstructionTax(String constructionTax) {
+        this.constructionTax = constructionTax;
+    }
+
+    public String getAmountTax() {
+        return amountTax;
+    }
+
+    public void setAmountTax(String amountTax) {
+        this.amountTax = amountTax;
+    }
+
+    public String getOtherTax() {
+        return otherTax;
+    }
+
+    public void setOtherTax(String otherTax) {
+        this.otherTax = otherTax;
+    }
+
+    public String getPreliminaryTax() {
+        return preliminaryTax;
+    }
+
+    public void setPreliminaryTax(String preliminaryTax) {
+        this.preliminaryTax = preliminaryTax;
+    }
+
+    public String getInvestigationTax() {
+        return investigationTax;
+    }
+
+    public void setInvestigationTax(String investigationTax) {
+        this.investigationTax = investigationTax;
+    }
+
+    public String getDesignTax() {
+        return designTax;
+    }
+
+    public void setDesignTax(String designTax) {
+        this.designTax = designTax;
+    }
+
+    public String getSupervisionTax() {
+        return supervisionTax;
+    }
+
+    public void setSupervisionTax(String supervisionTax) {
+        this.supervisionTax = supervisionTax;
+    }
+}

+ 258 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/entity/ScaleDetails.java

@@ -0,0 +1,258 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.entity;
+
+import com.jeeplus.core.persistence.DataEntity;
+
+public class ScaleDetails extends DataEntity<ScaleDetails> {
+    /**
+     * 储备项目名称
+     * */
+    private String projectName;
+    /**
+     * 储备项目编码
+     * */
+    private String projectReserveId;
+    /**
+     * 开关柜
+     * */
+    private String switchCabinet;
+    /**
+     * 架空线路
+     * */
+    private String overheadLines;
+    /**
+     * 电力电缆
+     * */
+    private String powerCable;
+    /**
+     * 10千伏电缆分接箱
+     * */
+    private String cableBox;
+    /**
+     * 环网箱/室
+     * */
+    private String ringCare;
+    /**
+     * 开关站
+     * */
+    private String switchYard;
+    /**
+     * 柱上开关
+     * */
+    private String postSwitch;
+    /**
+     * 配电室kva
+     * */
+    private String distributionKva;
+    /**
+     * 配电室
+     * */
+    private String distribution;
+    /**
+     * 箱变kva
+     * */
+    private String boxTransformerKva;
+    /**
+     * 箱变
+     * */
+    private String boxTransformer;
+    /**
+     * 配电变压器kva
+     * */
+    private String disTransformerKva;
+    /**
+     * 配电变压器
+     * */
+    private String disTransformer;
+    /**
+     * 低压线路
+     * */
+    private String lowVoltageLine;
+    /**
+     * 低压电缆
+     * */
+    private String lowVoltageCable;
+    /**
+     * 低压电缆分接箱
+     * */
+    private String lowDistributionBox;
+    /**
+     * 低压配电箱(柜)
+     * */
+    private String lowBoxCabinet;
+    /**
+     * 配电自动化终端(DTU)
+     * */
+    private String distributionTerminal;
+    /**
+     * 电缆通道
+     * */
+    private String cableChannel;
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getProjectReserveId() {
+        return projectReserveId;
+    }
+
+    public void setProjectReserveId(String projectReserveId) {
+        this.projectReserveId = projectReserveId;
+    }
+
+    public String getSwitchCabinet() {
+        return switchCabinet;
+    }
+
+    public void setSwitchCabinet(String switchCabinet) {
+        this.switchCabinet = switchCabinet;
+    }
+
+    public String getOverheadLines() {
+        return overheadLines;
+    }
+
+    public void setOverheadLines(String overheadLines) {
+        this.overheadLines = overheadLines;
+    }
+
+    public String getPowerCable() {
+        return powerCable;
+    }
+
+    public void setPowerCable(String powerCable) {
+        this.powerCable = powerCable;
+    }
+
+    public String getCableBox() {
+        return cableBox;
+    }
+
+    public void setCableBox(String cableBox) {
+        this.cableBox = cableBox;
+    }
+
+    public String getRingCare() {
+        return ringCare;
+    }
+
+    public void setRingCare(String ringCare) {
+        this.ringCare = ringCare;
+    }
+
+    public String getSwitchYard() {
+        return switchYard;
+    }
+
+    public void setSwitchYard(String switchYard) {
+        this.switchYard = switchYard;
+    }
+
+    public String getPostSwitch() {
+        return postSwitch;
+    }
+
+    public void setPostSwitch(String postSwitch) {
+        this.postSwitch = postSwitch;
+    }
+
+    public String getDistributionKva() {
+        return distributionKva;
+    }
+
+    public void setDistributionKva(String distributionKva) {
+        this.distributionKva = distributionKva;
+    }
+
+    public String getDistribution() {
+        return distribution;
+    }
+
+    public void setDistribution(String distribution) {
+        this.distribution = distribution;
+    }
+
+    public String getBoxTransformerKva() {
+        return boxTransformerKva;
+    }
+
+    public void setBoxTransformerKva(String boxTransformerKva) {
+        this.boxTransformerKva = boxTransformerKva;
+    }
+
+    public String getBoxTransformer() {
+        return boxTransformer;
+    }
+
+    public void setBoxTransformer(String boxTransformer) {
+        this.boxTransformer = boxTransformer;
+    }
+
+    public String getDisTransformerKva() {
+        return disTransformerKva;
+    }
+
+    public void setDisTransformerKva(String disTransformerKva) {
+        this.disTransformerKva = disTransformerKva;
+    }
+
+    public String getDisTransformer() {
+        return disTransformer;
+    }
+
+    public void setDisTransformer(String disTransformer) {
+        this.disTransformer = disTransformer;
+    }
+
+    public String getLowVoltageLine() {
+        return lowVoltageLine;
+    }
+
+    public void setLowVoltageLine(String lowVoltageLine) {
+        this.lowVoltageLine = lowVoltageLine;
+    }
+
+    public String getLowVoltageCable() {
+        return lowVoltageCable;
+    }
+
+    public void setLowVoltageCable(String lowVoltageCable) {
+        this.lowVoltageCable = lowVoltageCable;
+    }
+
+    public String getLowDistributionBox() {
+        return lowDistributionBox;
+    }
+
+    public void setLowDistributionBox(String lowDistributionBox) {
+        this.lowDistributionBox = lowDistributionBox;
+    }
+
+    public String getLowBoxCabinet() {
+        return lowBoxCabinet;
+    }
+
+    public void setLowBoxCabinet(String lowBoxCabinet) {
+        this.lowBoxCabinet = lowBoxCabinet;
+    }
+
+    public String getDistributionTerminal() {
+        return distributionTerminal;
+    }
+
+    public void setDistributionTerminal(String distributionTerminal) {
+        this.distributionTerminal = distributionTerminal;
+    }
+
+    public String getCableChannel() {
+        return cableChannel;
+    }
+
+    public void setCableChannel(String cableChannel) {
+        this.cableChannel = cableChannel;
+    }
+}

+ 64 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/entity/Standard.java

@@ -0,0 +1,64 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.entity;
+
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.List;
+
+/**
+ * 储备项目物料基础数据
+ * */
+public class Standard extends DataEntity<Standard> {
+    /**
+     * 项目类别
+     * */
+    private String projectCategory;
+    /**
+     * 物料编码
+     * */
+    private String materialCode;
+    /**
+     * 物料描述
+     * */
+    private String materialDescription;
+
+    /**
+     * 字类数据
+     */
+    private List<Standard> childList;
+
+    @ExcelField(title = "物料类型", align = 2, sort = 1)
+    public String getProjectCategory() {
+        return projectCategory;
+    }
+
+    public void setProjectCategory(String projectCategory) {
+        this.projectCategory = projectCategory;
+    }
+
+    @ExcelField(title = "物料编码", align = 2, sort = 2)
+    public String getMaterialCode() {
+        return materialCode;
+    }
+
+    public void setMaterialCode(String materialCode) {
+        this.materialCode = materialCode;
+    }
+
+    @ExcelField(title = "物料描述", align = 2, sort = 3)
+    public String getMaterialDescription() {
+        return materialDescription;
+    }
+
+    public void setMaterialDescription(String materialDescription) {
+        this.materialDescription = materialDescription;
+    }
+
+    public List<Standard> getChildList() {
+        return childList;
+    }
+
+    public void setChildList(List<Standard> childList) {
+        this.childList = childList;
+    }
+}

+ 34 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/PersonnelTurnoverMapper.java

@@ -0,0 +1,34 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ExportScheme;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.PersonnelTurnover;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveManagement;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 人员流转 Mapper
+ */
+@MyBatisMapper
+public interface PersonnelTurnoverMapper extends BaseMapper<PersonnelTurnover> {
+    /**
+     * 通过储备项目编号查询人员流转信息
+     * */
+    PersonnelTurnover findByProjectId(PersonnelTurnover personnelTurnover);
+
+    /**
+     * 通过储备项目编号修改开启流程状态
+     */
+    void updateOpenStatus(@Param("projectReserveId") String projectReserveId,@Param("openProcessStatus")String openProcessStatus);
+
+    /**
+    * 通过储备项目编号清空人员流转信息
+    * */
+    void deletePerson(String projectReserveId);
+
+
+
+}

+ 25 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/ProgressScheduleMapper.java

@@ -0,0 +1,25 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ProgressSchedule;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 人员流转 Mapper
+ */
+@MyBatisMapper
+public interface ProgressScheduleMapper extends BaseMapper<ProgressSchedule> {
+
+    /**
+     * 更新流程对应节点的完成时间
+     */
+    void updateTimeNode(ProgressSchedule entity);
+
+    /**
+     * 通过储备项目编号查询项目流转时间
+     * */
+    ProgressSchedule findProjectReserveId(String projectReserveId);
+
+}

+ 69 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/ReserveProcessMapper.java

@@ -0,0 +1,69 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.managementcenter.materialinfo.entity.MaterialInfo;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 储备流程 Mapper
+ */
+@MyBatisMapper
+public interface ReserveProcessMapper extends BaseMapper<ReserveProcess> {
+    /**
+     * 通过procInsId查询项目定义号
+     * */
+    String findProjectId(ReserveProcess reserveProcess);
+
+    /**
+     * 通过流程定义号查询储备项目编码
+     */
+    String findByProcInsId(String procInsId);
+
+    /**
+     * 通过储备项目编号查询项目是否有甲供材清册
+     */
+    Integer findMaterialData(String procInsId);
+
+
+    /**
+     * 修改项目设计单位信息
+     * */
+    void updateDesign(ReserveProcess reserveProcess);
+
+    /**
+     * 插入对应的项目甲供材信息
+     * */
+    void insertList(@Param("list") List<MaterialInfo> list);
+
+    /**
+     * 通过项目名称删除对应甲供材信息数据
+     * */
+    void deleteMaterial(String projectName);
+
+
+    /**
+     * 储备流程文件管理
+     * */
+    List<ReserveProcess> findUploadList(ReserveProcess reserveProcess);
+
+    /**
+     * 储备文件管理,
+     */
+    List<ReserveProcess> findAllUpload(ReserveProcess reserveProcess);
+
+    /**
+     * 通过流程定义号删除流程对应信息
+     * */
+    void deleteAct(String projectReserveId);
+
+    /**
+     * 通过流程定义号修改项目的金额数据
+     */
+    void updateAmount(ReserveProcess reserveProcess);
+}

+ 16 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/ScaleDetailsMapper.java

@@ -0,0 +1,16 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ScaleDetails;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.Standard;
+
+import java.util.List;
+
+/**
+ * 人员流转 Mapper
+ */
+@MyBatisMapper
+public interface ScaleDetailsMapper extends BaseMapper<ScaleDetails> {
+
+}

+ 48 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/StandardMapper.java

@@ -0,0 +1,48 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.Standard;
+
+import java.util.List;
+
+/**
+ * 人员流转 Mapper
+ */
+@MyBatisMapper
+public interface StandardMapper extends BaseMapper<Standard> {
+    /**
+     * 查询所有项目建设规模详细列表
+     * */
+    List<Standard> findChildList(Standard standard);
+
+    /**
+     * 通过物料类别,物料编码查询项目是否存在
+     * */
+    Integer findByCodeCate(Standard standard);
+
+    /**
+     * 新增详细数据
+     * */
+    void insertChild(Standard standard);
+
+    /**
+     * 修改详细数据
+     **/
+    void updateChild(Standard standard);
+
+    /**
+     * 删除详细数据
+     * */
+    void deleteChild(Standard standard);
+
+    /**
+     * 删除
+     */
+    void deleteChildList(List<Standard> list);
+
+    /**
+     * 列表插入所有详细信息
+     * */
+    void insertChildList(List<Standard> list);
+}

+ 143 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/xml/PersonnelTurnoverMapper.xml

@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.PersonnelTurnoverMapper">
+
+    <sql id="personnelTurnoverColumns">
+        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.projectReserveId,
+        a.projectName,
+        b.designUnit,
+        b.projectManager,
+        b.economicPersonnel,
+        b.operationUnit,
+        b.openProcessStatus,
+        b.addWareHousing,
+        b.materialsStatus
+    </sql>
+
+    <sql id="personnelJoinColumns">
+        left join cb_personnel_turnover b on a.projectReserveId = b.projectReserveId
+    </sql>
+    <update id="deletePerson">
+        update
+        cb_personnel_turnover
+        set designUnit = '',
+            projectManager = '',
+            economicPersonnel = '',
+            operationUnit = ''
+        where projectReserveId = #{projectReserveId}
+    </update>
+
+    <select id="get" resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.PersonnelTurnover">
+        select
+        <include refid="personnelTurnoverColumns"/>
+        from cb_reserve_management a
+        <include refid="personnelJoinColumns"/>
+        where a.id = #{id}
+    </select>
+
+    <select id="findList"
+            resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.PersonnelTurnover">
+        select
+        <include refid="personnelTurnoverColumns"/>
+        from cb_reserve_management a
+        <include refid="personnelJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            <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="findByProjectId"
+            resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.PersonnelTurnover">
+        select id,
+               openProcessStatus,
+               addWareHousing,
+               materialsStatus,
+               projectReserveId,
+               designUnit,
+               projectManager,
+               economicPersonnel,
+               operationUnit
+        from cb_personnel_turnover
+        where projectReserveId = #{projectReserveId}
+    </select>
+
+
+    <insert id="insert">
+        insert into cb_personnel_turnover (id,
+                                           create_by,
+                                           create_date,
+                                           update_by,
+                                           update_date,
+                                           del_flag,
+                                           remarks,
+                                           projectReserveId,
+                                           designUnit,
+                                           projectManager,
+                                           economicPersonnel,
+                                           operationUnit,
+                                           openProcessStatus)
+        values (#{id},
+                #{createBy.id},
+                #{createDate},
+                #{updateBy.id},
+                #{updateDate},
+                #{delFlag},
+                #{remarks},
+                #{projectReserveId},
+                #{designUnit},
+                #{projectManager},
+                #{economicPersonnel},
+                #{operationUnit},
+                #{openProcessStatus})
+    </insert>
+
+
+    <update id="update">
+        update
+            cb_personnel_turnover
+        set update_by   = #{updateBy.id},
+            update_date = #{updateDate},
+            remarks     = #{remarks},
+            designUnit = #{designUnit},
+            projectManager = #{projectManager},
+            economicPersonnel = #{economicPersonnel},
+            operationUnit = #{operationUnit},
+            openProcessStatus = #{openProcessStatus}
+        where projectReserveId = #{projectReserveId}
+    </update>
+
+    <update id="delete">
+        delete
+        from cb_personnel_turnover
+        where id = #{id}
+    </update>
+    <update id="updateOpenStatus">
+        update cb_personnel_turnover set openProcessStatus =#{openProcessStatus}
+        where projectReserveId = #{projectReserveId}
+    </update>
+
+
+</mapper>

+ 169 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/xml/ProgressScheduleMapper.xml

@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.ProgressScheduleMapper">
+
+    <sql id="progressScheduleColumns">
+        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.projectReserveId,
+        a.projectName,
+        b.projectBasic,
+        b.conclusionDisclosure,
+        b.designUpload,
+        b.drawingReview,
+        b.estimate,
+        b.jointDrawing
+    </sql>
+
+    <sql id="personnelJoinColumns">
+        left join cb_progress_schedule b on a.projectReserveId = b.projectReserveId
+    </sql>
+
+
+    <select id="get" resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ProgressSchedule">
+        select
+        <include refid="progressScheduleColumns"/>
+        from cb_reserve_management a
+        <include refid="personnelJoinColumns"/>
+        where a.id = #{id}
+    </select>
+
+    <select id="findList"
+            resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ProgressSchedule">
+        select
+        <include refid="progressScheduleColumns"/>
+        from cb_reserve_management a
+        <include refid="personnelJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            <if test="projectReserveId!=null and projectReserveId!=''">
+                and a.projectReserveId = #{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="findProjectReserveId"
+            resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ProgressSchedule">
+        select id,
+               create_by,
+               create_date,
+               update_by,
+               update_date,
+               del_flag,
+               remarks,
+               projectName,
+               projectReserveId,
+               projectBasic,
+               conclusionDisclosure,
+               designUpload,
+               drawingReview,
+               estimate,
+               jointDrawing
+        from cb_progress_schedule
+        where projectReserveId = #{projectReserveId}
+    </select>
+
+
+    <insert id="insert">
+        insert into cb_progress_schedule (
+            id,
+            create_by,
+            create_date,
+            update_by,
+            update_date,
+            del_flag,
+            remarks,
+            projectName,
+            projectReserveId,
+            projectBasic,
+            conclusionDisclosure,
+            designUpload,
+            drawingReview,
+            estimate,
+            jointDrawing
+)
+        values (#{id},
+                #{createBy.id},
+                #{createDate},
+                #{updateBy.id},
+                #{updateDate},
+                #{delFlag},
+                #{remarks},
+                #{projectName},
+                #{projectReserveId},
+                #{projectBasic},
+                #{conclusionDisclosure},
+                #{designUpload},
+                #{drawingReview},
+                #{estimate},
+                #{jointDrawing}
+)
+    </insert>
+
+
+    <update id="update">
+        update
+            cb_progress_schedule
+        set update_by   = #{updateBy.id},
+            update_date = #{updateDate},
+            remarks     = #{remarks},
+            projectBasic = #{projectBasic},
+            conclusionDisclosure = #{conclusionDisclosure},
+            designUpload = #{designUpload},
+            drawingReview = #{drawingReview},
+            estimate = #{estimate},
+            jointDrawing = #{jointDrawing}
+        where projectReserveId = #{projectReserveId}
+    </update>
+
+    <update id="delete">
+        delete
+        from cb_progress_schedule
+        where id = #{id}
+    </update>
+    <update id="updateTimeNode">
+        update cb_progress_schedule
+        set
+        update_by   = #{updateBy.id},
+        update_date = #{updateDate}
+        <if test="projectBasic!=null and projectBasic!=''">
+            ,projectBasic = #{projectBasic}
+        </if>
+        <if test="conclusionDisclosure!=null and conclusionDisclosure!=''">
+            ,conclusionDisclosure = #{conclusionDisclosure}
+        </if>
+        <if test="designUpload!=null and designUpload!=''">
+            ,designUpload = #{designUpload}
+        </if>
+        <if test="drawingReview!=null and drawingReview!=''">
+            ,drawingReview = #{drawingReview}
+        </if>
+        <if test="estimate!=null and estimate!=''">
+            ,estimate = #{estimate}
+        </if>
+        <if test="jointDrawing!=null and jointDrawing!=''">
+            ,jointDrawing = #{jointDrawing}
+        </if>
+        where projectReserveId = #{projectReserveId}
+    </update>
+
+
+</mapper>

+ 327 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/xml/ReserveProcessMapper.xml

@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.ReserveProcessMapper">
+
+    <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.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+        a.projectReserveId,
+        a.projectName,
+        a.projectNature as 'reserveManagement.projectNature',
+        a.demandUnit as 'reserveManagement.demandUnit',
+        a.district as 'reserveManagement.district',
+        a.projectGroup as 'reserveManagement.projectGroup',
+        a.reserveBatches as 'reserveManagement.reserveBatches',
+        a.blockSupply as 'reserveManagement.blockSupply',
+        a.gridNumber as 'reserveManagement.gridNumber',
+        a.cellNumber as 'reserveManagement.cellNumber',
+        a.powerGridProjectId as 'reserveManagement.powerGridProjectId',
+        a.constructionNecessityAndContent as 'reserveManagement.constructionNecessityAndContent',
+        a.substationName as 'reserveManagement.substationName',
+        a.circuitName as 'reserveManagement.circuitName',
+        a.netRackProjectDivide as 'reserveManagement.netRackProjectDivide',
+        a.projectType as 'reserveManagement.projectType',
+        a.costEstimate as 'reserveManagement.costEstimate',
+        (case a.whetherWindwardProject when '1' then '是' when '0' then '否' else '取消' end)  as 'reserveManagement.whetherWindwardProject',
+        a.projectUrgencyDegree as 'reserveManagement.projectUrgencyDegree',
+        a.implementIssuedYear as 'reserveManagement.implementIssuedYear',
+        a.implementBatch as 'reserveManagement.implementBatch',
+        a.basicRemarks as 'reserveManagement.basicRemarks',
+        (case a.designCondition when '1' then '已完成' when '0' then '未完成' else '' end)  as 'reserveManagement.designCondition',
+        (case a.whetherPassReview when '1' then '已通过' when '0' then '未通过' else '' end)  as 'reserveManagement.whetherPassReview',
+        (case a.whetherNeedWiringDiagram when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.whetherNeedWiringDiagram',
+        (case a.whetherFinishMaterials when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.whetherFinishMaterials',
+        (case a.whetherFinishDrawing when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.whetherFinishDrawing',
+        a.disclosureToCoordinate as 'reserveManagement.disclosureToCoordinate',
+        a.disclosureParticipate as 'reserveManagement.disclosureParticipate',
+        (case a.whetherFinishDisclosure when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.whetherFinishDisclosure',
+        a.projectManagementPeople as 'reserveManagement.projectManagementPeople',
+        a.designingInstitutePeople as 'reserveManagement.designingInstitutePeople',
+        a.ifoPeople as 'reserveManagement.ifoPeople',
+        a.regionalCenterPeople as 'reserveManagement.regionalCenterPeople',
+        a.uninterruptedOperationPeople as 'reserveManagement.uninterruptedOperationPeople',
+        a.workMode as 'reserveManagement.workMode',
+        date_format(a.disclosureFinishDate, '%Y-%m-%d') as 'reserveManagement.disclosureFinishDateStr',
+        a.disclosureRemarks as 'reserveManagement.disclosureRemarks',
+        a.projectDescription as 'reserveManagement.projectDescription',
+        a.doNotPossessProjectDescription as 'reserveManagement.doNotPossessProjectDescription',
+        a.changedProgramsExplain as 'reserveManagement.changedProgramsExplain',
+        a.initialDifficulty as 'reserveManagement.initialDifficulty',
+        (case a.capitalEquipment when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.capitalEquipment',
+        (case a.substationNewLine when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.substationNewLine',
+        (case a.whetherImplement when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.whetherImplement',
+        a.fieldDescription as 'reserveManagement.fieldDescription',
+        (case a.necessaryOfImplementation when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.necessaryOfImplementation',
+        a.unnecessaryDescription as 'reserveManagement.unnecessaryDescription',
+        (case a.precondition when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.precondition',
+        a.conditionsDescribed as 'reserveManagement.conditionsDescribed',
+        (case a.constructionSchemeProblem when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.constructionSchemeProblem',
+        a.problemDescriptionOfConstructionScheme as 'reserveManagement.problemDescriptionOfConstructionScheme',
+        (case a.existingSecurityThreat when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.existingSecurityThreat',
+        a.safetyHazardDescription as 'reserveManagement.safetyHazardDescription',
+        (case a.customizedMaterials when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.customizedMaterials',
+        a.materialDescription as 'reserveManagement.materialDescription',
+        (case a.dismantlingTheOldMaterial when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.dismantlingTheOldMaterial',
+        a.operatingType as 'reserveManagement.operatingType',
+        a.problemDescription as 'reserveManagement.problemDescription',
+        (case a.civilWork when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.civilWork',
+        (case a.verticalRodWorkload when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.verticalRodWorkload',
+        a.totalWorkloadDescription as 'reserveManagement.totalWorkloadDescription',
+        a.regionalCenter as 'reserveManagement.regionalCenter',
+        a.powerSupplyArea as 'reserveManagement.powerSupplyArea',
+        a.zhengLocation as 'reserveManagement.zhengLocation',
+        a.zhengType as 'reserveManagement.zhengType',
+        a.zhengObject as 'reserveManagement.zhengObject',
+        a.zhengDescribe as 'reserveManagement.zhengDescribe',
+        (case a.projectApproval when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.projectApproval',
+        (case a.courseEvaluationProcedures when '1' then '是' when '0' then '否' else '' end)  as 'reserveManagement.courseEvaluationProcedures',
+        a.zhengDifficultyWarn as 'reserveManagement.zhengDifficultyWarn'
+    </sql>
+
+    <sql id="standardChildColumns">
+        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.projectCategory,
+        a.materialCode,
+        a.materialDescription
+    </sql>
+
+    <sql id="personnelJoinColumns">
+    </sql>
+    <delete id="deleteMaterial">
+        delete from cb_material_data
+        where projectName = #{projectName}
+    </delete>
+    <delete id="deleteAct">
+        delete
+        from cb_personnel_activiti
+        where projectReserveId = #{projectReserveId}
+    </delete>
+
+    <select id="get" resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess">
+        select
+        <include refid="standardColumns"/>,
+        cpa.budgetStatement,
+        cpa.projectProposal,
+        cpa.drawings,
+        cpa.drawingSpecification,
+        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
+        from cb_reserve_management a
+        left join cb_personnel_activiti cpa on a.projectReserveId = cpa.projectReserveId
+        where a.projectReserveId = #{projectReserveId}
+    </select>
+
+    <select id="findProjectId" resultType="java.lang.String">
+        select projectReserveId from cb_personnel_activiti where id = #{id};
+    </select>
+    <select id="findList"
+            resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess">
+        select
+        <include refid="standardColumns"/>
+        from cb_standard a
+        <where>
+            a.del_flag = 0
+            <if test="projectCategory!=null and projectCategory!=''">
+                and a.projectCategory like concat('%', #{projectCategory}, '%')
+            </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="findMaterialData" resultType="java.lang.Integer">
+        select count(id)
+        from cb_material_data
+        where projectName =
+        (select projectName from cb_reserve_management where projectReserveId = (
+            select projectReserveId from cb_personnel_activiti where proc_ins_id = #{procInsId}))
+    </select>
+    <select id="findUploadList"
+            resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess">
+        select
+            budgetStatement,
+            projectProposal,
+            drawings,
+            drawingSpecification
+        from cb_personnel_activiti
+        <where>
+            1=1
+            <if test="procInsId!=null and procInsId!=''">
+                and proc_ins_id = #{procInsId}
+            </if>
+            <if test="projectReserveId!=null and projectReserveId !=''">
+                and projectReserveId = #{projectReserveId}
+            </if>
+        </where>
+    </select>
+
+    <select id="findAllUpload"
+            resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess">
+        select
+        a.id,
+        b.projectReserveId,
+        b.projectName,
+        a.budgetStatement,
+        a.projectProposal,
+        a.drawings,
+        a.drawingSpecification
+        from cb_personnel_activiti a
+        left join cb_reserve_management b on a.projectReserveId = b.projectReserveId
+        <where>
+            1=1
+            <if test="projectReserveId!=null and projectReserveId !=''">
+                and b.projectReserveId = #{projectReserveId}
+            </if>
+        </where>
+    </select>
+
+    <select id="findByProcInsId" resultType="java.lang.String">
+        select projectReserveId
+        from cb_personnel_activiti
+        where proc_ins_id = #{procInsId}
+    </select>
+
+    <insert id="insert">
+        insert into cb_personnel_activiti (
+                                 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>
+    <insert id="insertList">
+        insert INTO cb_material_data(
+        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="update">
+        update
+            cb_standard
+        set update_by   = #{updateBy.id},
+            update_date = #{updateDate},
+            remarks     = #{remarks},
+            where projectCategory = #{projectCategory}
+    </update>
+
+    <update id="delete">
+        delete
+        from cb_standard_detail
+        where projectCategory = #{projectCategory}
+    </update>
+    <update id="updateDesign">
+        update cb_personnel_activiti
+        set budgetStatement = #{budgetStatement},
+            projectProposal = #{projectProposal},
+            drawings = #{drawings},
+            drawingSpecification = #{drawingSpecification}
+        where proc_ins_id = #{procInsId}
+    </update>
+    <update id="updateAmount">
+        update cb_personnel_activiti
+            set
+            submittedApproval = #{submittedApproval},
+            constructionCost = #{constructionCost},
+            amountFunds = #{amountFunds},
+            otherExpenses = #{otherExpenses},
+            preliminaryCost = #{preliminaryCost},
+            investigationFee = #{investigationFee},
+            designFee = #{designFee},
+            supervisionFee = #{supervisionFee},
+            examineIncluding = #{examineIncluding},
+            deductibleTaxes = #{deductibleTaxes},
+            examineInExcluding = #{examineInExcluding},
+            constructionTax = #{constructionTax},
+            amountTax = #{amountTax},
+            otherTax = #{otherTax},
+            preliminaryTax = #{preliminaryTax},
+            investigationTax = #{investigationTax},
+            designTax = #{designTax},
+            supervisionTax = #{supervisionTax}
+        where proc_ins_id = #{procInsId}
+    </update>
+
+
+</mapper>

+ 89 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/xml/ScaleDetailsMapper.xml

@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.ScaleDetailsMapper">
+
+    <sql id="scaleDetailsColumns">
+        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.projectCategory
+    </sql>
+
+
+
+    <sql id="personnelJoinColumns">
+    </sql>
+
+
+    <select id="get" resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.Standard">
+        select
+        <include refid="scaleDetailsColumns"/>
+        from cb_standard a
+        where a.id = #{id}
+    </select>
+
+    <select id="findList"
+            resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.Standard">
+        select
+        <include refid="scaleDetailsColumns"/>
+        from cb_standard a
+        <where>
+            a.del_flag = 0
+            <if test="projectCategory!=null and projectCategory!=''">
+                and a.projectCategory like concat('%', #{projectCategory}, '%')
+            </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>
+
+
+
+    <insert id="insert">
+        insert into cb_standard (id,
+                                 create_by,
+                                 create_date,
+                                 update_by,
+                                 update_date,
+                                 del_flag,
+                                 remarks,
+                                 projectCategory)
+        values (#{id},
+                #{createBy.id},
+                #{createDate},
+                #{updateBy.id},
+                #{updateDate},
+                #{delFlag},
+                #{remarks},
+                #{projectCategory})
+    </insert>
+
+
+
+    <update id="update">
+        update
+            cb_standard
+        set update_by   = #{updateBy.id},
+            update_date = #{updateDate},
+            remarks     = #{remarks},
+            where id = #{projectCategory}
+    </update>
+
+    <update id="delete">
+        delete
+        from cb_standard_detail
+        where projectCategory = #{projectCategory}
+    </update>
+
+
+</mapper>

+ 183 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/mapper/xml/StandardMapper.xml

@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.StandardMapper">
+
+    <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.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+        a.projectCategory
+    </sql>
+
+    <sql id="standardChildColumns">
+        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.projectCategory,
+        a.materialCode,
+        a.materialDescription
+    </sql>
+
+    <sql id="personnelJoinColumns">
+    </sql>
+    <delete id="deleteChildList">
+        delete from cb_standard_detail
+        where projectCategory in
+       <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
+           #{item.projectCategory}
+       </foreach>
+    </delete>
+    <delete id="deleteChild">
+        delete from cb_standard_detail
+        where id = #{id}
+    </delete>
+
+    <select id="get" resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.Standard">
+        select
+        <include refid="standardColumns"/>
+        from cb_standard a
+        where a.id = #{id}
+    </select>
+
+    <select id="findList"
+            resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.Standard">
+        select
+        <include refid="standardColumns"/>
+        from cb_standard a
+        <where>
+            a.del_flag = 0
+            <if test="projectCategory!=null and projectCategory!=''">
+                and a.projectCategory like concat('%', #{projectCategory}, '%')
+            </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="findChildList"
+            resultType="com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.Standard">
+        select
+        <include refid="standardChildColumns"/>
+        from cb_standard_detail a
+        <where>
+            <if test="projectCategory != null and projectCategory != ''">
+                projectCategory = #{projectCategory}
+            </if>
+        </where>
+    </select>
+    <select id="findByCodeCate" resultType="java.lang.Integer">
+        select count(id) from cb_standard_detail
+        where projectCategory = #{projectCategory}
+        and materialCode = #{materialCode}
+    </select>
+
+    <insert id="insert">
+        insert into cb_standard (id,
+                                 create_by,
+                                 create_date,
+                                 update_by,
+                                 update_date,
+                                 del_flag,
+                                 remarks,
+                                 projectCategory)
+        values (#{id},
+                #{createBy.id},
+                #{createDate},
+                #{updateBy.id},
+                #{updateDate},
+                #{delFlag},
+                #{remarks},
+                #{projectCategory})
+    </insert>
+
+    <insert id="insertChild">
+        insert into cb_standard_detail (id,
+                                 create_by,
+                                 create_date,
+                                 update_by,
+                                 update_date,
+                                 del_flag,
+                                 remarks,
+                                 projectCategory,
+                                materialCode,
+                                materialDescription)
+        values (#{id},
+                #{createBy.id},
+                #{createDate},
+                #{updateBy.id},
+                #{updateDate},
+                #{delFlag},
+                #{remarks},
+                #{projectCategory},
+                #{materialCode},
+                #{materialDescription})
+    </insert>
+
+    <insert id="insertChildList">
+        insert into cb_standard_detail (id,
+                                        create_by,
+                                        create_date,
+                                        update_by,
+                                        update_date,
+                                        del_flag,
+                                        remarks,
+                                        projectCategory,
+                                        materialCode,
+                                        materialDescription)
+        values
+           <foreach collection="list"  separator="," item="item" index="index">
+               (#{item.id},
+               #{item.createBy.id},
+               #{item.createDate},
+               #{item.updateBy.id},
+               #{item.updateDate},
+               #{item.delFlag},
+               #{item.remarks},
+               #{item.projectCategory},
+               #{item.materialCode},
+               #{item.materialDescription})
+           </foreach>
+    </insert>
+
+
+    <update id="update">
+        update
+            cb_standard
+        set update_by   = #{updateBy.id},
+            update_date = #{updateDate},
+            remarks     = #{remarks},
+            where projectCategory = #{projectCategory}
+    </update>
+
+    <update id="delete">
+        delete
+        from cb_standard_detail
+        where projectCategory = #{projectCategory}
+    </update>
+    <update id="updateChild">
+        update
+            cb_standard_detail
+        set update_by   = #{updateBy.id},
+            update_date = #{updateDate},
+            remarks     = #{remarks},
+            materialCode = #{materialCode},
+            materialDescription = #{materialDescription}
+            where id = #{id}
+    </update>
+
+
+</mapper>

+ 140 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/PersonnelTurnoverService.java

@@ -0,0 +1,140 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.service;
+
+import com.google.common.collect.Maps;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.act.service.ActProcessService;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.sg.managementcenter.project.service.ProjectService;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ExportScheme;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.PersonnelTurnover;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveManagement;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.PersonnelTurnoverMapper;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.ReserveManagementMapper;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.activiti.engine.repository.ProcessDefinition;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * 人员流转 Service
+ */
+@Service
+@Transactional(readOnly = true)
+public class PersonnelTurnoverService extends CrudService<PersonnelTurnoverMapper, PersonnelTurnover> {
+
+    @Autowired
+    private ProjectService projectService;
+
+    @Autowired
+    private ActProcessService actProcessService;
+
+    @Autowired
+    private ActTaskService actTaskService;
+
+    @Autowired
+    private ReserveProcessService reserveProcessService;
+
+    @Override
+    public PersonnelTurnover get(PersonnelTurnover entity) {
+        return super.get(entity);
+    }
+
+    @Override
+    public List<PersonnelTurnover> findList(PersonnelTurnover entity) {
+        return super.findList(entity);
+    }
+
+    @Override
+    public Page<PersonnelTurnover> findPage(Page<PersonnelTurnover> page, PersonnelTurnover entity) {
+        return super.findPage(page, entity);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void save(PersonnelTurnover entity) {
+        PersonnelTurnover byProjectId = mapper.findByProjectId(entity);
+        if (null == byProjectId) {
+            entity.preInsert();
+            entity.setOpenProcessStatus("1");
+            mapper.insert(entity);
+            //添加流程数据条数
+            ReserveProcess reserveProcess = new ReserveProcess();
+            reserveProcess.preInsert();
+            reserveProcess.setProjectReserveId(entity.getProjectReserveId());
+            //更新
+            reserveProcessService.insert(reserveProcess);
+            //发送流程,更改项目状态
+            Map<String, Object> vars = Maps.newHashMap();
+            vars.put("manager", UserUtils.getByUserName(entity.getDesignUnit()).getLoginName());
+            String procDefId = projectService.findDefId("cbry");
+            ProcessDefinition p = actProcessService.getProcessDefinition(procDefId);
+            String title = entity.getCurrentUser().getName() + "在" + DateUtils.getDateTime() + "发起" + p.getName();
+            actTaskService.startProcess(p.getKey(), "cb_personnel_activiti", reserveProcess.getId(), title, vars);
+        } else {
+            entity.preUpdate();
+            entity.setOpenProcessStatus("1");
+            mapper.update(entity);
+            //添加流程数据条数
+            ReserveProcess reserveProcess = new ReserveProcess();
+            reserveProcess.preInsert();
+            reserveProcess.setProjectReserveId(entity.getProjectReserveId());
+            //更新
+            reserveProcessService.insert(reserveProcess);
+            //发送流程,更改项目状态
+            Map<String, Object> vars = Maps.newHashMap();
+            vars.put("manager", UserUtils.getByUserName(entity.getDesignUnit()).getLoginName());
+            String procDefId = projectService.findDefId("cbry");
+            ProcessDefinition p = actProcessService.getProcessDefinition(procDefId);
+            String title = entity.getCurrentUser().getName() + "在" + DateUtils.getDateTime() + "发起" + p.getName();
+            actTaskService.startProcess(p.getKey(), "cb_personnel_activiti", reserveProcess.getId(), title, vars);
+        }
+    }
+
+    @Transactional(readOnly = false)
+    public void insert(PersonnelTurnover entity) {
+        mapper.insert(entity);
+    }
+
+    @Transactional(readOnly = false)
+    public void update(PersonnelTurnover entity) {
+        mapper.update(entity);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void deleteAll(Collection<PersonnelTurnover> entitys) {
+        super.deleteAll(entitys);
+    }
+
+    /**
+     * 通过储备项目编号查询人员流转信息
+     */
+    public PersonnelTurnover findByProjectId(PersonnelTurnover personnelTurnover) {
+        return mapper.findByProjectId(personnelTurnover);
+    }
+
+    /**
+     * 通过储备项目编号修改开启流程状态
+     */
+    @Transactional(readOnly = false)
+    public void updateOpenStatus(String projectReserveId, String openProcessStatus) {
+        mapper.updateOpenStatus(projectReserveId, openProcessStatus);
+    }
+
+    /**
+     * 通过储备项目编号清空人员流转信息
+     */
+    @Transactional(readOnly = false)
+    public void deletePerson(String projectReserveId) {
+        mapper.deletePerson(projectReserveId);
+    }
+
+
+}

+ 74 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/ProgressScheduleService.java

@@ -0,0 +1,74 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.service;
+
+import com.google.common.collect.Maps;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.act.service.ActProcessService;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.sg.managementcenter.project.service.ProjectService;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ProgressSchedule;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.ProgressScheduleMapper;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.activiti.engine.repository.ProcessDefinition;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 人员流转 Service
+ */
+@Service
+@Transactional(readOnly = true)
+public class ProgressScheduleService extends CrudService<ProgressScheduleMapper, ProgressSchedule> {
+
+
+    @Override
+    public ProgressSchedule get(ProgressSchedule entity) {
+        return super.get(entity);
+    }
+
+    @Override
+    public List<ProgressSchedule> findList(ProgressSchedule entity) {
+        return super.findList(entity);
+    }
+
+    @Override
+    public Page<ProgressSchedule> findPage(Page<ProgressSchedule> page, ProgressSchedule entity) {
+        return super.findPage(page, entity);
+    }
+
+    @Override
+    public void save(ProgressSchedule entity) {
+        super.save(entity);
+    }
+
+    @Transactional(readOnly = false)
+    public void insert(ProgressSchedule entity) {
+        mapper.insert(entity);
+    }
+
+    @Transactional(readOnly = false)
+    public void update(ProgressSchedule entity) {
+        mapper.update(entity);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void deleteAll(Collection<ProgressSchedule> entitys) {
+        super.deleteAll(entitys);
+    }
+
+    /**
+     * 更新流程对应节点的完成时间
+     */
+    @Transactional(readOnly = false)
+    public void updateTimeNode(ProgressSchedule entity) {
+        mapper.updateTimeNode(entity);
+    }
+}

+ 72 - 3
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/ReserveManagementService.java

@@ -3,12 +3,16 @@ package com.jeeplus.modules.sg.managementcenter.reserveManagement.service;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ExportScheme;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ProgressSchedule;
 import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveManagement;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.ProgressScheduleMapper;
 import com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.ReserveManagementMapper;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.method.P;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -23,6 +27,9 @@ public class ReserveManagementService extends CrudService<ReserveManagementMappe
     @Autowired
     private ReserveManagementMapper dao;
 
+    @Autowired
+    private ProgressScheduleMapper scheduleMapper;
+
     public ReserveManagement get(String id) {
         return super.get(id);
     }
@@ -47,13 +54,35 @@ public class ReserveManagementService extends CrudService<ReserveManagementMappe
 
     /**
      * 新增方法
-     * @param reserveManagement
+     * @param entity
      */
     @Transactional(readOnly = false)
-    public void save(ReserveManagement reserveManagement) {
+    public void save(ReserveManagement entity) {
         //查询数据表中是否含有同项目储备编号的数据 若有则进行修改 没有则新增
         //根据项目储备编号 查询数据
-        super.save(reserveManagement);
+        if (entity.getIsNewRecord()){
+            entity.preInsert();
+            mapper.insert(entity);
+        }else{
+            entity.preUpdate();
+            mapper.update(entity);
+        }
+        //通过项目储备编号 查询流程时间数据是否存在,存在更新,不存在插入
+        ProgressSchedule progressSchedule = scheduleMapper.findProjectReserveId(entity.getProjectReserveId());
+        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dft.format(new Date());
+        ProgressSchedule schedule = new ProgressSchedule();
+        if (null == progressSchedule) {
+            schedule.preInsert();
+            schedule.setProjectBasic(format);
+            schedule.setProjectReserveId(entity.getProjectReserveId());
+            scheduleMapper.insert(schedule);
+        } else {
+            schedule.preUpdate();
+            schedule.setProjectBasic(format);
+            schedule.setProjectReserveId(entity.getProjectReserveId());
+            scheduleMapper.updateTimeNode(schedule);
+        }
     }
 
     @Transactional(readOnly = false)
@@ -61,10 +90,17 @@ public class ReserveManagementService extends CrudService<ReserveManagementMappe
         //查询数据表中是否含有同项目储备编号的数据 若有则进行修改
         //根据项目储备编号 查询数据
         Integer byProjectId = mapper.findByProjectId(scheme.getProjectReserveId());
+        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dft.format(new Date());
+        ProgressSchedule schedule = new ProgressSchedule();
         //如果存在则修改信息
         if (null != byProjectId && 1 == byProjectId) {
             scheme.preUpdate();
             mapper.updateScheme(scheme);
+            schedule.preUpdate();
+            schedule.setConclusionDisclosure(format);
+            schedule.setProjectReserveId(scheme.getProjectReserveId());
+            scheduleMapper.updateTimeNode(schedule);
         }
     }
 
@@ -74,6 +110,21 @@ public class ReserveManagementService extends CrudService<ReserveManagementMappe
      */
     @Transactional(readOnly = false)
     public void update(ReserveManagement reserveManagement) {
+        ProgressSchedule progressSchedule = scheduleMapper.findProjectReserveId(reserveManagement.getProjectReserveId());
+        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dft.format(new Date());
+        ProgressSchedule schedule = new ProgressSchedule();
+        if (null == progressSchedule) {
+            schedule.preInsert();
+            schedule.setProjectBasic(format);
+            schedule.setProjectReserveId(reserveManagement.getProjectReserveId());
+            scheduleMapper.insert(schedule);
+        } else {
+            schedule.preUpdate();
+            schedule.setProjectBasic(format);
+            schedule.setProjectReserveId(reserveManagement.getProjectReserveId());
+            scheduleMapper.updateTimeNode(schedule);
+        }
         super.save(reserveManagement);
     }
 
@@ -85,6 +136,13 @@ public class ReserveManagementService extends CrudService<ReserveManagementMappe
     public void updatejl(ReserveManagement reserveManagement) {
         reserveManagement.preUpdate();
         dao.updatejl(reserveManagement);
+        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dft.format(new Date());
+        ProgressSchedule schedule = new ProgressSchedule();
+        schedule.preUpdate();
+        schedule.setConclusionDisclosure(format);
+        schedule.setProjectReserveId(reserveManagement.getProjectReserveId());
+        scheduleMapper.updateTimeNode(schedule);
     }
 
     /**
@@ -129,6 +187,17 @@ public class ReserveManagementService extends CrudService<ReserveManagementMappe
      */
     @Transactional(readOnly = false)
     public void insertList(List<ReserveManagement> reserveManagementList){
+        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dft.format(new Date());
+        ProgressSchedule schedule = new ProgressSchedule();
+        for (ReserveManagement a :
+                reserveManagementList) {
+            a.preInsert();
+            schedule.preInsert();
+            schedule.setProjectBasic(format);
+            schedule.setProjectReserveId(a.getProjectReserveId());
+            scheduleMapper.insert(schedule);
+        }
         dao.insertList(reserveManagementList);
     }
 

+ 336 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/ReserveProcessService.java

@@ -0,0 +1,336 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.service;
+
+import com.google.common.collect.Maps;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.act.entity.Act;
+import com.jeeplus.modules.filing.basicInformation.entity.BasicInformationChild;
+import com.jeeplus.modules.sg.managementcenter.activiti.utils.MyActiviUtils;
+import com.jeeplus.modules.sg.managementcenter.materialinfo.entity.MaterialInfo;
+import com.jeeplus.modules.sg.managementcenter.materialinfo.util.MaterialInfoUtil;
+import com.jeeplus.modules.sg.managementcenter.materialproject.entity.MaterialProject;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.PersonnelTurnover;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ProgressSchedule;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.ProgressScheduleMapper;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.ReserveProcessMapper;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.ReserveProcessMapper;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.activiti.engine.TaskService;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.ss.usermodel.Row;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 人员流转 Service
+ */
+@Service
+@Transactional(readOnly = true)
+public class ReserveProcessService extends CrudService<ReserveProcessMapper, ReserveProcess> {
+
+    @Autowired
+    private TaskService taskService;
+
+    @Autowired
+    private PersonnelTurnoverService personnelTurnoverService;
+
+    @Autowired
+    private ProgressScheduleMapper scheduleMapper;
+
+    @Override
+    public ReserveProcess get(ReserveProcess entity) {
+        String projectId = mapper.findProjectId(entity);
+        ReserveProcess reserveProcess = mapper.get(projectId);
+        return reserveProcess;
+    }
+
+    @Override
+    public ReserveProcess get(String id) {
+        ReserveProcess entity = new ReserveProcess();
+        entity.setId(id);
+        String projectId = mapper.findProjectId(entity);
+        ReserveProcess reserveProcess = mapper.get(projectId);
+        return reserveProcess;
+    }
+
+    @Override
+    public List<ReserveProcess> findList(ReserveProcess entity) {
+        return super.findList(entity);
+    }
+
+    @Override
+    public Page<ReserveProcess> findPage(Page<ReserveProcess> page, ReserveProcess entity) {
+        return super.findPage(page, entity);
+    }
+
+    public Page<ReserveProcess> findUploadPage(Page<ReserveProcess> page, ReserveProcess entity) {
+        dataRuleFilter(entity);
+        entity.setPage(page);
+        page.setList(mapper.findUploadList(entity));
+        return page;
+    }
+
+    public Page<ReserveProcess> findAllUploadPage(Page<ReserveProcess> page, ReserveProcess entity) {
+        dataRuleFilter(entity);
+        entity.setPage(page);
+        page.setList(mapper.findAllUpload(entity));
+        return page;
+    }
+
+
+    @Override
+    @Transactional(readOnly = false)
+    public void save(ReserveProcess entity) {
+        if (entity.getIsNewRecord()) {
+            entity.preInsert();
+            mapper.insert(entity);
+        } else {
+            entity.preUpdate();
+            mapper.update(entity);
+        }
+    }
+
+    @Transactional(readOnly = false)
+    public void insert(ReserveProcess entity) {
+        mapper.insert(entity);
+    }
+
+    @Transactional(readOnly = false)
+    public void update(ReserveProcess entity) {
+        mapper.update(entity);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void deleteAll(Collection<ReserveProcess> entitys) {
+        super.deleteAll(entitys);
+    }
+
+    /**
+     * 通过流程定义号修改项目的金额数据
+     */
+    @Transactional(readOnly = false)
+    public void updateAmount(ReserveProcess reserveProcess) {
+        mapper.updateAmount(reserveProcess);
+    }
+
+    /**
+     * 修改项目设计单位信息
+     */
+    @Transactional(readOnly = false)
+    public void updateDesign(ReserveProcess reserveProcess) {
+        mapper.updateDesign(reserveProcess);
+    }
+
+
+    /**
+     * 通过储备项目编号查询项目是否有甲供材清册
+     */
+    public Integer findMaterialData(String procInsId) {
+        return mapper.findMaterialData(procInsId);
+    }
+
+    /**
+     * 设计单位判定是否关闭
+     */
+    @Transactional(readOnly = false)
+    public void actDesignUnit(Act act,ReserveProcess reserveProcess) {
+        Map<String, Object> vars = Maps.newHashMap();
+        String flag = act.getFlag();
+        PersonnelTurnover user = MyActiviUtils.findCbUser(act.getProcInsId());
+        if ("yes".equals(flag)) {
+            vars.put("manager", UserUtils.getByUserName(user.getProjectManager()).getLoginName());
+            SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String format = dft.format(new Date());
+            ProgressSchedule schedule = new ProgressSchedule();
+            schedule.preUpdate();
+            schedule.setDesignUpload(format);
+            schedule.setProjectReserveId(reserveProcess.getProjectReserveId());
+            scheduleMapper.updateTimeNode(schedule);
+        } else {
+            //结束项目流程,修改项目开始流程状态,清空人员流转信息,清空
+            //删除对应的流程数据
+            mapper.deleteAct(reserveProcess.getProjectReserveId());
+            personnelTurnoverService.deletePerson(reserveProcess.getProjectReserveId());
+            vars.put("manager", UserUtils.getUser().getLoginName());
+        }
+        vars.put("pass", "yes".equals(flag) ? true : false);
+        act.preUpdate();
+        // 对不同环节的业务逻辑进行操作
+        String taskDefKey = act.getTaskDefKey();
+        // 提交流程任务
+        complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+    }
+
+    /**
+     * 项目经理判定是否通过
+     */
+    @Transactional(readOnly = false)
+    public void actDrawingReview(Act act) {
+        Map<String, Object> vars = Maps.newHashMap();
+        String flag = act.getFlag();
+        PersonnelTurnover user = MyActiviUtils.findCbUser(act.getProcInsId());
+        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dft.format(new Date());
+        ProgressSchedule schedule = new ProgressSchedule();
+        schedule.preUpdate();
+        if ("yes".equals(flag)) {
+            vars.put("manager", UserUtils.getByUserName(user.getEconomicPersonnel()).getLoginName());
+            schedule.setDrawingReview(format);
+            schedule.setProjectReserveId(mapper.findByProcInsId(act.getProcInsId()));
+            scheduleMapper.updateTimeNode(schedule);
+        } else {
+            vars.put("manager", UserUtils.getByUserName(user.getDesignUnit()).getLoginName());
+            schedule.setDesignUpload("");
+            schedule.setProjectReserveId(mapper.findByProcInsId(act.getProcInsId()));
+            scheduleMapper.updateTimeNode(schedule);
+        }
+        vars.put("pass", "yes".equals(flag) ? true : false);
+        act.preUpdate();
+        // 对不同环节的业务逻辑进行操作
+        String taskDefKey = act.getTaskDefKey();
+        // 提交流程任务
+        complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+    }
+
+    /**
+     * 技经人员判断是否通过
+     */
+    @Transactional(readOnly = false)
+    public void actEconomicPersonnel(Act act) {
+        Map<String, Object> vars = Maps.newHashMap();
+        String flag = act.getFlag();
+        PersonnelTurnover user = MyActiviUtils.findCbUser(act.getProcInsId());
+        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dft.format(new Date());
+        ProgressSchedule schedule = new ProgressSchedule();
+        schedule.preUpdate();
+        if ("yes".equals(flag)) {
+            vars.put("manager", UserUtils.getByUserName(user.getProjectManager()).getLoginName());
+            schedule.setEstimate(format);
+            schedule.setProjectReserveId(mapper.findByProcInsId(act.getProcInsId()));
+            scheduleMapper.updateTimeNode(schedule);
+        } else {
+            vars.put("manager", UserUtils.getByUserName(user.getOperationUnit()).getLoginName());
+            schedule.setDrawingReview(format);
+            schedule.setProjectReserveId(mapper.findByProcInsId(act.getProcInsId()));
+            scheduleMapper.updateTimeNode(schedule);
+        }
+        vars.put("pass", "yes".equals(flag) ? true : false);
+        act.preUpdate();
+        // 对不同环节的业务逻辑进行操作
+        String taskDefKey = act.getTaskDefKey();
+        // 提交流程任务
+        complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+    }
+
+
+    /**
+     * 运行单位审图(联合审图)判断是否通过
+     */
+    @Transactional(readOnly = false)
+    public void actOperationUnit(Act act) {
+        Map<String, Object> vars = Maps.newHashMap();
+        String flag = act.getFlag();
+        PersonnelTurnover user = MyActiviUtils.findCbUser(act.getProcInsId());
+        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dft.format(new Date());
+        ProgressSchedule schedule = new ProgressSchedule();
+        schedule.preUpdate();
+        if ("yes".equals(flag)) {
+            vars.put("manager", UserUtils.getByUserName(user.getEconomicPersonnel()).getLoginName());
+            schedule.setJointDrawing(format);
+            schedule.setProjectReserveId(mapper.findByProcInsId(act.getProcInsId()));
+            scheduleMapper.updateTimeNode(schedule);
+        } else {
+            vars.put("manager", UserUtils.getByUserName(user.getDesignUnit()).getLoginName());
+            schedule.setDrawingReview("");
+            schedule.setProjectReserveId(mapper.findByProcInsId(act.getProcInsId()));
+            scheduleMapper.updateTimeNode(schedule);
+        }
+        vars.put("pass", "yes".equals(flag) ? true : false);
+        act.preUpdate();
+        // 对不同环节的业务逻辑进行操作
+        String taskDefKey = act.getTaskDefKey();
+        // 提交流程任务
+        complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+    }
+
+    /**
+     * 提交任务, 并保存意见
+     *
+     * @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);
+    }
+
+    /**
+     *在年度物资上报统计表中保存项目信息,在年度上报明细表中保存物资信息
+     */
+    @Transactional(readOnly = false)
+    public void saveData(MultipartFile file) 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.deleteMaterial(projectName);
+        ImportExcel pick = new ImportExcel(file,5,"领料清单");
+        List<MaterialInfo> materialInfos = MaterialInfoUtil.getData(pick,projectName);   //获取领料清单数据
+        List<MaterialInfo> list = MaterialInfoUtil.combineData(materialInfos);      //合并数据
+        //通过甲供材信息比对物料规范获得项目建设规模
+
+        saveList(list);
+    }
+
+    @Transactional(readOnly = false)
+    public void saveList(List<MaterialInfo> list) {
+        for(MaterialInfo maintainData : list){
+            maintainData.preInsert();
+        }
+        mapper.insertList(list);
+    }
+}

+ 74 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/ScaleDetailsService.java

@@ -0,0 +1,74 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.service;
+
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.filing.basicInformation.entity.BasicInformationChild;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ScaleDetails;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.ScaleDetailsMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 人员流转 Service
+ */
+@Service
+@Transactional(readOnly = true)
+public class ScaleDetailsService extends CrudService<ScaleDetailsMapper, ScaleDetails> {
+
+    @Override
+    public ScaleDetails get(ScaleDetails entity) {
+        ScaleDetails standard = mapper.get(entity);
+        return standard;
+    }
+
+    @Override
+    public ScaleDetails get(String id) {
+        ScaleDetails standard = mapper.get(id);
+        return standard;
+    }
+
+    @Override
+    public List<ScaleDetails> findList(ScaleDetails entity) {
+        return super.findList(entity);
+    }
+
+    @Override
+    public Page<ScaleDetails> findPage(Page<ScaleDetails> page, ScaleDetails entity) {
+        return super.findPage(page, entity);
+    }
+
+
+
+    @Override
+    @Transactional(readOnly = false)
+    public void save(ScaleDetails entity) {
+        if (entity.getIsNewRecord()) {
+            entity.preInsert();
+            mapper.insert(entity);
+        } else {
+            entity.preUpdate();
+            mapper.update(entity);
+        }
+    }
+
+    @Transactional(readOnly = false)
+    public void insert(ScaleDetails entity) {
+        mapper.insert(entity);
+    }
+
+    @Transactional(readOnly = false)
+    public void update(ScaleDetails entity) {
+        mapper.update(entity);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void deleteAll(Collection<ScaleDetails> entitys) {
+        super.deleteAll(entitys);
+    }
+
+
+}

+ 131 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/service/StandardService.java

@@ -0,0 +1,131 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.service;
+
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.filing.basicInformation.entity.BasicInformationChild;
+import com.jeeplus.modules.sg.financial.settlement.entity.Corresponding;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.Standard;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper.StandardMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 人员流转 Service
+ */
+@Service
+@Transactional(readOnly = true)
+public class StandardService extends CrudService<StandardMapper, Standard> {
+
+    @Override
+    public Standard get(Standard entity) {
+        Standard standard = mapper.get(entity);
+        List<Standard> childList = mapper.findChildList(standard);
+        standard.setChildList(childList);
+        return standard;
+    }
+
+    @Override
+    public Standard get(String id) {
+        Standard standard = mapper.get(id);
+        List<Standard> childList = mapper.findChildList(standard);
+        standard.setChildList(childList);
+        return standard;
+    }
+
+    @Override
+    public List<Standard> findList(Standard entity) {
+        return super.findList(entity);
+    }
+
+    @Override
+    public Page<Standard> findPage(Page<Standard> page, Standard entity) {
+        return super.findPage(page, entity);
+    }
+
+    @Transactional(readOnly = false)
+    public void saveChild(Standard entity) {
+        List<Standard> childList = entity.getChildList();
+        for (Standard c :
+                childList) {
+            c.setProjectCategory(entity.getProjectCategory());
+            if (BasicInformationChild.DEL_FLAG_NORMAL.equals(c.getDelFlag())) {
+                if (c.getIsNewRecord()) {
+                    c.preInsert();
+                    mapper.insertChild(c);
+                } else {
+                    c.preUpdate();
+                    mapper.updateChild(c);
+                }
+            } else {
+                mapper.deleteChild(c);
+            }
+        }
+    }
+
+    /**
+     * 查询项目建设明细详细列表
+     */
+    public Page<Standard> findChildPage(Page<Standard> page, Standard entity) {
+        dataRuleFilter(entity);
+        entity.setPage(page);
+        page.setList(mapper.findChildList(entity));
+        return page;
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void save(Standard entity) {
+        if (entity.getIsNewRecord()) {
+            entity.preInsert();
+            mapper.insert(entity);
+        } else {
+            entity.preUpdate();
+            mapper.update(entity);
+        }
+    }
+
+    @Transactional(readOnly = false)
+    public void insert(Standard entity) {
+        mapper.insert(entity);
+    }
+
+    @Transactional(readOnly = false)
+    public void update(Standard entity) {
+        mapper.update(entity);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void deleteAll(Collection<Standard> entitys) {
+        super.deleteAll(entitys);
+    }
+
+    @Transactional(readOnly = false)
+    public void updateChild(Standard entity) {
+        Integer byCodeCate = mapper.findByCodeCate(entity);
+        if (0 == byCodeCate) {
+            entity.preInsert();
+            mapper.insertChild(entity);
+        } else {
+            entity.preUpdate();
+            mapper.updateChild(entity);
+        }
+    }
+
+    @Transactional(readOnly = false)
+    public void deleteChildList(List<Standard> list) {
+        mapper.deleteChildList(list);
+    }
+
+    @Transactional(readOnly = false)
+    public void insertChildList(List<Standard> list) {
+        for (Standard a :
+                list) {
+            a.preInsert();
+        }
+        mapper.insertChildList(list);
+    }
+}

+ 270 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/web/PersonnelTurnoverController.java

@@ -0,0 +1,270 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.web;
+
+import com.google.common.collect.Lists;
+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.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.act.service.ActProcessService;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.filing.basicInformation.entity.BasicInformation;
+import com.jeeplus.modules.sg.managementcenter.project.service.ProjectService;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.PersonnelTurnover;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.service.PersonnelTurnoverService;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.service.ReserveProcessService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.test.one.dialog.entity.Leave1;
+import org.activiti.engine.repository.ProcessDefinition;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 人员流转 Controller
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/sg/managementCenter/personnelTurnover")
+public class PersonnelTurnoverController extends BaseController {
+
+    @Autowired
+    private PersonnelTurnoverService service;
+
+    @Autowired
+    private ProjectService projectService;
+
+    @Autowired
+    private ActProcessService actProcessService;
+
+    @Autowired
+    private ActTaskService actTaskService;
+
+    @Autowired
+    private ReserveProcessService reserveProcessService;
+
+
+    @ModelAttribute
+    public PersonnelTurnover get(@RequestParam(required = false) String id) {
+        PersonnelTurnover entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = service.get(id);
+        }
+        if (entity == null) {
+            entity = new PersonnelTurnover();
+        }
+        return entity;
+    }
+
+    /**
+     * 人员流转信息列表页面
+     * @param personnelTurnover
+     * @param model
+     * @return
+     */
+    @RequiresPermissions("sg:reserve:personnelTurnover:list")
+    @RequestMapping(value = "list")
+    public String skipList(PersonnelTurnover personnelTurnover, Model model) {
+        model.addAttribute("personnelTurnover", personnelTurnover);
+        return "modules/sg/managementcenter/reserveManagement/personnelTurnoverList";
+    }
+
+    /**
+     * 人员流转信息数据列表
+     * @param personnelTurnover
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:personnelTurnover:list")
+    @RequestMapping(value = "data")
+    public Map<String, Object> basicData(PersonnelTurnover personnelTurnover, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<PersonnelTurnover> page = service.findPage(new Page<PersonnelTurnover>(request, response), personnelTurnover);
+        return getBootstrapData(page);
+    }
+
+    /**
+     * 专职人员增加,编辑表单页面
+     * @param personnelTurnover
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"sg:reserve:personnelTurnover:add","sg:reserve:personnelTurnover:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(PersonnelTurnover personnelTurnover, Model model) {
+        model.addAttribute("personnelTurnover", personnelTurnover);
+        return "modules/sg/managementcenter/reserveManagement/personnelTurnoverForm";
+    }
+
+    /**
+     * 保存表单
+     * @param personnelTurnover
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"sg:reserve:personnelTurnover:add","sg:reserve:personnelTurnover:edit"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public AjaxJson save(PersonnelTurnover personnelTurnover){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(personnelTurnover);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //新增或编辑表单保存
+        //通过储备项目编号
+        service.save(personnelTurnover);//保存
+        j.setSuccess(true);
+        j.setMsg("保存人员流转信息成功");
+        return j;
+    }
+
+
+    /**
+     *
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"sg:reserve:personnelTurnover:del"},logical=Logical.OR)
+    @RequestMapping(value = "deleteAll")
+    public AjaxJson delete(String ids){
+        AjaxJson j = new AjaxJson();
+        String idArray[] =ids.split(",");
+        for(String id : idArray){
+            service.delete(service.get(id));
+        }
+        j.setMsg("删除人员流转信息成功");
+        return j;
+    }
+
+   
+
+    /**
+     * 经理导入Excel数据
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:personnelTurnover:import")
+    @RequestMapping(value = "import")
+    public AjaxJson jlImportBasic(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        try {
+            ImportExcel ei = new ImportExcel(file, 1, 0);
+            StringBuffer stringBuffer = new StringBuffer();
+            List<PersonnelTurnover> list = ei.getDataList(PersonnelTurnover.class);
+            for (PersonnelTurnover s :
+                    list) {
+                //通过储备项目名称查询项目信息
+                PersonnelTurnover byProjectId = service.findByProjectId(s);
+                if (null == byProjectId) {
+                    s.preInsert();
+                    s.setOpenProcessStatus("1");
+                    service.insert(s);
+                    ReserveProcess reserveProcess = new ReserveProcess();
+                    reserveProcess.preInsert();
+                    reserveProcess.setProjectReserveId(s.getProjectReserveId());
+                    //更新
+                    reserveProcessService.insert(reserveProcess);
+                    //发送流程,更改项目状态
+                    Map<String, Object> vars = Maps.newHashMap();
+                    vars.put("design", UserUtils.getByUserName(s.getDesignUnit()).getLoginName());
+                    String procDefId = projectService.findDefId("cbry");
+                    ProcessDefinition p = actProcessService.getProcessDefinition(procDefId);
+                    String title = s.getCurrentUser().getName() + "在" + DateUtils.getDateTime() + "发起" + p.getName();
+                    actTaskService.startProcess(p.getKey(), "cb_personnel_activiti", reserveProcess.getId(), title, vars);
+                } else {
+                    //当有项目信息时,判断是否在流程中
+                    if ("1".equals(byProjectId.getOpenProcessStatus())) {
+                        stringBuffer.append(s.getProjectReserveId() + "流程已开启;");
+                    }else {
+                        s.setOpenProcessStatus("1");
+                        s.preUpdate();
+                        service.update(s);
+                        //添加流程数据条数
+                        ReserveProcess reserveProcess = new ReserveProcess();
+                        reserveProcess.preInsert();
+                        reserveProcess.setProjectReserveId(s.getProjectReserveId());
+                        //更新
+                        reserveProcessService.insert(reserveProcess);
+                        //发送流程,更改项目状态
+                        Map<String, Object> vars = Maps.newHashMap();
+                        vars.put("design", UserUtils.getByUserName(s.getDesignUnit()).getLoginName());
+                        String procDefId = projectService.findDefId("cbry");
+                        ProcessDefinition p = actProcessService.getProcessDefinition(procDefId);
+                        String title = s.getCurrentUser().getName() + "在" + DateUtils.getDateTime() + "发起" + p.getName();
+                        actTaskService.startProcess(p.getKey(), "cb_personnel_activiti", reserveProcess.getId(), title, vars);
+                    }
+                }
+            }
+            j.setSuccess(true);
+            j.setMsg("已成功导入" + stringBuffer);
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入人员流转信息失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    //导出excel
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:personnelTurnover:export")
+    @RequestMapping(value = "export")
+    public AjaxJson exportFile(PersonnelTurnover personnelTurnover, HttpServletRequest request, HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "人员流转信息"+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<PersonnelTurnover> page = service.findPage(new Page<PersonnelTurnover>(request, response, -1), personnelTurnover);
+            new ExportExcel("人员流转信息", PersonnelTurnover.class).setDataList(page.getList()).write(response, fileName).dispose();
+            j.setSuccess(true);
+            j.setMsg("导出成功!");
+            return j;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导出人员流转信息记录失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+   
+    /**
+     * 下载导入模板
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:personnelTurnover:import")
+    @RequestMapping(value = "template")
+    public AjaxJson importTemplate(HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "人员流转信息导入模板.xlsx";
+            List<BasicInformation> list = Lists.newArrayList();
+            new ExportExcel("人员流转信息表", PersonnelTurnover.class, 1).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+    
+
+}

+ 116 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/web/ProgressScheduleController.java

@@ -0,0 +1,116 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.web;
+
+import com.google.common.collect.Lists;
+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.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.act.service.ActProcessService;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.filing.basicInformation.entity.BasicInformation;
+import com.jeeplus.modules.sg.managementcenter.project.service.ProjectService;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ProgressSchedule;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.service.ProgressScheduleService;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.service.ReserveProcessService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.activiti.engine.repository.ProcessDefinition;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 人员流转 Controller
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/sg/managementCenter/progressSchedule")
+public class ProgressScheduleController extends BaseController {
+
+    @Autowired
+    private ProgressScheduleService service;
+
+
+    @ModelAttribute
+    public ProgressSchedule get(@RequestParam(required = false) String id) {
+        ProgressSchedule entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = service.get(id);
+        }
+        if (entity == null) {
+            entity = new ProgressSchedule();
+        }
+        return entity;
+    }
+
+    /**
+     * 人员流转信息列表页面
+     * @param progressSchedule
+     * @param model
+     * @return
+     */
+    @RequiresPermissions("sg:reserve:progressSchedule:list")
+    @RequestMapping(value = "list")
+    public String skipList(ProgressSchedule progressSchedule, Model model) {
+        model.addAttribute("progressSchedule", progressSchedule);
+        return "modules/sg/managementcenter/reserveManagement/progressScheduleList";
+    }
+
+    /**
+     * 人员流转信息数据列表
+     * @param progressSchedule
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:progressSchedule:list")
+    @RequestMapping(value = "data")
+    public Map<String, Object> basicData(ProgressSchedule progressSchedule, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<ProgressSchedule> page = service.findPage(new Page<ProgressSchedule>(request, response), progressSchedule);
+        return getBootstrapData(page);
+    }
+
+    /**
+     * 保存表单
+     * @param progressSchedule
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "save")
+    public AjaxJson save(ProgressSchedule progressSchedule){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(progressSchedule);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //新增或编辑表单保存
+        //通过储备项目编号
+        service.save(progressSchedule);//保存
+        j.setSuccess(true);
+        j.setMsg("保存人员流转信息成功");
+        return j;
+    }
+
+}

+ 471 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/web/ReserveProcessController.java

@@ -0,0 +1,471 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.act.entity.Act;
+import com.jeeplus.modules.filing.basicInformation.entity.BasicInformation;
+import com.jeeplus.modules.sg.managementcenter.activiti.entity.UploadImages;
+import com.jeeplus.modules.sg.managementcenter.materialproject.entity.MaterialProject;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.service.ReserveProcessService;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 物料规范 Controller
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/sg/reserveProcess")
+public class ReserveProcessController extends BaseController {
+
+    @Autowired
+    private ReserveProcessService reserveProcessService;
+
+    @ModelAttribute
+    public ReserveProcess get(@RequestParam(required = false) String id) {
+        ReserveProcess entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = reserveProcessService.get(id);
+        }
+        if (entity == null) {
+            entity = new ReserveProcess();
+        }
+        return entity;
+    }
+
+    /**
+     * 物料规范信息列表页面
+     * @param reserveProcess
+     * @param model
+     * @return
+     */
+    @RequestMapping(value = "list")
+    public String list(ReserveProcess reserveProcess, Model model) {
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/sg/managementcenter/reserveManagement/reserveProcessList";
+    }
+
+    /**
+     * 设计单位审核
+     * */
+    @RequestMapping(value = "designUnit")
+    public String designUnit(ReserveProcess reserveProcess, Model model) {
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/sg/managementcenter/reserveManagement/designUnit";
+    }
+
+    /**
+     * 项目经理审图
+     * */
+    @RequestMapping(value = "drawingReview")
+    public String drawingReview(ReserveProcess reserveProcess, Model model) {
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/sg/managementcenter/reserveManagement/drawingReview";
+    }
+
+    /**
+     * 技经人员审概算
+     * */
+    @RequestMapping(value = "economicPersonnel")
+    public String economicPersonnel(ReserveProcess reserveProcess, Model model) {
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/sg/managementcenter/reserveManagement/economicPersonnel";
+    }
+
+    /**
+     * 运行单位审图
+     * */
+    @RequestMapping(value = "operationUnit")
+    public String operationUnit(ReserveProcess reserveProcess, Model model) {
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/sg/managementcenter/reserveManagement/operationUnit";
+    }
+
+    /**
+     * 储备文件管理页面
+     * */
+    @RequestMapping(value = "allUpload")
+    public String allUpload(ReserveProcess reserveProcess, Model model) {
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/sg/managementcenter/reserveManagement/allUploadList";
+    }
+
+    /**
+     * 物料规范信息数据列表
+     * @param reserveProcess
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "data")
+    public Map<String, Object> basicData(ReserveProcess reserveProcess, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<ReserveProcess> page = reserveProcessService.findPage(new Page<ReserveProcess>(request, response), reserveProcess);
+        return getBootstrapData(page);
+    }
+
+
+    /**
+     * 储备流程,文件显示管理
+     * */
+    @ResponseBody
+    @RequestMapping(value = "uploadData")
+    public Map<String, Object> uploadData(ReserveProcess reserveProcess, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<ReserveProcess> page = reserveProcessService.findUploadPage(new Page<ReserveProcess>(request, response), reserveProcess);
+        //当判定系统为linux的时候
+        if (Global.SYS_TYPE.equals("2")) {
+            List<ReserveProcess> list = page.getList();
+            for (ReserveProcess upload:
+                    list) {
+                String a = "";
+                String b = "";
+                String c = "";
+                String d = "";
+                String path = upload.getBudgetStatement();
+                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();
+                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();
+                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();
+                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
+    @RequestMapping(value = "allUploadData")
+    public Map<String, Object> allUploadData(ReserveProcess reserveProcess, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<ReserveProcess> page = reserveProcessService.findAllUploadPage(new Page<ReserveProcess>(request, response), reserveProcess);
+        //当判定系统为linux的时候
+        if (Global.SYS_TYPE.equals("2")) {
+            List<ReserveProcess> list = page.getList();
+            for (ReserveProcess upload:
+                    list) {
+                String a = "";
+                String b = "";
+                String c = "";
+                String d = "";
+                String path = upload.getBudgetStatement();
+                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();
+                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();
+                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();
+                String[] split3 = drawingSpecification.split("\\|");
+                for (int i = 0; i < split3.length; i++) {
+                    d += "http://" + request.getServerName() + split3[i] + "|";
+                }
+                upload.setDrawingSpecification(d);
+
+            }
+        }
+        return getBootstrapData(page);
+    }
+
+    /**
+     * 专职人员增加,编辑表单页面
+     * @param reserveProcess
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"sg:reserve:reserveProcess:add","sg:reserve:reserveProcess:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(ReserveProcess reserveProcess, Model model) {
+        model.addAttribute("reserveProcess", reserveProcess);
+        return "modules/sg/managementcenter/reserveManagement/reserveProcessForm";
+    }
+
+    /**
+     * 保存表单
+     * @param reserveProcess
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"sg:reserve:reserveProcess:add","sg:reserve:reserveProcess:edit"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public AjaxJson save(ReserveProcess reserveProcess){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(reserveProcess);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //新增或编辑表单保存
+        //通过储备项目编号
+        reserveProcessService.save(reserveProcess);//保存
+        j.setSuccess(true);
+        j.setMsg("保存物料规范信息成功");
+        return j;
+    }
+
+
+    /**
+     *
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"sg:reserve:reserveProcess:del"},logical=Logical.OR)
+    @RequestMapping(value = "deleteAll")
+    public AjaxJson delete(String ids){
+        AjaxJson j = new AjaxJson();
+        String idArray[] =ids.split(",");
+        for(String id : idArray){
+            reserveProcessService.delete(reserveProcessService.get(id));
+        }
+        j.setMsg("删除物料规范信息成功");
+        return j;
+    }
+
+   
+
+    /**
+     * 经理导入Excel数据
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:reserveProcess:import")
+    @RequestMapping(value = "import")
+    public AjaxJson jlImportBasic(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        try {
+            ImportExcel ei = new ImportExcel(file, 1, 0);
+            StringBuffer stringBuffer = new StringBuffer();
+            List<ReserveProcess> list = ei.getDataList(ReserveProcess.class);
+            List<ReserveProcess> insertList = new ArrayList<>();
+            j.setSuccess(true);
+            j.setMsg("已成功导入" + stringBuffer);
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入物料规范信息失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    //导出甲供材清册
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:reserveProcess:export")
+    @RequestMapping(value = "export")
+    public AjaxJson exportFile(String ids,ReserveProcess reserveProcess, HttpServletRequest request, HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String idArray[] =ids.split(",");
+            String fileName = "甲供材清册"+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+
+            Page<ReserveProcess> page = reserveProcessService.findPage(new Page<ReserveProcess>(request, response, -1), reserveProcess);
+            new ExportExcel("甲供材清册", ReserveProcess.class).setDataList(page.getList()).write(response, fileName).dispose();
+            j.setSuccess(true);
+            j.setMsg("导出成功!");
+            return j;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导出甲供材清册失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+   
+    /**
+     * 下载导入模板
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:reserveProcess:import")
+    @RequestMapping(value = "template")
+    public AjaxJson importTemplate(HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "物料规范信息详细导入模板.xlsx";
+            List<BasicInformation> list = Lists.newArrayList();
+            new ExportExcel("物料规范详细信息表", ReserveProcess.class, 1).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+    /***
+     * 设计单位审核
+     * */
+    @ResponseBody
+    @RequestMapping(value = "actDesignUnit")
+    public AjaxJson actDesignUnit(Act act, ReserveProcess reserveProcess) {
+        AjaxJson j = new AjaxJson();
+        String flag = act.getFlag();
+        try {
+            String comment = URLDecoder.decode(act.getComment(), "UTF-8");
+            act.setComment(comment);
+            if ("yes".equals(flag)) {
+                //通过流程流程定义号查询项目编码,查询是否存在甲供材信息
+                Integer materialData = reserveProcessService.findMaterialData(act.getProcInsId());
+                if (materialData <= 0) {
+                    j.setMsg("该项目没有甲供材清册");
+                    j.setSuccess(false);
+                    return j;
+                } else {
+                    //修改项目设计单位上传文件部分
+                    reserveProcessService.updateDesign(reserveProcess);
+                    reserveProcessService.actDesignUnit(act,reserveProcess);
+               }
+            } else {
+                reserveProcessService.actDesignUnit(act,reserveProcess);
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        j.setMsg("审批成功");
+        return j;
+    }
+
+
+    /***
+     * 设计单位审核
+     * */
+    @ResponseBody
+    @RequestMapping(value = "actDrawingReview")
+    public AjaxJson actDrawingReview(Act act) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String comment = URLDecoder.decode(act.getComment(), "UTF-8");
+            act.setComment(comment);
+            reserveProcessService.actDrawingReview(act);
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        j.setMsg("审批成功");
+        return j;
+    }
+
+    /***
+     * 技经人员审概算
+     * */
+    @ResponseBody
+    @RequestMapping(value = "actEconomicPersonnel")
+    public AjaxJson actEconomicPersonnel(Act act,ReserveProcess reserveProcess) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String comment = URLDecoder.decode(act.getComment(), "UTF-8");
+            act.setComment(comment);
+            String flag = act.getFlag();
+            //修改流程对应金额数据
+            if ("yes".equals(flag)) {
+                reserveProcessService.updateAmount(reserveProcess);
+            }
+            reserveProcessService.actEconomicPersonnel(act);
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        j.setMsg("审批成功");
+        return j;
+    }
+
+    /***
+     * 运行单位审图(联合审图)
+     * */
+    @ResponseBody
+    @RequestMapping(value = "actOperationUnit")
+    public AjaxJson actOperationUnit(Act act) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String comment = URLDecoder.decode(act.getComment(), "UTF-8");
+            act.setComment(comment);
+            reserveProcessService.actOperationUnit(act);
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        j.setMsg("审批成功");
+        return j;
+    }
+
+
+    /**
+     * 年度物资上报明细 多文件导入验证
+     */
+    @ResponseBody
+    @RequestMapping(value = "importValidations")
+    public AjaxJson importValidations(@RequestParam("file")MultipartFile[] file) {
+        AjaxJson j = new AjaxJson();
+        List<MaterialProject> list = new ArrayList<>();
+        try {
+            for(int k=0;k<file.length;k++) {
+                reserveProcessService.saveData(file[k]);
+            }
+            j.setSuccess(true);
+            j.setErrorCode("0");
+            j.setMsg("导入成功");
+        } catch (Exception e) {
+            j.setSuccess(true);
+            j.setMsg("导入失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+}

+ 209 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/web/ScaleDetailsController.java

@@ -0,0 +1,209 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.basicInformation.entity.BasicInformation;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ScaleDetails;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.service.ScaleDetailsService;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 建设规模 Controller
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/sg/managementCenter/scaleDetails")
+public class ScaleDetailsController extends BaseController {
+
+    @Autowired
+    private ScaleDetailsService scaleDetailsService;
+
+    @ModelAttribute
+    public ScaleDetails get(@RequestParam(required = false) String id) {
+        ScaleDetails entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = scaleDetailsService.get(id);
+        }
+        if (entity == null) {
+            entity = new ScaleDetails();
+        }
+        return entity;
+    }
+
+    /**
+     * 建设规模信息列表页面
+     * @param scaleDetails
+     * @param model
+     * @return
+     */
+    @RequiresPermissions("sg:reserve:scaleDetails:list")
+    @RequestMapping(value = "list")
+    public String skipList(ScaleDetails scaleDetails, Model model) {
+        model.addAttribute("scaleDetails", scaleDetails);
+        return "modules/sg/managementcenter/reserveManagement/scaleDetailsList";
+    }
+
+    /**
+     * 建设规模信息数据列表
+     * @param scaleDetails
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:scaleDetails:list")
+    @RequestMapping(value = "data")
+    public Map<String, Object> basicData(ScaleDetails scaleDetails, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<ScaleDetails> page = scaleDetailsService.findPage(new Page<ScaleDetails>(request, response), scaleDetails);
+        return getBootstrapData(page);
+    }
+     
+
+    /**
+     * 专职人员增加,编辑表单页面
+     * @param scaleDetails
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"sg:reserve:scaleDetails:add","sg:reserve:scaleDetails:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(ScaleDetails scaleDetails, Model model) {
+        model.addAttribute("scaleDetails", scaleDetails);
+        return "modules/sg/managementcenter/reserveManagement/scaleDetailsForm";
+    }
+
+    /**
+     * 保存表单
+     * @param scaleDetails
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"sg:reserve:scaleDetails:add","sg:reserve:scaleDetails:edit"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public AjaxJson save(ScaleDetails scaleDetails){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(scaleDetails);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //新增或编辑表单保存
+        scaleDetailsService.save(scaleDetails);//保存
+        j.setSuccess(true);
+        j.setMsg("保存建设规模信息成功");
+        return j;
+    }
+
+
+    /**
+     *
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"sg:reserve:scaleDetails:del"},logical=Logical.OR)
+    @RequestMapping(value = "deleteAll")
+    public AjaxJson delete(String ids){
+        AjaxJson j = new AjaxJson();
+        String idArray[] =ids.split(",");
+        for(String id : idArray){
+            scaleDetailsService.delete(scaleDetailsService.get(id));
+        }
+        j.setMsg("删除建设规模信息成功");
+        return j;
+    }
+
+   
+
+    /**
+     * 经理导入Excel数据
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:scaleDetails:import")
+    @RequestMapping(value = "import")
+    public AjaxJson jlImportBasic(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        try {
+            ImportExcel ei = new ImportExcel(file, 1, 0);
+            StringBuffer stringBuffer = new StringBuffer();
+            List<ScaleDetails> list = ei.getDataList(ScaleDetails.class);
+            for (ScaleDetails s :
+                    list) {
+                scaleDetailsService.save(s);
+            }
+            j.setSuccess(true);
+            j.setMsg("已成功导入" + stringBuffer);
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入建设规模信息失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    //导出excel
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:scaleDetails:export")
+    @RequestMapping(value = "export")
+    public AjaxJson exportFile(ScaleDetails scaleDetails, HttpServletRequest request, HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "建设规模信息"+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<ScaleDetails> page = scaleDetailsService.findPage(new Page<ScaleDetails>(request, response, -1), scaleDetails);
+            new ExportExcel("建设规模信息", ScaleDetails.class).setDataList(page.getList()).write(response, fileName).dispose();
+            j.setSuccess(true);
+            j.setMsg("导出成功!");
+            return j;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导出建设规模信息记录失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+   
+    /**
+     * 下载导入模板
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:scaleDetails:import")
+    @RequestMapping(value = "template")
+    public AjaxJson importTemplate(HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "建设规模信息详细导入模板.xlsx";
+            List<BasicInformation> list = Lists.newArrayList();
+            new ExportExcel("建设规模详细信息表", ScaleDetails.class, 1).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+    
+
+}

+ 224 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/reserveManagement/web/StandardController.java

@@ -0,0 +1,224 @@
+package com.jeeplus.modules.sg.managementcenter.reserveManagement.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.filing.basicInformation.entity.BasicInformation;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.Standard;
+import com.jeeplus.modules.sg.managementcenter.reserveManagement.service.StandardService;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 物料规范 Controller
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/sg/managementCenter/standard")
+public class StandardController extends BaseController {
+
+    @Autowired
+    private StandardService standardService;
+
+    @ModelAttribute
+    public Standard get(@RequestParam(required = false) String id) {
+        Standard entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = standardService.get(id);
+        }
+        if (entity == null) {
+            entity = new Standard();
+        }
+        return entity;
+    }
+
+    /**
+     * 物料规范信息列表页面
+     * @param standard
+     * @param model
+     * @return
+     */
+    @RequiresPermissions("sg:reserve:standard:list")
+    @RequestMapping(value = "list")
+    public String skipList(Standard standard, Model model) {
+        model.addAttribute("standard", standard);
+        return "modules/sg/managementcenter/reserveManagement/standardList";
+    }
+
+    /**
+     * 物料规范信息数据列表
+     * @param standard
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:standard:list")
+    @RequestMapping(value = "data")
+    public Map<String, Object> basicData(Standard standard, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<Standard> page = standardService.findPage(new Page<Standard>(request, response), standard);
+        return getBootstrapData(page);
+    }
+
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:standard:list")
+    @RequestMapping(value = "dataDetail")
+    public Map<String, Object> dataDetail(Standard standard, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<Standard> page = standardService.findChildPage(new Page<Standard>(request, response), standard);
+        return getBootstrapData(page);
+    }
+
+    /**
+     * 专职人员增加,编辑表单页面
+     * @param standard
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"sg:reserve:standard:add","sg:reserve:standard:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(Standard standard, Model model) {
+        model.addAttribute("standard", standard);
+        return "modules/sg/managementcenter/reserveManagement/standardForm";
+    }
+
+    /**
+     * 保存表单
+     * @param standard
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"sg:reserve:standard:add","sg:reserve:standard:edit"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public AjaxJson save(Standard standard){
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(standard);
+        if (StringUtils.isNotBlank(errMsg)){
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //新增或编辑表单保存
+        //通过储备项目编号
+        standardService.saveChild(standard);//保存
+        j.setSuccess(true);
+        j.setMsg("保存物料规范信息成功");
+        return j;
+    }
+
+
+    /**
+     *
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"sg:reserve:standard:del"},logical=Logical.OR)
+    @RequestMapping(value = "deleteAll")
+    public AjaxJson delete(String ids){
+        AjaxJson j = new AjaxJson();
+        String idArray[] =ids.split(",");
+        for(String id : idArray){
+            standardService.delete(standardService.get(id));
+        }
+        j.setMsg("删除物料规范信息成功");
+        return j;
+    }
+
+   
+
+    /**
+     * 经理导入Excel数据
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:standard:import")
+    @RequestMapping(value = "import")
+    public AjaxJson jlImportBasic(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        try {
+            ImportExcel ei = new ImportExcel(file, 1, 0);
+            StringBuffer stringBuffer = new StringBuffer();
+            List<Standard> list = ei.getDataList(Standard.class);
+            List<Standard> insertList = new ArrayList<>();
+            for (Standard s :
+                    list) {
+                if (!"".equals(s.getMaterialCode()) && !"".equals(s.getMaterialDescription())) {
+                    insertList.add(s);
+                }
+            }
+            if (insertList.size() > 0) {
+                standardService.deleteChildList(insertList);
+                standardService.insertChildList(insertList);
+            }
+            j.setSuccess(true);
+            j.setMsg("已成功导入" + stringBuffer);
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入物料规范信息失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    //导出excel
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:standard:export")
+    @RequestMapping(value = "export")
+    public AjaxJson exportFile(Standard standard, HttpServletRequest request, HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "物料规范信息"+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<Standard> page = standardService.findPage(new Page<Standard>(request, response, -1), standard);
+            new ExportExcel("物料规范信息", Standard.class).setDataList(page.getList()).write(response, fileName).dispose();
+            j.setSuccess(true);
+            j.setMsg("导出成功!");
+            return j;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导出物料规范信息记录失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+   
+    /**
+     * 下载导入模板
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:reserve:standard:import")
+    @RequestMapping(value = "template")
+    public AjaxJson importTemplate(HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "物料规范信息详细导入模板.xlsx";
+            List<BasicInformation> list = Lists.newArrayList();
+            new ExportExcel("物料规范详细信息表", Standard.class, 1).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+    
+
+}

+ 246 - 0
src/main/webapp/webpage/modules/sg/managementcenter/materialinfo/importProcess.jsp

@@ -0,0 +1,246 @@
+<%@ page contentType="text/html;charset=UTF-8"%>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<link rel="stylesheet" href="${ctxStatic}/plugin/layui/dist/css/layui.css">
+<script src="${pageContext.request.contextPath}/act/rest/js/common/jquery-1.8.3.js"></script>
+<script src="${ctxStatic}/plugin/layui/dist/layui.js"></script>
+<script src="${ctxStatic}/common/js/jeeplus.js"></script>
+
+<html>
+<head>
+    <title>添加</title>
+    <meta http-equiv=Content-Type content=“text/html;charset=utf-8″>
+    <meta http-equiv=X-UA-Compatible content=IE=EmulateIE7>
+    <meta name="renderer" content="webkit">
+    <style>
+        .layui-input{ height: 28px;margin-top: 6px;line-height: 28px}
+        .layui-table-view .layui-table {width:100%}
+        .myselect{border: none;padding: 5px 7px;min-height: 20px;color: #666666;line-height: 20px}
+        .mydiv{padding: 5px 7px;min-height: 20px;border: whitesmoke;line-height: 20px}
+        .mydiv:empty:before{content: attr(placeholder);color:#999999;}
+        .mydiv:focus:before{content:none}
+        .layui-table-tips-main{display:none}
+        .layui-table-tips-c{display:none}
+    </style>
+</head>
+<body style="height: 100%;line-height: 100%">
+<div style="padding: 10px;">
+    <div class="layui-main-bgc">
+        <div class="layui-row layui-col-space15">
+            <div class="layui-col-md12">
+                <div class="layui-card">
+                        <div class="layui-card-body" style="margin-top: 2px;">
+                            <div class="layui-upload">
+                                <button type="button" class="layui-btn layui-btn-normal" id="add_List">添加文件</button>
+                                <div class="layui-upload-list">
+                                        <table class="layui-table" id="mytable">
+                                        <thead>
+                                        <tr>
+                                            <th width="45%">*文件名称</th>
+                                            <th width="22%" style="text-align: center">操作</th>
+                                        </tr></thead>
+                                        <tbody id="tbody_List">
+
+                                        </tbody>
+                                    </table>
+                                </div>
+                        </div>
+                    </div>
+                </div>
+             </div>
+        </div>
+    </div>
+</div>
+</body>
+<script type="text/javascript">
+    /*//定义存放文件数组*/
+    var arrayFile=[];
+    /*加载layui文件上传*/
+    layui.use('upload', function(){
+        var $ = layui.jquery
+            ,upload = layui.upload;
+        //多文件列表示例
+        var tbodyListView = $('#tbody_List')
+            ,uploadListIns = upload.render({
+            elem: '#add_List'
+            ,accept: 'file'
+            ,exts:'xls|xlsx'
+            ,multiple: true
+            ,auto: false
+            ,choose: function(obj){
+                // var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
+                //读取本地文件
+                obj.preview(function(index, file, result){
+                    //添加 id 到数组
+                    arrayFile.push(index);
+                    //添加文件到数组
+                    arrayFile.push(file);
+                    //拼接生成表格
+                    var tr = $(['<tr id='+index+'>'
+                        ,'<td hidden><div class="td_id">'+index+'</div></td>'
+                        ,'<td><div contenteditable="true" readonly="true" class="mydiv1 mydiv" placeholder="请输入项目名称">'+file.name.split(".")[0]+'</div></td>'
+                        // ,'<td>'
+                        // ,' <select name="type" class="myselect"><option value="">请选择项目类型</option><option value="1">架空线路工程</option><option value="2">电缆工程</option><option value="3">变电站工程</option></select>'
+                        // ,'<td><div contenteditable="true" class="mydiv2 mydiv" placeholder="请输入项目编号"></div></td>'
+                        // ,'<td><div contenteditable="true" class="mydiv3 mydiv" placeholder="请输入供应商"></div></td>'
+                        ,'<td style="text-align: center">'
+                        ,'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>'
+                        ,'</td>'
+                        ,'</tr>'].join(''));
+                    //删除
+                    tr.find('.demo-delete').on('click', function(){
+                        // delete files[index]; //删除对应的文件
+                        tr.remove();//删除tr
+                        //清空input file当中已经存在文件
+                        uploadListIns.config.elem.next()[0].value = '';
+                    });
+
+                    tbodyListView.append(tr);
+                    //清空input file当中已经存在文件
+                    uploadListIns.config.elem.next()[0].value = '';
+                });
+            }
+        });
+    });
+
+    function importExcel(url, fn) {
+        var formdata = new FormData();
+
+        // 获取表格id的值
+        var itemBatch = $("#myinput").val();
+        var suppliesBatch = $("#suppliesBatch").val();
+        var file = $(":file").val;
+
+
+        //获取输入的项目名称
+        var div1 =  $(".mydiv1");
+
+        //判断列表中项目名称是否为空
+        if (div1.length<=0){
+            layer.msg("请选择文件",{icon: 3,offset:['40%','40%']});
+            return false;
+        }
+        //存储列表中 输入项目名称的值
+        var divvalue=[];
+        //存储列表中 输入项目名称的值
+        var div_val=[];
+        //循环获取当前项目列表的项目名称
+
+        for (var i = 0; i < div1.length; i++) {
+            //存放到集合当中
+            divvalue[i]=div1[i].innerHTML;
+            div_val[i]=div1[i].innerHTML;
+        }
+        //判断项目名称是否重复
+        for (var i = 0; i < divvalue.length; i++) {
+            if (divvalue[i] === ""||divvalue[i]==null){
+                layer.msg("请选择文件",{icon: 3,offset:['40%','40%']});
+                throw SyntaxError;
+            }
+            if(div_val[i] === divvalue[i+1]){
+                layer.msg("选择文件重复",{icon: 5,offset:['40%','40%']});
+                throw SyntaxError;
+            }
+        }
+        // if(file.length === 0){
+        //     layer.msg("请选择文件",{icon: 3,offset:['40%','40%']});
+        //     return false;
+        // }
+        if(itemBatch == null || itemBatch === ''){
+            layer.msg("请输入项目批次",{icon: 3,offset:['40%','40%']});
+            return false;
+        }
+        // if(suppliesBatch == null || suppliesBatch === ''){
+        //     layer.msg("请选择物料批次",{icon: 3,offset:['40%','40%']});
+        //     return false;
+        // }
+        var td_id=document.getElementsByClassName("td_id");
+        //存放id的数组
+        var array_id = [];
+        //循环遍历id
+        for (var i = 0; i < td_id.length; i++) {
+            array_id[i]=td_id[i].innerHTML;
+        }
+        //根据id获取对象文件传入后台
+        for (var i = 0; i < array_id.length; i++) {
+            for (var j = 0; j < arrayFile.length; j++) {
+                if (array_id[i]==arrayFile[j]){
+                    //追加文件到表单当中
+                    formdata.append("file",arrayFile[j+1]);
+                }
+            }
+        }
+        formdata.append("itemBatch",itemBatch);
+        formdata.append("batch",suppliesBatch);
+
+        jp.loading('  正在导入,请稍等...');
+        $.ajax({
+            type: "POST",
+            enctype: 'multipart/form-data',
+            url: url,
+            data: formdata,
+            processData: false, //prevent jQuery from automatically transforming the data into a query string
+            contentType: false,
+            cache: false,
+            timeout: 600000,
+            success: function (result) {
+                if(result.success && result.errorCode === '-1'){
+                    jp.confirm('项目'+result.msg+'已存在,确定覆盖嘛?', function(){
+                        jp.loading('  正在导入,请稍等...');
+                        $.ajax({
+                            type: "POST",
+                            enctype: 'multipart/form-data',
+                            url: '${ctx}/managementcenter/materialinfo/imports',
+                            data: formdata,
+                            processData: false, //prevent jQuery from automatically transforming the data into a query string
+                            contentType: false,
+                            cache: false,
+                            timeout: 600000,
+                            success: function (result) {
+                                fn(result);
+                            }
+                        })
+                    });
+                }else if((result.success && result.errorCode === '0')){
+                    fn(result)
+                }
+                // fn(result);
+            },
+            error:function(xhr, textStatus){
+                if(xhr.status == 0){
+                    jp.info("连接失败,请检查网络!")
+                }else if(xhr.status == 404){
+                    var errDetail ="<font color='red'>404,请求地址不存在!</font>";
+                    top.layer.alert(errDetail , {
+                        icon: 2,
+                        area:['auto','auto'],
+                        title:"请求出错"
+                    })
+                }else if(xhr.status && xhr.responseText){
+                    var errDetail ="<font color='red'>"+ xhr.responseText.replace(/[\r\n]/g,"<br>").replace(/[\r]/g,"<br>").replace(/[\n]/g,"<br>")+"</font>";
+                    top.layer.alert(errDetail , {
+                        icon: 2,
+                        area:['80%','70%'],
+                        title:xhr.status+"错误"
+                    })
+                }else{
+                    var errDetail =xhr.responseText=="<font color='red'>未知错误!</font>";
+                    top.layer.alert(errDetail , {
+                        icon: 2,
+                        area:['auto','auto'],
+                        title:"真悲剧,后台抛出异常了"
+                    })
+                }
+
+            }
+        })
+
+    }
+
+</script>
+<script>
+    layui.use('form',function () {
+        var  form = layui.form;
+        form.render();
+    })
+</script>
+</html>

+ 230 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/allUploadList.js

@@ -0,0 +1,230 @@
+<%@ 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: true,
+               //显示刷新按钮
+               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}/sg/reserveProcess/allUploadData",
+               //默认值为 '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 () {
+					$("#search-collapse").slideToggle();
+				},
+               columns: [
+				   {
+					   checkbox: true
+				   },
+               	{
+					   field: 'projectReserveId',
+					   title: '储备项目编号',
+				   },{
+					   field: 'projectName',
+					   title: '项目名称',
+				   },
+				   {
+					   field: 'budgetStatement',
+					   title: '预算书',
+					   formatter:function(value, row , index){
+						   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){
+						   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){
+						   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){
+						   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(" ");
+					   }
+				   }
+			   ]
+		});
+
+
+	  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(){//导出甲供材清册
+		 jp.downloadFile('${ctx}/sg/reserveProcess/export?ids=' + getIdSelections());
+	  });
+
+	$("#exportFiles").click(function(){//项目导出打包文件
+		jp.downloadFile('${ctx}/sg/reserveProcess/exportFiles?ids=' + getIdSelections());
+	});
+
+
+	  $("#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');
+  }
+
+   function add(){
+	  jp.openSaveDialog('新增图片管理', "${ctx}/managementcenter/upload/list",'800px', '500px');
+  }
+
+
+
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑图片管理', "${ctx}/managementcenter/upload/imagesForm?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看图片管理', "${ctx}/managementcenter/upload/imagesForm?id=" + id, '800px', '500px');
+ }
+
+
+
+</script>

+ 57 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/allUploadList.jsp

@@ -0,0 +1,57 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<html>
+<head>
+	<title>储备文件管理</title>
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@ include file="/webpage/include/treeview.jsp" %>
+	<%@ include file="allUploadList.js"%>
+</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="reserveProcess"
+							   class="form form-horizontal well clearfix">
+						<div class="col-xs-12 col-sm-6 col-md-4">
+							<label class="label-item single-overflow pull-left" title="储备项目编号:">储备项目编号:</label>
+							<form:input path="projectReserveId" htmlEscape="false" maxlength="64" class=" form-control"/>
+						</div>
+						<div class="col-xs-12 col-sm-6 col-md-4">
+							<div style="margin-top:26px">
+								<a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+										class="fa fa-search"></i> 查询</a>
+								<a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+										class="fa fa-refresh"></i> 重置</a>
+							</div>
+						</div>
+					</form:form>
+				</div>
+			</div>
+
+			<!-- 工具栏 -->
+			<div id="toolbar">
+				<button id="export" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 导出甲供材清册
+				</button>
+				<button id="exportFiles" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 项目导出打包文件
+				</button>
+			</div>
+
+			<!-- 表格 -->
+			<table id="testPicTable" style="table-layout:fixed" data-toolbar="#toolbar"></table>
+		</div>
+	</div>
+</div>
+</body>
+</html>

+ 549 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/designUnit.jsp

@@ -0,0 +1,549 @@
+<%@ 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"
+			});
+
+			$("#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 projectReserveId = $("#projectReserveId").val();
+					if (budgetStatement == "" || projectProposal == "" || drawings == "" || drawingSpecification == "") {
+						jp.error("不能为空");
+					} else {
+						jp.post("${ctx}/sg/reserveProcess/actDesignUnit",
+								{
+									"taskId": "${reserveProcess.act.taskId}",
+									"taskName": "${reserveProcess.act.taskName}",
+									"taskDefKey": "${reserveProcess.act.taskDefKey}",
+									"procInsId": "${reserveProcess.act.procInsId}",
+									"procDefId": "${reserveProcess.act.procDefId}",
+									"flag": "yes",
+									"projectReserveId":projectReserveId,
+									"budgetStatement":budgetStatement,
+									"projectProposal":projectProposal,
+									"drawings":drawings,
+									"drawingSpecification":drawingSpecification,
+									"comment": window.encodeURI(message)
+								},
+								function (data) {
+									if (data.success) {
+										jp.success(data.msg);
+										jp.go("${ctx}/act/task/todo");
+									} else {
+										jp.error(data.msg);
+									}
+								}
+						);
+					}
+
+				})
+			});
+			$("#no").click(function () {
+				jp.prompt("取消流程", function (message) {
+					var projectReserveId = $("#projectReserveId").val();
+					jp.post("${ctx}/sg/reserveProcess/actDesignUnit",{
+								"taskId": "${reserveProcess.act.taskId}",
+								"taskName": "${reserveProcess.act.taskName}",
+								"taskDefKey": "${reserveProcess.act.taskDefKey}",
+								"procInsId": "${reserveProcess.act.procInsId}",
+								"procDefId": "${reserveProcess.act.procDefId}",
+								"flag": "no",
+								"projectReserveId":projectReserveId,
+								"comment": window.encodeURI(message)
+							},
+							function (data) {
+								if (data.success) {
+									jp.success(data.msg);
+									jp.go("${ctx}/act/task/todo")
+								}
+							}
+					)
+				})
+			});
+
+			$("#moreImport").click(function(){
+				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}/sg/reserveProcess/importValidations', 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);
+					}
+				});
+			})
+		});
+	</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 id="toolbar">
+						<button id="moreImport" class="btn btn-info">
+							<i class="fa fa-file-excel-o"></i> 多文件导入
+						</button>
+					</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="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">项目名称:</label></td>
+									<td class="width-35">
+										<form:input path="projectName" 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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.blockSupply" 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="reserveManagement.gridNumber" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">单元格编号:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.cellNumber" 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="reserveManagement.powerGridProjectId" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">建设必要性及内容:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.whetherWindwardProject" 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="reserveManagement.projectUrgencyDegree" htmlEscape="false" readonly="true" class="form-control number"/>
+									</td>
+									<td class="width-15 active"><label class="">拟实施下达年份:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.implementIssuedYear" 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="reserveManagement.implementBatch" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">备注:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.basicRemarks" htmlEscape="false" rows="3" maxlength="200" 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="reserveManagement.designCondition" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否通过省公司评审:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.whetherPassReview" 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="reserveManagement.whetherNeedWiringDiagram" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否完成物资清册编制:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.whetherFinishMaterials" 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="reserveManagement.whetherFinishDrawing" 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="reserveManagement.disclosureToCoordinate" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">交底参与部门:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.disclosureParticipate" 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="reserveManagement.whetherFinishDisclosure" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">项目管理中心人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.projectManagementPeople" 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="reserveManagement.designingInstitutePeople" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">经研所人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.ifoPeople" 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="reserveManagement.regionalCenterPeople" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">不停电作业中心人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.uninterruptedOperationPeople" 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="reserveManagement.workMode" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">交底完成日期:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.disclosureFinishDate" 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="reserveManagement.disclosureRemarks" htmlEscape="false" rows="3" maxlength="255" 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:textarea path="reserveManagement.projectDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">不具备立项条件说明:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.doNotPossessProjectDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">方案变更说明:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.changedProgramsExplain" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处难度初判:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.initialDifficulty" 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="reserveManagement.capitalEquipment" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否有变电站新出线:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.substationNewLine" 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="reserveManagement.whetherImplement" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">现场情况描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.fieldDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有实施必要性:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.necessaryOfImplementation" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">实施无必要描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.unnecessaryDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否存在前置条件:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.precondition" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">前置条件描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.conditionsDescribed" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否存在施工方案问题:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.constructionSchemeProblem" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">施工方案问题描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.problemDescriptionOfConstructionScheme" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">现场是否存在安全隐患:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.existingSecurityThreat" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">安全隐患描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.safetyHazardDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否需要定制物资:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.customizedMaterials" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">定制物资描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.materialDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有拆旧物资:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.dismantlingTheOldMaterial" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">作业方式:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.operatingType" 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="reserveManagement.civilWork" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">停电问题描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.problemDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有立杆工作量:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.verticalRodWorkload" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">总工作量描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.totalWorkloadDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">区域中心:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.regionalCenter" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">供电所辖区:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.powerSupplyArea" 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="reserveManagement.zhengLocation" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处类型(可多类):</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.zhengType" 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="reserveManagement.zhengObject" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.zhengDescribe" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.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="reserveManagement.courseEvaluationProcedures" 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="reserveManagement.zhengDifficultyWarn" htmlEscape="false" rows="3" maxlength="255" 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>
+								</tbody>
+							</table>
+						</form:form>
+
+						<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>

+ 224 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/drawingReview.js

@@ -0,0 +1,224 @@
+<%@ 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}/sg/reserveProcess/allUploadData",
+               //默认值为 '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(" ");
+						   }
+					   }
+				   }
+			   ]
+		});
+
+
+	  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(){//导出Excel文件
+			jp.downloadFile('${ctx}/test/pic/testPic/export');
+	  });
+
+
+	  $("#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');
+  }
+
+   function add(){
+	  jp.openSaveDialog('新增图片管理', "${ctx}/managementcenter/upload/list",'800px', '500px');
+  }
+
+
+
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑图片管理', "${ctx}/managementcenter/upload/imagesForm?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看图片管理', "${ctx}/managementcenter/upload/imagesForm?id=" + id, '800px', '500px');
+ }
+
+
+
+</script>

+ 482 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/drawingReview.jsp

@@ -0,0 +1,482 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<html>
+<head>
+	<title>项目经理审图</title>
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@ include file="/webpage/include/treeview.jsp" %>
+	<%@ include file="drawingReview.js"%>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+			$('#disclosureFinishDate').datetimepicker({
+				format: "YYYY-MM-DD"
+			});
+
+			$("#agree").click(function () {
+				jp.prompt("通过", function (message) {
+					jp.post("${ctx}/sg/reserveProcess/actDrawingReview",
+						{
+							"taskId": "${reserveProcess.act.taskId}",
+							"taskName": "${reserveProcess.act.taskName}",
+							"taskDefKey": "${reserveProcess.act.taskDefKey}",
+							"procInsId": "${reserveProcess.act.procInsId}",
+							"procDefId": "${reserveProcess.act.procDefId}",
+							"flag": "yes",
+							"comment": window.encodeURI(message)
+						},
+						function (data) {
+							if (data.success) {
+								jp.success(data.msg);
+								jp.go("${ctx}/act/task/todo");
+							} else {
+								jp.error(data.msg);
+							}
+						}
+				);
+				})
+			});
+			$("#no").click(function () {
+				jp.prompt("取消流程", function (message) {
+					jp.post("${ctx}/sg/reserveProcess/actDrawingReview",
+						{
+							"taskId": "${reserveProcess.act.taskId}",
+							"taskName": "${reserveProcess.act.taskName}",
+							"taskDefKey": "${reserveProcess.act.taskDefKey}",
+							"procInsId": "${reserveProcess.act.procInsId}",
+							"procDefId": "${reserveProcess.act.procDefId}",
+							"flag": "no",
+							"comment": window.encodeURI(message)
+						},
+						function (data) {
+							if (data.success) {
+								jp.success(data.msg);
+								jp.go("${ctx}/act/task/todo")
+							}
+						}
+					)
+				})
+			});
+
+		});
+	</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="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">项目名称:</label></td>
+									<td class="width-35">
+										<form:input path="projectName" 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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.blockSupply" 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="reserveManagement.gridNumber" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">单元格编号:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.cellNumber" 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="reserveManagement.powerGridProjectId" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">建设必要性及内容:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.whetherWindwardProject" 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="reserveManagement.projectUrgencyDegree" htmlEscape="false" readonly="true" class="form-control number"/>
+									</td>
+									<td class="width-15 active"><label class="">拟实施下达年份:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.implementIssuedYear" 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="reserveManagement.implementBatch" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">备注:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.basicRemarks" htmlEscape="false" rows="3" maxlength="200" 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="reserveManagement.designCondition" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否通过省公司评审:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.whetherPassReview" 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="reserveManagement.whetherNeedWiringDiagram" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否完成物资清册编制:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.whetherFinishMaterials" 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="reserveManagement.whetherFinishDrawing" 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="reserveManagement.disclosureToCoordinate" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">交底参与部门:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.disclosureParticipate" 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="reserveManagement.whetherFinishDisclosure" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">项目管理中心人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.projectManagementPeople" 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="reserveManagement.designingInstitutePeople" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">经研所人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.ifoPeople" 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="reserveManagement.regionalCenterPeople" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">不停电作业中心人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.uninterruptedOperationPeople" 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="reserveManagement.workMode" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">交底完成日期:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.disclosureFinishDate" 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="reserveManagement.disclosureRemarks" htmlEscape="false" rows="3" maxlength="255" 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:textarea path="reserveManagement.projectDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">不具备立项条件说明:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.doNotPossessProjectDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">方案变更说明:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.changedProgramsExplain" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处难度初判:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.initialDifficulty" 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="reserveManagement.capitalEquipment" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否有变电站新出线:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.substationNewLine" 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="reserveManagement.whetherImplement" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">现场情况描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.fieldDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有实施必要性:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.necessaryOfImplementation" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">实施无必要描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.unnecessaryDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否存在前置条件:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.precondition" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">前置条件描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.conditionsDescribed" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否存在施工方案问题:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.constructionSchemeProblem" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">施工方案问题描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.problemDescriptionOfConstructionScheme" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">现场是否存在安全隐患:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.existingSecurityThreat" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">安全隐患描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.safetyHazardDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否需要定制物资:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.customizedMaterials" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">定制物资描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.materialDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有拆旧物资:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.dismantlingTheOldMaterial" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">作业方式:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.operatingType" 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="reserveManagement.civilWork" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">停电问题描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.problemDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有立杆工作量:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.verticalRodWorkload" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">总工作量描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.totalWorkloadDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">区域中心:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.regionalCenter" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">供电所辖区:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.powerSupplyArea" 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="reserveManagement.zhengLocation" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处类型(可多类):</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.zhengType" 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="reserveManagement.zhengObject" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.zhengDescribe" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.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="reserveManagement.courseEvaluationProcedures" 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="reserveManagement.zhengDifficultyWarn" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								</tbody>
+							</table>
+						</form:form>
+						<table id="testPicTable"   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>

+ 216 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/economicPersonnel.js

@@ -0,0 +1,216 @@
+<%@ 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}/sg/reserveProcess/uploadData",
+               //默认值为 '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){
+						   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){
+						   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){
+						   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){
+						   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(" ");
+					   }
+				   }
+			   ]
+		});
+
+
+	  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(){//导出Excel文件
+			jp.downloadFile('${ctx}/test/pic/testPic/export');
+	  });
+
+
+	  $("#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');
+  }
+
+   function add(){
+	  jp.openSaveDialog('新增图片管理', "${ctx}/managementcenter/upload/list",'800px', '500px');
+  }
+
+
+
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑图片管理', "${ctx}/managementcenter/upload/imagesForm?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看图片管理', "${ctx}/managementcenter/upload/imagesForm?id=" + id, '800px', '500px');
+ }
+
+
+
+</script>

+ 615 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/economicPersonnel.jsp

@@ -0,0 +1,615 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<html>
+<head>
+	<title>技经人员审概算</title>
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@ include file="/webpage/include/treeview.jsp" %>
+	<%@ include file="economicPersonnel.js"%>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+			$('#disclosureFinishDate').datetimepicker({
+				format: "YYYY-MM-DD"
+			});
+
+			$("#agree").click(function () {
+				jp.prompt("通过", function (message) {
+					var submittedApproval = $("#submittedApproval").val();
+					var constructionCost = $("#constructionCost").val();
+					var amountFunds = $("#amountFunds").val();
+					var otherExpenses = $("#otherExpenses").val();
+					var preliminaryCost = $("#preliminaryCost").val();
+					var investigationFee = $("#investigationFee").val();
+					var designFee = $("#designFee").val();
+					var supervisionFee = $("#supervisionFee").val();
+					var examineIncluding = $("#examineIncluding").val();
+					var deductibleTaxes = $("#deductibleTaxes").val();
+					var examineInExcluding = $("#examineInExcluding").val();
+					var constructionTax = $("#constructionTax").val();
+					var amountTax = $("#amountTax").val();
+					var otherTax = $("#otherTax").val();
+					var preliminaryTax = $("#preliminaryTax").val();
+					var investigationTax = $("#investigationTax").val();
+					var designTax = $("#designTax").val();
+					var supervisionTax = $("#supervisionTax").val();
+					jp.post("${ctx}/sg/reserveProcess/actEconomicPersonnel",
+						{
+							"taskId": "${reserveProcess.act.taskId}",
+							"taskName": "${reserveProcess.act.taskName}",
+							"taskDefKey": "${reserveProcess.act.taskDefKey}",
+							"procInsId": "${reserveProcess.act.procInsId}",
+							"procDefId": "${reserveProcess.act.procDefId}",
+							"flag": "yes",
+							"submittedApproval" : submittedApproval,
+							"constructionCost" : constructionCost,
+							"amountFunds" : amountFunds,
+							"otherExpenses" : otherExpenses,
+							"preliminaryCost" : preliminaryCost,
+							"investigationFee" : investigationFee,
+							"designFee" : designFee,
+							"supervisionFee" : supervisionFee,
+							"examineIncluding" : examineIncluding,
+							"deductibleTaxes" : deductibleTaxes,
+							"examineInExcluding" : examineInExcluding,
+							"constructionTax" : constructionTax,
+							"amountTax" : amountTax,
+							"otherTax" : otherTax,
+							"preliminaryTax" : preliminaryTax,
+							"investigationTax" : investigationTax,
+							"designTax" : designTax,
+							"supervisionTax" : supervisionTax,
+							"comment": window.encodeURI(message)
+						},
+						function (data) {
+							if (data.success) {
+								jp.success(data.msg);
+								jp.go("${ctx}/act/task/todo");
+							} else {
+								jp.error(data.msg);
+							}
+						}
+				);
+				})
+			});
+			$("#no").click(function () {
+				jp.prompt("取消流程", function (message) {
+					jp.post("${ctx}/sg/reserveProcess/actEconomicPersonnel",
+						{
+							"taskId": "${reserveProcess.act.taskId}",
+							"taskName": "${reserveProcess.act.taskName}",
+							"taskDefKey": "${reserveProcess.act.taskDefKey}",
+							"procInsId": "${reserveProcess.act.procInsId}",
+							"procDefId": "${reserveProcess.act.procDefId}",
+							"flag": "no",
+							"comment": window.encodeURI(message)
+						},
+						function (data) {
+							if (data.success) {
+								jp.success(data.msg);
+								jp.go("${ctx}/act/task/todo")
+							}
+						}
+					)
+				})
+			});
+
+		});
+	</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="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">项目名称:</label></td>
+									<td class="width-35">
+										<form:input path="projectName" 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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.blockSupply" 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="reserveManagement.gridNumber" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">单元格编号:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.cellNumber" 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="reserveManagement.powerGridProjectId" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">建设必要性及内容:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.whetherWindwardProject" 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="reserveManagement.projectUrgencyDegree" htmlEscape="false" readonly="true" class="form-control number"/>
+									</td>
+									<td class="width-15 active"><label class="">拟实施下达年份:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.implementIssuedYear" 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="reserveManagement.implementBatch" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">备注:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.basicRemarks" htmlEscape="false" rows="3" maxlength="200" 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="reserveManagement.designCondition" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否通过省公司评审:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.whetherPassReview" 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="reserveManagement.whetherNeedWiringDiagram" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否完成物资清册编制:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.whetherFinishMaterials" 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="reserveManagement.whetherFinishDrawing" 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="reserveManagement.disclosureToCoordinate" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">交底参与部门:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.disclosureParticipate" 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="reserveManagement.whetherFinishDisclosure" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">项目管理中心人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.projectManagementPeople" 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="reserveManagement.designingInstitutePeople" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">经研所人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.ifoPeople" 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="reserveManagement.regionalCenterPeople" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">不停电作业中心人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.uninterruptedOperationPeople" 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="reserveManagement.workMode" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">交底完成日期:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.disclosureFinishDate" 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="reserveManagement.disclosureRemarks" htmlEscape="false" rows="3" maxlength="255" 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:textarea path="reserveManagement.projectDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">不具备立项条件说明:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.doNotPossessProjectDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">方案变更说明:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.changedProgramsExplain" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处难度初判:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.initialDifficulty" 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="reserveManagement.capitalEquipment" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否有变电站新出线:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.substationNewLine" 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="reserveManagement.whetherImplement" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">现场情况描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.fieldDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有实施必要性:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.necessaryOfImplementation" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">实施无必要描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.unnecessaryDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否存在前置条件:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.precondition" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">前置条件描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.conditionsDescribed" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否存在施工方案问题:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.constructionSchemeProblem" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">施工方案问题描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.problemDescriptionOfConstructionScheme" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">现场是否存在安全隐患:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.existingSecurityThreat" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">安全隐患描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.safetyHazardDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否需要定制物资:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.customizedMaterials" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">定制物资描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.materialDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有拆旧物资:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.dismantlingTheOldMaterial" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">作业方式:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.operatingType" 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="reserveManagement.civilWork" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">停电问题描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.problemDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有立杆工作量:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.verticalRodWorkload" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">总工作量描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.totalWorkloadDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">区域中心:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.regionalCenter" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">供电所辖区:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.powerSupplyArea" 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="reserveManagement.zhengLocation" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处类型(可多类):</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.zhengType" 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="reserveManagement.zhengObject" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.zhengDescribe" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.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="reserveManagement.courseEvaluationProcedures" 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="reserveManagement.zhengDifficultyWarn" htmlEscape="false" rows="3" maxlength="255" 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="submittedApproval" htmlEscape="false" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">施工费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="constructionCost" htmlEscape="false" class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">甲供物资金额(含税):</label></td>
+									<td class="width-35">
+										<form:input path="amountFunds" htmlEscape="false" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">其他费用(含税):</label></td>
+									<td class="width-35">
+										<form:input path="otherExpenses" htmlEscape="false" class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">送审前期工程费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="preliminaryCost" htmlEscape="false" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">送审勘察费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="investigationFee" htmlEscape="false" class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">送审设计费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="designFee" htmlEscape="false" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">送审监理费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="supervisionFee" 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="examineIncluding" htmlEscape="false" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">可抵扣税金</label></td>
+									<td class="width-35">
+										<form:input path="deductibleTaxes" htmlEscape="false" class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">审定概算金额(除税):</label></td>
+									<td class="width-35">
+										<form:input path="examineInExcluding" htmlEscape="false" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">施工费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="constructionTax" htmlEscape="false" class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">甲供物资金额(含税):</label></td>
+									<td class="width-35">
+										<form:input path="amountTax" htmlEscape="false" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">其他费用(含税):</label></td>
+									<td class="width-35">
+										<form:input path="otherTax" htmlEscape="false" class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">送审前期工程费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="preliminaryTax" htmlEscape="false" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">送审勘察费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="investigationTax" htmlEscape="false" class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">送审设计费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="designTax" htmlEscape="false" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">送审监理费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="supervisionTax" htmlEscape="false" class="form-control"/>
+									</td>
+								</tr>
+
+								</tbody>
+							</table>
+						</form:form>
+						<table id="testPicTable"   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>

+ 216 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/operationUnit.js

@@ -0,0 +1,216 @@
+<%@ 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}/sg/reserveProcess/uploadData",
+               //默认值为 '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){
+						   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){
+						   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){
+						   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){
+						   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(" ");
+					   }
+				   }
+			   ]
+		});
+
+
+	  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(){//导出Excel文件
+			jp.downloadFile('${ctx}/test/pic/testPic/export');
+	  });
+
+
+	  $("#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');
+  }
+
+   function add(){
+	  jp.openSaveDialog('新增图片管理', "${ctx}/managementcenter/upload/list",'800px', '500px');
+  }
+
+
+
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑图片管理', "${ctx}/managementcenter/upload/imagesForm?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看图片管理', "${ctx}/managementcenter/upload/imagesForm?id=" + id, '800px', '500px');
+ }
+
+
+
+</script>

+ 579 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/operationUnit.jsp

@@ -0,0 +1,579 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+
+<html>
+<head>
+	<title>运行单位审图</title>
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@ include file="/webpage/include/treeview.jsp" %>
+	<%@ include file="operationUnit.js"%>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+			$('#disclosureFinishDate').datetimepicker({
+				format: "YYYY-MM-DD"
+			});
+
+			$("#agree").click(function () {
+				jp.prompt("通过", function (message) {
+					jp.post("${ctx}/sg/reserveProcess/actOperationUnit",
+						{
+							"taskId": "${reserveProcess.act.taskId}",
+							"taskName": "${reserveProcess.act.taskName}",
+							"taskDefKey": "${reserveProcess.act.taskDefKey}",
+							"procInsId": "${reserveProcess.act.procInsId}",
+							"procDefId": "${reserveProcess.act.procDefId}",
+							"flag": "yes",
+							"comment": window.encodeURI(message)
+						},
+						function (data) {
+							if (data.success) {
+								jp.success(data.msg);
+								jp.go("${ctx}/act/task/todo");
+							} else {
+								jp.error(data.msg);
+							}
+						}
+				);
+				})
+			});
+			$("#no").click(function () {
+				jp.prompt("取消流程", function (message) {
+					jp.post("${ctx}/sg/reserveProcess/actOperationUnit",
+						{
+							"taskId": "${reserveProcess.act.taskId}",
+							"taskName": "${reserveProcess.act.taskName}",
+							"taskDefKey": "${reserveProcess.act.taskDefKey}",
+							"procInsId": "${reserveProcess.act.procInsId}",
+							"procDefId": "${reserveProcess.act.procDefId}",
+							"flag": "no",
+							"comment": window.encodeURI(message)
+						},
+						function (data) {
+							if (data.success) {
+								jp.success(data.msg);
+								jp.go("${ctx}/act/task/todo")
+							}
+						}
+					)
+				})
+			});
+
+		});
+	</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="projectReserveId" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">项目名称:</label></td>
+									<td class="width-35">
+										<form:input path="projectName" 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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.blockSupply" 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="reserveManagement.gridNumber" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">单元格编号:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.cellNumber" 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="reserveManagement.powerGridProjectId" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">建设必要性及内容:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.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="reserveManagement.whetherWindwardProject" 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="reserveManagement.projectUrgencyDegree" htmlEscape="false" readonly="true" class="form-control number"/>
+									</td>
+									<td class="width-15 active"><label class="">拟实施下达年份:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.implementIssuedYear" 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="reserveManagement.implementBatch" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">备注:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.basicRemarks" htmlEscape="false" rows="3" maxlength="200" 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="reserveManagement.designCondition" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否通过省公司评审:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.whetherPassReview" 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="reserveManagement.whetherNeedWiringDiagram" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否完成物资清册编制:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.whetherFinishMaterials" 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="reserveManagement.whetherFinishDrawing" 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="reserveManagement.disclosureToCoordinate" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">交底参与部门:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.disclosureParticipate" 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="reserveManagement.whetherFinishDisclosure" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">项目管理中心人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.projectManagementPeople" 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="reserveManagement.designingInstitutePeople" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">经研所人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.ifoPeople" 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="reserveManagement.regionalCenterPeople" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">不停电作业中心人员:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.uninterruptedOperationPeople" 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="reserveManagement.workMode" htmlEscape="false"    readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">交底完成日期:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.disclosureFinishDate" 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="reserveManagement.disclosureRemarks" htmlEscape="false" rows="3" maxlength="255" 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:textarea path="reserveManagement.projectDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">不具备立项条件说明:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.doNotPossessProjectDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">方案变更说明:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.changedProgramsExplain" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处难度初判:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.initialDifficulty" 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="reserveManagement.capitalEquipment" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">是否有变电站新出线:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.substationNewLine" 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="reserveManagement.whetherImplement" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">现场情况描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.fieldDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有实施必要性:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.necessaryOfImplementation" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">实施无必要描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.unnecessaryDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否存在前置条件:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.precondition" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">前置条件描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.conditionsDescribed" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否存在施工方案问题:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.constructionSchemeProblem" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">施工方案问题描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.problemDescriptionOfConstructionScheme" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">现场是否存在安全隐患:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.existingSecurityThreat" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">安全隐患描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.safetyHazardDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否需要定制物资:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.customizedMaterials" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">定制物资描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.materialDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有拆旧物资:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.dismantlingTheOldMaterial" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">作业方式:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.operatingType" 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="reserveManagement.civilWork" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">停电问题描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.problemDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否有立杆工作量:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.verticalRodWorkload" htmlEscape="false"  readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">总工作量描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.totalWorkloadDescription" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">区域中心:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.regionalCenter" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">供电所辖区:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.powerSupplyArea" 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="reserveManagement.zhengLocation" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处类型(可多类):</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.zhengType" 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="reserveManagement.zhengObject" htmlEscape="false" readonly="true"  class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">政处描述:</label></td>
+									<td class="width-35">
+										<form:textarea path="reserveManagement.zhengDescribe" htmlEscape="false" rows="3" maxlength="255" readonly="true"  class="form-control"/>
+									</td>
+								</tr>
+								<tr>
+									<td class="width-15 active"><label class="">是否需规划报批:</label></td>
+									<td class="width-35">
+										<form:input path="reserveManagement.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="reserveManagement.courseEvaluationProcedures" 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="reserveManagement.zhengDifficultyWarn" htmlEscape="false" rows="3" maxlength="255" 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="submittedApproval" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">施工费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="constructionCost" 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="amountFunds" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">其他费用(含税):</label></td>
+									<td class="width-35">
+										<form:input path="otherExpenses" 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="preliminaryCost" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">送审勘察费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="investigationFee" 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="designFee" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">送审监理费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="supervisionFee" 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="examineIncluding" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">可抵扣税金</label></td>
+									<td class="width-35">
+										<form:input path="deductibleTaxes" 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="examineInExcluding" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">施工费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="constructionTax" 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="amountTax" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">其他费用(含税):</label></td>
+									<td class="width-35">
+										<form:input path="otherTax" 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="preliminaryTax" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">送审勘察费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="investigationTax" 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="designTax" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+									<td class="width-15 active"><label class="">送审监理费(含税):</label></td>
+									<td class="width-35">
+										<form:input path="supervisionTax" htmlEscape="false" readonly="true" class="form-control"/>
+									</td>
+								</tr>
+
+								</tbody>
+							</table>
+						</form:form>
+						<table id="testPicTable"   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>

+ 84 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/personnelTurnoverForm.jsp

@@ -0,0 +1,84 @@
+<%@ 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 isValidate = jp.validateForm('#inputForm');//校验表单
+            var val = $('#openProcessStatus').val();
+            if (1 == val) {
+                jp.error('项目已经开启流程,不能修改人员信息');
+            }else {
+                if (!isValidate) {
+                    return false;
+                } else {
+                    jp.loading();
+                    jp.post("${ctx}/sg/managementCenter/personnelTurnover/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="personnelTurnover" class="form-horizontal">
+    <form:hidden path="id"/>
+    <form:hidden path="openProcessStatus"/>
+    <table class="table table-bordered">
+        <tbody>
+        <tr>
+            <td class="width-15 active"><label class="">储备项目编号:</label></td>
+            <td class="width-35">
+                <form:input path="projectReserveId" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class="">项目名称:</label></td>
+            <td class="width-35">
+                <form:input path="projectName" readonly="true" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">设计单位人员:</label></td>
+            <td class="width-35">
+                <form:input path="designUnit" htmlEscape="false" class="form-control required"/>
+            </td>
+            <td class="width-15 active"><label class="">项目经理审图:</label></td>
+            <td class="width-35">
+                <form:input path="projectManager" htmlEscape="false" class="form-control required"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">技经人员审概算:</label></td>
+            <td class="width-35">
+                <form:input path="economicPersonnel" htmlEscape="false" class="form-control required"/>
+            </td>
+            <td class="width-15 active"><label class="">运行单位审图:</label></td>
+            <td class="width-35">
+                <form:input path="operationUnit" htmlEscape="false" class="form-control required"/>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</form:form>
+</body>
+</html>

+ 253 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/personnelTurnoverList.js

@@ -0,0 +1,253 @@
+<%@ 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: 5,
+        //可供选择的每页的行数(*)
+        pageList: [5, 10, 25, 50, 100],
+        //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+        url: "${ctx}/sg/managementCenter/personnelTurnover/data",
+        //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+        //queryParamsType:'',
+        ////查询参数,每次调用是会带上这个参数,可自定义
+        queryParams: function (params) {
+            var searchParam = $("#searchForm").serializeJSON();
+            searchParam.pageNo = params.limit === undefined ? "1" : params.offset / params.limit + 1;
+            searchParam.pageSize = params.limit === undefined ? -1 : params.limit;
+            searchParam.orderBy = params.sort === undefined ? "" : params.sort + " " + params.order;
+            return searchParam;
+        },
+        //分页方式:client客户端分页,server服务端分页(*)
+        sidePagination: "server",
+        contextMenuTrigger: "right",//pc端 按右键弹出菜单
+        contextMenuTriggerMobile: "press",//手机端 弹出菜单,click:单击, press:长按。
+        contextMenu: '#context-menu',
+        onContextMenuItem: function (row, $el) {
+            if ($el.data("item") == "edit") {
+                edit(row.id);
+            } else if ($el.data("item") == "view") {
+                view(row.id);
+            } else if ($el.data("item") == "delete") {
+                jp.confirm('确认要删除该表单记录吗?', function () {
+                    jp.loading();
+                    jp.get("${ctx}/sg/managementcenter/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,
+            }
+            ,{
+                field: 'projectReserveId',
+                width:150,
+                title: '项目储备编号',
+                formatter:function(value, row , index){
+                    if(value == null || value ==""){
+                        value = "-";
+                    }
+                <c:choose>
+                    <c:when test="${fns:hasPermission('sg:reserve:personnelTurnover:edit')}">
+                        return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+                    </c:when>
+                    <c:otherwise>
+                        return value;
+                    </c:otherwise>
+                </c:choose>
+                }
+            },{
+                field: 'projectName',
+                width:100,
+                title: '项目名称',
+            },{
+            field: 'designUnit',
+            width:100,
+            title: '设计单位人员',
+            },{
+                field: 'projectManager',
+                width:100,
+                title: '项目经理审图',
+            },{
+                field: 'economicPersonnel',
+                width:100,
+                title: '技经人员审概算',
+            },{
+                field: 'operationUnit',
+                width:100,
+                title: '运行单位审图',
+            }
+        ]
+    });
+
+
+    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);
+    });
+
+
+    $("#import").click(function () {
+        jp.open({
+            type: 2,
+            area: [500, 200],
+            auto: true,
+            title: "导入数据",
+            content: "${ctx}/tag/importExcel",
+            btn: ['确定', '关闭'],
+/*            btn1: function (index) {
+                jp.downloadFile('${ctx}/sg/managementCenter/personnelTurnover/schemeTemplate');
+            },*/
+            btn1: function (index, layero) {
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                iframeWin.contentWindow.importExcel('${ctx}/sg/managementCenter/personnelTurnover/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 () {
+        jp.downloadFile('${ctx}/sg/managementCenter/personnelTurnover/export');
+    });
+
+    $("#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"
+    });
+});
+
+function getIdSelections() {
+    return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+
+//刷新列表
+function refresh() {
+    $('#projectTable').bootstrapTable('refresh');
+}
+
+
+function edit(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑储备项目方案交底结论', "${ctx}/sg/managementCenter/personnelTurnover/form?id=" + id, '800px', '500px');
+}
+
+function view(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openViewDialog('查看储备项目方案交底结论', "${ctx}/sg/managementCenter/personnelTurnover/view?id=" + id, '800px', '500px');
+}
+
+function deleteAll(){
+
+    jp.confirm('确认要删除该储备项目方案交底结论吗?', function(){
+        jp.loading();
+        jp.get("${ctx}/sg/managementCenter/personnelTurnover/deleteAll?ids=" + getIdSelections(), function(data){
+            if(data.success){
+                $('#projectTable').bootstrapTable('refresh');
+                jp.success(data.msg);
+            }else{
+                jp.error(data.msg);
+            }
+        })
+
+    })
+}
+//转换日期格式(时间戳转换为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>

+ 74 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/personnelTurnoverList.jsp

@@ -0,0 +1,74 @@
+<%@ 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="personnelTurnoverList.js" %>
+	<style type="text/css">
+		.table {
+			table-layout: fixed;
+			word-break: break-all;
+			word-wrap: break-word;
+			text-align: center;
+		}
+		.table th, .table td {
+			text-align: center;
+			vertical-align: middle !important;
+		}
+	</style>
+</head>
+<body>
+	<div class="wrapper wrapper-content">
+	<div class="panel panel-primary">
+	<div class="panel-heading">
+		<h3 class="panel-title">人员流转信息</h3>
+	</div>
+	<div class="panel-body">
+		<!-- 搜索 -->
+		<div id="search-collapse" class="collapse">
+			<div class="accordion-inner">
+				<form:form id="searchForm" modelAttribute="personnelTurnover" class="form form-horizontal well clearfix">
+					<div class="col-xs-12 col-sm-6 col-md-4">
+						<label class="label-item single-overflow pull-left" title="储备编码:">储备编码:</label>
+						<form:input path="projectReserveId" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-4">
+						<div style="margin-top:26px">
+							<a  id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i class="fa fa-search"></i> 查询</a>
+							<a  id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm" ><i class="fa fa-refresh"></i> 重置</a>
+						</div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+	
+	<!-- 工具栏 -->
+	<div id="toolbar">
+			<shiro:hasPermission name="sg:reserve:personnelTurnover:edit">
+				<button id="edit" class="btn btn-primary" onclick="edit()">
+					<i class="glyphicon glyphicon-edit"></i> 修改
+				</button>
+			</shiro:hasPermission>
+			<shiro:hasPermission name="sg:reserve:personnelTurnover:import">
+				<button id="import" class="btn btn-info">
+					<i class="fa fa-folder-open-o"></i> 导入方案交底结论
+				</button>
+			</shiro:hasPermission>
+			<shiro:hasPermission name="sg:reserve:personnelTurnover:export">
+				<button id="btnExport" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 导出
+				</button>
+			</shiro:hasPermission>
+		    </div>
+	<!-- 表格 -->
+	<table id="projectTable" style="table-layout:fixed" class="table" data-toolbar="#toolbar"></table>
+
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 125 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/progressScheduleList.js

@@ -0,0 +1,125 @@
+<%@ 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: 5,
+        //可供选择的每页的行数(*)
+        pageList: [5, 10, 25, 50, 100],
+        //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+        url: "${ctx}/sg/managementCenter/progressSchedule/data",
+        //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+        //queryParamsType:'',
+        ////查询参数,每次调用是会带上这个参数,可自定义
+        queryParams: function (params) {
+            var searchParam = $("#searchForm").serializeJSON();
+            searchParam.pageNo = params.limit === undefined ? "1" : params.offset / params.limit + 1;
+            searchParam.pageSize = params.limit === undefined ? -1 : params.limit;
+            searchParam.orderBy = params.sort === undefined ? "" : params.sort + " " + params.order;
+            return searchParam;
+        },
+        //分页方式:client客户端分页,server服务端分页(*)
+        sidePagination: "server",
+        contextMenuTrigger: "right",//pc端 按右键弹出菜单
+        contextMenuTriggerMobile: "press",//手机端 弹出菜单,click:单击, press:长按。
+        contextMenu: '#context-menu',
+        onContextMenuItem: function (row, $el) {
+        },
+        onClickRow: function (row, $el) {
+        },
+        onShowSearch: function () {
+            $("#search-collapse").slideToggle();
+        },
+        columns:
+        [{
+                field: 'projectReserveId',
+                title: '项目储备编号'
+            },{
+                field: 'projectName',
+                title: '项目名称',
+            },{
+                field: 'projectBasic',
+                title: '储备项目基本信息(完成时间)',
+            },{
+                field: 'conclusionDisclosure',
+                title: '方案交底结论(完成时间)',
+            },{
+                field: 'designUpload',
+                title: '设计单位上传(完成时间)',
+            },{
+                field: 'drawingReview',
+                title: '项目经理审图(完成时间)',
+            },{
+            field: 'estimate',
+            title: '技经人员审概算(完成时间)',
+        },{
+            field: 'jointDrawing',
+            title: '联合审图(完成时间)',
+        }
+        ]
+    });
+
+
+    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);
+    });
+
+    $("#search").click("click", function () {// 绑定查询按扭
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $("#reset").click("click", function () {// 绑定查询按扭
+        $("#searchForm  input").val("");
+        $("#searchForm  select").val("");
+        $("#searchForm  .select-item").html("");
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+
+});
+
+
+//刷新列表
+function refresh() {
+    $('#projectTable').bootstrapTable('refresh');
+}
+
+
+
+
+</script>

+ 57 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/progressScheduleList.jsp

@@ -0,0 +1,57 @@
+<%@ 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="progressScheduleList.js" %>
+	<style type="text/css">
+		.table {
+			table-layout: fixed;
+			word-break: break-all;
+			word-wrap: break-word;
+			text-align: center;
+		}
+		.table th, .table td {
+			text-align: center;
+			vertical-align: middle !important;
+		}
+	</style>
+</head>
+<body>
+	<div class="wrapper wrapper-content">
+	<div class="panel panel-primary">
+	<div class="panel-heading">
+		<h3 class="panel-title">人员流转信息</h3>
+	</div>
+	<div class="panel-body">
+		<!-- 搜索 -->
+		<div id="search-collapse" class="collapse">
+			<div class="accordion-inner">
+				<form:form id="searchForm" modelAttribute="progressSchedule" class="form form-horizontal well clearfix">
+					<div class="col-xs-12 col-sm-6 col-md-4">
+						<label class="label-item single-overflow pull-left" title="储备编码:">储备编码:</label>
+						<form:input path="projectReserveId" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-4">
+						<div style="margin-top:26px">
+							<a  id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i class="fa fa-search"></i> 查询</a>
+							<a  id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm" ><i class="fa fa-refresh"></i> 重置</a>
+						</div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+	
+	<!-- 工具栏 -->
+	<!-- 表格 -->
+	<table id="projectTable" style="table-layout:fixed" class="table" data-toolbar="#toolbar"></table>
+
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 135 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/standardForm.jsp

@@ -0,0 +1,135 @@
+<%@ 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() {
+			$('#startDate').datetimepicker({
+				format: "YYYY-MM-DD"
+			});
+			$('#endDate').datetimepicker({
+				format: "YYYY-MM-DD"
+			});
+		});
+		function save() {
+            let isValidate = jp.validateForm('#inputForm');//校验表单
+            if(!isValidate){
+                return false;
+			}else{
+                jp.loading();
+				jp.post("${ctx}/sg/managementCenter/standard/save",$('#inputForm').serialize(), function (data) {
+					if (data.success) {
+						jp.getParent().refresh();
+						let 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).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");
+			}
+		}
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="standard" class="form-horizontal">
+		<form:hidden path="id"/>	
+		<table class="table table-bordered">
+		   <tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right"><font color="red">*</font>项目类别:</label></td>
+					<td class="width-35">
+						<form:input path="projectCategory" htmlEscape="false" readonly="true" class="form-control required"/>
+					</td>
+				</tr>
+		 	</tbody>
+		</table>
+			<div class="tabs-container">
+				<div class="tab-content">
+					<div id="tab-1" class="tab-pane fade in  active">
+						<a class="btn btn-white btn-sm" onclick="addRow('#childList', basicInformationRowIdx, basicInformationTpl);basicInformationRowIdx = basicInformationRowIdx + 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>物料编码<a style="color: red">*</a></th>
+								<th>物料描述<a style="color: red">*</a></th>
+								<th width="40">操作</th>
+							</tr>
+							</thead>
+							<tbody id="childList">
+							</tbody>
+						</table>
+						<script type="text/template" id="basicInformationTpl">//<!--
+				<tr id="childList{{idx}}">
+					<td class="hide">
+						<input id="childList{{idx}}_id" name="childList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+						<input id="childList{{idx}}_delFlag" name="childList[{{idx}}].delFlag" type="hidden" value="0"/>
+					</td>
+
+					<td  class="max-width-250">
+						<input type='text'  name="childList[{{idx}}].materialCode" class="form-control"  value="{{row.materialCode}}"/>
+					</td>
+
+					<td  class="max-width-250">
+						<input type='text'  name="childList[{{idx}}].materialDescription" class="form-control"  value="{{row.materialDescription}}"/>
+					</td>
+					<td class="text-center" width="10">
+						{{#delBtn}}<span class="close" onclick="delRow(this, '#childList{{idx}}')" title="删除">&times;</span>{{/delBtn}}
+					</td>
+				</tr>//-->
+						</script>
+						<script type="text/javascript">
+							var basicInformationRowIdx = 0, basicInformationTpl = $("#basicInformationTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+							$(document).ready(function() {
+								var data = ${fns:toJson(standard.childList)};
+								for (var i=0; i<data.length; i++){
+									addRow('#childList', basicInformationRowIdx, basicInformationTpl, data[i]);
+									basicInformationRowIdx = basicInformationRowIdx + 1;
+								}
+							});
+						</script>
+					</div>
+				</div>
+			</div>
+	</form:form>
+</body>
+</html>

+ 248 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/standardList.js

@@ -0,0 +1,248 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+    $(document).ready(function () {
+        $('#dataTable').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,
+            detailView: true,
+            //是否显示行间隔色
+            striped: true,
+            //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+            cache: false,
+            //是否显示分页(*)
+            pagination: true,
+            //排序方式
+            sortOrder: "asc",
+            //初始化加载第一页,默认第一页
+            pageNumber: 1,
+            //每页的记录行数(*)
+            pageSize: 10,
+            //可供选择的每页的行数(*)
+            pageList: [10, 25, 50, 100],
+            //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+            url: "${ctx}/sg/managementCenter/standard/data",
+            //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+            //queryParamsType:'',
+            ////查询参数,每次调用是会带上这个参数,可自定义
+            queryParams: function (params) {
+                var searchParam = $("#searchForm").serializeJSON();
+                searchParam.pageNo = params.limit === undefined ? "1" : params.offset / params.limit + 1;
+                searchParam.pageSize = params.limit === undefined ? -1 : params.limit;
+                searchParam.orderBy = params.sort === undefined ? "" : params.sort + " " + params.order;
+                return searchParam;
+            },
+            //分页方式:client客户端分页,server服务端分页(*)
+            sidePagination: "server",
+            contextMenuTrigger: "right",//pc端 按右键弹出菜单
+            contextMenuTriggerMobile: "press",//手机端 弹出菜单,click:单击, press:长按。
+            contextMenu: '#context-menu',
+            onContextMenuItem: function (row, $el) {
+                if ($el.data("item") == "edit") {
+                    edit(row.id);
+                } else if ($el.data("item") == "view") {
+                    view(row.id);
+                } else if ($el.data("item") == "delete") {
+                    jp.confirm('确认要删除该数据记录吗?', function () {
+                        jp.loading();
+                        jp.get("${ctx}/sg/managementCenter/standard/delete?id=" + row.id, function (data) {
+                            if (data.success) {
+                                $('#dataTable').bootstrapTable('refresh');
+                                jp.success(data.msg);
+                            } else {
+                                jp.error(data.msg);
+                            }
+                        })
+
+                    });
+
+                }
+            },
+            onClickRow: function (row, $el) {
+            },
+            onShowSearch: function () {
+                $("#search-collapse").slideToggle();
+            },
+            columns: [
+                {
+                checkbox: true
+                },{
+                    field: 'projectCategory',
+                    title: '项目类别',
+                    formatter: function (value, row, index) {
+                        value = jp.unescapeHTML(value);
+                        return "<a href='javascript:edit(\"" + row.id + "\")'>" + value + "</a>";
+                    }
+                }
+                ,{
+                    field: 'updateDate',
+                    title: '更新时间',
+                    formatter:function (value, row, index) {
+                        return jp.dateFormat(value,"yyyy-MM-dd");
+                    }
+                }
+            ],
+            onExpandRow: function (index, row, $detail) {
+                initSubTable(index, row, $detail);
+            }
+    });
+
+        //初始化子表格(无线循环)
+        initSubTable = function (index, row, $detail) {
+            var projectCategory = row.projectCategory;
+            var cur_table = $detail.html('<table></table>').find('table');
+            $(cur_table).bootstrapTable({
+                url: '${ctx}/sg/managementCenter/standard/dataDetail',
+                method: 'post',
+                //类型json
+                dataType: "json",
+                contentType: "application/x-www-form-urlencoded",
+                queryParams : function(params) {
+                    var searchParam = $("#searchForm").serializeJSON();
+                    searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+                    searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+                    searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                    searchParam.projectCategory = projectCategory;
+                    return searchParam;
+                },
+                striped: true, //是否显示行间隔色
+                pagination: false,//显示分页
+                sidePagination: "server",
+                pageNumber:1,
+                pageSize: 10,
+                pageList: [10, 25],
+                columns: [{
+                    field: 'materialCode',
+                    title: '物料编码',
+                    width: 390
+                }, {
+                    field: 'materialDescription',
+                    title: '物料描述',
+                    width: 390,
+                }]
+            });
+        };
+
+        if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端
+            $('#dataTable').bootstrapTable("toggleView");
+        }
+
+        $('#dataTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+            'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', !$('#dataTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#dataTable').bootstrapTable('getSelections').length != 1);
+        });
+
+        $("#import").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}/sg/managementCenter/standard/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);
+                }
+            });
+        });
+
+
+        $("#export").click(function () {//导出Excel文件
+            jp.downloadFile('${ctx}/sg/managementCenter/standard/template');
+        });
+
+        $("#search").click("click", function () {// 绑定查询按扭
+            $('#dataTable').bootstrapTable('refresh');
+        });
+
+        $("#reset").click("click", function () {// 绑定查询按扭
+            $("#searchForm  input").val("");
+            $("#searchForm  select").val("");
+            $("#searchForm  .select-item").html("");
+            $('#dataTable').bootstrapTable('refresh');
+        });
+
+        $("#open").click(function () {
+            $("#dataTable").bootstrapTable('expandAllRows');
+        })
+
+        $("#close").click(function (row) {
+            $('#dataTable').bootstrapTable('refresh');
+        })
+
+    });
+
+function getIdSelections() {
+    return $.map($("#dataTable").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+function deleteAll() {
+    jp.confirm('确认要删除该数据记录吗?', function () {
+        jp.loading();
+        jp.get("${ctx}/sg/managementCenter/standard/deleteAll?ids=" + getIdSelections(), function (data) {
+            if (data.success) {
+                $('#dataTable').bootstrapTable('refresh');
+                jp.success(data.msg);
+            } else {
+                jp.error(data.msg);
+            }
+        })
+
+    })
+}
+
+//刷新列表
+function refresh() {
+    $('#dataTable').bootstrapTable('refresh');
+}
+
+function add(){
+    jp.openSaveDialog('新增', "${ctx}/sg/managementCenter/standard/form",'800px', '500px');
+}
+
+function edit(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑', "${ctx}/sg/managementCenter/standard/form?id=" + id, '800px', '500px');
+}
+
+function view(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openViewDialog('查看', "${ctx}/sg/managementCenter/standard/form?id=" + id, '800px', '500px');
+}
+</script>

+ 92 - 0
src/main/webapp/webpage/modules/sg/managementcenter/reserveManagement/standardList.jsp

@@ -0,0 +1,92 @@
+<%@ 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="standardList.js" %>
+    <script src="${ctxStatic}/plugin/bootstrapTable/bootstrap-table-resizable.js"></script>
+    <script src="${ctxStatic}/plugin/bootstrapTable/colResizable-1.6.js"></script>
+</head>
+<style>
+    .table {
+        table-layout: fixed;
+        word-break: break-all;
+        word-wrap: break-word;
+        text-align: center;
+    }
+
+    .table th, .table td {
+        text-align: center;
+        vertical-align: middle !important;
+    }
+</style>
+<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="standard"
+                               class="form form-horizontal well clearfix">
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <label class="label-item single-overflow pull-left" title="序号:">序号:</label>
+                            <form:input path="projectCategory" htmlEscape="false" maxlength="64" class=" form-control"/>
+                        </div>
+                        <div class="col-xs-12 col-sm-6 col-md-4">
+                            <div style="margin-top:26px">
+                                <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-search"></i> 查询</a>
+                                <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                        class="fa fa-refresh"></i> 重置</a>
+                            </div>
+                        </div>
+                    </form:form>
+                </div>
+            </div>
+
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="open" class="btn btn-primary" >
+                    <i class="glyphicon glyphicon-list"></i> 全部展开
+                </button>
+                <button id="close" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-minus"></i> 全部折叠
+                </button>
+                <shiro:hasPermission name="sg:reserve:standard:add">
+                    <button id="add" class="btn btn-primary" onclick="add()">
+                        <i class="glyphicon glyphicon-plus"></i> 新建
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="sg:reserve:standard:edit">
+                    <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                        <i class="glyphicon glyphicon-edit"></i> 修改
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="sg:reserve:standard:import">
+                    <button id="import" class="btn btn-info">
+                        <i class="fa fa-folder-open-o"></i> 导入
+                    </button>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="sg:reserve:standard:export">
+                    <button id="export" class="btn btn-warning">
+                        <i class="fa fa-file-excel-o"></i> 导出
+                    </button>
+                </shiro:hasPermission>
+            </div>
+
+            <!-- 表格 -->
+            <table id="dataTable" style="table-layout:fixed" data-toolbar="#toolbar"></table>
+        </div>
+    </div>
+</div>
+</body>
+</html>