许鹏程
2024-08-29 a442684c5dab265ecd8f5d9de3276ed8e88eda7c
功能迭代
已修改5个文件
170 ■■■■■ 文件已修改
src/main/java/com/product/file/config/DocumentCode.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/file/controller/DocumentController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/file/controller/DocumentDirectoryController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/file/service/DocumentDirectoryService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/file/service/DocumentService.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/file/config/DocumentCode.java
@@ -35,6 +35,14 @@
    DOCUMENT_OPERATE_FAIL("文档操作失败", ModuleEnum.FILE.getValue() + "013"),
    DOCUMENT_SAVE_NEW_VERION_FAIL("文档最新版本保存失败", ModuleEnum.FILE.getValue() + "014"),
    DOCUMENT_DATA_NO_EXIST("文档数据不存在", ModuleEnum.FILE.getValue() + "015"),
    GET_DOCUMENT_PERMISSIONS_FAIL("获取文档权限失败", ModuleEnum.FILE.getValue() + "016"),
//    该文件未进行授权,如需查看请借阅
    DOCUMENT_NO_AUTHORIZATION("该文件未进行授权,如需查看请借阅", ModuleEnum.FILE.getValue() + "017"),
    ;
    
    private String text;
src/main/java/com/product/file/controller/DocumentController.java
@@ -4,7 +4,6 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.product.core.config.CoreConst;
import com.product.core.controller.support.AbstractBaseController;
import com.product.core.entity.DataTableEntity;
import com.product.core.entity.FieldSetEntity;
import com.product.core.entity.RequestParameterEntity;
@@ -17,12 +16,15 @@
import com.product.file.util.ResultInfo;
import com.product.module.sys.version.ApiVersion;
import com.product.util.BaseUtil;
import com.product.util.support.AbstractBaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.swing.text.Document;
import java.util.*;
@@ -42,6 +44,20 @@
    @Autowired
    public DocumentService documentService;
    @PostMapping("/permission/{version}")
    @ApiVersion(1)
    public String permission(HttpServletRequest request) {
        try {
            FieldSetEntity fieldSetEntity = BaseUtil.getFieldSetEntity(request);
            String documentUuid = fieldSetEntity.getString("document_uuid");
            return BaseUtil.success(documentService.isPermission(documentUuid));
        } catch (BaseException e) {
            return this.error(e);
        } catch (Exception e) {
            return this.error(DocumentCode.GET_DOCUMENT_PERMISSIONS_FAIL, e);
        }
    }
    /**
     * 新增文件数据(上传)3
     *
src/main/java/com/product/file/controller/DocumentDirectoryController.java
@@ -88,6 +88,7 @@
            return error(DocumentCode.DOCUMENT_CATALOG_SAVE_FAIL.getValue(),
                    DocumentCode.DOCUMENT_CATALOG_SAVE_FAIL.getText());
        } catch (BaseException e) {
            e.printStackTrace();
            SpringMVCContextHolder.getSystemLogger().error(e);
            return this.error(e);
        } catch (Exception e) {
src/main/java/com/product/file/service/DocumentDirectoryService.java
@@ -43,6 +43,7 @@
    
    /**
     *     单位文件夹树
     *
     * @return
     */
    public DataTableEntity allDirectoryTree() {
@@ -55,6 +56,7 @@
    /**
     *     文档目录保存
     *
     * @param fse
     * @return
     */
@@ -193,6 +195,33 @@
        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 = ? ) GROUP BY sub_uuid ) 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;
    }
src/main/java/com/product/file/service/DocumentService.java
@@ -6,6 +6,7 @@
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;
@@ -23,10 +24,7 @@
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
@@ -140,14 +138,46 @@
        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");
@@ -295,7 +325,12 @@
        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 + ",%";
@@ -332,7 +367,16 @@
        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);
@@ -484,6 +528,7 @@
    /**
     *     文档收藏
     *
     * @param fse
     * @return
     */
@@ -495,6 +540,7 @@
    /**
     *     文档取消收藏
     *
     * @param documentUUID
     * @return
     */
@@ -709,4 +755,58 @@
        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;
    }
}