Browse Source

完成非项目出差和非项目用印申请流程修改

user5 5 years ago
parent
commit
f648b6df89

+ 333 - 20
src/main/java/com/jeeplus/modules/workadministrativeatamp/service/WorkAdministrativeAtampService.java

@@ -3,16 +3,12 @@
  */
 package com.jeeplus.modules.workadministrativeatamp.service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import com.google.common.collect.Maps;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
 import com.jeeplus.common.utils.DateUtils;
 import com.jeeplus.common.utils.MenuStatusEnum;
 import com.jeeplus.common.utils.StringUtils;
-import com.jeeplus.common.websocket.onchat.ChatServerPool;
 import com.jeeplus.modules.act.service.ActTaskService;
 import com.jeeplus.modules.isignature.service.ISignatureDocumentService;
 import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
@@ -20,7 +16,6 @@ import com.jeeplus.modules.serialnum.service.SerialNumTplService;
 import com.jeeplus.modules.sys.dao.UserDao;
 import com.jeeplus.modules.sys.entity.Office;
 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.workactivity.dao.WorkActivityProcessDao;
 import com.jeeplus.modules.workactivity.entity.Activity;
@@ -29,26 +24,25 @@ 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.workadministrativeatamp.dao.WorkAdministrativeAtampDao;
+import com.jeeplus.modules.workadministrativeatamp.entity.WorkAdministrativeAtamp;
 import com.jeeplus.modules.workclientinfo.dao.WorkClientAttachmentDao;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
-import com.jeeplus.modules.workincomingmessage.entity.WorkIncomingMessage;
 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.ActivitiObjectNotFoundException;
 import org.activiti.engine.HistoryService;
 import org.activiti.engine.IdentityService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.runtime.ProcessInstance;
-import org.java_websocket.WebSocket;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.jeeplus.common.persistence.Page;
-import com.jeeplus.common.service.CrudService;
-import com.jeeplus.modules.workadministrativeatamp.entity.WorkAdministrativeAtamp;
-import com.jeeplus.modules.workadministrativeatamp.dao.WorkAdministrativeAtampDao;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 项目盖章Service
@@ -218,9 +212,12 @@ public class WorkAdministrativeAtampService extends CrudService<WorkAdministrati
                 );
 
         List<User> users = new ArrayList<>();
+        List<User> gzrList = null;
         List<User> bmzrList = UserUtils.getByRoleActivityEnname("bmzr",2,office.getId(),"11",workAdministrativeAtamp.getCreateBy());
         List<User> fgldList = UserUtils.getByRoleActivityEnname("fzjl",3,office.getId(),"11",workAdministrativeAtamp.getCreateBy());
-        List<User> gzrList = UserUtils.getByRoleActivityEnname("zjl",3,office.getId(),"11",workAdministrativeAtamp.getCreateBy());
+        if (StringUtils.isNotBlank(workAdministrativeAtamp.getProject().getId())){
+            gzrList = UserUtils.getByRoleActivityEnname("zjl",3,office.getId(),"11",workAdministrativeAtamp.getCreateBy());
+        }
         if (StringUtils.isNotBlank(workActivityMenu.getId())) {
             workProjectNotify.setNotifyRole("");
             workActivityMenu = workActivityMenuService.get(workActivityMenu.getId());
@@ -262,7 +259,11 @@ public class WorkAdministrativeAtampService extends CrudService<WorkAdministrati
             }
             variables.put("bmzrList", bmzrList);
             variables.put("bmzrCount",bmzrList.size());
-            processType = "administrativeAtamp";
+            if (StringUtils.isNotBlank(workAdministrativeAtamp.getProject().getId())){
+                processType = "administrativeAtamp";
+            }else{
+                processType = "notadministrativeAtamp";
+            }
             users.addAll(bmzrList);
         }
         List<String> userIds = new ArrayList<>(users.size());
@@ -305,13 +306,17 @@ public class WorkAdministrativeAtampService extends CrudService<WorkAdministrati
             workActivityProcessService.save(workActivityProcess);
             workActivityProcess.setCount(2);
             workActivityProcess.setId("");
