From e1b48a354bb0a430a1f913f1b8de03d69c9514e9 Mon Sep 17 00:00:00 2001
From: 6c <420680616@qq.com>
Date: 星期一, 03 十一月 2025 11:56:43 +0800
Subject: [PATCH] 已送审保养打印-打印模板处理为保存到数据库

---
 src/main/java/com/product/file/service/DocumentService.java |  133 ++++++++++++++++++++++++++------------------
 1 files changed, 79 insertions(+), 54 deletions(-)

diff --git a/src/main/java/com/product/file/service/DocumentService.java b/src/main/java/com/product/file/service/DocumentService.java
index 9863320..cc507bd 100644
--- a/src/main/java/com/product/file/service/DocumentService.java
+++ b/src/main/java/com/product/file/service/DocumentService.java
@@ -25,6 +25,7 @@
 import org.springframework.stereotype.Component;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * Copyright lx
@@ -143,11 +144,12 @@
 		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");
@@ -183,6 +185,8 @@
 		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_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);
@@ -321,51 +325,46 @@
 
 	@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))) {
-			//鑾峰彇鐨剈ser_id
-			Integer user_id = SpringMVCContextHolder.getCurrentUser().getUser_id();
-			String key = "%," + user_id + ",%";
+			//鑾峰彇褰撳墠鐐瑰嚮鏂囦欢澶筓UID
 			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")) {
@@ -391,6 +390,21 @@
 		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
@@ -634,24 +648,27 @@
 	@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
@@ -706,14 +723,14 @@
 		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;
 	}
@@ -737,14 +754,14 @@
 		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;
 	}
@@ -809,4 +826,12 @@
 		}
 		return permission;
 	}
+	public DataTableEntity getFileItemize(FieldSetEntity fes) throws BaseException {
+		DataTableEntity dt = baseDao.listTable("SELECT b.classify_name,COUNT(1) number FROM product_oa_document a LEFT JOIN product_oa_document_classify_config b  on  a.business_classify_uuid=b.uuid\n" +
+				"where classify_name is not null GROUP BY b.classify_name ORDER BY COUNT(1)",new String[]{});
+		for (int i = 0; i <dt.getRows() ; i++) {
+			dt.setFieldValue(i,"ranking",i+1);
+		}
+		return dt;
+	}
 }

--
Gitblit v1.9.2