瀏覽代碼

施工交底,指定流程人员变更

yue 5 年之前
父節點
當前提交
101f9f244c

+ 52 - 0
src/main/java/com/jeeplus/modules/act/service/ActTaskService.java

@@ -586,6 +586,58 @@ public class ActTaskService extends BaseService {
 		return act.getProcInsId();
 	}
 
+
+	/**
+	 * 新启动流程
+	 * @param procDefKey 流程定义KEY
+	 * @param businessTable 业务表表名
+	 * @param businessId	业务表编号
+	 * @param title			流程标题,显示在待办任务标题
+	 * @param vars			流程变量
+	 * @return 流程实例ID
+	 */
+	@SuppressWarnings("unused")
+	@Transactional(readOnly = false)
+	public String startProcessNew(String procDefKey, String businessTable, String businessId, String title, Map<String, Object> vars) {
+		//String userId = UserUtils.getUser().getLoginName();//ObjectUtils.toString(UserUtils.getUser().getId())
+		// 设置流程变量
+		if (vars == null){
+			vars = Maps.newHashMap();
+		}
+
+		String userId = (String) vars.get("applyUserId");
+		if(userId == null ){
+			userId = UserUtils.getUser().getLoginName();
+		}
+		String userName = UserUtils.getByLoginName(userId).getName();
+		vars.put("userName", userName);
+
+		String processer = (String) vars.get("processer");
+		if (processer != null) {
+			vars.put("processer", processer);
+		}
+
+		// 用来设置启动流程的人员ID,引擎会自动把用户ID保存到activiti:initiator中
+		identityService.setAuthenticatedUserId(userId);
+
+		// 设置流程标题
+		if (StringUtils.isNotBlank(title)){
+			vars.put("title", title);
+		}
+
+		// 启动流程
+		ProcessInstance procIns = runtimeService.startProcessInstanceByKey(procDefKey, businessTable+":"+businessId, vars);
+
+		// 更新业务表流程实例ID
+		Act act = new Act();
+		act.setBusinessTable(businessTable);// 业务表名
+		act.setBusinessId(businessId);	// 业务表ID
+		act.setProcInsId(procIns.getId());
+		act.setVars(vars);
+		actMapper.updateProcInsIdByBusinessId(act);
+		return act.getProcInsId();
+	}
+
 	/**
 	 * 获取任务
 	 * @param taskId 任务ID

+ 8 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/entity/Construction.java

@@ -1,6 +1,7 @@
 package com.jeeplus.modules.sg.managementcenter.activiti.entity;
 
 import com.jeeplus.core.persistence.ActEntity;
+import com.jeeplus.modules.sys.entity.User;
 
 import java.util.Date;
 
@@ -11,6 +12,7 @@ import java.util.Date;
  */
 public class Construction extends ActEntity<Construction> {
     private static final long serialVersionUID = 1L;
+    private User tuser;		// 归属用户
     private String procInsId;		// 流程实例编号
     private String userName;		// 申请人
     private String projectId;		// 项目号
@@ -18,7 +20,13 @@ public class Construction extends ActEntity<Construction> {
     private Date acceptDate;		// 接收图纸时间
     private String examineDate;		// 查看时间
 
+    public User getTuser() {
+        return tuser;
+    }
 
+    public void setTuser(User tuser) {
+        this.tuser = tuser;
+    }
 
     @Override
     public String getProcInsId() {

+ 5 - 1
src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/web/ConstructionController.java

@@ -12,6 +12,7 @@ import com.jeeplus.modules.act.service.ActProcessService;
 import com.jeeplus.modules.act.service.ActTaskService;
 import com.jeeplus.modules.sg.managementcenter.activiti.entity.Construction;
 import com.jeeplus.modules.sg.managementcenter.activiti.service.ConstructionService;
+import com.jeeplus.modules.sys.utils.UserUtils;
 import com.jeeplus.modules.test.activiti.entity.OALeave;
 import com.jeeplus.modules.test.activiti.service.OALeaveService;
 import org.activiti.engine.repository.ProcessDefinition;
@@ -93,8 +94,10 @@ public class ConstructionController extends BaseController {
 			constructionService.save(construction);//保存
 			// 启动流程
 			ProcessDefinition p = actProcessService.getProcessDefinition(construction.getAct().getProcDefId());
+			Map<String, Object> vars = Maps.newHashMap();
+			vars.put("processer", UserUtils.get(construction.getTuser().getId()).getLoginName());
 			String title = construction.getCurrentUser().getName()+"在"+ DateUtils.getDateTime()+"发起"+p.getName();
-			actTaskService.startProcess(p.getKey(),  "xm_construction_clarificaiton", construction.getId(), title);
+			actTaskService.startProcessNew(p.getKey(),  "xm_construction_clarificaiton", construction.getId(), title,vars);
 			j.setMsg("发起流程审批成功!");
 			j.getBody().put("targetUrl",  "/act/task/process/");
 		}else{
@@ -104,6 +107,7 @@ public class ConstructionController extends BaseController {
 			// 完成流程任务
 			Map<String, Object> vars = Maps.newHashMap();
 			vars.put("reapply", "yes".equals(construction.getAct().getFlag())? true : false);
+			vars.put("processer", construction.getUser().getId());
 			actTaskService.complete(construction.getAct().getTaskId(), construction.getAct().getProcInsId(), construction.getAct().getComment(), construction.getContent(), vars);
 			j.setMsg("提交成功!");
 			j.getBody().put("targetUrl",  "/act/task/todo/");

+ 8 - 0
src/main/webapp/webpage/modules/sg/managementcenter/activiti/constructionAudit.jsp

@@ -130,6 +130,14 @@
 						</div>
 						<hr>
 						<div class="form-group">
+							<label class="col-sm-2 control-label"><font color="red">*</font>归属用户:</label>
+							<div class="col-sm-10">
+								<sys:userselect id="tuser" name="tuser.id" value="${construction.tuser.id}" labelName="tuser.name" labelValue="${construction.tuser.name}"
+												cssClass="form-control required"/>
+							</div>
+						</div>
+						<hr>
+						<div class="form-group">
 							<label class="col-sm-2 control-label"><font color="red">*</font>项目号:</label>
 							<div class="col-sm-10">
 									${fns:unescapeHtml(construction.projectId)}

+ 8 - 0
src/main/webapp/webpage/modules/sg/managementcenter/activiti/constructionForm.jsp

@@ -70,6 +70,14 @@
 						</div>
 						<hr>
 						<div class="form-group">
+							<label class="col-sm-2 control-label"><font color="red">*</font>归属用户:</label>
+							<div class="col-sm-10">
+								<sys:userselect id="tuser" name="tuser.id" value="${construction.tuser.id}" labelName="tuser.name" labelValue="${construction.tuser.name}"
+												cssClass="form-control required"/>
+							</div>
+						</div>
+						<hr>
+						<div class="form-group">
 							<label class="col-sm-2 control-label"><font color="red">*</font>项目号:</label>
 							<div class="col-sm-10">
 								<div id='projectId'>