Browse Source

项目评审模块功能

user5 5 years ago
parent
commit
4e43bbf1a2
20 changed files with 3937 additions and 2 deletions
  1. 39 0
      src/main/java/com/jeeplus/modules/projectAssess/dao/ProjectAssessDao.java
  2. 419 0
      src/main/java/com/jeeplus/modules/projectAssess/entity/ProjectAssessInfo.java
  3. 830 0
      src/main/java/com/jeeplus/modules/projectAssess/service/ProjectAssessService.java
  4. 350 0
      src/main/java/com/jeeplus/modules/projectAssess/web/ProjectAssessController.java
  5. 9 0
      src/main/java/com/jeeplus/modules/projectrecord/dao/ProjectRecordsDao.java
  6. 11 0
      src/main/java/com/jeeplus/modules/projectrecord/service/ProjectRecordsService.java
  7. 2 2
      src/main/java/com/jeeplus/modules/workadministrativeatamp/web/WorkAdministrativeAtampController.java
  8. 3 0
      src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceController.java
  9. 63 0
      src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java
  10. 313 0
      src/main/resources/mappings/modules/projectAssess/ProjectAssessDao.xml
  11. 4 0
      src/main/resources/mappings/modules/projectrecord/ProjectRecordsDao.xml
  12. 173 0
      src/main/webapp/webpage/modules/projectAssess/projectAssessAudit.jsp
  13. 225 0
      src/main/webapp/webpage/modules/projectAssess/projectAssessAuditCw.jsp
  14. 247 0
      src/main/webapp/webpage/modules/projectAssess/projectAssessAuditJl.jsp
  15. 170 0
      src/main/webapp/webpage/modules/projectAssess/projectAssessAuditZg.jsp
  16. 237 0
      src/main/webapp/webpage/modules/projectAssess/projectAssessForm.jsp
  17. 381 0
      src/main/webapp/webpage/modules/projectAssess/projectAssessList.jsp
  18. 236 0
      src/main/webapp/webpage/modules/projectAssess/projectAssessModifyApply.jsp
  19. 15 0
      src/main/webapp/webpage/modules/projectAssess/projectAssessTask.jsp
  20. 210 0
      src/main/webapp/webpage/modules/projectAssess/projectAssessView.jsp

+ 39 - 0
src/main/java/com/jeeplus/modules/projectAssess/dao/ProjectAssessDao.java

@@ -0,0 +1,39 @@
+package com.jeeplus.modules.projectAssess.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.projectAssess.entity.ProjectAssessInfo;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.workgooutapply.entity.WorkGoOutInfo;
+
+import java.util.List;
+
+/**
+ * 项目评估Dao接口
+ * @author 徐滕
+ * @version 2020-05-08
+ */
+@MyBatisDao
+public interface ProjectAssessDao extends CrudDao<ProjectAssessInfo> {
+    /**
+     * 根据条件查询项目评估list数量
+     * @param projectAssessInfo
+     * @return
+     */
+    int queryCount(ProjectAssessInfo projectAssessInfo);
+
+
+    /**
+     * 修改审批流程id
+     * @param projectAssessInfo
+     */
+    void updateProcessIdAndStatus(ProjectAssessInfo projectAssessInfo);
+
+    /**
+     * 根据项目id查询项目负责人
+     * @param projectId
+     * @return
+     */
+    List<User> getProjectUser(String projectId);
+}

+ 419 - 0
src/main/java/com/jeeplus/modules/projectAssess/entity/ProjectAssessInfo.java

@@ -0,0 +1,419 @@
+package com.jeeplus.modules.projectAssess.entity;
+
+import com.jeeplus.common.persistence.ActEntity;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 项目评估Entity
+ * @author 徐滕
+ * @version 2020-05-08
+ */
+public class ProjectAssessInfo extends ActEntity<ProjectAssessInfo> {
+    public static final String ASSESS_BIZCODE = "137";  //编号模板value值
+    private String id;//主键id
+    private String projectName;//项目名称
+    private String companyId;//公司id
+    private String officeId;//部门id
+    private String projectId;//项目id
+    private String informationSupplyType;//信息提供人及类型
+    private String projectType;//项目类型
+    private String projectOverview;//项目概况
+    private String technicalSupport;//技术支撑力量(0:满足,1:不满足)
+    private String policiesRegulations;//政策法规相符性(0:是,1:否)
+    private Integer zoologyRedLine;//是否涉及生态红线
+    private String sensitiveSituation;//敏感情况
+    private String environmentalRisk;//环境风险
+    private String otherRisk;//其他风险
+    private String projectComplexity;//项目难易程度(0:正常,1:较难,2:难)
+    private String contractId;//合同id
+    private BigDecimal customerCost;//客户成本
+    private BigDecimal projectCost;//项目成本
+    private BigDecimal staffingAuditCost;//编制审核费
+    private BigDecimal companyManageCost;//公司管理成本
+    private BigDecimal taxesDues;//税费
+    private BigDecimal profit;//利润
+    private String fzjlAssessConclusion;//副总经理评估结论
+    private String zjlAssessConclusion;//总经理评估结论
+    private Integer status;//状态
+    private String processInstanceId;//审批流程ID
+    private String num;	// 申请编号
+    private Date payDate;//付款时间
+    private String home;       //跳转首页标记
+
+
+    private String companyName;//公司名称
+
+    private String contractPrice;//合同金额
+    private String payment;//支付方式
+    private List<User> projectLeaders; //项目负责人
+    private String leaderNameStr;
+
+
+    private WorkContractInfo workContractInfo;// 合同信息
+    private ProjectRecords projectRecords;// 项目信息
+
+    private Date beginDate;
+    private Date endDate;
+
+    private Office office;
+    private Office company;
+
+    private String projectIdStr;
+    private String projectNameStr;
+    private String officeName;
+
+    public String getOfficeName() {
+        return officeName;
+    }
+
+    public void setOfficeName(String officeName) {
+        this.officeName = officeName;
+    }
+
+    public String getHome() {
+        return home;
+    }
+
+    public void setHome(String home) {
+        this.home = home;
+    }
+
+    public String getLeaderNameStr() {
+        return leaderNameStr;
+    }
+
+    public void setLeaderNameStr(String leaderNameStr) {
+        this.leaderNameStr = leaderNameStr;
+    }
+
+    public List<User> getProjectLeaders() {
+        return projectLeaders;
+    }
+
+    public void setProjectLeaders(List<User> projectLeaders) {
+        this.projectLeaders = projectLeaders;
+    }
+
+    public String getProjectIdStr() {
+        return projectIdStr;
+    }
+
+    public void setProjectIdStr(String projectIdStr) {
+        this.projectIdStr = projectIdStr;
+    }
+
+    public String getProjectNameStr() {
+        return projectNameStr;
+    }
+
+    public void setProjectNameStr(String projectNameStr) {
+        this.projectNameStr = projectNameStr;
+    }
+
+    public String getNum() {
+        return num;
+    }
+
+    public void setNum(String num) {
+        this.num = num;
+    }
+
+    public String getContractPrice() {
+        return contractPrice;
+    }
+
+    public void setContractPrice(String contractPrice) {
+        this.contractPrice = contractPrice;
+    }
+
+    public String getPayment() {
+        return payment;
+    }
+
+    public void setPayment(String payment) {
+        this.payment = payment;
+    }
+
+    public Date getPayDate() {
+        return payDate;
+    }
+
+    public void setPayDate(Date payDate) {
+        this.payDate = payDate;
+    }
+
+    public Office getOffice() {
+        return office;
+    }
+
+    public void setOffice(Office office) {
+        this.office = office;
+    }
+
+    public Office getCompany() {
+        return company;
+    }
+
+    public void setCompany(Office company) {
+        this.company = company;
+    }
+
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(String companyId) {
+        this.companyId = companyId;
+    }
+
+    public String getOfficeId() {
+        return officeId;
+    }
+
+    public void setOfficeId(String officeId) {
+        this.officeId = officeId;
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public String getInformationSupplyType() {
+        return informationSupplyType;
+    }
+
+    public void setInformationSupplyType(String informationSupplyType) {
+        this.informationSupplyType = informationSupplyType;
+    }
+
+    public String getProjectType() {
+        return projectType;
+    }
+
+    public void setProjectType(String projectType) {
+        this.projectType = projectType;
+    }
+
+    public String getProjectOverview() {
+        return projectOverview;
+    }
+
+    public void setProjectOverview(String projectOverview) {
+        this.projectOverview = projectOverview;
+    }
+
+    public Integer getZoologyRedLine() {
+        return zoologyRedLine;
+    }
+
+    public void setZoologyRedLine(Integer zoologyRedLine) {
+        this.zoologyRedLine = zoologyRedLine;
+    }
+
+    public String getSensitiveSituation() {
+        return sensitiveSituation;
+    }
+
+    public void setSensitiveSituation(String sensitiveSituation) {
+        this.sensitiveSituation = sensitiveSituation;
+    }
+
+    public String getEnvironmentalRisk() {
+        return environmentalRisk;
+    }
+
+    public void setEnvironmentalRisk(String environmentalRisk) {
+        this.environmentalRisk = environmentalRisk;
+    }
+
+    public String getOtherRisk() {
+        return otherRisk;
+    }
+
+    public void setOtherRisk(String otherRisk) {
+        this.otherRisk = otherRisk;
+    }
+
+    public String getTechnicalSupport() {
+        return technicalSupport;
+    }
+
+    public void setTechnicalSupport(String technicalSupport) {
+        this.technicalSupport = technicalSupport;
+    }
+
+    public String getPoliciesRegulations() {
+        return policiesRegulations;
+    }
+
+    public void setPoliciesRegulations(String policiesRegulations) {
+        this.policiesRegulations = policiesRegulations;
+    }
+
+    public String getProjectComplexity() {
+        return projectComplexity;
+    }
+
+    public void setProjectComplexity(String projectComplexity) {
+        this.projectComplexity = projectComplexity;
+    }
+
+    public String getContractId() {
+        return contractId;
+    }
+
+    public void setContractId(String contractId) {
+        this.contractId = contractId;
+    }
+
+    public BigDecimal getCustomerCost() {
+        return customerCost;
+    }
+
+    public void setCustomerCost(BigDecimal customerCost) {
+        this.customerCost = customerCost;
+    }
+
+    public BigDecimal getProjectCost() {
+        return projectCost;
+    }
+
+    public void setProjectCost(BigDecimal projectCost) {
+        this.projectCost = projectCost;
+    }
+
+    public BigDecimal getStaffingAuditCost() {
+        return staffingAuditCost;
+    }
+
+    public void setStaffingAuditCost(BigDecimal staffingAuditCost) {
+        this.staffingAuditCost = staffingAuditCost;
+    }
+
+    public BigDecimal getCompanyManageCost() {
+        return companyManageCost;
+    }
+
+    public void setCompanyManageCost(BigDecimal companyManageCost) {
+        this.companyManageCost = companyManageCost;
+    }
+
+    public BigDecimal getTaxesDues() {
+        return taxesDues;
+    }
+
+    public void setTaxesDues(BigDecimal taxesDues) {
+        this.taxesDues = taxesDues;
+    }
+
+    public BigDecimal getProfit() {
+        return profit;
+    }
+
+    public void setProfit(BigDecimal profit) {
+        this.profit = profit;
+    }
+
+    public String getFzjlAssessConclusion() {
+        return fzjlAssessConclusion;
+    }
+
+    public void setFzjlAssessConclusion(String fzjlAssessConclusion) {
+        this.fzjlAssessConclusion = fzjlAssessConclusion;
+    }
+
+    public String getZjlAssessConclusion() {
+        return zjlAssessConclusion;
+    }
+
+    public void setZjlAssessConclusion(String zjlAssessConclusion) {
+        this.zjlAssessConclusion = zjlAssessConclusion;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public String getProcessInstanceId() {
+        return processInstanceId;
+    }
+
+    public void setProcessInstanceId(String processInstanceId) {
+        this.processInstanceId = processInstanceId;
+    }
+
+    public String getCompanyName() {
+        return companyName;
+    }
+
+    public void setCompanyName(String companyName) {
+        this.companyName = companyName;
+    }
+
+    public WorkContractInfo getWorkContractInfo() {
+        return workContractInfo;
+    }
+
+    public void setWorkContractInfo(WorkContractInfo workContractInfo) {
+        this.workContractInfo = workContractInfo;
+    }
+
+    public ProjectRecords getProjectRecords() {
+        return projectRecords;
+    }
+
+    public void setProjectRecords(ProjectRecords projectRecords) {
+        this.projectRecords = projectRecords;
+    }
+
+    public Date getBeginDate() {
+        return beginDate;
+    }
+
+    public void setBeginDate(Date beginDate) {
+        this.beginDate = beginDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+}
+

+ 830 - 0
src/main/java/com/jeeplus/modules/projectAssess/service/ProjectAssessService.java

@@ -0,0 +1,830 @@
+package com.jeeplus.modules.projectAssess.service;
+
+import com.google.common.collect.Maps;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.*;
+import com.jeeplus.modules.act.entity.Act;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.projectAssess.dao.ProjectAssessDao;
+import com.jeeplus.modules.projectAssess.entity.ProjectAssessInfo;
+import com.jeeplus.modules.projectrecord.dao.ProjectRecordsDao;
+import com.jeeplus.modules.projectrecord.dao.WorkProjectUserDao;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.serialnum.service.SerialNumTplService;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.Role;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.service.OfficeService;
+import com.jeeplus.modules.sys.utils.DictUtils;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workactivity.dao.WorkActivityProcessDao;
+import com.jeeplus.modules.workactivity.entity.Activity;
+import com.jeeplus.modules.workactivity.entity.WorkActivityProcess;
+import com.jeeplus.modules.workactivity.service.ActivityService;
+import com.jeeplus.modules.workactivity.service.WorkActivityProcessService;
+import com.jeeplus.modules.workactivitymenu.entity.WorkActivityMenu;
+import com.jeeplus.modules.workactivitymenu.service.WorkActivityMenuService;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import com.jeeplus.modules.workcontractinfo.service.WorkContractInfoService;
+import com.jeeplus.modules.workprojectnotify.entity.WorkProjectNotify;
+import com.jeeplus.modules.workprojectnotify.service.WorkProjectNotifyService;
+import com.jeeplus.modules.workprojectnotify.util.UtilNotify;
+import org.activiti.engine.IdentityService;
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目评估Service
+ * @author 徐滕
+ * @version 2020-05-08
+ */
+@Service
+@Transactional(readOnly = true)
+public class ProjectAssessService extends CrudService<ProjectAssessDao, ProjectAssessInfo> {
+
+    @Autowired
+    private IdentityService identityService;
+    @Autowired
+    private WorkActivityMenuService workActivityMenuService;
+    @Autowired
+    private ActTaskService actTaskService;
+    @Autowired
+    private RuntimeService runtimeService;
+    @Autowired
+    private WorkActivityProcessService workActivityProcessService;
+    @Autowired
+    private WorkProjectNotifyService workProjectNotifyService;
+    @Autowired
+    private SerialNumTplService serialNumTplService;
+    @Autowired
+    protected ProjectRecordsService projectRecordsService;
+    @Autowired
+    protected WorkContractInfoService workContractInfoService;
+    @Autowired
+    protected OfficeService officeService;
+    @Autowired
+    private ActivityService activityService;
+    @Autowired
+    private ProjectRecordsDao projectRecordsDao;
+    @Autowired
+    private WorkActivityProcessDao workActivityProcessDao;
+    @Autowired
+    private WorkProjectUserDao workProjectUserDao;
+
+    public ProjectAssessInfo get(String id) {
+        return super.get(id);
+    }
+
+    public Page<ProjectAssessInfo> findPage(Page<ProjectAssessInfo> page, ProjectAssessInfo projectAssessInfo) {
+        //设置数据权限
+        if(!UserUtils.getUser().isAdmin()) {
+            String dataScopeSql = dataScopeFilterOR(projectAssessInfo.getCurrentUser(), "o", "u", "s", MenuStatusEnum.WORK_RECORDS.getValue());
+            projectAssessInfo.getSqlMap().put("dsf", dataScopeSql);
+        }
+        int count = dao.queryCount(projectAssessInfo);
+        page.setCount(count);
+        page.setCountFlag(false);
+        projectAssessInfo.setPage(page);
+        List<ProjectAssessInfo> projectAssessList = findList(projectAssessInfo);
+        if (null != projectAssessList){
+            for (ProjectAssessInfo projectAssess : projectAssessList) {
+                List<MainDictDetail> informationSupplyTypeList = DictUtils.getMainDictList("information_supply_type");
+                for (MainDictDetail informationSupplyType : informationSupplyTypeList) {
+                    if (projectAssess.getInformationSupplyType().equals(informationSupplyType.getValue().toString())){
+                        projectAssess.setInformationSupplyType(informationSupplyType.getLabel());
+                        break;
+                    }
+                }
+                List<MainDictDetail> projectTypeList = DictUtils.getMainDictList("project_type");
+                for (MainDictDetail projectType : projectTypeList) {
+                    if (projectAssess.getProjectType().equals(projectType.getValue().toString())){
+                        projectAssess.setProjectType(projectType.getLabel());
+                        break;
+                    }
+                }
+            }
+        }
+        page.setList(projectAssessList);
+        return page;
+    }
+
+    @Transactional(readOnly = false)
+    public String saveProjectAssess(ProjectAssessInfo projectAssessInfo) {
+        save(projectAssessInfo);
+        return this.startAudit(projectAssessInfo,projectAssessInfo.getProcessInstanceId());
+    }
+
+    @Transactional(readOnly = false)
+    public void saveProjectAssessTstore(ProjectAssessInfo projectAssessInfo,ProjectStatusEnum status) {
+        Office company= new Office();
+        Office office =  new Office();
+        company.setId(UserUtils.getUser().getCompany().getId());
+        office.setId(UserUtils.getUser().getOffice().getId());
+        projectAssessInfo.setCompany(company);
+        projectAssessInfo.setOffice(office);
+
+        Integer oldStatus = projectAssessInfo.getStatus();
+        projectAssessInfo.setStatus(status.getValue());
+        User createBy = projectAssessInfo.getCreateBy();
+        if(createBy != null){
+            createBy = UserUtils.get(createBy.getId());
+        }else {
+            createBy = UserUtils.getUser();
+        }
+        projectAssessInfo.setCreateBy(createBy);
+        if(projectAssessInfo.getStatus()==ProjectStatusEnum.INVALID.getValue()){
+            projectAssessInfo.setId(IdGen.uuid());
+            dao.insert(projectAssessInfo);
+        }else {
+            super.save(projectAssessInfo);
+        }
+    }
+
+
+
+    @Transactional(readOnly = false)
+    public void save(ProjectAssessInfo projectAssessInfo) {
+        long t1 = System.currentTimeMillis();
+        preSave(projectAssessInfo);
+        if (StringUtils.isNotBlank(projectAssessInfo.getId())){
+            dao.update(projectAssessInfo);
+            projectAssessInfo.setProjectIdStr(projectAssessInfo.getProjectId());
+        }else{
+            super.save(projectAssessInfo);
+        }
+        logger.info("保存项目评估申请耗时:{}ms",System.currentTimeMillis()-t1);
+    }
+
+    private void preSave(ProjectAssessInfo projectAssessInfo) {
+        if(projectAssessInfo.getOffice()==null|| StringUtils.isBlank(projectAssessInfo.getOffice().getId())){
+            projectAssessInfo.setOffice(UserUtils.getSelectOffice());
+        }
+        if(projectAssessInfo.getCompany()==null||StringUtils.isBlank(projectAssessInfo.getCompany().getId())){
+            projectAssessInfo.setCompany(UserUtils.getSelectCompany());
+        }
+        if (StringUtils.isBlank(projectAssessInfo.getNum())){
+            String serialNum = serialNumTplService.genSerialNum(UserUtils.getUser().getCompany(), projectAssessInfo.ASSESS_BIZCODE);
+            projectAssessInfo.setNum(serialNum);
+        }
+    }
+
+    /**
+     * 启动审批流程
+     */
+    private String startAudit(ProjectAssessInfo projectAssessInfo, String processInstanceId){
+        long t1 = System.currentTimeMillis();
+        Map<String, Object> variables = new HashMap<String, Object>();
+        identityService.setAuthenticatedUserId(projectAssessInfo.getCurrentUser().getId());
+        String contentStr = "申请编号:"+projectAssessInfo.getNum()+",申请日期:"+ DateUtils.formatDate(projectAssessInfo.getCreateDate());
+        ProjectRecords projectRecords = projectRecordsDao.get(projectAssessInfo.getProjectIdStr());
+        String titleStr = "项目名称:"+ projectRecords.getProjectName();
+
+        String businessKey = projectAssessInfo.getId();
+        Office office = UserUtils.getSelectOffice();
+        WorkActivityMenu workActivityMenu = workActivityMenuService.findByParentAndOffice("ggh3125fwef194582bdda9abcew750904", office);
+        // 启动流程
+        String processType = workActivityMenu.getProcessType();
+        StringBuffer buffer = new StringBuffer();
+        Activity activity = new Activity();
+        WorkProjectNotify workProjectNotify = UtilNotify
+                .saveNotify(projectAssessInfo.getId(),
+                        null,
+                        projectAssessInfo.getCompany().getId(),
+                        titleStr,
+                        contentStr,
+                        "137",
+                        "0",
+                        "待审批",
+                        ""
+                );
+
+        List<User> users = new ArrayList<>();
+        //总工
+        List<User> bzshbList = UserUtils.getByRoleActivityEnname("bzshb",3,office.getId(),"23",projectAssessInfo.getCreateBy());
+        //获取项目负责人信息
+        List<User> bmzrList  = dao.getProjectUser(projectAssessInfo.getProjectIdStr());
+        //财务
+        List<User> cwzgList = UserUtils.getByRoleActivityEnname("cwzg",3,office.getId(),"23",projectAssessInfo.getCreateBy());
+        //副总经理
+        List<User> fgldList = UserUtils.getByRoleActivityEnname("fzjl",3,office.getId(),"23",projectAssessInfo.getCreateBy());
+        //总经理
+        List<User> zjlList = UserUtils.getByRoleActivityEnname("zjl",3,office.getId(),"23",projectAssessInfo.getCreateBy());
+        if (StringUtils.isNotBlank(workActivityMenu.getId())) {
+            workProjectNotify.setNotifyRole("");
+            workActivityMenu = workActivityMenuService.get(workActivityMenu.getId());
+            List<Activity> activities = workActivityMenu.getActivities();
+            for (Activity a : activities) {
+                String encount = a.getEncount();
+                String enlist = a.getEnlist();
+                if (a.getRole()!=null && StringUtils.isNotBlank(a.getRole().getEnname())){
+                    List enusers = UserUtils.getByRoleActivityEnnames(a.getRole().getEnname(),office.getId(),"11",projectAssessInfo.getCreateBy());
+                    if (enusers.size()==0){
+                        projectAssessInfo.setStatus(ProjectStatusEnum.TSTORE.getValue());
+                        this.updateStateById(projectAssessInfo);
+                        return "流程审批人不能为空,角色"+a.getRole().getName()+"下无用户,请联系管理员!";
+                    }
+                    variables.put(enlist, enusers);
+                    variables.put(encount, enusers.size());
+                }
+                if (a.getDelFlag().equals("0") && a.getCount() == 1) {
+                    activity = a;
+                }
+            }
+            buffer.append(activity.getRole().getEnname());
+            if (activity != null && StringUtils.isNotBlank(activity.getId())) {
+                //角色审批
+                if (StringUtils.isNotBlank(activity.getRole().getEnname())) {
+                    users = UserUtils.getByRoleActivityEnnames(activity.getRole().getEnname(),office.getId(),"11",projectAssessInfo.getCreateBy());
+                }
+                //人员审批
+                if (StringUtils.isNotBlank(activity.getUser().getId())) {
+                    users.add(activity.getUser());
+                }
+            }
+            workProjectNotify.setId("");
+        } else {
+            if (bmzrList.size()==0){
+                projectAssessInfo.setStatus(ProjectStatusEnum.TSTORE.getValue());
+                this.updateStateById(projectAssessInfo);
+                return "流程审批人不能为空,部门负责人下无用户,请联系管理员!";
+            }
+            variables.put("bzshbList", bzshbList);
+            variables.put("bzshbCount",bzshbList.size());
+            processType = "projectAssess";
+            users.addAll(bzshbList);
+        }
+        List<String> userIds = new ArrayList<>(users.size());
+        for (User u : users){
+            userIds.add(u.getId());
+            workProjectNotify.setUser(u);
+            workProjectNotify.setId("");
+            workProjectNotify.setNotifyRole("总工审批");
+            workProjectNotifyService.save(workProjectNotify);
+            Map<String,Object> extras = new HashMap<>();
+            extras.put("type","7002");
+            extras.put("procDefKey","137");
+            extras.put("id",workProjectNotify.getId());
+            UserUtils.pushInfoToApp(titleStr, contentStr,extras,u.getId());
+        }
+        long t2 = System.currentTimeMillis();
+        UserUtils.pushIm(userIds,contentStr);
+        logger.info("项目评估推送消息耗时:{}ms",System.currentTimeMillis()-t2);
+
+        variables.put("busId", businessKey);
+        variables.put("type", processType);
+        variables.put("title", "审批单:" + projectAssessInfo.getNum());//设置标题;
+
+        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processType, businessKey, variables);
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(processInstanceId)) {
+            workActivityProcessService.updateProcessInstanceId(processInstance.getId(),processInstanceId);
+            workActivityProcessService.deleteProcessInstanceId(processInstanceId);
+            workActivityProcessService.deleteProcessIdAuditUsers(processInstanceId);
+        }
+        List<Activity> list = workActivityMenu.getActivities();
+        if (list != null && list.size() != 0) {
+            workActivityProcessService.saveList(list, processInstance.getId());
+        } else {
+            WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+            workActivityProcess.setProcessKey(processType);
+            workActivityProcess.setCount(1);
+            workActivityProcess.setProcessInstanceId(processInstance.getId());
+            workActivityProcess.setIsApproval("0");
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcess.setCount(2);
+            workActivityProcess.setId("");
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcess.setCount(3);
+            workActivityProcess.setId("");
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcess.setCount(4);
+            workActivityProcess.setId("");
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcess.setCount(5);
+            workActivityProcess.setId("");
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcessService.insertAuditsByType(bzshbList,processInstance.getId(),1,1);
+            workActivityProcessService.insertAuditsByType(bmzrList,processInstance.getId(),2,0);
+            workActivityProcessService.insertAuditsByType(cwzgList,processInstance.getId(),3,0);
+            workActivityProcessService.insertAuditsByType(fgldList,processInstance.getId(),4,0);
+            workActivityProcessService.insertAuditsByType(zjlList,processInstance.getId(),5,0);
+        }
+        projectAssessInfo.setProcessInstanceId(processInstance.getId());
+        projectAssessInfo.setStatus(ProjectStatusEnum.IN_APRL.getValue());
+        dao.updateProcessIdAndStatus(projectAssessInfo);
+        logger.info("启动项目评估审批流程耗时:{}ms",System.currentTimeMillis()-t1);
+        return "";
+    }
+
+    private void updateStateById(ProjectAssessInfo projectAssessInfo) {
+        dao.updateProcessIdAndStatus(projectAssessInfo);
+    }
+
+    /**
+     * 获取项目负责人信息
+     * @param projectId
+     * @return
+     */
+    public List<User> getMasterUserList(String projectId){
+        return dao.getProjectUser(projectId);
+    }
+
+
+
+    /**
+     * 获取部门名称
+     * @return
+     */
+    public Office getOfficeName(String projectId) {
+        ProjectRecords projectRecords = projectRecordsService.getInfo(projectId);
+        WorkContractInfo workContractInfo = workContractInfoService.get(projectRecords.getWorkContractInfo().getId());
+        Office office = new Office();
+        if(workContractInfo!=null){
+            String oid = workContractInfo.getChargeCompany();
+            office = officeService.get(oid);
+            if(office!=null){
+                return office;
+            }
+        }
+        return null;
+    }
+
+    public ProjectAssessInfo queryProjectAssessDetail(ProjectAssessInfo projectAssess){
+        ProjectAssessInfo projectAssessInfo = this.get(projectAssess.getId());
+        if (null != projectAssessInfo){
+            List<MainDictDetail> informationSupplyTypeList = DictUtils.getMainDictList("information_supply_type");
+            for (MainDictDetail informationSupplyType : informationSupplyTypeList) {
+                if (projectAssessInfo.getInformationSupplyType().equals(informationSupplyType.getValue().toString())){
+                    projectAssessInfo.setInformationSupplyType(informationSupplyType.getLabel());
+                    break;
+                }
+            }
+            List<MainDictDetail> projectTypeList = DictUtils.getMainDictList("project_type");
+            for (MainDictDetail projectType : projectTypeList) {
+                if (projectAssessInfo.getProjectType().equals(projectType.getValue().toString())){
+                    projectAssessInfo.setProjectType(projectType.getLabel());
+                    break;
+                }
+            }
+        }
+        if (StringUtils.isNotBlank(projectAssessInfo.getProjectId())){
+            Office office = this.getOfficeName(projectAssessInfo.getProjectId());
+            if (null != office){
+                projectAssessInfo.setOfficeName(office.getTopCompany());
+            }else{
+                projectAssessInfo.setOfficeName("");
+            }
+        }
+        projectAssessInfo.setHome("home");
+        return projectAssessInfo;
+    }
+
+    public ProjectAssessInfo queryProjectAssess(ProjectAssessInfo projectAssess){
+        ProjectAssessInfo projectAssessInfo = this.get(projectAssess.getId());
+        if (StringUtils.isNotBlank(projectAssessInfo.getProjectId())){
+            Office office = this.getOfficeName(projectAssessInfo.getProjectId());
+            if (null != office){
+                projectAssessInfo.setOfficeName(office.getTopCompany());
+            }else{
+                projectAssessInfo.setOfficeName("");
+            }
+        }
+        projectAssessInfo.setHome("home");
+        return projectAssessInfo;
+    }
+
+    /**
+     * 审核流程
+     */
+    @Transactional(readOnly = false)
+    public String auditProjectAssess(ProjectAssessInfo projectAssessInfo, List<User> auditUsers) {
+        String str = "申请编号:"+projectAssessInfo.getNum()+",申请日期:"+ DateUtils.formatDate(projectAssessInfo.getCreateDate());
+        ProjectRecords projectRecords = projectRecordsDao.get(projectAssessInfo.getProjectId());
+        String title = "项目名称:"+ projectRecords.getProjectName();
+        // 对不同环节的业务逻辑进行操作
+        String taskDefKey = projectAssessInfo.getAct().getTaskDefKey();
+        if (!"modifyApply".equals(taskDefKey) && !taskDefKey.contains("audit")) {
+            actTaskService.claim(projectAssessInfo.getAct().getTaskId(), UserUtils.getUser().getId());
+        }else {
+            projectAssessInfo.getAct().setFlag("yes");
+        }
+        String comment = "";
+        if (ProjectStatusEnum.REJECTED.getValue() == projectAssessInfo.getStatus()){
+            comment = ("yes".equals(projectAssessInfo.getAct().getFlag())?"[重新申请] ":"[已撤销] ");
+        }else {
+            comment = ("yes".equals(projectAssessInfo.getAct().getFlag())?"[同意] ":"[驳回] ")+ projectAssessInfo.getAct().getComment();
+        }
+        //yes 的时候状态为审核通过 否则为未通过
+        //1 审核中 2 未通过
+        projectAssessInfo.setStatus(("yes".equals(projectAssessInfo.getAct().getFlag()) ? ProjectStatusEnum.IN_APRL.getValue() : ProjectStatusEnum.REJECTED.getValue()));
+        Map<String, Object> vars = Maps.newHashMap();
+        //业务逻辑对应的条件表达式
+        String exp = "";
+        String taskCount = "";
+        String notifyRole = "";
+        int key = 0;
+        String enname = "";
+        List<Activity> activitieList = activityService.getByProcessInstanceId(projectAssessInfo.getProcessInstanceId());
+        WorkActivityMenu workActivityMenu = new WorkActivityMenu();
+        if (activitieList != null && activitieList.size() != 0) {
+            workActivityMenu.setProcessType(activitieList.get(0).getProcessKey());
+            workActivityMenu.setActivities(activitieList);
+        }
+
+        WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+        WorkActivityProcess selectProcess = new WorkActivityProcess();
+        selectProcess.setProcessInstanceId(projectAssessInfo.getProcessInstanceId());
+        List<WorkActivityProcess> workActivityProcesses = workActivityProcessService.findList(selectProcess);
+        List<Activity> activities = workActivityMenu.getActivities();
+        if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("projectAssess")) {
+            key = 1;
+            for (int i = 0; i < workActivityProcesses.size(); i++) {
+                WorkActivityProcess activityProcess = workActivityProcesses.get(i);
+                if (taskDefKey.equals(activityProcess.getActivityTask()) && !taskDefKey.equals("modifyApply")) {
+                    taskCount = activityProcess.getCount()+"";
+                    workActivityProcess = activityProcess;
+                    if (!workActivityProcess.getIsApproval().equals("0")) {
+                        workActivityProcess.setId("");
+                    }
+                    exp = "pass";
+                    if (!"yes".equals(projectAssessInfo.getAct().getFlag())) {
+                        notifyRole = "调整项目评审信息";
+                        projectAssessInfo.setStatus(ProjectStatusEnum.REJECTED.getValue());
+                        workActivityProcess.setIsApproval("2");
+                        String returnBack = "-1";
+                        for (Activity activity : activities) {
+                            if (activity.getCount() == activityProcess.getCount()) {
+                                notifyRole = activity.getName();
+                                returnBack = activity.getReturnBack();
+                                break;
+                            }
+                        }
+                        if (returnBack.equals("0")) {
+                            workActivityProcess.setId("");
+                        }
+
+                    } else {
+                        workActivityProcess.setIsApproval("1");
+                    }
+                }else if(taskDefKey.equals("modifyApply")){
+                    taskCount = "0";
+                    exp = "pass";
+                    workActivityProcess.setId("");
+                    workActivityProcess.setCount(0);
+                    if (!"yes".equals(projectAssessInfo.getAct().getFlag())) {
+                        projectAssessInfo.setStatus(ProjectStatusEnum.RECALL.getValue());
+                        workActivityProcess.setIsApproval("2");
+                    } else {
+                        workActivityProcess.setIsApproval("1");
+                    }
+                    break;
+                }
+            }
+        } else {
+            workActivityMenu.setProcessType("projectAssess");
+            for (int i = 0; i < workActivityProcesses.size(); i++) {
+                WorkActivityProcess activityProcess = workActivityProcesses.get(i);
+                String count = activityProcess.getCount() + "";
+                workActivityProcess = activityProcess;
+                if (!workActivityProcess.getIsApproval().equals("0")) {
+                    workActivityProcess.setId("");
+                }
+                // 审核环节
+                if ("bzshb".equals(taskDefKey) && count.contains("1")) {
+                    taskCount = "1";
+                    exp = "pass";
+                    if ("yes".equals(projectAssessInfo.getAct().getFlag())) {
+                        workActivityProcessService.insertAuditsByType(auditUsers,projectAssessInfo.getProcessInstanceId(),2,1);
+
+                        notifyRole = "项目负责人审核";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "master";
+                        vars.put("masterCount",auditUsers.size());
+                        vars.put("masterList", auditUsers);
+                    } else {
+                        notifyRole = "调整申请2";
+                        workActivityProcess.setIsApproval("2");
+                    }
+                    break;
+                } else if ("master".equals(taskDefKey) && count.contains("2")) {
+                    taskCount = "2";
+                    exp = "pass";
+                    if ("yes".equals(projectAssessInfo.getAct().getFlag())) {
+                        workActivityProcessService.insertAuditsByType(auditUsers,projectAssessInfo.getProcessInstanceId(),3,1);
+
+                        notifyRole = "财务审核";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "cwzg";
+                        vars.put("cwzgCount",auditUsers.size());
+                        vars.put("cwzgList", auditUsers);
+                    } else {
+                        notifyRole = "调整申请3";
+                        workActivityProcess.setIsApproval("2");
+                    }
+                    break;
+                } else if ("cwzg".equals(taskDefKey) && count.contains("3")) {
+                    taskCount = "3";
+                    exp = "pass";
+                    if ("yes".equals(projectAssessInfo.getAct().getFlag())) {
+                        workActivityProcessService.insertAuditsByType(auditUsers,projectAssessInfo.getProcessInstanceId(),4,1);
+
+                        notifyRole = "副总经理审核";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "fzjl";
+                        vars.put("fzjlCount",auditUsers.size());
+                        vars.put("fzjlList", auditUsers);
+                    } else {
+                        notifyRole = "调整申请4";
+                        workActivityProcess.setIsApproval("2");
+                    }
+                    break;
+                } else if ("fzjl".equals(taskDefKey) && count.contains("4")) {
+                    taskCount = "4";
+                    exp = "pass";
+                    if ("yes".equals(projectAssessInfo.getAct().getFlag())) {
+                        workActivityProcessService.insertAuditsByType(auditUsers,projectAssessInfo.getProcessInstanceId(),5,1);
+
+                        notifyRole = "总经理审核";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "zjl";
+                        vars.put("zjlCount",auditUsers.size());
+                        vars.put("zjlList", auditUsers);
+                    } else {
+                        notifyRole = "调整申请";
+                        workActivityProcess.setIsApproval("2");
+                        vars.put("pass",false);
+                    }
+                    break;
+                } else if ("zjl".equals(taskDefKey) && count.contains("5")) {
+                    taskCount = "5";
+                    exp = "pass";
+                    if ("yes".equals(projectAssessInfo.getAct().getFlag())) {
+                        notifyRole = "审批通过";
+                        workActivityProcess.setIsApproval("1");
+                    } else {
+                        notifyRole = "调整项目评估信息";
+                        workActivityProcess.setIsApproval("2");
+                        vars.put("pass",false);
+                    }
+                    break;
+                } else if ("modifyApply".equals(taskDefKey)&& count.contains("0")) {
+                    notifyRole = "部门负责人审批";
+                    taskCount = "0";
+                    exp = "pass";
+                    workActivityProcess.setCount(0);
+                    enname = "bzshb";
+                    if (!"yes".equals(projectAssessInfo.getAct().getFlag())) {
+                        projectAssessInfo.setStatus(ProjectStatusEnum.RECALL.getValue());
+                    }
+                    break;
+                } else if ("apply_end".equals(taskDefKey)) {
+                }
+
+            }
+        }
+        // 设置意见
+        projectAssessInfo.getAct().setComment(("yes".equals(projectAssessInfo.getAct().getFlag()) ? "[同意] " : "[驳回] ") + projectAssessInfo.getAct().getComment());
+        projectAssessInfo.preUpdate();
+        // 提交流程任务
+        vars.put(exp, "yes".equals(projectAssessInfo.getAct().getFlag()) ? true : false);
+        vars.put("passs", true);
+        workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount, projectAssessInfo.getProcessInstanceId(),taskDefKey,"modifyApply", projectAssessInfo.getAct().getFlag(),comment, activities);
+        // 提交流程任务
+        actTaskService.complete(projectAssessInfo.getAct().getTaskId(), projectAssessInfo.getAct().getProcInsId(), projectAssessInfo.getAct().getComment(), vars);
+        boolean state = actTaskService.isProcessEnd(projectAssessInfo.getAct().getProcInsId());
+        List<User> users = new ArrayList<>();
+        List<User> userList = new ArrayList<>();
+        if (!state) {
+            users.add(projectAssessInfo.getCreateBy());
+            if ("yes".equals(projectAssessInfo.getAct().getFlag())) {
+                projectAssessInfo.setStatus(ProjectStatusEnum.SIGNED.getValue());
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectAssessInfo.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                workProjectNotifyService
+                        .save(UtilNotify
+                                .saveNotify(projectAssessInfo.getId(),
+                                        projectAssessInfo.getCreateBy(),
+                                        projectAssessInfo.getCompanyId(),
+                                        title,
+                                        str,
+                                        "137",
+                                        "0",
+                                        "待通知",
+                                        notifyRole));
+
+            } else {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectAssessInfo.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                if (ProjectStatusEnum.RECALL.getValue() != projectAssessInfo.getStatus()){
+                    projectAssessInfo.setStatus(ProjectStatusEnum.REJECTED.getValue());
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(projectAssessInfo.getId(),
+                                            projectAssessInfo.getCreateBy(),
+                                            projectAssessInfo.getCompanyId(),
+                                            title,
+                                            str,
+                                            "137",
+                                            "0",
+                                            "待通知",
+                                            notifyRole));
+                }
+            }
+            workActivityProcessService.deleteProcessIdAuditUsers(projectAssessInfo.getProcessInstanceId());
+        } else {
+            if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("projectAssess")) {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(projectAssessInfo.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                //users.addAll(userList);
+                WorkProjectNotify workProjectNotify = UtilNotify
+                        .saveNotify(projectAssessInfo.getId(),
+                                new User(),
+                                projectAssessInfo.getCompanyId(),
+                                title,
+                                str,
+                                "137",
+                                "0",
+                                "待审批",
+                                notifyRole);
+                List<WorkProjectNotify> workProjectNotifys = activityService.getByFlagAndTaskDefKeyList(
+                        activities,
+                        workProjectNotify,
+                        taskDefKey,
+                        projectAssessInfo.getAct().getFlag(),
+                        taskCount,
+                        projectAssessInfo.getCreateBy(),
+                        projectAssessInfo.getOffice().getId(),
+                        "137");
+                for (WorkProjectNotify workProjectNotify1:workProjectNotifys){
+                    users.add(workProjectNotify1.getUser());
+                    workProjectNotify1.setId("");
+                    workProjectNotify1.setIsNewRecord(false);
+                    workProjectNotifyService
+                            .save(workProjectNotify1);
+                }
+
+            } else {
+                if (!"yes".equals(projectAssessInfo.getAct().getFlag())) {
+                    WorkProjectNotify notify = new WorkProjectNotify();
+                    notify.setNotifyId(projectAssessInfo.getId());
+                    userList = workProjectNotifyService.readByNotifyId(notify);
+                    //users.addAll(userList);
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(projectAssessInfo.getId(),
+                                            projectAssessInfo.getCreateBy(),
+                                            projectAssessInfo.getCompanyId(),
+                                            title,
+                                            str,
+                                            "137",
+                                            "0",
+                                            "重新申请",
+                                            notifyRole));
+                    users.add( projectAssessInfo.getCreateBy());
+                } else {
+                    if (StringUtils.isNotBlank(enname)) {
+                        WorkProjectNotify notify = new WorkProjectNotify();
+                        notify.setNotifyId(projectAssessInfo.getId());
+                        userList = workProjectNotifyService.readByNotifyId(notify);
+                        //users.addAll(userList1);
+                        WorkProjectNotify workProjectNotify = UtilNotify
+                                .saveNotify(projectAssessInfo.getId(),
+                                        new User(),
+                                        projectAssessInfo.getCompanyId(),
+                                        title,
+                                        str,
+                                        "137",
+                                        "0",
+                                        "待审批",
+                                        notifyRole);
+                        users.addAll(auditUsers);
+                        for (User user1:auditUsers){
+                            workProjectNotify.setUser(user1);
+                            workProjectNotify.setId("");
+                            workProjectNotify.setIsNewRecord(false);
+                            workProjectNotifyService.save(workProjectNotify);
+                            Map<String,Object> extras = new HashMap<>();
+                            if(enname.contains("bzshb")||enname.contains("master")||enname.contains("cwzg")||enname.contains("fzjl")||enname.contains("zjl")) {
+                                extras.put("type", "7002");
+                            }else {
+                                extras.put("type", "7001");
+                            }
+                            extras.put("procDefKey","137");
+                            extras.put("id",workProjectNotify.getId());
+                            UserUtils.pushInfoToApp(title, str,extras,user1.getId());
+                        }
+                    }else {
+                        WorkProjectNotify notify = new WorkProjectNotify();
+                        notify.setNotifyId(projectAssessInfo.getId());
+                        userList = workProjectNotifyService.readByNotifyId(notify);
+                        users.add(projectAssessInfo.getCreateBy());
+                        workProjectNotifyService
+                                .save(UtilNotify
+                                        .saveNotify(projectAssessInfo.getId(),
+                                                projectAssessInfo.getCreateBy(),
+                                                projectAssessInfo.getCompanyId(),
+                                                title,
+                                                str,
+                                                "137",
+                                                "0",
+                                                "重新申请",
+                                                notifyRole));
+                    }
+                }
+            }
+        }
+        if (StringUtils.isNotBlank(title) && users!=null && users.size()!=0) {
+            for (User u : users) {
+                UserUtils.pushIm(u.getId(),title);
+            }
+        }
+        if (StringUtils.isNotBlank(title) && userList!=null && userList.size()!=0) {
+            for (User u : userList) {
+                UserUtils.pushMeIm(u.getId());
+            }
+        }
+        projectAssessInfo.setInformationSupplyType(null);
+        projectAssessInfo.setProjectType(null);
+        dao.update(projectAssessInfo);
+        return "保存审核意见成功!";
+    }
+
+    @Transactional(readOnly = false)
+    public void cancelProcess(ProjectAssessInfo projectAssessInfo) throws Exception {
+        WorkActivityProcess process = new WorkActivityProcess();
+        process.setProcessInstanceId(projectAssessInfo.getProcessInstanceId());
+        process.setIsApproval("0");
+        WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+        workActivityProcess.setProcessInstanceId(projectAssessInfo.getProcessInstanceId());
+        List<WorkActivityProcess> processList = workActivityProcessService.findList(workActivityProcess);
+        WorkProjectNotify notify = new WorkProjectNotify();
+        notify.setNotifyId(projectAssessInfo.getId());
+        List<User> userList = workProjectNotifyService.readByNotifyId(notify);
+        if (userList!=null && userList.size()!=0) {
+            for (User u : userList) {
+                User user = UserUtils.get(u.getId());
+                UserUtils.pushIm(u.getId(),"申请人 "+user.getName() +",项目登记审批:"+projectAssessInfo.getProjectName() +" 强制撤销!");
+            }
+        }
+        if(processList!=null && processList.size()>0) {
+            for (int i = 0; i < processList.size(); i++) {
+                WorkActivityProcess p = processList.get(i);
+                if (org.apache.commons.lang3.StringUtils.isNotBlank(p.getIsApproval()) && "0".equals(p.getIsApproval())) {
+                    p.setIsApproval("-1");
+                    p.setDelFlag("1");
+                    workActivityProcessDao.updateDelFlagAndIsApproval(p);
+                }
+            }
+            WorkActivityProcess pro = new WorkActivityProcess();
+            pro.setId("");
+            pro.setDelFlag("0");
+            pro.preInsert();
+            pro.setRemarks("[强制撤销]");
+            pro.setProcessKey(processList.get(0).getProcessKey());
+            pro.setIsApproval("1");
+            pro.setProcessInstanceId(processList.get(0).getProcessInstanceId());
+            pro.setCount(0);
+            workActivityProcessDao.insert(pro);
+
+            //结束该流程,设为"撤销"状态月
+            ProjectAssessInfo newProjectAssessInfo = new ProjectAssessInfo();
+            newProjectAssessInfo.setId(projectAssessInfo.getId());
+            newProjectAssessInfo.setStatus(ProjectStatusEnum.RECALL.getValue());
+            newProjectAssessInfo.preUpdate();
+            dao.update(newProjectAssessInfo);
+            actTaskService.endProcessInstance(projectAssessInfo.getProcessInstanceId(), "项目登记-撤回");
+        }
+    }
+
+    @Transactional(readOnly = false)
+    public void delete(ProjectAssessInfo projectAssessInfo) {
+        //删除项目负责人
+        //workProjectUserDao.deleteProjectMembers(projectAssessInfo.getId(), "1");
+        dao.delete(projectAssessInfo);
+        WorkProjectNotify notify = new WorkProjectNotify();
+        notify.setNotifyId(projectAssessInfo.getId());
+        List<User> users = workProjectNotifyService.readByNotifyId(notify);
+        if (users!=null && users.size()!=0){
+            for (User user:users){
+                UserUtils.pushMeIm(user.getId());
+            }
+        }
+    }
+}