-            workActivityProcessService.save(workActivityProcess);
-            workActivityProcess.setCount(3);
-            workActivityProcess.setId("");
+            if (StringUtils.isNotBlank(workAdministrativeAtamp.getProject().getId())){
+                workActivityProcessService.save(workActivityProcess);
+                workActivityProcess.setCount(3);
+                workActivityProcess.setId("");
+            }
             workActivityProcessService.save(workActivityProcess);
             workActivityProcessService.insertAuditsByType(bmzrList,processInstance.getId(),1,1);
             workActivityProcessService.insertAuditsByType(fgldList,processInstance.getId(),2,0);
-            workActivityProcessService.insertAuditsByType(gzrList,processInstance.getId(),3,0);
+            if (StringUtils.isNotBlank(workAdministrativeAtamp.getProject().getId())){
+                workActivityProcessService.insertAuditsByType(gzrList,processInstance.getId(),3,0);
+            }
         }
         workAdministrativeAtamp.setProcessInstanceId(processInstance.getId());
         workAdministrativeAtamp.setState(ProjectStatusEnum.IN_APRL.getValue());
@@ -643,6 +648,314 @@ public class WorkAdministrativeAtampService extends CrudService<WorkAdministrati
         return "保存审核意见成功!";
     }
 
+    /**
+     * 非项目审核流程
+     */
+    @Transactional(readOnly = false)
+    public String auditNotProjectSave(WorkAdministrativeAtamp workAdministrativeAtamp,List<User> auditUsers) {
+        String str = "申请编号:"+workAdministrativeAtamp.getNum()+",申请人:"+workAdministrativeAtamp.getSubmiter().getName() +",申请日期:"+ DateUtils.formatDate(workAdministrativeAtamp.getCreateDate());
+        String title = "申请人:"+ workAdministrativeAtamp.getSubmiter().getName();
+        // 对不同环节的业务逻辑进行操作
+        String taskDefKey = workAdministrativeAtamp.getAct().getTaskDefKey();
+        if (!"modifyApply".equals(taskDefKey) && !taskDefKey.contains("audit")) {
+            actTaskService.claim(workAdministrativeAtamp.getAct().getTaskId(), UserUtils.getUser().getId());
+        }else {
+            workAdministrativeAtamp.getAct().setFlag("yes");
+            this.saveAttachments(workAdministrativeAtamp);
+        }
+        String comment = "";
+        if (ProjectStatusEnum.REJECTED.getValue() == workAdministrativeAtamp.getState()){
+            comment = ("yes".equals(workAdministrativeAtamp.getAct().getFlag())?"[重新申请] ":"[已撤销] ");
+        }else {
+            comment = ("yes".equals(workAdministrativeAtamp.getAct().getFlag())?"[同意] ":"[驳回] ")+ workAdministrativeAtamp.getAct().getComment();
+        }
+        //yes 的时候状态为审核通过 否则为未通过
+        //1 审核中 2 未通过
+        workAdministrativeAtamp.setState(("yes".equals(workAdministrativeAtamp.getAct().getFlag()) ? ProjectStatusEnum.IN_APRL.getValue() : ProjectStatusEnum.REJECTED.getValue()));
+        Map<String, Object> vars = Maps.newHashMap();
+        //业务逻辑对应的条件表达式
+        String exp = "";
+        String taskCount = "";
+        String notifyRole = "";
+        int key = 0;
+        String enname = "";
+        List<Activity> activitieList = activityService.getByProcessInstanceId(workAdministrativeAtamp.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(workAdministrativeAtamp.getProcessInstanceId());
+        List<WorkActivityProcess> workActivityProcesses = workActivityProcessService.findList(selectProcess);
+        List<Activity> activities = workActivityMenu.getActivities();
+        if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && (!workActivityMenu.getProcessType().equals("notadministrativeAtamp"))) {
+            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(workAdministrativeAtamp.getAct().getFlag())) {
+                        notifyRole = "调整盖章信息";
+                        workAdministrativeAtamp.setState(ProjectStatusEnum.REJECTED.getValue());
+                        workActivityProcess.setIsApproval("2");
+                        String returnBack = "-1";
+                        for (Activity activity : activities) {
+                            if (activity.getCount() == activityProcess.getCount()) {
+                                notifyRole = activity.getName();
+                                returnBack = activity.getReturnBack();
+                                break;
+                            }
+                        }
+                        if (returnBack.equals("0")) {
+                            workActivityProcess.setId("");
+                        }
+
+                    } else {
+                        workActivityProcess.setIsApproval("1");
+                    }
+                }else if(taskDefKey.equals("modifyApply")){
+                    taskCount = "0";
+                    exp = "pass";
+                    workActivityProcess.setId("");
+                    workActivityProcess.setCount(0);
+                    if (!"yes".equals(workAdministrativeAtamp.getAct().getFlag())) {
+                        workAdministrativeAtamp.setState(ProjectStatusEnum.RECALL.getValue());
+                        workActivityProcess.setIsApproval("2");
+                    } else {
+                        workActivityProcess.setIsApproval("1");
+                    }
+                    break;
+                }
+            }
+        } else {
+            workActivityMenu.setProcessType("notadministrativeAtamp");
+            for (int i = 0; i < workActivityProcesses.size(); i++) {
+                WorkActivityProcess activityProcess = workActivityProcesses.get(i);
+                String count = activityProcess.getCount() + "";
+                workActivityProcess = activityProcess;
+                if (!workActivityProcess.getIsApproval().equals("0")) {
+                    workActivityProcess.setId("");
+                }
+                // 审核环节
+                if ("bmzr".equals(taskDefKey) && count.contains("1")) {
+                    taskCount = "1";
+                    exp = "pass";
+                    if ("yes".equals(workAdministrativeAtamp.getAct().getFlag())) {
+                        workActivityProcessService.insertAuditsByType(auditUsers, workAdministrativeAtamp.getProcessInstanceId(), 2, 1);
+
+                        notifyRole = "副总经理审核";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "fgld";
+                        vars.put("fgldCount", auditUsers.size());
+                        vars.put("fgldList", auditUsers);
+                        vars.put("pass",true);
+                    } else {
+                        notifyRole = "调整申请";
+                        workActivityProcess.setIsApproval("2");
+                        vars.put("pass",false);
+                    }
+                    break;
+                } else if ("fgld".equals(taskDefKey) && count.contains("2")) {
+                    taskCount = "2";
+                    exp = "pass";
+                    if ("yes".equals(workAdministrativeAtamp.getAct().getFlag())) {
+                        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 = "bmzr";
+                    if (!"yes".equals(workAdministrativeAtamp.getAct().getFlag())) {
+                        workAdministrativeAtamp.setState(ProjectStatusEnum.RECALL.getValue());
+                    }
+                    break;
+                } else if ("apply_end".equals(taskDefKey)) {
+                }
+            }
+        }
+        // 设置意见
+        workAdministrativeAtamp.getAct().setComment(("yes".equals(workAdministrativeAtamp.getAct().getFlag()) ? "[同意] " : "[驳回] ") + workAdministrativeAtamp.getAct().getComment());
+        workAdministrativeAtamp.preUpdate();
+        // 提交流程任务
+        vars.put(exp, "yes".equals(workAdministrativeAtamp.getAct().getFlag()) ? true : false);
+        vars.put("passs", true);
+        workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount, workAdministrativeAtamp.getProcessInstanceId(),taskDefKey,"modifyApply", workAdministrativeAtamp.getAct().getFlag(),comment, activities);
+        // 提交流程任务
+        actTaskService.complete(workAdministrativeAtamp.getAct().getTaskId(), workAdministrativeAtamp.getAct().getProcInsId(), workAdministrativeAtamp.getAct().getComment(), vars);
+        boolean state = actTaskService.isProcessEnd(workAdministrativeAtamp.getAct().getProcInsId());
+        List<User> users = new ArrayList<>();
+        List<User> userList = new ArrayList<>();
+        if (!state) {
+            users.add(workAdministrativeAtamp.getCreateBy());
+            if ("yes".equals(workAdministrativeAtamp.getAct().getFlag())) {
+                workAdministrativeAtamp.setState(ProjectStatusEnum.SIGNED.getValue());
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(workAdministrativeAtamp.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                workProjectNotifyService
+                        .save(UtilNotify
+                                .saveNotify(workAdministrativeAtamp.getId(),
+                                        workAdministrativeAtamp.getCreateBy(),
+                                        workAdministrativeAtamp.getCompany().getId(),
+                                        title,
+                                        str,
+                                        "56",
+                                        "0",
+                                        "待通知",
+                                        notifyRole));
+
+            } else {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(workAdministrativeAtamp.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                if (ProjectStatusEnum.RECALL.getValue() != workAdministrativeAtamp.getState()){
+                    workAdministrativeAtamp.setState(ProjectStatusEnum.REJECTED.getValue());
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(workAdministrativeAtamp.getId(),
+                                            workAdministrativeAtamp.getCreateBy(),
+                                            workAdministrativeAtamp.getCompany().getId(),
+                                            title,
+                                            str,
+                                            "56",
+                                            "0",
+                                            "待通知",
+                                            notifyRole));
+                }
+            }
+            workActivityProcessService.deleteProcessIdAuditUsers(workAdministrativeAtamp.getProcessInstanceId());
+        } else {
+            if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && (!workActivityMenu.getProcessType().equals("notadministrativeAtamp"))) {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(workAdministrativeAtamp.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                //users.addAll(userList);
+                WorkProjectNotify workProjectNotify = UtilNotify
+                        .saveNotify(workAdministrativeAtamp.getId(),
+                                new User(),
+                                workAdministrativeAtamp.getCompany().getId(),
+                                title,
+                                str,
+                                "56",
+                                "0",
+                                "待审批",
+                                notifyRole);
+                List<WorkProjectNotify> workProjectNotifys = activityService.getByFlagAndTaskDefKeyList(
+                        activities,
+                        workProjectNotify,
+                        taskDefKey,
+                        workAdministrativeAtamp.getAct().getFlag(),
+                        taskCount,
+                        workAdministrativeAtamp.getCreateBy(),
+                        workAdministrativeAtamp.getOffice().getId(),
+                        "56");
+                for (WorkProjectNotify workProjectNotify1:workProjectNotifys){
+                    users.add(workProjectNotify1.getUser());
+                    workProjectNotify1.setId("");
+                    workProjectNotify1.setIsNewRecord(false);
+                    workProjectNotifyService
+                            .save(workProjectNotify1);
+                }
+
+            } else {
+                if (!"yes".equals(workAdministrativeAtamp.getAct().getFlag())) {
+                    WorkProjectNotify notify = new WorkProjectNotify();
+                    notify.setNotifyId(workAdministrativeAtamp.getId());
+                    userList = workProjectNotifyService.readByNotifyId(notify);
+                    //users.addAll(userList);
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(workAdministrativeAtamp.getId(),
+                                            workAdministrativeAtamp.getCreateBy(),
+                                            workAdministrativeAtamp.getCompany().getId(),
+                                            title,
+                                            str,
+                                            "56",
+                                            "0",
+                                            "重新申请",
+                                            notifyRole));
+                    users.add( workAdministrativeAtamp.getCreateBy());
+                } else {
+                    if (StringUtils.isNotBlank(enname)) {
+                        WorkProjectNotify notify = new WorkProjectNotify();
+                        notify.setNotifyId(workAdministrativeAtamp.getId());
+                        userList = workProjectNotifyService.readByNotifyId(notify);
+                        //users.addAll(userList1);
+                        WorkProjectNotify workProjectNotify = UtilNotify
+                                .saveNotify(workAdministrativeAtamp.getId(),
+                                        new User(),
+                                        workAdministrativeAtamp.getCompany().getId(),
+                                        title,
+                                        str,
+                                        "56",
+                                        "0",
+                                        "待审批",
+                                        notifyRole);
+                        users.addAll(auditUsers);
+                        for (User user1:auditUsers){
+                            workProjectNotify.setUser(user1);
+                            workProjectNotify.setId("");
+                            workProjectNotify.setIsNewRecord(false);
+                            workProjectNotifyService.save(workProjectNotify);
+                            Map<String,Object> extras = new HashMap<>();
+                            if(enname.contains("bmzr")||enname.contains("fgld")) {
+                                extras.put("type", "7002");
+                            }else {
+                                extras.put("type", "7001");
+                            }
+                            extras.put("procDefKey","56");
+                            extras.put("id",workProjectNotify.getId());
+                            UserUtils.pushInfoToApp(title, str,extras,user1.getId());
+                        }
+                    }else {
+                        WorkProjectNotify notify = new WorkProjectNotify();
+                        notify.setNotifyId(workAdministrativeAtamp.getId());
+                        userList = workProjectNotifyService.readByNotifyId(notify);
+                        users.add(workAdministrativeAtamp.getCreateBy());
+                        workProjectNotifyService
+                                .save(UtilNotify
+                                        .saveNotify(workAdministrativeAtamp.getId(),
+                                                workAdministrativeAtamp.getCreateBy(),
+                                                workAdministrativeAtamp.getCompany().getId(),
+                                                title,
+                                                str,
+                                                "56",
+                                                "0",
+                                                "重新申请",
+                                                notifyRole));
+                    }
+                }
+            }
+        }
+        if (StringUtils.isNotBlank(title) && users!=null && users.size()!=0) {
+            for (User u : users) {
+                UserUtils.pushIm(u.getId(),title);
+            }
+        }
+        if (StringUtils.isNotBlank(title) && userList!=null && userList.size()!=0) {
+            for (User u : userList) {
+                UserUtils.pushMeIm(u.getId());
+            }
+        }
+        dao.update(workAdministrativeAtamp);
+        return "保存审核意见成功!";
+    }
+
     @Transactional(readOnly = false)
     public void cancelProcess(WorkAdministrativeAtamp workAdministrativeAtamp) throws Exception {
         WorkActivityProcess process = new WorkActivityProcess();

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

@@ -3,21 +3,23 @@
  */
 package com.jeeplus.modules.workadministrativeatamp.web;
 
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.ConstraintViolationException;
-
+import com.google.common.collect.Lists;
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+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.enums.ProjectStatusEnum;
 import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.utils.UserUtils;
-import com.jeeplus.modules.workincomingmessage.entity.WorkIncomingMessage;
+import com.jeeplus.modules.workadministrativeatamp.entity.WorkAdministrativeAtamp;
+import com.jeeplus.modules.workadministrativeatamp.service.WorkAdministrativeAtampService;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Task;
 import org.apache.shiro.authz.annotation.Logical;
@@ -32,17 +34,12 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import com.google.common.collect.Lists;
-import com.jeeplus.common.utils.DateUtils;
-import com.jeeplus.common.utils.MyBeanUtils;
-import com.jeeplus.common.config.Global;
-import com.jeeplus.common.persistence.Page;
-import com.jeeplus.common.web.BaseController;
-import com.jeeplus.common.utils.StringUtils;
-import com.jeeplus.common.utils.excel.ExportExcel;
-import com.jeeplus.common.utils.excel.ImportExcel;
-import com.jeeplus.modules.workadministrativeatamp.entity.WorkAdministrativeAtamp;
-import com.jeeplus.modules.workadministrativeatamp.service.WorkAdministrativeAtampService;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.ConstraintViolationException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * 项目盖章Controller
@@ -302,24 +299,43 @@ public class WorkAdministrativeAtampController extends BaseController {
             // 对不同环节的业务逻辑进行操作
             String taskDefKey = workAdministrativeAtamp.getAct().getTaskDefKey();
             List<User> users = null;
-            if ("bmzr".equals(taskDefKey)){
-                users = UserUtils.getByProssType(workAdministrativeAtamp.getProcessInstanceId(),2);
-                if (users==null )
-                    users = UserUtils.getByRoleActivityEnname("fzjl",3,UserUtils.getSelectOffice().getId(),"11",workAdministrativeAtamp.getCreateBy());
-            }else  if ("fgld".equals(taskDefKey)){
-                users = UserUtils.getByProssType(workAdministrativeAtamp.getProcessInstanceId(),3);
-                if (users==null )
-                    users = UserUtils.getByRoleActivityEnname("zjl",3,UserUtils.getUser().getOffice().getId(),"11",workAdministrativeAtamp.getCreateBy());
-            }else if ("gzr".equals(taskDefKey)){
-                users = UserUtils.getByProssType(workAdministrativeAtamp.getProcessInstanceId(),3);
-            }else if ("modifyApply".equals(taskDefKey)){
-                users = UserUtils.getByProssType(workAdministrativeAtamp.getProcessInstanceId(),1);
+            if (StringUtils.isNotBlank(workAdministrativeAtamp.getProject().getId())){
+                if ("bmzr".equals(taskDefKey)){
+                    users = UserUtils.getByProssType(workAdministrativeAtamp.getProcessInstanceId(),2);
+                    if (users==null )
+                        users = UserUtils.getByRoleActivityEnname("fzjl",3,UserUtils.getSelectOffice().getId(),"11",workAdministrativeAtamp.getCreateBy());
+                }else  if ("fgld".equals(taskDefKey)){
+                    users = UserUtils.getByProssType(workAdministrativeAtamp.getProcessInstanceId(),3);
+                    if (users==null )
+                        users = UserUtils.getByRoleActivityEnname("zjl",3,UserUtils.getUser().getOffice().getId(),"11",workAdministrativeAtamp.getCreateBy());
+                }else if ("gzr".equals(taskDefKey)){
+                    users = UserUtils.getByProssType(workAdministrativeAtamp.getProcessInstanceId(),3);
+                }else if ("modifyApply".equals(taskDefKey)){
+                    users = UserUtils.getByProssType(workAdministrativeAtamp.getProcessInstanceId(),1);
+                }
+            }else {
+                if ("bmzr".equals(taskDefKey)){
+                    users = UserUtils.getByProssType(workAdministrativeAtamp.getProcessInstanceId(),2);
+                    if (users==null )
+                        users = UserUtils.getByRoleActivityEnname("fzjl",3,UserUtils.getSelectOffice().getId(),"11",workAdministrativeAtamp.getCreateBy());
+                }else  if ("fgld".equals(taskDefKey)){
+                    users = UserUtils.getByProssType(workAdministrativeAtamp.getProcessInstanceId(),3);
+                    if (users==null )
+                        users = UserUtils.getByRoleActivityEnname("fzjl",3,UserUtils.getSelectOffice().getId(),"11",workAdministrativeAtamp.getCreateBy());
+                }else if ("modifyApply".equals(taskDefKey)){
+                    users = UserUtils.getByProssType(workAdministrativeAtamp.getProcessInstanceId(),1);
+                }
             }
             String flag = workAdministrativeAtamp.getAct().getFlag();
             if ("yes".equals(flag) && (users==null || users.size()==0)){
                 addMessage(redirectAttributes, "审批失败,审批人为空,请联系管理员!");
             }else {
-                String str = workAdministrativeAtampService.auditSave(workAdministrativeAtamp,users);
+                String str = null;
+                if (StringUtils.isNotBlank(workAdministrativeAtamp.getProject().getId())){
+                    str = workAdministrativeAtampService.auditSave(workAdministrativeAtamp,users);
+                }else {
+                    str = workAdministrativeAtampService.auditNotProjectSave(workAdministrativeAtamp,users);
+                }
                 addMessage(redirectAttributes, str);
             }
 //        }catch (Exception e){

+ 28 - 2
src/main/webapp/webpage/modules/workleave/workLeaveForm.jsp

@@ -30,6 +30,20 @@
             return false;
         }
         $(document).ready(function() {
+
+            $("input[name='ext']").on('ifChecked', function(event){
+                var radioVal = $(this).val();
+                if(radioVal == 0){
+                    $(".td1").removeClass("hide");
+                }else{
+                    $(".td1").addClass("hide");
+                }
+            });
+            if("${workReimbursement.ext}" == "1"){
+                $("#ext1").iCheck('check')
+            }else{
+                $("#ext").iCheck('check')
+            }
             validateForm = $("#inputForm").validate({
                 submitHandler: function(form){
                     loading('正在提交,请稍等...');
@@ -110,7 +124,19 @@
 			<input type="hidden" name="workStaffBasicInfo.id" value="${workLeave.workStaffBasicInfo.id}">
 			<div class="form-group layui-row first lw8">
 				<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" class="i-checks" name="ext" checked id="ext" value="0">
+						<label for="ext">项目出差</label>
+						<input type="radio" class="i-checks" name="ext" id="ext1" value="1">
+						<label for="ext1">非项目出差</label>
+							<%--<input type="text" name="title" lay-verify="title" autocomplete="off" readonly="true" placeholder="" class="layui-input" value="全过程管理用户01">--%>
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm6 td1">
 					<label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
 					<div class="layui-input-block  with-icon">
 						<input type="hidden" value="" id ="ids">
@@ -118,7 +144,7 @@
 													labelValue="${workLeave.project.projectName}" cssClass="form-control required layui-input" fieldLabels="项目" fieldKeys="projectName" searchLabel="项目名称" searchKey="projectName" ></sys:gridselectcallprojectt>
 					</div>
 				</div>
-				<div class="layui-item layui-col-sm6">
+				<div class="layui-item layui-col-sm6 td1">
 					<label class="layui-form-label"><span class="require-item">*</span>项目编号:</label>
 					<div class="layui-input-block">
 						<form:input id ="pNumber" path="project.projectId" htmlEscape="false"  readonly="true" class="form-control layui-input"/>
@@ -182,7 +208,7 @@
 					<div class="layui-input-block">
 						<form:select path="car" class="form-control simple-select required" id="car">
 							<form:option value="" label="--请选择用车类型--"/>
-							<form:options items="${fns:getMainDictList('card_type')}" itemLabel="label" itemValue="label" htmlEscape="false"/>
+                            <form:options items="${fns:getMainDictList('card_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
 						</form:select>
 					</div>
 				</div>

+ 28 - 2
src/main/webapp/webpage/modules/workleave/workLeaveModify.jsp

@@ -21,6 +21,20 @@
             return false;
         }
         $(document).ready(function() {
+            $("input[name='ext']").on('ifChecked', function(event){
+                var radioVal = $(this).val();
+                if(radioVal == 0){
+                    $(".td1").removeClass("hide");
+                }else{
+                    $(".td1").addClass("hide");
+                }
+            });
+            if("${workReimbursement.ext}" == "1"){
+                $("#ext1").iCheck('check')
+            }else{
+                $("#ext").iCheck('check')
+            }
+
             validateForm = $("#inputForm").validate({
                 submitHandler: function(form){
                     loading('正在提交,请稍等...');
@@ -101,7 +115,19 @@
 			<input type="hidden" name="workStaffBasicInfo.id" value="${workLeave.workStaffBasicInfo.id}">
 			<div class="form-group layui-row first lw8">
 				<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" class="i-checks" name="ext" checked id="ext" value="0">
+						<label for="ext">项目出差</label>
+						<input type="radio" class="i-checks" name="ext" id="ext1" value="1">
+						<label for="ext1">非项目出差</label>
+							<%--<input type="text" name="title" lay-verify="title" autocomplete="off" readonly="true" placeholder="" class="layui-input" value="全过程管理用户01">--%>
+					</div>
+				</div>
+
+				<div class="layui-item layui-col-sm6 td1">
 					<label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
 					<div class="layui-input-block  with-icon">
 						<input type="hidden" value="" id ="ids">
@@ -109,7 +135,7 @@
 													labelValue="${workLeave.project.projectName}" cssClass="form-control required layui-input" fieldLabels="项目" fieldKeys="projectName" searchLabel="项目名称" searchKey="projectName" ></sys:gridselectcallprojectt>
 					</div>
 				</div>
-				<div class="layui-item layui-col-sm6">
+				<div class="layui-item layui-col-sm6 td1">
 					<label class="layui-form-label"><span class="require-item">*</span>项目编号:</label>
 					<div class="layui-input-block">
 						<form:input id ="pNumber" path="project.projectId" htmlEscape="false"  readonly="true" class="form-control layui-input"/>
@@ -173,7 +199,7 @@
 					<div class="layui-input-block">
 						<form:select path="car" cssClass="form-control required simple-select">
 							<form:option value="" label=""/>
-							<form:options items="${fns:getMainDictList('card_type')}" itemLabel="label" itemValue="lable" htmlEscape="false"/>
+							<form:options items="${fns:getMainDictList('card_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
 						</form:select>
 					</div>
 				</div>