@Override
  public Response<List<RequirementSolution>> findAllSolution(Long requirementId, Integer status) {
    Response<List<RequirementSolution>> result = new Response<List<RequirementSolution>>();

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

    if (RequirementStatus.from(status) == null) {
      log.error("can't find the status type.");
      result.setError("requirement.status.null");
      return result;
    }

    // 当查询阶段为空时默认方案交互阶段
    Objects.firstNonNull(status, 3);

    try {
      List<RequirementSolution> solutionList;
      if (Objects.equal(RequirementStatus.SOL_END, RequirementStatus.from(status))) {
        // 当处于方案终投阶段(只能查询到最终确认最终方案的供应商的方案)
        solutionList =
            requirementSolutionDao.findSolutionEnds(
                requirementId, null, 5, RequirementSolution.Status.SEND_END.value());
      } else {
        solutionList = requirementSolutionDao.findAllSolution(requirementId);
      }
      result.setResult(solutionList);
    } catch (Exception e) {
      log.error(
          "find requirement solution failed, requirementId={}, error code={}",
          requirementId,
          Throwables.getStackTraceAsString(e));
      result.setError("requirement.find.failed");
    }

    return result;
  }