From a615f757084e4d11a90ed42698b8a8cbcc083cb8 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Fri, 24 Apr 2026 10:32:50 +0800
Subject: [PATCH] fix: 添加成果类型字段,视频或者图片

---
 drone-common/src/main/java/org/sxkj/common/utils/HeaderUtils.java |  146 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 146 insertions(+), 0 deletions(-)

diff --git a/drone-common/src/main/java/org/sxkj/common/utils/HeaderUtils.java b/drone-common/src/main/java/org/sxkj/common/utils/HeaderUtils.java
index a868b69..28e6dc3 100644
--- a/drone-common/src/main/java/org/sxkj/common/utils/HeaderUtils.java
+++ b/drone-common/src/main/java/org/sxkj/common/utils/HeaderUtils.java
@@ -192,6 +192,152 @@
 	}
 
 	/**
+	 * 处理区域代码,提取最后一组并补零到12位
+	 *
+	 * @param areaCode 原始区域代码,可能包含多个以逗号分隔的代码
+	 * @return 处理后的区域代码,补零到12位
+	 */
+	public static String processAreaCode(String areaCode) {
+		if (areaCode != null && !areaCode.isEmpty()) {
+			// 分割区域代码并只取最后一组
+			String[] codes = areaCode.split(",");
+			if (codes.length > 0) {
+				// 取最后一组并去除空格
+				String lastCode = codes[codes.length - 1].trim();
+				if (!lastCode.isEmpty()) {
+					// 补零到12位
+					return lastCode + "000000000000".substring(lastCode.length());
+				}
+			}
+		}
+		return areaCode;
+	}
+
+	/**
+	 * 补零
+	 * @param areaCode
+	 * @return
+	 */
+	public static String fillZero(String areaCode) {
+		return areaCode + "000000000000".substring(areaCode.length());
+	}
+
+	/**
+	 * 根据URL获取附件类型
+	 * 通过文件扩展名判断附件类型:
+	 * - 图片类型:jpg, jpeg, png, gif, bmp, webp, svg 等 -> 返回 1
+	 * - 视频类型:mp4, avi, mov, wmv, flv, mkv, mpeg, mpg 等 -> 返回 2
+	 * - 文档类型:pdf, doc, docx, xls, xlsx, ppt, pptx, txt 等 -> 返回 3
+	 * - 其他类型 -> 返回 0
+	 *
+	 * @param url 文件URL地址
+	 * @return 附件类型:1-图片,2-视频,3-文档,0-其他
+	 */
+	public static Integer getAttachmentType(String url) {
+		if (StringUtils.isEmpty(url)) {
+			return 0;
+		}
+
+		// 提取文件扩展名
+		String extension = getFileExtension(url);
+		if (StringUtils.isEmpty(extension)) {
+			return 0;
+		}
+
+		// 转换为小写进行比较
+		String extLower = extension.toLowerCase();
+
+		// 图片类型
+		if (isImageType(extLower)) {
+			return 1;
+		}
+
+		// 视频类型
+		if (isVideoType(extLower)) {
+			return 2;
+		}
+
+		// 文档类型
+		if (isDocumentType(extLower)) {
+			return 3;
+		}
+
+		// 其他类型
+		return 0;
+	}
+
+	/**
+	 * 从URL中提取文件扩展名
+	 *
+	 * @param url 文件URL地址
+	 * @return 文件扩展名(不包含点),如果无法提取则返回null
+	 */
+	private static String getFileExtension(String url) {
+		if (StringUtils.isEmpty(url)) {
+			return null;
+		}
+
+		// 去除URL参数部分(?后面的内容)
+		int questionMarkIndex = url.indexOf('?');
+		if (questionMarkIndex != -1) {
+			url = url.substring(0, questionMarkIndex);
+		}
+
+		// 查找最后一个点的位置
+		int lastDotIndex = url.lastIndexOf('.');
+		if (lastDotIndex == -1 || lastDotIndex == url.length() - 1) {
+			return null;
+		}
+
+		// 提取扩展名
+		return url.substring(lastDotIndex + 1);
+	}
+
+	/**
+	 * 判断是否为图片类型
+	 *
+	 * @param extension 文件扩展名(小写)
+	 * @return 是否为图片类型
+	 */
+	private static boolean isImageType(String extension) {
+		return extension.equals("jpg") || extension.equals("jpeg") ||
+			extension.equals("png") || extension.equals("gif") ||
+			extension.equals("bmp") || extension.equals("webp") ||
+			extension.equals("svg") || extension.equals("tiff") ||
+			extension.equals("tif") || extension.equals("ico");
+	}
+
+	/**
+	 * 判断是否为视频类型
+	 *
+	 * @param extension 文件扩展名(小写)
+	 * @return 是否为视频类型
+	 */
+	private static boolean isVideoType(String extension) {
+		return extension.equals("mp4") || extension.equals("avi") ||
+			extension.equals("mov") || extension.equals("wmv") ||
+			extension.equals("flv") || extension.equals("mkv") ||
+			extension.equals("mpeg") || extension.equals("mpg") ||
+			extension.equals("webm") || extension.equals("m4v") ||
+			extension.equals("3gp");
+	}
+
+	/**
+	 * 判断是否为文档类型
+	 *
+	 * @param extension 文件扩展名(小写)
+	 * @return 是否为文档类型
+	 */
+	private static boolean isDocumentType(String extension) {
+		return extension.equals("pdf") || extension.equals("doc") ||
+			extension.equals("docx") || extension.equals("xls") ||
+			extension.equals("xlsx") || extension.equals("ppt") ||
+			extension.equals("pptx") || extension.equals("txt") ||
+			extension.equals("csv") || extension.equals("zip") ||
+			extension.equals("rar");
+	}
+
+	/**
 	 * 获取当前HttpServletRequest对象
 	 *
 	 * @return HttpServletRequest对象,可能为null

--
Gitblit v1.9.3