فهرست منبع

资料库后端

lipenghui 2 هفته پیش
والد
کامیت
a7a77d96f5

+ 6 - 0
yudao-module-pms/yudao-module-pms-biz/pom.xml

@@ -120,6 +120,12 @@
             <groupId>org.liquibase</groupId>
             <artifactId>liquibase-core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-module-infra-biz</artifactId>
+            <version>2.4.2-jdk8-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 </project>

+ 15 - 6
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/FileUploadController.java

@@ -1,16 +1,20 @@
 package cn.iocoder.yudao.module.pms.controller.admin;
 
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.exception.ErrorCode;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.module.infra.service.file.FileService;
 import com.alibaba.fastjson.JSON;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import javax.annotation.security.PermitAll;
 import javax.servlet.http.HttpServletRequest;
 import java.io.File;
@@ -26,6 +30,8 @@ public class FileUploadController {
 
     @Value("${file.upload-path}")
     private String uploadPath;
+    @Resource
+    private FileService fileService;
 
     @PostMapping("/upload")
     @PermitAll
@@ -56,22 +62,25 @@ public class FileUploadController {
                     continue;
                 }
 
-                // 构建文件保存路径
+//                // 构建文件保存路径
                 Path filePath = Paths.get(uploadPath, originalFilename);
-
-                // 创建父目录
+//
+//                // 创建父目录
                 File parentDir = filePath.getParent().toFile();
                 if (!parentDir.exists()) {
                     parentDir.mkdirs();
                 }
-
-                // 保存文件
-                file.transferTo(filePath.toFile());
+//
+//                // 保存文件
+//                file.transferTo(filePath.toFile());
 
                 // 记录文件信息
                 Map<String, Object> fileInfo = new HashMap<>();
                 fileInfo.put("name", FileUtil.getName(originalFilename));
+                String filePaths = fileService.createFile(FileUtil.getName(originalFilename), originalFilename, IoUtil.readBytes(file.getInputStream()));
+
                 fileInfo.put("path", originalFilename);
+                fileInfo.put("filePath", filePaths);
                 fileInfo.put("size", file.getSize());
                 fileInfo.put("isFolder", false);
                 fileList.add(fileInfo);

+ 12 - 7
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotInfoServiceImpl.java

@@ -4,23 +4,23 @@ import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.io.FileUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.*;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeListReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoClassifyDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotTreeDO;
-import cn.iocoder.yudao.module.pms.dal.mysql.IotInfoClassifyMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotInfoMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotTreeMapper;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
@@ -55,8 +55,6 @@ public class IotInfoServiceImpl implements IotInfoService {
     private DeptApi deptApi;
     @Autowired
     private IotTreeMapper iotTreeMapper;
-    @Value("${file.url}")
-    private String fileUrl;
 
     @Override
     public List<IotInfoRespVO> getChildContentFile(Long classId) {
@@ -369,7 +367,9 @@ public class IotInfoServiceImpl implements IotInfoService {
     private void processFiles(JsonNode filesNode, Long rootParentId,Long fileClassId, Long deviceId, Long deptId) {
         for (JsonNode fileNode : filesNode) {
             String path = fileNode.get("path").asText();
+            String filePath = fileNode.get("filePath").asText();
             String fileName = fileNode.get("name").asText();
+            String size = fileNode.get("size").asText();
 
             // 根据路径确定父文件夹ID
             String[] pathParts = path.split("/");
@@ -394,7 +394,12 @@ public class IotInfoServiceImpl implements IotInfoService {
                 if (fileName.contains("jpg")||fileName.contains("jpeg")||fileName.contains("png")||fileName.contains("gif")) {
                     info.setFileType("pic");
                 }
-                info.setFilePath(fileUrl+fileName);
+                info.setFilePath(filePath);
+                if (StringUtils.isNotBlank(size)&&!"null".equals(size)) {
+                    long fileSize = Long.parseLong(size);
+                    double mb = fileSize / (1024.0 * 1024.0);
+                    info.setFileSize(String.format("%.2f MB", mb));
+                }
                 iotInfoMapper.insert(info);
             }
         }