许鹏程
2024-09-02 f0eaa3605bb2d87d94b0e8240d347c171a67123d
src/main/java/com/product/file/service/DocumentDirectoryService.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.product.common.collect.ListUtils;
import com.product.common.lang.DateUtils;
import com.product.core.config.CoreConst;
import com.product.core.dao.BaseDao;
import com.product.core.entity.DataTableEntity;
import com.product.core.entity.FieldSetEntity;
@@ -35,249 +36,274 @@
@Component
public class DocumentDirectoryService extends AbstractBaseService implements IDocumentDirectoryService {
  @Autowired
  public BaseDao baseDao;
  @Autowired
  public DocumentDirectoryService documentDirectoryService;
   @Autowired
   public BaseDao baseDao;
   @Autowired
   public DocumentDirectoryService documentDirectoryService;
  @Override
  @Transactional
  public String addDocumentDirectory(FieldSetEntity fieldSetEntity) throws BaseException {
   /**
    * 单位文件夹树
    *
    * @return
    */
   public DataTableEntity allDirectoryTree() {
      DataTableEntity dtTree = baseDao.listTable(CmnConst.PRODUCT_OA_DIRECTORY, "directory_type = 1");
      if (!BaseUtil.dataTableIsEmpty(dtTree)) {
         return BaseUtil.dataTableToTreeTable(dtTree, CmnConst.TRICODE, CmnConst.TRICODE_PARENT, null);
      }
      return dtTree;
   }
    String triCode = CodeUtil.getNewCodeByTemp(CmnConst.product_oa_DIRECTORY,CmnConst.TRICODE,!StringUtils.isEmpty(fieldSetEntity.getString(CmnConst.TRICODE_PARENT))?fieldSetEntity.getString(CmnConst.TRICODE_PARENT):"");
    fieldSetEntity.setValue(CmnConst.TRICODE,triCode);
    String[] codes = triCode.split("-");
    String org_level_uuid = SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid();
    fieldSetEntity.setValue(CmnConst.ORG_LEVEL_UUID,org_level_uuid);
    fieldSetEntity.setValue(CmnConst.DIRECTORY_TIER,codes.length);
    fieldSetEntity.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());// 获取登录帐号
    fieldSetEntity.setValue(CmnConst.CREATED_UTC_DATETIME, DateUtils.getDateTime());// 创建时间
    return baseDao.add(fieldSetEntity);
  }
  @Override
  @Transactional
  public boolean upDocumentDirectory(FieldSetEntity fieldSetEntity) throws BaseException {
    String uuid = fieldSetEntity.getString(CmnConst.UUID);
    FieldSetEntity fieldSet = baseDao.getFieldSetEntity(CmnConst.product_oa_DIRECTORY, uuid, false);
    String tricode_parent1 = fieldSetEntity.getString(CmnConst.TRICODE_PARENT);
    String tricode_parent2 = fieldSet.getString(CmnConst.TRICODE_PARENT);
    boolean flag;
      //上级目录tricode如果不相等
    if(!StringUtils.isEmpty(tricode_parent1) || !StringUtils.isEmpty(tricode_parent2)) {
      if (!StringUtils.isEmpty(tricode_parent1) && !StringUtils.isEmpty(tricode_parent2) && !tricode_parent1.equals(tricode_parent2)) {
        flag = true;
      }else if(!StringUtils.isEmpty(tricode_parent1) && !StringUtils.isEmpty(tricode_parent2) && tricode_parent1.equals(tricode_parent2)){
        flag = false;
      }else if(!StringUtils.isEmpty(tricode_parent1) && StringUtils.isEmpty(tricode_parent2)){
        tricode_parent2 = "";
        flag = true;
      }else if (!StringUtils.isEmpty(tricode_parent2) && StringUtils.isEmpty(tricode_parent1)){
        tricode_parent1 = "";
        flag = true;
      }else {
        flag = false;
      }
    }else {
      flag = false;
    }
    if(flag){
      StringBuffer sql=new StringBuffer()   ;
      sql.append(" update product_oa_directory set tricode=replace(");
      sql.append(" tricode,concat(?,'-'),concat(?,'-')),");
      sql.append(" tricode_parent=(case when tricode_parent=? then replace(tricode_parent,?,?) else ");
      sql.append(" replace (tricode_parent,concat(?,'-'),concat(?,'-')) end )");
      sql.append("  where  tricode like ?");
      baseDao.executeUpdate(sql.toString(), new String[]{
          tricode_parent1,
          tricode_parent2,
          tricode_parent1,
          tricode_parent1,
          tricode_parent2,
          tricode_parent1,
          tricode_parent2,
          tricode_parent1+"-%",
      });
    }
    fieldSetEntity.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());// 获取登录帐号
    fieldSetEntity.setValue(CmnConst.UPDATED_UTC_DATETIME, DateUtils.getDateTime());// 创建时间
    return baseDao.update(fieldSetEntity);
  }
  @Override
  @Transactional
  public boolean delDocumentDirectory(FieldSetEntity fieldSetEntity) throws BaseException {
    String uuid = fieldSetEntity.getString(CmnConst.UUID);
    String directory_type = fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE);
    String filter = "";
    if("2".equals(directory_type)){
      filter = " AND " +  "created_by = " + SpringMVCContextHolder.getCurrentUserId();
    }
    DataTableEntity dataTableEntity = baseDao.listTable("SELECT * FROM product_oa_directory WHERE directory_type = ? AND tricode_parent = (SELECT tricode FROM product_oa_directory where uuid = ?)" + filter,
    new String[]{directory_type,uuid});
    if(BaseUtil.dataTableIsEmpty(dataTableEntity)){
                baseDao.delete(CmnConst.product_oa_DOCUMENT, "directory_uuid = ?", new String[]{uuid});
        return baseDao.delete(CmnConst.product_oa_DIRECTORY, new String[]{uuid});
    }else {
      throw new BaseException(DocumentCode.DOCUMENT_CATALOG_DELETE_FAIL.getValue(), DocumentCode.DOCUMENT_CATALOG_DELETE_FAIL.getText(), this.getClass(),"public boolean delDocumentDirectory(FieldSetEntity fieldSetEntity) throws BaseException");
    }
  }
  /**
   * 获取当前文件路径
   * @param fieldSetEntity
   * @return
   * @throws BaseException
   */
  @Override
  public DataTableEntity getDirectoryStructure(FieldSetEntity fieldSetEntity) throws BaseException {
    String uuid = fieldSetEntity.getString(CmnConst.DIRECTORY_UUID);
    fieldSetEntity = baseDao.getFieldSetEntity(CmnConst.product_oa_DIRECTORY, uuid, false);
    String triCode = fieldSetEntity.getString(CmnConst.TRICODE);
    String type = fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE);
    List<String> codeList = ListUtils.newArrayList();
    //拆分为上级目录
  if(triCode.indexOf('-') != -1) {
    do {
      codeList.add(0, triCode);
      triCode = triCode.substring(0, triCode.lastIndexOf('-'));
    } while (triCode.indexOf('-') != -1);
      codeList.add(0,triCode);
  }else {
      codeList.add(triCode);
  }
  SystemUser user = SpringMVCContextHolder.getCurrentUser();
  DataTableEntity dataTableEntity;
  //单位文件夹
  if("1".equals(type)){
    codeList.add(0,user.getOrg_level_uuid());
    dataTableEntity = baseDao.listTable(CmnConst.product_oa_DIRECTORY,"directory_type = 1 AND org_level_uuid = ? AND "+BaseUtil.buildQuestionMarkFilter(CmnConst.TRICODE,codeList.size()-1,true),codeList.toArray(),"tricode");
   //个人文件夹
  }else {
    codeList.add(0,String.valueOf(user.getUser_id()));
    dataTableEntity = baseDao.listTable(CmnConst.product_oa_DIRECTORY,"directory_type = 2 AND created_by = ? AND "+BaseUtil.buildQuestionMarkFilter(CmnConst.TRICODE,codeList.size()-1,true),codeList.toArray(),"tricode");
  }
    baseDao.listInternationDataTable(dataTableEntity, null);
    return dataTableEntity;
  }
   /**
    * 文档目录保存
    *
    * @param fse
    * @return
    */
   @Transactional
   public boolean saveDocumentDireactory(FieldSetEntity fse) {
      BaseUtil.createCreatorAndCreationTime(fse);
      String tricode = null;
      String tricodeParent = BaseUtil.strIsNull(fse.getString(CmnConst.TRICODE_PARENT)) ? "" : fse.getString(CmnConst.TRICODE_PARENT);
      if (BaseUtil.strIsNull(fse.getUUID())) {
         tricode = CodeUtil.getNewCodeByTemp(CmnConst.PRODUCT_OA_DIRECTORY, CmnConst.TRICODE, tricodeParent);
      } else {
         FieldSetEntity fseOrigin = baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_DIRECTORY, fse.getUUID(), false);
         if (fseOrigin == null) {
            fse.remove(CoreConst.UUID);
         }
         String originParent = BaseUtil.strIsNull(fseOrigin.getString(CmnConst.TRICODE_PARENT)) ? "" : fseOrigin.getString(CmnConst.TRICODE_PARENT);
         if (!originParent.equals(tricodeParent)) {
            String originTricode = BaseUtil.strIsNull(fseOrigin.getString(CmnConst.TRICODE)) ? "" : fseOrigin.getString(CmnConst.TRICODE);
            tricode = CodeUtil.getNewCodeByTemp(CmnConst.PRODUCT_OA_DIRECTORY, CmnConst.TRICODE, tricodeParent);
            StringBuilder sql = new StringBuilder();
            sql.append("update product_oa_directory ");
            sql.append("set tricode=concat(replace(substring(tricode,1,locate(?,tricode)+length(?)),?,?),substring(tricode,locate(?,tricode)+length(?)+1)), ");
            sql.append("tricode_parent=concat(replace(substring(tricode_parent,1,locate(?,tricode_parent)+length(?)),?,?),substring(tricode_parent,locate(?,tricode_parent)+length(?)+1)) ");
            sql.append("where tricode like ? ");
            baseDao.executeUpdate(sql.toString(), new Object[]{originTricode, originTricode, originTricode, tricode, originTricode, originTricode,
                  originTricode, originTricode, originTricode, tricode, originTricode, originTricode, originTricode + "-%"});
         } else {
            tricode = fseOrigin.getString(CmnConst.TRICODE);
         }
      }
      fse.setValue(CmnConst.TRICODE, tricode);
      fse.setValue(CmnConst.DIRECTORY_TIER, tricode.split(",").length);
      return baseDao.saveFieldSetEntity(fse);
   }
  @Override
  public JSONArray treeListAll(FieldSetEntity fieldSetEntity) throws BaseException {
    //关联公司uuid
    String directory_type = fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE);
    //公司文件夹
    DataTableEntity data;
    SystemUser user = SpringMVCContextHolder.getCurrentUser();
    StringBuffer sql = new StringBuffer();
    sql.append("SELECT a.*,ifnull(b.number,0) number FROM product_oa_directory a LEFT JOIN ");
    sql.append("(SELECT COUNT(*) number,directory_uuid FROM product_oa_document GROUP BY directory_uuid)  b on a.uuid=b.directory_uuid ");
   @Override
   @Transactional
   public boolean delDocumentDirectory(FieldSetEntity fieldSetEntity) throws BaseException {
      String uuid = fieldSetEntity.getString(CmnConst.UUID);
      String directory_type = fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE);
      String filter = "";
      if ("2".equals(directory_type)) {
         filter = " AND " + "created_by = " + SpringMVCContextHolder.getCurrentUserId();
      }
      DataTableEntity dataTableEntity = baseDao.listTable(
            "SELECT * FROM PRODUCT_OA_directory WHERE directory_type = ? AND tricode_parent = (SELECT tricode FROM PRODUCT_OA_directory where uuid = ?)"
                  + filter,
            new String[]{directory_type, uuid});
      if (BaseUtil.dataTableIsEmpty(dataTableEntity)) {
         baseDao.delete(CmnConst.PRODUCT_OA_DOCUMENT, "directory_uuid = ?", new String[]{uuid});
         return baseDao.delete(CmnConst.PRODUCT_OA_DIRECTORY, new String[]{uuid});
      } else {
         throw new BaseException(DocumentCode.DOCUMENT_CATALOG_DELETE_FAIL.getValue(),
               DocumentCode.DOCUMENT_CATALOG_DELETE_FAIL.getText(), this.getClass(),
               "public boolean delDocumentDirectory(FieldSetEntity fieldSetEntity) throws BaseException");
      }
   }
    if("1".equals(directory_type)){
      String org_level_uuid = user.getOrg_level_uuid();
      sql.append("where directory_type = 1 AND org_level_uuid = ? ");
      data = baseDao.listTable(sql.toString(), new Object[]{org_level_uuid});
//      data = baseDao.listTable(CmnConst.product_oa_DIRECTORY, " directory_type = 1 AND org_level_uuid = ?", new String[]{org_level_uuid}, "tricode");
    //个人文件夹
    }else {
      Integer userId = user.getUser_id();
      sql.append("where directory_type = 2 AND created_by = ? ");
      data = baseDao.listTable(sql.toString(), new Object[]{userId});
   /**
    * 获取当前文件路径
    *
    * @param fieldSetEntity
    * @return
    * @throws BaseException
    */
   @Override
   public DataTableEntity getDirectoryStructure(FieldSetEntity fieldSetEntity) throws BaseException {
      String uuid = fieldSetEntity.getString(CmnConst.DIRECTORY_UUID);
      fieldSetEntity = baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_DIRECTORY, uuid, false);
      String triCode = fieldSetEntity.getString(CmnConst.TRICODE);
      String type = fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE);
      List<String> codeList = ListUtils.newArrayList();
      // 拆分为上级目录
      if (triCode.indexOf('-') != -1) {
         do {
            codeList.add(0, triCode);
            triCode = triCode.substring(0, triCode.lastIndexOf('-'));
         } while (triCode.indexOf('-') != -1);
         codeList.add(0, triCode);
      } else {
         codeList.add(triCode);
      }
      SystemUser user = SpringMVCContextHolder.getCurrentUser();
      DataTableEntity dataTableEntity;
      // 单位文件夹
      if ("1".equals(type)) {
         codeList.add(0, user.getOrg_level_uuid());
         dataTableEntity = baseDao.listTable(CmnConst.PRODUCT_OA_DIRECTORY,
               "directory_type = 1 AND org_level_uuid = ? AND "
                     + BaseUtil.buildQuestionMarkFilter(CmnConst.TRICODE, codeList.size() - 1, true),
               codeList.toArray(), "tricode");
         // 个人文件夹
      } else {
         codeList.add(0, String.valueOf(user.getUser_id()));
         dataTableEntity = baseDao.listTable(CmnConst.PRODUCT_OA_DIRECTORY,
               "directory_type = 2 AND created_by = ? AND "
                     + BaseUtil.buildQuestionMarkFilter(CmnConst.TRICODE, codeList.size() - 1, true),
               codeList.toArray(), "tricode");
      }
      baseDao.listInternationDataTable(dataTableEntity, null);
      return dataTableEntity;
   }
