From 8e8b26ea3b7306fca701fac934e26300b9043fd1 Mon Sep 17 00:00:00 2001
From: 18756 <1875631620@qq.com>
Date: 星期五, 23 八月 2024 16:01:45 +0800
Subject: [PATCH] 文档列表优化8.23

---
 src/main/java/com/product/file/service/DocumentService.java |  186 ++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 152 insertions(+), 34 deletions(-)

diff --git a/src/main/java/com/product/file/service/DocumentService.java b/src/main/java/com/product/file/service/DocumentService.java
index b4032a7..3d72614 100644
--- a/src/main/java/com/product/file/service/DocumentService.java
+++ b/src/main/java/com/product/file/service/DocumentService.java
@@ -1,5 +1,7 @@
 package com.product.file.service;
 
+import cn.hutool.core.lang.UUID;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.product.common.collect.ListUtils;
 import com.product.common.collect.MapUtils;
@@ -17,11 +19,12 @@
 import com.product.file.config.CmnConst;
 import com.product.file.service.ide.IDocumentService;
 import com.product.module.sys.entity.SystemUser;
-import com.product.org.admin.service.OrganizationServiceV2;
 import com.product.util.BaseUtil;
 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;
 
@@ -48,8 +51,6 @@
 
     @Autowired
     DocumentDirectoryService documentDirectoryService;
-    @Autowired
-    OrganizationServiceV2 organizationServiceV2;
 
     @Override
     @Transactional
@@ -64,7 +65,7 @@
         List<String> fileNameList = ListUtils.newArrayList();
         for (int i = 0, length = attachments.getRows(); i < length; i++) {
             FieldSetEntity fieldSet = new FieldSetEntity();
-            fieldSet.setTableName(CmnConst.product_oa_DOCUMENT);
+            fieldSet.setTableName(CmnConst.PRODUCT_OA_DOCUMENT);
             FieldSetEntity fse = attachments.getFieldSetEntity(i);
             //鏂囦欢鐩綍uuid
             fieldSet.setValue(CmnConst.DIRECTORY_UUID, directory_uuid);
@@ -95,7 +96,7 @@
         String file_name = fieldSetEntity.getString(CmnConst.FILE_NAME);
         fieldSetEntity.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());// 淇敼浜�
         fieldSetEntity.setValue(CmnConst.UPDATED_UTC_DATETIME, DateUtils.getDateTime());// 淇敼鏃堕棿
-        FieldSetEntity fie = baseDao.getFieldSetEntity(CmnConst.product_oa_DOCUMENT, uuid, false);
+        FieldSetEntity fie = baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_DOCUMENT, uuid, false);
         String name = fie.getString(CmnConst.FILE_NAME);
         //姣忔淇敼閮戒翰绌哄凡璇讳汉鍛�
         fieldSetEntity.setValue(CmnConst.READ_NUM, "");
@@ -118,7 +119,7 @@
         String file_names = fieldSetEntity.getString(CmnConst.FILE_NAME);
         String[] file_name = file_names.split(",");
         String[] uuid = uuids.split(",");
-        boolean flag = baseDao.delete(CmnConst.product_oa_DOCUMENT, uuid);
+        boolean flag = baseDao.delete(CmnConst.PRODUCT_OA_DOCUMENT, uuid);
         this.documentation(uuid, "鍒犻櫎", file_name, null);
         return flag;
     }
@@ -136,7 +137,7 @@
                 .append(" a.*,CONCAT(CONVERT(a.file_size / 1024, decimal(10,2)), 'KB') file_size_kb,b.show_name name")
                 //    .append(" concat(c.attachment_domain,'/',c.attachment_container,'/',c.module_uuid,'/',c.attachment_title,?) path ")
                 .append(" FROM ")
-                .append(" (SELECT * FROM product_oa_document WHERE directory_uuid = ? ")
+                .append(" (SELECT * FROM PRODUCT_OA_document WHERE directory_uuid = ? ")
                 .append(queryFilter)
                 .append(" ) a LEFT JOIN product_sys_staffs b ON a.created_by = b.user_id ")
                 .append(" LEFT JOIN product_sys_attachments c ON b.staff_avatar=c.uuid ");
