/*
   * 创建spring security使用的用户
   * userinfo:loginName~~companyCode
   */
  private com.norteksoft.acs.entity.security.User createUserdetail(
      User user,
      Company company,
      List<GrantedAuthority> authsList,
      Department subCompany,
      String userinfo) {
    com.norteksoft.acs.entity.security.User userdetail =
        new com.norteksoft.acs.entity.security.User(
            user.getId(),
            userinfo,
            user.getPassword(),
            user.getEmail(),
            user.getEnabled(),
            !user.getAccountExpired(),
            true,
            !user.getAccountLocked(),
            authsList.toArray(new GrantedAuthority[authsList.size()]),
            company.getId(),
            company.getCode(),
            company.getName(),
            user.getSecretGrade());
    userdetail.setLoginName(user.getLoginName());
    userdetail.setHonorificTitle(user.getHonorificName());
    userdetail.setTrueName(user.getName());
    userdetail.setRoleCodes(user.getRoleCodes());
    String theme = indexManager.getThemeByUser(user.getId(), company.getId());
    if (StringUtils.isEmpty(theme)) theme = getDefaultTheme();
    userdetail.setTheme(theme);

    String language =
        userCurrentLanguageManager.getUserLanguageByUserId(user.getId(), company.getId());
    if (StringUtils.isEmpty(language)) language = getDefaultLanguage();
    userdetail.setCurrentLanguage(language);

    userdetail.setSubCompanyId(user.getSubCompanyId());
    userdetail.setDepartmentId(user.getMainDepartmentId());
    if (subCompany != null) {
      userdetail.setSubCompanyCode(subCompany.getCode());
      userdetail.setSubCompanyName(subCompany.getName());
      userdetail.setSubCompanyShortTitle(subCompany.getShortTitle());
    }
    return userdetail;
  }
 /** 用户节点 */
 public String getUserNodes(Long deptId) throws Exception {
   StringBuilder nodes = new StringBuilder();
   Department dept = departmentManager.getDepartment(deptId);
   for (Department d : dept.getChildren()) {
     nodes.append(getDdeptNodes(d)).append(",");
   }
   for (DepartmentUser du : dept.getDepartmentUsers()) {
     if (du.isDeleted()) continue;
     com.norteksoft.acs.entity.organization.User user = du.getUser();
     if (user.isDeleted()) continue;
     nodes
         .append(
             JsTreeUtils.generateJsTreeNodeDefault(
                 "USER," + user.getId() + "," + user.getLoginName(), "", user.getName(), ""))
         .append(",");
   }
   JsTreeUtils.removeLastComma(nodes);
   return nodes.toString();
 }