@Override
  public Response<Paging<RequirementSolution>> findByRequirementId(
      Long requirementId, String statusArray, Integer pageNo, Integer size) {
    Response<Paging<RequirementSolution>> result = new Response<Paging<RequirementSolution>>();

    if (requirementId == null) {
      log.error("find requirement solutions need requirementId");
      result.setError("solution.requirementId.null");
      return result;
    }

    try {
      Map<String, Object> params = Maps.newHashMap();
      PageInfo pageInfo = new PageInfo(pageNo, Objects.firstNonNull(size, 10));
      params.putAll(pageInfo.toMap());
      params.put(
          "statusArray", statusArray == null ? null : Splitters.COMMA.splitToList(statusArray));
      result.setResult(requirementSolutionDao.findByParams(requirementId, params));
    } catch (Exception e) {
      log.error(
          "find requirement solutions failed, requirementId={}, error code={}",
          requirementId,
          Throwables.getStackTraceAsString(e));
      result.setError("solution.find.failed");
    }

    return result;
  }