diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ImportPrjController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ImportPrjController.java index 2540528..8a1e267 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ImportPrjController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ImportPrjController.java @@ -3,6 +3,12 @@ package com.electromagnetic.industry.software.manage.controller; import com.electromagnetic.industry.software.common.annotations.UserOperation; import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; +import com.electromagnetic.industry.software.manage.service.ImportPrjService; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -11,18 +17,33 @@ import org.springframework.web.multipart.MultipartFile; @RestController public class ImportPrjController { - /** - * 导入本地工程 - * - * @param - * @return - */ - @RequestMapping("/importPrj") - @UserOperation(value = "导入本地工程", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE) - public ElectromagneticResult importPrj(@RequestParam("file") MultipartFile file) { + @Resource + private ImportPrjService importPrjService; - return null; + @RequestMapping("/importPrj") + @UserOperation(value = "导入本地工程", modelName = UserOperationModuleEnum.IMPORT_PFJ) + public ElectromagneticResult importPrj(@RequestParam("file") MultipartFile file) { + return ElectromagneticResultUtil.success(importPrjService.importPrj(file)); } + @RequestMapping("/queryPrjInfo") + @UserOperation(value = "查询导入工程列表", modelName = UserOperationModuleEnum.IMPORT_PFJ) + public ElectromagneticResult queryPrjInfo(@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize) { + return ElectromagneticResultUtil.success(importPrjService.queryPrjInfo(pageNum, pageSize)); + } + + @RequestMapping("/queryImportFileInfo") + @UserOperation(value = "查询导入工程文件和文件夹信息", modelName = UserOperationModuleEnum.IMPORT_PFJ) + public ElectromagneticResult queryImportFileInfo(@RequestParam("pageNum") Integer pageNum, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("id") String id) { + return ElectromagneticResultUtil.success(importPrjService.queryImportFileInfo(id, pageNum, pageSize)); + } + + @RequestMapping("/download") + @UserOperation(value = "下载文件", modelName = UserOperationModuleEnum.IMPORT_PFJ) + public ResponseEntity download(@RequestParam("id") String id, HttpServletResponse response) { + return importPrjService.download(id, response); + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/ImportFileDirQueryVO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/ImportFileDirQueryVO.java new file mode 100644 index 0000000..3a5244a --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/ImportFileDirQueryVO.java @@ -0,0 +1,12 @@ +package com.electromagnetic.industry.software.manage.pojo.req; + +import lombok.Data; + +@Data +public class ImportFileDirQueryVO { + + private String fileName; + + private String id; + +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/ImportFileInfoVO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/ImportFileInfoVO.java new file mode 100644 index 0000000..1a42382 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/ImportFileInfoVO.java @@ -0,0 +1,37 @@ +package com.electromagnetic.industry.software.manage.pojo.req; + +import lombok.Data; + +import java.util.Date; + +@Data +public class ImportFileInfoVO { + + /** + * 主键ID + */ + private String id; + /** + * 父目录id + */ + private String parentId; + /** + * 文件类型 + */ + private String fileType; + /** + * 文件名 + */ + private String fileName; + /** + * 数据类型,0-文件夹 1-文件 + */ + private Integer dataType; + /** + * 文件大小 + */ + private Long fileSize; + + private Date createdTime; + +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/ImportPrjService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/ImportPrjService.java index a677cc8..87ea2d4 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/ImportPrjService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/ImportPrjService.java @@ -1,5 +1,8 @@ package com.electromagnetic.industry.software.manage.service; +import com.electromagnetic.industry.software.common.pojo.RespPageVO; +import com.electromagnetic.industry.software.manage.pojo.req.ImportFileDirQueryVO; +import com.electromagnetic.industry.software.manage.pojo.req.ImportFileInfoVO; import jakarta.servlet.http.HttpServletResponse; import org.springframework.core.io.InputStreamResource; import org.springframework.http.ResponseEntity; @@ -11,5 +14,8 @@ public interface ImportPrjService { ResponseEntity download(String id, HttpServletResponse response); + RespPageVO queryPrjInfo(Integer pageNum, Integer pageSize); + + RespPageVO queryImportFileInfo(String id, Integer pageNo, Integer pageSize); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ImportPrjServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ImportPrjServiceImpl.java index a2765f7..85a2a74 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ImportPrjServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/ImportPrjServiceImpl.java @@ -1,5 +1,6 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.FileUtil; @@ -8,18 +9,21 @@ import cn.hutool.core.text.StrFormatter; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.electromagnetic.industry.software.common.cons.ElectromagneticConstants; import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; import com.electromagnetic.industry.software.common.exception.BizException; +import com.electromagnetic.industry.software.common.pojo.RespPageVO; import com.electromagnetic.industry.software.common.util.EleCommonUtil; import com.electromagnetic.industry.software.common.util.IdWorker; import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.manage.config.ElePropertyConfig; import com.electromagnetic.industry.software.manage.mapper.ImportPrjInfoMapper; -import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.models.ImportFileInfo; +import com.electromagnetic.industry.software.manage.pojo.req.ImportFileDirQueryVO; +import com.electromagnetic.industry.software.manage.pojo.req.ImportFileInfoVO; import com.electromagnetic.industry.software.manage.service.ImportPrjService; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; @@ -39,16 +43,13 @@ import java.util.*; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.APPEND_NEW_FILE_NAME; -import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.FILE_SEC_PASSWD; +import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.*; @Service public class ImportPrjServiceImpl extends ServiceImpl implements ImportPrjService { @Resource private ElePropertyConfig elePropertyConfig; - @Resource - private CommonService commonService; @Override @Transactional(rollbackFor = Exception.class) @@ -119,6 +120,10 @@ public class ImportPrjServiceImpl extends ServiceImpl e.getParentId().equals(PRJ_PARENT_ID)).findFirst().get().getId(); + String prjPath = elePropertyConfig.getImportPrjPath() + File.separator + prjId; + FileUtil.writeFromStream(file.getInputStream(), prjPath); + EleCommonUtil.encryptFile(prjPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes())); } catch (Exception e) { throw new BizException("导入工程失败,原因 " + e.getMessage(), e); } finally { @@ -159,6 +164,36 @@ public class ImportPrjServiceImpl extends ServiceImpl queryPrjInfo(Integer pageNum, Integer pageSize) { + Page importFileInfoPage = this.baseMapper.selectPage(new Page<>(pageNum, pageSize), Wrappers.lambdaQuery(ImportFileInfo.class) + .select(ImportFileInfo::getId, ImportFileInfo::getFileName) + .eq(ImportFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) + .eq(ImportFileInfo::getParentId, PRJ_PARENT_ID)); + List page = BeanUtil.copyToList(importFileInfoPage.getRecords(), ImportFileDirQueryVO.class); + return new RespPageVO<>(importFileInfoPage.getTotal(), page); + } + + @Override + public RespPageVO queryImportFileInfo(String id, Integer pageNo, Integer pageSize) { + Page importFilePage = this.baseMapper.selectPage(new Page<>(pageNo, pageSize), Wrappers.lambdaQuery() + .eq(ImportFileInfo::getParentId, id) + .eq(ImportFileInfo::getDataType, EleDataTypeEnum.FILE.code) + .eq(ImportFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)); + List files = BeanUtil.copyToList(importFilePage.getRecords(), ImportFileInfoVO.class); + RespPageVO respPageVO = new RespPageVO<>(importFilePage.getTotal(), files); + // 如果是首页查询,则首先查询全部文件夹 + if (Objects.equals(pageNo, 1)) { + List importDirs = this.baseMapper.selectList(Wrappers.lambdaQuery() + .eq(ImportFileInfo::getParentId, id) + .eq(ImportFileInfo::getDataType, EleDataTypeEnum.FOLDER.code) + .eq(ImportFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)); + List importFileDirQueryVOS = BeanUtil.copyToList(importDirs, ImportFileDirQueryVO.class); + respPageVO.setImportDirs(importFileDirQueryVOS); + } + return respPageVO; + } + public void resetPrjName(ImportFileInfo importFileInfo) { if (!StrUtil.equals(importFileInfo.getParentId(), ElectromagneticConstants.PRJ_PARENT_ID)) { return; diff --git a/electrmangnetic/src/main/resources/application.properties b/electrmangnetic/src/main/resources/application.properties index 4b94092..23b4cb9 100644 --- a/electrmangnetic/src/main/resources/application.properties +++ b/electrmangnetic/src/main/resources/application.properties @@ -5,9 +5,9 @@ spring.servlet.multipart.max-file-size=500MB spring.servlet.multipart.max-request-size=500MB spring.mvc.async.request-timeout=3600000 #mysql -spring.datasource.url=jdbc:mariadb://127.0.0.1:3306/em_data_dev?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&sslModel=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true +spring.datasource.url=jdbc:mariadb://127.0.0.1:12345/em_data_dev?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&sslModel=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true spring.datasource.driver-class-name=org.mariadb.jdbc.Driver -spring.datasource.username=em_user_dev +spring.datasource.username=root spring.datasource.password=123456 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #ai @@ -51,6 +51,10 @@ data.user.download.path=user_download/ data.repo.prj.path=repo_project/ data.repo.upload.path=repo_upload/ data.repo.download.path=repo_download/ +# import path +data.import.prj.path=import_project/ +data.import.upload.path=import_upload/ +data.import.download.path=import_download/ prj.folder.max.length=6 # backupFiles tmp.file.store.hour=48 diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/UserOperationModuleEnum.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/UserOperationModuleEnum.java index f8b9266..ac29edc 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/UserOperationModuleEnum.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/UserOperationModuleEnum.java @@ -13,6 +13,8 @@ public enum UserOperationModuleEnum { REPO_PRJ_DATABASE("repo_prj_database", "库数据管理"), REPO_PRJ_SETTING("repo_prj_setting", "库数据层级定义"), + IMPORT_PFJ("import_pjr", "导入的工程数据"), + USER_PRJ("user_prj", "个人数据"), UNKNOWN("unknown", "未分组"), diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/RespPageVO.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/RespPageVO.java index ab83ad3..0876417 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/RespPageVO.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/RespPageVO.java @@ -19,6 +19,8 @@ public class RespPageVO implements Serializable { private ImportTableInfoVO importTableInfoVO; + private List importDirs; + public RespPageVO(long total, List records) { this.struct = false; this.total = total; @@ -29,4 +31,6 @@ public class RespPageVO implements Serializable { this.struct = true; this.importTableInfoVO = importTableInfoVO; } + + }