package com.iailab.module.bpm.framework.flowable.core.candidate.strategy.user; import com.iailab.framework.common.util.string.StrUtils; import com.iailab.module.bpm.dal.dataobject.definition.BpmUserGroupDO; import com.iailab.module.bpm.framework.flowable.core.candidate.BpmTaskCandidateStrategy; import com.iailab.module.bpm.framework.flowable.core.enums.BpmTaskCandidateStrategyEnum; import com.iailab.module.bpm.service.definition.BpmUserGroupService; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Collection; import java.util.List; import java.util.Set; import static com.iailab.framework.common.util.collection.CollectionUtils.convertSetByFlatMap; /** * 用户组 {@link BpmTaskCandidateStrategy} 实现类 * * @author hou */ @Component public class BpmTaskCandidateGroupStrategy implements BpmTaskCandidateStrategy { @Resource private BpmUserGroupService userGroupService; @Override public BpmTaskCandidateStrategyEnum getStrategy() { return BpmTaskCandidateStrategyEnum.USER_GROUP; } @Override public void validateParam(String param) { Set groupIds = StrUtils.splitToLongSet(param); userGroupService.validUserGroups(groupIds); } @Override public Set calculateUsers(String param) { Set groupIds = StrUtils.splitToLongSet(param); List groups = userGroupService.getUserGroupList(groupIds); return convertSetByFlatMap(groups, BpmUserGroupDO::getUserIds, Collection::stream); } }