Bladeren bron

盖章审核代码提交

user5 3 jaren geleden
bovenliggende
commit
b3790368a4

+ 27 - 0
src/main/java/com/jeeplus/modules/sealApplyFor/dao/SealApplyForDao.java

@@ -0,0 +1,27 @@
+package com.jeeplus.modules.sealApplyFor.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.sealApplyFor.entity.SealApplyForInfo;
+
+import java.util.List;
+
+/**
+ * 盖章申请Dao
+ * @author: 徐滕
+ * @version: 2022-06-16 10:32
+ */
+@MyBatisDao
+public interface SealApplyForDao extends CrudDao<SealApplyForInfo> {
+
+
+    void updateProcessIdAndStatus(SealApplyForInfo sealApplyForInfo);
+
+    /**
+     * 查询项目
+     * @param records
+     * @return
+     */
+    List<ProjectRecords> ruralFindPageByReimbur(ProjectRecords records);
+}

+ 106 - 0
src/main/java/com/jeeplus/modules/sealApplyFor/entity/SealApplyForInfo.java

@@ -0,0 +1,106 @@
+package com.jeeplus.modules.sealApplyFor.entity;
+
+import com.jeeplus.common.persistence.ActEntity;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.sys.entity.Office;
+
+import java.util.Date;
+
+/**
+ * 盖章申请实体类
+ * @author: 徐滕
+ * @version: 2022-06-16 10:32
+ */
+public class SealApplyForInfo extends ActEntity<SealApplyForInfo> {
+
+    private RuralProjectRecords projectRecords; //项目信息
+    private String projectId;   //项目id
+    private String sealCompany;  //公司(0:东兴;1:赣能)
+    private Integer status;  //审核状态
+    private String processInstanceId;  //审核流程id
+    private Office office;  //部门信息
+    private Office company;  //公司信息
+    private Date beginDate;  //开始时间
+    private Date endDate;  //结束时间
+    private String home;
+
+    public RuralProjectRecords getProjectRecords() {
+        return projectRecords;
+    }
+
+    public void setProjectRecords(RuralProjectRecords projectRecords) {
+        this.projectRecords = projectRecords;
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public String getSealCompany() {
+        return sealCompany;
+    }
+
+    public void setSealCompany(String sealCompany) {
+        this.sealCompany = sealCompany;
+    }
+
+    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;
+    }
+
+    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 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;
+    }
+
+    public String getHome() {
+        return home;
+    }
+
+    public void setHome(String home) {
+        this.home = home;
+    }
+}

+ 644 - 0
src/main/java/com/jeeplus/modules/sealApplyFor/service/SealApplyForService.java

@@ -0,0 +1,644 @@
+package com.jeeplus.modules.sealApplyFor.service;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.MenuStatusEnum;
+import com.jeeplus.modules.act.entity.Act;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectContactPerson;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectContactPersonService;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
+import com.jeeplus.modules.sealApplyFor.dao.SealApplyForDao;
+import com.jeeplus.modules.sealApplyFor.entity.SealApplyForInfo;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.entity.Office;
+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.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.workprojectnotify.entity.WorkProjectNotify;
+import com.jeeplus.modules.workprojectnotify.service.WorkProjectNotifyService;
+import com.jeeplus.modules.workprojectnotify.util.UtilNotify;
+import org.activiti.engine.HistoryService;
+import org.activiti.engine.IdentityService;
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * 盖章申请service
+ * @author: 徐滕
+ * @version: 2022-06-16 10:32
+ */
+@Service
+@Transactional(readOnly = true)
+public class SealApplyForService extends CrudService<SealApplyForDao, SealApplyForInfo> {
+
+    @Autowired
+    private IdentityService identityService;
+    @Autowired
+    private OfficeService officeService;
+    @Autowired
+    private ActTaskService actTaskService;
+    @Autowired
+    private WorkActivityMenuService workActivityMenuService;
+    @Autowired
+    private RuntimeService runtimeService;
+    @Autowired
+    private WorkActivityProcessService workActivityProcessService;
+    @Autowired
+    private WorkProjectNotifyService workProjectNotifyService;
+    @Autowired
+    private ActivityService activityService;
+    @Autowired
+    protected HistoryService historyService;
+    @Autowired
+    private RuralProjectContactPersonService ruralProjectContactPersonService;
+    @Autowired
+    private RuralProjectRecordsService projectRecordsService;
+
+    public SealApplyForInfo get(String id) {
+        SealApplyForInfo sealApplyForInfo = super.get(id);
+        if (null !=sealApplyForInfo){
+            sealApplyForInfo.setUploadMode(uploadMode);
+            if(StringUtils.isNotBlank(sealApplyForInfo.getProjectId())){
+                RuralProjectRecords projectRecords = projectRecordsService.get(sealApplyForInfo.getProjectId());
+
+                List<MainDictDetail> mainDictList = Lists.newArrayList();
+                //工程咨询
+                if("1".equals(projectRecords.getProjectType())){
+                    mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+                    //造价审核
+                } else if("2".equals(projectRecords.getProjectType())){
+                    mainDictList = DictUtils.getMainDictList("attachment_project_sort_cost");
+                }
+                if(StringUtils.isNotBlank(projectRecords.getAttachmentProjectSort())){
+                    //处理项目类别
+                    for (MainDictDetail info: mainDictList) {
+                        if(projectRecords.getAttachmentProjectSort().equals(info.getValue())){
+                            projectRecords.setAttachmentProjectSort(info.getLabel());
+                            break;
+                        }
+                    }
+                }
+
+                //根据项目编号查询委托/施工方联系人
+                List<RuralProjectContactPerson> projectContactPersonByProjectIdList = ruralProjectContactPersonService.findProjectContactPersonByProjectId(projectRecords.getProjectId());
+                projectRecords.setWorkClientLinkmanList(new ArrayList<>());
+                for(RuralProjectContactPerson person:projectContactPersonByProjectIdList){
+                    WorkClientLinkman workClientLinkman = new WorkClientLinkman();
+                    WorkClientInfo workClientInfo = new WorkClientInfo();
+                    workClientLinkman.setClientId(workClientInfo);
+                    if(person.getType()==1){
+                        workClientLinkman.getClientId().setName(person.getUnitName());
+                        workClientLinkman.setName(person.getContactPersonName());
+                        workClientLinkman.setLinkPhone(person.getPhone1());
+                        workClientLinkman.setLinkMobile(person.getPhone2());
+                        projectRecords.getWorkClientLinkmanList().add(workClientLinkman);
+                    }else{
+                        workClientLinkman.getClientId().setName(person.getUnitName());
+                        workClientLinkman.setName(person.getContactPersonName());
+                        workClientLinkman.setLinkPhone(person.getPhone1());
+                        workClientLinkman.setLinkMobile(person.getPhone2());
+                        projectRecords.getWorkConstructionLinkmanList().add(workClientLinkman);
+                    }
+                }
+
+
+                sealApplyForInfo.setProjectRecords(projectRecords);
+            }
+        }
+        return sealApplyForInfo;
+    }
+
+    public Page<SealApplyForInfo> findPage(Page<SealApplyForInfo> page, SealApplyForInfo sealApplyForInfo) {
+        //设置数据权限
+        //设置数据权限
+        if(!UserUtils.getUser().isAdmin()) {
+            String dataScopeSql = dataScopeFilterOR(sealApplyForInfo.getCurrentUser(), "o", "u", "s", MenuStatusEnum.WORK_RECORDS.getValue());
+            sealApplyForInfo.getSqlMap().put("dsf", dataScopeSql);
+        }
+        if(null!= sealApplyForInfo.getOffice() && StringUtils.isNotBlank(sealApplyForInfo.getOffice().getId())){
+            //查询该选择节点下所有的部门Id
+            List<String> officeIdList = officeService.getChildrenOffice(sealApplyForInfo.getOffice().getId());
+            officeIdList.add(sealApplyForInfo.getOffice().getId());
+            sealApplyForInfo.setOfficeIdList(officeIdList);
+        }
+        int count = dao.queryCount(sealApplyForInfo);
+        page.setCount(count);
+        page.setCountFlag(false);
+        sealApplyForInfo.setPage(page);
+        List<SealApplyForInfo> recordsList = dao.findList(sealApplyForInfo);
+        page.setList(recordsList);
+        return page;
+    }
+
+    @Transactional(readOnly = false)
+    public void save(SealApplyForInfo sealApplyForInfo, ProjectStatusEnum projectStatus) {
+        if(null != sealApplyForInfo.getProjectRecords() && StringUtils.isNotBlank(sealApplyForInfo.getProjectRecords().getId())){
+            sealApplyForInfo.setProjectId(sealApplyForInfo.getProjectRecords().getId());
+        }
+
+        sealApplyForInfo.setCompany(UserUtils.getUser().getCompany());
+        sealApplyForInfo.setOffice(UserUtils.getUser().getOffice());
+
+        Integer oldStatus = sealApplyForInfo.getStatus();
+        sealApplyForInfo.setStatus(projectStatus.getValue());
+
+        super.save(sealApplyForInfo);
+
+        //启动审批流程
+		if (sealApplyForInfo.getStatus()== ProjectStatusEnum.IN_APRL.getValue()&&(oldStatus==null|| ProjectStatusEnum.REJECTED.getValue()!=oldStatus)) {
+			this.startAudit(sealApplyForInfo,sealApplyForInfo.getProcessInstanceId());
+		}
+    }
+
+    /**
+     * 启动审批流程
+     *
+     * @param sealApplyForInfo
+     */
+    @Transactional(readOnly = false)
+    public void startAudit(SealApplyForInfo sealApplyForInfo, String processInstanceId) {
+        try{
+            Map<String, Object> variables = new HashMap<String, Object>();
+            identityService.setAuthenticatedUserId(sealApplyForInfo.getCurrentUser().getId());
+            Office office = sealApplyForInfo.getOffice();
+            office = officeService.get(office.getId());
+            sealApplyForInfo.setOffice(office);
+            String contentStr = "盖章申请:项目【"+ sealApplyForInfo.getProjectRecords().getProjectName()+"】待审批,项目编号:"+sealApplyForInfo.getProjectRecords().getProjectId();
+            String titleStr = "盖章申请:项目【"+ sealApplyForInfo.getProjectRecords().getProjectName()+"】待审批";
+
+            String businessKey = sealApplyForInfo.getId();
+
+            WorkActivityMenu workActivityMenu = workActivityMenuService.findByParentAndOffice("7854872f45b84acd893010e66a3db2c8", office);
+            // 启动流程
+            String processType = workActivityMenu.getProcessType();
+            StringBuffer buffer = new StringBuffer();
+            Activity activity = new Activity();
+            WorkProjectNotify workProjectNotify = UtilNotify
+                    .saveNotify(sealApplyForInfo.getId(),
+                            null,
+                            sealApplyForInfo.getCompany().getId(),
+                            titleStr,
+                            contentStr,
+                            "106",
+                            "0",
+                            "待审批",
+                            ""
+                    );
+
+            List<User> users = new ArrayList<>();
+            //List<User> shrs = UserUtils.getByRoleActivityEnname("shr",2,office.getId(),"4",sealApplyForInfo.getCreateBy());
+            List<User> shrs = Lists.newArrayList();
+            //获取项目中审核人信息
+            if(StringUtils.isNotBlank(sealApplyForInfo.getProjectRecords().getReviewerPersonId())){
+                User user = UserUtils.get(sealApplyForInfo.getProjectRecords().getReviewerPersonId());
+                shrs.add(user);
+            }
+
+            if (StringUtils.isNotBlank(workActivityMenu.getId())) {
+                processType = workActivityMenu.getProcessType();
+                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(),"8",sealApplyForInfo.getCreateBy());
+                        if (enusers.size()==0){
+                            throw new Exception("流程审批人不能为空,角色"+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(),"4",sealApplyForInfo.getCreateBy());
+                    }
+                    //人员审批
+                    if (StringUtils.isNotBlank(activity.getUser().getId())) {
+                        users.add(activity.getUser());
+                    }
+                }
+                workProjectNotify.setId("");
+            } else {
+                if (shrs==null||shrs.size()==0){
+                    throw new Exception("流程审批人不能为空,角色部门负责人下无用户,请联系管理员!");
+                }
+                processType = "sealApplyFor";
+                variables.put("applyUserId", sealApplyForInfo.getCreateBy().getId());
+                variables.put("shrCount",shrs.size());
+                variables.put("shrList",shrs);
+                users.addAll(shrs);
+            }
+            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","7003");
+                extras.put("procDefKey","106");
+                extras.put("id",workProjectNotify.getId());
+                UserUtils.pushInfoToApp(titleStr,contentStr,extras,u.getId());
+            }
+
+            long t1 = System.currentTimeMillis();
+            UserUtils.pushIm(userIds,contentStr);
+            logger.info("推送消息耗时:{}ms",System.currentTimeMillis()-t1);
+            variables.put("busId", businessKey);
+            variables.put("type", processType);
+            variables.put("title", "盖章申请:项目" + sealApplyForInfo.getProjectRecords().getProjectName());//设置标题;
+
+            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processType, businessKey, variables);
+            if (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);
+                workActivityProcessService.insertAuditsByType(shrs,processInstance.getId(),1,1);
+            }
+            sealApplyForInfo.setProcessInstanceId(processInstance.getId());
+            sealApplyForInfo.setStatus(ProjectStatusEnum.IN_APRL.getValue());
+            sealApplyForInfo.preUpdate();
+            dao.updateProcessIdAndStatus(sealApplyForInfo);
+            //通知添加流程实例ID
+            workProjectNotify.setProcessInstanceId(processInstance.getId());
+            workProjectNotifyService.save(workProjectNotify);
+        }catch (Exception e){
+            logger.error("启动审批流程异常:",e);
+        }
+    }
+
+
+
+    /**
+     * 报销查询项目
+     * @param page
+     * @param projectRecords
+     * @param userId
+     * @return
+     */
+    public Page<ProjectRecords> ruralFindPageByReimbur(Page<ProjectRecords> page, ProjectRecords projectRecords, String userId) {
+        projectRecords.setPage(page);
+        projectRecords.setUserId(UserUtils.getUser().getId());
+        List<ProjectRecords> recordsList = dao.ruralFindPageByReimbur(projectRecords);
+        page.setList(recordsList);
+        return page;
+    }
+
+
+    /**
+     * 资料缺失说明审核流程
+     * @param sealApplyForInfo
+     */
+    @Transactional(readOnly = false)
+    public String saveAudit(SealApplyForInfo sealApplyForInfo, List<User> auditUsers) {
+        String flag = sealApplyForInfo.getAct().getFlag();
+        SealApplyForInfo sealApplyFor = null;
+        // 对不同环节的业务逻辑进行操作
+        Act act = sealApplyForInfo.getAct();
+        String taskDefKey = act.getTaskDefKey();
+        if (!"modifyApply".equals(taskDefKey) && !taskDefKey.contains("audit")  ) {
+            actTaskService.claim(act.getTaskId(), UserUtils.getUser().getId());
+            sealApplyFor = this.get(sealApplyForInfo.getId());
+        }else {
+            sealApplyFor = sealApplyForInfo;
+            flag = "yes";
+        }
+        User user= UserUtils.get(sealApplyFor.getCreateBy().getId());
+        String title =  "盖章申请:项目【"+sealApplyFor.getProjectRecords().getProjectName()+"】待审批,项目编号:"+sealApplyFor.getProjectRecords().getProjectId();
+        String str = "盖章申请:项目【"+ sealApplyFor.getProjectRecords().getProjectName()+"】";
+
+        
+        if (StringUtils.isBlank(act.getComment())){
+            act.setComment(flag.equals("yes")?"同意":"驳回");
+        }
+        String comment = "";
+        if (4 == sealApplyFor.getStatus()){
+            comment = ("yes".equals(flag)?"[重新申请] ":"[已撤销] ");
+        }else {
+            comment = ("yes".equals(flag)?"[同意] ":"[驳回] ")+act.getComment();
+        }
+        //yes 的时候状态为审核通过 否则为未通过
+        //1 审核中 2 未通过
+        sealApplyFor.setStatus(("yes".equals(flag) ? 2 : 4));
+        Map<String, Object> vars = Maps.newHashMap();
+        //业务逻辑对应的条件表达式
+        String exp = "";
+        String taskCount = "";
+        String notifyRole = "";
+        int key = 0;
+        String enname = "";
+        List<Activity> activitieList = activityService.getByProcessInstanceId(sealApplyFor.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(sealApplyFor.getProcessInstanceId());
+        List<WorkActivityProcess> workActivityProcesses = workActivityProcessService.findList(selectProcess);
+        List<Activity> activities = workActivityMenu.getActivities();
+        if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("sealApplyFor")) {
+            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(flag)) {
+                        sealApplyFor.setStatus(4);
+                        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";
+                    notifyRole = "调整报告";
+                    exp = "pass";
+                    workActivityProcess.setId("");
+                    workActivityProcess.setCount(0);
+                    if (!"yes".equals(flag)) {
+                        sealApplyFor.setStatus(3);
+                        workActivityProcess.setIsApproval("2");
+                    } else {
+                        workActivityProcess.setIsApproval("1");
+                    }
+                    break;
+                }
+            }
+        } else {
+            workActivityMenu.setProcessType("sealApplyFor");
+            for (int i = 0; i < workActivityProcesses.size(); i++) {
+                WorkActivityProcess activityProcess = workActivityProcesses.get(i);
+                workActivityProcess = activityProcess;
+                String count = activityProcess.getCount() + "";
+                if (!workActivityProcess.getIsApproval().equals("0")) {
+                    workActivityProcess.setId("");
+                }
+                // 审核环节
+                if ("shr".equals(taskDefKey) && count.contains("1")) {
+                    taskCount = "1";
+                    exp = "pass";
+                    if ("yes".equals(flag)) {
+                        notifyRole = "审批通过";
+                        workActivityProcess.setIsApproval("1");
+                    } else {
+                        notifyRole = "调整报告";
+                        workActivityProcess.setIsApproval("2");
+                    }
+                    break;
+                } else if ("modifyApply".equals(taskDefKey)&& count.contains("0")) {
+                    notifyRole = "审核人审批";
+                    taskCount = "0";
+                    exp = "pass";
+                    workActivityProcess.setCount(0);
+                    enname = "shr";
+                    if (!"yes".equals(flag)) {
+                        sealApplyFor.setStatus(3);
+                    }
+                    break;
+                }
+
+            }
+        }
+        // 设置意见
+        act.setComment(("yes".equals(flag) ? "[同意] " : "[驳回] ") + act.getComment());
+        sealApplyFor.preUpdate();
+        //查询当前流程信息
+        WorkProjectNotify nowWorkProjectNotify = workProjectNotifyService.processingInfo(sealApplyFor.getProcessInstanceId());
+        // 提交流程任务
+        vars.put(exp, "yes".equals(flag) ? true : false);
+        vars.put("passs", true);
+        workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount,sealApplyFor.getProcessInstanceId(),taskDefKey,"modifyApply",flag,comment, activities);
+        // 提交流程任务
+        actTaskService.complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+        boolean state = actTaskService.isProcessEnd(act.getProcInsId());
+        List<User> users = new ArrayList<>();
+        List<User> userList = new ArrayList<>();
+        //获取项目信息
+        RuralProjectRecords record = sealApplyFor.getProjectRecords();
+
+        if (!state) {
+            String titleStr =  "盖章申请:项目【"+sealApplyFor.getProjectRecords().getProjectName()+"】已完成";
+            String content = "盖章申请:项目【"+ sealApplyFor.getProjectRecords().getProjectName()+"】已完成";
+            users.add(sealApplyFor.getCreateBy());
+            if ("yes".equals(flag)) {
+                sealApplyFor.setStatus(5);
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(sealApplyFor.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                workProjectNotifyService
+                        .save(UtilNotify
+                                .saveNewNotify(sealApplyFor.getId(),
+                                        sealApplyFor.getCreateBy(),
+                                        sealApplyFor.getCompany().getId(),
+                                        titleStr,
+                                        content,
+                                        "106",
+                                        "0",
+                                        "待通知",
+                                        notifyRole,
+                                        sealApplyFor.getProcessInstanceId(),new Date()));
+
+            } else {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(sealApplyFor.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                if (null != sealApplyFor.getStatus() && 3 != sealApplyFor.getStatus()){
+                    sealApplyFor.setStatus(4);
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNewNotify(sealApplyFor.getId(),
+                                            sealApplyFor.getCreateBy(),
+                                            sealApplyFor.getCompany().getId(),
+                                            title,
+                                            str,
+                                            "106",
+                                            "0",
+                                            "待通知",
+                                            notifyRole,
+                                            sealApplyFor.getProcessInstanceId(),new Date()));
+                }
+            }
+            workActivityProcessService.deleteProcessIdAuditUsers(sealApplyFor.getProcessInstanceId());
+        } else {
+            if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("sealApplyFor")) {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(sealApplyFor.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                WorkProjectNotify workProjectNotify = UtilNotify
+                        .saveNewNotify(sealApplyFor.getId(),
+                                new User(),
+                                sealApplyFor.getCompany().getId(),
+                                title,
+                                str,
+                                "106",
+                                "0",
+                                "待审批",
+                                notifyRole,
+                                sealApplyFor.getProcessInstanceId(),new Date());
+                List<WorkProjectNotify> workProjectNotifys = activityService.getByFlagAndTaskDefKeyList(
+                        activities,
+                        workProjectNotify,
+                        taskDefKey,
+                        flag,
+                        taskCount,
+                        sealApplyFor.getCreateBy(),
+                        user.getOffice().getId(),
+                        "10");
+                for (WorkProjectNotify workProjectNotify1:workProjectNotifys){
+                    users.add(workProjectNotify1.getUser());
+                    workProjectNotify1.setId("");
+                    workProjectNotify1.setIsNewRecord(false);
+                    workProjectNotifyService
+                            .save(workProjectNotify1);
+                }
+
+            } else {
+                if (!"yes".equals(flag)) {//驳回待办信息
+                    str =  "盖章申请:项目【"+sealApplyFor.getProjectRecords().getProjectName()+"】被驳回,请重新提交";
+                    title = "盖章申请:项目【"+ sealApplyFor.getProjectRecords().getProjectName()+"】被驳回";
+                    WorkProjectNotify notify = new WorkProjectNotify();
+                    notify.setNotifyId(sealApplyFor.getId());
+                    userList = workProjectNotifyService.readByNotifyId(notify);
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNewNotify(sealApplyFor.getId(),
+                                            sealApplyFor.getCreateBy(),
+                                            sealApplyFor.getCompany().getId(),
+                                            title,
+                                            str,
+                                            "106",
+                                            "0",
+                                            "重新申请",
+                                            notifyRole,
+                                            sealApplyFor.getProcessInstanceId(),new Date()));
+                    users.add( sealApplyFor.getCreateBy());
+                } else {
+                    if (StringUtils.isNotBlank(enname)) {//驳回重新归档
+                        str =  "盖章申请:项目【"+sealApplyFor.getProjectRecords().getProjectName()+"】重新提交,待审批";
+                        title = "盖章申请:项目【"+ sealApplyFor.getProjectRecords().getProjectName()+"】重新提交,待审批";
+                        WorkProjectNotify notify = new WorkProjectNotify();
+                        notify.setNotifyId(sealApplyFor.getId());
+                        userList = workProjectNotifyService.readByNotifyId(notify);
+                        WorkProjectNotify workProjectNotify = UtilNotify
+                                .saveNewNotify(sealApplyFor.getId(),
+                                        new User(),
+                                        sealApplyFor.getCompany().getId(),
+                                        title,
+                                        str,
+                                        "106",
+                                        "0",
+                                        "待审批",
+                                        notifyRole,
+                                        sealApplyFor.getProcessInstanceId(),new Date());
+                        users.addAll(auditUsers);
+                        for (User user1 : users) {
+                            workProjectNotify.setUser(user1);
+                            workProjectNotify.setId("");
+                            workProjectNotify.setIsNewRecord(false);
+                            workProjectNotifyService
+                                    .save(workProjectNotify);
+                        }
+                    }else {
+                        WorkProjectNotify notify = new WorkProjectNotify();
+                        notify.setNotifyId(sealApplyFor.getId());
+                        userList = workProjectNotifyService.readByNotifyId(notify);
+                        users.add(sealApplyFor.getCreateBy());
+                        workProjectNotifyService
+                                .save(UtilNotify
+                                        .saveNewNotify(sealApplyFor.getId(),
+                                                sealApplyFor.getCreateBy(),
+                                                sealApplyFor.getCompany().getId(),
+                                                title,
+                                                str,
+                                                "106",
+                                                "0",
+                                                "重新申请",
+                                                notifyRole,
+                                                sealApplyFor.getProcessInstanceId(),new Date()));
+                    }
+                }
+            }
+        }
+        //对数据进行处理
+        if(null != nowWorkProjectNotify){
+            workProjectNotifyService.updateWpaData(nowWorkProjectNotify);
+        }
+        if (users!=null && users.size()!=0) {
+            for (User u : users) {
+                UserUtils.pushIm(u.getId(),title);
+            }
+        }
+        if (users!=null && userList.size()!=0) {
+            for (User u : userList) {
+                UserUtils.pushMeIm(u.getId());
+            }
+        }
+        dao.update(sealApplyFor);
+        return "保存审核意见成功!";
+    }
+
+
+
+
+
+
+}

