diff --git a/src/main/java/neatlogic/framework/process/stephandler/core/IProcessStepHandler.java b/src/main/java/neatlogic/framework/process/stephandler/core/IProcessStepHandler.java index af737fce6a1641ee412c93c614729768ec98ba59..3364895ffca8cf0ea62bc3638a147717fb906f59 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/IProcessStepHandler.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/IProcessStepHandler.java @@ -101,6 +101,16 @@ public interface IProcessStepHandler { @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) int assign(ProcessTaskStepVo currentProcessTaskStepVo) throws ProcessTaskException; + /** + * 分配处理人且更新步骤状态 + * + * @param currentProcessTaskStepVo 步骤信息 + * @return 1代表成功 + * @throws ProcessTaskException 异常 + */ + @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) + int assignAndUpdateStatus(ProcessTaskStepVo currentProcessTaskStepVo) throws ProcessTaskException; + /** * 挂起流程步骤 * diff --git a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java index c3217c4e53b0c39efaa0d15b338808867ac29e3e..7cd4aca0eb0f333c4f34c339d2cbb044eb0d2c54 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java @@ -530,6 +530,18 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { */ protected abstract int myAssign(ProcessTaskStepVo currentProcessTaskStepVo, Set workerSet) throws ProcessTaskException; + @Override + public final int assignAndUpdateStatus(ProcessTaskStepVo currentProcessTaskStepVo) throws ProcessTaskException { + IProcessTaskCrossoverMapper processTaskCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskCrossoverMapper.class); + ProcessTaskStepVo processTaskStepRealTimeStatus = processTaskCrossoverMapper.getProcessTaskStepBaseInfoById(currentProcessTaskStepVo.getId()); + assign(currentProcessTaskStepVo); + if (!Objects.equals(currentProcessTaskStepVo.getStatus(), processTaskStepRealTimeStatus.getStatus())) { + processTaskStepRealTimeStatus.setStatus(currentProcessTaskStepVo.getStatus()); + updateProcessTaskStepStatus(processTaskStepRealTimeStatus); + } + return 1; + } + protected int defaultAssign(ProcessTaskStepVo currentProcessTaskStepVo, Set workerSet) throws ProcessTaskException { IProcessStepHandlerCrossoverUtil processStepHandlerCrossoverUtil = CrossoverServiceFactory.getApi(IProcessStepHandlerCrossoverUtil.class);