Commit d382ecaa authored by 雍欢's avatar 雍欢

流程节点审批(大于多少人通过或超过一半人通过)

parent f980a78d
...@@ -30,8 +30,7 @@ public interface ApprovalRuleApplication { ...@@ -30,8 +30,7 @@ public interface ApprovalRuleApplication {
/** /**
* 保存审批要素 * 保存审批要素
* *
* @param approvalElement * @param approvalElement 审批要素
* 审批要素
* @return 审批要素ID * @return 审批要素ID
*/ */
String saveApprovalElement(ApprovalElement approvalElement); String saveApprovalElement(ApprovalElement approvalElement);
...@@ -39,8 +38,7 @@ public interface ApprovalRuleApplication { ...@@ -39,8 +38,7 @@ public interface ApprovalRuleApplication {
/** /**
* 加载审批要素 * 加载审批要素
* *
* @param id * @param id 审批要素ID
* 审批要素ID
* @return 审批要素实体 * @return 审批要素实体
*/ */
ApprovalElement loadApprovalElement(String id); ApprovalElement loadApprovalElement(String id);
...@@ -48,16 +46,14 @@ public interface ApprovalRuleApplication { ...@@ -48,16 +46,14 @@ public interface ApprovalRuleApplication {
/** /**
* 删除审批要素 * 删除审批要素
* *
* @param ids * @param ids 审批要素ID列表
* 审批要素ID列表
*/ */
void deleteApprovalElements(List<String> ids); void deleteApprovalElements(List<String> ids);
/** /**
* 分页查询审批要素 * 分页查询审批要素
* *
* @param queryRequest * @param queryRequest 查询模型
* 查询模型
* @return * @return
*/ */
Map<String, Object> slicedQueryApprovalElements(CodeAndNameQueryRequest queryRequest); Map<String, Object> slicedQueryApprovalElements(CodeAndNameQueryRequest queryRequest);
...@@ -79,8 +75,7 @@ public interface ApprovalRuleApplication { ...@@ -79,8 +75,7 @@ public interface ApprovalRuleApplication {
/** /**
* 保存审批处理人类别 * 保存审批处理人类别
* *
* @param approvalHandlerKind * @param approvalHandlerKind 审批处理人类别
* 审批处理人类别
* @return 审批处理人类别ID * @return 审批处理人类别ID
*/ */
String saveApprovalHandlerKind(ApprovalHandlerKind approvalHandlerKind); String saveApprovalHandlerKind(ApprovalHandlerKind approvalHandlerKind);
...@@ -117,12 +112,9 @@ public interface ApprovalRuleApplication { ...@@ -117,12 +112,9 @@ public interface ApprovalRuleApplication {
/** /**
* 保存流程审批要素 * 保存流程审批要素
* *
* @param procId * @param procId 流程ID
* 流程ID * @param procUnitId 流程环节ID
* @param procUnitId * @param elementIds 审批要素ID列表
* 流程环节ID
* @param elementIds
* 审批要素ID列表
*/ */
void saveProcApprovalElement(String procId, String procUnitId, List<String> elementIds); void saveProcApprovalElement(String procId, String procUnitId, List<String> elementIds);
...@@ -141,10 +133,8 @@ public interface ApprovalRuleApplication { ...@@ -141,10 +133,8 @@ public interface ApprovalRuleApplication {
/** /**
* 查询流程审批要素 * 查询流程审批要素
* *
* @param procId * @param procId 流程ID
* 流程ID * @param procUnitId 流程环节ID
* @param procUnitId
* 流程环节ID
* @return * @return
*/ */
List<ProcApprovalElementDesc> queryProcApprovalElements(String procId, String procUnitId); List<ProcApprovalElementDesc> queryProcApprovalElements(String procId, String procUnitId);
...@@ -164,8 +154,7 @@ public interface ApprovalRuleApplication { ...@@ -164,8 +154,7 @@ public interface ApprovalRuleApplication {
/** /**
* 更新流程审批规则 * 更新流程审批规则
* *
* @param approvalRule * @param approvalRule 审批规则
* 审批规则
* 原名称 * 原名称
*/ */
void updateApprovalRule(ApprovalRule approvalRule); void updateApprovalRule(ApprovalRule approvalRule);
...@@ -173,8 +162,7 @@ public interface ApprovalRuleApplication { ...@@ -173,8 +162,7 @@ public interface ApprovalRuleApplication {
/** /**
* 加载流程审批规则 * 加载流程审批规则
* *
* @param id * @param id 流程审批规则ID
* 流程审批规则ID
* @return * @return
*/ */
ApprovalRule loadApprovalRule(String id); ApprovalRule loadApprovalRule(String id);
...@@ -182,34 +170,26 @@ public interface ApprovalRuleApplication { ...@@ -182,34 +170,26 @@ public interface ApprovalRuleApplication {
/** /**
* 删除流程审批规则 * 删除流程审批规则
* *
* @param ids * @param ids 审批规则ID列表
* 审批规则ID列表
*/ */
void deleteApprovalRules(List<String> ids); void deleteApprovalRules(List<String> ids);
/** /**
* 移动审批规则 * 移动审批规则
* *
* @param id * @param id 审批规则ID
* 审批规则ID * @param parentId 父ID
* @param parentId
* 父ID
*/ */
void moveApprovalRules(String id, String parentId); void moveApprovalRules(String id, String parentId);
/** /**
* 查询流程审批规则 * 查询流程审批规则
* *
* @param orgId * @param orgId 组织ID
* 组织ID * @param procId 流程ID
* @param procId * @param procUnitId 流程环节ID
* 流程ID * @param procUnitName 流程环节名称
* @param procUnitId * @param parentId 父ID
* 流程环节ID
* @param procUnitName
* 流程环节名称
* @param parentId
* 父ID
* @return * @return
*/ */
Map<String, Object> queryApprovalRules(String orgId, String procId, String procUnitId, String procUnitName, String parentId); Map<String, Object> queryApprovalRules(String orgId, String procId, String procUnitId, String procUnitName, String parentId);
...@@ -217,12 +197,9 @@ public interface ApprovalRuleApplication { ...@@ -217,12 +197,9 @@ public interface ApprovalRuleApplication {
/** /**
* 查询流程审批规则 * 查询流程审批规则
* *
* @param procId * @param procId 流程Id
* 流程Id * @param procUnitId 流程环节ID
* @param procUnitId * @param parentId 父ID
* 流程环节ID
* @param parentId
* 父ID
* @return * @return
*/ */
List<ApprovalRule> queryApprovalRules(String procId, String procUnitId, String parentId); List<ApprovalRule> queryApprovalRules(String procId, String procUnitId, String parentId);
...@@ -230,30 +207,24 @@ public interface ApprovalRuleApplication { ...@@ -230,30 +207,24 @@ public interface ApprovalRuleApplication {
/** /**
* 保存审批规则要素 * 保存审批规则要素
* *
* @param approvalRuleId * @param approvalRuleId 审批规则ID
* 审批规则ID * @param approvalRuleElements 审批规则要素
* @param approvalRuleElements
* 审批规则要素
*/ */
void saveApprovalRuleElements(String approvalRuleId, List<ApprovalRuleElement> approvalRuleElements); void saveApprovalRuleElements(String approvalRuleId, List<ApprovalRuleElement> approvalRuleElements);
/** /**
* 删除审批规则要素 * 删除审批规则要素
* *
* @param approvalRuleId * @param approvalRuleId 流程审批规则ID
* 流程审批规则ID * @param ids 审批规则要素ID列表
* @param ids
* 审批规则要素ID列表
*/ */
void deleteApprovalRuleElements(String approvalRuleId, List<String> ids); void deleteApprovalRuleElements(String approvalRuleId, List<String> ids);
/** /**
* 查询审批规则要素 * 查询审批规则要素
* *
* @param approvalRuleId * @param approvalRuleId 审批规则ID
* 审批规则ID * @param queryRequest 分页信息
* @param queryRequest
* 分页信息
* @return * @return
*/ */
Map<String, Object> queryApprovalRuleElements(String approvalRuleId, EmptyQueryRequest queryRequest); Map<String, Object> queryApprovalRuleElements(String approvalRuleId, EmptyQueryRequest queryRequest);
...@@ -261,8 +232,7 @@ public interface ApprovalRuleApplication { ...@@ -261,8 +232,7 @@ public interface ApprovalRuleApplication {
/** /**
* 为流程图查询审批规则要素 * 为流程图查询审批规则要素
* *
* @param approvalRuleId * @param approvalRuleId 审批规则ID
* 审批规则ID
* @return * @return
*/ */
List<Map<String, Object>> queryApprovalRuleElementsForFlowChart(String approvalRuleId); List<Map<String, Object>> queryApprovalRuleElementsForFlowChart(String approvalRuleId);
...@@ -270,50 +240,56 @@ public interface ApprovalRuleApplication { ...@@ -270,50 +240,56 @@ public interface ApprovalRuleApplication {
/** /**
* 保存流程审批规则审批人 * 保存流程审批规则审批人
* *
* @param approvalRuleId * @param approvalRuleId 流程审批规则ID
* 流程审批规则ID * @param approvalRuleHandlers 流程审批规则处理人列表
* @param approvalRuleHandlers
* 流程审批规则处理人列表
*/ */
void saveApprovalRuleHandlers(String approvalRuleId, List<ApprovalRuleHandler> approvalRuleHandlers); void saveApprovalRuleHandlers(String approvalRuleId, List<ApprovalRuleHandler> approvalRuleHandlers);
/** /**
* 保存流程审批规则审批人明细 * 保存流程审批规则审批人明细
* *
* @param approvalRuleId * @param approvalRuleId 流程审批规则ID
* 流程审批规则ID * @param approvalRuleHandler 流程审批规则处理人
* @param approvalRuleHandler * @param taskExecuteMode 任务执行模式
* 流程审批规则处理人 * @param assistants 协审
* @param taskExecuteMode * @param ccs 抄送
* 任务执行模式 * @param fieldAuthorizations 字段授权
* @param assistants * @deprecated 已被 {@link #saveApprovalRuleHandler(String, ApprovalRuleHandler, TaskExecuteMode, Integer, List, List, List)} 替代。
* 协审
* @param ccs
* 抄送
* @param fieldAuthorizations
* 字段授权
*/ */
@Deprecated
void saveApprovalRuleHandler(String approvalRuleId, ApprovalRuleHandler approvalRuleHandler, TaskExecuteMode taskExecuteMode, void saveApprovalRuleHandler(String approvalRuleId, ApprovalRuleHandler approvalRuleHandler, TaskExecuteMode taskExecuteMode,
List<ApprovalRuleHandlerAssist> assistants, List<ApprovalRuleHandlerAssist> ccs, List<ApprovalRuleHandlerAssist> assistants, List<ApprovalRuleHandlerAssist> ccs,
List<ApprovalRuleHandlerUIElmentPermission> fieldAuthorizations); List<ApprovalRuleHandlerUIElmentPermission> fieldAuthorizations);
/**
* 保存流程审批规则审批人明细
*
* @param approvalRuleId 流程审批规则ID
* @param approvalRuleHandler 流程审批规则处理人
* @param taskExecuteMode 任务执行模式
* @param limitHandler 最少审批人数
* @param assistants 协审
* @param ccs 抄送
* @param fieldAuthorizations 字段授权
* @since 1.1.3
*/
void saveApprovalRuleHandler(String approvalRuleId, ApprovalRuleHandler approvalRuleHandler, TaskExecuteMode taskExecuteMode, Integer limitHandler,
List<ApprovalRuleHandlerAssist> assistants, List<ApprovalRuleHandlerAssist> ccs,
List<ApprovalRuleHandlerUIElmentPermission> fieldAuthorizations);
/** /**
* 删除流程审批规则审批人 * 删除流程审批规则审批人
* *
* @param approvalRule * @param approvalRule 流程审批规则
* 流程审批规则 * @param ids 流程审批规则审批人ID列表
* @param ids
* 流程审批规则审批人ID列表
*/ */
void deleteApprovalRuleHandlers(String approvalRuleId, List<String> ids); void deleteApprovalRuleHandlers(String approvalRuleId, List<String> ids);
/** /**
* 查询审批规则处理人 * 查询审批规则处理人
* *
* @param approvalRuleId * @param approvalRuleId 流程审批规则ID
* 流程审批规则ID * @param queryRequest 分页信息
* @param queryRequest
* 分页信息
* @return * @return
*/ */
Map<String, Object> queryApprovalRuleHandlers(String approvalRuleId, EmptyQueryRequest queryRequest); Map<String, Object> queryApprovalRuleHandlers(String approvalRuleId, EmptyQueryRequest queryRequest);
...@@ -321,8 +297,7 @@ public interface ApprovalRuleApplication { ...@@ -321,8 +297,7 @@ public interface ApprovalRuleApplication {
/** /**
* 查询审批环节协审人员 * 查询审批环节协审人员
* *
* @param approvalRuleHandlerId * @param approvalRuleHandlerId 审批规则处理人ID
* 审批规则处理人ID
* @return * @return
*/ */
Map<String, Object> queryAssistantHandlers(String approvalRuleHandlerId); Map<String, Object> queryAssistantHandlers(String approvalRuleHandlerId);
...@@ -330,8 +305,7 @@ public interface ApprovalRuleApplication { ...@@ -330,8 +305,7 @@ public interface ApprovalRuleApplication {
/** /**
* 查询抄送人员 * 查询抄送人员
* *
* @param approvalRuleHandlerId * @param approvalRuleHandlerId 审批规则处理人ID
* 审批规则处理人ID
* @return * @return
*/ */
Map<String, Object> queryCCHandlers(String approvalRuleHandlerId); Map<String, Object> queryCCHandlers(String approvalRuleHandlerId);
...@@ -339,8 +313,7 @@ public interface ApprovalRuleApplication { ...@@ -339,8 +313,7 @@ public interface ApprovalRuleApplication {
/** /**
* 查询界面元素权限 * 查询界面元素权限
* *
* @param approvalRuleHandlerId * @param approvalRuleHandlerId 审批规则处理人ID
* 审批规则处理人ID
* @return * @return
*/ */
Map<String, Object> queryUIElementPermissions(String approvalRuleHandlerId); Map<String, Object> queryUIElementPermissions(String approvalRuleHandlerId);
...@@ -348,12 +321,9 @@ public interface ApprovalRuleApplication { ...@@ -348,12 +321,9 @@ public interface ApprovalRuleApplication {
/** /**
* 获取审批处理人时间限制 * 获取审批处理人时间限制
* *
* @param procId * @param procId 流程ID
* 流程ID * @param procUnitId 流程环节ID
* @param procUnitId * @param approvalRuleHandlerId 审批规则处理人ID
* 流程环节ID
* @param approvalRuleHandlerId
* 审批规则处理人ID
* @return * @return
*/ */
LimitTime getApprovalRuleHandlerLimitTime(String procId, String procUnitId, String approvalRuleHandlerId); LimitTime getApprovalRuleHandlerLimitTime(String procId, String procUnitId, String approvalRuleHandlerId);
...@@ -361,8 +331,7 @@ public interface ApprovalRuleApplication { ...@@ -361,8 +331,7 @@ public interface ApprovalRuleApplication {
/** /**
* 加载审批规则处理人 * 加载审批规则处理人
* *
* @param approvalRuleHandlerId * @param approvalRuleHandlerId 审批规则处理人ID
* 审批规则处理人ID
* @return * @return
*/ */
ApprovalRuleHandler loadApprovalRuleHandler(String approvalRuleHandlerId); ApprovalRuleHandler loadApprovalRuleHandler(String approvalRuleHandlerId);
...@@ -374,10 +343,8 @@ public interface ApprovalRuleApplication { ...@@ -374,10 +343,8 @@ public interface ApprovalRuleApplication {
/** /**
* 删除审批规则适用范围 * 删除审批规则适用范围
* *
* @param approvalRuleId * @param approvalRuleId 流程审批规则
* 流程审批规则 * @param ids 审批规则要素ID列表
* @param ids
* 审批规则要素ID列表
*/ */
void deleteApprovalRuleScopes(String approvalRuleId, List<String> ids); void deleteApprovalRuleScopes(String approvalRuleId, List<String> ids);
...@@ -385,10 +352,8 @@ public interface ApprovalRuleApplication { ...@@ -385,10 +352,8 @@ public interface ApprovalRuleApplication {
/** /**
* 查询审批规则适用范围 * 查询审批规则适用范围
* *
* @param approvalRuleId * @param approvalRuleId 流程审批规则ID
* 流程审批规则ID * @param queryRequest 分页信息
* @param queryRequest
* 分页信息
* @return * @return
*/ */
Map<String, Object> queryApprovalRuleScopes(String approvalRuleId, EmptyQueryRequest queryRequest); Map<String, Object> queryApprovalRuleScopes(String approvalRuleId, EmptyQueryRequest queryRequest);
......
...@@ -3,6 +3,7 @@ package com.huigou.uasp.bpm.configuration.domain.model; ...@@ -3,6 +3,7 @@ package com.huigou.uasp.bpm.configuration.domain.model;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import javax.persistence.CascadeType; import javax.persistence.CascadeType;
import javax.persistence.Column; import javax.persistence.Column;
...@@ -27,7 +28,7 @@ import com.huigou.data.domain.model.TreeEntity; ...@@ -27,7 +28,7 @@ import com.huigou.data.domain.model.TreeEntity;
@Entity @Entity
@Table(name = "WF_ApprovalRule") @Table(name = "WF_ApprovalRule")
@EntityListeners({ CreatorAndModifierListener.class }) @EntityListeners({CreatorAndModifierListener.class})
public class ApprovalRule extends TreeEntity { public class ApprovalRule extends TreeEntity {
public static final String ROOT_ID = "1"; public static final String ROOT_ID = "1";
...@@ -291,9 +292,12 @@ public class ApprovalRule extends TreeEntity { ...@@ -291,9 +292,12 @@ public class ApprovalRule extends TreeEntity {
} }
public ApprovalRuleHandlerGroup findApprovalRuleHandlerGroup(Integer groupId) { public ApprovalRuleHandlerGroup findApprovalRuleHandlerGroup(Integer groupId) {
for (ApprovalRuleHandlerGroup item : this.getApprovalRuleHandlerGroups()) { List<ApprovalRuleHandlerGroup> approvalRuleHandlerGroups = this.getApprovalRuleHandlerGroups();
if (item.getGroupId().equals(groupId)) { if (approvalRuleHandlerGroups != null) {
return item; for (ApprovalRuleHandlerGroup group : approvalRuleHandlerGroups) {
if (Objects.equals(group.getGroupId(), groupId)) {
return group;
}
} }
} }
return null; return null;
...@@ -348,7 +352,7 @@ public class ApprovalRule extends TreeEntity { ...@@ -348,7 +352,7 @@ public class ApprovalRule extends TreeEntity {
return result; return result;
} }
public static boolean isCategory(int id){ public static boolean isCategory(int id) {
return CATEGORY.getId() == id; return CATEGORY.getId() == id;
} }
} }
......
...@@ -31,6 +31,13 @@ public class ApprovalRuleHandlerGroup extends AbstractEntity { ...@@ -31,6 +31,13 @@ public class ApprovalRuleHandlerGroup extends AbstractEntity {
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
@Column(name = "task_execute_mode_id") @Column(name = "task_execute_mode_id")
private TaskExecuteMode taskExecuteMode; private TaskExecuteMode taskExecuteMode;
/**
* 最少审批人数
*
* @since 1.3.3
*/
@Column(name = "limit_handler")
private Integer limitHandler;
public TaskExecuteMode getTaskExecuteMode() { public TaskExecuteMode getTaskExecuteMode() {
return taskExecuteMode; return taskExecuteMode;
...@@ -40,4 +47,11 @@ public class ApprovalRuleHandlerGroup extends AbstractEntity { ...@@ -40,4 +47,11 @@ public class ApprovalRuleHandlerGroup extends AbstractEntity {
this.taskExecuteMode = taskExecuteMode; this.taskExecuteMode = taskExecuteMode;
} }
public Integer getLimitHandler() {
return limitHandler;
}
public void setLimitHandler(Integer limitHandler) {
this.limitHandler = limitHandler;
}
} }
...@@ -21,28 +21,23 @@ public interface ActApplication { ...@@ -21,28 +21,23 @@ public interface ActApplication {
/** /**
* 保存任务扩展信息 * 保存任务扩展信息
* *
* @param runtimeTaskExtension * @param runtimeTaskExtension 运行时任务
* 运行时任务
*/ */
void saveTaskExtension(RuntimeTaskExtension runtimeTaskExtension); void saveTaskExtension(RuntimeTaskExtension runtimeTaskExtension);
/** /**
* 保存任务扩展信息 * 保存任务扩展信息
* *
* @param runtimeTaskExtension * @param runtimeTaskExtension 运行时任务
* 运行时任务 * @param initiatorPersonMemberId 发起人ID
* @param initiatorPersonMemberId
* 发起人ID
*/ */
void saveTaskExtension(RuntimeTaskExtension runtimeTaskExtension, String initiatorPersonMemberId); void saveTaskExtension(RuntimeTaskExtension runtimeTaskExtension, String initiatorPersonMemberId);
/** /**
* 保存任务扩展信息 * 保存任务扩展信息
* *
* @param runtimeTaskExtension * @param runtimeTaskExtension 运行时任务扩展
* 运行时任务扩展 * @param procUnitHandler 流程环节处理人
* @param procUnitHandler
* 流程环节处理人
*/ */
void saveTaskExtension(RuntimeTaskExtension runtimeTaskExtension, ProcUnitHandler procUnitHandler); void saveTaskExtension(RuntimeTaskExtension runtimeTaskExtension, ProcUnitHandler procUnitHandler);
...@@ -51,40 +46,32 @@ public interface ActApplication { ...@@ -51,40 +46,32 @@ public interface ActApplication {
* <p> * <p>
* 包括运行时和历史任务 * 包括运行时和历史任务
* *
* @param taskId * @param taskId 任务ID
* 任务ID * @param taskStatus 任务状态
* @param taskStatus
* 任务状态
*/ */
void updateTaskExtensionStatus(String taskId, TaskStatus taskStatus); void updateTaskExtensionStatus(String taskId, TaskStatus taskStatus);
/** /**
* 更新扩展任务状态为暂缓 * 更新扩展任务状态为暂缓
* *
* @param taskId * @param taskId 任务ID
* 任务ID
*/ */
void updateTaskExtensionSleepingStatus(String taskId); void updateTaskExtensionSleepingStatus(String taskId);
/** /**
* 更新历史任务扩展是否计时 * 更新历史任务扩展是否计时
* *
* @param taskId * @param taskId 任务ID
* 任务ID * @param needTiming 是否计时
* @param needTiming
* 是否计时
*/ */
void updateTaskExtensionNeedTiming(String taskId, Integer needTiming); void updateTaskExtensionNeedTiming(String taskId, Integer needTiming);
/** /**
* 更新任务扩展处理意见 * 更新任务扩展处理意见
* *
* @param taskId * @param taskId 任务ID
* 任务ID * @param result 处理结果
* @param result * @param opinion 处理意见
* 处理结果
* @param opinion
* 处理意见
*/ */
void updateTaskExtensionHandleResult(String taskId, HandleResult result, String opinion); void updateTaskExtensionHandleResult(String taskId, HandleResult result, String opinion);
...@@ -100,42 +87,33 @@ public interface ActApplication { ...@@ -100,42 +87,33 @@ public interface ActApplication {
/** /**
* 更新任务处理人 * 更新任务处理人
* *
* @param taskId * @param taskId 任务ID
* 任务ID * @param orgUnit 组织单元
* @param orgUnit * @param updateStartTime 更新开始时间
* 组织单元
* @param updateStartTime
* 更新开始时间
*/ */
void updateTaskHanlder(String taskId, OrgUnit orgUnit, boolean updateStartTime); void updateTaskHanlder(String taskId, OrgUnit orgUnit, boolean updateStartTime);
/** /**
* 更新历史任务扩展状态 * 更新历史任务扩展状态
* *
* @param taskId * @param taskId 任务ID
* 任务ID * @param taskStatus 任务状态
* @param taskStatus
* 任务状态
*/ */
void updateHistoricTaskInstanceExtensionStatus(String taskId, TaskStatus taskStatus); void updateHistoricTaskInstanceExtensionStatus(String taskId, TaskStatus taskStatus);
/** /**
* 更新历史任务扩展为结束状态 * 更新历史任务扩展为结束状态
* *
* @param taskId * @param taskId 任务ID
* 任务ID * @param taskStatus 任务状态
* @param taskStatus * @param deleteReason 删除原因
* 任务状态
* @param deleteReason
* 删除原因
*/ */
void updateHistoricTaskInstanceExtensionEnded(String taskId, TaskStatus taskStatus, String deleteReason); void updateHistoricTaskInstanceExtensionEnded(String taskId, TaskStatus taskStatus, String deleteReason);
/** /**
* 从数据库中读取一条运行任务扩展信息 * 从数据库中读取一条运行任务扩展信息
* *
* @param id * @param id 任务ID
* 任务ID
* @return * @return
*/ */
RuntimeTaskExtension loadRuntimeTaskExtension(String id); RuntimeTaskExtension loadRuntimeTaskExtension(String id);
...@@ -143,8 +121,7 @@ public interface ActApplication { ...@@ -143,8 +121,7 @@ public interface ActApplication {
/** /**
* 从数据库中读取一条历史任务扩展信息 * 从数据库中读取一条历史任务扩展信息
* *
* @param id * @param id 任务ID
* 任务ID
* @return * @return
*/ */
HistoricTaskInstanceExtension loadHistoricTaskInstanceExtension(String id); HistoricTaskInstanceExtension loadHistoricTaskInstanceExtension(String id);
...@@ -152,8 +129,7 @@ public interface ActApplication { ...@@ -152,8 +129,7 @@ public interface ActApplication {
/** /**
* 查询历史任务实例 * 查询历史任务实例
* *
* @param ids * @param ids 任务ID列表
* 任务ID列表
* @return * @return
*/ */
List<HistoricTaskInstanceExtension> queryHistoricTaskInstanceExtensions(List<String> ids); List<HistoricTaskInstanceExtension> queryHistoricTaskInstanceExtensions(List<String> ids);
...@@ -161,18 +137,15 @@ public interface ActApplication { ...@@ -161,18 +137,15 @@ public interface ActApplication {
/** /**
* 查询未完成的协作历史任务 * 查询未完成的协作历史任务
* *
* @param bizId * @param bizId 业务ID
* 业务ID
*/ */
List<RuntimeTaskExtension> queryCoordinationTaskInstances(String bizId); List<RuntimeTaskExtension> queryCoordinationTaskInstances(String bizId);
/** /**
* 查询历史任务 * 查询历史任务
* *
* @param bizId * @param bizId 业务ID
* 业务ID * @param procUnitId 环境ID
* @param procUnitId
* 环境ID
* @return * @return
*/ */
List<HistoricTaskInstanceExtension> queryHistoricTaskInstanceByBizAndProcUnitId(String bizId, String procUnitId); List<HistoricTaskInstanceExtension> queryHistoricTaskInstanceByBizAndProcUnitId(String bizId, String procUnitId);
...@@ -183,16 +156,14 @@ public interface ActApplication { ...@@ -183,16 +156,14 @@ public interface ActApplication {
/** /**
* 删除运行时任务扩展信息 * 删除运行时任务扩展信息
* *
* @param taskId * @param taskId 任务ID
* 任务ID
*/ */
void deleteRuntimeTaskExtension(String taskId); void deleteRuntimeTaskExtension(String taskId);
/** /**
* 查询审批历史记录 * 查询审批历史记录
* *
* @param bizId * @param bizId 业务ID
* 业务ID
* @return * @return
*/ */
Map<String, Object> queryApprovalHistoryByBizId(String bizId); Map<String, Object> queryApprovalHistoryByBizId(String bizId);
...@@ -200,8 +171,7 @@ public interface ActApplication { ...@@ -200,8 +171,7 @@ public interface ActApplication {
/** /**
* 查询审批历史记录 * 查询审批历史记录
* *
* @param processInstanceId * @param processInstanceId 流程实例ID
* 流程实例ID
* @return * @return
*/ */
Map<String, Object> queryApprovalHistoryByProcessInstanceId(String processInstanceId); Map<String, Object> queryApprovalHistoryByProcessInstanceId(String processInstanceId);
...@@ -209,12 +179,9 @@ public interface ActApplication { ...@@ -209,12 +179,9 @@ public interface ActApplication {
/** /**
* 查询回退任务 * 查询回退任务
* *
* @param bizCode * @param bizCode 业务编码
* 业务编码 * @param procUnitId 流程环节ID
* @param procUnitId * @param groupId 组ID
* 流程环节ID
* @param groupId
* 组ID
* @return * @return
*/ */
Map<String, Object> queryBackTasksByBizCode(String bizCode, String procUnitId, Integer groupId); Map<String, Object> queryBackTasksByBizCode(String bizCode, String procUnitId, Integer groupId);
...@@ -222,8 +189,7 @@ public interface ActApplication { ...@@ -222,8 +189,7 @@ public interface ActApplication {
/** /**
* 查询流程申请人 * 查询流程申请人
* *
* @param processInstanceId * @param processInstanceId 流程实例ID
* 流程实例ID
* @return * @return
*/ */
Map<String, Object> queryApplicantByProcessInstanceId(String processInstanceId); Map<String, Object> queryApplicantByProcessInstanceId(String processInstanceId);
...@@ -231,8 +197,7 @@ public interface ActApplication { ...@@ -231,8 +197,7 @@ public interface ActApplication {
/** /**
* 查询申请人任务 * 查询申请人任务
* *
* @param bizId * @param bizId 业务ID
* 业务ID
* @return * @return
*/ */
HistoricTaskInstanceExtension queryApplicantTask(String bizId); HistoricTaskInstanceExtension queryApplicantTask(String bizId);
...@@ -240,8 +205,7 @@ public interface ActApplication { ...@@ -240,8 +205,7 @@ public interface ActApplication {
/** /**
* 查询申请人任务 * 查询申请人任务
* *
* @param bizCode * @param bizCode 业务编码
* 业务编码
* @return * @return
*/ */
HistoricTaskInstanceExtension queryApplicantTaskByBizCode(String bizCode); HistoricTaskInstanceExtension queryApplicantTaskByBizCode(String bizCode);
...@@ -249,8 +213,7 @@ public interface ActApplication { ...@@ -249,8 +213,7 @@ public interface ActApplication {
/** /**
* 查询任务明细 * 查询任务明细
* *
* @param taskId * @param taskId 任务ID
* 任务ID
* @return * @return
*/ */
TaskDetail queryTaskDetail(String taskId); TaskDetail queryTaskDetail(String taskId);
...@@ -258,8 +221,7 @@ public interface ActApplication { ...@@ -258,8 +221,7 @@ public interface ActApplication {
/** /**
* 查询流程申请人 * 查询流程申请人
* *
* @param bizId * @param bizId 业务ID
* 业务ID
* @return * @return
*/ */
Map<String, Object> queryApplicantByBizId(String bizId); Map<String, Object> queryApplicantByBizId(String bizId);
...@@ -267,12 +229,20 @@ public interface ActApplication { ...@@ -267,12 +229,20 @@ public interface ActApplication {
/** /**
* 从数据库中读取一条运行任务 * 从数据库中读取一条运行任务
* *
* @param taskId * @param taskId 任务ID
* 任务ID * @deprecated 已被 {@link #queryByRuntimeTaskById(String)} 替代。
* @return
*/ */
@Deprecated
Map<String, Object> loadRuntimeTaskById(String taskId); Map<String, Object> loadRuntimeTaskById(String taskId);
/**
* 从数据库中读取一条运行任务
*
* @param taskId 任务ID
* @since 1.1.3
*/
RuntimeTaskExtension queryByRuntimeTaskById(String taskId);
/** /**
* 根据bizId从数据库中读取一条运行任务 * 根据bizId从数据库中读取一条运行任务
* *
...@@ -284,8 +254,7 @@ public interface ActApplication { ...@@ -284,8 +254,7 @@ public interface ActApplication {
/** /**
* 从数据库中读取一条历史任务 * 从数据库中读取一条历史任务
* *
* @param taskId * @param taskId 任务id
* 任务id
* @return * @return
*/ */
Map<String, Object> loadHistoricTaskById(String taskId); Map<String, Object> loadHistoricTaskById(String taskId);
...@@ -293,8 +262,7 @@ public interface ActApplication { ...@@ -293,8 +262,7 @@ public interface ActApplication {
/** /**
* 根据业务编码查询任务数据 * 根据业务编码查询任务数据
* *
* @param bizCode * @param bizCode 业务编码
* 业务编码
* @return * @return
*/ */
Map<String, Object> queryHiTaskInstsByBizCode(String bizCode); Map<String, Object> queryHiTaskInstsByBizCode(String bizCode);
...@@ -302,10 +270,8 @@ public interface ActApplication { ...@@ -302,10 +270,8 @@ public interface ActApplication {
/** /**
* 根据业务编码和类别ID查询任务数据 * 根据业务编码和类别ID查询任务数据
* *
* @param bizCode * @param bizCode 业务编码
* 业务编码 * @param kindId 类别ID
* @param kindId
* 类别ID
* @return * @return
*/ */
Map<String, Object> queryHiTaskInstsByBizCodeAndKindId(String bizCode, String kindId); Map<String, Object> queryHiTaskInstsByBizCodeAndKindId(String bizCode, String kindId);
...@@ -313,28 +279,23 @@ public interface ActApplication { ...@@ -313,28 +279,23 @@ public interface ActApplication {
/** /**
* 保存任务关联 * 保存任务关联
* *
* @param bizId * @param bizId 业务ID
* 业务ID * @param historicTaskInstRelation 任务关联对象
* @param historicTaskInstRelation
* 任务关联对象
*/ */
void saveHiTaskinstRelations(String bizId, List<HistoricTaskInstanceRelation> historicTaskInstRelations); void saveHiTaskinstRelations(String bizId, List<HistoricTaskInstanceRelation> historicTaskInstRelations);
/** /**
* 删除任务关联 * 删除任务关联
* *
* @param ids * @param ids 任务关联ID列表
* 任务关联ID列表
*/ */
void deleteHiTaskinstRelations(List<String> ids); void deleteHiTaskinstRelations(List<String> ids);
/** /**
* 查询任务关联 * 查询任务关联
* *
* @param taskId * @param taskId 任务ID
* 任务ID * @param bizId 业务ID
* @param bizId
* 业务ID
* @return * @return
*/ */
Map<String, Object> queryHiTaskinstRelations(String taskId, String bizId); Map<String, Object> queryHiTaskinstRelations(String taskId, String bizId);
...@@ -346,8 +307,7 @@ public interface ActApplication { ...@@ -346,8 +307,7 @@ public interface ActApplication {
/** /**
* 加载流程实例扩展 * 加载流程实例扩展
* *
* @param id * @param id 流程实例扩展ID
* 流程实例扩展ID
* @return * @return
*/ */
HistoricProcessInstanceExtension loadHistoricProcessInstanceExtension(String id); HistoricProcessInstanceExtension loadHistoricProcessInstanceExtension(String id);
...@@ -355,8 +315,7 @@ public interface ActApplication { ...@@ -355,8 +315,7 @@ public interface ActApplication {
/** /**
* 根据流程实例ID加载流程实例扩展 * 根据流程实例ID加载流程实例扩展
* *
* @param processInstanceId * @param processInstanceId 流程实例ID
* 流程实例ID
* @return * @return
*/ */
HistoricProcessInstanceExtension loadHistoricProcessInstanceExtensionByProcInstId(String processInstanceId); HistoricProcessInstanceExtension loadHistoricProcessInstanceExtensionByProcInstId(String processInstanceId);
...@@ -364,16 +323,11 @@ public interface ActApplication { ...@@ -364,16 +323,11 @@ public interface ActApplication {
/** /**
* 添加流程实例扩展信息 * 添加流程实例扩展信息
* *
* @param processInstanceId * @param processInstanceId 流程实例ID
* 流程实例ID * @param businessKey 业务主键ID
* @param businessKey * @param initiatorPersonMemberId 申请人员ID
* 业务主键ID * @param description 流程实例描述(标题)
* @param initiatorPersonMemberId * @param processStatus 流程状态
* 申请人员ID
* @param description
* 流程实例描述(标题)
* @param processStatus
* 流程状态
*/ */
void saveHistoricProcessInstanceExtension(HistoricProcessInstanceEntity historicProcessInstanceEntity, String initiatorPersonMemberId, String description, void saveHistoricProcessInstanceExtension(HistoricProcessInstanceEntity historicProcessInstanceEntity, String initiatorPersonMemberId, String description,
ProcessStatus processStatus); ProcessStatus processStatus);
...@@ -381,32 +335,25 @@ public interface ActApplication { ...@@ -381,32 +335,25 @@ public interface ActApplication {
/** /**
* 更新流程实例扩展状态 * 更新流程实例扩展状态
* *
* @param processInstanceId * @param processInstanceId 流程实例ID
* 流程实例ID * @param processStatus 流程状态
* @param processStatus
* 流程状态
*/ */
void updateHistoricProcessInstanceExtensionStatus(String processInstanceId, ProcessStatus processStatus); void updateHistoricProcessInstanceExtensionStatus(String processInstanceId, ProcessStatus processStatus);
/** /**
* 更新流程实例扩展已完成 * 更新流程实例扩展已完成
* *
* @param processInstanceId * @param processInstanceId 流程实例ID
* 流程实例ID * @param processStatus 流程状态
* @param processStatus * @param deleteReason 删除原因
* 流程状态 * @param endActivityId 结束环节ID
* @param deleteReason
* 删除原因
* @param endActivityId
* 结束环节ID
*/ */
void updateHistoricProcessInstanceExtensionEnded(String processInstanceId, ProcessStatus processStatus, String deleteReason, String endActivityId); void updateHistoricProcessInstanceExtensionEnded(String processInstanceId, ProcessStatus processStatus, String deleteReason, String endActivityId);
/** /**
* 根据流程环节处理人ID查询最近的历史任务实例扩展数据 * 根据流程环节处理人ID查询最近的历史任务实例扩展数据
* *
* @param procUnitHandlerId * @param procUnitHandlerId 环节处理人ID
* 环节处理人ID
* @return * @return
*/ */
HistoricTaskInstanceExtension queryRecentHiTaskInstExtensionByProcUnitHandlerId(String procUnitHandlerId); HistoricTaskInstanceExtension queryRecentHiTaskInstExtensionByProcUnitHandlerId(String procUnitHandlerId);
...@@ -414,8 +361,7 @@ public interface ActApplication { ...@@ -414,8 +361,7 @@ public interface ActApplication {
/** /**
* 根据流程环节处理人ID查询最历史任务实例扩展数据 * 根据流程环节处理人ID查询最历史任务实例扩展数据
* *
* @param procUnitHandlerId * @param procUnitHandlerId 环节处理人ID
* 环节处理人ID
* @return * @return
*/ */
List<HistoricTaskInstanceExtension> queryHiTaskInstExtensionByProcUnitHandlerId(String procUnitHandlerId); List<HistoricTaskInstanceExtension> queryHiTaskInstExtensionByProcUnitHandlerId(String procUnitHandlerId);
...@@ -430,20 +376,16 @@ public interface ActApplication { ...@@ -430,20 +376,16 @@ public interface ActApplication {
/** /**
* 查询完成的历史任务ID集合 * 查询完成的历史任务ID集合
* *
* @param processInstanceId * @param processInstanceId 流程实例ID
* 流程实例ID * @param previousTaskId 前驱任务ID
* @param previousTaskId
* 前驱任务ID
*/ */
List<String> queryHiTaskIdsByProcessInstanceAndPreviousId(String processInstanceId, String previousTaskId); List<String> queryHiTaskIdsByProcessInstanceAndPreviousId(String processInstanceId, String previousTaskId);
/** /**
* 查询运行时任务ID集合 * 查询运行时任务ID集合
* *
* @param processInstanceId * @param processInstanceId 流程实例ID
* 流程实例ID * @param previousTaskId 前驱任务ID
* @param previousTaskId
* 前驱任务ID
* @return 任务ID集合 * @return 任务ID集合
*/ */
List<String> queryRuTaskIdsByProcessInstanceAndPreviousId(String processInstanceId, String previousTaskId); List<String> queryRuTaskIdsByProcessInstanceAndPreviousId(String processInstanceId, String previousTaskId);
...@@ -451,10 +393,8 @@ public interface ActApplication { ...@@ -451,10 +393,8 @@ public interface ActApplication {
/** /**
* 查询主审的协审人任务ID列表 * 查询主审的协审人任务ID列表
* *
* @param bizId * @param bizId 业务ID
* 业务ID * @param chiefId 主审ID
* @param chiefId
* 主审ID
* @return * @return
*/ */
List<String> queryRuAssistantTaskIds(String bizId, String chiefId); List<String> queryRuAssistantTaskIds(String bizId, String chiefId);
...@@ -462,8 +402,7 @@ public interface ActApplication { ...@@ -462,8 +402,7 @@ public interface ActApplication {
/** /**
* 查询运行时任务ID集合 * 查询运行时任务ID集合
* *
* @param processInstanceId * @param processInstanceId 流程实例ID
* 流程实例ID
* @return 任务ID集合 * @return 任务ID集合
*/ */
List<String> queryRuTaskIdsByProcessInstanceId(String processInstanceId); List<String> queryRuTaskIdsByProcessInstanceId(String processInstanceId);
...@@ -473,8 +412,7 @@ public interface ActApplication { ...@@ -473,8 +412,7 @@ public interface ActApplication {
/** /**
* 统计待办流程任务数 * 统计待办流程任务数
* *
* @param bizCode * @param bizCode 业务编码
* 业务编码
* @return * @return
*/ */
long countReadyProcTasksByBizCode(String bizCode); long countReadyProcTasksByBizCode(String bizCode);
...@@ -482,10 +420,8 @@ public interface ActApplication { ...@@ -482,10 +420,8 @@ public interface ActApplication {
/** /**
* 统计等待的协审任务书 * 统计等待的协审任务书
* *
* @param bizId * @param bizId 业务ID
* 业务ID * @param chiefId 主审ID
* @param chiefId
* 主审ID
* @return * @return
*/ */
Integer countWaitedAssistantTask(String bizId, String chiefId); Integer countWaitedAssistantTask(String bizId, String chiefId);
...@@ -493,8 +429,7 @@ public interface ActApplication { ...@@ -493,8 +429,7 @@ public interface ActApplication {
/** /**
* 流程中存在打回任务数 * 流程中存在打回任务数
* *
* @param bizId * @param bizId 业务ID
* 业务ID
* @return * @return
*/ */
boolean existsReplenishTask(String bizId); boolean existsReplenishTask(String bizId);
......
...@@ -36,7 +36,7 @@ import com.huigou.util.StringUtil; ...@@ -36,7 +36,7 @@ import com.huigou.util.StringUtil;
* @author gongmm * @author gongmm
*/ */
@MappedSuperclass @MappedSuperclass
@EntityListeners({ VersionListener.class }) @EntityListeners({VersionListener.class})
public class ProcUnitHandlerBase implements IdentifiedEntity, Cloneable, Serializable { public class ProcUnitHandlerBase implements IdentifiedEntity, Cloneable, Serializable {
private static final long serialVersionUID = 7627740680619707939L; private static final long serialVersionUID = 7627740680619707939L;
...@@ -214,6 +214,13 @@ public class ProcUnitHandlerBase implements IdentifiedEntity, Cloneable, Seriali ...@@ -214,6 +214,13 @@ public class ProcUnitHandlerBase implements IdentifiedEntity, Cloneable, Seriali
private String clientName; private String clientName;
private Integer sequence; private Integer sequence;
/**
* 分组最少审批人数。
*
* @since 1.1.3
*/
@Column(name = "limit_handler")
private Integer limitHandler;
@Override @Override
public String getId() { public String getId() {
...@@ -475,6 +482,14 @@ public class ProcUnitHandlerBase implements IdentifiedEntity, Cloneable, Seriali ...@@ -475,6 +482,14 @@ public class ProcUnitHandlerBase implements IdentifiedEntity, Cloneable, Seriali
this.sendMessage = sendMessage; this.sendMessage = sendMessage;
} }
public Integer getLimitHandler() {
return limitHandler;
}
public void setLimitHandler(Integer limitHandler) {
this.limitHandler = limitHandler;
}
public void updateHandleResult(int result, String opinion, int status) { public void updateHandleResult(int result, String opinion, int status) {
this.setResult(result); this.setResult(result);
this.setOpinion(opinion); this.setOpinion(opinion);
...@@ -546,7 +561,8 @@ public class ProcUnitHandlerBase implements IdentifiedEntity, Cloneable, Seriali ...@@ -546,7 +561,8 @@ public class ProcUnitHandlerBase implements IdentifiedEntity, Cloneable, Seriali
} }
public enum Status { public enum Status {
INITIAL(-2, "补审初始化状态"), MERGED(-1, "已合并"), READY(0, "未处理"), COMPLETED(1, "已处理"), RETURNED(2, "已回退"), ; INITIAL(-2, "补审初始化状态"), MERGED(-1, "已合并"), READY(0, "未处理"), COMPLETED(1, "已处理"), RETURNED(2, "已回退"),
;
private final int id; private final int id;
private final String displayName; private final String displayName;
...@@ -581,7 +597,7 @@ public class ProcUnitHandlerBase implements IdentifiedEntity, Cloneable, Seriali ...@@ -581,7 +597,7 @@ public class ProcUnitHandlerBase implements IdentifiedEntity, Cloneable, Seriali
case 2: case 2:
return RETURNED; return RETURNED;
default: default:
throw new ApplicationException(String.format("无效的流程环节处理状态“%s”。", new Object[] { Integer.valueOf(id) })); throw new ApplicationException(String.format("无效的流程环节处理状态“%s”。", new Object[]{Integer.valueOf(id)}));
} }
} }
} }
......
package com.huigou.data.query.parser.impl; package com.huigou.data.query.parser.impl;
import java.util.Map;
import java.util.regex.Matcher;
import com.huigou.data.domain.query.QueryAbstractRequest; import com.huigou.data.domain.query.QueryAbstractRequest;
import com.huigou.data.query.QueryPermissionBuilder; import com.huigou.data.query.QueryPermissionBuilder;
import com.huigou.data.query.SQLExecutor; import com.huigou.data.query.SQLExecutor;
import com.huigou.data.query.XMLParseUtil; import com.huigou.data.query.XMLParseUtil;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.parser.SQLBuilder; import com.huigou.data.query.parser.SQLBuilder;
import com.huigou.data.query.parser.model.ConditionModel; import com.huigou.data.query.parser.model.ConditionModel;
import com.huigou.data.query.parser.model.DataFilterGroup; import com.huigou.data.query.parser.model.DataFilterGroup;
...@@ -21,6 +17,9 @@ import com.huigou.uasp.bmp.query.QueryDocument.Query; ...@@ -21,6 +17,9 @@ import com.huigou.uasp.bmp.query.QueryDocument.Query;
import com.huigou.uasp.bmp.query.SqlDocument.Sql; import com.huigou.uasp.bmp.query.SqlDocument.Sql;
import com.huigou.util.StringUtil; import com.huigou.util.StringUtil;
import java.util.Map;
import java.util.regex.Matcher;
/** /**
* 根据查询对象组合SQL * 根据查询对象组合SQL
* *
......
package com.huigou.uasp.bpm; package com.huigou.uasp.bpm;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays; import java.util.stream.Collectors;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -84,6 +80,10 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -84,6 +80,10 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
private static final long serialVersionUID = -6575998537083218220L; private static final long serialVersionUID = -6575998537083218220L;
private static final String PREEMPT_CANCEL_VARIABLE = "preemptCancel"; private static final String PREEMPT_CANCEL_VARIABLE = "preemptCancel";
/**
* @since 1.1.3
*/
private static final String LIMIT_HANDLER_CANCEL_VARIABLE = "limitHandlerCancel";
private static final String CHIEF_APPROVE_PASSED_VARIABLE = "chiefApprovePassed"; private static final String CHIEF_APPROVE_PASSED_VARIABLE = "chiefApprovePassed";
...@@ -236,8 +236,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -236,8 +236,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 设置任务ID * 设置任务ID
* *
* @param taskId * @param taskId 任务ID
* 任务ID
*/ */
protected void setNewTaskId(String taskId) { protected void setNewTaskId(String taskId) {
getBizAndApprovalData().putProperty("newTaskId", taskId); getBizAndApprovalData().putProperty("newTaskId", taskId);
...@@ -286,8 +285,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -286,8 +285,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 当前任务是否为审批环节 * 当前任务是否为审批环节
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
* @return 当前任务是否为审批环节 * @return 当前任务是否为审批环节
*/ */
protected boolean isApprovalProcUnit(DelegateTask delegateTask) { protected boolean isApprovalProcUnit(DelegateTask delegateTask) {
...@@ -297,15 +295,14 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -297,15 +295,14 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 当前任务是否为审批环节 * 当前任务是否为审批环节
* *
* @param procUnitId * @param procUnitId 环节id
* 环节id
* @return 当前任务是否为审批环节 * @return 当前任务是否为审批环节
*/ */
protected boolean isApprovalProcUnit(String procUnitId) { protected boolean isApprovalProcUnit(String procUnitId) {
return ActivityKind.APPROVE.equalsIgnoreCase(procUnitId); return ActivityKind.APPROVE.equalsIgnoreCase(procUnitId);
} }
/** /**currentGroupChiefApprovePassed
* 流程通知事件处理 * 流程通知事件处理
* <ul> * <ul>
* <li>流程实例启动事件:调用<code>onStart</code>保存业务数据和历史流程实例扩展数据。</li> * <li>流程实例启动事件:调用<code>onStart</code>保存业务数据和历史流程实例扩展数据。</li>
...@@ -318,6 +315,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -318,6 +315,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <li>流程实例撤销事件</li> * <li>流程实例撤销事件</li>
* </ul> * </ul>
*/ */
@Override
public void notify(DelegateExecution delegateExecution) { public void notify(DelegateExecution delegateExecution) {
String eventName = delegateExecution.getEventName(); String eventName = delegateExecution.getEventName();
try { try {
...@@ -379,6 +377,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -379,6 +377,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <li>预览处理人事件</li> * <li>预览处理人事件</li>
* </ul> * </ul>
*/ */
@Override
public void notify(DelegateTask delegateTask) { public void notify(DelegateTask delegateTask) {
String eventName = delegateTask.getEventName(); String eventName = delegateTask.getEventName();
try { try {
...@@ -420,8 +419,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -420,8 +419,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 审批是否完成 * 审批是否完成
* *
* @param procUnitId * @param procUnitId 流程环节ID
* 流程环节ID
* @return 审批是否完成 * @return 审批是否完成
*/ */
protected boolean approveFinished(String procUnitId) { protected boolean approveFinished(String procUnitId) {
...@@ -447,7 +445,11 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -447,7 +445,11 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
*/ */
protected boolean currentGroupChiefApprovePassed(String procUnitId) { protected boolean currentGroupChiefApprovePassed(String procUnitId) {
int groupId = getCurrentHandleGroupId(); int groupId = getCurrentHandleGroupId();
return this.procUnitHandlerApplication.checkCurrentGroupChiefApprovePassed(getApprovalParameter().getBizId(), procUnitId, groupId); if (this.procUnitHandlerApplication.checkCurrentGroupChiefApprovePassed(getApprovalParameter().getBizId(), procUnitId, groupId)) {
return true;
}
ProcUnitHandler procUnitHandler = procUnitHandlerApplication.queryProcUnitHandlers(getApprovalParameter().getBizId(), procUnitId, groupId).get(0);
return isLimitHandler(procUnitId, groupId, procUnitHandler.getLimitHandler());
} }
private String getTaskDescriptionPrefix() { private String getTaskDescriptionPrefix() {
...@@ -473,8 +475,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -473,8 +475,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 设置默认任务主题 * 设置默认任务主题
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
protected void setTaskDescription(DelegateTask delegateTask) { protected void setTaskDescription(DelegateTask delegateTask) {
...@@ -483,10 +484,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -483,10 +484,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 处理设置任务处理人信息(非申请环节和审批环节) * 处理设置任务处理人信息(非申请环节和审批环节)
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务 * @param runtimeTaskExtension 运行时任务扩展数据
* @param runtimeTaskExtension
* 运行时任务扩展数据
*/ */
protected void doOtherSetCurrentTaskHandler(DelegateTask delegateTask, RuntimeTaskExtension runtimeTaskExtension) { protected void doOtherSetCurrentTaskHandler(DelegateTask delegateTask, RuntimeTaskExtension runtimeTaskExtension) {
...@@ -495,10 +494,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -495,10 +494,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 应用代理规则 * 应用代理规则
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务 * @param procUnitHandler 环节处理人
* @param procUnitHandler
* 环节处理人
* @return * @return
*/ */
protected Agent applyAgentRule(DelegateTask delegateTask, ProcUnitHandler procUnitHandler) { protected Agent applyAgentRule(DelegateTask delegateTask, ProcUnitHandler procUnitHandler) {
...@@ -528,8 +525,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -528,8 +525,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 填充申请人扩展数据 * 填充申请人扩展数据
* *
* @param runtimeTaskExtension * @param runtimeTaskExtension 运行时任务扩展数据
* 运行时任务扩展数据
*/ */
private void fillApplicantExtendData(RuntimeTaskExtension runtimeTaskExtension) { private void fillApplicantExtendData(RuntimeTaskExtension runtimeTaskExtension) {
SDO sdo = ThreadLocalUtil.getVariable(Constants.SDO, SDO.class); SDO sdo = ThreadLocalUtil.getVariable(Constants.SDO, SDO.class);
...@@ -556,10 +552,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -556,10 +552,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <p> * <p>
* 3、设置扩展属性的处理人 * 3、设置扩展属性的处理人
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务 * @param runtimeTaskExtension 运行时任务扩展数据
* @param runtimeTaskExtension
* 运行时任务扩展数据
*/ */
protected void setCurrentTaskHandler(DelegateTask delegateTask, RuntimeTaskExtension runtimeTaskExtension) { protected void setCurrentTaskHandler(DelegateTask delegateTask, RuntimeTaskExtension runtimeTaskExtension) {
String processDefinitionId = delegateTask.getExecution().getProcessDefinitionId(); String processDefinitionId = delegateTask.getExecution().getProcessDefinitionId();
...@@ -734,8 +728,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -734,8 +728,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <p> * <p>
* 与<code>saveBizAndApprovalData()</code>不同,可以通过本方法设置任务属性。 * 与<code>saveBizAndApprovalData()</code>不同,可以通过本方法设置任务属性。
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
* @return * @return
* @see #saveBizAndApprovalData() * @see #saveBizAndApprovalData()
*/ */
...@@ -750,8 +743,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -750,8 +743,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <li>保存历史流程实例扩展表</li> * <li>保存历史流程实例扩展表</li>
* </ul> * </ul>
* *
* @param delegateExecution * @param delegateExecution 代理执行
* 代理执行
*/ */
protected void onStart(DelegateExecution delegateExecution) { protected void onStart(DelegateExecution delegateExecution) {
String startModel = (String) delegateExecution.getVariable("startModel"); String startModel = (String) delegateExecution.getVariable("startModel");
...@@ -776,8 +768,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -776,8 +768,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 流程结束事件 * 流程结束事件
* *
* @param delegateExecution * @param delegateExecution 代理执行
* 代理执行
*/ */
protected void onEnd(DelegateExecution delegateExecution) { protected void onEnd(DelegateExecution delegateExecution) {
boolean isMakeACopyFor = ClassHelper.convert(delegateExecution.getVariable(IS_MAKE_A_COPY_FOR), Boolean.class, false); boolean isMakeACopyFor = ClassHelper.convert(delegateExecution.getVariable(IS_MAKE_A_COPY_FOR), Boolean.class, false);
...@@ -803,8 +794,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -803,8 +794,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 流程撤销事件 * 流程撤销事件
* *
* @param delegateExecution * @param delegateExecution 代理执行实例
* 代理执行实例
*/ */
protected void onRecallProcessInstance(DelegateExecution delegateExecution) { protected void onRecallProcessInstance(DelegateExecution delegateExecution) {
...@@ -813,8 +803,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -813,8 +803,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 删除流程实例事件 * 删除流程实例事件
* *
* @param delegateExecution * @param delegateExecution 代理执行
* 代理执行
*/ */
protected void onDeleteProcessInstance(DelegateExecution delegateExecution) { protected void onDeleteProcessInstance(DelegateExecution delegateExecution) {
} }
...@@ -822,8 +811,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -822,8 +811,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 终止流程实例事件 * 终止流程实例事件
* *
* @param delegateExecution * @param delegateExecution 代理执行
* 代理执行
*/ */
protected void onAbortProcessInstance(DelegateExecution delegateExecution) { protected void onAbortProcessInstance(DelegateExecution delegateExecution) {
boolean isMakeACopyFor = ClassHelper.convert(delegateExecution.getVariable(IS_MAKE_A_COPY_FOR), Boolean.class, false); boolean isMakeACopyFor = ClassHelper.convert(delegateExecution.getVariable(IS_MAKE_A_COPY_FOR), Boolean.class, false);
...@@ -899,10 +887,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -899,10 +887,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 设置任务扩展数据默认值 * 设置任务扩展数据默认值
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务 * @param runtimeTaskExtension 运行时任务数据
* @param runtimeTaskExtension
* 运行时任务数据
*/ */
private void setTaskExtendData(DelegateTask delegateTask, RuntimeTaskExtension runtimeTaskExtension) { private void setTaskExtendData(DelegateTask delegateTask, RuntimeTaskExtension runtimeTaskExtension) {
runtimeTaskExtension.setGenerateReason(getApprovalParameter().getProcessAction()); runtimeTaskExtension.setGenerateReason(getApprovalParameter().getProcessAction());
...@@ -914,10 +900,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -914,10 +900,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 设置任务是否计时 * 设置任务是否计时
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务 * @param runtimeTaskExtension 运行时任务数据
* @param runtimeTaskExtension
* 运行时任务数据
*/ */
protected void setTaskLimitTime(DelegateTask delegateTask, RuntimeTaskExtension runtimeTaskExtension) { protected void setTaskLimitTime(DelegateTask delegateTask, RuntimeTaskExtension runtimeTaskExtension) {
if (!this.isApplyProcUnit(delegateTask)) { if (!this.isApplyProcUnit(delegateTask)) {
...@@ -936,10 +920,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -936,10 +920,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 修正扩展数据 * 修正扩展数据
* *
* @param delegateTask * @param delegateTask 代理人员
* 代理人员 * @param runtimeTaskExtension 任务扩展
* @param runtimeTaskExtension
* 任务扩展
*/ */
protected void reviseExtendData(DelegateTask delegateTask, RuntimeTaskExtension runtimeTaskExtension) { protected void reviseExtendData(DelegateTask delegateTask, RuntimeTaskExtension runtimeTaskExtension) {
...@@ -956,8 +938,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -956,8 +938,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <li>设置任务执行人信息 * <li>设置任务执行人信息
* </ul> * </ul>
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
protected void onBeforeCreate(DelegateTask delegateTask) { protected void onBeforeCreate(DelegateTask delegateTask) {
RuntimeTaskExtension runtimeTaskExtension = new RuntimeTaskExtension(); RuntimeTaskExtension runtimeTaskExtension = new RuntimeTaskExtension();
...@@ -1057,8 +1038,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1057,8 +1038,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <li>给任务赋默认值 * <li>给任务赋默认值
* </ul> * </ul>
* *
* @param delegateTas * @param delegateTas 代理任务
* 代理任务
*/ */
@Transactional @Transactional
public void onCreate(DelegateTask delegateTask) { public void onCreate(DelegateTask delegateTask) {
...@@ -1068,8 +1048,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1068,8 +1048,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 给任务赋处理人事件 * 给任务赋处理人事件
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
public void onAssignment(DelegateTask delegateTask) { public void onAssignment(DelegateTask delegateTask) {
...@@ -1090,8 +1069,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1090,8 +1069,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 是否抢占取消任务 * 是否抢占取消任务
* *
* @param delegateTask * @param delegateTask 任务代理
* 任务代理
* @return * @return
*/ */
private boolean isPreemptCanceledTask(DelegateTask delegateTask) { private boolean isPreemptCanceledTask(DelegateTask delegateTask) {
...@@ -1102,6 +1080,17 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1102,6 +1080,17 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
return false; return false;
} }
/**
* @since 1.1.3
*/
private boolean isLimitHandlerCanceledTask(DelegateTask delegateTask) {
Object object = delegateTask.getVariable(LIMIT_HANDLER_CANCEL_VARIABLE);
if (object != null) {
return delegateTask.getVariable(LIMIT_HANDLER_CANCEL_VARIABLE, Boolean.class);
}
return false;
}
/** /**
* 处理任务协作模式 * 处理任务协作模式
* *
...@@ -1140,7 +1129,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1140,7 +1129,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
List<String> taskIds = this.actApplication.queryRuTaskIdsByProcessInstanceId(delegateTask.getProcessInstanceId()); List<String> taskIds = this.actApplication.queryRuTaskIdsByProcessInstanceId(delegateTask.getProcessInstanceId());
for (String taskId : taskIds) { for (String taskId : taskIds) {
if (!delegateTask.getId().equals(taskId)) { if (!delegateTask.getId().equals(taskId)) {
Map<String, Object> variables = new HashMap<String, Object>(1); Map<String, Object> variables = new HashMap<>(1);
variables.put(PREEMPT_CANCEL_VARIABLE, true); variables.put(PREEMPT_CANCEL_VARIABLE, true);
this.workflowService.getTaskService().complete(taskId, variables, true); this.workflowService.getTaskService().complete(taskId, variables, true);
} }
...@@ -1148,6 +1137,19 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1148,6 +1137,19 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
this.procUnitHandlerApplication.updateOtherProcUnitHandlersResultSystemComplete(this.getBizId(), delegateTask.getTaskDefinitionKey(), this.procUnitHandlerApplication.updateOtherProcUnitHandlersResultSystemComplete(this.getBizId(), delegateTask.getTaskDefinitionKey(),
this.getCurrentHandleGroupId(), procUnitHandlerId, null); this.getCurrentHandleGroupId(), procUnitHandlerId, null);
} else { } else {
// @since 1.1.3
if (isLimitHandler(procUnitHandler.getProcUnitId(), procUnitHandler.getGroupId(), procUnitHandler.getLimitHandler())) {
// 系统完成其他人的任务(包括协审任务)
Map<String, Object> variables = new HashMap<>(1);
variables.put(LIMIT_HANDLER_CANCEL_VARIABLE, true);
this.actApplication.queryRuTaskIdsByProcessInstanceId(delegateTask.getProcessInstanceId())
.stream()
.filter(taskId -> !taskId.equals(delegateTask.getId()))
.forEach(taskId -> workflowService.getTaskService().complete(taskId, variables, true));
this.procUnitHandlerApplication.updateOtherProcUnitHandlersResultSystemComplete(this.getBizId(), delegateTask.getTaskDefinitionKey(),
this.getCurrentHandleGroupId(), procUnitHandlerId, null);
return;
}
// 主审完成后,查询协审任务添加到通知事件环境中 // 主审完成后,查询协审任务添加到通知事件环境中
List<String> taskIds = this.actApplication.queryRuAssistantTaskIds(this.getBizId(), procUnitHandlerId); List<String> taskIds = this.actApplication.queryRuAssistantTaskIds(this.getBizId(), procUnitHandlerId);
for (String taskId : taskIds) { for (String taskId : taskIds) {
...@@ -1156,11 +1158,28 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1156,11 +1158,28 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
} }
} }
/**
* @since 1.1.3
*/
private boolean isLimitHandler(String procUnitId, Integer groupId, Integer limitHandler) {
int procUnitHandlerCount = procUnitHandlerApplication.queryProcUnitHandlerIds(getBizId(), procUnitId, groupId).size();
if (procUnitHandlerCount < 2) {
return false;
}
// 已完成的环节处理人(主审)
List<ProcUnitHandler> completedChiefProcUnitHandlers = procUnitHandlerApplication.queryCompletedProcUnitHandlers(getBizId(), procUnitId, groupId)
.stream()
.filter(handler -> CooperationModelKind.isChief(handler.getCooperationModelId()))
.collect(Collectors.toList());
return limitHandler != null
&& limitHandler > 0
&& Objects.equals(limitHandler, completedChiefProcUnitHandlers.size());
}
/** /**
* 任务完成前事件处理 * 任务完成前事件处理
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
protected void onBeforeComplete(DelegateTask delegateTask) { protected void onBeforeComplete(DelegateTask delegateTask) {
if (isApprovalProcUnit(delegateTask)) { if (isApprovalProcUnit(delegateTask)) {
...@@ -1205,8 +1224,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1205,8 +1224,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 任务完成后事件处理 * 任务完成后事件处理
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
protected void onAfterComplete(DelegateTask delegateTask) { protected void onAfterComplete(DelegateTask delegateTask) {
...@@ -1217,8 +1235,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1217,8 +1235,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <p> * <p>
* 基类只处理申请环节提交后,计算审批环节处理人 * 基类只处理申请环节提交后,计算审批环节处理人
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
@Deprecated @Deprecated
protected void calculateNextProcUnitHandlers(DelegateTask delegateTask) { protected void calculateNextProcUnitHandlers(DelegateTask delegateTask) {
...@@ -1348,7 +1365,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1348,7 +1365,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
private void calculateNextProcUnitHandlersForQueryAdvance(VariableScope variableScope, String processDefinitionKey, String nextProcUnitId) { private void calculateNextProcUnitHandlersForQueryAdvance(VariableScope variableScope, String processDefinitionKey, String nextProcUnitId) {
List<Object> inputHandlers = this.getBizAndApprovalData().getList("procUnitHandlers"); List<Object> inputHandlers = this.getBizAndApprovalData().getList("procUnitHandlers");
List<Map<String, Object>> handlerList = new ArrayList<Map<String, Object>>(inputHandlers.size()); List<Map<String, Object>> handlerList = new ArrayList<>(inputHandlers.size());
checkQueryAdvance(inputHandlers); checkQueryAdvance(inputHandlers);
...@@ -1428,8 +1445,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1428,8 +1445,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 修正下一环节处理人 * 修正下一环节处理人
* *
* @param handlerList * @param handlerList 环节处理人
* 环节处理人
*/ */
protected void reviseNextProcUnitHandlers(List<Map<String, Object>> handlerList) { protected void reviseNextProcUnitHandlers(List<Map<String, Object>> handlerList) {
...@@ -1527,8 +1543,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1527,8 +1543,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 计算下一环节处理人 * 计算下一环节处理人
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
protected void doCalculateNextProcUnitHandlers(DelegateTask delegateTask) { protected void doCalculateNextProcUnitHandlers(DelegateTask delegateTask) {
checkLicense(); checkLicense();
...@@ -1566,8 +1581,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1566,8 +1581,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <p> * <p>
* 2、当前环节已审批完成,获取下一环节第一组审批人 * 2、当前环节已审批完成,获取下一环节第一组审批人
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
protected void fillNextGroupHandlers(DelegateTask delegateTask) { protected void fillNextGroupHandlers(DelegateTask delegateTask) {
Boolean needApprove = ClassHelper.convert(delegateTask.getVariable("needApprove"), Boolean.class, true); Boolean needApprove = ClassHelper.convert(delegateTask.getVariable("needApprove"), Boolean.class, true);
...@@ -1605,8 +1619,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1605,8 +1619,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 保存逻辑处理 * 保存逻辑处理
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
protected void onSave(DelegateTask delegateTask) { protected void onSave(DelegateTask delegateTask) {
} }
...@@ -1614,8 +1627,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1614,8 +1627,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 提交事件 * 提交事件
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
protected void onAdvance(DelegateTask delegateTask) { protected void onAdvance(DelegateTask delegateTask) {
...@@ -1624,10 +1636,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1624,10 +1636,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 抓回逻辑处理 * 抓回逻辑处理
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务 * @param destActivityId 目标环境id
* @param destActivityId
* 目标环境id
*/ */
protected void onWithdraw(DelegateTask delegateTask, String destActivityId) { protected void onWithdraw(DelegateTask delegateTask, String destActivityId) {
...@@ -1734,7 +1744,10 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1734,7 +1744,10 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
result = true; result = true;
break; break;
} }
if (isLimitHandlerCanceledTask(delegateTask)) {
result = true;
break;
}
String bizId = approvalParameter.getBizId(); String bizId = approvalParameter.getBizId();
if (StringUtil.isNotBlank(bizId)) { if (StringUtil.isNotBlank(bizId)) {
if (approvalParameter.isQueryAdvanceProcessAction() || approvalParameter.getOnlyAdvance()) { if (approvalParameter.isQueryAdvanceProcessAction() || approvalParameter.getOnlyAdvance()) {
...@@ -1793,8 +1806,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1793,8 +1806,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <li>计算并填充流出节点的处理人 * <li>计算并填充流出节点的处理人
* </ul> * </ul>
* *
* @param delegateTask * @param delegateTask 代理人
* 代理人
*/ */
public void onComplete(DelegateTask delegateTask) { public void onComplete(DelegateTask delegateTask) {
if (fireEvent(delegateTask)) { if (fireEvent(delegateTask)) {
...@@ -1908,10 +1920,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1908,10 +1920,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <p> * <p>
* 取出下一组审批人列表,放入到handlerList中 * 取出下一组审批人列表,放入到handlerList中
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务 * @param nextProcUnitId 下一环节ID
* @param nextProcUnitId
* 下一环节ID
*/ */
protected void fillHandlerListVariable(DelegateTask delegateTask, String nextProcUnitId) { protected void fillHandlerListVariable(DelegateTask delegateTask, String nextProcUnitId) {
List<String> handlers = buildNextActivityGroupHandlers(delegateTask.getExecution().getProcessBusinessKey(), nextProcUnitId, getCurrentHandleGroupId()); List<String> handlers = buildNextActivityGroupHandlers(delegateTask.getExecution().getProcessBusinessKey(), nextProcUnitId, getCurrentHandleGroupId());
...@@ -1931,10 +1941,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1931,10 +1941,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
* <p> * <p>
* 2、当前环节已审批完成,获取下一环节第一组审批人 * 2、当前环节已审批完成,获取下一环节第一组审批人
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务 * @param nextProcUnitId 下一环节ID
* @param nextProcUnitId
* 下一环节ID
*/ */
protected void doFillNextGroupHandlers(DelegateTask delegateTask, String nextProcUnitId) { protected void doFillNextGroupHandlers(DelegateTask delegateTask, String nextProcUnitId) {
if (StringUtil.isNotBlank(nextProcUnitId)) { if (StringUtil.isNotBlank(nextProcUnitId)) {
...@@ -1967,8 +1975,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -1967,8 +1975,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 任务删除事件 * 任务删除事件
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
protected void onDelete(DelegateTask delegateTask) { protected void onDelete(DelegateTask delegateTask) {
// 审批未通过终止,删除流程实例的时候,任务已删除。 // 审批未通过终止,删除流程实例的时候,任务已删除。
...@@ -2058,8 +2065,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2058,8 +2065,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 保存业务数据 * 保存业务数据
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
protected String onSaveBizData(DelegateTask delegateTask) { protected String onSaveBizData(DelegateTask delegateTask) {
return saveBizAndApprovalData(delegateTask); return saveBizAndApprovalData(delegateTask);
...@@ -2067,8 +2073,6 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2067,8 +2073,6 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 检查审批规则处理人不能为空 * 检查审批规则处理人不能为空
*
* @param approvalRuleHandlers
*/ */
private void checkApprovalRuleHandlerNotNull(ApprovalRule approvalRule) { private void checkApprovalRuleHandlerNotNull(ApprovalRule approvalRule) {
// 检查审批人是否为空 // 检查审批人是否为空
...@@ -2108,18 +2112,12 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2108,18 +2112,12 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
return false; return false;
} }
/**
*
*/
/** /**
* 生成任务执行模型 * 生成任务执行模型
* *
* @param approvalRule * @param approvalRule 审批规则
* 审批规则 * @param groupId 分组ID
* @param groupId * @param handler 处理人
* 分组ID
* @param handler
* 处理人
*/ */
private void buildTaskExecuteMode(ApprovalRule approvalRule, Integer groupId, Map<String, Object> handler) { private void buildTaskExecuteMode(ApprovalRule approvalRule, Integer groupId, Map<String, Object> handler) {
ApprovalRuleHandlerGroup approvalRuleHandlerGroup = approvalRule.findApprovalRuleHandlerGroup(groupId); ApprovalRuleHandlerGroup approvalRuleHandlerGroup = approvalRule.findApprovalRuleHandlerGroup(groupId);
...@@ -2131,18 +2129,12 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2131,18 +2129,12 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 生成环节预览处理人 * 生成环节预览处理人
* *
* @param processDefinitionKey * @param processDefinitionKey 流程定义ID
* 流程定义ID * @param procUnitId 流程环节ID
* @param procUnitId * @param procUnitName 流程环节名称
* 流程环节ID * @param hasGatewayManual 是否有选择网关
* @param procUnitName * @param bizParams 业务参数
* 流程环节名称 * @param handlers 处理人
* @param hasGatewayManual
* 是否有选择网关
* @param bizParams
* 业务参数
* @param handlers
* 处理人
* @return * @return
*/ */
protected boolean buildProcUnitHandlersForQuery(DelegateTask delegateTask, String processDefinitionKey, String procUnitId, String procUnitName, protected boolean buildProcUnitHandlersForQuery(DelegateTask delegateTask, String processDefinitionKey, String procUnitId, String procUnitName,
...@@ -2259,8 +2251,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2259,8 +2251,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 预览处理人事件 * 预览处理人事件
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
protected void onQueryHandlers(DelegateTask delegateTask) { protected void onQueryHandlers(DelegateTask delegateTask) {
...@@ -2284,11 +2275,11 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2284,11 +2275,11 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
Integer porcUnitSequence = 0; Integer porcUnitSequence = 0;
List<Map<String, Object>> handlers = new ArrayList<Map<String, Object>>(nextProcUnits.size()); List<Map<String, Object>> handlers = new ArrayList<>(nextProcUnits.size());
List<Map<String, Object>> currentProcUnitHandlers; List<Map<String, Object>> currentProcUnitHandlers;
for (String procUnitId : nextProcUnits.keySet()) { for (String procUnitId : nextProcUnits.keySet()) {
currentProcUnitHandlers = new ArrayList<Map<String, Object>>(); currentProcUnitHandlers = new ArrayList<>();
if (hasGatewayManual) { if (hasGatewayManual) {
if (nextProcUnits.get(procUnitId) instanceof EndEvent) { if (nextProcUnits.get(procUnitId) instanceof EndEvent) {
handlers.add(buildEndHandlersForQuery(procUnitId)); handlers.add(buildEndHandlersForQuery(procUnitId));
...@@ -2351,10 +2342,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2351,10 +2342,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 冒泡排序处理人 * 冒泡排序处理人
* *
* @param handlers * @param handlers 处理人
* 处理人 * @param sortField 排序字段
* @param sortField
* 排序字段
*/ */
private void bubbleSortHandlers(List<Map<String, Object>> handlers, String sortField) { private void bubbleSortHandlers(List<Map<String, Object>> handlers, String sortField) {
Integer currentValue, nextValue; Integer currentValue, nextValue;
...@@ -2405,8 +2394,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2405,8 +2394,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 得到流程业务参数 * 得到流程业务参数
* *
* @param bizId * @param bizId 业务ID
* 业务ID
* @return 业务参数 * @return 业务参数
*/ */
protected Map<String, Object> getProcessBizParams(String bizId) { protected Map<String, Object> getProcessBizParams(String bizId) {
...@@ -2416,8 +2404,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2416,8 +2404,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 得到当前Activity * 得到当前Activity
* *
* @param processDefinitionId * @param processDefinitionId 流程定义ID
* 流程定义ID
* @return activity 环节ID * @return activity 环节ID
*/ */
protected ActivityImpl getCurrentActivity(String processDefinitionId, String activityId) { protected ActivityImpl getCurrentActivity(String processDefinitionId, String activityId) {
...@@ -2436,8 +2423,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2436,8 +2423,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 是否申请环节 * 是否申请环节
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
* @return 是否申请环节 * @return 是否申请环节
*/ */
protected boolean isApplyProcUnit(DelegateTask delegateTask) { protected boolean isApplyProcUnit(DelegateTask delegateTask) {
...@@ -2575,18 +2561,12 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2575,18 +2561,12 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 生成环节处理人 * 生成环节处理人
* *
* @param approvalRule * @param approvalRule 审批规则
* 审批规则 * @param approvalRuleHandler 审批规则处理人
* @param approvalRuleHandler * @param bizId 业务ID
* 审批规则处理人 * @param procUnitId 流程环节ID
* @param bizId * @param orgUnit 组织单元
* 业务ID * @param sequence 序号
* @param procUnitId
* 流程环节ID
* @param orgUnit
* 组织单元
* @param sequence
* 序号
* @return * @return
*/ */
protected Map<String, Object> buildProcUnitHandler(ApprovalRule approvalRule, ApprovalRuleHandler approvalRuleHandler, String bizId, String procUnitId, protected Map<String, Object> buildProcUnitHandler(ApprovalRule approvalRule, ApprovalRuleHandler approvalRuleHandler, String bizId, String procUnitId,
...@@ -2600,6 +2580,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2600,6 +2580,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
approvalRuleHandler.getGroupId(), sequence, 0); approvalRuleHandler.getGroupId(), sequence, 0);
if (approvalRule != null) { if (approvalRule != null) {
buildTaskExecuteMode(approvalRule, approvalRuleHandler.getGroupId(), handler); buildTaskExecuteMode(approvalRule, approvalRuleHandler.getGroupId(), handler);
buildLimitHandler(approvalRule, approvalRuleHandler, handler);
} }
// 发送消息 // 发送消息
handler.put("sendMessage", approvalRuleHandler.getSendMessage()); handler.put("sendMessage", approvalRuleHandler.getSendMessage());
...@@ -2607,6 +2588,16 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2607,6 +2588,16 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
return handler; return handler;
} }
/**
* @since 1.1.3
*/
private void buildLimitHandler(ApprovalRule approvalRule, ApprovalRuleHandler approvalRuleHandler, Map<String, Object> handler) {
ApprovalRuleHandlerGroup approvalRuleHandlerGroup = approvalRule.findApprovalRuleHandlerGroup(approvalRuleHandler.getGroupId());
if (approvalRuleHandlerGroup != null) {
handler.put("limitHandler", approvalRuleHandlerGroup.getLimitHandler());
}
}
/** /**
* 添加附加审批人员 * 添加附加审批人员
* <p> * <p>
...@@ -2625,14 +2616,10 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2625,14 +2616,10 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 添加附加处理人 * 添加附加处理人
* *
* @param bizId * @param bizId 业务ID
* 业务ID * @param chiefHandlers 主审人
* @param chiefHandlers * @param additionalHandlers 附加处理人
* 主审人 * @param currentProcUnitId 当前流程环节ID
* @param additionalHandlers
* 附加处理人
* @param currentProcUnitId
* 当前流程环节ID
*/ */
protected void addAdditionalHandlers(String bizId, List<Map<String, Object>> chiefHandlers, List<Map<String, Object>> additionalHandlers, protected void addAdditionalHandlers(String bizId, List<Map<String, Object>> chiefHandlers, List<Map<String, Object>> additionalHandlers,
String currentProcUnitId) { String currentProcUnitId) {
...@@ -2678,8 +2665,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2678,8 +2665,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 通过环节ID获取环节处理人 * 通过环节ID获取环节处理人
* *
* @param delegateTask * @param delegateTask 代理任务
* 代理任务
* @return 环节处理人 * @return 环节处理人
*/ */
protected List<OrgUnit> getHandlersByProcUnitId(DelegateTask delegateTask, String procUnitId) { protected List<OrgUnit> getHandlersByProcUnitId(DelegateTask delegateTask, String procUnitId) {
...@@ -2750,7 +2736,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2750,7 +2736,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
continue; continue;
} }
currentPersonId = currentPersonId.substring(0, currentPersonId.indexOf('@')); currentPersonId = currentPersonId.substring(0, currentPersonId.indexOf('@'));
handlersLoop: for (int j = i - 1; j >= 0; j--) { handlersLoop:
for (int j = i - 1; j >= 0; j--) {
priorHandler = handlers.get(j); priorHandler = handlers.get(j);
priorPersonId = ClassHelper.convert(priorHandler.get("handlerId"), String.class); priorPersonId = ClassHelper.convert(priorHandler.get("handlerId"), String.class);
priorStatus = ClassHelper.convert(priorHandler.get("status"), Integer.class, 0); priorStatus = ClassHelper.convert(priorHandler.get("status"), Integer.class, 0);
...@@ -2799,10 +2786,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2799,10 +2786,8 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 排除指定人员 * 排除指定人员
* *
* @param bizId * @param bizId 业务ID
* 业务ID * @param handlers 处理人集合
* @param handlers
* 处理人集合
*/ */
private void excludeSpecifiedHandler(String bizId, List<Map<String, Object>> handlers) { private void excludeSpecifiedHandler(String bizId, List<Map<String, Object>> handlers) {
List<String> specifiedExcludeHandler = getSpecifiedExcludeHandler(bizId); List<String> specifiedExcludeHandler = getSpecifiedExcludeHandler(bizId);
...@@ -2840,8 +2825,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2840,8 +2825,7 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 得到指定的排除人员列表 * 得到指定的排除人员列表
* *
* @param bizId * @param bizId 业务id
* 业务id
* @return * @return
*/ */
protected List<String> getSpecifiedExcludeHandler(String bizId) { protected List<String> getSpecifiedExcludeHandler(String bizId) {
...@@ -2851,12 +2835,9 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2851,12 +2835,9 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 内部抄送 * 内部抄送
* *
* @param orgUnits * @param orgUnits 组织单元
* 组织单元 * @param taskId 任务ID
* @param taskId * @param description 标题
* 任务ID
* @param description
* 标题
*/ */
private void internalMakeACopyFor(List<OrgUnit> orgUnits, String taskId, String description) { private void internalMakeACopyFor(List<OrgUnit> orgUnits, String taskId, String description) {
if (orgUnits.size() > 0) { if (orgUnits.size() > 0) {
...@@ -2874,14 +2855,10 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi ...@@ -2874,14 +2855,10 @@ public class FlowBroker extends BaseApplication implements TaskListener, Executi
/** /**
* 给指定的管理权限发抄送任务 * 给指定的管理权限发抄送任务
* *
* @param orgId * @param orgId 组织ID
* 组织ID * @param manageType 业务管理权限类别
* @param manageType * @param taskId 任务ID
* 业务管理权限类别 * @param description 标题
* @param taskId
* 任务ID
* @param description
* 标题
*/ */
protected void makeACopyForToManageType(String orgId, String manageType, String taskId, String description) { protected void makeACopyForToManageType(String orgId, String manageType, String taskId, String description) {
List<OrgUnit> orgUnits = orgFun.findManagers(orgId, manageType, false, null); List<OrgUnit> orgUnits = orgFun.findManagers(orgId, manageType, false, null);
......
...@@ -461,10 +461,16 @@ public class ApprovalRuleApplicationImpl extends BaseApplication implements Appr ...@@ -461,10 +461,16 @@ public class ApprovalRuleApplicationImpl extends BaseApplication implements Appr
} }
@Override @Override
@Transactional @Transactional(rollbackFor = RuntimeException.class)
public void saveApprovalRuleHandler(String approvalRuleId, ApprovalRuleHandler approvalRuleHandler, TaskExecuteMode taskExecuteMode, public void saveApprovalRuleHandler(String approvalRuleId, ApprovalRuleHandler approvalRuleHandler, TaskExecuteMode taskExecuteMode,
List<ApprovalRuleHandlerAssist> assistants, List<ApprovalRuleHandlerAssist> ccs, List<ApprovalRuleHandlerAssist> assistants, List<ApprovalRuleHandlerAssist> ccs,
List<ApprovalRuleHandlerUIElmentPermission> uiElmentPermissions) { List<ApprovalRuleHandlerUIElmentPermission> fieldAuthorizations) {
saveApprovalRuleHandler(approvalRuleId, approvalRuleHandler, taskExecuteMode, null, assistants, ccs, fieldAuthorizations);
}
@Transactional(rollbackFor = RuntimeException.class)
@Override
public void saveApprovalRuleHandler(String approvalRuleId, ApprovalRuleHandler approvalRuleHandler, TaskExecuteMode taskExecuteMode, Integer limitHandler, List<ApprovalRuleHandlerAssist> assistants, List<ApprovalRuleHandlerAssist> ccs, List<ApprovalRuleHandlerUIElmentPermission> fieldAuthorizations) {
Assert.hasText(approvalRuleId, "参数approvalRuleId不能为空。"); Assert.hasText(approvalRuleId, "参数approvalRuleId不能为空。");
Assert.notNull(approvalRuleHandler, "参数approvalRuleHandler不能为空。"); Assert.notNull(approvalRuleHandler, "参数approvalRuleHandler不能为空。");
...@@ -473,13 +479,18 @@ public class ApprovalRuleApplicationImpl extends BaseApplication implements Appr ...@@ -473,13 +479,18 @@ public class ApprovalRuleApplicationImpl extends BaseApplication implements Appr
ApprovalRuleHandler sourceApprovalRuleHandler = approvalRule.findApprovalRuleHandler(approvalRuleHandler.getId()); ApprovalRuleHandler sourceApprovalRuleHandler = approvalRule.findApprovalRuleHandler(approvalRuleHandler.getId());
ApprovalRuleHandlerGroup approvalRuleHandlerGroup = approvalRule.findApprovalRuleHandlerGroup(sourceApprovalRuleHandler.getGroupId()); ApprovalRuleHandlerGroup approvalRuleHandlerGroup = approvalRule.findApprovalRuleHandlerGroup(sourceApprovalRuleHandler.getGroupId());
sourceApprovalRuleHandler.fromEntity(approvalRuleHandler); sourceApprovalRuleHandler.fromEntity(approvalRuleHandler);
if (taskExecuteMode == null) { if(taskExecuteMode == null && limitHandler == null) {
if (approvalRuleHandlerGroup != null) { if (approvalRuleHandlerGroup != null) {
approvalRule.getApprovalRuleHandlerGroups().remove(approvalRuleHandlerGroup); approvalRule.getApprovalRuleHandlerGroups().remove(approvalRuleHandlerGroup);
} }
}
if (taskExecuteMode == null) {
if (approvalRuleHandlerGroup != null) {
approvalRuleHandlerGroup.setTaskExecuteMode(null);
}
} else { } else {
if (approvalRuleHandlerGroup == null) { if (approvalRuleHandlerGroup == null) {
approvalRuleHandlerGroup = new ApprovalRuleHandlerGroup(); approvalRuleHandlerGroup = new ApprovalRuleHandlerGroup();
...@@ -488,6 +499,21 @@ public class ApprovalRuleApplicationImpl extends BaseApplication implements Appr ...@@ -488,6 +499,21 @@ public class ApprovalRuleApplicationImpl extends BaseApplication implements Appr
approvalRuleHandlerGroup.setGroupId(sourceApprovalRuleHandler.getGroupId()); approvalRuleHandlerGroup.setGroupId(sourceApprovalRuleHandler.getGroupId());
approvalRuleHandlerGroup.setTaskExecuteMode(taskExecuteMode); approvalRuleHandlerGroup.setTaskExecuteMode(taskExecuteMode);
} }
if(limitHandler == null) {
if(approvalRuleHandlerGroup != null) {
approvalRuleHandlerGroup.setLimitHandler(null);
}
} else {
if (approvalRuleHandlerGroup == null) {
approvalRuleHandlerGroup = new ApprovalRuleHandlerGroup();
approvalRule.getApprovalRuleHandlerGroups().add(approvalRuleHandlerGroup);
}
approvalRuleHandlerGroup.setGroupId(sourceApprovalRuleHandler.getGroupId());
approvalRuleHandlerGroup.setLimitHandler(limitHandler);
}
// 协审 抄送 // 协审 抄送
sourceApprovalRuleHandler.getAssists().clear(); sourceApprovalRuleHandler.getAssists().clear();
if (assistants != null) { if (assistants != null) {
...@@ -498,8 +524,8 @@ public class ApprovalRuleApplicationImpl extends BaseApplication implements Appr ...@@ -498,8 +524,8 @@ public class ApprovalRuleApplicationImpl extends BaseApplication implements Appr
} }
// 权限字段 // 权限字段
sourceApprovalRuleHandler.getUIElmentPermissions().clear(); sourceApprovalRuleHandler.getUIElmentPermissions().clear();
if (uiElmentPermissions != null) { if (fieldAuthorizations != null) {
sourceApprovalRuleHandler.getUIElmentPermissions().addAll(uiElmentPermissions); sourceApprovalRuleHandler.getUIElmentPermissions().addAll(fieldAuthorizations);
} }
this.commonDomainService.saveTreeEntity(approvalRule, this.approvalRuleRepository, approvalRule.getName(), false); this.commonDomainService.saveTreeEntity(approvalRule, this.approvalRuleRepository, approvalRule.getName(), false);
} }
...@@ -521,7 +547,7 @@ public class ApprovalRuleApplicationImpl extends BaseApplication implements Appr ...@@ -521,7 +547,7 @@ public class ApprovalRuleApplicationImpl extends BaseApplication implements Appr
if (procunithandlerIds != null && procunithandlerIds.size() > 0) { if (procunithandlerIds != null && procunithandlerIds.size() > 0) {
List<Object[]> updateIds = new ArrayList<>(procunithandlerIds.size()); List<Object[]> updateIds = new ArrayList<>(procunithandlerIds.size());
for (String procunithandlerId : procunithandlerIds) { for (String procunithandlerId : procunithandlerIds) {
updateIds.add(new Object[] { procunithandlerId }); updateIds.add(new Object[]{procunithandlerId});
} }
if (updateIds.size() > 0) { if (updateIds.size() > 0) {
this.sqlExecutorDao.batchUpdate("update wf_procunithandler t set t.approval_rule_handler_id='' where t.id=?", updateIds); this.sqlExecutorDao.batchUpdate("update wf_procunithandler t set t.approval_rule_handler_id='' where t.id=?", updateIds);
......
...@@ -343,7 +343,7 @@ public class ApprovalRuleController extends CommonController { ...@@ -343,7 +343,7 @@ public class ApprovalRuleController extends CommonController {
return success(); return success();
} }
@RequiresPermissions(value = { "ProcApprovalRuleConfig:create", "ProcApprovalRuleConfig:update" }, logical = Logical.OR) @RequiresPermissions(value = {"ProcApprovalRuleConfig:create", "ProcApprovalRuleConfig:update"}, logical = Logical.OR)
@LogInfo(logType = LogType.SYS, subType = "", operaionType = OperationType.SAVE, description = "保存流程审批规则处理人") @LogInfo(logType = LogType.SYS, subType = "", operaionType = OperationType.SAVE, description = "保存流程审批规则处理人")
public String saveApprovalRuleHandlers() { public String saveApprovalRuleHandlers() {
SDO params = this.getSDO(); SDO params = this.getSDO();
...@@ -356,7 +356,7 @@ public class ApprovalRuleController extends CommonController { ...@@ -356,7 +356,7 @@ public class ApprovalRuleController extends CommonController {
return success(); return success();
} }
@RequiresPermissions(value = { "ProcApprovalRuleConfig:create", "ProcApprovalRuleConfig:update" }, logical = Logical.OR) @RequiresPermissions(value = {"ProcApprovalRuleConfig:create", "ProcApprovalRuleConfig:update"}, logical = Logical.OR)
@LogInfo(logType = LogType.SYS, subType = "", operaionType = OperationType.SAVE, description = "保存流程审批规则处理人") @LogInfo(logType = LogType.SYS, subType = "", operaionType = OperationType.SAVE, description = "保存流程审批规则处理人")
public String saveApprovalRuleHandler() { public String saveApprovalRuleHandler() {
SDO params = this.getSDO(); SDO params = this.getSDO();
...@@ -365,6 +365,8 @@ public class ApprovalRuleController extends CommonController { ...@@ -365,6 +365,8 @@ public class ApprovalRuleController extends CommonController {
ApprovalRuleHandler approvalRuleHandler = params.toObject(ApprovalRuleHandler.class); ApprovalRuleHandler approvalRuleHandler = params.toObject(ApprovalRuleHandler.class);
// 分组 任务执行模式 // 分组 任务执行模式
TaskExecuteMode taskExecuteMode = TaskExecuteMode.fromId(params.getString("taskExecuteMode")); TaskExecuteMode taskExecuteMode = TaskExecuteMode.fromId(params.getString("taskExecuteMode"));
// 最少审批人数
Integer limitHandler = params.getInteger("limitHandler");
// 协审 // 协审
List<ApprovalRuleHandlerAssist> assistants = params.getList("assistantList", ApprovalRuleHandlerAssist.class); List<ApprovalRuleHandlerAssist> assistants = params.getList("assistantList", ApprovalRuleHandlerAssist.class);
// 抄送 // 抄送
...@@ -372,7 +374,7 @@ public class ApprovalRuleController extends CommonController { ...@@ -372,7 +374,7 @@ public class ApprovalRuleController extends CommonController {
// 字段权限 // 字段权限
List<ApprovalRuleHandlerUIElmentPermission> uiElmentPermissions = params.getList("fieldPermissionList", ApprovalRuleHandlerUIElmentPermission.class); List<ApprovalRuleHandlerUIElmentPermission> uiElmentPermissions = params.getList("fieldPermissionList", ApprovalRuleHandlerUIElmentPermission.class);
this.approvalRuleApplication.saveApprovalRuleHandler(approvalRuleId, approvalRuleHandler, taskExecuteMode, assistants, ccs, uiElmentPermissions); this.approvalRuleApplication.saveApprovalRuleHandler(approvalRuleId, approvalRuleHandler, taskExecuteMode, limitHandler, assistants, ccs, uiElmentPermissions);
return success(); return success();
} }
...@@ -409,7 +411,7 @@ public class ApprovalRuleController extends CommonController { ...@@ -409,7 +411,7 @@ public class ApprovalRuleController extends CommonController {
return toResult(data); return toResult(data);
} }
@RequiresPermissions(value = { "ProcApprovalRuleConfig:create", "ProcApprovalRuleConfig:update" }, logical = Logical.OR) @RequiresPermissions(value = {"ProcApprovalRuleConfig:create", "ProcApprovalRuleConfig:update"}, logical = Logical.OR)
@LogInfo(logType = LogType.SYS, subType = "", operaionType = OperationType.SAVE, description = "保存流程审批规则审批要素") @LogInfo(logType = LogType.SYS, subType = "", operaionType = OperationType.SAVE, description = "保存流程审批规则审批要素")
public String saveApprovalRuleElements() { public String saveApprovalRuleElements() {
SDO params = this.getSDO(); SDO params = this.getSDO();
...@@ -448,6 +450,7 @@ public class ApprovalRuleController extends CommonController { ...@@ -448,6 +450,7 @@ public class ApprovalRuleController extends CommonController {
if (approvalRuleHandlerGroup != null) { if (approvalRuleHandlerGroup != null) {
this.putAttribute("taskExecuteMode", approvalRuleHandlerGroup.getTaskExecuteMode()); this.putAttribute("taskExecuteMode", approvalRuleHandlerGroup.getTaskExecuteMode());
this.putAttribute("limitHandler", approvalRuleHandlerGroup.getLimitHandler());
} }
return forward("ApprovalHandlerDetailConfig", approvalRuleHandler); return forward("ApprovalHandlerDetailConfig", approvalRuleHandler);
......
package com.huigou.uasp.bpm.engine.application.impl; package com.huigou.uasp.bpm.engine.application.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.huigou.data.query.executor.SQLExecutorDao;
import com.huigou.util.*;
import org.activiti.engine.impl.context.Context;
import org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import com.huigou.cache.SystemCache; import com.huigou.cache.SystemCache;
import com.huigou.context.MessageSourceContext; import com.huigou.context.MessageSourceContext;
import com.huigou.context.Operator; import com.huigou.context.Operator;
...@@ -29,28 +12,28 @@ import com.huigou.data.query.model.QueryModel; ...@@ -29,28 +12,28 @@ import com.huigou.data.query.model.QueryModel;
import com.huigou.uasp.bmp.common.application.BaseApplication; import com.huigou.uasp.bmp.common.application.BaseApplication;
import com.huigou.uasp.bmp.fn.impl.ProcessFun; import com.huigou.uasp.bmp.fn.impl.ProcessFun;
import com.huigou.uasp.bmp.opm.domain.model.org.Org; import com.huigou.uasp.bmp.opm.domain.model.org.Org;
import com.huigou.uasp.bpm.ActivityKind; import com.huigou.uasp.bpm.*;
import com.huigou.uasp.bpm.HandleResult;
import com.huigou.uasp.bpm.ProcessStatus;
import com.huigou.uasp.bpm.TaskKind;
import com.huigou.uasp.bpm.TaskScope;
import com.huigou.uasp.bpm.TaskStatus;
import com.huigou.uasp.bpm.engine.application.ActApplication; import com.huigou.uasp.bpm.engine.application.ActApplication;
import com.huigou.uasp.bpm.engine.application.ProcUnitHandlerApplication; import com.huigou.uasp.bpm.engine.application.ProcUnitHandlerApplication;
import com.huigou.uasp.bpm.engine.application.WorkflowApplication; import com.huigou.uasp.bpm.engine.application.WorkflowApplication;
import com.huigou.uasp.bpm.engine.domain.dto.BackTaskInfo; import com.huigou.uasp.bpm.engine.domain.dto.BackTaskInfo;
import com.huigou.uasp.bpm.engine.domain.model.HistoricProcessInstanceExtension; import com.huigou.uasp.bpm.engine.domain.model.*;
import com.huigou.uasp.bpm.engine.domain.model.HistoricTaskInstanceExtension;
import com.huigou.uasp.bpm.engine.domain.model.HistoricTaskInstanceRelation;
import com.huigou.uasp.bpm.engine.domain.model.ProcUnitHandler;
import com.huigou.uasp.bpm.engine.domain.model.ProcUnitHandlerManuscript;
import com.huigou.uasp.bpm.engine.domain.model.RuntimeTaskExtension;
import com.huigou.uasp.bpm.engine.domain.query.TaskDetail; import com.huigou.uasp.bpm.engine.domain.query.TaskDetail;
import com.huigou.uasp.bpm.engine.repository.HistoricProcInstanceExtensionRepository; import com.huigou.uasp.bpm.engine.repository.HistoricProcInstanceExtensionRepository;
import com.huigou.uasp.bpm.engine.repository.HistoricTaskInstanceExtensionRepository; import com.huigou.uasp.bpm.engine.repository.HistoricTaskInstanceExtensionRepository;
import com.huigou.uasp.bpm.engine.repository.HistoricTaskInstanceRelationRepository; import com.huigou.uasp.bpm.engine.repository.HistoricTaskInstanceRelationRepository;
import com.huigou.uasp.bpm.engine.repository.RuntimeTaskExtensionRepository; import com.huigou.uasp.bpm.engine.repository.RuntimeTaskExtensionRepository;
import com.huigou.uasp.bpm.managment.application.ProcDefinitionApplication; import com.huigou.uasp.bpm.managment.application.ProcDefinitionApplication;
import com.huigou.util.*;
import org.activiti.engine.impl.context.Context;
import org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.*;
@Service("actApplication") @Service("actApplication")
public class ActApplicationImpl extends BaseApplication implements ActApplication { public class ActApplicationImpl extends BaseApplication implements ActApplication {
...@@ -536,6 +519,11 @@ public class ActApplicationImpl extends BaseApplication implements ActApplicatio ...@@ -536,6 +519,11 @@ public class ActApplicationImpl extends BaseApplication implements ActApplicatio
return this.sqlExecutorDao.queryToMap(sql, taskId); return this.sqlExecutorDao.queryToMap(sql, taskId);
} }
@Override
public RuntimeTaskExtension queryByRuntimeTaskById(String taskId) {
return runtimeTaskExtensionRepository.findOne(taskId);
}
@Override @Override
public Map<String, Object> loadRuntimeTaskByBizId(String bizId) { public Map<String, Object> loadRuntimeTaskByBizId(String bizId) {
String sql = this.getQuerySqlByName("loadRuntimeTaskByBizId"); String sql = this.getQuerySqlByName("loadRuntimeTaskByBizId");
......
...@@ -39,8 +39,11 @@ ...@@ -39,8 +39,11 @@
label="任务执行模式" emptyOption="true" fieldCol="4" /> label="任务执行模式" emptyOption="true" fieldCol="4" />
</div> </div>
<div class="hg-form-row"> <div class="hg-form-row">
<x:inputC name="limitHandler" label="最少审批人数" spinner="true" mask="nnn" fieldCol="4" />
<x:inputC name="groupId" spinner="true" mask="nnn" <x:inputC name="groupId" spinner="true" mask="nnn"
dataOptions="min:1" required="true" label="审批分组" fieldCol="4" /> dataOptions="min:1" required="true" label="审批分组" fieldCol="4" />
</div>
<div class="hg-form-row">
<x:inputC name="sequence" spinner="true" mask="nnn" <x:inputC name="sequence" spinner="true" mask="nnn"
dataOptions="min:1" required="true" label="审批序号" fieldCol="4" /> dataOptions="min:1" required="true" label="审批序号" fieldCol="4" />
</div> </div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment