| | |
| | | import com.product.common.collect.ListUtils; |
| | | import com.product.common.collect.MapUtils; |
| | | import com.product.common.lang.DateUtils; |
| | | import com.product.common.lang.StringUtils; |
| | | import com.product.core.dao.BaseDao; |
| | | import com.product.core.entity.DataTableEntity; |
| | | import com.product.core.entity.FieldMetaEntity; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * Copyright lx |
| | |
| | | if (!BaseUtil.strIsNull(queryFilter)) { |
| | | queryFilter = " AND " + queryFilter; |
| | | } |
| | | // file_name created_by created_utc_datetime |
| | | |
| | | StringBuffer sql = new StringBuffer(); |
| | | |
| | | sql.append("SELECT \n"); |
| | | sql.append(" A.*,B.show_name name, \n"); |
| | | sql.append(" CONCAT(CONVERT(a.file_size / 1024, decimal(10,2)), 'KB') file_size_kb, \n"); |
| | | sql.append(" CASE WHEN D.document_uuid IS NOT NULL THEN '1' ELSE '0' END AS is_collection \n"); |
| | | sql.append(" CASE WHEN D.document_uuid IS NOT NULL THEN '1' ELSE '0' END AS is_collection, \n"); |
| | | sql.append(" (SELECT case when COUNT(*)=0 then 1 else COUNT(*) end FROM product_oa_document_history where product_oa_document_history.document_uuid=A.uuid) -1 history_count "); |
| | | sql.append("FROM( \n"); |
| | | if ("!borrow".equals(directory_uuid)) { |
| | | //借阅文件夹查询文件特殊处理 |
| | | sql.append("SELECT\n"); |
| | | sql.append("doc.*\n"); |
| | | sql.append(" FROM\n"); |
| | | sql.append("product_oa_directory dir\n"); |
| | | sql.append("JOIN product_oa_document doc ON dir.uuid = doc.uuid\n"); |
| | | sql.append("WHERE\n"); |
| | | sql.append("dir.directory_type = 1\n"); |
| | | sql.append("AND doc.attachments_uuid IN (\n"); |
| | | sql.append(" SELECT\n"); |
| | | sql.append(" sub_uuid\n"); |
| | | sql.append(" FROM\n"); |
| | | sql.append(" product_oa_document_borrow_sub\n"); |
| | | sql.append(" WHERE\n"); |
| | | sql.append(" borrow_uuid IN ( SELECT uuid FROM product_oa_document_borrow WHERE borrower = ? AND flow_flag=2))\n"); |
| | | directory_uuid = SpringMVCContextHolder.getCurrentUserId(); |
| | | } else if ("!favorite".equals(directory_uuid)) { |
| | | sql.append("SELECT\n"); |
| | | sql.append("doc.*\n"); |
| | | sql.append(" FROM\n"); |
| | | sql.append("product_oa_document_collection collect\n"); |
| | | sql.append("JOIN product_oa_document doc ON collect.document_uuid = doc.uuid\n"); |
| | | sql.append("where document_collector=?\n"); |
| | | directory_uuid = SpringMVCContextHolder.getCurrentUserId(); |
| | | } else { |
| | | |
| | | sql.append(" SELECT * FROM product_oa_document \n"); |
| | | sql.append(" WHERE directory_uuid = ? \n"); |
| | | } |
| | | sql.append(queryFilter); |
| | | sql.append(")A \n"); |
| | | sql.append("LEFT JOIN product_sys_staffs B ON B.user_id = A.created_by \n"); |
| | |
| | | DataTableEntity dataTable = null; |
| | | FieldSetEntity fse = new FieldSetEntity(); |
| | | fse.setTableName(CmnConst.PRODUCT_OA_DOCUMENT); |
| | | if ("1".equals(fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE))) { |
| | | if (StringUtils.equalsAny(fieldSetEntity.getString(CmnConst.DIRECTORY_UUID), "!borrow", "!favorite")) { |
| | | // 收藏夹和借阅文件夹特殊处理 |
| | | |
| | | dataTable = this.documentAll(fieldSetEntity); |
| | | butt = "1,2"; |
| | | } else if ("1".equals(fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE))) { |
| | | //获取的user_id |
| | | Integer user_id = SpringMVCContextHolder.getCurrentUser().getUser_id(); |
| | | String key = "%," + user_id + ",%"; |
| | |
| | | Map<String, DataTableEntity> dataMap = MapUtils.newHashMap(); |
| | | fse.setValue("button", butt); |
| | | //加载文件路径 |
| | | DataTableEntity file_list = documentDirectoryService.getDirectoryStructure(fieldSetEntity); |
| | | DataTableEntity file_list; |
| | | if (StringUtils.equalsAny(fieldSetEntity.getString(CmnConst.DIRECTORY_UUID), "!borrow", "!favorite")) { |
| | | file_list = new DataTableEntity(); |
| | | FieldSetEntity ff = new FieldSetEntity("product_oa_directory"); |
| | | ff.setValue("uuid", fieldSetEntity.getString(CmnConst.DIRECTORY_UUID)); |
| | | ff.setValue("directory_name", "!borrow".equals(fieldSetEntity.getString(CmnConst.DIRECTORY_UUID)) ? "借阅文件夹" : "收藏夹"); |
| | | file_list.addFieldSetEntity(ff); |
| | | } else { |
| | | file_list = documentDirectoryService.getDirectoryStructure(fieldSetEntity); |
| | | } |
| | | dataMap.put("file_list", file_list); |
| | | if (BaseUtil.dataTableIsEmpty(dataTable) || dataTable.getSqle() == null) { |
| | | fse.setValue(CmnConst.PAGESIZE, 0); |
| | |
| | | |
| | | /** |
| | | * 文档收藏 |
| | | * |
| | | * @param fse |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 文档取消收藏 |
| | | * |
| | | * @param documentUUID |
| | | * @return |
| | | */ |
| | |
| | | FieldSetEntity product_oa_document_borrow = baseDao.getFieldSetEntity("product_oa_document_borrow", uuid, false); |
| | | return product_oa_document_borrow; |
| | | } |
| | | |
| | | public Map<String, String> isPermission(String documentUuid) { |
| | | // 验证文档权限 |
| | | if (StringUtils.isEmpty(documentUuid)) { |
| | | throw new BaseException(DocumentCode.DOCUMENT_FORM_NODATA); |
| | | } |
| | | |
| | | String[] docuemnts = documentUuid.split(","); |
| | | //查询借阅记录 |
| | | DataTableEntity dt = baseDao.listTable(" SELECT 1 isPermission,sub_uuid document_uuid from product_oa_document_borrow_sub where borrow_uuid in" + |
| | | " (select uuid from product_oa_document_borrow where start_time>=now() and end_time<=now() and borrower=? and flow_flag=2) and " + BaseUtil.buildQuestionMarkFilter("sub_uuid", docuemnts, true), |
| | | new Object[]{SpringMVCContextHolder.getCurrentUserId()}); |
| | | |
| | | Map<String, String> permission = new HashMap<>(); |
| | | if (!DataTableEntity.isEmpty(dt)) { |
| | | for (int i = 0; i < dt.getRows(); i++) { |
| | | String docUuid = dt.getString(i, "document_uuid"); |
| | | if (dt.getBoolean(i, "isPermission")) { |
| | | permission.put(docUuid, "1"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | StringBuilder sql = new StringBuilder(); |
| | | sql.append("SELECT\n"); |
| | | sql.append("document.uuid document_uuid,\n"); |
| | | sql.append("rights.*\n"); |
| | | sql.append(" FROM\n"); |
| | | sql.append("product_oa_document document\n"); |
| | | sql.append("JOIN product_oa_directory dir ON dir.uuid = document.directory_uuid\n"); |
| | | sql.append("JOIN product_oa_directory_rights rights ON dir.uuid = rights.directory_uuid\n"); |
| | | sql.append("WHERE\n"); |
| | | sql.append("dir.directory_type = 1\n"); |
| | | sql.append("AND rights.rigths LIKE '%1%'\n"); |
| | | sql.append(" and ").append(BaseUtil.buildQuestionMarkFilter("document.uuid", docuemnts.length, true)); |
| | | dt = baseDao.listTable(sql.toString(), docuemnts); |
| | | if (!DataTableEntity.isEmpty(dt)) { |
| | | for (int i = 0; i < dt.getRows(); i++) { |
| | | String docUuid = dt.getString(i, "document_uuid"); |
| | | String storage_uuid = dt.getString(i, "storage_uuid"); |
| | | if (verifyOrgExist(storage_uuid)) { |
| | | String rights = permission.get(docUuid); |
| | | if (StringUtils.isEmpty(rights)) { |
| | | rights = "1"; |
| | | } |
| | | if (rights.indexOf("2") == -1 && StringUtils.indexOf(dt.getString(i, "rigths"), "2") != -1) { |
| | | rights += ",2"; |
| | | } |
| | | permission.put(docUuid, rights); |
| | | } |
| | | } |
| | | } |
| | | return permission; |
| | | } |
| | | } |