@Override
  public Response<Boolean> updateBatchTechnology(String solutions) {
    Response<Boolean> result = new Response<Boolean>();
    List<RequirementSolution> solutionList =
        JSON_MAPPER.fromJson(
            solutions, JSON_MAPPER.createCollectionType(List.class, RequirementSolution.class));

    if (solutionList == null || solutionList.isEmpty()) {
      log.error("requirement solutions is empty.");
      result.setError("requirement.solution.empty");
      return result;
    }

    try {
      RequirementSolution newSolution;
      for (RequirementSolution solution : solutionList) {
        if (solution.getTechnology() == null) {
          log.error("create module solution need technology");
          result.setError("solution.technology.null");
          return result;
        }

        if (solution.getTechnology() < 0 || solution.getTechnology() > 10000) {
          log.error("requirement solution technology score is in 0~100.");
          result.setError("solution.technology.scope");
          return result;
        }

        newSolution = new RequirementSolution();
        newSolution.setId(solution.getId());
        newSolution.setTechnology(solution.getTechnology());
        // 采购商对方案的技术进行评分
        requirementSolutionDao.update(newSolution);
      }

      result.setResult(true);
    } catch (Exception e) {
      log.error(
          "update requirement solution technology is failed, error code={}.",
          Throwables.getStackTraceAsString(e));
      result.setError("solution.technology.failed");
    }

    return result;
  }