فهرست منبع

Merge branch 'FIXBUG_subject_and_opinion_need_to_save' of wy/zdqy_ibps into matser

吴懿 2 سال پیش
والد
کامیت
f91334f112

+ 41 - 0
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/handler/userTask/TaskActionSaveHandler.java

@@ -0,0 +1,41 @@
+package com.lc.ibps.bpmn.handler.userTask;
+
+import com.lc.ibps.base.core.util.string.StringUtil;
+import com.lc.ibps.bpmn.api.constant.NodeStatus;
+import com.lc.ibps.bpmn.api.plugin.define.ITaskActionHandlerDefine;
+import com.lc.ibps.bpmn.api.plugin.runtime.ITaskActionHandler;
+import com.lc.ibps.bpmn.api.plugin.session.TaskActionPluginSession;
+import com.lc.ibps.bpmn.cmd.IbpsTaskFinishCmd;
+import com.lc.ibps.bpmn.domain.BpmApprove;
+import com.lc.ibps.bpmn.persistence.entity.BpmApprovePo;
+import com.lc.ibps.bpmn.repository.BpmApproveRepository;
+
+import javax.annotation.Resource;
+
+public class TaskActionSaveHandler extends TaskActionNoneHandler implements ITaskActionHandler {
+
+    @Resource
+    private BpmApproveRepository bpmApproveRepository;
+
+    @Override
+    public Boolean execute(TaskActionPluginSession pluginSession, ITaskActionHandlerDefine pluginDefine) {
+        // just save opinion, no status changed.
+        handleOpinion(pluginSession);
+        return true;
+    }
+
+    private void handleOpinion(TaskActionPluginSession pluginSession){
+
+        IbpsTaskFinishCmd finishCmd = (IbpsTaskFinishCmd) pluginSession.getTaskFinishCmd();
+        if(StringUtil.isEmpty(finishCmd.getApprovalOpinion())){
+            finishCmd.setApprovalOpinion("");
+        }
+
+        BpmApprovePo bpmApprovePo = bpmApproveRepository.getByTaskId(
+                finishCmd.getTaskId(), NodeStatus.PENDING.getKey());
+        bpmApprovePo.setOpinion(finishCmd.getApprovalOpinion());
+
+        BpmApprove bpmApproveDomain = bpmApproveRepository.newInstance(bpmApprovePo);
+        bpmApproveDomain.update();
+    }
+}

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

@@ -127,11 +127,7 @@ public class TaskCompleteEventListener implements ApplicationListener<TaskComple
 		
 		// 更新执行数据
 		updateExec(delegateTask, bpmTask, actionCmd);
-		
-		// 更新流程实例
-		updateSubject(delegateTask,cmd);
 
-		
 		// 完成转办代理任务
 		BpmTaskChange bpmTaskChangeDomain = bpmTaskChangeRepository.newInstance();
 		bpmTaskChangeDomain.complete(delegateTask, actionCmd.getCurUser());
@@ -591,16 +587,4 @@ public class TaskCompleteEventListener implements ApplicationListener<TaskComple
 		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);
-	}
 }

+ 0 - 11
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/listener/TaskCreateEventListener.java

@@ -186,8 +186,6 @@ public class TaskCreateEventListener implements ApplicationListener<TaskCreateEv
 //
 //			}
 //		}).start();
