From 45593bceb0c101a93847f61ea5695ee471223580 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Wed, 19 Feb 2025 14:00:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/controller/FileUploadController.java | 55 ++++++++++++++ .../system/file/entity/FileSourceVo.java | 51 +++++++++++++ .../file/service/FileUploadService.java | 11 +++ .../file/service/FileUploadServiceImpl.java | 26 +++++++ .../com/bonus/system/file/util/IDUtils.java | 52 +++++++++++++ .../bonus/system/file/util/SystemUtils.java | 73 +++++++++++++++++++ .../mapper/att/AttendanceDetailsMapper.xml | 11 ++- 7 files changed, 277 insertions(+), 2 deletions(-) create mode 100644 bonus-modules/bonus-system/src/main/java/com/bonus/system/file/controller/FileUploadController.java create mode 100644 bonus-modules/bonus-system/src/main/java/com/bonus/system/file/entity/FileSourceVo.java create mode 100644 bonus-modules/bonus-system/src/main/java/com/bonus/system/file/service/FileUploadService.java create mode 100644 bonus-modules/bonus-system/src/main/java/com/bonus/system/file/service/FileUploadServiceImpl.java create mode 100644 bonus-modules/bonus-system/src/main/java/com/bonus/system/file/util/IDUtils.java create mode 100644 bonus-modules/bonus-system/src/main/java/com/bonus/system/file/util/SystemUtils.java diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/controller/FileUploadController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/controller/FileUploadController.java new file mode 100644 index 0000000..9d427ae --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/controller/FileUploadController.java @@ -0,0 +1,55 @@ +package com.bonus.system.file.controller; + +import com.bonus.common.core.utils.DateTimeHelper; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.system.file.util.IDUtils; +import com.bonus.system.file.util.SystemUtils; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; + +/** + * @className:FileUploadController + * @author:cwchen + * @date:2025-02-19-13:36 + * @version:1.0 + * @description:文件上传 + */ +@RestController +@RequestMapping("/fileUpload/") +@Slf4j +public class FileUploadController { + + @ApiOperation(value = "单文件上传") + @PostMapping("singleUploadFile") + public AjaxResult singleUploadFile(@RequestParam(value = "file") MultipartFile file){ + try { + String fileName = file.getOriginalFilename(); + String suffix= IDUtils.getSuffix(fileName); + String path="/" + DateTimeHelper.getNowYmd()+"/"+ IDUtils.createID()+suffix; + String newPath= SystemUtils.getUploadPath()+path; + File uploadFile = new File(newPath); + //生成文件夹 + if (!uploadFile.getParentFile().exists()) { + uploadFile.getParentFile().mkdirs(); + } + // 存入临时文件 + file.transferTo(uploadFile); + Map map = new HashMap<>(); + map.put("filePath",path); + map.put("fileName",fileName); + return AjaxResult.success("上传成功",map); + }catch (Exception e){ + log.error(e.toString(),e); + return AjaxResult.error("文件上传异常"); + } + } +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/entity/FileSourceVo.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/entity/FileSourceVo.java new file mode 100644 index 0000000..2bfeab3 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/entity/FileSourceVo.java @@ -0,0 +1,51 @@ +package com.bonus.system.file.entity; + +import lombok.Data; + +/** + * @className:FileSourceVo + * @author:cwchen + * @date:2025-02-19-11:20 + * @version:1.0 + * @description:资源文件-vo + */ +@Data +public class FileSourceVo { + + /** + * id + */ + private Long id; + /** + * 文件名称 + */ + private String fileName; + /** + * 文件后缀 + */ + private String fileSuffix; + /** + * 文件路径 + */ + private String filePath; + /** + * 文件类型 1图片 2文件 + */ + private String fileType; + /** + * 资源id + */ + private String sourceId; + /** + * 资源类型(码表进行配置) + */ + private String sourceType; + /** + * 创建人 + */ + private Long createUser; + /** + * 更新人 + */ + private Long updateUser; +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/service/FileUploadService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/service/FileUploadService.java new file mode 100644 index 0000000..5d0a838 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/service/FileUploadService.java @@ -0,0 +1,11 @@ +package com.bonus.system.file.service; + +/** + * @className:FileUploadService + * @author:cwchen + * @date:2025-02-19-13:39 + * @version:1.0 + * @description:文件上传 + */ +public class FileUploadService { +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/service/FileUploadServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/service/FileUploadServiceImpl.java new file mode 100644 index 0000000..e50f4c4 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/service/FileUploadServiceImpl.java @@ -0,0 +1,26 @@ +package com.bonus.system.file.service; + +import com.bonus.common.core.utils.DateTimeHelper; +import com.bonus.system.file.util.IDUtils; +import com.bonus.system.file.util.SystemUtils; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @className:FileUploadService + * @author:cwchen + * @date:2025-02-19-11:30 + * @version:1.0 + * @description:文件上传-业务层 + */ +@Service(value = "FileUploadService") +public class FileUploadServiceImpl { + + +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/util/IDUtils.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/util/IDUtils.java new file mode 100644 index 0000000..625c00b --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/util/IDUtils.java @@ -0,0 +1,52 @@ +package com.bonus.system.file.util; + +public class IDUtils { + private static byte[] lock = new byte[0]; + + // 位数,默认是8位 + private final static long w = 100000000; + + /** + * 传入文件 名称 + * @param fileName + * @return + */ + public static String getSuffix(String fileName){ + return fileName.substring(fileName.lastIndexOf('.')); + } + + public static void main(String[] args) { + System.err.println(createID()); + } + + /** + * 获取id + * @return + */ + public static String createID() { + long r = 0; + synchronized (lock) { + r = (long) ((Math.random() + 1) * w); + } + + return System.currentTimeMillis() + String.valueOf(r).substring(1); + } + + /** + * 是否是文件/图片 + * @param name + * @return + */ + public static String isImageFileExtension(String name) { + name=name.toLowerCase(); + String[] imageFormats = {"jpg", "jpeg", "png", "gif", "bmp", "tiff"}; + for (String format : imageFormats) { + if (format.equals(name)) { // 判断扩展名 + return "1"; + } + } + return "2"; // 不是支持的图片格式 + } + + +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/util/SystemUtils.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/util/SystemUtils.java new file mode 100644 index 0000000..b114270 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/file/util/SystemUtils.java @@ -0,0 +1,73 @@ +package com.bonus.system.file.util; + + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class SystemUtils { + + public static String windowsPath; + + + public static String linuxPath; + + /** + * 自动注入 + * + * @param windowsPath + */ + @Value("${file.upload_path.windows}") + public void setWindowsPath(String windowsPath) { + SystemUtils.windowsPath = windowsPath; + } + + /** + * 自动注入 + * + * @param linuxPath + */ + @Value("${file.upload_path.linux}") + public void setLinuxPath(String linuxPath) { + SystemUtils.linuxPath = linuxPath; + } + + /** + * 返回系统 + * + * @return + */ + public static String getSystem() { + String os = System.getProperty("os.name"); + //Windows操作系统 + if (os != null && os.toLowerCase().startsWith("windows")) { + return "windows"; + } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统 + return "linux"; + } else { //其它操作系统 + return "other"; + } + } + + /** + * 获取文件上传路径 + * + * @return + */ + public static String getUploadPath() { + String os = getSystem(); + System.err.println("当前系统是=" + os); + if ("windows".equals(os)) { + return windowsPath; + } else if ("linux".equals(os)) { + return linuxPath; + } else { + return windowsPath; + } + } + + + +} diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml index eb7b6d1..032c894 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttendanceDetailsMapper.xml @@ -31,7 +31,7 @@ FROM sys_dict_data where dict_type = 'att_status' and is_leave = '1')) - + and ( toWorkAttStatus = #{bean.attStatus} and offWorkAttStatus = #{bean.attStatus} ) @@ -39,7 +39,14 @@ and ( toWorkAttStatus = #{bean.attStatus} or offWorkAttStatus = #{bean.attStatus} ) - + + and (v.toWorkAttStatus in (SELECT dict_value + FROM sys_dict_data + where dict_type = 'att_status' and is_leave IN ('1','2')) or v.offWorkAttStatus in (SELECT dict_value + FROM sys_dict_data + where dict_type = 'att_status' and is_leave IN ('1','2'))) + AND (v.offWorkAttCurrentTime IS NOT NULL OR v.toWorkAttCurrentTime IS NOT NULL) + and v.org_id in (