package com.mini.capi.biz; import com.mini.capi.biz.domain.BizFileFolders; import com.mini.capi.biz.domain.BizFiles; import com.mini.capi.biz.domain.BizSubTask; import com.mini.capi.biz.service.BizFileFoldersService; import com.mini.capi.biz.service.BizFilesService; import com.mini.capi.biz.service.BizSubTaskService; import com.mini.capi.model.ApiResult; import com.mini.capi.model.CreateFolder; import com.mini.capi.model.info.TodoHandleDTO; import com.mini.capi.utils.FileUtils; import com.mini.capi.utils.vId; import jakarta.annotation.Resource; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/biz") public class workController { @Resource private BizSubTaskService bizSubTaskService; @Resource private BizFileFoldersService bizFileFoldersService; @Resource private BizFilesService bizFilesService; private static String UPLOAD_PATH = "/ogsapp/files/"; /** * 完成待办 * * @return */ @PostMapping("/finishTodoSub") public ResponseEntity finishTodoSub(@RequestBody TodoHandleDTO handleDTO) { // 验证参数 if (handleDTO.getTaskId() == null || handleDTO.getOpinion() == null || handleDTO.getOpinion().trim().isEmpty()) { return ResponseEntity.badRequest().build(); } try { // 调用服务层处理任务 BizSubTask bizSubTask = bizSubTaskService.getById(handleDTO.getTaskId()); bizSubTask.setUstatus("CPT"); bizSubTask.setFinishTime(LocalDateTime.now()); bizSubTask.setRemark(handleDTO.getOpinion()); bizSubTaskService.updateById(bizSubTask); return ResponseEntity.ok().build(); } catch (Exception e) { // 处理异常(如任务不存在、数据库错误等) return ResponseEntity.status(500).build(); } } /** * 创建文件夹 */ @PostMapping("/CreateFolder") public ApiResult CreateFolder(@Validated @RequestBody CreateFolder request) { try { String dirId = vId.getCid(); BizFileFolders folders = new BizFileFolders(); folders.setFolderId(dirId); folders.setFolderName(request.getName()); folders.setParentId(request.getParentId()); bizFileFoldersService.save(folders); FileUtils.checkDirExists(UPLOAD_PATH + dirId); return ApiResult.success(); } catch (Exception e) { // 异常捕获,返回失败响应 return ApiResult.error(101, e.getMessage()); } } @PostMapping("uploadFiles") public ResponseEntity> uploadFiles( @RequestParam(value = "folderId") String folderId, @RequestParam("files") MultipartFile[] files) { // 响应结果集 Map result = new HashMap<>(); Path basePath = Paths.get(UPLOAD_PATH + folderId); FileUtils.checkDirExists(basePath.toString()); // 统计成功/失败数量 int successCount = 0; int failCount = 0; // 遍历上传的文件 for (MultipartFile file : files) { BizFiles bizFiles = new BizFiles(); try { // 1. 获取原始文件名和后缀 String originalFilename = file.getOriginalFilename(); String fileSuffix = originalFilename.substring(originalFilename.lastIndexOf(".")); // 2. 生成唯一文件名(避免文件名冲突) String uniqueFileName = vId.getCid() + fileSuffix; // 3. 构建文件存储路径 Path filePath = basePath.resolve(uniqueFileName); // 4. 保存文件到本地磁盘 file.transferTo(filePath.toFile()); bizFiles.setFileName(originalFilename); bizFiles.setFolderId(folderId); bizFiles.setFileSize(file.getSize()); bizFiles.setFileType(fileSuffix); bizFiles.setFilePath(filePath.toString()); bizFiles.setCreatorId(0); bizFiles.setIsDeleted(0); bizFilesService.save(bizFiles); successCount++; } catch (Exception e) { System.err.print(e.getMessage()); failCount++; } } // 构建响应结果 result.put("success", true); result.put("message", "上传成功"); result.put("successCount", successCount); result.put("failCount", failCount); return ResponseEntity.ok(result); } }