/**
   * 返回null表示修改成功
   *
   * @param cell
   * @return
   */
  @SuppressWarnings("unused")
  private BatchExceptionData modifyUserAccountProject(Cell[] cell) {

    String message = "";

    try {

      String projectName = cell[0].getContents().trim();
      int projectId = Integer.parseInt(cell[1].getContents().trim());

      String realName = cell[3].getContents().trim();
      String userName = cell[4].getContents().trim();

      CompanyProject project = companyProjectServices.findCompanyProjectById(projectId);
      if (project == null || !projectName.equals(project.getProjectName())) {

        message = "项目名称与id不一致";
        throw new Exception();
      }

      UserAccount user = userAccountServices.findUserAccountByUserNameIncludeDelete(userName);
      if (user == null || !realName.equals(user.getRealName())) {

        message = "用户的姓名与账号不一致";
        throw new Exception();
      }

      user.setProjectId(projectId);

      user.setModId(SessionUser.getUserId());
      user.setModTime(new Date());

      userAccountServices.updateUserAccount(user);

    } catch (Exception e) {

      if (CommonUtils.isStrEmpty(message)) {

        message = "数据格式不合法";
      }
    }

    if (CommonUtils.isStrEmpty(message)) {
      // 表示修改成功

      return null;
    }

    BatchExceptionData retPojo = new BatchExceptionData();

    retPojo.setProjectName(cell[0].getContents());
    retPojo.setProjectId(cell[1].getContents());
    retPojo.setJobNumber(cell[2].getContents());
    retPojo.setRealName(cell[3].getContents());
    retPojo.setUserName(cell[4].getContents());
    retPojo.setExceptionData(message);

    return retPojo;
  }
  /**
   * 返回null表示修改成功
   *
   * @param cell
   * @param proList
   * @param companyId
   * @return
   */
  private BatchExceptionData modifyUserAccountProject(
      Cell[] cell, List<CompanyProject> proList, int companyId) {

    String message = "";

    try {

      String projectName = cell[0].getContents().trim();
      int projectId = 0;
      try {
        projectId = Integer.parseInt(cell[1].getContents().trim());
      } catch (Exception e) {
      }

      String jobNumber = cell[2].getContents().trim();

      String realName = cell[3].getContents().trim();

      if (projectId > 0) {
        // 表示填了项目id

        CompanyProject project = companyProjectServices.findCompanyProjectById(projectId);
        if (project == null || !projectName.equals(project.getProjectName())) {

          message = "项目名称与id不一致";
          throw new Exception();
        }
      } else {
        // 没有填项目id

        List<CompanyProject> inclueProList = isIncludeOnlyCompanyProject(proList, projectName);
        if (CommonUtils.isCollectionEmpty(inclueProList) || inclueProList.size() != 1) {

          message = "选择的公司该项目不合法";
          throw new Exception();
        }

        projectId = inclueProList.get(0).getId();
      }

      UserAccount userAccount = new UserAccount(); // 参数
      userAccount.setCompanyId(companyId);
      userAccount.setRealName(realName);
      if (!CommonUtils.isStrEmpty(jobNumber)) {
        userAccount.setJobNumber(jobNumber);
      }

      List<UserAccount> userList =
          userAccountServices.findUserAccountByCompanyIdAndRealNameOrJobNumberIncludeDelete(
              userAccount);
      if (CommonUtils.isCollectionEmpty(userList) || userList.size() != 1) {

        message = "用户姓名不能唯一确定一个用户";
        throw new Exception();
      }

      UserAccount user = userList.get(0);

      user.setProjectId(projectId);

      user.setModId(SessionUser.getUserId());
      user.setModTime(new Date());

      userAccountServices.updateUserAccount(user);

    } catch (Exception e) {

      if (CommonUtils.isStrEmpty(message)) {

        message = "数据格式不合法\n" + e.getMessage();
      }
    }

    if (CommonUtils.isStrEmpty(message)) {
      // 表示修改成功

      return null;
    }

    BatchExceptionData retPojo = new BatchExceptionData();

    retPojo.setProjectName(cell[0].getContents());
    retPojo.setProjectId(cell[1].getContents());
    retPojo.setJobNumber(cell[2].getContents());
    retPojo.setRealName(cell[3].getContents());
    retPojo.setExceptionData(message);

    return retPojo;
  }