|  | @@ -1,32 +1,63 @@
 | 
	
		
			
				|  |  |  package com.jeeplus.modules.projectrecord.service;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.google.common.collect.Maps;
 | 
	
		
			
				|  |  |  import com.jeeplus.common.persistence.Page;
 | 
	
		
			
				|  |  |  import com.jeeplus.common.service.CrudService;
 | 
	
		
			
				|  |  |  import com.jeeplus.common.utils.Collections3;
 | 
	
		
			
				|  |  |  import com.jeeplus.common.utils.MenuStatusEnum;
 | 
	
		
			
				|  |  | -import com.jeeplus.modules.projectConstruction.entity.ConstructionContract;
 | 
	
		
			
				|  |  | +import com.jeeplus.common.utils.StringUtils;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.act.service.ActTaskService;
 | 
	
		
			
				|  |  |  import com.jeeplus.modules.projectType.dao.ProjectTypeDao;
 | 
	
		
			
				|  |  | -import com.jeeplus.modules.projectType.entity.ProjectType;
 | 
	
		
			
				|  |  | -import com.jeeplus.modules.projectrecord.dao.ProjectFollowReportDao;
 | 
	
		
			
				|  |  | -import com.jeeplus.modules.projectrecord.dao.ProjectImplementEarlyDao;
 | 
	
		
			
				|  |  | -import com.jeeplus.modules.projectrecord.dao.WorkProjectUserDao;
 | 
	
		
			
				|  |  | -import com.jeeplus.modules.projectrecord.entity.ProjectAttachmentInfo;
 | 
	
		
			
				|  |  | -import com.jeeplus.modules.projectrecord.entity.ProjectFollowReport;
 | 
	
		
			
				|  |  | -import com.jeeplus.modules.projectrecord.entity.ProjectImplementEarly;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectcontentinfo.dao.ProjectBasedDataDao;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectcontentinfo.dao.ProjectReportDataDao;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectcontentinfo.dao.ProjectcontentinfoDao;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectrecord.dao.*;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectrecord.dao.monthly.MonthlyConsultationReportDao;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectrecord.entity.*;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectreportnum.dao.ProjectReportNumDao;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.projectreportnum.entity.ReportNum;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.serialnum.service.SerialNumTplService;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.sys.dao.WorkattachmentDao;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.sys.entity.Office;
 | 
	
		
			
				|  |  |  import com.jeeplus.modules.sys.entity.User;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.sys.entity.Workattachment;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.sys.service.OfficeService;
 | 
	
		
			
				|  |  |  import com.jeeplus.modules.sys.utils.DictUtils;
 | 
	
		
			
				|  |  |  import com.jeeplus.modules.sys.utils.UserUtils;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.workactivity.dao.WorkActivityProcessDao;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.workactivity.entity.Activity;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.workactivity.entity.WorkActivityProcess;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.workactivity.service.ActivityService;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.workactivity.service.WorkActivityProcessService;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.workactivitymenu.entity.WorkActivityMenu;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.workactivitymenu.service.WorkActivityMenuService;
 | 
	
		
			
				|  |  |  import com.jeeplus.modules.workclientinfo.dao.WorkClientAttachmentDao;
 | 
	
		
			
				|  |  | -import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.workclientinfo.dao.WorkClientLinkmanDao;
 | 
	
		
			
				|  |  |  import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.workclientinfo.service.WorkClientInfoService;
 | 
	
		
			
				|  |  | +import com.jeeplus.modules.workcontractinfo.dao.WorkContractInfoDao;
 | 
	
		
			
				|  |  |  import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
 | 
	
		
			
				|  |  |  import com.jeeplus.modules.workcontractinfo.service.WorkContractInfoService;
 | 
	
		
			
				|  |  | -import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +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.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import java.util.ArrayList;
 | 
	
		
			
				|  |  | +import java.util.HashMap;
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * 项目实施前期service
 | 
	
	
		
			
				|  | @@ -46,7 +77,35 @@ public class ProjectImplementEarlyService extends CrudService<ProjectImplementEa
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private ProjectFollowReportDao projectFollowReportDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | -    private WorkClientAttachmentDao workClientAttachmentDao;
 | 
	
		
			
				|  |  | +    private ProjectReportNumDao projectReportNumDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ProjectContentDataService projectContentDataService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private MonthlyConsultationReportDao monthlyConsultationReportDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private WorkattachmentDao workattachmentDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ProjectBasedDataDao projectBasedDataDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private IdentityService identityService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private OfficeService officeService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private WorkActivityMenuService workActivityMenuService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private RuntimeService runtimeService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private WorkActivityProcessService workActivityProcessService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private WorkProjectNotifyService workProjectNotifyService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    protected HistoryService historyService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ActTaskService actTaskService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ActivityService activityService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private WorkActivityProcessDao workActivityProcessDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public ProjectImplementEarly get(String id) {
 | 
	
		
			
				|  |  |          return super.get(id);
 | 
	
	
		
			
				|  | @@ -93,39 +152,622 @@ public class ProjectImplementEarlyService extends CrudService<ProjectImplementEa
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Transactional(readOnly = false)
 | 
	
		
			
				|  |  | -    public void updateFollow(ProjectFollowReport projectFollowReport) {
 | 
	
		
			
				|  |  | +    public void updateFollow(ProjectFollowReport projectFollowReport) throws Exception {
 | 
	
		
			
				|  |  | +        //获取原有的审核数据
 | 
	
		
			
				|  |  | +        Integer oldStatus = projectFollowReport.getStatus();
 | 
	
		
			
				|  |  | +        projectFollowReport.setStatus(ProjectStatusEnum.IN_APRL.getValue());
 | 
	
		
			
				|  |  |          projectFollowReportDao.update(projectFollowReport);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ProjectContentData projectContentData = projectFollowReport.getProjectContentData();
 | 
	
		
			
				|  |  | +        //保存依据资料信息
 | 
	
		
			
				|  |  | +        if(projectContentData.getProjectBasedDataList()!=null&&!projectContentData.getProjectBasedDataList().isEmpty()){
 | 
	
		
			
				|  |  | +            for (ProjectBasedData data:projectContentData.getProjectBasedDataList()) {
 | 
	
		
			
				|  |  | +                if (data.getDelFlag().equals("0")){
 | 
	
		
			
				|  |  | +                    List<ProjectBasedData> projectBasedData = new ArrayList<>();
 | 
	
		
			
				|  |  | +                    projectBasedData.add(data);
 | 
	
		
			
				|  |  | +                    projectContentDataService.saveBasedData(projectFollowReport.getId(),projectBasedData);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (projectFollowReport.getWorkAttachments()!=null && !projectFollowReport.getWorkAttachments().isEmpty()) {
 | 
	
		
			
				|  |  | +            //保存附件信息
 | 
	
		
			
				|  |  | +            for (Workattachment workattachment : projectFollowReport.getWorkAttachments()) {
 | 
	
		
			
				|  |  | +                if (workattachment.getId() == null) {
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (workattachment.DEL_FLAG_NORMAL.equals(workattachment.getDelFlag())) {
 | 
	
		
			
				|  |  | +                    workattachment.setAttachmentId(projectFollowReport.getId());
 | 
	
		
			
				|  |  | +                    workattachment.setAttachmentUser(UserUtils.getUser().getId());
 | 
	
		
			
				|  |  | +                    if (StringUtils.isBlank(workattachment.getId()) || "null".equals(workattachment.getId())) {
 | 
	
		
			
				|  |  | +                        workattachment.preInsert();
 | 
	
		
			
				|  |  | +                        workattachmentDao.insert(workattachment);
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        workattachment.preUpdate();
 | 
	
		
			
				|  |  | +                        workattachmentDao.update(workattachment);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    workattachmentDao.delete(workattachment);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //启动审批流程
 | 
	
		
			
				|  |  | +        if (projectFollowReport.getStatus()== ProjectStatusEnum.IN_APRL.getValue() &&(oldStatus==null||ProjectStatusEnum.REJECTED.getValue()!=oldStatus)) {
 | 
	
		
			
				|  |  | +            this.startAudit(projectFollowReport,projectFollowReport.getProcessInstanceId());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Transactional(readOnly = false)
 | 
	
		
			
				|  |  | -    public void insertFollow(ProjectFollowReport projectFollowReport) {
 | 
	
		
			
				|  |  | +    public void insertFollow(ProjectFollowReport projectFollowReport) throws Exception {
 | 
	
		
			
				|  |  | +        projectFollowReport.setStatus(ProjectStatusEnum.IN_APRL.getValue());
 | 
	
		
			
				|  |  | +        //查询项目报告号前缀
 | 
	
		
			
				|  |  | +        String projectNumPrefix = monthlyConsultationReportDao.getProjectNum(projectFollowReport.getProject().getId());
 | 
	
		
			
				|  |  | +        projectNumPrefix += "-ZX-";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //获取最后一个报告号数据信息
 | 
	
		
			
				|  |  | +        ReportNum reportNum = new ReportNum();
 | 
	
		
			
				|  |  | +        reportNum.setNum(projectNumPrefix);
 | 
	
		
			
				|  |  | +        ReportNum lastReportNum = projectReportNumDao.getLastReportNum(reportNum);
 | 
	
		
			
				|  |  | +        if (null != lastReportNum){
 | 
	
		
			
				|  |  | +            lastReportNum.getNum().lastIndexOf("-");
 | 
	
		
			
				|  |  | +            //截取最后四位流水号
 | 
	
		
			
				|  |  | +            String substring = lastReportNum.getNum().substring(lastReportNum.getNum().lastIndexOf("-")+1, lastReportNum.getNum().length());
 | 
	
		
			
				|  |  | +            //转换为数字并递增
 | 
	
		
			
				|  |  | +            Integer substringInteger = Integer.parseInt(substring)+1;
 | 
	
		
			
				|  |  | +            //生成新的流水号
 | 
	
		
			
				|  |  | +            StringBuffer newSerialNum = new StringBuffer();
 | 
	
		
			
				|  |  | +            for(int x = 0; x < (4 - substringInteger.toString().length()); x++) {
 | 
	
		
			
				|  |  | +                newSerialNum.append("0");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            newSerialNum.append(substringInteger);
 | 
	
		
			
				|  |  | +            reportNum.setNum(reportNum.getNum()+newSerialNum);
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +            reportNum.setNum(reportNum.getNum()+"0001");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        reportNum.preInsert();
 | 
	
		
			
				|  |  | +        projectReportNumDao.insert(reportNum);
 | 
	
		
			
				|  |  | +        projectFollowReport.setProjectFollowId(reportNum.getNum());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          projectFollowReport.preInsert();
 | 
	
		
			
				|  |  |          projectFollowReportDao.insertFollow(projectFollowReport);
 | 
	
		
			
				|  |  | +        //保存月报基本信息
 | 
	
		
			
				|  |  | +        ProjectContentData projectContentData = projectFollowReport.getProjectContentData();
 | 
	
		
			
				|  |  | +        //保存依据资料信息
 | 
	
		
			
				|  |  | +        if(projectContentData.getProjectBasedDataList()!=null&&!projectContentData.getProjectBasedDataList().isEmpty()){
 | 
	
		
			
				|  |  | +            for (ProjectBasedData data:projectContentData.getProjectBasedDataList()) {
 | 
	
		
			
				|  |  | +                if (data.getDelFlag().equals("0")){
 | 
	
		
			
				|  |  | +                    List<ProjectBasedData> projectBasedData = new ArrayList<>();
 | 
	
		
			
				|  |  | +                    projectBasedData.add(data);
 | 
	
		
			
				|  |  | +                    projectContentDataService.saveBasedData(projectFollowReport.getId(),projectBasedData);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if (projectFollowReport.getWorkAttachments()!=null && !projectFollowReport.getWorkAttachments().isEmpty()) {
 | 
	
		
			
				|  |  |              //保存附件信息
 | 
	
		
			
				|  |  | -            for (WorkClientAttachment workClientAttachment : projectFollowReport.getWorkAttachments()) {
 | 
	
		
			
				|  |  | -                if (org.apache.commons.lang3.StringUtils.isBlank(workClientAttachment.getId())&& org.apache.commons.lang3.StringUtils.isNotBlank(workClientAttachment.getAttachmentId())) {
 | 
	
		
			
				|  |  | +            for (Workattachment workattachment : projectFollowReport.getWorkAttachments()) {
 | 
	
		
			
				|  |  | +                if (workattachment.getId() == null) {
 | 
	
		
			
				|  |  |                      continue;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                if (org.apache.commons.lang3.StringUtils.isBlank(workClientAttachment.getId())&& org.apache.commons.lang3.StringUtils.isBlank(workClientAttachment.getUrl())) {
 | 
	
		
			
				|  |  | -                    continue;
 | 
	
		
			
				|  |  | +                if (workattachment.DEL_FLAG_NORMAL.equals(workattachment.getDelFlag())) {
 | 
	
		
			
				|  |  | +                    workattachment.setAttachmentId(projectFollowReport.getId());
 | 
	
		
			
				|  |  | +                    workattachment.setAttachmentUser(UserUtils.getUser().getId());
 | 
	
		
			
				|  |  | +                    if (StringUtils.isBlank(workattachment.getId()) || "null".equals(workattachment.getId())) {
 | 
	
		
			
				|  |  | +                        workattachment.preInsert();
 | 
	
		
			
				|  |  | +                        workattachmentDao.insert(workattachment);
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        workattachment.preUpdate();
 | 
	
		
			
				|  |  | +                        workattachmentDao.update(workattachment);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    workattachmentDao.delete(workattachment);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //获取原有的审核数据
 | 
	
		
			
				|  |  | +        Integer oldStatus = projectFollowReport.getStatus();
 | 
	
		
			
				|  |  | +        //启动审批流程
 | 
	
		
			
				|  |  | +        if (projectFollowReport.getStatus()== ProjectStatusEnum.IN_APRL.getValue() &&(oldStatus==null||ProjectStatusEnum.REJECTED.getValue()!=oldStatus)) {
 | 
	
		
			
				|  |  | +            this.startAudit(projectFollowReport,projectFollowReport.getProcessInstanceId());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 启动审批流程
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param projectFollowReport
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    private void startAudit(ProjectFollowReport projectFollowReport, String processInstanceId) throws Exception {
 | 
	
		
			
				|  |  | +        try{
 | 
	
		
			
				|  |  | +            Map<String, Object> variables = new HashMap<String, Object>();
 | 
	
		
			
				|  |  | +            identityService.setAuthenticatedUserId(projectFollowReport.getCurrentUser().getId());
 | 
	
		
			
				|  |  | +            Office office = projectFollowReport.getProject().getOffice();
 | 
	
		
			
				|  |  | +            office = officeService.get(office.getId());
 | 
	
		
			
				|  |  | +            projectFollowReport.getProject().setOffice(office);
 | 
	
		
			
				|  |  | +            String contentStr = "咨询报告编号:"+projectFollowReport.getProjectFollowId()+",咨询报告名称:"+ projectFollowReport.getProjectFollowName()+",创建人:"+projectFollowReport.getCreateBy().getName();
 | 
	
		
			
				|  |  | +            String titleStr = "咨询报告名称:"+ projectFollowReport.getProjectFollowName();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            String businessKey = projectFollowReport.getId();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            WorkActivityMenu workActivityMenu = workActivityMenuService.findByParentAndOffice("7854872f45b84acd893010e66a3db2c8", office);
 | 
	
		
			
				|  |  | +            // 启动流程
 | 
	
		
			
				|  |  | +            String processType = workActivityMenu.getProcessType();
 | 
	
		
			
				|  |  | +            StringBuffer buffer = new StringBuffer();
 | 
	
		
			
				|  |  | +            Activity activity = new Activity();
 | 
	
		
			
				|  |  | +            WorkProjectNotify workProjectNotify = UtilNotify
 | 
	
		
			
				|  |  | +                    .saveNotify(projectFollowReport.getId(),
 | 
	
		
			
				|  |  | +                            null,
 | 
	
		
			
				|  |  | +                            projectFollowReport.getProject().getCompany().getId(),
 | 
	
		
			
				|  |  | +                            titleStr,
 | 
	
		
			
				|  |  | +                            contentStr,
 | 
	
		
			
				|  |  | +                            "139",
 | 
	
		
			
				|  |  | +                            "0",
 | 
	
		
			
				|  |  | +                            "待审批",
 | 
	
		
			
				|  |  | +                            ""
 | 
	
		
			
				|  |  | +                    );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            List<User> users = new ArrayList<>();
 | 
	
		
			
				|  |  | +            List<User> bmzrs = UserUtils.getByRoleActivityEnname("bzshb",3,office.getId(),"4",projectFollowReport.getCreateBy());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            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",projectFollowReport.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",projectFollowReport.getCreateBy());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    //人员审批
 | 
	
		
			
				|  |  | +                    if (StringUtils.isNotBlank(activity.getUser().getId())) {
 | 
	
		
			
				|  |  | +                        users.add(activity.getUser());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                workProjectNotify.setId("");
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                if (bmzrs==null||bmzrs.size()==0){
 | 
	
		
			
				|  |  | +                    throw new Exception("流程审批人不能为空,角色部门负责人下无用户,请联系管理员!");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                processType = "projectFollow";
 | 
	
		
			
				|  |  | +                variables.put("applyUserId", projectFollowReport.getCreateBy().getId());
 | 
	
		
			
				|  |  | +                variables.put("bmzrCount",bmzrs.size());
 | 
	
		
			
				|  |  | +                variables.put("bmzrList",bmzrs);
 | 
	
		
			
				|  |  | +                users.addAll(bmzrs);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            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","139");
 | 
	
		
			
				|  |  | +                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", "审批单:" + projectFollowReport.getProjectFollowName());//设置标题;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            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(bmzrs,processInstance.getId(),1,1);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            projectFollowReport.setProcessInstanceId(processInstance.getId());
 | 
	
		
			
				|  |  | +            projectFollowReport.setStatus(ProjectStatusEnum.IN_APRL.getValue());
 | 
	
		
			
				|  |  | +            projectFollowReportDao.updateProcessIdAndStatus(projectFollowReport);
 | 
	
		
			
				|  |  | +        }catch (Exception e){
 | 
	
		
			
				|  |  | +            logger.error("启动审批流程异常:",e);
 | 
	
		
			
				|  |  | +            throw e;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Transactional(readOnly = false)
 | 
	
		
			
				|  |  | +    public String auditSave(ProjectFollowReport projectFollowReport,List<User> auditUsers) throws Exception {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        int projectStatus = projectFollowReport.getStatus();
 | 
	
		
			
				|  |  | +        String taskDefKey = projectFollowReport.getAct().getTaskDefKey();
 | 
	
		
			
				|  |  | +        if (!"modifyApply".equals(taskDefKey) && !taskDefKey.contains("audit") ) {
 | 
	
		
			
				|  |  | +            actTaskService.claim(projectFollowReport.getAct().getTaskId(), UserUtils.getUser().getId());
 | 
	
		
			
				|  |  | +            List<User> leaders = projectFollowReport.getProjectLeaders();
 | 
	
		
			
				|  |  | +        }else {
 | 
	
		
			
				|  |  | +            projectFollowReport.getAct().setFlag("yes");
 | 
	
		
			
				|  |  | +            updateFollow(projectFollowReport);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        String comment = "";
 | 
	
		
			
				|  |  | +        if ( projectStatus == ProjectStatusEnum.REJECTED.getValue()) {
 | 
	
		
			
				|  |  | +            comment = ("yes".equals(projectFollowReport.getAct().getFlag())?"[重新申请] ":"[已撤销] ");
 | 
	
		
			
				|  |  | +        }else {
 | 
	
		
			
				|  |  | +            comment = ("yes".equals(projectFollowReport.getAct().getFlag())?"[同意] ":"[驳回] ")+projectFollowReport.getAct().getComment();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (!"yes".equals(projectFollowReport.getAct().getFlag())) {
 | 
	
		
			
				|  |  | +            projectFollowReport.setStatus(ProjectStatusEnum.REJECTED.getValue());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        User createUser = UserUtils.get(projectFollowReport.getCreateBy().getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Map<String, Object> vars = Maps.newHashMap();
 | 
	
		
			
				|  |  | +        String notifyRole = "";
 | 
	
		
			
				|  |  | +        //业务逻辑对应的条件表达式
 | 
	
		
			
				|  |  | +        User user = null;
 | 
	
		
			
				|  |  | +        List<Activity> activitieList = activityService.getByProcessInstanceId(projectFollowReport.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(projectFollowReport.getProcessInstanceId());
 | 
	
		
			
				|  |  | +        List<WorkActivityProcess> workActivityProcesses = workActivityProcessService.findList(selectProcess);
 | 
	
		
			
				|  |  | +        List<Activity> activities = workActivityMenu.getActivities();
 | 
	
		
			
				|  |  | +        String  taskCount = "1";
 | 
	
		
			
				|  |  | +        String enname = "";
 | 
	
		
			
				|  |  | +        Office office = projectFollowReport.getProject().getOffice();
 | 
	
		
			
				|  |  | +        office = officeService.get(office.getId());
 | 
	
		
			
				|  |  | +        projectFollowReport.getProject().setOffice(office);
 | 
	
		
			
				|  |  | +        String notifyStr = "项目编号:"+projectFollowReport.getProjectFollowId()+",项目名称:"+ projectFollowReport.getProjectFollowName();
 | 
	
		
			
				|  |  | +        String str = notifyStr+",创建人:"+projectFollowReport.getCreateBy().getName()+",所属部门:"+projectFollowReport.getProject().getOffice().getName();
 | 
	
		
			
				|  |  | +        String titleStr = "项目名称:"+ projectFollowReport.getProjectFollowName();
 | 
	
		
			
				|  |  | +        int key = 0;
 | 
	
		
			
				|  |  | +        if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("projectFollow")) {
 | 
	
		
			
				|  |  | +            key = 1;
 | 
	
		
			
				|  |  | +            for (int i = 0; i < workActivityProcesses.size(); i++) {
 | 
	
		
			
				|  |  | +                WorkActivityProcess activityProcess = workActivityProcesses.get(i);
 | 
	
		
			
				|  |  | +                if (taskDefKey.equals("modifyApply")) {
 | 
	
		
			
				|  |  | +                    taskCount = "0";
 | 
	
		
			
				|  |  | +                    workActivityProcess.setId("");
 | 
	
		
			
				|  |  | +                    workActivityProcess.setCount(0);
 | 
	
		
			
				|  |  | +                    if (!"yes".equals(projectFollowReport.getAct().getFlag())) {
 | 
	
		
			
				|  |  | +                        projectFollowReport.setStatus(ProjectStatusEnum.RECALL.getValue());
 | 
	
		
			
				|  |  | +                        workActivityProcess.setIsApproval("2");
 | 
	
		
			
				|  |  | +                        vars.put("pass", false);
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        vars.put("pass", true);
 | 
	
		
			
				|  |  | +                        workActivityProcess.setIsApproval("1");
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    taskCount = activityProcess.getCount()+"";
 | 
	
		
			
				|  |  | +                    workActivityProcess = activityProcess;
 | 
	
		
			
				|  |  | +                    if (!workActivityProcess.getIsApproval().equals("0")) {
 | 
	
		
			
				|  |  | +                        workActivityProcess.setId("");
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    for (Activity activity : activities) {
 | 
	
		
			
				|  |  | +                        if (activity.getCount() == activityProcess.getCount()) {
 | 
	
		
			
				|  |  | +                            notifyRole = activity.getName();
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (!"yes".equals(projectFollowReport.getAct().getFlag())) {
 | 
	
		
			
				|  |  | +                        notifyRole = "调整项目";
 | 
	
		
			
				|  |  | +                        projectFollowReport.setStatus(ProjectStatusEnum.REJECTED.getValue());
 | 
	
		
			
				|  |  | +                        workActivityProcess.setIsApproval("2");
 | 
	
		
			
				|  |  | +                        String returnBack = "-1";
 | 
	
		
			
				|  |  | +                        for (Activity activity : activities) {
 | 
	
		
			
				|  |  | +                            if (activity.getCount() == activityProcess.getCount()) {
 | 
	
		
			
				|  |  | +                                returnBack = activity.getReturnBack();
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        if (returnBack.equals("0")) {
 | 
	
		
			
				|  |  | +                            workActivityProcess.setId("");
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        vars.put("pass", false);
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        workActivityProcess.setIsApproval("1");
 | 
	
		
			
				|  |  | +                        vars.put("pass", true);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                if (WorkClientAttachment.DEL_FLAG_NORMAL.equals(workClientAttachment.getDelFlag())) {
 | 
	
		
			
				|  |  | -                    workClientAttachment.setAttachmentId(projectFollowReport.getId());
 | 
	
		
			
				|  |  | -                    workClientAttachment.setAttachmentFlag("134");
 | 
	
		
			
				|  |  | -                    workClientAttachment.setAttachmentUser(UserUtils.getUser().getId());
 | 
	
		
			
				|  |  | -                    if (StringUtils.isBlank(workClientAttachment.getId()) || "null".equals(workClientAttachment.getId())) {
 | 
	
		
			
				|  |  | -                        workClientAttachment.preInsert();
 | 
	
		
			
				|  |  | -                        workClientAttachmentDao.insert(workClientAttachment);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }else {
 | 
	
		
			
				|  |  | +            workActivityMenu.setProcessType("projectFollow");
 | 
	
		
			
				|  |  | +            for (int i = 0; i < workActivityProcesses.size(); i++) {
 | 
	
		
			
				|  |  | +                WorkActivityProcess activityProcess = workActivityProcesses.get(i);
 | 
	
		
			
				|  |  | +                String count = String.valueOf(activityProcess.getCount());
 | 
	
		
			
				|  |  | +                workActivityProcess = activityProcess;
 | 
	
		
			
				|  |  | +                if (!workActivityProcess.getIsApproval().equals("0")) {
 | 
	
		
			
				|  |  | +                    workActivityProcess.setId("");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                // 审核环节
 | 
	
		
			
				|  |  | +                if ("bmzr".equals(taskDefKey) && "1".equals(count)) {
 | 
	
		
			
				|  |  | +                    taskCount = count;
 | 
	
		
			
				|  |  | +                    if ("yes".equals(projectFollowReport.getAct().getFlag())) {
 | 
	
		
			
				|  |  | +                        workActivityProcess.setIsApproval("1");
 | 
	
		
			
				|  |  | +                        vars.put("pass", true);
 | 
	
		
			
				|  |  | +                        notifyRole = "审批通过";
 | 
	
		
			
				|  |  |                      } else {
 | 
	
		
			
				|  |  | -                        workClientAttachment.preUpdate();
 | 
	
		
			
				|  |  | -                        workClientAttachmentDao.update(workClientAttachment);
 | 
	
		
			
				|  |  | +                        workActivityProcess.setIsApproval("2");
 | 
	
		
			
				|  |  | +                        vars.put("pass", false);
 | 
	
		
			
				|  |  | +                        user = createUser;
 | 
	
		
			
				|  |  | +                        notifyRole = "调整项目";
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +                } else if ("modifyApply".equals(taskDefKey) && "0".equals(count)) {
 | 
	
		
			
				|  |  | +                    notifyRole = "总工审批";
 | 
	
		
			
				|  |  | +                    taskCount = "0";
 | 
	
		
			
				|  |  | +                    enname = "bmzr";
 | 
	
		
			
				|  |  | +                    workActivityProcess.setCount(0);
 | 
	
		
			
				|  |  | +                    if("yes".equals(projectFollowReport.getAct().getFlag())){
 | 
	
		
			
				|  |  | +                        workActivityProcess.setIsApproval("1");
 | 
	
		
			
				|  |  | +                        vars.put("pass",true);
 | 
	
		
			
				|  |  | +                    }else{
 | 
	
		
			
				|  |  | +                        workActivityProcess.setIsApproval("2");
 | 
	
		
			
				|  |  | +                        projectFollowReport.setStatus(ProjectStatusEnum.RECALL.getValue());
 | 
	
		
			
				|  |  | +                        vars.put("pass",false);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount,projectFollowReport.getProcessInstanceId(),taskDefKey,"modifyApply",projectFollowReport.getAct().getFlag(),comment, activities);
 | 
	
		
			
				|  |  | +        // 设置意见
 | 
	
		
			
				|  |  | +        projectFollowReport.getAct().setComment(comment);
 | 
	
		
			
				|  |  | +        projectFollowReport.preUpdate();
 | 
	
		
			
				|  |  | +        // 提交流程任务
 | 
	
		
			
				|  |  | +        actTaskService.complete(projectFollowReport.getAct().getTaskId(), projectFollowReport.getAct().getProcInsId(), projectFollowReport.getAct().getComment(), vars);
 | 
	
		
			
				|  |  | +        boolean state = actTaskService.isProcessEnd(projectFollowReport.getAct().getProcInsId());
 | 
	
		
			
				|  |  | +        List<User> users = new ArrayList<>();
 | 
	
		
			
				|  |  | +        List<User> userList = new ArrayList<>();
 | 
	
		
			
				|  |  | +        if(!state) {
 | 
	
		
			
				|  |  | +            users.add(projectFollowReport.getCreateBy());
 | 
	
		
			
				|  |  | +            if ("yes".equals(projectFollowReport.getAct().getFlag())) {
 | 
	
		
			
				|  |  | +                projectFollowReport.setStatus(ProjectStatusEnum.SIGNED.getValue());
 | 
	
		
			
				|  |  | +                WorkProjectNotify notify = new WorkProjectNotify();
 | 
	
		
			
				|  |  | +                notify.setNotifyId(projectFollowReport.getId());
 | 
	
		
			
				|  |  | +                userList = workProjectNotifyService.readByNotifyId(notify);
 | 
	
		
			
				|  |  | +                users.add(projectFollowReport.getCreateBy());
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                WorkProjectNotify notify = new WorkProjectNotify();
 | 
	
		
			
				|  |  | +                notify.setNotifyId(projectFollowReport.getId());
 | 
	
		
			
				|  |  | +                userList = workProjectNotifyService.readByNotifyId(notify);
 | 
	
		
			
				|  |  | +                users.add(projectFollowReport.getCreateBy());
 | 
	
		
			
				|  |  | +                if (projectFollowReport.getStatus()!= ProjectStatusEnum.RECALL.getValue()){
 | 
	
		
			
				|  |  | +                    projectFollowReport.setStatus(ProjectStatusEnum.REJECTED.getValue());
 | 
	
		
			
				|  |  | +					/*workProjectNotifyService
 | 
	
		
			
				|  |  | +							.save(UtilNotify
 | 
	
		
			
				|  |  | +									.saveNotify(projectRecords.getId(),
 | 
	
		
			
				|  |  | +											projectRecords.getCreateBy(),
 | 
	
		
			
				|  |  | +											projectRecords.getCompany().getId(),
 | 
	
		
			
				|  |  | +											titleStr,
 | 
	
		
			
				|  |  | +											notifyStr,
 | 
	
		
			
				|  |  | +											"39",
 | 
	
		
			
				|  |  | +											"0",
 | 
	
		
			
				|  |  | +											"待通知",
 | 
	
		
			
				|  |  | +											notifyRole));*/
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            workActivityProcessService.deleteProcessIdAuditUsers(projectFollowReport.getProcessInstanceId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +            if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("projectFollow")) {
 | 
	
		
			
				|  |  | +                WorkProjectNotify notify = new WorkProjectNotify();
 | 
	
		
			
				|  |  | +                notify.setNotifyId(projectFollowReport.getId());
 | 
	
		
			
				|  |  | +                userList = workProjectNotifyService.readByNotifyId(notify);
 | 
	
		
			
				|  |  | +                WorkProjectNotify workProjectNotify = UtilNotify
 | 
	
		
			
				|  |  | +                        .saveNotify(projectFollowReport.getId(),
 | 
	
		
			
				|  |  | +                                new User(),
 | 
	
		
			
				|  |  | +                                projectFollowReport.getProject().getCompany().getId(),
 | 
	
		
			
				|  |  | +                                titleStr,
 | 
	
		
			
				|  |  | +                                str,
 | 
	
		
			
				|  |  | +                                "139",
 | 
	
		
			
				|  |  | +                                "0",
 | 
	
		
			
				|  |  | +                                "待审批",
 | 
	
		
			
				|  |  | +                                notifyRole);
 | 
	
		
			
				|  |  | +                String count = taskDefKey.replace("audit","").replace("task","");
 | 
	
		
			
				|  |  | +                List<WorkProjectNotify> workProjectNotifys = activityService.getByFlagAndTaskDefKeyList(
 | 
	
		
			
				|  |  | +                        activities,
 | 
	
		
			
				|  |  | +                        workProjectNotify,
 | 
	
		
			
				|  |  | +                        taskDefKey,
 | 
	
		
			
				|  |  | +                        projectFollowReport.getAct().getFlag(),
 | 
	
		
			
				|  |  | +                        count,
 | 
	
		
			
				|  |  | +                        projectFollowReport.getCreateBy(),
 | 
	
		
			
				|  |  | +                        projectFollowReport.getProject().getOffice().getId(),
 | 
	
		
			
				|  |  | +                        "4");
 | 
	
		
			
				|  |  | +                for (WorkProjectNotify workProjectNotify1:workProjectNotifys){
 | 
	
		
			
				|  |  | +                    users.add(workProjectNotify1.getUser());
 | 
	
		
			
				|  |  | +                    workProjectNotify1.setId("");
 | 
	
		
			
				|  |  | +                    workProjectNotify1.setIsNewRecord(false);
 | 
	
		
			
				|  |  | +                    workProjectNotifyService.save(workProjectNotify1);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +                if (!"yes".equals(projectFollowReport.getAct().getFlag())) {
 | 
	
		
			
				|  |  | +                    WorkProjectNotify notify = new WorkProjectNotify();
 | 
	
		
			
				|  |  | +                    notify.setNotifyId(projectFollowReport.getId());
 | 
	
		
			
				|  |  | +                    userList = workProjectNotifyService.readByNotifyId(notify);
 | 
	
		
			
				|  |  | +                    users.add(user);
 | 
	
		
			
				|  |  | +                    WorkProjectNotify workProjectNotify = UtilNotify
 | 
	
		
			
				|  |  | +                            .saveNotify(projectFollowReport.getId(),
 | 
	
		
			
				|  |  | +                                    user,
 | 
	
		
			
				|  |  | +                                    projectFollowReport.getProject().getCompany().getId(),
 | 
	
		
			
				|  |  | +                                    titleStr,
 | 
	
		
			
				|  |  | +                                    str,
 | 
	
		
			
				|  |  | +                                    "139",
 | 
	
		
			
				|  |  | +                                    "0",
 | 
	
		
			
				|  |  | +                                    "重新申请",
 | 
	
		
			
				|  |  | +                                    notifyRole);
 | 
	
		
			
				|  |  | +                    workProjectNotifyService.save(workProjectNotify);
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  | -                    workClientAttachmentDao.delete(workClientAttachment);
 | 
	
		
			
				|  |  | +                    if (org.apache.commons.lang3.StringUtils.isNotBlank(enname)) {
 | 
	
		
			
				|  |  | +                        WorkProjectNotify notify = new WorkProjectNotify();
 | 
	
		
			
				|  |  | +                        notify.setNotifyId(projectFollowReport.getId());
 | 
	
		
			
				|  |  | +                        userList = workProjectNotifyService.readByNotifyId(notify);
 | 
	
		
			
				|  |  | +                        WorkProjectNotify workProjectNotify = UtilNotify
 | 
	
		
			
				|  |  | +                                .saveNotify(projectFollowReport.getId(),
 | 
	
		
			
				|  |  | +                                        new User(),
 | 
	
		
			
				|  |  | +                                        projectFollowReport.getProject().getCompany().getId(),
 | 
	
		
			
				|  |  | +                                        titleStr,
 | 
	
		
			
				|  |  | +                                        str,
 | 
	
		
			
				|  |  | +                                        "139",
 | 
	
		
			
				|  |  | +                                        "0",
 | 
	
		
			
				|  |  | +                                        "待审批",
 | 
	
		
			
				|  |  | +                                        notifyRole);
 | 
	
		
			
				|  |  | +                        for (User user1:auditUsers){
 | 
	
		
			
				|  |  | +                            users.add(user1);
 | 
	
		
			
				|  |  | +                            workProjectNotify.setUser(user1);
 | 
	
		
			
				|  |  | +                            workProjectNotify.setId("");
 | 
	
		
			
				|  |  | +                            workProjectNotify.setIsNewRecord(false);
 | 
	
		
			
				|  |  | +                            workProjectNotifyService.save(workProjectNotify);
 | 
	
		
			
				|  |  | +                            Map<String,Object> extras = new HashMap<>();
 | 
	
		
			
				|  |  | +                            extras.put("type","7003");
 | 
	
		
			
				|  |  | +                            extras.put("procDefKey","139");
 | 
	
		
			
				|  |  | +                            extras.put("id",workProjectNotify.getId());
 | 
	
		
			
				|  |  | +                            UserUtils.pushInfoToApp(titleStr,str,extras,user1.getId());
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }else {
 | 
	
		
			
				|  |  | +                        WorkProjectNotify notify = new WorkProjectNotify();
 | 
	
		
			
				|  |  | +                        notify.setNotifyId(projectFollowReport.getId());
 | 
	
		
			
				|  |  | +                        userList = workProjectNotifyService.readByNotifyId(notify);
 | 
	
		
			
				|  |  | +                        users.add(projectFollowReport.getCreateBy());
 | 
	
		
			
				|  |  | +                        workProjectNotifyService
 | 
	
		
			
				|  |  | +                                .save(UtilNotify
 | 
	
		
			
				|  |  | +                                        .saveNotify(projectFollowReport.getId(),
 | 
	
		
			
				|  |  | +                                                projectFollowReport.getCreateBy(),
 | 
	
		
			
				|  |  | +                                                projectFollowReport.getProject().getCompany().getId(),
 | 
	
		
			
				|  |  | +                                                titleStr,
 | 
	
		
			
				|  |  | +                                                str,
 | 
	
		
			
				|  |  | +                                                "139",
 | 
	
		
			
				|  |  | +                                                "0",
 | 
	
		
			
				|  |  | +                                                "重新申请",
 | 
	
		
			
				|  |  | +                                                notifyRole));
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (users!=null && users.size()!=0) {
 | 
	
		
			
				|  |  | +            List<String> userIds = new ArrayList<>(users.size());
 | 
	
		
			
				|  |  | +            for (User u : users) {
 | 
	
		
			
				|  |  | +                userIds.add(u.getId());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            UserUtils.pushIm(userIds,titleStr);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (userList!=null && userList.size()!=0) {
 | 
	
		
			
				|  |  | +            for (User u : userList) {
 | 
	
		
			
				|  |  | +                UserUtils.pushMeIm(u.getId());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        projectFollowReportDao.update(projectFollowReport);
 | 
	
		
			
				|  |  | +        return "保存审核意见成功!";
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Transactional(readOnly = false)
 | 
	
		
			
				|  |  | +    public void cancelProcess(ProjectFollowReport projectFollowReport) throws Exception {
 | 
	
		
			
				|  |  | +        WorkActivityProcess process = new WorkActivityProcess();
 | 
	
		
			
				|  |  | +        process.setProcessInstanceId(projectFollowReport.getProcessInstanceId());
 | 
	
		
			
				|  |  | +        process.setIsApproval("0");
 | 
	
		
			
				|  |  | +        WorkActivityProcess workActivityProcess = new WorkActivityProcess();
 | 
	
		
			
				|  |  | +        workActivityProcess.setProcessInstanceId(projectFollowReport.getProcessInstanceId());
 | 
	
		
			
				|  |  | +        List<WorkActivityProcess> processList = workActivityProcessService.findList(workActivityProcess);
 | 
	
		
			
				|  |  | +        WorkProjectNotify notify = new WorkProjectNotify();
 | 
	
		
			
				|  |  | +        notify.setNotifyId(projectFollowReport.getId());
 | 
	
		
			
				|  |  | +        List<User> userList = workProjectNotifyService.readByNotifyId(notify);
 | 
	
		
			
				|  |  | +        if (userList!=null && userList.size()!=0) {
 | 
	
		
			
				|  |  | +            for (User u : userList) {
 | 
	
		
			
				|  |  | +                User user = UserUtils.get(u.getId());
 | 
	
		
			
				|  |  | +                UserUtils.pushIm(u.getId(),"申请人 "+user.getName() +",跟踪咨询报告审批:"+projectFollowReport.getProjectFollowName() +" 强制撤销!");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(processList!=null && processList.size()>0) {
 | 
	
		
			
				|  |  | +            for (int i = 0; i < processList.size(); i++) {
 | 
	
		
			
				|  |  | +                WorkActivityProcess p = processList.get(i);
 | 
	
		
			
				|  |  | +                if (org.apache.commons.lang3.StringUtils.isNotBlank(p.getIsApproval()) && "0".equals(p.getIsApproval())) {
 | 
	
		
			
				|  |  | +                    p.setIsApproval("-1");
 | 
	
		
			
				|  |  | +                    p.setDelFlag("1");
 | 
	
		
			
				|  |  | +                    workActivityProcessDao.updateDelFlagAndIsApproval(p);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            WorkActivityProcess pro = new WorkActivityProcess();
 | 
	
		
			
				|  |  | +            pro.setId("");
 | 
	
		
			
				|  |  | +            pro.setDelFlag("0");
 | 
	
		
			
				|  |  | +            pro.preInsert();
 | 
	
		
			
				|  |  | +            pro.setRemarks("[强制撤销]");
 | 
	
		
			
				|  |  | +            pro.setProcessKey(processList.get(0).getProcessKey());
 | 
	
		
			
				|  |  | +            pro.setIsApproval("1");
 | 
	
		
			
				|  |  | +            pro.setProcessInstanceId(processList.get(0).getProcessInstanceId());
 | 
	
		
			
				|  |  | +            pro.setCount(0);
 | 
	
		
			
				|  |  | +            workActivityProcessDao.insert(pro);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //结束该流程,设为"撤销"状态月
 | 
	
		
			
				|  |  | +            ProjectRecords records = new ProjectRecords();
 | 
	
		
			
				|  |  | +            records.setId(projectFollowReport.getProjectId());
 | 
	
		
			
				|  |  | +            projectFollowReport.setStatus(ProjectStatusEnum.RECALL.getValue());
 | 
	
		
			
				|  |  | +            projectFollowReport.setProject(records);
 | 
	
		
			
				|  |  | +            projectFollowReport.preUpdate();
 | 
	
		
			
				|  |  | +            projectFollowReportDao.update(projectFollowReport);
 | 
	
		
			
				|  |  | +            actTaskService.endProcessInstance(projectFollowReport.getProcessInstanceId(), "跟踪咨询报告-撤回");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 查询依据性文件
 | 
	
		
			
				|  |  | +     * @param monthly
 | 
	
		
			
				|  |  | +     * @return
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public List<ProjectBasedData> getBasedData(ProjectFollowReport monthly){
 | 
	
		
			
				|  |  | +        if (com.jeeplus.common.utils.StringUtils.isNotBlank(monthly.getId())){
 | 
	
		
			
				|  |  | +            List<ProjectBasedData> list = projectBasedDataDao.queryListByContentId(monthly.getId());
 | 
	
		
			
				|  |  | +            return list;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return null;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 查询附件信息
 | 
	
		
			
				|  |  | +     * @param monthly
 | 
	
		
			
				|  |  | +     * @return
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public List<Workattachment> getWorkattachment(ProjectFollowReport monthly){
 | 
	
		
			
				|  |  | +        if (com.jeeplus.common.utils.StringUtils.isNotBlank(monthly.getId())){
 | 
	
		
			
				|  |  | +            Workattachment workattachment = new Workattachment();
 | 
	
		
			
				|  |  | +            workattachment.setAttachmentId(monthly.getId());
 | 
	
		
			
				|  |  | +            List<Workattachment> list = workattachmentDao.findList(workattachment);
 | 
	
		
			
				|  |  | +            return list;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return null;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
	
		
			
				|  | @@ -210,4 +852,11 @@ public class ProjectImplementEarlyService extends CrudService<ProjectImplementEa
 | 
	
		
			
				|  |  |      public ProjectFollowReport getFollow(ProjectFollowReport projectFollowReport) {
 | 
	
		
			
				|  |  |          return projectFollowReportDao.get(projectFollowReport.getId());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 通过id获取跟踪咨询报告的基础信息
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public ProjectFollowReport getFollowById(String id) {
 | 
	
		
			
				|  |  | +        return projectFollowReportDao.get(id);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |