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);