Przeglądaj źródła

更新流程和任务的subject

liyuan 2 lat temu
rodzic
commit
2475a36b85

+ 23 - 2
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/listener/TaskCompleteEventListener.java

@@ -5,8 +5,12 @@ import java.util.Map;
 
 import javax.annotation.Resource;
 
+import com.lc.ibps.bpmn.api.cmd.ProcInstCmd;
+import com.lc.ibps.bpmn.api.service.BpmProcInstService;
+import com.lc.ibps.bpmn.cmd.IbpsProcInstCmd;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.core.Ordered;
 import org.springframework.stereotype.Service;
@@ -97,7 +101,8 @@ public class TaskCompleteEventListener implements ApplicationListener<TaskComple
 	private BpmOperNotifyRepository bpmOperNotifyRepository;
 	@Resource
 	private BpmTaskChangeRepository bpmTaskChangeRepository;
-	
+	@Autowired
+	private BpmProcInstService bpmProcInstService;
 	@Override
 	public int getOrder(){return 1;}
 
@@ -148,6 +153,9 @@ public class TaskCompleteEventListener implements ApplicationListener<TaskComple
 		
 		// 更新流程实例
 //		updateProcInst(cmd);
+
+		//更新流程和任务的subject
+		updateSubject(delegateTask, cmd);
 		
 		// 完成转办代理任务
 		BpmTaskChange bpmTaskChangeDomain = bpmTaskChangeRepository.newInstance();
@@ -166,7 +174,8 @@ public class TaskCompleteEventListener implements ApplicationListener<TaskComple
 			this.handleRevokedComplete(delegateTask, cmd, actionCmd);
 		}
 	}
-	
+
+
 	private void saveLog(TaskFinishCmd cmd, IBpmTask bpmTask){
 		// 流程操作日志
 		BpmOperLogPo po = BpmOperLogBuilder.build(bpmTask, cmd);
@@ -606,5 +615,17 @@ public class TaskCompleteEventListener implements ApplicationListener<TaskComple
 		bpmTaskAssignDomain.delByTask(taskId);
 		bpmTaskDomain.delete(taskId);
 	}
+	private void updateSubject(BpmDelegateTask delegateTask, TaskFinishCmd cmd) {
+
+		String procInstId=String.valueOf(delegateTask.getVariable(BpmConstants.PROCESS_INST_ID));
+		BpmInstPo instance= bpmInstRepository.get(procInstId);
+
+		ProcInstCmd procInstCmd = new IbpsProcInstCmd() ;
+		procInstCmd.setBusData(cmd.getBusData());
+		procInstCmd.setCurUserName(cmd.getCurUserName());
+		procInstCmd.setBusinessKey(cmd.getBusinessKey());
+		((IbpsProcInstCmd) procInstCmd).setVariables(cmd.getVariables());
+		bpmProcInstService.saveSubject(instance,procInstCmd);
+	}
 
 }

+ 21 - 18
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/service/impl/BpmProcInstServiceImpl.java

@@ -129,15 +129,8 @@ public class BpmProcInstServiceImpl implements BpmProcInstService {
 		try {
 			StopWatchUtil.initAndStartLocal(stepId, Level.DEBUG, step, "getBpmInst");
 			instance = getBpmInst(procInstCmd, false);//TODO 性能点
-			//名称后拼接年份,部门,人员名称
 
-			APIResult<PartyEmployeePo> user = iPartyEmployeeService.get(ContextUtil.getCurrentUserId());
-			String orgName =user.getData().getOrgName();
-			String name = user.getData().getName();
-//			if(name==null||name.equals("")){ //回滚已办事宜任务发起人数据不对问题
-//				name="张维敏";
-//			}
-			instance.setSubject(instance.getSubject()+"{"+this.getSysYear()+"/"+orgName+"/"+name+"}");
+			instance.setSubject(instance.getSubject());
 
 			StopWatchUtil.stopAndStartNewLocal(stepId, step, "baseActionCmd");
 			// 当前用户
@@ -240,10 +233,7 @@ public class BpmProcInstServiceImpl implements BpmProcInstService {
 			if(StringUtil.isNotEmpty(subject)) {
 				instance.setSubject(subject); //设置标题
 			}else{
-				APIResult<PartyEmployeePo> user = iPartyEmployeeService.get(ContextUtil.getCurrentUserId());
-				String orgName = user.getData().getOrgName();
-				String name = user.getData().getName();
-				instance.setSubject(instance.getSubject()+"{"+this.getSysYear()+"/"+orgName+"/"+name+"}");
+				instance.setSubject(instance.getSubject());
 			}
 			StopWatchUtil.stopAndStartNewLocal(stepId, step, "baseActionCmd");
 			String curUser = StringUtil.isNotEmpty(userId)  ? userId :  procInstCmd.getCurUser();
@@ -434,16 +424,29 @@ public class BpmProcInstServiceImpl implements BpmProcInstService {
 	 * @param instance
 	 * @param procInstCmd
 	 */
-	private void saveSubject(BpmInstPo instance, ProcInstCmd procInstCmd) {
+	@Override
+	public void saveSubject(IBpmProcInst instance, ProcInstCmd procInstCmd) {
 		// 设置实例标题
-		IBpmProcDefine<IBpmProcExtendDefine> processDef = bpmDefineReader.getBpmProcDefine(instance.getProcDefId());
-		String subject = bpmInstRepository.getSubject(processDef, procInstCmd, instance);
-		instance.setSubject(subject);
-		BpmInst bpmInst = bpmInstRepository.newInstance(instance);
+		if(!(instance instanceof BpmInstPo)){
+			return;
+		}
+		//名称后拼接年份,部门,人员名称
+		APIResult<PartyEmployeePo> user = iPartyEmployeeService.get(ContextUtil.getCurrentUserId());
+		String orgName =user.getData().getOrgName();
+		String name = user.getData().getName();
+		String moreInfo = "{"+this.getSysYear()+"/"+orgName+"/"+name+"}";
+
+		BpmInstPo bpmInstPo = (BpmInstPo)instance;
+		IBpmProcDefine<IBpmProcExtendDefine> processDef = bpmDefineReader.getBpmProcDefine(bpmInstPo.getProcDefId());
+		String subject = bpmInstRepository.getSubject(processDef, procInstCmd, bpmInstPo);
+		subject = subject + moreInfo;
+
+		bpmInstPo.setSubject(subject);
+		BpmInst bpmInst = bpmInstRepository.newInstance(bpmInstPo);
 		bpmInst.update();
 		// 修改任务标题
 		bpmTaskRepository.setForUpdate();
-		List<BpmTaskPo> listTasks = bpmTaskRepository.findByInstId(instance.getId());
+		List<BpmTaskPo> listTasks = bpmTaskRepository.findByInstId(bpmInstPo.getId());
 		bpmTaskRepository.removeForUpdate();
 		for (BpmTaskPo defaultBpmTask : listTasks) {
 			defaultBpmTask.setSubject(subject);

+ 3 - 1
ibps-bpmnbase-root/modules/bpmn-api/src/main/java/com/lc/ibps/bpmn/api/service/BpmProcInstService.java

@@ -80,7 +80,9 @@ public interface BpmProcInstService extends IScript {
 	 * @return
 	 */
 	Future<IBpmProcInst> startProcInstAsync(ProcInstCmd procInstCmd);
-	
+
+	void saveSubject(IBpmProcInst instance, ProcInstCmd procInstCmd);
+
 	/**
 	 * 保存流程实例为草稿。
 	 * <pre>