lyhzzz 2 лет назад
Родитель
Сommit
0a3d6af7d1

+ 1 - 0
src/main/java/com/fdkankan/site/common/FilePath.java

@@ -3,6 +3,7 @@ package com.fdkankan.site.common;
 public class FilePath {
 
     public final static String OSS_FILE_PATH = "smart-site/file/";
+    public final static String OSS_BIM_PATH = "bim/project_%s/%s";
     public final static String LOCAL_FILE_PATH = "/home/smart-site/file/";
 
 

+ 1 - 1
src/main/java/com/fdkankan/site/common/ResultCode.java

@@ -15,7 +15,7 @@ public enum ResultCode {
     UPLOAD_FILE_NO_EXIST(7002,"上传文件不存在"),
     UPLOAD_FILE_TO_LONG(7003,"文件上传过大"),
     UPLOAD_BIM_ERROR(7004,"上传调用bim失败"),
-    UPLOAD_FILE_TYPE_ERROR(7005,"文件类型错误"),
+    UPLOAD_BIM_EXIST(7005,"bim已上传,删除可再次删除"),
     UPLOAD_FILE_MSG_ERROR(7006,"文件内容错误"),
     ;
     public int code;

+ 37 - 0
src/main/java/com/fdkankan/site/controller/ProjectController.java

@@ -2,11 +2,14 @@ package com.fdkankan.site.controller;
 
 
 import com.fdkankan.site.common.BaseController;
+import com.fdkankan.site.common.ResultCode;
 import com.fdkankan.site.common.ResultData;
 import com.fdkankan.site.common.util.JwtUtil;
 import com.fdkankan.site.common.util.VUtils;
 import com.fdkankan.site.entity.Project;
+import com.fdkankan.site.entity.ProjectBim;
 import com.fdkankan.site.request.ProjectAddSceneParam;
+import com.fdkankan.site.request.ProjectDelSceneParam;
 import com.fdkankan.site.request.ProjectListParam;
 import com.fdkankan.site.service.IProjectService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,11 +44,27 @@ public class ProjectController extends BaseController {
     public ResultData list(@RequestBody ProjectListParam param){
         return ResultData.ok(projectService.pageList(param,getToken()));
     }
+    @PostMapping("/over")
+    public ResultData over(@RequestBody Project param){
+        projectService.over(param);
+        return ResultData.ok();
+    }
+    @PostMapping("/del")
+    public ResultData del(@RequestBody Project param){
+        VUtils.isTure(param.getProjectId() == null).throwMessage(ResultCode.PARAM_MISS);
+        projectService.removeById(param.getProjectId());
+        return ResultData.ok();
+    }
 
     @PostMapping("/add")
     public ResultData addProject(@RequestBody Project param){
         return ResultData.ok( projectService.addProject(param,getToken()));
     }
+    @PostMapping("/updateName")
+    public ResultData updateName(@RequestBody Project param){
+        projectService.updateName(param);
+        return ResultData.ok( );
+    }
 
     @PostMapping("/addScene")
     public ResultData addScene(@RequestBody ProjectAddSceneParam param){
@@ -53,5 +72,23 @@ public class ProjectController extends BaseController {
         return ResultData.ok( );
     }
 
+    @PostMapping("/delScene")
+    public ResultData delScene(@RequestBody ProjectDelSceneParam param){
+        projectService.delScene(param);
+        return ResultData.ok( );
+    }
+
+    @PostMapping("/deleteBim")
+    public ResultData deleteBim(@RequestParam(required = false)ProjectBim projectBim){
+        VUtils.isTure(projectBim.getBimId() == null).throwMessage(ResultCode.PARAM_MISS);
+        projectService.deleteBim(projectBim.getBimId());
+        return ResultData.ok();
+    }
+    @PostMapping("/updateBimName")
+    public ResultData updateBimName(@RequestParam(required = false)ProjectBim projectBim){
+        projectService.updateBimName(projectBim);
+        return ResultData.ok();
+    }
+
 }
 

+ 25 - 3
src/main/java/com/fdkankan/site/controller/UploadController.java

@@ -1,6 +1,7 @@
 package com.fdkankan.site.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.site.common.BaseController;
 import com.fdkankan.site.common.FilePath;
 import com.fdkankan.site.common.ResultCode;
@@ -25,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.io.File;
+import java.util.Objects;
 
 @Slf4j
 @RestController
@@ -53,12 +55,30 @@ public class UploadController extends BaseController {
     }
 
     @PostMapping("/bim")
-    public ResultData bim(@RequestParam(required = false) MultipartFile file,@RequestParam(required = false)String projectName)  {
+    public ResultData bim(@RequestParam(required = false) MultipartFile file,
+                          @RequestParam(required = false)Integer projectId,
+                          @RequestParam(required = false)String projectName)  {
         VUtils.isTure(file == null || file.getSize() <=0 ).throwMessage(ResultCode.PARAM_MISS);
+        VUtils.isTure(projectId == null).throwMessage(ResultCode.PARAM_MISS);
         VUtils.isTure(StringUtils.isBlank(projectName)).throwMessage(ResultCode.PARAM_MISS);
+
         File localFile = uploadService.uploadFile(file);
+        String newFileName = localFile.getName().substring(16);
+
+        String ossKey = String.format(FilePath.OSS_BIM_PATH,projectId,newFileName);
+        uploadToOssUtil.uploadOss(localFile.getPath(), ossKey);
+        if(!uploadToOssUtil.existKey(ossKey)){
+            throw new BusinessException(ResultCode.UPLOAD_BIM_ERROR);
+        }
+        ProjectBim bim = projectBimService.getByProjectId(projectId);
+        if(bim != null && !bim.getBimStatus().equals(BusinessStatus.ERROR.getInfo())){
+            throw new BusinessException(ResultCode.UPLOAD_BIM_EXIST);
+        }
         ProjectBim projectBim = new ProjectBim();
-        projectBim.setBimLocalFilePath(localFile.getPath());
+        projectBim.setBimName(Objects.requireNonNull(file.getOriginalFilename()).split("\\.")[0]);
+        projectBim.setBimLocalFilePath(queryPath + ossKey);
+        projectBim.setFileName(file.getOriginalFilename());
+        projectBim.setProjectId(projectId);
         projectBimService.save(projectBim);
 
         BimUploadParam param = new BimUploadParam();
@@ -70,8 +90,10 @@ public class UploadController extends BaseController {
         param.setProjectName(projectName);
         param.setSource(request.getContextPath());
         param.setCallBack(callBackUrl);
+        param.setFileName(projectBim.getFileName());
+        param.setFileUrl(projectBim.getBimLocalFilePath());
         try {
-            JSONObject jsonObject = bimClient.bimUpload(localFile.getPath(), JSONObject.toJSONString(param));
+            JSONObject jsonObject = bimClient.bimUpload(param);
             if(jsonObject.getInteger("code") !=200){
                 throw new BusinessException(ResultCode.UPLOAD_BIM_ERROR);
             }

+ 0 - 3
src/main/java/com/fdkankan/site/entity/Project.java

@@ -49,9 +49,6 @@ public class Project implements Serializable {
     @TableField("project_img")
     private String projectImg;
 
-    @TableField("bim_id")
-    private Integer bimId;
-
     /**
      * 项目状态0进行中,1已完成
      */

+ 12 - 0
src/main/java/com/fdkankan/site/entity/ProjectBim.java

@@ -30,6 +30,11 @@ public class ProjectBim implements Serializable {
      */
     @TableId(value = "bim_id", type = IdType.AUTO)
     private Integer bimId;
+    /**
+     * 项目id
+     */
+    @TableField(value = "project_id")
+    private Integer projectId;
 
     /**
      * bim名称
@@ -59,6 +64,12 @@ public class ProjectBim implements Serializable {
      */
     @TableField("bim_service_id")
     private Integer bimServiceId;
+    /**
+     * 文件原始名称
+     */
+    @TableField("file_name")
+    private String fileName;
+
 
     @TableField("tb_status")
     @TableLogic
@@ -71,4 +82,5 @@ public class ProjectBim implements Serializable {
     private String updateTime;
 
 
+
 }

+ 3 - 5
src/main/java/com/fdkankan/site/entity/ProjectLog.java

@@ -1,9 +1,7 @@
 package com.fdkankan.site.entity;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+
 import java.io.Serializable;
 import java.util.Date;
 import lombok.Getter;
@@ -24,7 +22,7 @@ public class ProjectLog implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    @TableId("log_id")
+    @TableId(value = "log_id", type = IdType.AUTO)
     private Integer logId;
 
     @TableField("project_id")

+ 2 - 0
src/main/java/com/fdkankan/site/httpClient/bim/BimUploadParam.java

@@ -8,4 +8,6 @@ public class BimUploadParam {
     private String projectName;
     private String source;
     private String callBack;
+    private String fileName;
+    private String fileUrl;
 }

+ 1 - 0
src/main/java/com/fdkankan/site/httpClient/bim/BusinessStatus.java

@@ -8,6 +8,7 @@ package com.fdkankan.site.httpClient.bim;
  */
 public enum BusinessStatus
 {
+    //     * ERROR(-1, "ERROR") 错误, DONE(0, "DONE") 完成,UPLOAD(1, "UPLOAD") 上传, TRANSLATE(2, "TRANSLATE") 转换, OFFLINE(3, "OFFLINE") 离线包生成;
     ERROR(-1, "ERROR"), DONE(0, "DONE"),UPLOAD(1, "UPLOAD"), TRANSLATE(2, "TRANSLATE"), OFFLINE(3, "OFFLINE");
 
     private final Integer code;

+ 2 - 1
src/main/java/com/fdkankan/site/httpClient/client/BimClient.java

@@ -3,6 +3,7 @@ package com.fdkankan.site.httpClient.client;
 import com.alibaba.fastjson.JSONObject;
 import com.dtflys.forest.annotation.*;
 import com.fdkankan.site.httpClient.address.BimAddressSource;
+import com.fdkankan.site.httpClient.bim.BimUploadParam;
 
 /**
  * 获取,调用bim服务
@@ -14,7 +15,7 @@ public interface BimClient {
      * 调用bim服务上传文件
      */
     @Post("/bim/file/upload")
-    JSONObject bimUpload(@DataFile("file") String filePath, @Body("dto") String dto);
+    JSONObject bimUpload( @JSONBody BimUploadParam param);
 
     /**
      * 调用bim服务上传文件

+ 12 - 0
src/main/java/com/fdkankan/site/request/ProjectDelSceneParam.java

@@ -0,0 +1,12 @@
+package com.fdkankan.site.request;
+
+import com.fdkankan.site.common.RequestBase;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProjectDelSceneParam {
+    private Integer projectId;
+    private String num;
+}

+ 9 - 0
src/main/java/com/fdkankan/site/response/ProjectLogVo.java

@@ -0,0 +1,9 @@
+package com.fdkankan.site.response;
+
+import com.fdkankan.site.entity.ProjectLog;
+import lombok.Data;
+
+@Data
+public class ProjectLogVo extends ProjectLog {
+    private String projectName;
+}

+ 3 - 0
src/main/java/com/fdkankan/site/service/IProjectBimService.java

@@ -13,4 +13,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IProjectBimService extends IService<ProjectBim> {
 
+    ProjectBim getByProjectId(Integer projectId);
+
+    void updateBimName(ProjectBim projectBim);
 }

+ 17 - 2
src/main/java/com/fdkankan/site/service/IProjectService.java

@@ -4,11 +4,14 @@ import com.fdkankan.site.entity.Project;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.site.entity.ProjectBim;
 import com.fdkankan.site.request.ProjectAddSceneParam;
+import com.fdkankan.site.request.ProjectDelSceneParam;
 import com.fdkankan.site.request.ProjectListParam;
 import com.fdkankan.site.response.ProjectInfoVo;
 import com.fdkankan.site.response.SceneVo;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -28,9 +31,21 @@ public interface IProjectService extends IService<Project> {
 
     List<SceneVo> getSceneList(Integer projectId);
 
-    ProjectBim getBimInfo(Integer projectId);
-
     Project addProject(Project param, String token);
 
     void addScene(ProjectAddSceneParam param);
+
+    void delScene(ProjectDelSceneParam param);
+
+
+    void over(Project param);
+
+    void deleteBim(Integer bimId);
+
+    HashMap<Integer, Project> getByIds(Set<Integer> projectIds);
+
+    void updateName(Project param);
+
+    void updateBimName(ProjectBim projectBim);
+
 }

+ 25 - 0
src/main/java/com/fdkankan/site/service/impl/ProjectBimServiceImpl.java

@@ -1,9 +1,15 @@
 package com.fdkankan.site.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.site.common.ResultCode;
+import com.fdkankan.site.common.util.VUtils;
+import com.fdkankan.site.entity.Project;
 import com.fdkankan.site.entity.ProjectBim;
 import com.fdkankan.site.mapper.IProjectBimMapper;
 import com.fdkankan.site.service.IProjectBimService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 /**
@@ -17,4 +23,23 @@ import org.springframework.stereotype.Service;
 @Service
 public class ProjectBimServiceImpl extends ServiceImpl<IProjectBimMapper, ProjectBim> implements IProjectBimService {
 
+    @Override
+    public ProjectBim getByProjectId(Integer projectId) {
+        LambdaQueryWrapper<ProjectBim> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ProjectBim::getProjectId,projectId);
+        return this.getOne(wrapper);
+    }
+
+    @Override
+    public void updateBimName(ProjectBim param) {
+        VUtils.isTure(param.getBimId() == null).throwMessage(ResultCode.PARAM_MISS);
+        VUtils.isTure(StringUtils.isBlank(param.getBimName())).throwMessage(ResultCode.PARAM_MISS);
+
+        LambdaUpdateWrapper<ProjectBim> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(ProjectBim::getBimId,param.getBimId());
+        if(StringUtils.isNotBlank(param.getBimName())){
+            wrapper.set(ProjectBim::getBimName,param.getBimName());
+        }
+        this.update(wrapper);
+    }
 }

+ 30 - 1
src/main/java/com/fdkankan/site/service/impl/ProjectLogServiceImpl.java

@@ -3,12 +3,23 @@ package com.fdkankan.site.service.impl;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.site.common.PageInfo;
 import com.fdkankan.site.common.RequestBase;
+import com.fdkankan.site.entity.Project;
 import com.fdkankan.site.entity.ProjectLog;
 import com.fdkankan.site.mapper.IProjectLogMapper;
+import com.fdkankan.site.response.ProjectLogVo;
 import com.fdkankan.site.service.IProjectLogService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.site.service.IProjectService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  *  服务实现类
@@ -20,9 +31,27 @@ import org.springframework.stereotype.Service;
 @Service
 public class ProjectLogServiceImpl extends ServiceImpl<IProjectLogMapper, ProjectLog> implements IProjectLogService {
 
+    @Autowired
+    IProjectService projectService;
+
     @Override
     public PageInfo pageList(RequestBase param) {
         Page<ProjectLog> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()));
-        return PageInfo.PageInfo(page);
+        List<ProjectLogVo> voList = new ArrayList<>();
+        Set<Integer> projectIds = page.getRecords().stream().map(ProjectLog::getProjectId).collect(Collectors.toSet());
+        HashMap<Integer,Project> projectHashMap = projectService.getByIds(projectIds);
+        for (ProjectLog record : page.getRecords()) {
+            ProjectLogVo vo = new ProjectLogVo();
+            BeanUtils.copyProperties(record,vo);
+            Project project = projectHashMap.get(record.getProjectId());
+            if(project != null){
+                vo.setProjectName(project.getProjectName());
+            }
+            voList.add(vo);
+        }
+        Page<ProjectLogVo> voPage = new Page<>(param.getPageNum(),param.getPageSize());
+        voPage.setRecords(voList);
+        voPage.setTotal(page.getTotal());
+        return PageInfo.PageInfo(voPage);
     }
 }

+ 58 - 5
src/main/java/com/fdkankan/site/service/impl/ProjectServiceImpl.java

@@ -2,6 +2,7 @@ package com.fdkankan.site.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.site.common.PageInfo;
 import com.fdkankan.site.common.ResultCode;
@@ -16,6 +17,7 @@ import com.fdkankan.site.httpClient.client.FdKKClient;
 import com.fdkankan.site.httpClient.response.FdkkResponse;
 import com.fdkankan.site.mapper.IProjectMapper;
 import com.fdkankan.site.request.ProjectAddSceneParam;
+import com.fdkankan.site.request.ProjectDelSceneParam;
 import com.fdkankan.site.request.ProjectListParam;
 import com.fdkankan.site.request.SceneNumParam;
 import com.fdkankan.site.response.ProjectInfoVo;
@@ -122,11 +124,20 @@ public class ProjectServiceImpl extends ServiceImpl<IProjectMapper, Project> imp
         ProjectInfoVo infoVo = new ProjectInfoVo();
         BeanUtils.copyProperties(project,infoVo);
         infoVo.setSceneList(this.getSceneList(projectId));
-        infoVo.setBimData(this.getBimInfo(projectId));
+        infoVo.setBimData(projectBimService.getByProjectId(projectId));
         return infoVo;
     }
 
     @Override
+    public void over(Project param) {
+        VUtils.isTure(param.getProjectId() == null).throwMessage(ResultCode.PARAM_MISS);
+        LambdaUpdateWrapper<Project> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(Project::getProjectId,param.getProjectId())
+                .set(Project::getProjectStatus,1);
+        this.update(wrapper);
+    }
+
+    @Override
     public List<SceneVo> getSceneList(Integer projectId) {
         Set<Integer> projectIds = new HashSet<>(Arrays.asList(projectId));
         List<ProjectNum> projectNums = projectNumService.getListByProjectIds(projectIds);
@@ -139,10 +150,6 @@ public class ProjectServiceImpl extends ServiceImpl<IProjectMapper, Project> imp
         return list;
     }
 
-    @Override
-    public ProjectBim getBimInfo(Integer projectId) {
-        return projectBimService.getById(projectId);
-    }
 
     @Override
     public Project addProject(Project param, String token) {
@@ -195,6 +202,52 @@ public class ProjectServiceImpl extends ServiceImpl<IProjectMapper, Project> imp
             projectNumService.addByNumList(param.getProjectId(),numType,addNumList);
         }
 
+    }
+
+    @Override
+    public void delScene(ProjectDelSceneParam param) {
+        VUtils.isTure(param.getProjectId() == null).throwMessage(ResultCode.PARAM_MISS);
+        VUtils.isTure(StringUtils.isBlank(param.getNum())).throwMessage(ResultCode.PARAM_MISS);
+        projectNumService.delByNumList(param.getProjectId(),Arrays.asList(param.getNum()));
+    }
+
+    @Override
+    public void deleteBim(Integer bimId) {
+        projectBimService.removeById(bimId);
+    }
+
+    @Override
+    public HashMap<Integer, Project> getByIds(Set<Integer> projectIds) {
+        HashMap<Integer, Project> map = new HashMap<>();
+        if(projectIds.size() >0){
+            LambdaQueryWrapper<Project> wrapper = new LambdaQueryWrapper<>();
+            wrapper.in(Project::getProjectId,projectIds);
+            List<Project> list = this.list(wrapper);
+            list.forEach(entity -> map.put(entity.getProjectId(),entity));
+        }
+        return map;
+    }
+
+    @Override
+    public void updateName(Project param) {
+        VUtils.isTure(param.getProjectId() == null).throwMessage(ResultCode.PARAM_MISS);
+
+        LambdaUpdateWrapper<Project> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(Project::getProjectId,param.getProjectId());
+        if(StringUtils.isNotBlank(param.getProjectName())){
+            wrapper.set(Project::getProjectName,param.getProjectName());
+        }
+        if(StringUtils.isNotBlank(param.getProjectMsg())){
+            wrapper.set(Project::getProjectMsg,param.getProjectMsg());
+        }
+        if(StringUtils.isNotBlank(param.getProjectImg())){
+            wrapper.set(Project::getProjectImg,param.getProjectImg());
+        }
+        this.update(wrapper);
+    }
 
+    @Override
+    public void updateBimName(ProjectBim projectBim) {
+        projectBimService.updateBimName(projectBim);
     }
 }

+ 2 - 6
src/main/java/com/fdkankan/site/service/impl/UploadService.java

@@ -37,13 +37,9 @@ public class UploadService {
         }
         File localFile = null;
         try {
-            //获取文件后缀名
             String suffixName = fileName.substring(fileName.lastIndexOf("."));
-            //重新生成文件名
-            fileName = UUID.randomUUID().toString().replace("-","") ;
-
-            localFile = File.createTempFile(fileName + suffixName,suffixName);
-
+            fileName = UUID.randomUUID().toString().replace("-","");
+            localFile = File.createTempFile(fileName,suffixName);
             file.transferTo(localFile);
             return localFile;
         }catch (Exception e){

+ 3 - 3
src/main/resources/application.yaml

@@ -33,16 +33,16 @@ forest:
   ## 打开/关闭Forest响应内容日志(默认为 false)
   log-response-content: true
   ## 请求超时时间,单位为毫秒, 默认值为3000
-  timeout: 3000000
+  timeout: 3000
   ## 连接超时时间,单位为毫秒, 默认值为2000
-  connect-timeout: 3000000
+  connect-timeout: 3000
 
 upload:
   type: oss
   query-path: https://4dkk.4dage.com/
 oss:
   #point: http://oss-cn-shenzhen-internal.aliyuncs.com
-  point: http://oss-cn-shenzhen-internal.aliyuncs.com
+  point: http://oss-cn-shenzhen.aliyuncs.com
   key: LTAIUrvuHqj8pvry
   secrey: JLOVl0k8Ke0aaM8nLMMiUAZ3EiiqI4
   bucket: 4dkankan