diff --git a/src/main/java/neatlogic/framework/process/constvalue/ProcessTaskAuditDetailType.java b/src/main/java/neatlogic/framework/process/constvalue/ProcessTaskAuditDetailType.java index 0bcb0d24fd4681b2da8af637304b6a95b730f26e..b0ee72831cc8edd892c1b9c353af23692fc7fd31 100644 --- a/src/main/java/neatlogic/framework/process/constvalue/ProcessTaskAuditDetailType.java +++ b/src/main/java/neatlogic/framework/process/constvalue/ProcessTaskAuditDetailType.java @@ -22,6 +22,8 @@ public enum ProcessTaskAuditDetailType implements IProcessTaskAuditDetailType { FOCUSUSER("focususer","工单关注人","focusUser","oldFocusUser",17, false), TASK("task", "任务", "task", "oldTask", 18, false), AUTOMATICINFO("automaticinfo", "自动处理", "automaticinfo", "oldAutomaticInfo", 19, false), + DESCRIPTION("description", "描述", "description", "oldDescription", 21, true), + OPINION("opinion", "意见", "opinion", "oldOpinion", 22, true), ; private String value; diff --git a/src/main/java/neatlogic/framework/process/constvalue/ProcessTaskOperationType.java b/src/main/java/neatlogic/framework/process/constvalue/ProcessTaskOperationType.java index feb7836df6288021b428b9c961583596525ccdbf..e27e742803b67770116312535f7aaed4b7fae21a 100644 --- a/src/main/java/neatlogic/framework/process/constvalue/ProcessTaskOperationType.java +++ b/src/main/java/neatlogic/framework/process/constvalue/ProcessTaskOperationType.java @@ -58,6 +58,7 @@ public enum ProcessTaskOperationType implements IOperationType { STEP_BACK("back", new I18n("回退")),//下一步骤列表中有已激活的步骤时,有回退权限 STEP_SAVE("save", new I18n("暂存")), STEP_REAPPROVAL("reapproval", new I18n("重审")), + STEP_FAIL("fail", new I18n("失败")), /** * 修改上报内容 * 被授权的对象可在该步骤处于‘待处理’或‘进行中’时修改上报内容,如果同时有多个“待处理”或‘进行中’的步骤,则将每个步骤中配置的授权对象取并集; diff --git a/src/main/java/neatlogic/framework/process/dao/mapper/ProcessTaskMapper.java b/src/main/java/neatlogic/framework/process/dao/mapper/ProcessTaskMapper.java index dcfdd8302455165dc96ec82b1f71b0c54d7531f4..a52cab726405132d1468b49451d54ba91eae5adc 100644 --- a/src/main/java/neatlogic/framework/process/dao/mapper/ProcessTaskMapper.java +++ b/src/main/java/neatlogic/framework/process/dao/mapper/ProcessTaskMapper.java @@ -379,6 +379,8 @@ public interface ProcessTaskMapper { int insertProcessTaskStepUser(ProcessTaskStepUserVo processTaskStepUserVo); + int insertProcessTaskStepMinorUser(ProcessTaskStepUserVo processTaskStepUserVo); + int insertProcessTaskStepWorkerPolicy(ProcessTaskStepWorkerPolicyVo processTaskStepWorkerPolicyVo); int insertProcessTaskStepRel(ProcessTaskStepRelVo processTaskStepRelVo); diff --git a/src/main/java/neatlogic/framework/process/dao/mapper/ProcessTaskMapper.xml b/src/main/java/neatlogic/framework/process/dao/mapper/ProcessTaskMapper.xml index 34d977c6a53539a57f3f9222f90c87bd4e19434f..9243c03b3256928bb6dda543c59ad7a4edcce8d3 100644 --- a/src/main/java/neatlogic/framework/process/dao/mapper/ProcessTaskMapper.xml +++ b/src/main/java/neatlogic/framework/process/dao/mapper/ProcessTaskMapper.xml @@ -3290,6 +3290,23 @@ limitations under the License. #{startTime}) + + INSERT INTO `processtask_step_user` (`processtask_id`, + `processtask_step_id`, + `user_uuid`, + `user_type`, + `user_name`, + `status`) + VALUES (#{processTaskId}, + #{processTaskStepId}, + #{userUuid}, + 'minor', + #{userName}, + #{status}) + ON DUPLICATE KEY UPDATE + `status` = #{status} + + insert ignore INTO `processtask_step_config` (`hash`, `config`) 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 6d03fddd69f096df91e81254e473175440228888..24f78740975d1baaaa96b27f38c6ab8ae4a4324d 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/IProcessStepHandler.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/IProcessStepHandler.java @@ -281,6 +281,15 @@ public interface IProcessStepHandler { @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) int scoreProcessTask(ProcessTaskVo currentProcessTaskVo); + /** + * 失败 + * + * @param currentProcessTaskStepVo 步骤信息 + * @return 1代表成功 + */ + @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) + int fail(ProcessTaskStepVo currentProcessTaskStepVo); + /** * 获取对应步骤的minor worker * @@ -308,7 +317,7 @@ public interface IProcessStepHandler { * -1代表不限制 * @return */ - default int getForwardOutnputQuantity() { + default int getForwardOutputQuantity() { return -1; } /** 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 631ba66987cb5ceebab96be6f657c56135fa733f..c7bd8dd5fa3acdac4211fd5f8817a649b7ac2776 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java @@ -909,12 +909,16 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { /* 保存表单属性值 **/ IProcessStepHandlerUtil.saveForm(currentProcessTaskStepVo); } - + String majorUserUuid = null; + List processTaskStepUserList = processTaskMapper.getProcessTaskStepUserByStepId(currentProcessTaskStepVo.getId(), ProcessUserType.MAJOR.getValue()); + if (CollectionUtils.isNotEmpty(processTaskStepUserList)) { + majorUserUuid = processTaskStepUserList.get(0).getUserUuid(); + } /* 更新处理人状态 **/ ProcessTaskStepUserVo processTaskMajorUser = new ProcessTaskStepUserVo( currentProcessTaskStepVo.getProcessTaskId(), currentProcessTaskStepVo.getId(), - UserContext.get().getUserUuid() + majorUserUuid ); // 兼容automatic作业无用户 processTaskMajorUser.setStatus(ProcessTaskStepUserStatus.DONE.getValue()); @@ -1103,11 +1107,16 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { IProcessStepHandlerUtil.saveForm(currentProcessTaskStepVo); // } + String majorUserUuid = null; + List processTaskStepUserList = processTaskMapper.getProcessTaskStepUserByStepId(currentProcessTaskStepVo.getId(), ProcessUserType.MAJOR.getValue()); + if (CollectionUtils.isNotEmpty(processTaskStepUserList)) { + majorUserUuid = processTaskStepUserList.get(0).getUserUuid(); + } /* 更新处理人状态 **/ ProcessTaskStepUserVo processTaskMajorUser = new ProcessTaskStepUserVo( currentProcessTaskStepVo.getProcessTaskId(), currentProcessTaskStepVo.getId(), - UserContext.get().getUserUuid() + majorUserUuid ); // 兼容automatic作业无用户 processTaskMajorUser.setStatus(ProcessTaskStepUserStatus.DONE.getValue()); @@ -2655,6 +2664,44 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { } } + @Override + public final int fail(ProcessTaskStepVo currentProcessTaskStepVo) { + String majorUserUuid = null; + List processTaskStepUserList = processTaskMapper.getProcessTaskStepUserByStepId(currentProcessTaskStepVo.getId(), ProcessUserType.MAJOR.getValue()); + if (CollectionUtils.isNotEmpty(processTaskStepUserList)) { + majorUserUuid = processTaskStepUserList.get(0).getUserUuid(); + } + /* 更新处理人状态 **/ + ProcessTaskStepUserVo processTaskMajorUser = new ProcessTaskStepUserVo( + currentProcessTaskStepVo.getProcessTaskId(), + currentProcessTaskStepVo.getId(), + majorUserUuid + ); + // 兼容automatic作业无用户 + processTaskMajorUser.setStatus(ProcessTaskStepUserStatus.DONE.getValue()); + processTaskMajorUser.setUserType(ProcessUserType.MAJOR.getValue()); + processTaskMapper.updateProcessTaskStepUserStatus(processTaskMajorUser); + /* 清空worker表 **/ + processTaskMapper.deleteProcessTaskStepWorker(new ProcessTaskStepWorkerVo(currentProcessTaskStepVo.getId())); + processTaskMapper.deleteProcessTaskStepReapprovalRestoreBackupByBackupStepId(currentProcessTaskStepVo.getId()); + + String error = currentProcessTaskStepVo.getParamObj().getString("error"); + + /* 更新步骤状态 **/ + currentProcessTaskStepVo.setIsActive(0); + currentProcessTaskStepVo.setUpdateEndTime(1); + currentProcessTaskStepVo.setStatus(ProcessTaskStepStatus.FAILED.getValue()); + currentProcessTaskStepVo.setError(error); + updateProcessTaskStepStatus(currentProcessTaskStepVo); + /* 异常提醒 **/ + IProcessStepHandlerUtil.saveStepRemind(currentProcessTaskStepVo, currentProcessTaskStepVo.getStartProcessTaskStepId(), error, ProcessTaskStepRemindType.ERROR); + /* 触发通知 **/ + IProcessStepHandlerUtil.notify(currentProcessTaskStepVo, ProcessTaskStepNotifyTriggerType.FAILED); + /* 执行动作 **/ + IProcessStepHandlerUtil.action(currentProcessTaskStepVo, ProcessTaskStepNotifyTriggerType.FAILED); + return 1; + } + @Override public List getMinorWorkerList(ProcessTaskStepVo taskStepVo) { return myMinorWorkerList(taskStepVo); diff --git a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerFactory.java b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerFactory.java index 89c3e4f664a1e44cb3655d489dad43c22a3b4445..37af91d47f315612c081136ddf69057a780ba1ec 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerFactory.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerFactory.java @@ -89,7 +89,7 @@ public class ProcessStepHandlerFactory extends ModuleInitializedListenerBase { processStepHandlerVo.setIsActive(1); processStepHandlerVo.setIsAllowStart((component.isAllowStart()!=null&&component.isAllowStart())?1:0); processStepHandlerVo.setForwardInputQuantity(component.getForwardInputQuantity()); - processStepHandlerVo.setForwardOutputQuantity(component.getForwardOutnputQuantity()); + processStepHandlerVo.setForwardOutputQuantity(component.getForwardOutputQuantity()); processStepHandlerVo.setBackwardInputQuantity(component.getBackwardInputQuantity()); processStepHandlerVo.setBackwardOutputQuantity(component.getBackwardOutputQuantity()); processStepHandlerList.add(processStepHandlerVo);