@@ -149,7 +150,7 @@
     @Override
     public FieldSetEntity documentInfo(FieldSetEntity fieldSetEntity) throws BaseException {
         String uuid = fieldSetEntity.getString(CmnConst.UUID);
-        FieldSetEntity fieldSet = baseDao.getFieldSetEntity(CmnConst.product_oa_DOCUMENT, uuid, true);
+        FieldSetEntity fieldSet = baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_DOCUMENT, uuid, true);
         String file_name = fieldSet.getString(CmnConst.FILE_NAME);
         String user_ids = fieldSetEntity.getString(CmnConst.USER_IDS);
         String read = fieldSetEntity.getString(CmnConst.READ_NUM);
@@ -167,11 +168,11 @@
         SystemUser user = SpringMVCContextHolder.getCurrentUser();
         DataTableEntity dataTableEntity = new DataTableEntity();
         FieldMetaEntity fieldMeta = new FieldMetaEntity();
-        fieldMeta.setTableName(new String[]{CmnConst.product_oa_DOCUMENT_LOG});
+        fieldMeta.setTableName(new String[]{CmnConst.PRODUCT_OA_DOCUMENT_LOG});
         dataTableEntity.setMeta(fieldMeta);
         for (int i = 0; i < uuid.length; i++) {
             FieldSetEntity fieldSetEntity = new FieldSetEntity();
-            fieldSetEntity.setTableName(CmnConst.product_oa_DOCUMENT_LOG);
+            fieldSetEntity.setTableName(CmnConst.PRODUCT_OA_DOCUMENT_LOG);
             fieldSetEntity.setMeta(fieldMeta);
             fieldSetEntity.setValue(CmnConst.DOCUMENT_UUID, uuid[i]);
             //fieldSetEntity.setValue(CmnConst.RECORD,record);
@@ -199,11 +200,11 @@
         SystemUser user = SpringMVCContextHolder.getCurrentUser();
         DataTableEntity dataTableEntity = new DataTableEntity();
         FieldMetaEntity fieldMeta = new FieldMetaEntity();
-        fieldMeta.setTableName(new String[]{CmnConst.product_oa_DOCUMENT_LOG});
+        fieldMeta.setTableName(new String[]{CmnConst.PRODUCT_OA_DOCUMENT_LOG});
         dataTableEntity.setMeta(fieldMeta);
         for (int i = 0; i < uuid.length; i++) {
             FieldSetEntity fieldSetEntity = new FieldSetEntity();
-            fieldSetEntity.setTableName(CmnConst.product_oa_DOCUMENT_LOG);
+            fieldSetEntity.setTableName(CmnConst.PRODUCT_OA_DOCUMENT_LOG);
             fieldSetEntity.setMeta(fieldMeta);
             fieldSetEntity.setValue(CmnConst.DOCUMENT_UUID, uuid[i]);
             //fieldSetEntity.setValue(CmnConst.RECORD,record);
@@ -225,9 +226,17 @@
         baseDao.add(dataTableEntity);
     }
 
-    public boolean verifyOrgExist(String org, Integer user_id) {
+    public boolean verifyOrgExist(String org) {
+        Integer user_id = SpringMVCContextHolder.getCurrentUser().getUser_id();
+        String code = SpringMVCContextHolder.getCurrentUser().getCurrentStaff().getString("tricode");
+        //鑾峰彇鎵�鏈変笂绾х紪鐮�
+        String[] superior_code = new String[code.split("-").length - 1];
+        for (int i = 0; i < code.split("-").length - 1; i++) {
+            superior_code[i] = code.substring(0, code.length() - ((i + 1) * 4));
+        }
         String this_user = String.valueOf(user_id);
-        String[][] orgArr = organizationServiceV2.decomposesMultipleTypeValues(org);
+        SpringMVCContextHolder.getCurrentUser().getLanguageCode();
+        String[][] orgArr = BaseUtil.decomposesMultipleTypeValues(org);
         String[] user = orgArr[3];
         if (null != user) {
             for (int i = 0; i < user.length; i++) {
@@ -238,14 +247,28 @@
         }
         String[] level = orgArr[0];
         String[] dept = orgArr[1];
-        String[] post = orgArr[2];
+        // List<String> list = Arrays.asList(a);  --OK
+        // List<String> list = Arrays.asList("A","B","C"); --OK
+        // list.add("F"); --UnsupportedOperationException
+        // list.remove("A"); --UnsupportedOperationException
+        // list.set(1,"javaee");--OK (鍥犱负鏄妸鏁扮粍杞负闆嗗悎锛屽叾鏈川杩樻槸鏁扮粍锛屾暟缁勯暱搴﹀浐瀹氫笉鍙橈紝浣嗗唴瀹瑰彲浠ユ敼鍙�)
+        // 缁撹锛氳櫧鐒跺彲浠ユ妸鏁扮粍杞负闆嗗悎锛屼絾鏄泦鍚堥暱搴︿笉鑳芥敼鍙�
+        List list = new ArrayList();
+        ;
         if (null != level) {
-            DataTableEntity org_level_uuid = baseDao.listTable(CmnConst.PRODUCT_SYS_STAFFS, BaseUtil.buildQuestionMarkFilter("org_level_uuid", level, true) + " and user_id=?", new String[]{this_user});
-            if (org_level_uuid.getRows() > 0) return true;
+            list.addAll(Arrays.asList(level));
         }
         if (null != dept) {
-            DataTableEntity dept_uuid = baseDao.listTable(CmnConst.PRODUCT_SYS_STAFFS, BaseUtil.buildQuestionMarkFilter("dept_uuid", dept, true) + " and user_id=?", new String[]{this_user});
-            if (dept_uuid.getRows() > 0) return true;
+            list.addAll(Arrays.asList(dept));
+        }
+        String[] level_dept = new String[list.size()];
+        list.toArray(level_dept);
+
+
+        String[] post = orgArr[2];
+        if (level_dept.length != 0) {
+            DataTableEntity org_level_uuid = baseDao.listTable(CmnConst.TABLE_PRODUCT_SYS_ORG_LEVELS, BaseUtil.buildQuestionMarkFilter("uuid", level_dept, true) + " and " + BaseUtil.buildQuestionMarkFilter("org_level_code", superior_code, true), new String[]{});
+            if (org_level_uuid.getRows() > 0) return true;
         }
         if (null != post) {
             DataTableEntity post_uuid = baseDao.listTable(CmnConst.PRODUCT_SYS_STAFFS, BaseUtil.buildQuestionMarkFilter("job_post_uuid", post, true) + " and user_id=?", new String[]{this_user});
@@ -259,7 +282,7 @@
         String butt = "";
         DataTableEntity dataTable = null;
         FieldSetEntity fse = new FieldSetEntity();
-        fse.setTableName(CmnConst.product_oa_DOCUMENT);
+        fse.setTableName(CmnConst.PRODUCT_OA_DOCUMENT);
         if ("1".equals(fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE))) {
             //鑾峰彇鐨剈ser_id
             Integer user_id = SpringMVCContextHolder.getCurrentUser().getUser_id();
@@ -267,10 +290,10 @@
             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"), user_id)) {
+            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 ")
+                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});
@@ -325,8 +348,8 @@
         //1涓哄叕鍙告枃浠剁洰褰�
         if ("1".equals(type)) {
             //String staffId = user.getCurrentStaff().getString("staff_id");
-            sql.append(" select a.* from product_oa_directory a  ")
-                    .append(" LEFT JOIN (  SELECT a.directory_uuid FROM product_oa_directory_rights a  LEFT JOIN product_sys_organizational_structure_storage b ")
+            sql.append(" select a.* from PRODUCT_OA_directory a  ")
+                    .append(" LEFT JOIN (  SELECT a.directory_uuid FROM PRODUCT_OA_directory_rights a  LEFT JOIN product_sys_organizational_structure_storage b ")
                     .append(" on a.storage_uuid = b.uuid WHERE a.rigths like '%3%' AND CONCAT(',',b.staff_ids,',') like ? GROUP BY ")
                     .append(" a.directory_uuid) b ON a.uuid = b.directory_uuid  where a.directory_type = 1  and a.org_level_uuid = ? ");
             String staffId = "%" + user.getCurrentStaff().getString("staff_id") + "%";
@@ -334,7 +357,7 @@
             param.add(user.getOrg_level_uuid());
             //param.add("%,140,%");
         } else {
-            sql.append(" select * from product_oa_directory where directory_type = 2 AND created_by = ? ");
+            sql.append(" select * from PRODUCT_OA_directory where directory_type = 2 AND created_by = ? ");
             param.add(user.getUser_id());
         }
         JSONObject object = new JSONObject();
@@ -348,12 +371,12 @@
             sql.append(" and tricode_parent = ? ");
             //鍔犺浇鏂囦欢璺緞
             DataTableEntity dataTableEntity = documentDirectoryService.getDirectoryStructure(fse);
-            object.put("product_oa_directory_path", BaseUtil.dataTableEntityToJson(dataTableEntity));
+            object.put("PRODUCT_OA_directory_path", BaseUtil.dataTableEntityToJson(dataTableEntity));
         }
         //sql.append(" GROUP BY tricode,tricode_parent,directory_name");
         DataTableEntity data = baseDao.listTable(sql.toString(), param.toArray());
 
-        object.put("product_oa_directory_sub", BaseUtil.dataTableEntityToJson(data));
+        object.put("PRODUCT_OA_directory_sub", BaseUtil.dataTableEntityToJson(data));
         baseDao.listInternationDataTable(data, null);
 
         return object;
@@ -363,7 +386,7 @@
     @Transactional
     public void downloadFile(FieldSetEntity fieldSetEntity) throws BaseException {
         String uuid = fieldSetEntity.getString(CmnConst.UUID);
-        FieldSetEntity fieldSet = baseDao.getFieldSetEntity(CmnConst.product_oa_DOCUMENT, uuid, false);
+        FieldSetEntity fieldSet = baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_DOCUMENT, uuid, false);
         String file_name = fieldSet.getString(CmnConst.FILE_NAME);
         this.documentation(new String[]{uuid}, "涓嬭浇", new String[]{file_name}, null);
         this.markRead(fieldSet);
@@ -408,7 +431,7 @@
         //1涓哄叕鍙告枃浠跺す
         if (directory_type == 1) {
             StringBuffer sql = new StringBuffer();
-            sql.append(" SELECT * FROM product_oa_directory_rights  ")
+            sql.append(" SELECT * FROM PRODUCT_OA_directory_rights  ")
                     .append(" WHERE directory_uuid = ? ")
                     .append(" AND rigths like '%3%' AND concat(',',storage_uuid,',') like ? ");//3涓烘柊澧�
             String user_id = String.valueOf(SpringMVCContextHolder.getCurrentUser().getUser_id());
@@ -418,12 +441,12 @@
         }
         //1涓轰釜浜烘枃浠跺す
         if (directory_type == 2 || row > 0) {
-            FieldSetEntity fieldSetEntity = baseDao.getFieldSetEntity(CmnConst.product_oa_DIRECTORY, directory_uuid, false);
+            FieldSetEntity fieldSetEntity = baseDao.getFieldSetEntity(CmnConst.PRODUCT_OA_DIRECTORY, directory_uuid, false);
             //鑾峰彇绉诲姩鍒扮殑鐩綍鍚�
             String directory_name = fieldSetEntity.getString(CmnConst.DIRECTORY_NAME);
             String uuids = fse.getString(CmnConst.UUID);
             String[] uuid = uuids.split(",");
-            DataTableEntity dataTable = baseDao.listTable(CmnConst.product_oa_DOCUMENT, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuid.length, true), uuid);
+            DataTableEntity dataTable = baseDao.listTable(CmnConst.PRODUCT_OA_DOCUMENT, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuid.length, true), uuid);
             List<String> uuidList = ListUtils.newArrayList();
             List<String> fileNameList = ListUtils.newArrayList();
             for (int i = 0, length = dataTable.getRows(); i < length; i++) {
@@ -433,7 +456,7 @@
 
             String params = directory_uuid + "," + uuids;
             String[] param = params.split(",");
-            boolean flag = baseDao.executeUpdate("UPDATE product_oa_document SET directory_uuid = ? WHERE " + BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuid.length, true), param);
+            boolean flag = baseDao.executeUpdate("UPDATE PRODUCT_OA_document SET directory_uuid = ? WHERE " + BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuid.length, true), param);
             this.documentation(uuidList.toArray(), "绉诲姩", fileNameList.toArray(), directory_name);
             return flag;
         } else {
@@ -443,7 +466,102 @@
 
     @Override
     public DataTableEntity getDocumentLog(FieldSetEntity fieldSetEntity) throws BaseException {
-        return baseDao.listTable("SELECT CONCAT(b.show_name, a.state) log,a.created_utc_datetime FROM product_oa_document_log a LEFT JOIN product_sys_staffs b on a.created_by = b.user_id WHERE document_uuid = ? ORDER BY a.created_utc_datetime DESC",
+        return baseDao.listTable("SELECT CONCAT(b.show_name, a.state) log,a.created_utc_datetime FROM PRODUCT_OA_document_log a LEFT JOIN product_sys_staffs b on a.created_by = b.user_id WHERE document_uuid = ? ORDER BY a.created_utc_datetime DESC",
                 new String[]{fieldSetEntity.getString(CmnConst.DOCUMENT_UUID)}, fieldSetEntity.getInteger(CmnConst.PAGESIZE), fieldSetEntity.getInteger(CmnConst.CPAGE));
     }
+
+    @Override
+    public DataTableEntity getApplyDocument(FieldSetEntity fse) throws BaseException {
+
+        String document_name = fse.getString("document_name");
+        String filter="file_name like '%"+document_name+"'%";
+        DataTableEntity product_oa_document = baseDao.listTable("product_oa_document",filter);
+
+        return product_oa_document;
+    }
+
+    @Override
+    public void addOrUpdateApplyDocument(FieldSetEntity fse) throws BaseException {
+
+        String[] attachment = new String[0];
+        if(ObjectUtil.isNotEmpty(fse.getString("uuid"))){
+            UUID uuid = UUID.randomUUID();
+            fse.setValue("uuid",uuid);
+            baseDao.add(fse);
+
+            if(ObjectUtil.isNotEmpty(fse.getString("attachment_uuid"))){
+                String attachment_uuid = fse.getString("attachment_uuid");
+                attachment= attachment_uuid.split(",");
+            }
+            for (int i = 0; i < attachment.length; i++) {
+                FieldSetEntity fieldSetEntity = new FieldSetEntity();
+                fieldSetEntity.setTableName("product_oa_document_borrow_sub");
+                fieldSetEntity.setValue("borrow_uuid",uuid);
+                fieldSetEntity.setValue("sub_uuid",attachment[i]);
+
+            }
+
+        }else {
+            String uuid = fse.getString("uuid");
+            String filter="borrow_uuid='"+uuid+"'";
+            //鍒犻櫎鍘熸潵闄勪欢淇℃伅
+            baseDao.delete("product_oa_document_borrow_sub",filter,new Object[]{});
+            baseDao.update(fse);
+            if(ObjectUtil.isNotEmpty(fse.getString("attachment_uuid"))){
+                String attachment_uuid = fse.getString("attachment_uuid");
+                attachment= attachment_uuid.split(",");
+            }
+
+            //閲嶆柊璺熸柊闄勪欢淇℃伅
+            for (int i = 0; i < attachment.length; i++) {
+                FieldSetEntity fieldSetEntity = new FieldSetEntity();
+                fieldSetEntity.setTableName("product_oa_document_borrow_sub");
+                fieldSetEntity.setValue("borrow_uuid",uuid);
+                fieldSetEntity.setValue("sub_uuid",attachment[i]);
+                baseDao.add(fieldSetEntity);
+
+            }
+
+
+        }
+
+    }
+
+    @Override
+    public DataTableEntity getApplayFileSort() throws BaseException {
+        StringBuilder sb=new StringBuilder();
+        sb.append(" SELECT b.* FROM (");
+        sb.append(" SELECT t.uuid,t.file_name,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(" 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");
+        sb.append(" )b order by  b.applyCount asc");
+        DataTableEntity dataTableEntity = baseDao.listTable(sb.toString());
+        return dataTableEntity;
+    }
+
+    @Override
+    public DataTableEntity getApplayUserSort() throws BaseException {
+        StringBuilder sb=new StringBuilder();
+        sb.append(" SELECT a.borrower,a.show_name,a.applayCount,a.applayFileCount ");
+        sb.append(" FROM (");
+        sb.append(" SELECT w.borrower,");
+        sb.append(" (select   count(borrower)  from  product_oa_document_borrow group by borrower ) as  applayCount,");
+        sb.append(" count(sub_uuid) as applayFileCount ");
+        sb.append(" FROM product_oa_document_borrow  w ");
+        sb.append(" JOIN product_oa_document_borrow_sub b");
+        sb.append(" on b.borrow_uuid=w.uuid");
+        sb.append(" JOIN product_oa_document t");
+        sb.append(" on b.sub_uuid=t.uuid");
+        sb.append(" 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");
+        sb.append(" order by a.applayCount,a.applayFileCount asc");
+        DataTableEntity dataTableEntity = baseDao.listTable(sb.toString());
+        return dataTableEntity;
+    }
 }

--
Gitblit v1.9.2