+ 452 - 0
src/main/java/com/jeeplus/modules/sealApplyFor/web/SealApplyForController.java

@@ -0,0 +1,452 @@
+package com.jeeplus.modules.sealApplyFor.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.config.Global;
+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.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectContactPerson;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectContactPersonService;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
+import com.jeeplus.modules.sealApplyFor.entity.SealApplyForInfo;
+import com.jeeplus.modules.sealApplyFor.service.SealApplyForService;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.utils.DictUtils;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+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.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 盖章申请Controller
+ * @author: 徐滕
+ * @version: 2022-06-16 10:32
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/sealApplyFor/sealApplyFor")
+public class SealApplyForController extends BaseController {
+
+    @Autowired
+    private SealApplyForService service;
+    @Autowired
+    private RuralProjectRecordsService projectRecordsService;
+    @Autowired
+    private RuralProjectContactPersonService ruralProjectContactPersonService;
+    @Autowired
+    protected HistoryService historyService;
+    @Autowired
+    private ActTaskService actTaskService;
+
+    @ModelAttribute
+    public SealApplyForInfo get(@RequestParam(required=false) String id) {
+        SealApplyForInfo entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = service.get(id);
+        }
+        if (entity == null){
+            entity = new SealApplyForInfo();
+        }
+        return entity;
+    }
+
+
+    /**
+     * 查询项目信息
+     * @param id
+     * @return
+     */
+    @RequestMapping(value = "getProjectById")
+    @ResponseBody
+    public RuralProjectRecords getProjectById(String id) {
+        RuralProjectRecords entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectRecordsService.get(id);
+        }
+        return entity;
+    }
+
+    /**
+     * 查询盖章列表信息
+     * @param sealApplyForInfo
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @RequiresPermissions("sealApplyFor:sealApplyFor:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(SealApplyForInfo sealApplyForInfo, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        //进行查询之后进行任何操作,返回还是查询之后的数据页面
+        if (StringUtils.isNotBlank(sealApplyForInfo.getToflag())){
+            request.getSession().removeAttribute("searchSealApplyForInfo");
+            SealApplyForInfo search=sealApplyForInfo;
+            request.getSession().setAttribute("searchSealApplyForInfo",search);
+        }else{
+            if (request.getSession().getAttribute("searchSealApplyForInfo")!=null){
+                sealApplyForInfo= (SealApplyForInfo) request.getSession().getAttribute("searchSealApplyForInfo");
+                model.addAttribute("sealApplyForInfo", sealApplyForInfo);
+            }
+        }
+        //获取项目信息
+        Page<SealApplyForInfo> page = service.findPage(new Page<SealApplyForInfo>(request, response), sealApplyForInfo);
+        model.addAttribute("page", page);
+        return "modules/sealApplyFor/sealApplyForList";
+    }
+
+
+    /**
+     * 增加,编辑盖章表单页面
+     * @param sealApplyForInfo
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"sealApplyFor:sealApplyFor:add","sealApplyFor:sealApplyFor:edit"},logical= Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(SealApplyForInfo sealApplyForInfo, Model model) {
+        if(StringUtils.isNotBlank(sealApplyForInfo.getProjectId())){
+            RuralProjectRecords projectRecords = projectRecordsService.get(sealApplyForInfo.getProjectId());
+
+            List<MainDictDetail> mainDictList = Lists.newArrayList();
+            //工程咨询
+            if("1".equals(projectRecords.getProjectType())){
+                mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+                //造价审核
+            } else if("2".equals(projectRecords.getProjectType())){
+                mainDictList = DictUtils.getMainDictList("attachment_project_sort_cost");
+            }
+            if(StringUtils.isNotBlank(projectRecords.getAttachmentProjectSort())){
+                //处理项目类别
+                for (MainDictDetail info: mainDictList) {
+                    if(projectRecords.getAttachmentProjectSort().equals(info.getValue())){
+                        projectRecords.setAttachmentProjectSort(info.getLabel());
+                        break;
+                    }
+                }
+            }
+
+            //根据项目编号查询委托/施工方联系人
+            List<RuralProjectContactPerson> projectContactPersonByProjectIdList = ruralProjectContactPersonService.findProjectContactPersonByProjectId(projectRecords.getProjectId());
+            projectRecords.setWorkClientLinkmanList(new ArrayList<>());
+            for(RuralProjectContactPerson person:projectContactPersonByProjectIdList){
+                WorkClientLinkman workClientLinkman = new WorkClientLinkman();
+                WorkClientInfo workClientInfo = new WorkClientInfo();
+                workClientLinkman.setClientId(workClientInfo);
+                if(person.getType()==1){
+                    workClientLinkman.getClientId().setName(person.getUnitName());
+                    workClientLinkman.setName(person.getContactPersonName());
+                    workClientLinkman.setLinkPhone(person.getPhone1());
+                    workClientLinkman.setLinkMobile(person.getPhone2());
+                    projectRecords.getWorkClientLinkmanList().add(workClientLinkman);
+                }else{
+                    workClientLinkman.getClientId().setName(person.getUnitName());
+                    workClientLinkman.setName(person.getContactPersonName());
+                    workClientLinkman.setLinkPhone(person.getPhone1());
+                    workClientLinkman.setLinkMobile(person.getPhone2());
+                    projectRecords.getWorkConstructionLinkmanList().add(workClientLinkman);
+                }
+            }
+
+
+            sealApplyForInfo.setProjectRecords(projectRecords);
+        }
+        if (sealApplyForInfo!=null&&StringUtils.isNotBlank(sealApplyForInfo.getId())) {
+
+        }else {
+            sealApplyForInfo.setCreateBy(UserUtils.getUser());
+            sealApplyForInfo.setCreateDate(new Date());
+        }
+        //如果所属单位为空,则默认为赣能
+        if(StringUtils.isBlank(sealApplyForInfo.getSealCompany())){
+            sealApplyForInfo.setSealCompany("1");
+        }
+
+        model.addAttribute("sealApplyForInfo", sealApplyForInfo);
+        return "modules/sealApplyFor/sealApplyForForm";
+    }
+    /**
+     * 查看
+     * @param sealApplyForInfo
+     * @param model
+     * @return
+     */
+    @RequiresPermissions(value={"sealApplyFor:sealApplyFor:view"})
+    @RequestMapping(value = "view")
+    public String view(SealApplyForInfo sealApplyForInfo, Model model) {
+        model.addAttribute("sealApplyForInfo", sealApplyForInfo);
+        return "modules/sealApplyFor/sealApplyForView";
+    }
+
+    /**
+     * 暂存
+     * @param sealApplyForInfo
+     * @param model
+     * @param redirectAttributes
+     * @return
+     */
+    @RequiresPermissions(value={"sealApplyFor:sealApplyFor:add","sealApplyFor:sealApplyFor:edit"},logical=Logical.OR)
+    @RequestMapping(value = "tstore")
+    public String tStore(SealApplyForInfo sealApplyForInfo, Model model, RedirectAttributes redirectAttributes){
+        if (!beanValidator(model, sealApplyForInfo)){
+            return form(sealApplyForInfo, model);
+        }
+        try {
+            if (!sealApplyForInfo.getIsNewRecord()) {//编辑表单保存
+                SealApplyForInfo t = service.get(sealApplyForInfo.getId());//从数据库取出记录的值
+                if(t.getStatus() == 1) {
+                    MyBeanUtils.copyBeanNotNull2Bean(sealApplyForInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+                    service.save(t, ProjectStatusEnum.TSTORE);//保存
+                }else if(t.getStatus() == 2){
+                    addMessage(redirectAttributes, "盖章申请已送审,无法暂存");
+                    return "redirect:"+ Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+                }else if(t.getStatus() == 5){
+                    addMessage(redirectAttributes, "盖章申请已登记完成,无法暂存");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+                }
+            } else {//新增表单保存
+                service.save(sealApplyForInfo, ProjectStatusEnum.TSTORE);//保存
+            }
+            addMessage(redirectAttributes, "暂存盖章申请成功");
+        }catch (Exception e){
+            logger.error("暂存盖章申请异常:",e);
+            addMessage(redirectAttributes, "暂存盖章申请异常:"+e.getMessage());
+        }
+        return "redirect:"+Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
+    }
+
+    /**
+     * 保存送审
+     */
+    @RequiresPermissions(value={"sealApplyFor:sealApplyFor:add","sealApplyFor:sealApplyFor:edit"},logical=Logical.OR)
+    @RequestMapping(value = "save")
+    public String save(SealApplyForInfo sealApplyForInfo, Model model, RedirectAttributes redirectAttributes) {
+        if (!beanValidator(model, sealApplyForInfo)){
+            return form(sealApplyForInfo, model);
+        }
+        try {
+            if(null == sealApplyForInfo.getProjectRecords() || StringUtils.isBlank(sealApplyForInfo.getProjectRecords().getReviewerPersonId())){
+                addMessage(redirectAttributes, "未选择项目或该项目无审核人,无法申请盖章");
+                return "redirect:"+Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
+            }
+            if (!sealApplyForInfo.getIsNewRecord()) {//编辑表单保存
+                SealApplyForInfo t = service.get(sealApplyForInfo.getId());//从数据库取出记录的值
+                MyBeanUtils.copyBeanNotNull2Bean(sealApplyForInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+                if(t.getStatus() == 1) {
+                    MyBeanUtils.copyBeanNotNull2Bean(sealApplyForInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+                    service.save(t, ProjectStatusEnum.IN_APRL);//保存
+                }else if(t.getStatus() == 2){
+                    addMessage(redirectAttributes, "盖章申请已送审,无法暂存");
+                    return "redirect:"+ Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+                }else if(t.getStatus() == 5){
+                    addMessage(redirectAttributes, "盖章申请已登记完成,无法暂存");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+                }
+            } else {//新增表单保存
+                service.save(sealApplyForInfo, ProjectStatusEnum.IN_APRL);//保存
+            }
+            addMessage(redirectAttributes, "保存项目成功");
+        }catch (Exception e){
+            logger.error("保存盖章申请异常:",e);
+            addMessage(redirectAttributes, "保存盖章申请异常:"+e.getMessage());
+        }
+        return "redirect:"+Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
+    }
+
+
+    /**
+     * 报销list页面查询框
+     */
+    @RequestMapping(value = "selectprojectOnList")
+    public String selectprojectOnList(ProjectRecords project, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, String ids, HttpServletRequest request, HttpServletResponse response, Model model) {
+        project.setCompany(UserUtils.getSelectCompany());
+        project.setProjectStatus(com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum.SIGNED.getValue());//已签状态
+        project.setLeaderNameStr(UserUtils.getUser().getName());
+        Page<ProjectRecords> page = service.ruralFindPageByReimbur(new Page<ProjectRecords>(request, response), project,"");
+        try {
+            fieldLabels = URLDecoder.decode(fieldLabels, "UTF-8");
+            fieldKeys = URLDecoder.decode(fieldKeys, "UTF-8");
+            searchLabel = URLDecoder.decode(searchLabel, "UTF-8");
+            searchKey = URLDecoder.decode(searchKey, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+            logger.error("Exception e:"+e);
+        }
+        model.addAttribute("labelNames", fieldLabels.split("\\|"));
+        model.addAttribute("labelValues", fieldKeys.split("\\|"));
+        model.addAttribute("fieldLabels", fieldLabels);
+        model.addAttribute("fieldKeys", fieldKeys);
+        model.addAttribute("url", url);
+        model.addAttribute("searchLabel", searchLabel);
+        model.addAttribute("searchKey", searchKey);
+        model.addAttribute("obj", project);
+        model.addAttribute("page",page);
+        return "modules/sys/gridReimburProjectList";
+    }
+
+    //归档资料缺失说明
+    @RequestMapping(value = {"saveAudit"})
+    public String saveAudit(SealApplyForInfo sealApplyForInfo, HttpServletRequest request, HttpServletResponse response, Model model,
+                                       RedirectAttributes redirectAttributes) {
+        String home = sealApplyForInfo.getHome();
+        try {
+            SealApplyForInfo t = service.get(sealApplyForInfo.getId());//从数据库取出记录的值
+            MyBeanUtils.copyBeanNotNull2Bean(t,sealApplyForInfo);//将编辑表单中的非NULL值覆盖数据库记录中的值
+            // 对不同环节的业务逻辑进行操作
+            List<User> users = null;
+            User auditUser = null;
+            String taskDefKey =  sealApplyForInfo.getAct().getTaskDefKey();
+            if ("shr".equals(taskDefKey)){
+                users = UserUtils.getByProssType(sealApplyForInfo.getProcessInstanceId(),5);
+                if (users==null ) {
+                    users = Lists.newArrayList();
+                    //查询总审人员信息(新增报告选择得总审人员)
+                    User zsUser = UserUtils.get(sealApplyForInfo.getProjectRecords().getReviewerPersonId());
+                    users.add(zsUser);
+                }
+            }else if ("modifyApply".equals(taskDefKey)){
+                users = UserUtils.getByProssType(sealApplyForInfo.getProcessInstanceId(),1);
+            }
+
+            String flag = sealApplyForInfo.getAct().getFlag();
+            if ("yes".equals(flag) && (users==null || users.size()==0)){
+                addMessage(redirectAttributes, "审批失败,审批人为空,请联系管理员!");
+            }else {
+                String str = service.saveAudit(sealApplyForInfo,users);
+                addMessage(redirectAttributes, str);
+            }
+        }catch (Exception e){
+            logger.error("Exception e:"+e);
+            addMessage(redirectAttributes, "报告归档流程审批失败");
+        }
+        if (StringUtils.isNotBlank(home) && home.equals("home")){
+            return "redirect:" + Global.getAdminPath() + "/home/?repage";
+        }
+        return "redirect:" + Global.getAdminPath() + "/sealApplyFor/sealApplyFor/?repage";
+    }
+
+
+    /**
+     * 编辑项目表单页面
+     */
+    @RequiresPermissions(value={"sealApplyFor:sealApplyFor:edit"},logical= Logical.OR)
+    @RequestMapping(value = "modify")
+    public String modify(SealApplyForInfo sealApplyForInfo, Model model) {
+        if(StringUtils.isNotBlank(sealApplyForInfo.getProjectId())){
+            RuralProjectRecords projectRecords = projectRecordsService.get(sealApplyForInfo.getProjectId());
+
+            List<MainDictDetail> mainDictList = Lists.newArrayList();
+            //工程咨询
+            if("1".equals(projectRecords.getProjectType())){
+                mainDictList = DictUtils.getMainDictList("attachment_project_sort");
+                //造价审核
+            } else if("2".equals(projectRecords.getProjectType())){
+                mainDictList = DictUtils.getMainDictList("attachment_project_sort_cost");
+            }
+            if(StringUtils.isNotBlank(projectRecords.getAttachmentProjectSort())){
+                //处理项目类别
+                for (MainDictDetail info: mainDictList) {
+                    if(projectRecords.getAttachmentProjectSort().equals(info.getValue())){
+                        projectRecords.setAttachmentProjectSort(info.getLabel());
+                        break;
+                    }
+                }
+            }
+
+            //根据项目编号查询委托/施工方联系人
+            List<RuralProjectContactPerson> projectContactPersonByProjectIdList = ruralProjectContactPersonService.findProjectContactPersonByProjectId(projectRecords.getProjectId());
+            projectRecords.setWorkClientLinkmanList(new ArrayList<>());
+            for(RuralProjectContactPerson person:projectContactPersonByProjectIdList){
+                WorkClientLinkman workClientLinkman = new WorkClientLinkman();
+                WorkClientInfo workClientInfo = new WorkClientInfo();
+                workClientLinkman.setClientId(workClientInfo);
+                if(person.getType()==1){
+                    workClientLinkman.getClientId().setName(person.getUnitName());
+                    workClientLinkman.setName(person.getContactPersonName());
+                    workClientLinkman.setLinkPhone(person.getPhone1());
+                    workClientLinkman.setLinkMobile(person.getPhone2());
+                    projectRecords.getWorkClientLinkmanList().add(workClientLinkman);
+                }else{
+                    workClientLinkman.getClientId().setName(person.getUnitName());
+                    workClientLinkman.setName(person.getContactPersonName());
+                    workClientLinkman.setLinkPhone(person.getPhone1());
+                    workClientLinkman.setLinkMobile(person.getPhone2());
+                    projectRecords.getWorkConstructionLinkmanList().add(workClientLinkman);
+                }
+            }
+
+
+            sealApplyForInfo.setProjectRecords(projectRecords);
+        }
+        if(StringUtils.isNotBlank(sealApplyForInfo.getProcessInstanceId())){
+            Act act = getByAct(sealApplyForInfo.getProcessInstanceId());
+            sealApplyForInfo.setAct(act);
+        }
+        //如果所属单位为空,则默认为赣能
+        if(StringUtils.isBlank(sealApplyForInfo.getSealCompany())){
+            sealApplyForInfo.setSealCompany("1");
+        }
+        model.addAttribute("sealApplyForInfo", sealApplyForInfo);
+        return "modules/sealApplyFor/sealApplyForModify";
+    }
+
+
+    public Act getByAct(String processInstanceId){
+        Act act = new Act();
+        HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+        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;
+    }
+}

+ 25 - 480
src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java

@@ -40,7 +40,6 @@ 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.projectAccessory.entity.CollectAccessoryInfo;
 import com.jeeplus.modules.projectAccessory.entity.ProjectAccessoryRelationInfo;
 import com.jeeplus.modules.projectAccessory.entity.ProjectTemplateInfo;
 import com.jeeplus.modules.projectAccessory.service.CollectAccessoryService;
@@ -67,6 +66,8 @@ import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectRecordsReportedDa
 import com.jeeplus.modules.ruralprojectrecords.entity.*;
 import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
 import com.jeeplus.modules.ruralprojectrecords.service.*;
+import com.jeeplus.modules.sealApplyFor.entity.SealApplyForInfo;
+import com.jeeplus.modules.sealApplyFor.service.SealApplyForService;
 import com.jeeplus.modules.serialnum.service.SerialNumTplService;
 import com.jeeplus.modules.statement.entity.StatementCompanyComprehensiveInfo;
 import com.jeeplus.modules.statement.service.StatementCompanyComprehensiveService;
@@ -121,7 +122,6 @@ import com.jeeplus.modules.workengineeringproject.entity.WorkEngineeringProject;
 import com.jeeplus.modules.workengineeringproject.service.WorkEngineeringProjectService;
 import com.jeeplus.modules.workexample.entity.WorkExample;
 import com.jeeplus.modules.workexample.service.WorkExampleService;
-import com.jeeplus.modules.workfield.entity.WorkField;
 import com.jeeplus.modules.workfield.service.WorkFieldService;
 import com.jeeplus.modules.workfullconstructsheet.entity.WorkFullConstructsheet;
 import com.jeeplus.modules.workfullconstructsheet.service.WorkFullConstructsheetService;
@@ -158,17 +158,13 @@ import com.jeeplus.modules.workitemcollar.entity.WorkItemCollar;
 import com.jeeplus.modules.workitemcollar.entity.WorkItemCollarCatalog;
 import com.jeeplus.modules.workitemcollar.entity.WorkItemCollarItem;
 import com.jeeplus.modules.workitemcollar.service.WorkItemCollarService;
-import com.jeeplus.modules.workitemstock.entity.WorkItemStock;
 import com.jeeplus.modules.workitemstock.service.WorkItemStockService;
-import com.jeeplus.modules.workloan.entity.WorkLoan;
 import com.jeeplus.modules.workloan.service.WorkLoanService;
 import com.jeeplus.modules.workofficechange.entity.WorkOfficeChange;
 import com.jeeplus.modules.workofficechange.entity.WorkOfficeChangeUser;
 import com.jeeplus.modules.workofficechange.service.WorkOfficeChangeService;
 import com.jeeplus.modules.workofficechange.service.WorkOfficeChangeUserService;
-import com.jeeplus.modules.workout.entity.WorkOut;
 import com.jeeplus.modules.workout.service.WorkOutService;
-import com.jeeplus.modules.workovertime.entity.WorkOvertime;
 import com.jeeplus.modules.workovertime.service.WorkOvertimeService;
 import com.jeeplus.modules.workovertimeform.entity.WorkOvertimeForm;
 import com.jeeplus.modules.workovertimeform.service.WorkOvertimeFormService;
@@ -201,7 +197,6 @@ import com.jeeplus.modules.workreimbursement.service.WorkReimbursementTypeServic
 import com.jeeplus.modules.workreimbursement.utils.HistoicFlowUtil;
 import com.jeeplus.modules.workrelationship.entity.WorkRelationship;
 import com.jeeplus.modules.workrelationship.service.WorkRelationshipService;
-import com.jeeplus.modules.workrepay.entity.WorkRepay;
 import com.jeeplus.modules.workrepay.service.WorkRepayService;
 import com.jeeplus.modules.workresignation.entity.WorkResignation;
 import com.jeeplus.modules.workresignation.service.WorkResignationService;
@@ -519,6 +514,8 @@ public class WorkProjectNotifyController extends BaseController {
 	private RuralProjectRecordsCaseBaseService caseBaseService;
 	@Autowired
 	private BusinessQuestionsService businessQuestionsService;
+	@Autowired
+	private SealApplyForService sealApplyForService;
 
 	@ModelAttribute
 	public WorkProjectNotify get(@RequestParam(required=false) String id) {
@@ -1644,18 +1641,6 @@ public class WorkProjectNotifyController extends BaseController {
 					} else {
 						return "modules/ruralprojectrecords/ruralporjectmessage/electronicSealYC/ruralProjectRecordsReportSignatureYCView";
 					}
-				} else if (workProjectNotify.getType().equals("18")) {
-					Company company = companyService.get(workProjectNotify.getNotifyId());
-					company.setHome("home");
-					model.addAttribute("company", company);
-					model.addAttribute("disabled","true");
-					return "modules/sys/companyForm";
-				} else if (workProjectNotify.getType().equals("19")) {
-					Company company = companyService.get(workProjectNotify.getNotifyId());
-					company.setHome("home");
-					model.addAttribute("company", company);
-					model.addAttribute("disabled","true");
-					return "modules/sys/companyForm";
 				} else if (workProjectNotify.getType().equals("21")) {    //开票管理
 					WorkInvoice workInvoice = workInvoiceService.get(workProjectNotify.getNotifyId());
 					if (StringUtils.isNotBlank(workInvoice.getId())) {
@@ -1802,101 +1787,6 @@ public class WorkProjectNotifyController extends BaseController {
 					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
 						return "modules/workinvoice/conditionWorkInvoiceModify";
 					}
-				} else if (workProjectNotify.getType().equals("24")) {
-					Leave oaLeave = leaveService.get(workProjectNotify.getNotifyId());
-					oaLeave.setAct(getByAct(oaLeave.getProcessInstanceId()));
-					oaLeave.setHome("home");
-					model.addAttribute("leave", oaLeave);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "redirect:" + Global.getAdminPath() + "/oa/leave/form?id=" + oaLeave.getId() + "&name=view";
-					} else if (workProjectNotify.getRemarks().contains("待审批")) {
-						//return "redirect:"+Global.getAdminPath()+"/oa/leave/leaveTodoList";
-						return "modules/oa/leaveAudit";
-					}
-				} else if (workProjectNotify.getType().equals("25")) {
-					WorkOvertimeForm workOvertimeForm = workOvertimeFormService.get(workProjectNotify.getNotifyId());
-					workOvertimeForm.setAct(getByAct(workOvertimeForm.getProcessInstanceId()));
-					workOvertimeForm.setHome("home");
-					model.addAttribute("workOvertimeForm", workOvertimeForm);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "redirect:" + Global.getAdminPath() + "/workovertimeform/workOvertimeForm/form?id=" + workOvertimeForm.getId() + "&name=view";
-					} else if (workProjectNotify.getRemarks().contains("待审批")) {
-						//return "redirect:"+Global.getAdminPath()+"/workovertimeform/workOvertimeForm/workOvertimeTodoList";
-						return "modules/workovertimeform/workOvertimeAudit";
-					}
-				} else if (workProjectNotify.getType().equals("26")) {
-					OaEvection oaEvection = oaEvectionService.get(workProjectNotify.getNotifyId());
-					oaEvection.setAct(getByAct(oaEvection.getProcessInstanceId()));
-					oaEvection.setHome("home");
-					model.addAttribute("oaEvection", oaEvection);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "redirect:" + Global.getAdminPath() + "/oa_evection/oaEvection/form?id=" + oaEvection.getId() + "&name=view";
-					} else if (workProjectNotify.getRemarks().contains("待审批")) {
-						//return "redirect:"+Global.getAdminPath()+"/oa_evection/oaEvection/oaEvectionTodoList";
-						return "modules/oa_evection/oaEvectionAudit";
-					}
-				} else if (workProjectNotify.getType().equals("27")) {
-					WorkSealForm workSealForm = workSealFormService.get(workProjectNotify.getNotifyId());
-					workSealForm.setAct(getByAct(workSealForm.getProcessInstanceId()));
-					workSealForm.setHome("home");
-					model.addAttribute("workSealForm", workSealForm);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "redirect:" + Global.getAdminPath() + "/worksealform/workSealForm/form?id=" + workSealForm.getId() + "&name=view";
-					} else if (workProjectNotify.getRemarks().contains("待审批")) {
-						//return "redirect:"+Global.getAdminPath()+"/worksealform/workSealForm/workSealFormTodoList";
-						return "modules/worksealform/workSealFormAudit";
-					}
-
-				} else if (workProjectNotify.getType().equals("28")) {
-					GoOut goOut = goOutService.get(workProjectNotify.getNotifyId());
-					goOut.setAct(getByAct(goOut.getProcessInstanceId()));
-					goOut.setHome("home");
-					model.addAttribute("goOut", goOut);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "redirect:" + Global.getAdminPath() + "/goout/goOut/form?id=" + goOut.getId() + "&name=view";
-					} else if (workProjectNotify.getRemarks().contains("待审批")) {
-						//return "redirect:"+Global.getAdminPath()+"/goout/goOut/goOutTodoList";
-						return "modules/goout/goOutAudit";
-					}
-				} else if (workProjectNotify.getType().equals("29")) {
-					WorkProjectDeposit workProjectDeposit = workProjectDepositService.get(workProjectNotify.getNotifyId());
-					model.addAttribute("workProjectDeposit", workProjectDeposit);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "redirect:" + Global.getAdminPath() + "/workprojectdeposit/workProjectDeposit/form?id=" + workProjectDeposit.getId();
-					}
-				} else if ("32".equals(workProjectNotify.getType())) {
-					OaAll oaAll = oaAllService.get(workProjectNotify.getNotifyId());
-					oaAll.setAct(getByAct(oaAll.getProcessInstanceId()));
-					oaAll.setHome("home");
-					model.addAttribute("oaAll", oaAll);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "redirect:" + Global.getAdminPath() + "/oaall/oaAll/form?id=" + oaAll.getId() + "&tabId=0";
-					} else if (workProjectNotify.getRemarks().contains("待审批")) {
-						//return "redirect:"+Global.getAdminPath()+"/oaall/oaAll/leaveTodoList";
-						return "modules/oaall/oaAllAudit";
-					}
-				} else if ("33".equals(workProjectNotify.getType())) {
-					WorkPettyCash workPettyCash = workPettyCashService.get(workProjectNotify.getNotifyId());
-					workPettyCash.setAct(getByAct(workPettyCash.getProcessInstanceId()));
-					workPettyCash.setHome("home");
-					model.addAttribute("workPettyCash", workPettyCash);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "redirect:" + Global.getAdminPath() + "/workpettycash/workPettyCash/form?id=" + workPettyCash.getId() + "&name=view";
-					} else if (workProjectNotify.getRemarks().contains("待审批")) {
-						//return "redirect:"+Global.getAdminPath()+"/workpettycash/workPettyCash/workPettyCashTodoList";
-						return "modules/workpettycash/workPettyCashAudit";
-					}
-				} else if ("34".equals(workProjectNotify.getType())) {
-					WorkPayment workPayment = workPaymentService.get(workProjectNotify.getNotifyId());
-					workPayment.setAct(getByAct(workPayment.getProcessInstanceId()));
-					workPayment.setHome("home");
-					model.addAttribute("workPayment", workPayment);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "redirect:" + Global.getAdminPath() + "/workpayment/workPayment/form?id=" + workPayment.getId() + "&name=view";
-					} else if (workProjectNotify.getRemarks().contains("待审批")) {
-						//return "redirect:"+Global.getAdminPath()+"/workpayment/workPayment/workPaymentTodoList";
-						return "modules/workpayment/workPaymentAudit";
-					}
 				} else if ("37".equals(workProjectNotify.getType())) {//归档批次管理
 					WorkReimbur workReimbur = workReimburService.get(workProjectNotify.getNotifyId());
 					workReimbur.setAct(getByAct(workReimbur.getProcessInstanceId()));
@@ -1908,40 +1798,6 @@ public class WorkProjectNotifyController extends BaseController {
 						//return "redirect:"+Global.getAdminPath()+"/workreimbur/workReimbur/workReimburTodoList";
 						return "modules/workreimbur/workReimburAudit";
 					}
-				} else if ("35".equals(workProjectNotify.getType())) { //采购
-					OaBuy oaBuy = oaBuyService.get(workProjectNotify.getNotifyId());
-					oaBuy.setAct(getByAct(oaBuy.getProcessInstanceId()));
-					oaBuy.setHome("home");
-					model.addAttribute("oaBuy", oaBuy);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "redirect:" + Global.getAdminPath() + "/oabuy/oaBuy/form?id=" + oaBuy.getId() + "&tabId=0";
-					} else if (workProjectNotify.getRemarks().contains("待审批")) {
-						//return "redirect:"+Global.getAdminPath()+"/oabuy/oaBuy/oaBuyTodoList";
-						return "modules/oabuy/oaBuyAudit";
-					}
-				} else if ("36".equals(workProjectNotify.getType())) {  //绩效自评
-					OaPerformance oaPerformance = oaPerformanceService.get(workProjectNotify.getNotifyId());
-					oaPerformance.setAct(getByAct(oaPerformance.getProcessInstanceId()));
-					oaPerformance.setHome("home");
-					model.addAttribute("oaPerformance", oaPerformance);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "redirect:" + Global.getAdminPath() + "/oaperformance/oaPerformance/form?id=" + oaPerformance.getId() + "&tabId=0";
-					} else if (workProjectNotify.getRemarks().contains("待审批")) {
-						//return "redirect:"+Global.getAdminPath()+"/oaperformance/oaPerformance/oaPerformanceTodoList";
-						return "modules/oaperformance/oaPerformanceAudit";
-					}
-				} else if ("38".equals(workProjectNotify.getType())) { //案例
-					CaseInfo caseInfo = caseInfoService.get(workProjectNotify.getNotifyId());
-					caseInfo.setHome("home");
-					caseInfo.setAct(getByAct(caseInfo.getProcessInstanceId()));
-					model.addAttribute("caseInfo", caseInfo);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/caseinfo/caseInfoView";
-					} else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/caseinfo/caseInfoAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/caseinfo/caseInfoForm";
-					}
 				} else if ("40".equals(workProjectNotify.getType())) { //退票
 					WorkInvoiceReturn workInvoiceReturn = workInvoiceReturnService.get(workProjectNotify.getNotifyId());
 					workInvoiceReturn.setHome("home");
@@ -3286,34 +3142,6 @@ public class WorkProjectNotifyController extends BaseController {
 					} else {
 						return "modules/workcontractsignature/workContractSignatureView";
 					}
-				}else if (workProjectNotify.getType().equals("53")) {    //收入调整
-					WorkReceiptsRevise workReceiptsRevise = workReceiptsReviseService.get(workProjectNotify.getNotifyId());
-					workReceiptsRevise.setAct(getByAct(workReceiptsRevise.getProcessInstanceId()));
-					workReceiptsRevise.setHome("home");
-					model.addAttribute("workReceiptsRevise", workReceiptsRevise);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workreceiptsrevise/workReceiptsReviseView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workreceiptsrevise/workReceiptsReviseAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workreceiptsrevise/workReceiptsReviseModify";
-					} else {
-						return "modules/workreceiptsrevise/workReceiptsReviseView";
-					}
-				} else if (workProjectNotify.getType().equals("54")) {    //收入调整作废
-					WorkReceiptsRevise workReceiptsRevise = workReceiptsReviseService.get(workProjectNotify.getNotifyId());
-					workReceiptsRevise.setAct(getByAct(workReceiptsRevise.getInvalidProcessInstanceId()));
-					workReceiptsRevise.setHome("home");
-					model.addAttribute("workReceiptsRevise", workReceiptsRevise);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workreceiptsrevise/workReceiptsReviseView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workreceiptsrevise/workReceiptsReviseInvalidAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workreceiptsrevise/workReceiptsReviseInvalidModify";
-					} else {
-						return "modules/workreceiptsrevise/workReceiptsReviseView";
-					}
 				} else if (workProjectNotify.getType().equals("48")) {    //发票变更
 					WorkInvoiceAlter workInvoiceAlter = workInvoiceAlterService.get(workProjectNotify.getNotifyId());
 					workInvoiceAlter.setAct(getByAct(workInvoiceAlter.getProcessInstanceId()));
@@ -5296,6 +5124,25 @@ public class WorkProjectNotifyController extends BaseController {
 						projectcontentinfo.setFileOtherList(ruralProjectRecordsService.disposeDataAttachment(projectcontentinfo.getFileOtherList()));
 						return "modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/projectRecordsMessageTwoView";
 					}
+				}else if (workProjectNotify.getType().equals("106")) {    //资料缺失说明
+
+					SealApplyForInfo sealApplyForInfo = sealApplyForService.get(workProjectNotify.getNotifyId());
+					Act act = getByAct(sealApplyForInfo.getProcessInstanceId());
+					sealApplyForInfo.setAct(act);
+					sealApplyForInfo.setUploadMode(uploadMode);
+					sealApplyForInfo.setHome("home");
+					model.addAttribute("sealApplyForInfo", sealApplyForInfo);
+					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
+						return "modules/sealApplyFor/sealApplyForView";
+					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
+						model.addAttribute("identification","sealApplyFor");
+						model.addAttribute("identificationName","盖章审核意见");
+						return "modules/sealApplyFor/sealApplyForAudit";
+					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
+						return "modules/sealApplyFor/sealApplyForModify";
+					} else {
+						return "modules/sealApplyFor/sealApplyForView";
+					}
 				}else if (workProjectNotify.getType().equals("99")) {    //资料缺失说明
 						//查询“配农网”工程类型id
 						String engineeringId = engineeringService.getEngineeringId("202");
@@ -6681,11 +6528,6 @@ public class WorkProjectNotifyController extends BaseController {
 						return "modules/ruralprojectrecords/view/projectReportRecordView";
 
 					}
-				} else if (workProjectNotify.getType().equals("104")) {    //项目登记
-					CollectAccessoryInfo collectAccessoryInfo = collectAccessoryService.getInfo(workProjectNotify.getNotifyId());
-					model.addAttribute("collectAccessoryInfo", collectAccessoryInfo);
-					return "modules/collectAccessory/collectAccessoryView";
-
 				} else if (workProjectNotify.getType().equals("65")) {    //工作内容报告归档
 					ProjectReportRecord projectReportRecord = ruralProjectRecordsDownMessageService.get(workProjectNotify.getNotifyId());
 					//获取项目信息
@@ -6908,77 +6750,6 @@ public class WorkProjectNotifyController extends BaseController {
 					} else {
 						return "modules/workborrowmangement/workBorrowBackView";
 					}
-				} else if (workProjectNotify.getType().equals("61")) {    //采购管理
-					WorkStock workStock = workStockService.get(workProjectNotify.getNotifyId());
-					workStock.setAct(getByAct(workStock.getProcessInstanceId()));
-					workStock.setHome("home");
-					model.addAttribute("workStock", workStock);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workstock/workStockView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						if ("xzzg".equals(workStock.getAct().getTaskDefKey())) {
-							if (workStock.getAcceptDate() == null) {
-								workStock.setAcceptDate(new Date());
-							}
-							if (StringUtils.isBlank(workStock.getAcceptName())) {
-								workStock.setAcceptName(UserUtils.getUser().getName());
-							}
-							return "modules/workstock/workStockAcceptAudit";
-						} else if ("xzzgs".equals(workStock.getAct().getTaskDefKey())) {
-							WorkItemStock workItemStock = new WorkItemStock();
-							if (workStock != null) {
-								workItemStock.setStockId(workStock.getId());
-								//固定资产编号
-								workItemStock.setIsAssets("1");
-								workItemStock.setSign("1");
-								List<WorkItemStock> buyDetailsList3 = workItemStockService.findLists(workItemStock);
-								if (buyDetailsList3 != null && buyDetailsList3.size() > 0) {
-								}
-								workStock.setWorkItemStockAssets(buyDetailsList3);
-								model.addAttribute("workStock", workStock);
-							}
-							return "modules/workstock/workStocksAudit";
-						} else {
-							return "modules/workstock/workStockAudit";
-						}
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workstock/workStockModify";
-					} else {
-						return "modules/workstock/workStockView";
-					}
-				} else if (workProjectNotify.getType().equals("63")) {    //报废管理
-					WorkScrap workScrap = workScrapService.get(workProjectNotify.getNotifyId());
-					workScrap.setAct(getByAct(workScrap.getProcessInstanceId()));
-					workScrap.setHome("home");
-					model.addAttribute("workScrap", workScrap);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workscrap/workScrapView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workscrap/workScrapAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workscrap/workScrapModify";
-					} else {
-						return "modules/workscrap/workScrapView";
-					}
-				} else if ("64".equals(workProjectNotify.getType())) {    //领用管理
-					WorkItemCollar workItemCollar = workItemCollarService.get(workProjectNotify.getNotifyId());
-					Act act = getByAct(workItemCollar.getProcessInstanceId());
-					workItemCollar.setAct(act);
-					workItemCollar.setHome("home");
-					List<WorkItemCollarCatalog> workItemCollarCatalogList = workItemCollarService.findWorkItemCollarCatalogList(workItemCollar);
-					workItemCollar.setWorkItemCollarCatalogList(workItemCollarCatalogList);
-					List<WorkItemCollarItem> workItemCollarItem = workItemCollarService.findWorkItemCollarItemList(workItemCollar);
-					workItemCollar.setWorkItemCollarItemList(workItemCollarItem);
-					model.addAttribute("workItemCollar", workItemCollar);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workitemcollar/workItemCollarView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workitemcollar/workItemCollarAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workitemcollar/workItemCollarModifyApply";
-					} else {
-						return "modules/workitemcollar/workItemCollarView";
-					}
 				} else if ("66".equals(workProjectNotify.getType())) {    //转正申请
 					WorkRegularApply workRegularApply = workRegularApplyService.get(workProjectNotify.getNotifyId());
 					Act act = getByAct(workRegularApply.getProcessInstanceId());
@@ -6998,25 +6769,6 @@ public class WorkProjectNotifyController extends BaseController {
 					} else {
 						return "modules/workregularapply/workRegularApplyView";
 					}
-				} else if ("68".equals(workProjectNotify.getType())) {    //部门调转
-					WorkOfficeChange workOfficeChange = workOfficeChangeService.get(workProjectNotify.getNotifyId());
-					Act act = getByAct(workOfficeChange.getProcessInstanceId());
-					workOfficeChange.setAct(act);
-					workOfficeChange.setHome("home");
-					WorkOfficeChangeUser workOfficeChangeUser = new WorkOfficeChangeUser();
-					workOfficeChangeUser.setChangeId(workOfficeChange.getId());
-					List<WorkOfficeChangeUser> workOfficeChangeUserList = workOfficeChangeUserService.findList(workOfficeChangeUser);
-					workOfficeChange.setWorkOfficeChangeUserList(workOfficeChangeUserList);
-					model.addAttribute("workOfficeChange", workOfficeChange);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workofficechange/workOfficeChangeView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workofficechange/workOfficeChangeAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workofficechange/workOfficeChangeModifyApply";
-					} else {
-						return "modules/workofficechange/workOfficeChangeView";
-					}
 				} else if ("69".equals(workProjectNotify.getType())) {    //日常事务
 					if (workProjectNotify.getRemarks().contains("待处理") && !"1".equals(workProjectNotify.getStatus())) {
 						WorkStaffBasicInfo select = new WorkStaffBasicInfo();
@@ -7040,37 +6792,6 @@ public class WorkProjectNotifyController extends BaseController {
 						model.addAttribute("workStaffBasicInfo", workStaffBasicInfo);
 						return "modules/workstaff/workStaffBasicInfoView";
 					}
-				} else if ("86".equals(workProjectNotify.getType())) {    //日常事务
-					if (workProjectNotify.getRemarks().contains("待处理") && !"1".equals(workProjectNotify.getStatus())) {
-						WorkStaffBasicInfo select = new WorkStaffBasicInfo();
-						select.setAchiveId(workProjectNotify.getNotifyId());
-						WorkStaffBasicInfo workStaffBasicInfo = workStaffBasicInfoService.getAchive(select);
-						if (StringUtils.isNotBlank(workStaffBasicInfo.getId())) {
-							workStaffBasicInfoService.queryDetailsApply(workStaffBasicInfo);
-						}
-						workStaffBasicInfo.setHome("home");
-						model.addAttribute("workStaffBasicInfo", workStaffBasicInfo);
-						return "modules/workstaff/workStaffBasicDetailAudit";
-					}
-				} else if ("70".equals(workProjectNotify.getType())) {    //部门调转
-					WorkChangeJob workChangeJob = workChangeJobService.get(workProjectNotify.getNotifyId());
-					Act act = getByAct(workChangeJob.getProcessInstanceId());
-					workChangeJob.setAct(act);
-					workChangeJob.setHome("home");
-					WorkChangeJobUser WorkChangeJobUser = new WorkChangeJobUser();
-					WorkChangeJobUser.setChangeId(workChangeJob.getId());
-					List<WorkChangeJobUser> workChangeJobUserList = workChangeJobUserService.findList(WorkChangeJobUser);
-					workChangeJob.setWorkChangeJobUserList(workChangeJobUserList);
-					model.addAttribute("workChangeJob", workChangeJob);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workchangejob/workChangeJobView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workchangejob/workChangeJobAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workchangejob/workChangeJobModifyApply";
-					} else {
-						return "modules/workchangejob/workChangeJobView";
-					}
 				} else if ("72".equals(workProjectNotify.getType())) {
 					WorkContractInfo workContractInfo = workContractInfoService.get(workProjectNotify.getNotifyId());
 					workContractInfo.setHome("home");
@@ -7151,190 +6872,13 @@ public class WorkProjectNotifyController extends BaseController {
 						model.addAttribute("disabled",true);
 						return "modules/sys/companyinfoView";
 					}
-				} else if ("67".equals(workProjectNotify.getType())) { //劳动关系
-					WorkRelationship workRelationship = workRelationshipService.get(workProjectNotify.getNotifyId());
-					workRelationship.setHome("home");
-					workRelationship.setAct(getByAct(workRelationship.getProcessInstanceId()));
-					model.addAttribute("workRelationship", workRelationship);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workrelationship/workRelationshipView";
-					} else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						if ("rlzybzr".equals(workRelationship.getAct().getTaskDefKey())) {
-							return "modules/workrelationship/workRelationshipAudit";
-						} else if ("rlzy".equals(workRelationship.getAct().getTaskDefKey())) {
-							if (workRelationship.getTransactTime() == null) {
-								workRelationship.setTransactTime(new Date());
-								model.addAttribute("workRelationship", workRelationship);
-							}
-							return "modules/workrelationship/workRelationshiprlzyAudit";
-						} else if ("qyr".equals(workRelationship.getAct().getTaskDefKey())) {
-							return "modules/workrelationship/workRelationshipqyrAudit";
-						}
-					}
-				}else if ("90".equals(workProjectNotify.getType())) { //首次劳动关系
-					WorkRelationship workRelationship = workRelationshipService.get(workProjectNotify.getNotifyId());
-					workRelationship.setHome("home");
-					workRelationship.setAct(getByAct(workRelationship.getProcessInstanceId()));
-					model.addAttribute("workRelationship", workRelationship);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workrelationship/workRelationshipView";
-					} else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workrelationship/workRelationshipAuditFirst";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workrelationship/workRelationshipModify";
-					}
 				}else if("74".equals(workProjectNotify.getType())){//系统预警
 					SysWarning sysWarning =sysWarningService.get(workProjectNotify.getNotifyId());
 					model.addAttribute("sysWarning", sysWarning);
 					if(workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())){
 						return "modules/syswarning/sysWarningLookForm";
 					}