//      data = baseDao.listTable(CmnConst.product_oa_DIRECTORY, " directory_type = 2 AND created_by = ?", new Object[]{userId}, "tricode");
    }
    baseDao.listInternationDataTable(data, null);
    JSONArray menus = this.encapsulationTree(data);
    //获取当前公司
    JSONObject orgLevelInfo = new JSONObject();
    orgLevelInfo.put("directory_name", user.getOrg_level_name());
    orgLevelInfo.put("tricode", "");
    orgLevelInfo.put("org_level_uuid",  user.getOrg_level_uuid());
    orgLevelInfo.put("children",menus);
    JSONArray array = new JSONArray();
    array.add(orgLevelInfo);
    return array;
  }
  /**
   * 封装树方法
   * @param
   * @return
   * @throws BaseException
   */
  @Override
  public JSONArray encapsulationTree(DataTableEntity data) throws BaseException {
    JSONArray menus = new JSONArray();
    JSONObject parent_menu = new JSONObject();
    if (!BaseUtil.dataTableIsEmpty(data)) {
      for (int i = 0; i < data.getRows(); i++) {
        FieldSetEntity fs = data.getFieldSetEntity(i);
        JSONObject menu = BaseUtil.fieldSetEntityToJson(fs);
        String tricode = fs.getString(CmnConst.TRICODE_PARENT);
        if (StringUtils.isEmpty(tricode) || parent_menu.getString(tricode) == null) {
          menus.add(menu);
        } else {// 上级目录
          JSONObject pm = parent_menu.getJSONObject(tricode);
          JSONArray subs = pm.getJSONArray(CmnConst.CHILDREN);
          JSONArray submenus = null;
          if (subs == null) {
            submenus = new JSONArray();
            pm.put(CmnConst.CHILDREN, submenus);
          } else {
            submenus = subs;
          }
          submenus.add(menu);
        }
        parent_menu.put(menu.getString(CmnConst.TRICODE), menu);
      }
    }
    return menus;
  }
   @Override
   public JSONArray treeListAll(FieldSetEntity fieldSetEntity) throws BaseException {
      // 关联公司uuid
      String directory_type = fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE);
      // 公司文件夹
      DataTableEntity data;
      SystemUser user = SpringMVCContextHolder.getCurrentUser();
      StringBuffer sql = new StringBuffer();
      sql.append("SELECT a.*,ifnull(b.number,0) number FROM PRODUCT_OA_directory a LEFT JOIN ");
      sql.append(
            "(SELECT COUNT(*) number,directory_uuid FROM PRODUCT_OA_document GROUP BY directory_uuid)  b on a.uuid=b.directory_uuid ");
  @Override
  public FieldSetEntity documentDirectoryInfo(FieldSetEntity fieldSetEntity) throws BaseException {
    String uuid = fieldSetEntity.getString(CmnConst.UUID);
    return baseDao.getFieldSetEntity(CmnConst.product_oa_DIRECTORY, uuid, true);
  }
      if ("1".equals(directory_type)) {
         String org_level_uuid = user.getOrg_level_uuid();
         sql.append("where directory_type = 1 AND org_level_uuid = ? ");
         data = baseDao.listTable(sql.toString(), new Object[]{org_level_uuid});
//      data = baseDao.listTable(CmnConst.PRODUCT_OA_DIRECTORY, " directory_type = 1 AND org_level_uuid = ?", new String[]{org_level_uuid}, "tricode");
         // 个人文件夹
      } else {
         Integer userId = user.getUser_id();
         sql.append("where directory_type = 2 AND created_by = ? ");
         data = baseDao.listTable(sql.toString(), new Object[]{userId});
  /**
   * 移动到目录列表(根据当前用户过滤展示目录列表)
   * 获取用户有新增(上传)权限的列表
   * @param
   * @return
   * @throws BaseException
   */
  @Override
  public DataTableEntity moveToList(FieldSetEntity fse) throws BaseException {
    String type = fse.getString(CmnConst.DIRECTORY_TYPE);
    StringBuffer sql = new StringBuffer();
    Integer userId = SpringMVCContextHolder.getCurrentUser().getUser_id();
    StringBuffer param = new StringBuffer();
    //1为单位文件夹
    if("1".equals(type)) {
      param.append("%").append(userId).append("%");
      sql.append("SELECT a.* FROM "+CmnConst.product_oa_DIRECTORY+" a LEFT JOIN ")
              .append(" product_oa_directory_rights b ON a.uuid = b.directory_uuid ")
              .append(" LEFT JOIN product_sys_organizational_structure_storage c on b.storage_uuid = c.uuid ")
              .append(" WHERE a.directory_type = 1 AND b.rigths like '%3%' AND c.staff_ids like ? GROUP BY a.tricode ");
    }else {
      param.append(userId);
      sql.append("SELECT * FROM product_oa_directory ")
              .append(" WHERE directory_type = 2 AND created_by = ? ");
    }
    DataTableEntity dataTableEntity = baseDao.listTable(sql.toString(), new String[]{param.toString()});
    baseDao.listInternationDataTable(dataTableEntity, null);
    return dataTableEntity;
  }
//      data = baseDao.listTable(CmnConst.PRODUCT_OA_DIRECTORY, " directory_type = 2 AND created_by = ?", new Object[]{userId}, "tricode");
      }
      baseDao.listInternationDataTable(data, null);
      JSONArray menus = this.encapsulationTree(data);
      // 获取当前公司
      JSONObject orgLevelInfo = new JSONObject();
      orgLevelInfo.put("directory_name", user.getOrg_level_name());
      orgLevelInfo.put("tricode", "");
      orgLevelInfo.put("org_level_uuid", user.getOrg_level_uuid());
      orgLevelInfo.put("children", menus);
      JSONArray array = new JSONArray();
      if (!"1".equals(directory_type)) {
//      查询数量
         sql.setLength(0);
         sql.append(" SELECT\n");
         sql.append("      ( SELECT count(*) FROM product_oa_document_collection WHERE document_collector = ? ) collection_count,\n");
         sql.append("      ( SELECT count( sub_uuid ) FROM product_oa_document_borrow_sub WHERE borrow_uuid IN ( SELECT uuid FROM product_oa_document_borrow WHERE borrower = ? and flow_flag= 2 )  ) borrow_count\n");
         sql.append("      FROM\n");
         sql.append("DUAL\n");
         FieldSetEntity fieldSetBySQL = baseDao.getFieldSetBySQL(sql.toString(), new Object[]{user.getUser_id(), user.getUser_id()}, false);
         int collectionCount = 0;
         int borrowCount = 0;
         if (fieldSetBySQL != null) {
            collectionCount = BaseUtil.ifNull(fieldSetBySQL.getInteger("collection_count"), 0);
            borrowCount = BaseUtil.ifNull(fieldSetBySQL.getInteger("borrow_count"), 0);
         }
         //添加收藏夹和借阅文件夹
         JSONObject favorite = new JSONObject();
         favorite.put("directory_name", "收藏夹");
         favorite.put("uuid", "!favorite");
         favorite.put("number", collectionCount);
         menus.add(0, favorite);
         JSONObject borrow = new JSONObject();
         borrow.put("directory_name", "借阅文件");
         borrow.put("uuid", "!borrow");
         borrow.put("number", borrowCount);
         menus.add(1, borrow);
      }
      array.add(orgLevelInfo);
      return array;
   }
  @Override
  @Transactional
  public boolean upDocumentDirectoryName(FieldSetEntity fse) throws BaseException {
    String uuid = fse.getString(CmnConst.UUID);
    String directoryName = fse.getString(CmnConst.DIRECTORY_NAME);
    FieldSetEntity docField = baseDao.getFieldSetEntity(CmnConst.product_oa_DIRECTORY, uuid, false);
    docField.setValue(CmnConst.DIRECTORY_NAME, directoryName);
    return baseDao.update(docField);
  }
   /**
    * 封装树方法
    *
    * @param
    * @return
    * @throws BaseException
    */
   @Override
   public JSONArray encapsulationTree(DataTableEntity data) throws BaseException {
      JSONArray menus = new JSONArray();
      JSONObject parent_menu = new JSONObject();
      if (!BaseUtil.dataTableIsEmpty(data)) {
         for (int i = 0; i < data.getRows(); i++) {
            FieldSetEntity fs = data.getFieldSetEntity(i);
            JSONObject menu = BaseUtil.fieldSetEntityToJson(fs);
            String tricode = fs.getString(CmnConst.TRICODE_PARENT);
            if (StringUtils.isEmpty(tricode) || parent_menu.getString(tricode) == null) {
               menus.add(menu);
            } else {// 上级目录
               JSONObject pm = parent_menu.getJSONObject(tricode);
               JSONArray subs = pm.getJSONArray(CmnConst.CHILDREN);
               JSONArray submenus = null;
               if (subs == null) {
                  submenus = new JSONArray();
                  pm.put(CmnConst.CHILDREN, submenus);
               } else {
                  submenus = subs;
               }
               submenus.add(menu);
            }
            parent_menu.put(menu.getString(CmnConst.TRICODE), menu);
         }
      }
      return menus;
   }
   @Override
   public FieldSetEntity documentDirectoryInfo(FieldSetEntity fieldSetEntity) throws BaseException {
      String uuid = fieldSetEntity.getString(CmnConst.UUID);
      return baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_DIRECTORY, uuid, true);
   }
   /**
    * 移动到目录列表(根据当前用户过滤展示目录列表) 获取用户有新增(上传)权限的列表
    *
    * @param
    * @return
    * @throws BaseException
    */
   @Override
   public DataTableEntity moveToList(FieldSetEntity fse) throws BaseException {
      String type = fse.getString(CmnConst.DIRECTORY_TYPE);
      StringBuffer sql = new StringBuffer();
      Integer userId = SpringMVCContextHolder.getCurrentUser().getUser_id();
      StringBuffer param = new StringBuffer();
      // 1为单位文件夹
      if ("1".equals(type)) {
         param.append("%").append(userId).append("%");
         sql.append("SELECT a.* FROM " + CmnConst.PRODUCT_OA_DIRECTORY + " a LEFT JOIN ")
               .append(" PRODUCT_OA_directory_rights b ON a.uuid = b.directory_uuid ")
               .append(" LEFT JOIN product_sys_organizational_structure_storage c on b.storage_uuid = c.uuid ")
               .append(" WHERE a.directory_type = 1 AND b.rigths like '%3%' AND c.staff_ids like ? GROUP BY a.tricode ");
      } else {
         param.append(userId);
         sql.append("SELECT * FROM PRODUCT_OA_directory ").append(" WHERE directory_type = 2 AND created_by = ? ");
      }
      DataTableEntity dataTableEntity = baseDao.listTable(sql.toString(), new String[]{param.toString()});
      baseDao.listInternationDataTable(dataTableEntity, null);
      return dataTableEntity;
   }
   @Override
   @Transactional
   public boolean upDocumentDirectoryName(FieldSetEntity fse) throws BaseException {
      String uuid = fse.getString(CmnConst.UUID);
      String directoryName = fse.getString(CmnConst.DIRECTORY_NAME);
      FieldSetEntity docField = baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_DIRECTORY, uuid, false);
      docField.setValue(CmnConst.DIRECTORY_NAME, directoryName);
      return baseDao.update(docField);
   }
}