-		//更新流程和任务的subject
-		updateSubject(delegateTask, taskCmd,instance);
 	}
 
 	/**
@@ -211,13 +209,4 @@ public class TaskCreateEventListener implements ApplicationListener<TaskCreateEv
 		BpmApprove bpmApproveDomain = bpmApproveRepository.newInstance(approvePo);
 		bpmApproveDomain.create();
 	}
-	private void updateSubject(BpmDelegateTask delegateTask, ActionCmd cmd, IBpmProcInst instance) {
-
-		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);
-	}
 }

+ 22 - 0
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/service/impl/BpmTaskActionServiceImpl.java

@@ -16,6 +16,9 @@ import java.util.concurrent.Future;
 
 import javax.annotation.Resource;
 
+import com.lc.ibps.bpmn.api.cmd.ProcInstCmd;
+import com.lc.ibps.bpmn.api.constant.NodeStatus;
+import com.lc.ibps.bpmn.cmd.IbpsProcInstCmd;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.event.Level;
@@ -171,6 +174,8 @@ public class BpmTaskActionServiceImpl implements BpmTaskActionService{
 			if(!StringValidator.isZeroEmpty(bpmTask.getTaskId())){
 				StopWatchUtil.stopAndStartNewLocal(localId, step, "getByTaskId");
 				task=natTaskService.getByTaskId(bpmTask.getTaskId());//TODO 性能略低
+				//update subject
+				updateSubject(cmd,task);
 			}
 			new Thread(() ->{
 				StopWatchUtil.stopAndStartNewLocal(localId, step, "publicDoNextEvent.prev");
@@ -629,4 +634,21 @@ public class BpmTaskActionServiceImpl implements BpmTaskActionService{
 		//TODO 设置任务代理
 	}
 
+	private void updateSubject( IbpsTaskFinishCmd cmd, BpmDelegateTask delegateTask ) {
+		IBpmProcInst inst = bpmInstService.getProcInst(cmd.getInstId());
+		ProcInstCmd procInstCmd = new IbpsProcInstCmd() ;
+		procInstCmd.setBusData(cmd.getBusData());
+		procInstCmd.setCurUserName(cmd.getCurUserName());
+		procInstCmd.setBusinessKey(cmd.getBusinessKey());
+		((IbpsProcInstCmd) procInstCmd).setVariables(cmd.getVariables());
+		bpmInstService.saveSubject(inst,procInstCmd);
+
+		// update bpmn variable for next task.
+		if(cmd.getActionName().equals(NodeStatus.SAVE.getKey())){
+			natTaskService.setVariable(cmd.getTaskId(), BpmConstants.SUBJECT, inst.getSubject());
+		}else {
+			cmd.getVariables().put(BpmConstants.SUBJECT, inst.getSubject());
+		}
+	}
+
 }

+ 2 - 1
ibps-bpmn-root/modules/bpmn-biz/src/main/resources/conf/ibps-bpmn-task-handler.xml

@@ -30,5 +30,6 @@
 	<bean id="taskActionAssistHandler" class="com.lc.ibps.bpmn.handler.userTask.TaskActionAssistHandler"/>-->
 	<!-- 流程沟通处理器 
 	<bean id="taskActionCommuHandler" class="com.lc.ibps.bpmn.core.engine.task.handler.TaskActionCommuHandler"/> -->
-	
+	<!-- 保存处理器 -->
+	<bean id="taskActionSaveHandler" class="com.lc.ibps.bpmn.handler.userTask.TaskActionSaveHandler"/>
 </beans>

+ 1 - 1
ibps-bpmn-root/modules/bpmn-biz/src/main/resources/conf/taskActionPlugins.xml

@@ -26,7 +26,7 @@
     
     <taskAction name="save" supportType="both" actionType="other" script="true" init="true">
         <description value="保存"/>
-        <handlerClass value="taskActionNoneHandler"/>
+        <handlerClass value="taskActionSaveHandler"/>
     </taskAction>
  
     <taskAction name="abandon" supportType="signtask" actionType="approve" script="true" init="false">

+ 8 - 1
ibps-provider-base-root/modules/provider-bpmn-api/src/main/java/com/lc/ibps/bpmn/vo/BpmActionSaveVo.java

@@ -24,11 +24,18 @@ public class BpmActionSaveVo extends BpmActionBaseVo {
 	
 	@ApiModelProperty(value = "表单数据", example = "表单提交的JSON格式数据,可以在表单预览界面找到对应格式。")
 	protected String data;
+	@ApiModelProperty(value = "意见")
+	protected String opinion;
 	public String getData() {
 		return data;
 	}
 	public void setData(String busData) {
 		this.data = busData;
 	}
-	
+	public String getOpinion() {
+		return opinion;
+	}
+	public void setOpinion(String opinion) {
+		this.opinion = opinion;
+	}
 }

+ 2 - 2
ibps-provider-root/modules/provider-bpmn/src/main/java/com/lc/ibps/bpmn/provider/BpmTaskProvider.java

@@ -2774,8 +2774,8 @@ public class BpmTaskProvider extends GenericProvider implements IBpmTaskService,
 					saveVo.getTaskId(), 
 					null,
 					NodeStatus.SAVE.getKey(), 
-					null, 
-					null, 
+					null,
+					saveVo.getOpinion(),
 					saveVo.getData(), 
 					null, 
 					null,