private Query buildCommonQuery()

in extension/storage/storage-mongodb/src/main/java/com/alibaba/smart/framework/engine/persister/mongo/service/MongoTaskAssigneeInstanceStorage.java [106:144]


    private Query buildCommonQuery(PendingTaskQueryParam pendingTaskQueryParam) {
        Query query = new Query();

        if(null !=  pendingTaskQueryParam.getProcessDefinitionType()){
            query.addCriteria(Criteria.where(MongoConstant.PROCESS_DEFINITION_TYPE).is(pendingTaskQueryParam.getProcessDefinitionType()));
        }

        if(null != pendingTaskQueryParam.getProcessInstanceIdList()){
            query.addCriteria(Criteria.where(PROCESS_INSTANCE_ID).in(pendingTaskQueryParam.getProcessInstanceIdList()));
        }

        if(null != pendingTaskQueryParam.getAssigneeUserId()){
            Criteria userPendingCriteria = Criteria.where("assigneeId").is(
                pendingTaskQueryParam.getAssigneeUserId()).and("assigneeType").is("user");

            Criteria  groupPendingCriteria = null;
            if(CollectionUtil.isNotEmpty(pendingTaskQueryParam.getAssigneeGroupIdList())){
                groupPendingCriteria   = Criteria.where("assigneeId").in(pendingTaskQueryParam.getAssigneeGroupIdList()).and("assigneeType").is("groupPendingCriteria");
            }

            if(groupPendingCriteria == null ){

                // only user
                query.addCriteria(userPendingCriteria);

            }else{

                // user and group, need or condition
                Criteria cr = new Criteria();
                cr.orOperator(userPendingCriteria,groupPendingCriteria);

                query.addCriteria(cr);

            }


        }
        return query;
    }