-				}
-				else if("71".equals(workProjectNotify.getType())){	//离职申请
-					WorkResignation workResignation = workResignationService.get(workProjectNotify.getNotifyId());
-					Act act = getByAct(workResignation.getProcessInstanceId());
-					workResignation.setAct(act);
-					workResignation.setHome("home");
-					model.addAttribute("workResignation", workResignation);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workresignation/workResignationView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						if ("bmzr".equals(workResignation.getAct().getTaskDefKey()) || "fgld".equals(workResignation.getAct().getTaskDefKey()) ||"zjl".equals(workResignation.getAct().getTaskDefKey()) ) {
-							return "modules/workresignation/workResignationAudit";
-						} else {
-							if ("各级审批".equals(workProjectNotify.getNotifyRole())) {
-								model.addAttribute("workResignation", workResignation);
-								return "modules/workresignation/workResignationAudits";
-							} else if ("人力专员审核".equals(workProjectNotify.getNotifyRole())) {
-								return "modules/workresignation/workResignationrlzyAudit";
-							}
-						}
-
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						if ("调整".equals(workProjectNotify.getNotifyRole())) {
-							return "modules/workresignation/workResignationForm";
-						}
-						return "modules/workresignation/workResignationModify";
-					} else {
-						return "modules/workresignation/workResignationView";
-					}
-				}
-				else if ("77".equals(workProjectNotify.getType())) {  //加班
-					WorkOvertime workOvertime = workOvertimeService.get(workProjectNotify.getNotifyId());
-					workOvertime.setHome("home");
-					workOvertime.setAct(getByAct(workOvertime.getProcessInstanceId()));
-					model.addAttribute("workOvertime", workOvertime);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workovertime/workOvertimeView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workovertime/workOvertimeAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workovertime/workOvertimeModify";
-					}
-				}
-				else if ("78".equals(workProjectNotify.getType())) {//出差
-					WorkOut workOut = workOutService.get(workProjectNotify.getNotifyId());
-					workOut.setHome("home");
-					workOut.setAct(getByAct(workOut.getProcessInstanceId()));
-					model.addAttribute("workOut", workOut);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workout/workOutView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workout/workOutAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workout/workOutModify";
-					}
-				}
-				else if ("79".equals(workProjectNotify.getType())) {//外勤
-					WorkField workField = workFieldService.get(workProjectNotify.getNotifyId());
-					workField.setHome("home");
-					workField.setAct(getByAct(workField.getProcessInstanceId()));
-					model.addAttribute("workField", workField);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workfield/workFieldView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workfield/workFieldAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workfield/workFieldModify";
-					}
-				}else if ("80".equals(workProjectNotify.getType())||"81".equals(workProjectNotify.getType())||"82".equals(workProjectNotify.getType())) {    //请假
-					LeaveApply leaveApply = leaveApplyService.get(workProjectNotify.getNotifyId());
-					Act act = getByAct(leaveApply.getProcessInstanceId());
-					leaveApply.setAct(act);
-					leaveApply.setHome("home");
-					//查询请假明细
-					LeaveDetail leaveDetail=new LeaveDetail();
-					leaveDetail.setLeaveId(leaveApply.getId());
-					List<LeaveDetail> list=leaveDetailDao.findList(leaveDetail);
-					leaveApply.setLeaveDetailList(list);
-					//查询历史明细
-					List<LeaveDetail> hisList=leaveDetailDao.findListHis(leaveApply.getStaffId());
-					leaveApply.setHisLeaveDetailList(hisList);
-					model.addAttribute("leaveApply", leaveApply);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/leaveapply/leaveApplyView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/leaveapply/leaveApplyAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						if ("81".equals(workProjectNotify.getType())){
-							return "modules/leaveapply/leaveApplyBackModifyApply";
-						}else if ("82".equals(workProjectNotify.getType())){
-							return "modules/leaveapply/leaveApplyExtendModifyApply";
-						}
-						return "modules/leaveapply/leaveApplyModifyApply";
-					} else {
-						return "modules/leaveapply/leaveApplyView";
-					}
-				}else if ("83".equals(workProjectNotify.getType())) {//补卡
-					WorkAttendanceInfo workAttendanceInfo = workAttendanceInfoService.getAudit(workProjectNotify.getNotifyId());
-					workAttendanceInfo.setHome("home");
-					model.addAttribute("workAttendanceInfo", workAttendanceInfo);
-					model.addAttribute("ids", workProjectNotify.getKind());
-					return "modules/workattendance/workAttendanceAudit";
-				}else if ("84".equals(workProjectNotify.getType())) {//补卡
-					WorkAttendanceCount workAttendanceCount = workAttendanceCountService.get(workProjectNotify.getNotifyId());
-					workAttendanceCount.setHome("home");
-					model.addAttribute("workAttendanceCount", workAttendanceCount);
-					return "modules/workattendance/workAttendanceCountForm";
-				}else if ("85".equals(workProjectNotify.getType())) {//单笔工资项发放
-					WorkSingleWage workSingleWage = workSingleWageService.get(workProjectNotify.getNotifyId());
-					Act act = getByAct(workSingleWage.getProcessInstanceId());
-					workSingleWage.setAct(act);
-					workSingleWage.setHome("home");
-					Map<String,String> map = StringUtils.getMonth();
-					model.addAttribute("workSingleWage", workSingleWage);
-					model.addAttribute("nowm", map.get("1"));
-					model.addAttribute("oldm", map.get("2"));
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workfield/workSingleWageView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/worksinglewage/workSingleWageAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/worksinglewage/workSingleWageModifyApply";
-					}
-				}else if ("87".equals(workProjectNotify.getType())) {//借款
-					WorkLoan workLoan = workLoanService.get(workProjectNotify.getNotifyId());
-					workLoan.setHome("home");
-					workLoan.setAct(getByAct(workLoan.getProcessInstanceId()));
-					model.addAttribute("workLoan", workLoan);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workloan/workLoanView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workloan/workLoanAudit";
-					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workloan/workLoanModify";
-					}
-				}else if ("88".equals(workProjectNotify.getType())) {//借款
-					WorkRepay workRepay = workRepayService.get(workProjectNotify.getNotifyId());
-					workRepay.setHome("home");
-					workRepay.setAct(getByAct(workRepay.getProcessInstanceId()));
-					model.addAttribute("workRepay", workRepay);
-					if (workProjectNotify.getRemarks().contains("待通知") || "view".equals(workProjectNotify.getView())) {
-						return "modules/workrepay/workRepayView";
-					}else if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
-						return "modules/workrepay/workRepayAudit";
-					}
-				}else if ("100".equals(workProjectNotify.getType())) {//项目归档批次
+				} else if ("100".equals(workProjectNotify.getType())) {//项目归档批次
 					ProjectFilingBatch projectFilingBatch = projectFilingBatchService.get(workProjectNotify.getNotifyId());
 					//获取详细信息
 					List<RuralProjectRecords> ruralProjectRecordsList = new ArrayList<>();
@@ -7479,6 +7023,7 @@ public class WorkProjectNotifyController extends BaseController {
 			workProjectNotify.preUpdate();
 			workProjectNotifyService.save(workProjectNotify);
 			model.addAttribute("errorMsg","关联记录已经被删除!!!");
+			logger.error(e.getMessage());
 		}
 		model.addAttribute("workProjectNotify", workProjectNotify);
 		return "modules/workprojectnotify/workProjectNotifyForm";

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

@@ -827,7 +827,7 @@
 		wci.name AS "workContractInfo.name",
 		wci.contract_num AS "workContractInfo.contractNum",
 		wct.id AS "workContractInfo.client.id",
-		wct.name AS "workContractInfo.client.name",
+		wci.clientName AS "workContractInfo.clientName",
 		o.name AS "office.name"
 		,prd.number as "reportData.number"
 		FROM rural_project_records a
@@ -840,7 +840,7 @@
 		LEFT JOIN sys_office s ON s.id = a.company_id
 		LEFT JOIN sys_office o ON o.id = a.office_id
 		LEFT JOIN project_report_data prd ON a.id = prd.project_id
-		where a.status='5'  and a.del_flag='0' and w.del_flag='0'
+		where a.status='5'  and a.del_flag='0'
 		/*and prd.number is not null*/
 		/*and wci.del_flag='0' and (wci.completion_status!='5' or wci.completion_status is null)*/
 		<if test="projectName != null and projectName != ''">

+ 310 - 0
src/main/resources/mappings/modules/sealApplyFor/SealApplyForDao.xml

@@ -0,0 +1,310 @@
+<?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.sealApplyFor.dao.SealApplyForDao">
+    
+	<sql id="sealApplyForColumnss">
+		DISTINCT a.id AS "id",
+		a.create_by AS "createBy.id",
+		(select name from sys_user user where user.id=a.create_by) AS "createBy.name",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.del_flag AS "delFlag",
+		a.status As "status",
+		a.remarks As "remarks",
+		a.process_instance_id As "processInstanceId" ,
+		a.project_id As "projectId",
+		a.seal_company As "sealCompany",
+		so.id AS "office.id",
+		so.name AS "office.name",
+		sc.id AS "company.id",
+		sc.name AS "company.name"
+	</sql>
+	<sql id="projectColumnss">
+		rpr.id AS "projectRecords.id",
+		rpr.create_by AS "projectRecords.createBy.id",
+		rpr.create_date AS "projectRecords.createDate",
+		rpr.update_by AS "projectRecords.updateBy.id",
+		rpr.update_date AS "projectRecords.updateDate",
+		rpr.del_flag AS "projectRecords.delFlag",
+		rpr.contract_id AS "projectRecords.workContractInfo.id",
+		rpr.project_id AS "projectRecords.projectId",
+		rpr.project_name AS "projectRecords.projectName",
+		rpr.scale_type AS "projectRecords.scaleType",
+		rpr.scale_unit AS "projectRecords.scaleUnit",
+		rpr.scale_quantity AS "projectRecords.scaleQuantity",
+		rpr.area_id AS "projectRecords.area.id",
+		rpr.project_site AS "projectRecords.projectSite",
+		rpr.project_desc AS "projectRecords.projectDesc",
+		rpr.remarks AS "projectRecords.remarks",
+		rpr.status AS "projectRecords.projectStatus",
+		rpr.process_instance_id AS "projectRecords.processInstanceId",
+		rpr.company_id AS "projectRecords.company.id",
+		rpr.office_id AS "projectRecords.office.id",
+		rpr.alter_process_id AS "projectRecords.alterProcessId",
+		rpr.province as "projectRecords.province",
+		rpr.city as "projectRecords.city",
+		rpr.area_name AS "projectRecords.county",
+		rpr.project_structure AS "projectRecords.projectStructure",
+		rpr.on_ground_num AS "projectRecords.onGroundNum",
+		rpr.under_ground_num AS "projectRecords.underGroundNum",
+		rpr.building_scale AS "projectRecords.buildingScale",
+		rpr.measuring_unit AS "projectRecords.measuringUnit",
+		rpr.project_use AS "projectRecords.projectUse",
+		rpr.install_fees AS "projectRecords.installFees",
+		rpr.building_fees AS "projectRecords.buildingFees",
+		rpr.building_percent AS "projectRecords.buildingPercent",
+		rpr.install_percent AS "projectRecords.installPercent",
+		rpr.unit_fees AS "projectRecords.unitFees",
+		rpr.building_unit_fees AS "projectRecords.buildingUnitFees",
+		rpr.install_unit_fees AS "projectRecords.installUnitFees",
+		rpr.total_fees AS "projectRecords.totalFees",
+		rpr.start_date AS "projectRecords.startDate",
+		rpr.ending_date AS "projectRecords.endingDate",
+		rpr.estimate_total_fees AS "projectRecords.estimateTotalFees",
+		rpr.construction_unit as "projectRecords.constructionUnit",
+		rpr.construction_linkman as "projectRecords.constructionLinkman",
+		rpr.project_type as "projectRecords.projectType",
+		rpr.over_due_status as "projectRecords.overDueStatus",
+		rpr.attachment_project_sort as "projectRecords.attachmentProjectSort",
+		rpr.check_remarks as "projectRecords.checkRemarks",
+		rpr.project_properties As "projectRecords.projectProperties",
+		rpr.submit_scale As "projectRecords.submitScale",
+		ifnull(rpr.record_state,0) as "projectRecords.projectRecordStatus",
+		rpr.over_record_status as "projectRecords.overRecordStatus",
+		rpr.emergency_project AS "projectRecords.emergencyProject",
+		rpr.report_signature_flag as "projectRecords.reportSignatureFlag",
+		rpr.report_signature_document_id as "projectRecords.reportSignatureDocumentId",
+		rpr.report_signature_contract_id as "projectRecords.reportSignatureContractId",
+		rpr.report_signature_url as "projectRecords.reportSignatureUrl",
+		rpr.report_signature_invalid_document_id as "projectRecords.reportSignatureInvalidDocumentId",
+		rpr.report_signature_file_name as "projectRecords.reportSignatureFileName",
+		rpr.report_signature_upload_file_user as "projectRecords.reportSignatureUploadFileUser.id",
+		rpr.report_signature_upload_date as "projectRecords.reportSignatureUploadDate",
+		rpr.quality_signature_flag as "projectRecords.qualitySignatureFlag",
+		rpr.quality_signature_document_id as "projectRecords.qualitySignatureDocumentId",
+		rpr.quality_signature_contract_id as "projectRecords.qualitySignatureContractId",
+		rpr.quality_signature_invalid_document_id as "projectRecords.qualitySignatureInvalidDocumentId",
+		rpr.quality_signature_file_name as "projectRecords.qualitySignatureFileName",
+		rpr.quality_signature_upload_file_user as "projectRecords.qualitySignatureUploadFileUser.id",
+		rpr.quality_signature_upload_date as "projectRecords.qualitySignatureUploadDate",
+		rpr.belonging_department as "projectRecords.belongingDepartment",
+		rpr.reviewer_person as "projectRecords.reviewerPerson",
+		rpr.reviewer_person_id as "projectRecords.reviewerPersonId",
+		prd.number as "projectRecords.projectReportNumber",
+		wci.name as "projectRecords.workContractInfo.name",
+		wci.id as "projectRecords.workContractInfo.id"
+	</sql>
+
+	<sql id="sealApplyForJoin">
+		left join sys_office so on so.id = a.office_id
+		left join sys_office sc on sc.id = a.company_id
+	</sql>
+
+	<sql id="projectJoin">
+		left join rural_project_records rpr on rpr.id = a.project_id
+		left join project_report_data prd on prd.project_id = rpr.id
+		left join work_contract_info wci on wci.id = rpr.contract_id
+	</sql>
+
+	<select id="get" resultType="com.jeeplus.modules.sealApplyFor.entity.SealApplyForInfo" >
+		SELECT
+			<include refid="sealApplyForColumnss"/>
+			,
+			<include refid="projectColumnss"/>
+		FROM seal_apply_for_info a
+		<include refid="sealApplyForJoin"/>
+		<include refid="projectJoin"/>
+		WHERE a.id = #{id}
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.modules.sealApplyFor.entity.SealApplyForInfo" >
+		SELECT
+		<include refid="sealApplyForColumnss"/>
+		,
+		<include refid="projectColumnss"/>
+		FROM seal_apply_for_info a
+		<include refid="sealApplyForJoin"/>
+		<include refid="projectJoin"/>
+		<where>
+
+			<if test="projectId != null and projectId != ''">
+				AND a.project_id like concat('%',#{projectId},'%')
+			</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>
+
+	<select id="queryCount" resultType="int" >
+		SELECT count(DISTINCT a.id)
+		FROM seal_apply_for_info a
+		<where>
+			<if test="projectId != null and projectId != ''">
+				AND a.project_id like concat('%',#{projectId},'%')
+			</if>
+		</where>
+	</select>
+
+	<insert id="insert">
+		INSERT INTO seal_apply_for_info(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			project_id,
+			seal_company,
+			status,
+			process_instance_id,
+			company_id,
+			office_id
+		) VALUES (
+			 #{id},
+			 #{createBy.id},
+			 #{createDate},
+			 #{updateBy.id},
+			 #{updateDate},
+			 #{remarks},
+			 #{delFlag},
+			 #{projectId},
+			 #{sealCompany},
+			 #{status},
+			 #{processInstanceId},
+			 #{company.id},
+			 #{office.id}
+				 )
+	</insert>
+
+	<update id="update">
+		UPDATE seal_apply_for_info SET
+			   update_by = #{updateBy.id},
+			   update_date = #{updateDate},
+			   status = #{status},
+			   process_instance_id = #{processInstanceId},
+			   project_id = #{projectId},
+			   seal_company = #{sealCompany}
+		WHERE id = #{id}
+	</update>
+
+	<update id="updateProcessIdAndStatus" >
+		UPDATE  seal_apply_for_info SET
+		update_by = #{updateBy.id},
+		update_date = #{updateDate}
+		<if test="null != processInstanceId and '' != processInstanceId">
+			,process_instance_id = #{processInstanceId}
+		</if>
+		<if test="null != status and '' != status">
+			,status = #{status}
+		</if>
+		WHERE id = #{id}
+	</update>
+
+	<!-- 报销查询项目 -->
+	<select id="ruralFindPageByReimbur" resultType="ProjectRecords" >
+		SELECT
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.del_flag AS "delFlag",
+		a.contract_id AS "workContractInfo.id",
+		a.project_id AS "projectId",
+		a.project_name AS "projectName",
+		a.scale_type AS "scaleType",
+		a.scale_unit AS "scaleUnit",
+		a.scale_quantity AS "scaleQuantity",
+		a.area_id AS "area.id",
+		a.project_site AS "projectSite",
+		a.project_desc AS "projectDesc",
+		a.remarks AS "remarks",
+		a.status AS "projectStatus",
+		a.process_instance_id AS "processInstanceId",
+		a.company_id AS "company.id",
+		a.office_id AS "office.id",
+		a.alter_process_id AS "alterProcessId",
+		area.name AS "area.name",
+		a.province,
+		a.city,
+		a.area_name AS "county",
+		a.project_structure AS "projectStructure",
+		a.on_ground_num AS "onGroundNum",
+		a.under_ground_num AS "underGroundNum",
+		a.building_scale AS "buildingScale",
+		a.measuring_unit AS "measuringUnit",
+		a.project_use AS "projectUse",
+		a.install_fees AS "installFees",
+		a.building_fees AS "buildingFees",
+		a.building_percent AS "buildingPercent",
+		a.install_percent AS "installPercent",
+		a.unit_fees AS "unitFees",
+		a.building_unit_fees AS "buildingUnitFees",
+		a.install_unit_fees AS "installUnitFees",
+		a.total_fees AS "totalFees",
+		a.type_id As "projectTypeId",
+		a.start_date AS "startDate",
+		a.ending_date AS "endingDate",
+		a.estimate_total_fees AS "estimateTotalFees",
+		a.construction_unit as "constructionUnit",
+		a.construction_linkman as "constructionLinkman",
+		a.project_type as "projectType",
+		a.over_due_status as "overDueStatus"
+		,
+		wci.name AS "workContractInfo.name",
+		wci.contract_num AS "workContractInfo.contractNum",
+		wct.id AS "workContractInfo.client.id",
+		wci.clientName AS "workContractInfo.clientName",
+		o.name AS "office.name"
+		,prd.number as "reportData.number"
+		FROM rural_project_records a
+
+
+		LEFT JOIN sys_area area ON area.id = a.area_id
+		LEFT JOIN work_project_user w on a.id = w.project_id
+		LEFT JOIN sys_user su on w.user_id = su.id
+		LEFT JOIN sys_user u on a.create_by = u.id
+		LEFT JOIN work_contract_info wci on a.contract_id = wci.id
+		LEFT JOIN work_client_info wct on wci.client_id = wct.id
+		LEFT JOIN sys_office s ON s.id = a.company_id
+		LEFT JOIN sys_office o ON o.id = a.office_id
+		LEFT JOIN project_report_data prd ON a.id = prd.project_id
+		left join seal_apply_for_info safi on a.id = safi.project_id
+		where a.status='5'  and a.del_flag='0' and safi.id is null
+		<if test="projectName != null and projectName != ''">
+			AND a.project_name like concat(concat('%',#{projectName}),'%')
+		</if>
+		<if test="projectId != null and projectId != ''">
+			AND a.project_Id like concat(concat('%',#{projectId}),'%')
+		</if>
+		<if test="workContractInfo != null and workContractInfo != ''">
+			<if test="workContractInfo.name != null and workContractInfo.name != ''">
+				AND wci.name like concat(concat('%',#{workContractInfo.name}),'%')
+			</if>
+		</if>
+		<if test="reportData != null and reportData != ''">
+			<if test="reportData.number != null and reportData.number != ''">
+				AND prd.number like concat(concat('%',#{reportData.number}),'%')
+			</if>
+		</if>
+		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>
+</mapper>

+ 328 - 0
src/main/webapp/webpage/modules/sealApplyFor/sealApplyForAudit.jsp

@@ -0,0 +1,328 @@
+<%@ 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" src="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/layui/layuidown.js"></script>
+    <script src="${ctxStatic}/common/html/js/script.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+    <style>
+        #projectDesc-error{
+            left:0;
+            top:82px;
+        }
+        .layui-layer-dialog{
+            background: red;
+        }
+        td input{
+            margin-left:-10px !important;
+            height: 42px !important;
+        }
+        .disables {
+            pointer-events: none;
+        }
+        .notDisables {
+            pointer-events: all;
+        }
+        .forbidden{
+             background-color:#c2c2c2;
+         }
+
+        .notForbidden{
+             background-color:#3ca2e0;
+         }
+        .spanzj{
+            color:red;
+            font-size: 12px;
+            padding-left: 10px;
+        }
+    </style>
+    <script type="text/javascript">
+        var validateForm;
+        var isMasterClient = true;//是否是委托方
+        var clientCount = 0;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            var ss= document.getElementById("iframe").contentWindow.document.getElementById("opinion").value
+            $("#opinion").val(ss);
+            if(validateForm.form()){
+                if(obj == 1){
+                    $('#flag').val('yes');
+                }else{
+                    $('#flag').val('no');
+                }
+                $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            layui.use(['dropdown', 'util','form', 'layer'], function () {
+                var form = layui.form;
+                var dropdown = layui.dropdown
+                    ,util = layui.util
+                    ,layer = layui.layer
+                    ,$ = layui.jquery;
+            });
+            var radioVal ;
+            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);
+                    }
+                }
+            });
+        });
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <sys:message content="${message}"/>
+        <form:form id="inputForm" modelAttribute="sealApplyForInfo" action="${ctx}/sealApplyFor/sealApplyFor/saveAudit" method="post" class="form-horizontal layui-form">
+            <form:hidden path="id"/>
+            <form:hidden path="home"/>
+            <form:hidden path="createBy.id"/>
+            <form:hidden path="act.taskId"/>
+            <form:hidden path="act.taskName"/>
+            <form:hidden path="act.taskDefKey"/>
+            <form:hidden path="act.procInsId"/>
+            <form:hidden path="act.procDefId"/>
+            <form:hidden id="flag" path="act.flag"/>
+            <input type="hidden" id="opinion" name="act.comment" value="" maxlength="250">
+
+            <input type="hidden" id="flagFile" value="">
+
+            <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"><span class="require-item">*</span>单位:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="sealCompany" value="0" title="东兴" disabled <c:if test="${sealApplyForInfo.sealCompany=='0'}">checked</c:if>>
+                        <input type="radio" name="sealCompany" value="1" title="赣能" disabled <c:if test="${sealApplyForInfo.sealCompany=='1'}">checked</c:if> >
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">盖章说明:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000"  style="background-color: #f1f1f1" class="form-control" >${sealApplyForInfo.remarks}</textarea>
+                    </div>
+                </div>
+            </div>
+
+            <div id="upTable">
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>项目基础信息</h2></div>
+
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目名称:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${sealApplyForInfo.projectRecords.projectName}"/>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">报告号:</label>
+                    <div class="layui-input-block">
+                        <input id="projectReportDataNumber" htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${sealApplyForInfo.projectRecords.projectReportNumber}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目编号:</label>
+                    <div class="layui-input-block">
+                        <input id="projectId" htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${sealApplyForInfo.projectRecords.projectId}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目所在地:</label>
+                    <div class="layui-input-block">
+                        <input id="area" htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.province}-${sealApplyForInfo.projectRecords.city}-${sealApplyForInfo.projectRecords.county}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">投资性质:</label>
+                    <div class="layui-input-block">
+                        <c:if test="${sealApplyForInfo.projectRecords.projectProperties==null}">
+                            <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input"/>
+                        </c:if>
+                        <c:forEach  items="${fns:getMainDictList('project_properties')}" var="v">
+                            <c:if test="${v.value==sealApplyForInfo.projectRecords.projectProperties}">
+                                <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${v.label}"/>
+                            </c:if>
+                        </c:forEach>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">建设地点:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1"  readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.projectSite}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.createBy.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">审核人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.reviewerPerson}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" id="officeName" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.officeName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目负责人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.projectMasterName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作开始日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date ash"  style="background-color: #f1f1f1" readonly="true" id="startDate" name="startDate" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作结束日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date "  style="background-color: #f1f1f1" readonly="true" id="endingDate" name="endingDate" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.createDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">项目类别:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true"  style="background-color: #f1f1f1" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.attachmentProjectSort}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">工程概况:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true"  style="background-color: #f1f1f1" maxlength="1000" class="form-control" >${sealApplyForInfo.projectRecords.projectDesc}</textarea>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">备注:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000"  style="background-color: #f1f1f1" class="form-control" >${sealApplyForInfo.projectRecords.remarks}</textarea>
+                    </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" >
+                    <table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">委托方</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanList">
+                        <c:forEach items="${sealApplyForInfo.projectRecords.workClientLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </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" >
+                    <table id="contentTable1" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">施工方单位名称</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workConstructionLinkmanList">
+                        <c:forEach items="${sealApplyForInfo.projectRecords.workConstructionLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div></div>
+
+
+
+
+
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+        <div class="form-group-label">
+            <div style="float: right"> <a href="javascript:void(0)" style='background-color: #FFB800' onclick="openDialogre('个人模板列表', '${ctx}/auditTemplate/auditTemplate/templateList?identification=${identification}&name=${identificationName}','80%', '70%','','关闭')" class="nav-btn layui-btn layui-btn-sm" ><i class="fa fa-file-excel-o"></i> 审核意见模板列表</a></div>
+            <h2>审批意见</h2>
+        </div>
+        <iframe id="iframe" src="${ctx}/auditTemplate/auditTemplate/iframeView?identification=${identification}" name="listresult" frameborder="0" align="left" width="100%" height="300" scrolling="value"></iframe>
+        <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="${sealApplyForInfo.act.procInsId}"/>
+                <act:histoicFlow procInsId="${sealApplyForInfo.act.procInsId}"/>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 420 - 0
src/main/webapp/webpage/modules/sealApplyFor/sealApplyForForm.jsp

@@ -0,0 +1,420 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>项目管理</title>
+    <meta name="decorator" content="default"/>
+    <script type="text/javascript" src="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/layui/layuidown.js"></script>
+    <script src="${ctxStatic}/common/html/js/script.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+    <style>
+        #projectDesc-error{
+            left:0;
+            top:82px;
+        }
+        .layui-layer-dialog{
+            background: red;
+        }
+        td input{
+            margin-left:-10px !important;
+            height: 42px !important;
+        }
+        .disables {
+            pointer-events: none;
+        }
+        .notDisables {
+            pointer-events: all;
+        }
+        .forbidden{
+             background-color:#c2c2c2;
+         }
+
+        .notForbidden{
+             background-color:#3ca2e0;
+         }
+        .spanzj{
+            color:red;
+            font-size: 12px;
+            padding-left: 10px;
+        }
+    </style>
+    <script type="text/javascript">
+        var validateForm;
+        var isMasterClient = true;//是否是委托方
+        var clientCount = 0;
+        function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+
+                if(i==2){
+                    $("#inputForm").attr("action","${ctx}/sealApplyFor/sealApplyFor/tstore");
+                }else if(i==1){
+                    /*var projectProperties=$("#projectProperties").val();
+                    if(projectProperties==''){
+                        parent.layer.msg("投资性质未选择!", {icon: 5});
+                        return false;
+                    }*/
+                }
+                $("#inputForm").submit();
+                return true;
+            }else{
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            layui.use(['dropdown', 'util','form', 'layer'], function () {
+                var form = layui.form;
+                var dropdown = layui.dropdown
+                    ,util = layui.util
+                    ,layer = layui.layer
+                    ,$ = layui.jquery;
+            });
+            var radioVal ;
+            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);
+                    }
+                }
+            });
+        });
+
+        function setValue(obj){
+            if(location.href.includes("?")){
+                $("#upTable").load(location.href+"&projectId="+obj + " #upTable");
+            }else{
+                $("#upTable").load(location.href+"?projectId="+obj + " #upTable");
+            }
+        }
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <sys:message content="${message}"/>
+        <form:form id="inputForm" modelAttribute="sealApplyForInfo" action="${ctx}/sealApplyFor/sealApplyFor/save" method="post" class="form-horizontal layui-form">
+            <form:hidden path="id"/>
+            <input type="hidden" id="flagFile" value="">
+
+            <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"><span class="require-item">*</span>单位:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="sealCompany" value="0" title="东兴" <c:if test="${sealApplyForInfo.sealCompany=='0'}">checked</c:if>>
+                        <input type="radio" name="sealCompany" value="1" title="赣能" <c:if test="${sealApplyForInfo.sealCompany=='1'}">checked</c:if> >
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label ">盖章说明:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="remarks" placeholder="请输入盖章说明信息" id="remarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+                    </div>
+                </div>
+            </div>
+
+            <div id="upTable">
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>项目基础信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
+                    <div class="layui-input-block with-icon">
+                        <sys:gridselectcallproject url="${ctx}/sealApplyFor/sealApplyFor/selectprojectOnList" id="projectRecords" name="projectRecords.id"  value="${sealApplyForInfo.projectRecords.id}"  title="选择所属项目" labelName="projectRecords.projectName" cssStyle="background-color:#fff"
+                                                    labelValue="${sealApplyForInfo.projectRecords.projectName}" cssClass="form-control required layui-input"  fieldLabels="项目" fieldKeys="projectName" searchLabel="项目名称" searchKey="projectName" ></sys:gridselectcallproject>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">报告号:</label>
+                    <div class="layui-input-block">
+                        <input id="projectReportDataNumber" htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${sealApplyForInfo.projectRecords.projectReportNumber}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目编号:</label>
+                    <div class="layui-input-block">
+                        <input id="projectId" htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${sealApplyForInfo.projectRecords.projectId}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目所在地:</label>
+                    <div class="layui-input-block">
+                        <input id="area" htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.province}-${sealApplyForInfo.projectRecords.city}-${sealApplyForInfo.projectRecords.county}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">投资性质:</label>
+                    <div class="layui-input-block">
+                        <c:if test="${sealApplyForInfo.projectRecords.projectProperties==null}">
+                            <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input"/>
+                        </c:if>
+                        <c:forEach  items="${fns:getMainDictList('project_properties')}" var="v">
+                            <c:if test="${v.value==sealApplyForInfo.projectRecords.projectProperties}">
+                                <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${v.label}"/>
+                            </c:if>
+                        </c:forEach>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">建设地点:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1"  readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.projectSite}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.createBy.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">审核人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.reviewerPerson}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" id="officeName" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.officeName}"/>
+                    </div>
+                </div>
+                <%--<div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">项目归属部门:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" id="belongingDepartmentName" class="form-control layui-input" value="${sealApplyForInfo.belongingDepartmentName}"/>
+                    </div>
+                </div>--%>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目负责人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.projectMasterName}"/>
+                    </div>
+                </div>
+                <%--<div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">工程类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="engineeringType" disabled="true" style="background-color: #f1f1f1"  class="form-control simple-select">
+                            <form:options items="${engineeringInfo}" itemLabel="engineeringName" itemValue="id" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>--%>
+                <%--<div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">送审规模(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="submitScale" readonly="true" style="background-color: #f1f1f1" id="submitScale" maxlength="12" htmlEscape="false" placeholder="请输入送审规模" class="form-control layui-input number"/>
+                    </div>
+                </div>--%>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作开始日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date ash"  style="background-color: #f1f1f1" readonly="true" id="startDate" name="startDate" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作结束日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date "  style="background-color: #f1f1f1" readonly="true" id="endingDate" name="endingDate" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.createDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">项目类别:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true"  style="background-color: #f1f1f1" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.attachmentProjectSort}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">工程概况:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true"  style="background-color: #f1f1f1" maxlength="1000" class="form-control" >${sealApplyForInfo.projectRecords.projectDesc}</textarea>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">备注:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000"  style="background-color: #f1f1f1" class="form-control" >${sealApplyForInfo.projectRecords.remarks}</textarea>
+                    </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" >
+                    <table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">委托方</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanList">
+                        <c:forEach items="${sealApplyForInfo.projectRecords.workClientLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </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" >
+                    <table id="contentTable1" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">施工方单位名称</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workConstructionLinkmanList">
+                        <c:forEach items="${sealApplyForInfo.projectRecords.workConstructionLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div></div>
+
+
+
+
+
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+<script>
+    function openBill3(title,url,width,height,target,formId){
+
+        var frameIndex = parent.layer.getFrameIndex(window.name);
+        var urls = url+"&index="+frameIndex;
+        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,
+            skin:"two-btns",
+            maxmin: false, //开启最大化最小化按钮
+            content: urls ,
+            btn: ['确定','关闭'],
+            yes: 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中展示
+                inputForm.attr("action","${ctx}/ruralProject/ruralProjectRecords/linkManSave");//表单提交成功后,从服务器返回的url在当前tab中展示
+                var $document = iframeWin.contentWindow.document;
+
+                formSubmit3($document,formId,index);
+            },
+            cancel: function(index){
+            }
+        });
+
+
+        function formSubmit3($document,inputForm,index){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        var d = data;
+                        if(d.msg == "false"){
+                            parent.layer.msg("保存客户信息异常!",{icon:2});
+                            return false;
+                        }
+
+                        addRow("#workConstructionLinkmanList",workConstructionLinkmanRowIdx,workConstructionLinkmanTpl);
+                        workConstructionLinkmanRowIdx=workConstructionLinkmanRowIdx+1;
+                        var row = workClientLinkmanRowIdx;
+
+                        $("#"+"workConstructionLinkmanList"+row+"_id").val(d.id);
+                        $("#"+"workConstructionLinkmanList"+row+"_clientId_id").val(d.clientId);
+                        $("#"+"workConstructionLinkmanList"+row+"_clientName").val(d.clientName);
+                        $("#"+"workConstructionLinkmanList"+row+"_name").val(d.linkName);
+                        $("#"+"workConstructionLinkmanList"+row+"_linkMobile").val(d.linkMobile);
+                        $("#"+"workConstructionLinkmanList"+row+"_linkPhone").val(d.linkPhone);
+                        parent.layer.msg(d.str,{icon:1});
+                        top.layer.close(index)
+                    }
+                });
+            }
+        }
+    }
+</script>
+</body>
+</html>

+ 400 - 0
src/main/webapp/webpage/modules/sealApplyFor/sealApplyForList.jsp

@@ -0,0 +1,400 @@
+<%@ 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" src="${ctxStatic}/layui/layuidown.js"></script>
+	<link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+	<script type="text/javascript">
+        $(document).ready(function() {
+			layui.use(['dropdown', 'util', 'layer'], function () {
+				var form = layui.form;
+			})
+            //搜索框收放
+            $('#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'
+, trigger: 'click'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+, trigger: 'click'
+            });
+        });
+
+        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>
+</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="sealApplyForInfo" action="${ctx}/sealApplyFor/sealApplyFor/" 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}"/>
+					<input id="toflag" name="toflag" type="hidden" value="1"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird" style="width: 25%">
+							<label class="layui-form-label">所属项目:</label>
+							<div class="layui-input-block with-icon">
+								<sys:gridselectcallprojectt url="${ctx}/workreimbursement/workReimbursement/selectprojectOnList" id="projectRecords" name="projectRecords.id"  value="${sealApplyForInfo.projectRecords.id}"  title="选择所属项目" labelName="projectRecords.projectName" cssStyle="background-color:#fff"
+															labelValue="${sealApplyForInfo.projectRecords.projectName}" cssClass="form-control required layui-input"  fieldLabels="项目" fieldKeys="projectName" searchLabel="项目名称" searchKey="projectName" ></sys:gridselectcallprojectt>
+							</div>
+						</div>
+						<div class="layui-item query athird " style="width: 25%">
+							<label class="layui-form-label">登记人:</label>
+							<div class="layui-input-block with-icon">
+								<sys:inquireselectUserNotReadolny id="createBy" name="createBy.id" value="${sealApplyForInfo.createBy.id}" labelName="createBy.name" labelValue="${sealApplyForInfo.createBy.name}" cssStyle="background-color: #fff"
+																  title="登记人" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>
+						<div class="layui-item query athird" style="width: 25%">
+							<label class="layui-form-label">部门:</label>
+							<div class="layui-input-block with-icon">
+								<sys:treeselectMoHu id="officeId" name="office.id" value="${sealApplyForInfo.office.id}" labelName="office.name" labelValue="${sealApplyForInfo.office.name}"
+													title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="false"/>
+							</div>
+						</div>
+
+						<div class="layui-item athird" style="width: 25%">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<div class="layui-btn-group search-spacing">
+									<button id="searchQuery" class="layui-btn layui-btn-sm layui-bg-blue" onclick="search()">查询</button>
+									<button id="searchReset" class="layui-btn layui-btn-sm" onclick="resetSearch()">重置</button>
+								</div>
+							</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 readOnlyFFF">
+								<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="${sealApplyForInfo.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="${sealApplyForInfo.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="status" class=" form-control  simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getRuralDictList('rural_project_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">
+					<div class="layui-btn-group">
+						<shiro:hasPermission name="sealApplyFor:sealApplyFor:add">
+							<table:addRow url="${ctx}/sealApplyFor/sealApplyFor/form" title="项目"></table:addRow><!-- 增加按钮 -->
+						</shiro:hasPermission>
+						<button class="layui-btn layui-btn-sm" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"> 刷新</button>
+					</div>
+					<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>
+
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+			,id:"checkboxTable"
+            ,elem: '#contentTable1'
+            ,page: false
+            ,cols: [[
+				{checkbox: true, fixed: true},
+                {field:'index',align:'center', title: '序号',width:55}
+                ,{field:'projName',align:'center', title: '项目名称',width:250,templet:function(d){
+						return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看信息', '${ctx}/sealApplyFor/sealApplyFor/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
+                    }}
+				,{field:'projId',align:'center', title: '项目编号',  width:150}
+				,{field: 'projectReportNumber', align:'center', title: '报告号',width:170,templet: function(d){
+						if(""!= d.projectReportNumber){
+							return d.projectReportNumber;
+						}else{
+							return "<span title='暂无报告'  style='color: #009688'>暂无报告</span>";
+						}
+					}}
+				,{field:'contract', align:'center',title: '合同名称',width:250,templet:function(d){
+						if(""!= d.contract){
+							return "<a class=\"attention-info\" title=\""+d.contract+"\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看合同管理', '${ctx}/workcontractinfo/workContractInfo/lookForm?id=" + d.conId + "','95%', '95%')\">" + d.contract + "</a>";
+							//return "<span title='"+ d.contract +"'>" + d.contract + "</span>";
+						}else{
+							return "<span title='暂无合同'  style='color: #FF5722'>暂无合同</span>";
+						}
+
+					}}
+                ,{field:'createDate',align:'center', title: '创建日期',  width:100}
+                ,{align:'center', title: '状态',  width:90,templet:function(d){
+                        var st = getruralProjectState(d.status);
+                        if(st.action)
+                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/ruralProject/ruralProjectRecords/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:240,templet:function(d){
+                        ////对操作进行初始化
+                        var xml="<div class=\"layui-btn-group\">";
+
+                        if(d.canedit1 != undefined && d.canedit1 =="1")
+                        {
+                            xml+="<a href=\"#\" onclick=\"openDialogre('修改盖章申请', '${ctx}/sealApplyFor/sealApplyFor/form?id=" + d.id +"','95%', '95%','','送审,暂存,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-green\" > 修改</a>";
+                        }
+                        if(d.canedit2 != undefined && d.canedit2 =="1")
+                        {
+                            xml+="<a href=\"#\" onclick=\"openDialogre('调整盖章申请', '${ctx}/sealApplyFor/sealApplyFor/modify?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-green\" > 修改</a>";
+                        }
+                        if(d.canrecall != undefined && d.canrecall =="1")
+                        {
+                            xml+="<a href=\"#\" onclick=\"openDialogre('调整盖章申请', '${ctx}/sealApplyFor/sealApplyFor/form?id=" + d.id + "','95%', '95%','','提交,关闭')\" class=\"layui-btn layui-btn-xs layui-bg-green\" > 修改</a>";
+                        }
+                        if(d.candel != undefined && d.candel =="1")
+                        {
+                            xml+="<a href=\"${ctx}/sealApplyFor/sealApplyFor/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要作废该盖章申请吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\"> 作废</a>";
+                        }
+                        if(d.cancancel != undefined && d.cancancel =="1")
+                        {
+                            xml+="<a href=\"${ctx}/sealApplyFor/sealApplyFor/revoke?id=" + d.id + "&processInstanceId=" + d.procId + "&status="+d.status+"\" onclick=\"return confirmx('确认要撤回该盖章申请审批吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\" > 撤回</a>";
+                        }
+                        xml+="</div>"
+                        return xml;
+
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="sealApplyFor" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${sealApplyFor.id}"
+					,"projectId":"${sealApplyFor.projectId}"
+                    ,"projId":"${sealApplyFor.projectRecords.projectId}"
+                    ,"projName":"<c:out value="${sealApplyFor.projectRecords.projectName}" escapeXml="true"/>"
+					,"projMaster":"${sealApplyFor.projectRecords.leaderNameStr}"
+					,"contract":"${sealApplyFor.projectRecords.workContractInfo.name}"
+                    ,"conId":"${sealApplyFor.projectRecords.workContractInfo.id}"
+                    ,"projectReportNumber":"${sealApplyFor.projectRecords.projectReportNumber}"
+                    ,"client":"${sealApplyFor.projectRecords.workContractInfo.clientName}"
+                    ,"createDate":"<fmt:formatDate value="${sealApplyFor.createDate}" pattern="yyyy-MM-dd"/>"
+                    ,"status":"${sealApplyFor.status}"
+                    ,"procId":"${sealApplyFor.processInstanceId}"
+                    <c:choose><c:when test="${flag == '1' or fns:getUser().id == sealApplyFor.createBy.id}">
+                    <shiro:hasPermission name="sealApplyFor:sealApplyFor:del">
+						,"candel":<c:choose><c:when test="${(sealApplyFor.status == 1 or sealApplyFor.status == 3 or sealApplyFor.status == 4) && fns:getUser().id == sealApplyFor.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+					</shiro:hasPermission>
+
+					<shiro:hasPermission name="sealApplyFor:sealApplyFor:edit">
+						,"canedit1":<c:choose><c:when test="${sealApplyFor.status == 1 && fns:getUser().id == sealApplyFor.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+						,"canedit2":<c:choose><c:when test="${sealApplyFor.status == 4 && fns:getUser().id == sealApplyFor.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+						,"canrecall":<c:choose><c:when test="${sealApplyFor.status == 3 && fns:getUser().id == sealApplyFor.createBy.id}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+                    </shiro:hasPermission>
+
+
+                    ,"cancancel":<c:choose><c:when test="${sealApplyFor.status == 2 && fns:getUser().id == sealApplyFor.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>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+            // ,even: true
+            // ,height: 315
+        });
+		/*$("#delUser").bind("click",function () {
+			//获得表格CheckBox已经选中的行的信息
+			var checkList = layui.table.checkStatus('checkboxTable').data;
+			//定义数组存放批量删除的行的id
+			var listId = [];
+			//进行遍历所有选中行数据,拿出每一行的id存储到数组中
+			$.each(checkList, function (i, data) {
+				listId.push(data.id);
+			});
+			if (listId.length <= 0) {
+				layer.msg("请选择需要下载的项目信息", {icon: 2})
+			} else {
+				$("#searchForm").attr("action","${ctx}/ruralProject/ruralProjectRecords/exportAll?listId="+ listId);
+				$("#searchForm").submit();
+				return true;
+			}
+		});*/
+    })
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+</body>
+</html>

+ 426 - 0
src/main/webapp/webpage/modules/sealApplyFor/sealApplyForModify.jsp

@@ -0,0 +1,426 @@
+<%@ 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" src="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/layui/layuidown.js"></script>
+    <script src="${ctxStatic}/common/html/js/script.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+    <style>
+        #projectDesc-error{
+            left:0;
+            top:82px;
+        }
+        .layui-layer-dialog{
+            background: red;
+        }
+        td input{
+            margin-left:-10px !important;
+            height: 42px !important;
+        }
+        .disables {
+            pointer-events: none;
+        }
+        .notDisables {
+            pointer-events: all;
+        }
+        .forbidden{
+             background-color:#c2c2c2;
+         }
+
+        .notForbidden{
+             background-color:#3ca2e0;
+         }
+        .spanzj{
+            color:red;
+            font-size: 12px;
+            padding-left: 10px;
+        }
+    </style>
+    <script type="text/javascript">
+        var validateForm;
+        var isMasterClient = true;//是否是委托方
+        var clientCount = 0;
+        function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+
+
+                $("#inputForm").submit();
+                return true;
+            }else{
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            layui.use(['dropdown', 'util','form', 'layer'], function () {
+                var form = layui.form;
+                var dropdown = layui.dropdown
+                    ,util = layui.util
+                    ,layer = layui.layer
+                    ,$ = layui.jquery;
+            });
+            var radioVal ;
+            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);
+                    }
+                }
+            });
+        });
+
+        function setValue(obj){
+            if(location.href.includes("?")){
+                $("#upTable").load(location.href+"&projectId="+obj + " #upTable");
+            }else{
+                $("#upTable").load(location.href+"?projectId="+obj + " #upTable");
+            }
+        }
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <sys:message content="${message}"/>
+        <form:form id="inputForm" modelAttribute="sealApplyForInfo" action="${ctx}/sealApplyFor/sealApplyFor/saveAudit" method="post" class="form-horizontal layui-form">
+            <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 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"><span class="require-item">*</span>单位:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="sealCompany" value="0" title="东兴" <c:if test="${sealApplyForInfo.sealCompany=='0'}">checked</c:if>>
+                        <input type="radio" name="sealCompany" value="1" title="赣能" <c:if test="${sealApplyForInfo.sealCompany=='1'}">checked</c:if> >
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label ">盖章说明:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="remarks" placeholder="请输入盖章说明信息" id="remarks" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+                    </div>
+                </div>
+            </div>
+
+            <div id="upTable">
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>项目基础信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
+                    <div class="layui-input-block with-icon">
+                        <sys:gridselectcallproject url="${ctx}/sealApplyFor/sealApplyFor/selectprojectOnList" id="projectRecords" name="projectRecords.id"  value="${sealApplyForInfo.projectRecords.id}"  title="选择所属项目" labelName="projectRecords.projectName" cssStyle="background-color:#fff"
+                                                    labelValue="${sealApplyForInfo.projectRecords.projectName}" cssClass="form-control required layui-input"  fieldLabels="项目" fieldKeys="projectName" searchLabel="项目名称" searchKey="projectName" ></sys:gridselectcallproject>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">报告号:</label>
+                    <div class="layui-input-block">
+                        <input id="projectReportDataNumber" htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${sealApplyForInfo.projectRecords.projectReportNumber}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目编号:</label>
+                    <div class="layui-input-block">
+                        <input id="projectId" htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${sealApplyForInfo.projectRecords.projectId}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目所在地:</label>
+                    <div class="layui-input-block">
+                        <input id="area" htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.province}-${sealApplyForInfo.projectRecords.city}-${sealApplyForInfo.projectRecords.county}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">投资性质:</label>
+                    <div class="layui-input-block">
+                        <c:if test="${sealApplyForInfo.projectRecords.projectProperties==null}">
+                            <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input"/>
+                        </c:if>
+                        <c:forEach  items="${fns:getMainDictList('project_properties')}" var="v">
+                            <c:if test="${v.value==sealApplyForInfo.projectRecords.projectProperties}">
+                                <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${v.label}"/>
+                            </c:if>
+                        </c:forEach>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">建设地点:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1"  readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.projectSite}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.createBy.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">审核人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.reviewerPerson}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" id="officeName" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.officeName}"/>
+                    </div>
+                </div>
+                <%--<div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">项目归属部门:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" id="belongingDepartmentName" class="form-control layui-input" value="${sealApplyForInfo.belongingDepartmentName}"/>
+                    </div>
+                </div>--%>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目负责人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.projectMasterName}"/>
+                    </div>
+                </div>
+                <%--<div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">工程类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="engineeringType" disabled="true" style="background-color: #f1f1f1"  class="form-control simple-select">
+                            <form:options items="${engineeringInfo}" itemLabel="engineeringName" itemValue="id" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>--%>
+                <%--<div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">送审规模(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="submitScale" readonly="true" style="background-color: #f1f1f1" id="submitScale" maxlength="12" htmlEscape="false" placeholder="请输入送审规模" class="form-control layui-input number"/>
+                    </div>
+                </div>--%>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作开始日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date ash"  style="background-color: #f1f1f1" readonly="true" id="startDate" name="startDate" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作结束日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date "  style="background-color: #f1f1f1" readonly="true" id="endingDate" name="endingDate" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.createDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">项目类别:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true"  style="background-color: #f1f1f1" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.attachmentProjectSort}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">工程概况:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true"  style="background-color: #f1f1f1" maxlength="1000" class="form-control" >${sealApplyForInfo.projectRecords.projectDesc}</textarea>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">备注:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000"  style="background-color: #f1f1f1" class="form-control" >${sealApplyForInfo.projectRecords.remarks}</textarea>
+                    </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" >
+                    <table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">委托方</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanList">
+                        <c:forEach items="${sealApplyForInfo.projectRecords.workClientLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </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" >
+                    <table id="contentTable1" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">施工方单位名称</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workConstructionLinkmanList">
+                        <c:forEach items="${sealApplyForInfo.projectRecords.workConstructionLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div></div>
+
+
+
+
+
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+        <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="${sealApplyForInfo.act.procInsId}"/>
+                <act:histoicFlow procInsId="${sealApplyForInfo.act.procInsId}"/>
+            </div>
+        </div>
+    </div>
+</div>
+<script>
+    function openBill3(title,url,width,height,target,formId){
+
+        var frameIndex = parent.layer.getFrameIndex(window.name);
+        var urls = url+"&index="+frameIndex;
+        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,
+            skin:"two-btns",
+            maxmin: false, //开启最大化最小化按钮
+            content: urls ,
+            btn: ['确定','关闭'],
+            yes: 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中展示
+                inputForm.attr("action","${ctx}/ruralProject/ruralProjectRecords/linkManSave");//表单提交成功后,从服务器返回的url在当前tab中展示
+                var $document = iframeWin.contentWindow.document;
+
+                formSubmit3($document,formId,index);
+            },
+            cancel: function(index){
+            }
+        });
+
+
+        function formSubmit3($document,inputForm,index){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        var d = data;
+                        if(d.msg == "false"){
+                            parent.layer.msg("保存客户信息异常!",{icon:2});
+                            return false;
+                        }
+
+                        addRow("#workConstructionLinkmanList",workConstructionLinkmanRowIdx,workConstructionLinkmanTpl);
+                        workConstructionLinkmanRowIdx=workConstructionLinkmanRowIdx+1;
+                        var row = workClientLinkmanRowIdx;
+
+                        $("#"+"workConstructionLinkmanList"+row+"_id").val(d.id);
+                        $("#"+"workConstructionLinkmanList"+row+"_clientId_id").val(d.clientId);
+                        $("#"+"workConstructionLinkmanList"+row+"_clientName").val(d.clientName);
+                        $("#"+"workConstructionLinkmanList"+row+"_name").val(d.linkName);
+                        $("#"+"workConstructionLinkmanList"+row+"_linkMobile").val(d.linkMobile);
+                        $("#"+"workConstructionLinkmanList"+row+"_linkPhone").val(d.linkPhone);
+                        parent.layer.msg(d.str,{icon:1});
+                        top.layer.close(index)
+                    }
+                });
+            }
+        }
+    }
+</script>
+</body>
+</html>