+ 350 - 0
src/main/java/com/jeeplus/modules/projectAssess/web/ProjectAssessController.java

@@ -0,0 +1,350 @@
+package com.jeeplus.modules.projectAssess.web;
+
+import com.google.common.collect.Maps;
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.mapper.JsonMapper;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.act.entity.Act;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.projectAssess.entity.ProjectAssessInfo;
+import com.jeeplus.modules.projectAssess.service.ProjectAssessService;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.Role;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.entity.Workattachment;
+import com.jeeplus.modules.sys.service.OfficeService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workadministrativeatamp.entity.WorkAdministrativeAtamp;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import com.jeeplus.modules.workcontractinfo.service.WorkContractInfoService;
+import com.jeeplus.modules.workgooutapply.entity.WorkGoOutInfo;
+import com.jeeplus.modules.workinvoice.entity.WorkInvoice;
+import com.jeeplus.modules.worksealform.entity.WorkSealForm;
+import org.activiti.engine.HistoryService;
+import org.activiti.engine.history.HistoricProcessInstance;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Task;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 项目评估Controller
+ * @author 徐滕
+ * @version 2020-05-08
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/projectAssess")
+public class ProjectAssessController extends BaseController {
+
+    @Autowired
+    private ProjectAssessService projectAssessService;
+    @Autowired
+    private ActTaskService actTaskService;
+    @Autowired
+    protected HistoryService historyService;
+
+    @ModelAttribute
+    public ProjectAssessInfo get(@RequestParam(required=false) String id) {
+        ProjectAssessInfo entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectAssessService.get(id);
+        }
+        if (entity == null){
+            entity = new ProjectAssessInfo();
+        }
+        return entity;
+    }
+
+    /**
+     * 查询项目评估信息
+     * @param projectAssessInfo
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @RequiresPermissions("project:projectAssess:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectAssessInfo projectAssessInfo, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        Page<ProjectAssessInfo> page = projectAssessService.findPage(new Page<ProjectAssessInfo>(request, response), projectAssessInfo);
+        model.addAttribute("page", page);
+        model.addAttribute("companyName",projectAssessInfo.getCompanyName());
+        model.addAttribute("projectName",projectAssessInfo.getProjectName());
+        model.addAttribute("beginDate",projectAssessInfo.getBeginDate());
+        model.addAttribute("endDate",projectAssessInfo.getEndDate());
+        return "modules/projectAssess/projectAssessList";
+    }
+
+    /**
+     * 查看,增加,编辑开票管理表单页面
+     */
+    @RequiresPermissions(value={"project:projectAssess:add","project:projectAssess:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(ProjectAssessInfo projectAssessInfo, Model model) {
+        Role loginUserRole = new Role();
+                User user = UserUtils.getUser();
+        if (null != user.getRoleList()){
+            loginUserRole = user.getRoleList().get(0);
+
+        }
+        if (projectAssessInfo != null && StringUtils.isNotBlank(projectAssessInfo.getId())) {
+            projectAssessInfo = projectAssessService.get(projectAssessInfo.getId());
+            Office office = projectAssessService.getOfficeName(projectAssessInfo.getProjectId());
+            projectAssessInfo.setCompanyName(office.getParent().getName());
+            projectAssessInfo.setOfficeName(office.getTopCompany());
+            projectAssessInfo.setOfficeId(office.getId());
+        }else {
+            projectAssessInfo.setCreateBy(UserUtils.getUser());
+            projectAssessInfo.setCreateDate(new Date());
+        }
+        model.addAttribute("loginUserRole", loginUserRole);
+        model.addAttribute("projectAssess", projectAssessInfo);
+        return "modules/projectAssess/projectAssessForm";
+    }
+
+    /**
+     * 项目评估详情查看
+     * @param projectAssessInfo
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"project:projectAssess:view"})
+    @RequestMapping(value = "view")
+    public String view(ProjectAssessInfo projectAssessInfo, Model model) {
+        if (projectAssessInfo!=null&&StringUtils.isNotBlank(projectAssessInfo.getId())) {
+            projectAssessInfo = projectAssessService.queryProjectAssessDetail(projectAssessInfo);
+        }
+        model.addAttribute("projectAssess", projectAssessInfo);
+        return "modules/projectAssess/projectAssessView";
+    }
+
+    /**
+     * 项目评估申请
+     * @param projectAssessInfo
+     * @param model
+     * @param redirectAttributes
+     * @return
+     * @throws Exception
+     */
+    @RequiresPermissions(value={"project:projectAssess:add","project:projectAssess:edit"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public String save(ProjectAssessInfo projectAssessInfo, Model model, RedirectAttributes redirectAttributes) throws Exception{
+        if (!beanValidator(model, projectAssessInfo)){
+            return form(projectAssessInfo, model);
+        }
+        projectAssessInfo.setStatus(ProjectStatusEnum.IN_APRL.getValue());
+        String str = "";
+        if(StringUtils.isNotBlank(projectAssessInfo.getId())){//编辑表单保存
+            ProjectAssessInfo t = projectAssessService.get(projectAssessInfo.getId());//从数据库取出记录的值
+            MyBeanUtils.copyBeanNotNull2Bean(projectAssessInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+            str = projectAssessService.saveProjectAssess(t);//保存
+        }else{//新增表单保存
+            str = projectAssessService.saveProjectAssess(projectAssessInfo);//保存
+        }
+        if (StringUtils.isNotBlank(str)){
+            addMessage(redirectAttributes, "保存项目评估失败:"+str);
+        }else {
+            addMessage(redirectAttributes, "保存项评估成功");
+        }
+        return "redirect:"+ Global.getAdminPath()+"/project/projectAssess/?repage";
+    }
+
+    /**
+     * 保存项目
+     */
+    @RequiresPermissions(value={"project:projectAssess:add","project:projectAssess:edit"},logical=Logical.OR)
+    @RequestMapping(value = "tstore")
+    public String tStore(ProjectAssessInfo projectAssessInfo, Model model, RedirectAttributes redirectAttributes) throws Exception{
+        if (!beanValidator(model, projectAssessInfo)){
+            return form(projectAssessInfo, model);
+        }
+        try {
+//            projectRecords.setProjectStatus(ProjectStatusEnum.TSTORE.getValue());
+            if (!projectAssessInfo.getIsNewRecord()) {//编辑表单保存
+                ProjectAssessInfo t = projectAssessService.get(projectAssessInfo.getId());//从数据库取出记录的值
+                MyBeanUtils.copyBeanNotNull2Bean(projectAssessInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+                projectAssessService.saveProjectAssessTstore(t,ProjectStatusEnum.TSTORE);//保存
+            } else {//新增表单保存
+                projectAssessService.saveProjectAssessTstore(projectAssessInfo,ProjectStatusEnum.TSTORE);//保存
+            }
+            addMessage(redirectAttributes, "暂存项目成功");
+        }catch (Exception e){
+            logger.error("暂存项目异常:",e);
+            addMessage(redirectAttributes, "暂存项目异常:"+e.getMessage());
+        }
+        return "redirect:"+Global.getAdminPath()+"/project/projectAssess/?repage";
+    }
+
+
+    /**
+     * 首页流程查看跳转方法
+     * @param projectAssessInfo
+     * @param model
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "getProcess")
+    public String getProcess(ProjectAssessInfo projectAssessInfo, Model model,HttpServletRequest request){
+        model.addAttribute("processInstanceId", projectAssessInfo.getProcessInstanceId());
+        return "modules/projectAssess/projectAssessTask";
+    }
+
+    /**
+     * 审核操作
+     * @return
+     */
+    @RequestMapping(value = "saveAudit")
+    public String saveAudit(ProjectAssessInfo projectAssessInfo, RedirectAttributes redirectAttributes) {
+        if (null == projectAssessInfo.getAct()){
+            projectAssessInfo.setAct(getByAct(projectAssessInfo.getProcessInstanceId()));
+        }
+        // 对不同环节的业务逻辑进行操作
+        String taskDefKey = projectAssessInfo.getAct().getTaskDefKey();
+        List<User> users = null;
+        if ("bzshb".equals(taskDefKey)){
+            users = UserUtils.getByProssType(projectAssessInfo.getProcessInstanceId(),3);
+            if (users==null )
+                users = projectAssessService.getMasterUserList(projectAssessInfo.getProjectId());
+                //users = UserUtils.getByRoleActivityEnname("master",2,UserUtils.getSelectOffice().getId(),"11",projectAssessInfo.getCreateBy());
+        }else  if ("master".equals(taskDefKey)){
+            users = UserUtils.getByRoleActivityEnname("cwzg",3,UserUtils.getSelectOffice().getId(),"11",projectAssessInfo.getCreateBy());
+        }else  if ("cwzg".equals(taskDefKey)){
+            users = UserUtils.getByRoleActivityEnname("fzjl",3,UserUtils.getSelectOffice().getId(),"11",projectAssessInfo.getCreateBy());
+        }else  if ("fzjl".equals(taskDefKey)){
+            users = UserUtils.getByRoleActivityEnname("zjl",3,UserUtils.getSelectOffice().getId(),"11",projectAssessInfo.getCreateBy());
+        }else  if ("zjl".equals(taskDefKey)){
+                users = UserUtils.getByRoleActivityEnname("zjl",3,UserUtils.getSelectOffice().getId(),"11",projectAssessInfo.getCreateBy());
+        }else if ("modifyApply".equals(taskDefKey)){
+            users = UserUtils.getByProssType(projectAssessInfo.getProcessInstanceId(),1);
+        }
+        //return "redirect:" + Global.getAdminPath() + "/project/projectAssess/?repage";
+        String flag = projectAssessInfo.getAct().getFlag();
+        if ("yes".equals(flag) && (users==null || users.size()==0)){
+            addMessage(redirectAttributes, "审批失败,审批人为空,请联系管理员!");
+        }else {
+            String str = projectAssessService.auditProjectAssess(projectAssessInfo,users);
+            addMessage(redirectAttributes, str);
+        }
+        if (StringUtils.isNotBlank(projectAssessInfo.getHome()) && "home".equals(projectAssessInfo.getHome())){
+            return "redirect:" + Global.getAdminPath() + "/home/?repage";
+        }else {
+            return "redirect:" + Global.getAdminPath() + "/project/projectAssess/?repage";
+        }
+    }
+
+    /**
+     * 审核撤回操作
+     * @param request
+     * @param redirectAttributes
+     * @return
+     */
+    @RequestMapping(value = "revoke")
+    public String revoke(HttpServletRequest request, RedirectAttributes redirectAttributes) {
+        HashMap<String, String> requestMap = findRequestMap(request);
+        String processInstanceId = requestMap.get("processInstanceId");
+        String id = requestMap.get("id");
+        try {
+            ProjectAssessInfo projectAssessInfo = projectAssessService.get(id);
+            if(5==projectAssessInfo.getStatus()){
+                addMessage(redirectAttributes, "项目评审已审批通过,无法撤回");
+                return "redirect:"+Global.getAdminPath()+"/project/projectAssess/?repage";
+            }
+            projectAssessService.cancelProcess(projectAssessInfo);
+            addMessage(redirectAttributes, "撤回该项目评审成功");
+        }catch (Exception e){
+            logger.info(e.getMessage());
+            addMessage(redirectAttributes, "撤回该项目评审失败");
+        }
+        return "redirect:" + Global.getAdminPath() + "/project/projectAssess/?repage";
+    }
+
+    /**
+     * 审核驳回修改方法
+     */
+    @RequiresPermissions(value={"project:projectAssess:edit"},logical=Logical.OR)
+    @RequestMapping(value = "modify")
+    public String modify(ProjectAssessInfo projectAssessInfo, Model model) {
+        projectAssessInfo = projectAssessService.queryProjectAssess(projectAssessInfo);
+        ProcessInstance processInstance = actTaskService.getProcIns(projectAssessInfo.getProcessInstanceId());
+        if (processInstance!=null) {
+            Task taskInfok = actTaskService.getCurrentTaskInfo(processInstance);
+            Act act = new Act();
+            act.setTaskId(taskInfok.getId());
+            act.setTaskName(taskInfok.getName());
+            act.setTaskDefKey(taskInfok.getTaskDefinitionKey());
+            act.setProcDefId(taskInfok.getProcessDefinitionId());
+            act.setProcInsId(taskInfok.getProcessInstanceId());
+            act.setTask(taskInfok);
+            projectAssessInfo.setAct(act);
+        }
+
+        model.addAttribute("projectAssess", projectAssessInfo);
+        return "modules/projectAssess/projectAssessModifyApply";
+    }
+
+    /**
+     * 删除项目
+     */
+    @RequiresPermissions("project:projectAssess:del")
+    @RequestMapping(value = "delete")
+    public String delete(ProjectAssessInfo projectAssessInfo, RedirectAttributes redirectAttributes) {
+        int status = projectAssessInfo.getStatus();
+        if(status==ProjectStatusEnum.TSTORE.getValue()||status==ProjectStatusEnum.REJECTED.getValue()||status==ProjectStatusEnum.RECALL.getValue()){
+            projectAssessService.delete(projectAssessInfo);
+            addMessage(redirectAttributes, "删除项目评估成功");
+            return "redirect:"+Global.getAdminPath()+"/project/projectAssess/?repage";
+        }else {
+            addMessage(redirectAttributes, "删除项目评估失败,只有“暂存”、“驳回”、“撤回”状态的项目才能删除");
+        }
+        return "redirect:"+Global.getAdminPath()+"/project/projectAssess/?repage";
+    }
+
+    public Act getByAct(String processInstanceId){
+        Act act = new Act();
+        ProcessInstance processInstance = actTaskService.getProcIns(processInstanceId);
+        if (processInstance!=null) {
+            List<Task> taskList = actTaskService.getCurrentTaskList(processInstance);
+            if(taskList!=null && taskList.size()>1){
+                for (Task taskInfok:taskList) {
+                    if (taskInfok.getAssignee().equals(UserUtils.getUser().getId())) {
+                        act.setTaskId(taskInfok.getId());
+                        act.setTaskName(taskInfok.getName());
+                        act.setTaskDefKey(taskInfok.getTaskDefinitionKey());
+                        act.setProcDefId(taskInfok.getProcessDefinitionId());
+                        act.setProcInsId(taskInfok.getProcessInstanceId());
+                        act.setTask(taskInfok);
+                    }
+                }
+            }else {
+                Task task = actTaskService.getCurrentTaskInfo(processInstance);
+                act.setTaskId(task.getId());
+                act.setTaskName(task.getName());
+                act.setTaskDefKey(task.getTaskDefinitionKey());
+                act.setProcDefId(task.getProcessDefinitionId());
+                act.setProcInsId(task.getProcessInstanceId());
+                act.setTask(task);
+            }
+        }
+        return  act;
+    }
+}

+ 9 - 0
src/main/java/com/jeeplus/modules/projectrecord/dao/ProjectRecordsDao.java

@@ -6,6 +6,8 @@ package com.jeeplus.modules.projectrecord.dao;
 import com.jeeplus.common.persistence.CrudDao;
 import com.jeeplus.common.persistence.annotation.MyBatisDao;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.sys.entity.Company;
+import com.jeeplus.modules.sys.entity.Office;
 
 import java.util.List;
 
@@ -31,4 +33,11 @@ public interface ProjectRecordsDao extends CrudDao<ProjectRecords> {
     int queryCount(ProjectRecords records);
     int queryCountByStatus(ProjectRecords records);
     int findByContract(String contractId);
+
+    /**
+     * 根据企业id查询企业信息
+     * @param id
+     * @return
+     */
+    Office selectCompany(String id);
 }

+ 11 - 0
src/main/java/com/jeeplus/modules/projectrecord/service/ProjectRecordsService.java

@@ -191,10 +191,21 @@ public class ProjectRecordsService extends CrudService<ProjectRecordsDao, Projec
 			records.setProjectLeaders(users);
 			records.setLeaderNameStr(Collections3.extractToString(users, "name", ","));
 			records.setLeaderIds(Collections3.extractToString(users, "id", ","));
+			records.setCompany(dao.selectCompany(records.getCompany().getId()));
 		}
 		page.setList(recordsList);
 		return page;
 	}
+
+	/**
+	 * 根据id 查询公司信息
+	 * @param id
+	 * @return
+	 */
+	public Office getCompanyById(String id){
+		return dao.selectCompany(id);
+	}
+
 	public Page<ProjectRecords> findPageByStatus(Page<ProjectRecords> page, ProjectRecords projectRecords) {
 		//设置数据权限
 		if(!UserUtils.getUser().isAdmin()) {

+ 2 - 2
src/main/java/com/jeeplus/modules/workadministrativeatamp/web/WorkAdministrativeAtampController.java

@@ -178,9 +178,9 @@ public class WorkAdministrativeAtampController extends BaseController {
             str = workAdministrativeAtampService.saveAtamp(workAdministrativeAtamp);//保存
         }
         if (StringUtils.isNotBlank(str)){
-            addMessage(redirectAttributes, "保存项目盖章失败:"+str);
+            addMessage(redirectAttributes, "保存用印申请失败:"+str);
         }else {
-            addMessage(redirectAttributes, "保存项目盖章成功");
+            addMessage(redirectAttributes, "保存用印申请成功");
         }
 		return "redirect:"+Global.getAdminPath()+"/workadministrativeatamp/workAdministrativeAtamp/?repage";
 	}

+ 3 - 0
src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceController.java

@@ -18,6 +18,7 @@ import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.service.ActTaskService;
 import com.jeeplus.modules.act.utils.ActUtils;
+import com.jeeplus.modules.projectrecord.dao.ProjectRecordsDao;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
 import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
@@ -617,6 +618,8 @@ public class WorkInvoiceController extends BaseController {
 		HashMap<Object, Object> map = Maps.newHashMap();
 		String obj = request.getParameter("obj");
 		ProjectRecords projectRecords = projectRecordsService.getInfo(obj);
+		Office company = projectRecordsService.getCompanyById(projectRecords.getCompany().getId());
+		map.put("companyName",company.getName());
 		map.put("pNumber",projectRecords.getProjectId());//项目编号
 		map.put("cName",projectRecords.getWorkContractInfo().getClient().getName());//委托方
 		map.put("cInfoName",projectRecords.getWorkContractInfo().getName());//合同名称

+ 63 - 0
src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java

@@ -36,6 +36,8 @@ import com.jeeplus.modules.oabuy.service.OaBuyService;
 import com.jeeplus.modules.oaperformance.entity.OaPerformance;
 import com.jeeplus.modules.oaperformance.service.OaPerformanceService;
 import com.jeeplus.modules.officeintroduce.dao.OfficeintroduceDao;
+import com.jeeplus.modules.projectAssess.entity.ProjectAssessInfo;
+import com.jeeplus.modules.projectAssess.service.ProjectAssessService;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportRecord;
 import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
@@ -418,6 +420,8 @@ public class WorkProjectNotifyController extends BaseController {
 	private WorkLeaveService workLeaveService;
 	@Autowired
 	WorkGoOutService workGoOutService;
+	@Autowired
+	ProjectAssessService projectAssessService;
 
 	@ModelAttribute
 	public WorkProjectNotify get(@RequestParam(required=false) String id) {
@@ -676,6 +680,10 @@ public class WorkProjectNotifyController extends BaseController {
                 WorkAdministrativeAtamp workAdministrativeAtamp = workAdministrativeAtampService.get(workProjectNotify.getNotifyId());
 				if (workAdministrativeAtamp != null)
                 processInstanceId = workAdministrativeAtamp.getProcessInstanceId();
+			}else if("137".equals(workProjectNotify.getType())){	//项目评估
+				ProjectAssessInfo projectAssessInfo = projectAssessService.get(workProjectNotify.getNotifyId());
+				if (projectAssessInfo != null)
+                processInstanceId = projectAssessInfo.getProcessInstanceId();
 			}else if("59".equals(workProjectNotify.getType())){	//借用管理
 				WorkBorrowMangement workBorrowMangement = workBorrowMangementService.get(workProjectNotify.getNotifyId());
 				if (workBorrowMangement != null)
@@ -1449,6 +1457,57 @@ public class WorkProjectNotifyController extends BaseController {
 					} else {
 						return "modules/workadministrativeatamp/workAdministrativeAtampView";
 					}
+				}else if ("137".equals(workProjectNotify.getType())) {    //项目评估
+					ProjectAssessInfo projectAssessInfo = projectAssessService.get(workProjectNotify.getNotifyId());
+					if (null != projectAssessInfo){
+						List<MainDictDetail> informationSupplyTypeList = DictUtils.getMainDictList("information_supply_type");
+						for (MainDictDetail informationSupplyType : informationSupplyTypeList) {
+							if (projectAssessInfo.getInformationSupplyType().equals(informationSupplyType.getValue().toString())){
+								projectAssessInfo.setInformationSupplyType(informationSupplyType.getLabel());
+								break;
+							}
+						}
+						List<MainDictDetail> projectTypeList = DictUtils.getMainDictList("project_type");
+						for (MainDictDetail projectType : projectTypeList) {
+							if (projectAssessInfo.getProjectType().equals(projectType.getValue().toString())){
+								projectAssessInfo.setProjectType(projectType.getLabel());
+								break;
+							}
+						}
+					}
+					if (StringUtils.isNotBlank(projectAssessInfo.getProjectId())){
+						Office office = projectAssessService.getOfficeName(projectAssessInfo.getProjectId());
+						if (null != office){
+							projectAssessInfo.setOfficeName(office.getTopCompany());
+						}else{
+							projectAssessInfo.setOfficeName("");
+						}
+					}
+					Act act = getByAct(projectAssessInfo.getProcessInstanceId());
+					Role loginUserRole = new Role();
+					User user = UserUtils.getUser();
+					if (null != user.getRoleList()){
+						loginUserRole = user.getRoleList().get(0);
+
+					}
+					projectAssessInfo.setAct(act);
+					projectAssessInfo.setHome("home");
+					model.addAttribute("projectAssess", projectAssessInfo);
+					model.addAttribute("loginUserRole", loginUserRole);
+					if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
+						if (loginUserRole.getEnname().equals("zg")){
+							return "modules/projectAssess/projectAssessAuditZg";
+						}else if (loginUserRole.getEnname().equals("cw")){
+							return "modules/projectAssess/projectAssessAuditCw";
+						}else if (loginUserRole.getEnname().equals("fzjl") || loginUserRole.getEnname().equals("zjl")){
+							return "modules/projectAssess/projectAssessAuditJl";
+						}
+						return "modules/projectAssess/projectAssessAudit";
+					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
+						return "modules/projectAssess/projectAssessModifyApply";
+					} else {
+						return "modules/projectAssess/projectAssessView";
+					}
 				} else if (("57").equals(workProjectNotify.getType())) {    //采购合同
 					WorkStockContract workStockContract = workStockContractService.get(workProjectNotify.getNotifyId());
 					workStockContract.setAct(getByAct(workStockContract.getProcessInstanceId()));
@@ -2456,6 +2515,10 @@ public class WorkProjectNotifyController extends BaseController {
 					WorkGoOutInfo workGoOut = workGoOutService.get(workProjectNotify.getNotifyId());
 					model.addAttribute("workGoOut", workGoOut);
 					return "modules/workagoout/workworkGoOutView";
+				}else if("137".equals(workProjectNotify.getType())){	//项目评估
+					ProjectAssessInfo projectAssess = projectAssessService.get(workProjectNotify.getNotifyId());
+					model.addAttribute("projectAssess", projectAssess);
+					return "modules/projectAssess/projectAssessView";
 				}
 			}
 		}

+ 313 - 0
src/main/resources/mappings/modules/projectAssess/ProjectAssessDao.xml

@@ -0,0 +1,313 @@
+<?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.projectAssess.dao.ProjectAssessDao">
+
+	<!-- 项目评估表信息 -->
+	<sql id="projectAssessColumns">
+		  a.id as id,
+		  a.company_id as companyId,
+		  a.office_id as officeId,
+		  a.project_id as projectId,
+		  a.information_supply_type as informationSupplyType,
+		  a.project_type as projectType,
+		  a.project_overview as projectOverview,
+		  a.technical_support as technicalSupport,
+		  a.policies_regulations as policiesRegulations,
+		  a.zoology_red_line as zoologyRedLine,
+		  a.sensitive_situation as sensitiveSituation,
+		  a.environmental_risk as environmentalRisk,
+		  a.other_risk as otherRisk,
+		  a.project_complexity as projectComplexity,
+		  a.contract_id as contractId,
+		  a.customer_cost as customerCost,
+		  a.project_cost as projectCost,
+		  a.staffing_audit_cost as staffingAuditCost,
+		  a.company_manage_cost as companyManageCost,
+		  a.taxes_dues as taxesDues,
+		  a.profit as profit,
+		  a.fzjl_assess_conclusion as fzjlAssessConclusion,
+		  a.zjl_assess_conclusion as zjlAssessConclusion,
+		  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 remakes,
+		  a.del_flag as delFlag,
+		  a.status as status,
+		  a.process_instance_id as processInstanceId,
+		  a.num as num,
+		  a.pay_date as payDate
+	</sql>
+
+	<!-- 根据id查询项目评估信息 -->
+	<select id="get" resultType="com.jeeplus.modules.projectAssess.entity.ProjectAssessInfo" >
+		SELECT
+			<include refid="projectAssessColumns"/>
+			,pr.id as projectId
+			,pr.project_name as projectName
+			,wci.contract_price as contractPrice
+			,wci.payment as payment
+			,sc.name as companyName
+		FROM project_assess_info a
+		left join project_records pr on pr.id = a.project_id
+		left join sys_office sc on pr.company_id = sc.id
+		left join work_contract_info wci on wci.id = pr.contract_id
+		WHERE a.id = #{id}
+	</select>
+
+	<!-- 根据条件查询项目评估list信息 -->
+	<select id="findList" resultType="com.jeeplus.modules.projectAssess.entity.ProjectAssessInfo" >
+		SELECT
+		<include refid="projectAssessColumns"/>
+			,pr.id as projectId
+			,pr.project_name as projectName
+			,sc.name as companyName
+			,wci.contract_price as contractPrice
+			,wci.payment as payment
+		FROM project_assess_info a
+		left join project_records pr on pr.id = a.project_id
+		left join sys_office sc on pr.company_id = sc.id
+		left join work_contract_info wci on wci.id = pr.contract_id
+		<where>
+            a.del_flag = 0
+			<if test="projectName != null and projectName != ''">
+				AND pr.project_name like concat('%',#{projectName},'%')
+			</if>
+			<if test="companyName != null and companyName != ''">
+				AND sc.name like concat(concat('%',#{companyName}),'%')
+			</if>
+			<if test="informationSupplyType != null and informationSupplyType != ''">
+				AND a.information_supply_type = #{informationSupplyType}
+			</if>
+			<if test="beginDate !=null">
+				AND a.create_date >= #{beginDate}
+			</if>
+			<if test="endDate !=null">
+				AND a.create_date &lt; #{endDate}
+			</if>
+		</where>
+		GROUP BY a.id
+		<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>
+
+	<!-- 根据条件查询项目评估list数量 -->
+	<select id="queryCount" resultType="int" >
+		SELECT count(DISTINCT a.id)
+		FROM project_assess_info a
+		left join project_records pr on pr.id = a.project_id
+		left join sys_office sc on pr.company_id = sc.id
+		left join work_contract_info wci on wci.id = pr.contract_id
+		<where>
+            a.del_flag = 0
+			<if test="projectName != null and projectName != ''">
+				AND pr.project_name like concat('%',#{projectName},'%')
+			</if>
+			<if test="companyName != null and companyName != ''">
+				AND sc.name like concat(concat('%',#{companyName}),'%')
+			</if>
+			<if test="informationSupplyType != null and informationSupplyType != ''">
+				AND a.information_supply_type = #{informationSupplyType}
+			</if>
+			<if test="beginDate !=null">
+				AND a.create_date >= #{beginDate}
+			</if>
+			<if test="endDate !=null">
+				AND a.create_date &lt; #{endDate}
+			</if>
+		</where>
+	</select>
+
+	<!-- 添加信息 -->
+	<insert id="insert">
+		insert into project_assess_info (
+		  id,
+		  company_id,
+		  office_id,
+		  project_id,
+		  information_supply_type,
+		  project_type,
+		  project_overview,
+		  technical_support,
+		  policies_regulations,
+		  zoology_red_line,
+		  sensitive_situation,
+		  environmental_risk,
+		  other_risk,
+		  project_complexity,
+		  contract_id,
+		  customer_cost,
+		  project_cost,
+		  staffing_audit_cost,
+		  company_manage_cost,
+		  taxes_dues,
+		  profit,
+		  fzjl_assess_conclusion,
+		  zjl_assess_conclusion,
+		  create_by,
+		  create_date,
+		  update_by,
+		  update_date,
+		  remarks,
+		  del_flag,
+		  status,
+		  process_instance_id,
+		  num,
+		  pay_date
+		)
+		values
+		  (
+		  	#{id},
+		  	#{company.id},
+		  	#{office.id},
+		  	#{projectIdStr},
+		  	#{informationSupplyType},
+		  	#{projectType},
+		  	#{projectOverview},
+		  	#{technicalSupport},
+		  	#{policiesRegulations},
+		  	#{zoologyRedLine},
+		  	#{sensitiveSituation},
+		  	#{environmentalRisk},
+		  	#{otherRisk},
+		  	#{projectComplexity},
+		  	#{contractId},
+		  	#{customerCost},
+		  	#{projectCost,},
+		  	#{staffingAuditCost},
+		  	#{companyManageCost},
+		  	#{taxesDues},
+		  	#{profit},
+		  	#{fzjlAssessConclusion},
+		  	#{zjlAssessConclusion},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+		  	#{remarks},
+		  	#{delFlag},
+		  	#{status},
+		  	#{processInstanceId},
+		  	#{num},
+		  	#{payDate}
+		  )
+	</insert>
+
+	<update id="update">
+		update
+			project_assess_info
+		set
+			update_by = #{updateBy.id}
+			,update_date = #{updateDate}
+			<if test="companyId!=null and companyId!=''">
+				,company_id = #{companyId}
+			</if>
+			<if test="officeId!=null and officeId!=''">
+				,office_id = #{officeId}
+			</if>
+			<if test="projectId!=null and projectId!=''">
+				,project_id = #{projectId}
+			</if>
+			<if test="informationSupplyType!=null and informationSupplyType!=''">
+				,information_supply_type = #{informationSupplyType}
+			</if>
+			<if test="projectType!=null and projectType!=''">
+				,project_type = #{projectType}
+			</if>
+			<if test="projectOverview!=null and projectOverview!=''">
+				,project_overview = #{projectOverview}
+			</if>
+			<if test="technicalSupport!=null and technicalSupport!=''">
+				,technical_support = #{technicalSupport}
+			</if>
+			<if test="policiesRegulations!=null and policiesRegulations!=''">
+				,policies_regulations = #{policiesRegulations}
+			</if>
+			<if test="zoologyRedLine!=null and zoologyRedLine!=''">
+				,zoology_red_line = #{zoologyRedLine}
+			</if>
+			<if test="sensitiveSituation!=null and sensitiveSituation!=''">
+				,sensitive_situation = #{sensitiveSituation}
+			</if>
+			<if test="environmentalRisk!=null and environmentalRisk!=''">
+				,environmental_risk = #{environmentalRisk}
+			</if>
+			<if test="otherRisk!=null and otherRisk!=''">
+				,other_risk = #{otherRisk}
+			</if>
+			<if test="projectComplexity!=null and projectComplexity!=''">
+				,project_complexity = #{projectComplexity}
+			</if>
+			<if test="contractId!=null and contractId!=''">
+				,contract_id = #{contractId}
+			</if>
+			<if test="customerCost!=null and customerCost!=''">
+				,customer_cost = #{customerCost}
+			</if>
+			<if test="projectCost!=null and projectCost!=''">
+				,project_cost = #{projectCost}
+			</if>
+			<if test="staffingAuditCost!=null and staffingAuditCost!=''">
+				,staffing_audit_cost = #{staffingAuditCost}
+			</if>
+			<if test="companyManageCost!=null and companyManageCost!=''">
+				,company_manage_cost = #{companyManageCost}
+			</if>
+			<if test="taxesDues!=null and taxesDues!=''">
+				,taxes_dues = #{taxesDues}
+			</if>
+			<if test="profit!=null and profit!=''">
+				,profit = #{profit}
+			</if>
+			<if test="fzjlAssessConclusion!=null and fzjlAssessConclusion!=''">
+				,fzjl_assess_conclusion = #{fzjlAssessConclusion}
+			</if>
+			<if test="zjlAssessConclusion!=null and zjlAssessConclusion!=''">
+				,zjl_assess_conclusion = #{zjlAssessConclusion}
+			</if>
+			<if test="remarks!=null and remarks!=''">
+				,remarks = #{remarks}
+			</if>
+			<if test="status!=null and status!=''">
+				,status = #{status}
+			</if>
+			<if test="processInstanceId!=null and processInstanceId!=''">
+				,process_instance_id = #{processInstanceId}
+			</if>
+			<if test="num!=null and num!=''">
+				,num = #{num}
+			</if>
+			<if test="payDate!=null and payDate!=''">
+				,pay_date = #{payDate}
+			</if>
+		where id = #{id} ;
+	</update>
+
+	<!-- 修改审批流程id -->
+	<update id="updateProcessIdAndStatus" >
+		UPDATE  project_assess_info SET
+		process_instance_id = #{processInstanceId},
+		status = #{status}
+		WHERE id = #{id}
+	</update>
+
+	<select id="getProjectUser" resultType="com.jeeplus.modules.sys.entity.User">
+		select * from sys_user where id in(
+		select user_id from work_project_user where project_id=#{projectId}
+		)
+	</select>
+
+    <!-- 逻辑删除 -->
+    <delete id="delete">
+        UPDATE  project_assess_info SET
+		del_flag = 1
+		WHERE id = #{id}
+    </delete>
+
+</mapper>

+ 4 - 0
src/main/resources/mappings/modules/projectrecord/ProjectRecordsDao.xml

@@ -603,6 +603,10 @@
 		</where>
 	</select>
 
+	<select id="selectCompany" resultType="Office">
+		select * from sys_office where id = #{id}
+	</select>
+
 	<select id="findPageByRe" resultType="ProjectRecords" >
 		SELECT
 		<include refid="projectRecordsColumns"/>

+ 173 - 0
src/main/webapp/webpage/modules/projectAssess/projectAssessAudit.jsp

@@ -0,0 +1,173 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目评估管理</title>
+	<meta name="decorator" content="default"/>
+    <script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 1){
+                    $('#flag').val('yes');
+                    $("#inputForm").submit();
+                    return true;
+                }else{
+                    $('#flag').val('no');
+                }
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            laydate.render({
+                elem: '#incomeDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+    </script>
+</head>
+<body>
+    <div class="single-form">
+        <div class="container">
+            <form:form id="inputForm" modelAttribute="projectAssess" action="${ctx}/project/projectAssess/saveAudit" method="post" class="form-horizontal">
+                <form:hidden path="id"/>
+                <form:hidden path="home"/>
+                <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 path="projectId"/>
+                <form:hidden id="flag" path="act.flag"/>
+                <div class="form-group layui-row first">
+                    <div class="form-group-label"><h2>基本信息</h2></div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">项目名称:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="projectName" name="projectName" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">公司名称:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="companyName" name="companyName" readonly="readonly" class="form-control layui-input" value="${projectAssess.companyName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">所属部门:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="officeName" name="officeName" readonly="readonly" class="form-control layui-input" value="${projectAssess.officeName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">信息提供人及类型:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="informationSupplyType" name="informationSupplyType" readonly="readonly" class="form-control layui-input" value="${projectAssess.informationSupplyType}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">项目类型:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="projectType" name="projectType" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectType}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label  double-line">项目概况:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="projectOverview" readonly="true" id="projectOverview" htmlEscape="false" maxlength="500" rows="4"  value="${projectAssess.projectOverview}"  class="form-control" placeholder="项目概况(项目类型、建设地点、是否涉及生态红线、环境风险等级、敏感程度等)"/>
+                        </div>
+                    </div>
+
+                    <div class="layui-item layui-col-sm6 ">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>难易程度:</label>
+                        <div class="layui-input-block">
+                            <form:select path="projectComplexity" cssClass="form-control required simple-select">
+                                <form:option value="" label=""/>
+                                <form:option value="正常" label="正常" />
+                                <form:option value="较难" label="较难" />
+                                <form:option value="难" label="难" />
+                            </form:select>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>技术支撑力量:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="technicalSupport" name="technicalSupport" readonly="readonly" class="form-control layui-input" value="${projectAssess.technicalSupport}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>政策法规相符性:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="policiesRegulations" name="policiesRegulations" readonly="readonly" class="form-control layui-input" value="${projectAssess.policiesRegulations}"/>
+                        </div>
+                    </div>
+
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">敏感情况:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="sensitiveSituation" readonly="true" id="sensitiveSituation" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.sensitiveSituation}" class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">环境风险:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="environmentalRisk" readonly="true" id="environmentalRisk" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.environmentalRisk}" class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">其他:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="otherRisk" id="otherRisk" readonly="true" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.otherRisk}" class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>审批意见</h2></div>
+                    <div class="layui-item layui-col-xs12 with-textarea" >
+                        <label class="layui-form-label">审批意见:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="act.comment" class="form-control" rows="4" maxlength="500" />
+                            <input type="file" name="upload_files" style="display: none;">
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>审批流程</h2></div>
+                    <div class="layui-item layui-col-xs12 form-table-container" >
+                        <act:flowChart procInsId="${projectAssess.act.procInsId}"/>
+                        <act:histoicFlow procInsId="${projectAssess.act.procInsId}"/>
+                    </div>
+                </div>
+
+                <div class="form-group layui-row page-end"></div>
+	        </form:form>
+        </div>
+    </div>
+</body>
+</html>

+ 225 - 0
src/main/webapp/webpage/modules/projectAssess/projectAssessAuditCw.jsp

@@ -0,0 +1,225 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目评估管理</title>
+	<meta name="decorator" content="default"/>
+    <script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 1){
+                    $('#flag').val('yes');
+                    $("#inputForm").submit();
+                    return true;
+                }else{
+                    $('#flag').val('no');
+                }
+
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            laydate.render({
+                elem: '#payDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+    </script>
+</head>
+<body>
+    <div class="single-form">
+        <div class="container">
+            <form:form id="inputForm" modelAttribute="projectAssess" action="${ctx}/project/projectAssess/saveAudit" method="post" class="form-horizontal">
+                <form:hidden path="id"/>
+                <form:hidden path="home"/>
+                <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 path="projectId"/>
+                <form:hidden id="flag" path="act.flag"/>
+                <div class="form-group layui-row first">
+                    <div class="form-group-label"><h2>基本信息</h2></div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">项目名称:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="projectName" name="projectName" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">公司名称:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="companyName" name="companyName" readonly="readonly" class="form-control layui-input" value="${projectAssess.companyName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">所属部门:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="officeName" name="officeName" readonly="readonly" class="form-control layui-input" value="${projectAssess.officeName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">信息提供人及类型:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="informationSupplyType" name="informationSupplyType" readonly="readonly" class="form-control layui-input" value="${projectAssess.informationSupplyType}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">项目类型:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="projectType" name="projectType" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectType}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label double-line ">项目概况:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="projectOverview" readonly="true" id="projectOverview" htmlEscape="false" maxlength="500" rows="4"  value="${projectAssess.projectOverview}"  class="form-control" placeholder="项目概况(项目类型、建设地点、是否涉及生态红线、环境风险等级、敏感程度等)"/>
+                        </div>
+                    </div>
+
+                    <div class="layui-item layui-col-sm6 ">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>难易程度:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="projectComplexity" name="projectComplexity" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectComplexity}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>技术支撑力量:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="technicalSupport" name="technicalSupport" readonly="readonly" class="form-control layui-input" value="${projectAssess.technicalSupport}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>政策法规相符性:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="policiesRegulations" name="policiesRegulations" readonly="readonly" class="form-control layui-input" value="${projectAssess.policiesRegulations}"/>
+                        </div>
+                    </div>
+
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">敏感情况:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="sensitiveSituation" readonly="true" id="sensitiveSituation" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.sensitiveSituation}" class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">环境风险:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="environmentalRisk" readonly="true" id="environmentalRisk" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.environmentalRisk}" class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">其他:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="otherRisk" id="otherRisk" readonly="true" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.otherRisk}" class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>合同额:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="contractPrice" name="contractPrice" readonly="readonly" class="form-control layui-input number" value="${projectAssess.contractPrice}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>付款方式:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="payment" name="payment" class="form-control layui-input" readonly="readonly" value="${projectAssess.payment}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>付款时间:</label>
+                        <div class="layui-input-block">
+                            <input class="laydate-icondate layui-input form-control layer-date laydate-icon required" id="payDate" name="payDate" value="<fmt:formatDate value="${projectAssess.payDate}" pattern="yyyy-MM-dd"/>">
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>客户成本:</label>
+                        <div class="layui-input-block">
+                            <form:input path="customerCost"  htmlEscape="false" pattern="#.00"  class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>项目成本:</label>
+                        <div class="layui-input-block">
+                            <form:input path="projectCost"  htmlEscape="false" pattern="#.00"  class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>编制审核费:</label>
+                        <div class="layui-input-block">
+                            <form:input path="staffingAuditCost"  htmlEscape="false" pattern="#.00"  class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>公司管理成本:</label>
+                        <div class="layui-input-block">
+                            <form:input path="companyManageCost"  htmlEscape="false" pattern="#.00"  class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>税费:</label>
+                        <div class="layui-input-block">
+                            <form:input path="taxesDues"  htmlEscape="false" pattern="#.00"  class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>利润:</label>
+                        <div class="layui-input-block">
+                            <form:input path="profit"  htmlEscape="false" pattern="#.00"  class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>审批意见</h2></div>
+                    <div class="layui-item layui-col-xs12 with-textarea" >
+                        <label class="layui-form-label">审批意见:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="act.comment" class="form-control" rows="4" maxlength="500" />
+                            <input type="file" name="upload_files" style="display: none;">
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>审批流程</h2></div>
+                    <div class="layui-item layui-col-xs12 form-table-container" >
+                        <act:flowChart procInsId="${projectAssess.act.procInsId}"/>
+                        <act:histoicFlow procInsId="${projectAssess.act.procInsId}"/>
+                    </div>
+                </div>
+
+                <div class="form-group layui-row page-end"></div>
+	        </form:form>
+        </div>
+    </div>
+</body>
+</html>

+ 247 - 0
src/main/webapp/webpage/modules/projectAssess/projectAssessAuditJl.jsp

@@ -0,0 +1,247 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目评估管理</title>
+	<meta name="decorator" content="default"/>
+    <script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 1){
+                    $('#flag').val('yes');
+                }else{
+                    $('#flag').val('no');
+                }
+
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            /*laydate.render({
+                elem: '#payDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });*/
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+    </script>
+</head>
+<body>
+    <div class="single-form">
+        <div class="container">
+            <form:form id="inputForm" modelAttribute="projectAssess" action="${ctx}/project/projectAssess/saveAudit" method="post" class="form-horizontal">
+                <form:hidden path="id"/>
+                <form:hidden path="home"/>
+                <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 path="projectId"/>
+                <form:hidden id="flag" path="act.flag"/>
+                <div class="form-group layui-row first">
+                    <div class="form-group-label"><h2>基本信息</h2></div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label">项目名称:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="projectName" name="projectName" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">公司名称:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="companyName" name="companyName" readonly="readonly" class="form-control layui-input" value="${projectAssess.companyName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">所属部门:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="officeName" name="officeName" readonly="readonly" class="form-control layui-input" value="${projectAssess.officeName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">信息提供人及类型:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="informationSupplyType" name="informationSupplyType" readonly="readonly" class="form-control layui-input" value="${projectAssess.informationSupplyType}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">项目类型:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="projectType" name="projectType" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectType}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label double-line ">项目概况:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="projectOverview" readonly="true" id="projectOverview" htmlEscape="false" maxlength="500" rows="4"  value="${projectAssess.projectOverview}"  class="form-control" placeholder="项目概况(项目类型、建设地点、是否涉及生态红线、环境风险等级、敏感程度等)"/>
+                        </div>
+                    </div>
+
+                    <div class="layui-item layui-col-sm6 ">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>难易程度:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="projectComplexity" name="projectComplexity" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectComplexity}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>技术支撑力量:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="technicalSupport" name="technicalSupport" readonly="readonly" class="form-control layui-input" value="${projectAssess.technicalSupport}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>政策法规相符性:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="policiesRegulations" name="policiesRegulations" readonly="readonly" class="form-control layui-input" value="${projectAssess.policiesRegulations}"/>
+                        </div>
+                    </div>
+
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">敏感情况:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="sensitiveSituation" readonly="true" id="sensitiveSituation" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.sensitiveSituation}" class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">环境风险:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="environmentalRisk" readonly="true" id="environmentalRisk" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.environmentalRisk}" class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">其他:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="otherRisk" id="otherRisk" readonly="true" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.otherRisk}" class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>合同额:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="contractPrice" name="contractPrice" readonly="readonly" class="form-control layui-input number" value="${projectAssess.contractPrice}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>付款方式:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="payment" name="payment" class="form-control layui-input" readonly="readonly" value="${projectAssess.payment}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>付款时间:</label>
+                        <div class="layui-input-block">
+                            <input readonly="true"  class="laydate-icondate layui-input form-control layer-date laydate-icon required" id="payDate" name="payDate" value="<fmt:formatDate value="${projectAssess.payDate}" pattern="yyyy-MM-dd"/>">
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>客户成本:</label>
+                        <div class="layui-input-block">
+                            <form:input path="customerCost"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>项目成本:</label>
+                        <div class="layui-input-block">
+                            <form:input path="projectCost"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>编制审核费:</label>
+                        <div class="layui-input-block">
+                            <form:input path="staffingAuditCost"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>公司管理成本:</label>
+                        <div class="layui-input-block">
+                            <form:input path="companyManageCost"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>税费:</label>
+                        <div class="layui-input-block">
+                            <form:input path="taxesDues"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>利润:</label>
+                        <div class="layui-input-block">
+                            <form:input path="profit"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                        </div>
+                    </div>
+                </div>
+                <c:if test="${loginUserRole.enname == 'fzjl'}">
+                    <div class="layui-item layui-col-xs12 with-textarea" >
+                        <label class="layui-form-label double-line">负责项目的副总评估结论:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="fzjlAssessConclusion" htmlEscape="false" maxlength="500" rows="4"    class="form-control"/>
+                        </div>
+                    </div>
+                </c:if>
+                <c:if test="${loginUserRole.enname == 'zjl'}">
+                    <div class="layui-item layui-col-xs12 with-textarea" >
+                        <label class="layui-form-label double-line">负责项目的副总评估结论:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="fzjlAssessConclusion" readonly="true" htmlEscape="false" maxlength="500" rows="4"    class="form-control"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-xs12 with-textarea" >
+                        <label class="layui-form-label double-line">总经理评估意见:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="zjlAssessConclusion" htmlEscape="false" maxlength="500" rows="4"    class="form-control"/>
+                        </div>
+                    </div>
+                </c:if>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>审批意见</h2></div>
+                    <div class="layui-item layui-col-xs12 with-textarea" >
+                        <label class="layui-form-label">审批意见:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="act.comment" class="form-control" rows="4" maxlength="500" />
+                            <input type="file" name="upload_files" style="display: none;">
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>审批流程</h2></div>
+                    <div class="layui-item layui-col-xs12 form-table-container" >
+                        <act:flowChart procInsId="${projectAssess.act.procInsId}"/>
+                        <act:histoicFlow procInsId="${projectAssess.act.procInsId}"/>
+                    </div>
+                </div>
+
+                <div class="form-group layui-row page-end"></div>
+	        </form:form>
+        </div>
+    </div>
+</body>
+</html>

+ 170 - 0
src/main/webapp/webpage/modules/projectAssess/projectAssessAuditZg.jsp

@@ -0,0 +1,170 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目评估管理</title>
+	<meta name="decorator" content="default"/>
+    <script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 1){
+                    $('#flag').val('yes');
+                    $("#inputForm").submit();
+                    return true;
+                }else{
+                    $('#flag').val('no');
+                }
+
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            laydate.render({
+                elem: '#incomeDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+    </script>
+</head>
+<body>
+    <div class="single-form">
+        <div class="container">
+            <form:form id="inputForm" modelAttribute="projectAssess" action="${ctx}/project/projectAssess/saveAudit" method="post" class="form-horizontal">
+                <form:hidden path="id"/>
+                <form:hidden path="home"/>
+                <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 path="projectId"/>
+                <form:hidden id="flag" path="act.flag"/>
+                <div class="form-group layui-row first">
+                    <div class="form-group-label"><h2>基本信息</h2></div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">项目名称:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="projectName" name="projectName" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">公司名称:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="companyName" name="companyName" readonly="readonly" class="form-control layui-input" value="${projectAssess.companyName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">所属部门:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="officeName" name="officeName" readonly="readonly" class="form-control layui-input" value="${projectAssess.officeName}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">信息提供人及类型:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="informationSupplyType" name="informationSupplyType" readonly="readonly" class="form-control layui-input" value="${projectAssess.informationSupplyType}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6">
+                        <label class="layui-form-label double-line">项目类型:</label>
+                        <div class="layui-input-block">
+                            <input htmlEscape="false" id="projectType" name="projectType" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectType}"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label  double-line">项目概况:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="projectOverview" readonly="true" id="projectOverview" htmlEscape="false" maxlength="500" rows="4"  value="${projectAssess.projectOverview}"  class="form-control" placeholder="项目概况(项目类型、建设地点、是否涉及生态红线、环境风险等级、敏感程度等)"/>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>技术支撑力量:</label>
+                        <div class="layui-input-block">
+                            <form:select path="technicalSupport" readonly="readonly" cssClass="form-control required simple-select">
+                                <form:option value="" label=""/>
+                                <form:option value="满足" label="满足" />
+                                <form:option value="不满足" label="不满足"/>
+                            </form:select>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <label class="layui-form-label double-line"><span class="require-item">*</span>政策法规相符性:</label>
+                        <div class="layui-input-block">
+                            <form:select path="policiesRegulations" readonly="readonly" cssClass="form-control required simple-select">
+                                <form:option value="" label=""/>
+                                <form:option value="是" label="是" />
+                                <form:option value="否" label="否"/>
+                            </form:select>
+                        </div>
+                    </div>
+
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">敏感情况:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="sensitiveSituation" id="sensitiveSituation" htmlEscape="false" maxlength="500" rows="4"    class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">环境风险:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="environmentalRisk" id="environmentalRisk" htmlEscape="false" maxlength="500" rows="4"    class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-item layui-col-sm6 ">
+                        <div class="layui-item layui-col-sm12 with-textarea">
+                            <label class="layui-form-label  double-line">其他:</label>
+                            <div class="layui-input-block">
+                                <form:textarea path="otherRisk" id="otherRisk" htmlEscape="false" maxlength="500" rows="4"    class="form-control"/>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>审批意见</h2></div>
+                    <div class="layui-item layui-col-xs12 with-textarea" >
+                        <label class="layui-form-label">审批意见:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="act.comment" class="form-control" rows="4" maxlength="500" />
+                            <input type="file" name="upload_files" style="display: none;">
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group layui-row">
+                    <div class="form-group-label"><h2>审批流程</h2></div>
+                    <div class="layui-item layui-col-xs12 form-table-container" >
+                        <act:flowChart procInsId="${projectAssess.act.procInsId}"/>
+                        <act:histoicFlow procInsId="${projectAssess.act.procInsId}"/>
+                    </div>
+                </div>
+
+                <div class="form-group layui-row page-end"></div>
+	        </form:form>
+        </div>
+    </div>
+</body>
+</html>

+ 237 - 0
src/main/webapp/webpage/modules/projectAssess/projectAssessForm.jsp

@@ -0,0 +1,237 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>项目评估管理</title>
+    <meta name="decorator" content="default"/>
+    <style>
+        label.error{
+            left:0px;
+            top:40px;
+        }
+    </style>
+    <script type="text/javascript">
+        var validateForm;
+        function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(i==2){
+                    $("#inputForm").attr("action","${ctx}/project/projectAssess/tstore");
+                }
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            $("input[name='ext']").on('ifChecked', function(event){
+                var radioVal = $(this).val();
+                if(radioVal == 0){
+                    $(".td1").removeClass("hide");
+                }else{
+                    $(".td1").addClass("hide");
+                }
+            });
+            if("${workReimbursement.ext}" == "1"){
+                $("#ext1").iCheck('check')
+            }else{
+                $("#ext").iCheck('check')
+            }
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+
+        function insertTitle(tValue){
+            var list = "${workAdministrativeAtamp.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "102";
+                console.log(file);
+                var timestamp=new Date().getTime();
+
+                var storeAs = "attachment-file/workIncomingMessage/"+timestamp+"/"+file['name'];
+                var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                $("#addFile"+divId).show();
+                multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function setPNumber(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workinvoice/workInvoice/getPNumber',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#officeId").val(d.officeId);
+                    $("#companyName").val(d.companyName);
+                    $("#officeName").val(d.officeName);
+                    $("#projectNameStr").val(d.pNumber);
+                    $("#projectIdStr").val(obj);
+                }
+            })
+        }
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <form:form id="inputForm" modelAttribute="projectAssess" action="${ctx}/project/projectAssess/save" method="post" class="form-horizontal">
+            <input type="hidden" id="enname" value="${loginUserRole.enname}">
+            <input type="hidden" id="projectIdStr"  name="projectIdStr" value="">
+            <input type="hidden" id="projectNameStr"  name="projectNameStr" value="">
+            <form:hidden path="id"/>
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>基本信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
+                    <div class="layui-input-block  with-icon">
+                        <input type="hidden" value="" id ="ids">
+                        <sys:gridselectcallprojectt url="${ctx}/workinvoice/workInvoice/selectproject" id="project" name="project.id"  value="${projectAssess.projectId}"  title="选择所属项目" labelName="projectAssess.projectName"
+                                                    labelValue="${projectAssess.projectName}" cssClass="form-control required layui-input" fieldLabels="项目" fieldKeys="projectName" searchLabel="项目名称" searchKey="projectName" ></sys:gridselectcallprojectt>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>公司名称:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="companyName" name="companyName" readonly="readonly" class="form-control layui-input" value="${projectAssess.companyName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input type="text" id="officeName" name="office.name" readonly="readonly" class="form-control layui-input"  value="${projectAssess.officeName}"/>
+                        <input type="hidden" id="officeId" name="office.id" readonly="readonly" class="form-control layui-input"  value=""/>
+                    </div>
+                </div>
+                <%--<div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>项目负责人:</label>
+                    <div class="layui-input-block  with-icon">
+                        <sys:treeselectt id="master" name="projectLeaders" value="${projectRecords.leaderIds}" labelName="leaderNameStr" labelValue="${projectRecords.leaderNameStr}"
+                                         title="用户" url="/sys/office/treeDataAll?type=3" checked="true" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+                    </div>
+                </div>--%>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>信息提供人及类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="informationSupplyType" cssClass="form-control required simple-select">
+                            <form:option value="" label=""/>
+                            <form:options items="${fns:getMainDictList('information_supply_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>项目类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="projectType" cssClass="form-control required simple-select">
+                            <form:option value="" label=""/>
+                            <form:options items="${fns:getMainDictList('project_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <label class="layui-form-label double-line">项目概况:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="projectOverview" id="projectOverview" htmlEscape="false" maxlength="500" rows="4"    class="form-control" placeholder="项目概况(项目类型、建设地点、是否涉及生态红线、环境风险等级、敏感程度等)"/>
+                    </div>
+                </div>
+                <%--<div class="layui-item layui-col-sm12 with-textarea">
+                    <label class="layui-form-label">说    明:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="remarks" htmlEscape="false" rows="3" maxlength="255" class="form-control"/>
+                    </div>
+                </div>--%>
+            </div>
+
+
+
+            <%--<div class="form-group layui-row">
+                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                </div>
+                <div id="addFile_attachment" style="display: none" class="upload-progress">
+                    <span id="fileName_attachment" ></span>
+                    <b><span id="baifenbi_attachment" ></span></b>
+                    <div class="progress">
+                        <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                                &lt;%&ndash; <th>序号</th>&ndash;%&gt;
+                            <th>文件预览</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${workAdministrativeAtamp.workAttachments}" var = "workClientAttachment" varStatus="status">
+                            <tr>
+                                    &lt;%&ndash; <td>${status.index + 1}</td>&ndash;%&gt;
+                                <c:choose>
+                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                        <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box" >
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                        <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                            <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                        </c:if>
+                                    </div>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>--%>
+        </form:form>
+    </div>
+</div>
+</body>
+</html>

+ 381 - 0
src/main/webapp/webpage/modules/projectAssess/projectAssessList.jsp

@@ -0,0 +1,381 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目评估</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="projectAssess" action="${ctx}/project/projectAssess/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<%--<div class="layui-item query athird">
+							<label class="layui-form-label">项目编号:</label>
+							<div class="layui-input-block with-icon">
+								<form:input path="projectId" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>--%>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<input htmlEscape="false" id="projectName" name="projectName"  class="form-control layui-input" value="${projectName}"/>
+							</div>
+						</div>
+
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">公司名称:</label>
+							<div class="layui-input-block">
+								<input htmlEscape="false" id="companyName" name="companyName"  class="form-control layui-input" value="${companyName}"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<%--<div class="layui-item query athird ">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block">
+								<form:input path="leaderNameStr" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>--%>
+						<%--<div class="layui-item query athird ">
+							<label class="layui-form-label">委托方:</label>
+							<div class="layui-input-block">
+								<form:input path="workContractInfo.client.name" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>--%>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+                                <span class="group-sep">-</span>
+                                <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+                                       value="<fmt:formatDate value="${endDate}" pattern="yyyy-MM-dd"/>"/>
+                                </input>
+							</div>
+						</div>
+						<%--<div class="layui-item query athird ">
+							<label class="layui-form-label">状态:</label>
+							<div class="layui-input-block">
+								<form:select path="projectStatus" class=" form-control  simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('audit_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</div>
+						</div>--%>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<shiro:hasPermission name="project:projectRecords:add">
+						<table:addRow url="${ctx}/project/projectAssess/form" title="项目评估"></table:addRow><!-- 增加按钮 -->
+					</shiro:hasPermission>
+					<shiro:hasPermission name="project:projectRecords:del">
+						<%--<table:delRow url="${ctx}/project/projectRecords/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->--%>
+					</shiro:hasPermission>
+					<shiro:hasPermission name="project:projectRecords:export">
+						<table:exportExcel url="${ctx}/project/projectAssess/export"></table:exportExcel><!-- 导出按钮 -->
+					</shiro:hasPermission>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable1"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+                {field:'index',align:'center', title: '序号',width:40}
+                ,{field:'projName',align:'center', title: '项目名称',minWidth:150,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/project/projectRecords/view?id=" + d.projectId +"','95%', '95%')\">" + d.projName + "</a>";
+                    }}
+                ,{field:'num',align:'center', title: '评估编号',minWidth:150,templet:function(d){
+                        return "<a class=\"attention-info\" title=\"" + d.num + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目评估信息', '${ctx}/project/projectAssess/view?id=" + d.id +"','95%', '95%')\">" + d.num + "</a>";
+                    }}
+                ,{field:'companyName', align:'center',title: '公司名称',minWidth:150,templet:function(d){
+                    	return "<span title='"+ d.companyName +"'>" + d.companyName + "</span>";
+					}}
+                ,{field:'informationSupplyType', align:'center',title: '信息提供人及类型', width:150,templet:function(d){
+                        return "<span title=\"" + d.informationSupplyType + "\">" + d.informationSupplyType + "</span>";
+                    }}
+                ,{field:'projectType',align:'center', title: '项目类型',  width:100,templet:function(d){
+                        return "<span title=\"" + d.projectType + "\">" + d.projectType + "</span>";
+                    }}
+                ,{field:'createDate',align:'center', title: '创建日期',  width:100}
+                ,{align:'center', title: '状态',  width:70,templet:function(d){
+                        var st = getAuditState(d.status);
+                        if(st.action)
+                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/project/projectAssess/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        else
+                            var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                        return xml;
+                    }}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml="";
+                        if(d.canedit1 != undefined && d.canedit1 =="1")
+                        {
+                            //暂存修改
+                            xml+="<a href=\"#\" onclick=\"openDialogre('修改项目评估', '${ctx}/project/projectAssess/form?id=" + d.id +"','95%', '95%','','送审,暂存,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        }
+                        if(d.canedit2 != undefined && d.canedit2 =="1")
+                        {
+                            //驳回修改
+                            xml+="<a href=\"#\" onclick=\"openDialogre('调整项目评估', '${ctx}/project/projectAssess/modify?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        }
+                        if(d.canrecall != undefined && d.canrecall =="1")
+                        {
+                            //撤回修改
+                            xml+="<a href=\"#\" onclick=\"openDialogre('调整项目评估', '${ctx}/project/projectAssess/form?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+                        }
+                        if(d.candel != undefined && d.candel =="1")
+                        {
+                            //删除操作
+                            xml+="<a href=\"${ctx}/project/projectAssess/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该项目评估信息吗?', this.href)\" class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+                        }
+                        if(d.cancancel != undefined && d.cancancel =="1")
+                        {
+                            xml+="<a href=\"${ctx}/project/projectAssess/revoke?id=" + d.id + "&processInstanceId=" + d.procId + "\" onclick=\"return confirmx('确认要撤回该项目审批吗?', this.href)\" class=\"op-btn op-btn-cancel\" ><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回</a>";
+                        }
+                        return xml;
+
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="projectAssess" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${projectAssess.id}"
+                    ,"projName":"<c:out value="${projectAssess.projectName}" escapeXml="true"/>"
+                    ,"num":"<c:out value="${projectAssess.num}" escapeXml="true"/>"
+                    ,"companyName":"${projectAssess.companyName}"
+                    ,"informationSupplyType":"${projectAssess.informationSupplyType}"
+                    ,"projectType":"${projectAssess.projectType}"
+                    ,"createDate":"<fmt:formatDate value="${projectAssess.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"status":"${projectAssess.status}"
+                    ,"procId":"${projectAssess.processInstanceId}"
+                    ,"projectId":"${projectAssess.projectId}"
+                    <c:choose><c:when test="${flag == '1' or fns:getUser().id == projectAssess.createBy.id}">
+                    <shiro:hasPermission name="project:projectRecords:del">,"candel":	<c:choose><c:when test="${projectAssess.status == 1 or projectAssess.status == 3 or projectAssess.status == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                    <shiro:hasPermission name="project:projectRecords:edit">,"canedit1":	<c:choose><c:when test="${projectAssess.status == 1 }">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canedit2":<c:choose><c:when test="${projectAssess.status == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    ,"canrecall":<c:choose><c:when test="${projectAssess.status == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+                    ,"cancancel":<c:choose><c:when test="${projectAssess.status == 2 && fns:getUser().id == projectAssess.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </c:when>
+                    <c:otherwise>
+                    ,"candel":"0"
+                    ,"canedit1":"0"
+                    ,"canedit2":"0"
+                    ,"canrecall":"0"
+                    ,"cancancel":"0"
+                    </c:otherwise>
+                    </c:choose>
+                    <shiro:hasPermission name="project:projectAssess:edit">,"canedit3":<c:choose><c:when test="${projectAssess.status == 5}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+    })
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+</body>
+</html>

+ 236 - 0
src/main/webapp/webpage/modules/projectAssess/projectAssessModifyApply.jsp

@@ -0,0 +1,236 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>项目评估管理</title>
+    <meta name="decorator" content="default"/>
+    <style>
+        label.error{
+            left:0px;
+            top:40px;
+        }
+    </style>
+    <script type="text/javascript">
+        var validateForm;
+        function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(i==2){
+                    $("#inputForm").attr("action","${ctx}/project/projectAssess/tstore");
+                }
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            $("input[name='ext']").on('ifChecked', function(event){
+                var radioVal = $(this).val();
+                if(radioVal == 0){
+                    $(".td1").removeClass("hide");
+                }else{
+                    $(".td1").addClass("hide");
+                }
+            });
+            if("${workReimbursement.ext}" == "1"){
+                $("#ext1").iCheck('check')
+            }else{
+                $("#ext").iCheck('check')
+            }
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+
+        function insertTitle(tValue){
+            var list = "${workAdministrativeAtamp.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "102";
+                console.log(file);
+                var timestamp=new Date().getTime();
+
+                var storeAs = "attachment-file/workIncomingMessage/"+timestamp+"/"+file['name'];
+                var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                $("#addFile"+divId).show();
+                multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+        }
+        function setPNumber(obj){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/workinvoice/workInvoice/getPNumber',
+                data:{
+                    "obj":obj
+                },
+                success:function(data){
+                    var d = JSON.parse(data);
+                    $("#officeId").val(d.officeId);
+                    $("#companyName").val(d.companyName);
+                    $("#officeName").val(d.officeName);
+                    $("#projectNameStr").val(d.pNumber);
+                    $("#projectIdStr").val(obj);
+                }
+            })
+        }
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <form:form id="inputForm" modelAttribute="projectAssess" action="${ctx}/project/projectAssess/saveAudit" method="post" class="form-horizontal">
+            <input type="hidden" id="projectIdStr"  name="projectIdStr" value="">
+            <input type="hidden" id="projectNameStr"  name="projectNameStr" value="">
+            <form:hidden path="id"/>
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>基本信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>项目名称:</label>
+                    <div class="layui-input-block  with-icon">
+                        <input type="hidden" value="" id ="ids">
+                        <sys:gridselectcallprojectt url="${ctx}/workinvoice/workInvoice/selectproject" id="project" name="project.id"  value="${projectAssess.projectId}"  title="选择所属项目" labelName="projectAssess.projectName"
+                                                    labelValue="${projectAssess.projectName}" cssClass="form-control required layui-input" fieldLabels="项目" fieldKeys="projectName" searchLabel="项目名称" searchKey="projectName" ></sys:gridselectcallprojectt>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>公司名称:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="companyName" name="companyName" readonly="readonly" class="form-control layui-input" value="${projectAssess.companyName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input type="text" id="officeName" name="office.name" readonly="readonly" class="form-control layui-input"  value="${projectAssess.officeName}"/>
+                        <input type="hidden" id="officeId" name="office.id" readonly="readonly" class="form-control layui-input"  value=""/>
+                    </div>
+                </div>
+                    <%--<div class="layui-item layui-col-sm6 lw7">
+                        <label class="layui-form-label"><span class="require-item">*</span>项目负责人:</label>
+                        <div class="layui-input-block  with-icon">
+                            <sys:treeselectt id="master" name="projectLeaders" value="${projectRecords.leaderIds}" labelName="leaderNameStr" labelValue="${projectRecords.leaderNameStr}"
+                                             title="用户" url="/sys/office/treeDataAll?type=3" checked="true" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+                        </div>
+                    </div>--%>
+                <div class="layui-item layui-col-sm6 ">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>信息提供人及类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="informationSupplyType" cssClass="form-control required simple-select">
+                            <form:option value="" label=""/>
+                            <form:options items="${fns:getMainDictList('information_supply_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>项目类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="projectType" cssClass="form-control required simple-select">
+                            <form:option value="" label=""/>
+                            <form:options items="${fns:getMainDictList('project_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <label class="layui-form-label double-line">项目概况:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="projectOverview" id="projectOverview" htmlEscape="false" maxlength="500" rows="4"    class="form-control" placeholder="项目概况(项目类型、建设地点、是否涉及生态红线、环境风险等级、敏感程度等)"/>
+                    </div>
+                </div>
+                    <%--<div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label">说    明:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="remarks" htmlEscape="false" rows="3" maxlength="255" class="form-control"/>
+                        </div>
+                    </div>--%>
+            </div>
+
+
+
+            <%--<div class="form-group layui-row">
+                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                </div>
+                <div id="addFile_attachment" style="display: none" class="upload-progress">
+                    <span id="fileName_attachment" ></span>
+                    <b><span id="baifenbi_attachment" ></span></b>
+                    <div class="progress">
+                        <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                                &lt;%&ndash; <th>序号</th>&ndash;%&gt;
+                            <th>文件预览</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${workAdministrativeAtamp.workAttachments}" var = "workClientAttachment" varStatus="status">
+                            <tr>
+                                    &lt;%&ndash; <td>${status.index + 1}</td>&ndash;%&gt;
+                                <c:choose>
+                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                           or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                        <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box" >
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                        <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                            <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                        </c:if>
+                                    </div>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>--%>
+        </form:form>
+    </div>
+</div>
+</body>
+</html>

+ 15 - 0
src/main/webapp/webpage/modules/projectAssess/projectAssessTask.jsp

@@ -0,0 +1,15 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>流程追踪</title>
+	<meta name="decorator" content="default"/>
+</head>
+<body class="gray-bg">
+<div class="container form layui-form">
+	<act:flowChart procInsId="${processInstanceId}"/>
+	<act:histoicFlow procInsId="${processInstanceId}"/>
+</div>
+</body>
+</html>
+

+ 210 - 0
src/main/webapp/webpage/modules/projectAssess/projectAssessView.jsp

@@ -0,0 +1,210 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>项目评估管理</title>
+    <meta name="decorator" content="default"/>
+    <script type="text/javascript">
+        var validateForm;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                if(obj == 1){
+                    $('#flag').val('yes');
+                }else{
+                    $('#flag').val('no');
+                }
+
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+        });
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <form:form id="inputForm" modelAttribute="projectAssess" action="${ctx}/project/projectAssess/form" method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+            <form:hidden path="home"/>
+            <form:hidden path="projectId"/>
+            <form:hidden id="flag" path="act.flag"/>
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>基本信息</h2></div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目名称:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="projectName" name="projectName" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line">公司名称:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="companyName" name="companyName" readonly="readonly" class="form-control layui-input" value="${projectAssess.companyName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="officeName" name="officeName" readonly="readonly" class="form-control layui-input" value="${projectAssess.officeName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line">信息提供人及类型:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="informationSupplyType" name="informationSupplyType" readonly="readonly" class="form-control layui-input" value="${projectAssess.informationSupplyType}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line">项目类型:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="projectType" name="projectType" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectType}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <label class="layui-form-label double-line ">项目概况:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="projectOverview" readonly="true" id="projectOverview" htmlEscape="false" maxlength="500" rows="4"  value="${projectAssess.projectOverview}"  class="form-control" placeholder="项目概况(项目类型、建设地点、是否涉及生态红线、环境风险等级、敏感程度等)"/>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 ">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>难易程度:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="projectComplexity" name="projectComplexity" readonly="readonly" class="form-control layui-input" value="${projectAssess.projectComplexity}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 ">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>技术支撑力量:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="technicalSupport" name="technicalSupport" readonly="readonly" class="form-control layui-input" value="${projectAssess.technicalSupport}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>政策法规相符性:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="policiesRegulations" name="policiesRegulations" readonly="readonly" class="form-control layui-input" value="${projectAssess.policiesRegulations}"/>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 ">
+                    <div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label  double-line">敏感情况:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="sensitiveSituation" readonly="true" id="sensitiveSituation" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.sensitiveSituation}" class="form-control"/>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 ">
+                    <div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label  double-line">环境风险:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="environmentalRisk" readonly="true" id="environmentalRisk" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.environmentalRisk}" class="form-control"/>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 ">
+                    <div class="layui-item layui-col-sm12 with-textarea">
+                        <label class="layui-form-label  double-line">其他:</label>
+                        <div class="layui-input-block">
+                            <form:textarea path="otherRisk" id="otherRisk" readonly="true" htmlEscape="false" maxlength="500" rows="4" value="${projectAssess.otherRisk}" class="form-control"/>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>合同额:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="contractPrice" name="contractPrice" readonly="readonly" class="form-control layui-input number" value="${projectAssess.contractPrice}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>付款方式:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" id="payment" name="payment" class="form-control layui-input" readonly="readonly" value="${projectAssess.payment}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>付款时间:</label>
+                    <div class="layui-input-block">
+                        <input readonly="true"  class="laydate-icondate layui-input form-control layer-date laydate-icon required" id="payDate" name="payDate" value="<fmt:formatDate value="${projectAssess.payDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>客户成本:</label>
+                    <div class="layui-input-block">
+                        <form:input path="customerCost"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>项目成本:</label>
+                    <div class="layui-input-block">
+                        <form:input path="projectCost"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>编制审核费:</label>
+                    <div class="layui-input-block">
+                        <form:input path="staffingAuditCost"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>公司管理成本:</label>
+                    <div class="layui-input-block">
+                        <form:input path="companyManageCost"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>税费:</label>
+                    <div class="layui-input-block">
+                        <form:input path="taxesDues"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>利润:</label>
+                    <div class="layui-input-block">
+                        <form:input path="profit"  htmlEscape="false" pattern="#.00" readonly="true" class="form-control number required layui-input"/>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-item layui-col-xs12 with-textarea" >
+                <label class="layui-form-label double-line">负责项目的副总评估结论:</label>
+                <div class="layui-input-block">
+                    <form:textarea path="fzjlAssessConclusion" readonly="true" htmlEscape="false" maxlength="500" rows="4"    class="form-control"/>
+                </div>
+            </div>
+            <div class="layui-item layui-col-xs12 with-textarea" >
+                <label class="layui-form-label double-line">总经理评估意见:</label>
+                <div class="layui-input-block">
+                    <form:textarea path="zjlAssessConclusion" readonly="true" htmlEscape="false" maxlength="500" rows="4"    class="form-control"/>
+                </div>
+            </div>
+
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+</body>
+</html>