| | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * Copyright lx |
| | |
| | | StringBuffer sql = new StringBuffer(); |
| | | |
| | | sql.append("SELECT \n"); |
| | | sql.append(" A.*,B.show_name name, \n"); |
| | | sql.append(" E.route_name,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(" (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"); |
| | | sql.append(" ,if(A.turn_button is null,'否','是') turn"); |
| | | 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"); |
| | | sql.append(" SELECT\n"); |
| | | sql.append(" doc.*\n"); |
| | | sql.append(" FROM product_oa_document doc \n"); |
| | | sql.append(" JOIN product_oa_directory dir ON dir.uuid = doc.directory_uuid \n"); |
| | | sql.append(" WHERE dir.directory_type = 1\n"); |
| | | sql.append(" AND doc.attachments_uuid IN (\n"); |
| | | sql.append(" SELECT sub_uuid\n"); |
| | | sql.append(" FROM product_oa_document_borrow_sub\n"); |
| | | sql.append(" WHERE borrow_uuid IN ( SELECT uuid FROM product_oa_document_borrow WHERE borrower = ? AND flow_flag=2)\n"); |
| | | sql.append(" )\n"); |
| | | directory_uuid = SpringMVCContextHolder.getCurrentUserId(); |
| | | } else if ("!favorite".equals(directory_uuid)) { |
| | | sql.append("SELECT\n"); |
| | |
| | | sql.append(")A \n"); |
| | | sql.append("LEFT JOIN product_sys_staffs B ON B.user_id = A.created_by \n"); |
| | | sql.append("LEFT JOIN product_sys_attachments C ON C.uuid = B.staff_avatar \n"); |
| | | sql.append("LEFT JOIN product_oa_document_collection D ON D.document_uuid = A.uuid AND D.created_by = ?"); |
| | | sql.append("LEFT JOIN product_oa_document_collection D ON D.document_uuid = A.uuid AND D.created_by = ? \n"); |
| | | sql.append("LEFT JOIN product_sys_function_buttons E ON E.uuid = A.turn_button "); |
| | | |
| | | DataTableEntity documentData = baseDao.listTable(sql.toString(), new String[]{directory_uuid, SpringMVCContextHolder.getCurrentUserId()}, |
| | | fieldSetEntity.getInteger(CmnConst.PAGESIZE), fieldSetEntity.getInteger(CmnConst.CPAGE)); |
| | | baseDao.listInternationDataTable(documentData, null); |
| | |
| | | |
| | | @Override |
| | | public FieldSetEntity getButtonPermissions(FieldSetEntity fieldSetEntity) throws BaseException { |
| | | String butt = ""; |
| | | String finalButtonPermissions = ""; |
| | | DataTableEntity dataTable = null; |
| | | FieldSetEntity fse = new FieldSetEntity(); |
| | | fse.setTableName(CmnConst.PRODUCT_OA_DOCUMENT); |
| | | if (StringUtils.equalsAny(fieldSetEntity.getString(CmnConst.DIRECTORY_UUID), "!borrow", "!favorite")) { |
| | | // 收藏夹和借阅文件夹特殊处理 |
| | | |
| | | dataTable = this.documentAll(fieldSetEntity); |
| | | butt = "1,2"; |
| | | finalButtonPermissions = "1,2"; |
| | | } else if ("1".equals(fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE))) { |
| | | //获取的user_id |
| | | Integer user_id = SpringMVCContextHolder.getCurrentUser().getUser_id(); |
| | | String key = "%," + user_id + ",%"; |
| | | //获取当前点击文件夹UUID |
| | | String directory_uuid = fieldSetEntity.getString(CmnConst.DIRECTORY_UUID); |
| | | //String key = "%,140,%"; |
| | | DataTableEntity dataTableEntity = new DataTableEntity(); |
| | | FieldSetEntity org = baseDao.getFieldSetByFilter(CmnConst.PRODUCT_OA_DIRECTORY_RIGHTS, "directory_uuid=?", new String[]{directory_uuid}, false); |
| | | if (verifyOrgExist(org.getString("storage_uuid"))) { |
| | | StringBuffer sql = new StringBuffer(); |
| | | sql.append(" SELECT substring_index(substring_index(a.rigths,',',b.help_topic_id+1),',',-1) fun FROM PRODUCT_OA_directory_rights a ") |
| | | .append(" INNER join mysql.help_topic b on b.help_topic_id < (length(a.rigths) - length(replace(a.rigths,',',''))+1) ") |
| | | .append(" WHERE a.directory_uuid = ? "); |
| | | dataTableEntity = baseDao.listTable(sql.toString(), new String[]{directory_uuid}); |
| | | } |
| | | StringBuffer button = new StringBuffer(); |
| | | if (!BaseUtil.dataTableIsEmpty(dataTableEntity)) { |
| | | for (int i = 0, length = dataTableEntity.getRows(); i < length; i++) { |
| | | FieldSetEntity field = dataTableEntity.getFieldSetEntity(i); |
| | | String fun = field.getString("fun"); |
| | | //权限1(查看),2(下载),3(新增上传),4(修改,重命名),5(删除),6(移动) |
| | | button.append(fun).append(","); |
| | | if ("1".equals(fun)) { |
| | | //有查看权限就加载列表 |
| | | dataTable = this.documentAll(fieldSetEntity); |
| | | // 获取点击文件夹的操作权限(如果当前文件夹没有配置权限,则递归上级目录权限) |
| | | DataTableEntity dtOperationPermissions = recursionRole(directory_uuid); |
| | | if (!BaseUtil.dataTableIsEmpty(dtOperationPermissions)) { |
| | | String buttonPermissions = ","; |
| | | for (int i = 0; i < dtOperationPermissions.getRows(); i++) { |
| | | // 获取单条操作权限数据 |
| | | FieldSetEntity fseOperationPermissions = dtOperationPermissions.getFieldSetEntity(i); |
| | | // 验证操作权限是否与当前操作人匹配成功 |
| | | if (verifyOrgExist(fseOperationPermissions.getString("storage_uuid"))) { |
| | | // 按钮权限拼接 |
| | | buttonPermissions += fseOperationPermissions.getString("rigths") + ","; |
| | | } |
| | | } |
| | | } |
| | | if (!BaseUtil.strIsNull(button.toString())) { |
| | | butt = button.substring(0, button.length() - 1); |
| | | if (!BaseUtil.strIsNull(buttonPermissions)) { |
| | | // 判断是否包含查看权限,包含查看权限则获取文件列表 |
| | | // if (buttonPermissions.contains(",1,")) { |
| | | dataTable = this.documentAll(fieldSetEntity); |
| | | // } |
| | | finalButtonPermissions = Arrays.stream(buttonPermissions.split(",")) |
| | | .filter(s -> !s.isEmpty()) |
| | | .distinct() |
| | | .collect(Collectors.joining(",")); |
| | | } |
| | | } |
| | | } else { |
| | | dataTable = this.documentAll(fieldSetEntity); |
| | | } |
| | | Map<String, DataTableEntity> dataMap = MapUtils.newHashMap(); |
| | | fse.setValue("button", butt); |
| | | fse.setValue("button", finalButtonPermissions); |
| | | //加载文件路径 |
| | | DataTableEntity file_list; |
| | | if (StringUtils.equalsAny(fieldSetEntity.getString(CmnConst.DIRECTORY_UUID), "!borrow", "!favorite")) { |
| | |
| | | fse.setSubData(dataMap); |
| | | |
| | | return fse; |
| | | } |
| | | |
| | | /** |
| | | * 递归获取权限如果当前文档未配置权限就去递归查询父级权限 |
| | | * @param directory_uuid |
| | | * @return |
| | | */ |
| | | private DataTableEntity recursionRole(String directory_uuid){ |
| | | DataTableEntity dtOperationPermissions = baseDao.listTable(CmnConst.PRODUCT_OA_DIRECTORY_RIGHTS, "directory_uuid = ?", new Object[] {directory_uuid}); |
| | | if (BaseUtil.dataTableIsEmpty(dtOperationPermissions)) { |
| | | FieldSetEntity fseDirectory = baseDao.getFieldSet(CmnConst.PRODUCT_OA_DIRECTORY, directory_uuid,false); |
| | | FieldSetEntity fseDirectoryParent = baseDao.getFieldSetByFilter(CmnConst.PRODUCT_OA_DIRECTORY, "tricode=?",new String[]{fseDirectory.getString("tricode_parent")},false); |
| | | dtOperationPermissions = recursionRole(fseDirectoryParent.getUUID()); |
| | | } |
| | | return dtOperationPermissions; |
| | | } |
| | | |
| | | @Override |
| | |
| | | @Override |
| | | public DataTableEntity getApplyDocument(FieldSetEntity fse) throws BaseException { |
| | | |
| | | DataTableEntity product_oa_document = new DataTableEntity(); |
| | | StringBuilder sb = new StringBuilder(); |
| | | sb.append(" select d.*,f.show_name "); |
| | | sb.append(" from product_oa_document d "); |
| | | sb.append(" left join product_sys_staffs f "); |
| | | sb.append(" on d.created_by=f.user_id "); |
| | | List<String> param = new ArrayList<>(); |
| | | if (!ObjectUtil.isNotEmpty(fse.getString("document_name"))) { |
| | | product_oa_document = baseDao.listTable(sb.toString(), param.toArray()); |
| | | String sub_uuid = fse.getString("sub_uuid"); |
| | | String sub_uuid_replace = sub_uuid.replace("\"", ""); |
| | | String[] sub_uuid_split = sub_uuid_replace.split(","); |
| | | String sub_uuids=""; |
| | | for (int i = 0; i < sub_uuid_split.length; i++) { |
| | | |
| | | } else { |
| | | String document_name = fse.getString("document_name"); |
| | | sb.append(" where d.file_name like '%" + document_name + "%'"); |
| | | product_oa_document = baseDao.listTable(sb.toString(), param.toArray()); |
| | | |
| | | |
| | | if(i==sub_uuid_split.length-1){ |
| | | sub_uuids=sub_uuids+"\""+sub_uuid_split[i]+"\""; |
| | | }else { |
| | | sub_uuids=sub_uuids+"\""+sub_uuid_split[i]+"\","; |
| | | } |
| | | } |
| | | return product_oa_document; |
| | | List<String> param = new ArrayList<>(); |
| | | StringBuilder sb=new StringBuilder(); |
| | | sb.append(" SELECT a.*,f.show_name"); |
| | | sb.append(" FROM product_sys_attachments a "); |
| | | sb.append(" LEFT JOIN product_sys_staffs f "); |
| | | sb.append(" on a.created_by =f.user_id "); |
| | | sb.append(" where a.uuid in ("+sub_uuids+")"); |
| | | DataTableEntity product_sys_attachments = baseDao.listTable(sb.toString(),param.toArray()); |
| | | return product_sys_attachments; |
| | | } |
| | | |
| | | @Override |
| | |
| | | StringBuilder sb = new StringBuilder(); |
| | | List<String> param = new ArrayList<>(); |
| | | sb.append(" SELECT b.* FROM ("); |
| | | sb.append(" SELECT t.uuid,t.file_name,t.file_size,s.show_name,t.created_utc_datetime,count(t.uuid) as applyCount"); |
| | | sb.append(" SELECT t.uuid,t.file_name,t.attachment_size as file_size,s.show_name,t.created_utc_datetime,count(t.uuid) as applyCount"); |
| | | sb.append(" FROM product_oa_document_borrow_sub b"); |
| | | sb.append(" JOIN product_oa_document t"); |
| | | sb.append(" JOIN product_sys_attachments t"); |
| | | sb.append(" on b.sub_uuid=t.uuid"); |
| | | sb.append(" JOIN product_sys_staffs s "); |
| | | sb.append(" on t.created_by=s.user_id"); |
| | | sb.append(" group by t.file_name,t.uuid,s.show_name,t.created_utc_datetime,t.file_size"); |
| | | sb.append(" )b order by b.applyCount asc"); |
| | | sb.append(" group by t.file_name,t.uuid,s.show_name,t.created_utc_datetime,t.attachment_size"); |
| | | sb.append(" )b order by b.applyCount DESC"); |
| | | DataTableEntity dataTableEntity = baseDao.listTable(sb.toString(), param.toArray()); |
| | | return dataTableEntity; |
| | | } |
| | |
| | | sb.append(" FROM product_oa_document_borrow w "); |
| | | sb.append(" left JOIN product_oa_document_borrow_sub b"); |
| | | sb.append(" on b.borrow_uuid=w.uuid"); |
| | | sb.append(" left JOIN product_oa_document t"); |
| | | sb.append(" left JOIN product_sys_attachments t"); |
| | | sb.append(" on b.sub_uuid=t.uuid"); |
| | | sb.append(" left JOIN product_sys_staffs s"); |
| | | sb.append(" on w.borrower=s.user_id"); |
| | | sb.append(" GROUP BY w.borrower,s.show_name"); |
| | | sb.append(" )a )b"); |
| | | sb.append(" on a.borrower=b.borrower "); |
| | | sb.append(" order by a.applayCount,b.applayFileCount asc"); |
| | | sb.append(" order by a.applayCount,b.applayFileCount DESC"); |
| | | DataTableEntity dataTableEntity = baseDao.listTable(sb.toString(), param.toArray()); |
| | | return dataTableEntity; |
| | | } |