+ 291 - 0
src/main/webapp/webpage/modules/sealApplyFor/sealApplyForView.jsp

@@ -0,0 +1,291 @@
+<%@ 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" src="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/layui/layuidown.js"></script>
+    <script src="${ctxStatic}/common/html/js/script.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/layuidown.css"/>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+    <style>
+        #projectDesc-error{
+            left:0;
+            top:82px;
+        }
+        .layui-layer-dialog{
+            background: red;
+        }
+        td input{
+            margin-left:-10px !important;
+            height: 42px !important;
+        }
+        .disables {
+            pointer-events: none;
+        }
+        .notDisables {
+            pointer-events: all;
+        }
+        .forbidden{
+             background-color:#c2c2c2;
+         }
+
+        .notForbidden{
+             background-color:#3ca2e0;
+         }
+        .spanzj{
+            color:red;
+            font-size: 12px;
+            padding-left: 10px;
+        }
+    </style>
+    <script type="text/javascript">
+        var validateForm;
+        var isMasterClient = true;//是否是委托方
+        var clientCount = 0;
+        function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+        }
+        $(document).ready(function() {
+            layui.use(['dropdown', 'util','form', 'layer'], function () {
+                var form = layui.form;
+                var dropdown = layui.dropdown
+                    ,util = layui.util
+                    ,layer = layui.layer
+                    ,$ = layui.jquery;
+            });
+            var radioVal ;
+            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);
+                    }
+                }
+            });
+        });
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <sys:message content="${message}"/>
+        <form:form id="inputForm" modelAttribute="sealApplyForInfo" action="" method="post" class="form-horizontal layui-form">
+            <form:hidden path="id"/>
+            <input type="hidden" id="flagFile" value="">
+
+            <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"><span class="require-item">*</span>单位:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="sealCompany" value="0" title="东兴" disabled <c:if test="${sealApplyForInfo.sealCompany=='0'}">checked</c:if>>
+                        <input type="radio" name="sealCompany" value="1" title="赣能" disabled <c:if test="${sealApplyForInfo.sealCompany=='1'}">checked</c:if> >
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">盖章说明:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000"  style="background-color: #f1f1f1" class="form-control" >${sealApplyForInfo.remarks}</textarea>
+                    </div>
+                </div>
+            </div>
+
+            <div id="upTable">
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>项目基础信息</h2></div>
+
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目名称:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${sealApplyForInfo.projectRecords.projectName}"/>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">报告号:</label>
+                    <div class="layui-input-block">
+                        <input id="projectReportDataNumber" htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${sealApplyForInfo.projectRecords.projectReportNumber}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目编号:</label>
+                    <div class="layui-input-block">
+                        <input id="projectId" htmlEscape="false"  readonly="true" class="form-control layui-input" style="background-color: #f1f1f1" value="${sealApplyForInfo.projectRecords.projectId}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目所在地:</label>
+                    <div class="layui-input-block">
+                        <input id="area" htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.province}-${sealApplyForInfo.projectRecords.city}-${sealApplyForInfo.projectRecords.county}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">投资性质:</label>
+                    <div class="layui-input-block">
+                        <c:if test="${sealApplyForInfo.projectRecords.projectProperties==null}">
+                            <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input"/>
+                        </c:if>
+                        <c:forEach  items="${fns:getMainDictList('project_properties')}" var="v">
+                            <c:if test="${v.value==sealApplyForInfo.projectRecords.projectProperties}">
+                                <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${v.label}"/>
+                            </c:if>
+                        </c:forEach>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">建设地点:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1"  readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.projectSite}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.createBy.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">审核人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.reviewerPerson}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">所属部门:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" id="officeName" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.officeName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">项目负责人:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.projectMasterName}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作开始日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date ash"  style="background-color: #f1f1f1" readonly="true" id="startDate" name="startDate" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.startDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工作结束日期:</label>
+                    <div class="layui-input-block">
+                        <input class="laydate-icondate form-control layui-input layer-date "  style="background-color: #f1f1f1" readonly="true" id="endingDate" name="endingDate" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.endingDate}" pattern="yyyy-MM-dd"/>">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">创建日期:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false"  style="background-color: #f1f1f1" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${sealApplyForInfo.projectRecords.createDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">项目类别:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true"  style="background-color: #f1f1f1" class="form-control layui-input" value="${sealApplyForInfo.projectRecords.attachmentProjectSort}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">工程概况:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true"  style="background-color: #f1f1f1" maxlength="1000" class="form-control" >${sealApplyForInfo.projectRecords.projectDesc}</textarea>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6 with-textarea">
+                    <label class="layui-form-label">备注:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000"  style="background-color: #f1f1f1" class="form-control" >${sealApplyForInfo.projectRecords.remarks}</textarea>
+                    </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" >
+                    <table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">委托方</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanList">
+                        <c:forEach items="${sealApplyForInfo.projectRecords.workClientLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </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" >
+                    <table id="contentTable1" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="25%">施工方单位名称</th>
+                            <th width="25%">联系人姓名</th>
+                            <th width="25%">联系方式1</th>
+                            <th width="25%">联系方式2</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workConstructionLinkmanList">
+                        <c:forEach items="${sealApplyForInfo.projectRecords.workConstructionLinkmanList}" var="info" varStatus="index">
+                            <tr>
+                                <td >
+                                        ${info.clientId.name}
+                                </td>
+                                <td>
+                                        ${info.name}
+                                </td>
+                                <td>
+                                        ${info.linkPhone}
+                                </td>
+                                <td>
+                                        ${info.linkMobile}
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div></div>
+
+
+
+
+
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+</body>
+</html>

+ 1 - 1
src/main/webapp/webpage/modules/sys/gridReimburProjectList.jsp

@@ -106,7 +106,7 @@
 									<td class="codelabel">${obj.projectName}</td>
 									<td class="codelabel">${obj.projectId}</td>
 									<td class="codenumber">${obj.reportData.number}</td>
-									<td class="codelabel">${obj.workContractInfo.client.name}</td>
+									<td class="codelabel">${obj.workContractInfo.clientName}</td>
 								</tr>
 							</c:forEach>
 						</c:when>