From 25ee4a5fa2b3902d783f2ccc072967bdcd497d7c Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 18 Dec 2024 08:55:48 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/controller/ProjectController.java | 49 ++++ .../manage/mapper/EdFileInfoMapper.java | 3 + .../manage/pojo/models/BaseModel.java | 35 +++ .../manage/pojo/models/EdFileInfo.java | 35 +-- .../manage/pojo/req/FolderResortDTO.java | 9 + .../manage/service/EdFileInfoService.java | 54 ++++ .../manage/service/FileSystemService.java | 18 ++ .../serviceimpl/EdFileInfoServiceImpl.java | 276 +++++++++++++++++- .../serviceimpl/FileSystemServiceImpl.java | 40 +++ .../service/serviceimpl/UserServiceImpl.java | 2 +- .../src/main/resources/application.properties | 36 +-- .../resources/sqlmapper/EdFileInfoMapper.xml | 10 + .../common/cons/ElectromagneticConstants.java | 2 + .../software/common/enums/EffectFlagEnum.java | 10 +- .../common/enums/EleDataSaveStatusEnum.java | 15 + .../common/enums/EleDataStatusEnum.java | 15 + .../common/enums/EleDataTypeEnum.java | 13 + .../common/exception/BizException.java | 17 ++ .../software/common/util/EleCommonUtil.java | 13 + 19 files changed, 598 insertions(+), 54 deletions(-) create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FolderResortDTO.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileSystemService.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileSystemServiceImpl.java create mode 100644 electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml create mode 100644 electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataSaveStatusEnum.java create mode 100644 electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataStatusEnum.java create mode 100644 electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataTypeEnum.java create mode 100644 electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/exception/BizException.java diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java index d2234f3..61e9537 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java @@ -1,9 +1,58 @@ package com.electromagnetic.industry.software.manage.controller; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; +import com.electromagnetic.industry.software.manage.service.EdFileInfoService; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.List; + + @RestController @RequestMapping("/data/ed/prj") public class ProjectController { + + @Resource + private EdFileInfoService edFileInfoService; + + @RequestMapping("create") + public ElectromagneticResult create(@RequestParam String prjName) { + return edFileInfoService.createNewPrj(prjName); + } + + @RequestMapping("delete") + public ElectromagneticResult delete(@RequestParam String prjId) { + return edFileInfoService.delete(prjId); + } + + @RequestMapping("modify") + public ElectromagneticResult modifyPrjName(@RequestParam String newPrjName, @RequestParam String prjId) { + return edFileInfoService.modifyPrjName(prjId, newPrjName); + } + + + @RequestMapping("queryAll") + public ElectromagneticResult queryAll() { + return edFileInfoService.queryAllPrjInfo(); + } + + + @RequestMapping("addFolder") + public ElectromagneticResult addFolder(@RequestParam String folderName, @RequestParam String parentId) { + return edFileInfoService.addFolder(parentId, folderName); + } + + @RequestMapping("folderResort") + public ElectromagneticResult folderResort(@RequestBody List folderResortDTOList) { + return edFileInfoService.folderResort(folderResortDTOList); + } + + @RequestMapping("publish") + public ElectromagneticResult publish(@RequestParam String prjId) { + return edFileInfoService.publish(prjId); + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java index 96477f3..39df6df 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java @@ -6,4 +6,7 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface EdFileInfoMapper extends BaseMapper { + + String maxPrjId(); + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java new file mode 100644 index 0000000..4e813b7 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java @@ -0,0 +1,35 @@ +package com.electromagnetic.industry.software.manage.pojo.models; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +@SuperBuilder +@Data +public class BaseModel { + /** + * 创建时间 + */ + @TableField(value = "created_time") + private Date createdTime; + + /** + * 创建人 + */ + @TableField(value = "created_by") + private String createdBy; + + /** + * 最后更新时间 + */ + @TableField(value = "update_time") + private Date updateTime; + + /** + * 最后更新人 + */ + @TableField(value = "updated_by") + private String updatedBy; +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java index 1b683d9..4770324 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java @@ -2,13 +2,14 @@ package com.electromagnetic.industry.software.manage.pojo.models; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; +import lombok.*; +import lombok.experimental.SuperBuilder; -import java.util.Date; - -@Data +@EqualsAndHashCode(callSuper = true) @TableName("ed_file_info") -public class EdFileInfo { +@SuperBuilder +@Data +public class EdFileInfo extends BaseModel { /** * 主键ID */ @@ -100,30 +101,6 @@ public class EdFileInfo { @TableField(value = "save_status") private Integer saveStatus; - /** - * 文件创建时间 - */ - @TableField(value = "created_time") - private Date createdTime; - - /** - * 文件创建人 - */ - @TableField(value = "created_by") - private String createdBy; - - /** - * 文件最后更新时间 - */ - @TableField(value = "update_time") - private Date updateTime; - - /** - * 文件最后更新人 - */ - @TableField(value = "updated_by") - private String updatedBy; - /** * 文件夹发布状态,0-未发布,1-已发布 */ diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FolderResortDTO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FolderResortDTO.java new file mode 100644 index 0000000..ce6aa1a --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FolderResortDTO.java @@ -0,0 +1,9 @@ +package com.electromagnetic.industry.software.manage.pojo.req; + +import lombok.Data; + +@Data +public class FolderResortDTO { + private String id; + private int sort; +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java index caad7d0..845bb01 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java @@ -1,4 +1,58 @@ package com.electromagnetic.industry.software.manage.service; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; + +import java.util.List; + public interface EdFileInfoService { + + /** + * 创建一个新的工程 + * @param prjName 新的工程名 + */ + ElectromagneticResult createNewPrj(String prjName); + + /** + * 修改项目名称 + * @param prjId + * @param newPrjName + * @return + */ + ElectromagneticResult modifyPrjName(String prjId, String newPrjName); + + /** + * 删除一个项目,做逻辑删除 + * @param prjId + * @return + */ + ElectromagneticResult delete(String prjId); + + /** + * 添加子集 + * @param parentId + * @param folderName + * @return + */ + ElectromagneticResult addFolder(String parentId, String folderName); + + /** + * 查询所有项目 + * @return + */ + ElectromagneticResult queryAllPrjInfo(); + + /** + * 子集拖拽重排序 + * @param folderResortDTOList + * @return + */ + ElectromagneticResult folderResort(List folderResortDTOList); + + /** + * 项目发布 + * @param prjId + * @return + */ + ElectromagneticResult publish(String prjId); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileSystemService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileSystemService.java new file mode 100644 index 0000000..9b2286d --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileSystemService.java @@ -0,0 +1,18 @@ +package com.electromagnetic.industry.software.manage.service; + +import java.io.InputStream; + +public interface FileSystemService { + + void createDirectory(String path); + + void copyFile(String source, String destination); + + void moveFile(String source, String destination); + + void save(InputStream inputStream, String destination); + + void renameFile(String sourcePath, String oldName, String newName); + + boolean checkFolderExist(String newPath); +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index dec837c..1ae1aeb 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -1,8 +1,282 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.text.StrFormatter; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +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.EleDataSaveStatusEnum; +import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum; +import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.EleCommonUtil; +import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; +import com.electromagnetic.industry.software.common.util.IdWorker; +import com.electromagnetic.industry.software.common.util.UserThreadLocal; +import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; +import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; import com.electromagnetic.industry.software.manage.service.EdFileInfoService; +import com.electromagnetic.industry.software.manage.service.FileSystemService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.io.File; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Slf4j @Service -public class EdFileInfoServiceImpl implements EdFileInfoService { +public class EdFileInfoServiceImpl extends ServiceImpl implements EdFileInfoService { + + @Resource + private Environment environment; + + @Resource + private FileSystemService fileSystemService; + + @Value("${prj.folder.max.length}") + private int prjFolderMaxLength; + + private String eleDataPath; + + @PostConstruct + public void init() { + String osName = System.getProperty("os.name").toLowerCase(); + eleDataPath = osName.startsWith("win") ? environment.getProperty("data.windows.path") : environment.getProperty("data.linux.path"); + } + + + /** + * 创建一个新的工程 + * @param prjName 新的工程名 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult createNewPrj(String prjName) { + // 首先检查工程是否存在 + // TODO 一个项目如果被废除了,然后又新建了一个同名工程,这种情况怎么处理,需要产品确认。当前这里先按照同名如果存在则抛出异常处理。 + LambdaQueryWrapper existPrjWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getParentId, "") + .isNull(EdFileInfo::getParentId); + + List existEdFileInfos = this.baseMapper.selectList(existPrjWrapper); + if (CollUtil.isNotEmpty(existEdFileInfos)) { + log.info("{} 已经存在", prjName); + ElectromagneticResultUtil.fail("-1", "该项目名称已经存在。"); + } + + try { + // 保存信息到MySQL + int id = Integer.parseInt(this.baseMapper.maxPrjId()); + Date now = new Date(); + String currentUserId = UserThreadLocal.getUserId(); + String newPrjId = String.valueOf(id + 1); + EdFileInfo fileInfo = EdFileInfo.builder() + .id(newPrjId) + .fileId(IdWorker.getSnowFlakeIdString()) + .fileName(prjName) + .fileVersion(100) + .fileTime(EleCommonUtil.getNowTimeStr()) + .dataType(EleDataTypeEnum.FOLDER.code) + .dataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) + .effectFlag(EffectFlagEnum.EFFECT.code) + .saveStatus(EleDataSaveStatusEnum.SUCCESS.code) + .filePath(newPrjId) + .sort(1) + .createdTime(now) + .updateTime(now) + .createdBy(currentUserId) + .updatedBy(currentUserId) + .build(); + this.save(fileInfo); + // 保存到文件系统 + fileSystemService.createDirectory(eleDataPath); + } catch (Exception e) { + log.error("文件创建失败,具体为--->{}", e.getMessage(), e); + return ElectromagneticResultUtil.fail("-1", e.getMessage()); + } + return ElectromagneticResultUtil.success(true); + } + + /** + * 修改项目名称 + * @param prjId + * @param newPrjName + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult modifyPrjName(String prjId, String newPrjName) { + try { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class).eq(EdFileInfo::getId, prjId); + EdFileInfo fileInfo = this.baseMapper.selectOne(queryWrapper); + String oldPrjName = fileInfo.getFileName(); + String newPath = eleDataPath + File.separator + newPrjName; + if (fileSystemService.checkFolderExist(newPath)) { + String info = StrFormatter.format("工程名{}已经存在", newPrjName); + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + fileInfo.setFileName(newPrjName); + this.baseMapper.updateById(fileInfo); + fileSystemService.renameFile(eleDataPath, oldPrjName, newPrjName); + } catch (Exception e) { + log.error("修改工程名异常--->{},{}", newPrjName, e.getMessage(), e); + throw new RuntimeException(e); + } + return ElectromagneticResultUtil.success(true); + } + + /** + * 删除一个项目,做逻辑删除 + * + * @param prjId + * @return + */ + @Override + public ElectromagneticResult delete(String prjId) { + + List ids = new ArrayList<>(); + ids.add(prjId); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId) + .likeRight(EdFileInfo::getFilePath, prjId + ElectromagneticConstants.MYSQL_FILE_PATH_SPLIT); + List edFileInfos = this.baseMapper.selectList(queryWrapper); + edFileInfos.forEach(e -> ids.add(e.getId())); + Wrappers.lambdaUpdate(EdFileInfo.class).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code).in(EdFileInfo::getId, ids); + return ElectromagneticResultUtil.success(true); + } + + /** + * 添加子集 + * + * @param parentId + * @param folderName + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult addFolder(String parentId, String folderName) { + + // 首先判断判断当前深度是否已经达到6层 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFilePath) + .eq(EdFileInfo::getId, parentId); + EdFileInfo edFileInfo = this.baseMapper.selectOne(queryWrapper); + String currentPath = edFileInfo.getFilePath(); + List paths = CollUtil.newArrayList(edFileInfo.getFilePath().split(ElectromagneticConstants.MYSQL_FILE_PATH_SPLIT)); + if (paths.size() >= prjFolderMaxLength) { + String info = "当前子集已达到最大层级,禁止创建子集。"; + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + // 判断文件夹名称是否存在 + List edFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFileName) + .eq(EdFileInfo::getParentId, parentId)); + List names = edFileInfos.stream().map(EdFileInfo::getFileName).collect(Collectors.toList()); + if (names.contains(folderName)) { + String info = "该子集名称已存在"; + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + +// int id = Integer.parseInt(this.baseMapper.maxPrjId()); +// Date now = new Date(); +// String currentUserId = UserThreadLocal.getUserId(); +// String newPrjId = String.valueOf(id + 1); +// EdFileInfo fileInfo = EdFileInfo.builder() +// .id(newPrjId) +// .fileId(IdWorker.getSnowFlakeIdString()) +// .fileName(folderName) +// .fileVersion(100) +// .fileTime(EleCommonUtil.getNowTimeStr()) +// .dataType(EleDataTypeEnum.FOLDER.code) +// .dataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) +// .effectFlag(EffectFlagEnum.EFFECT.code) +// .saveStatus(EleDataSaveStatusEnum.SUCCESS.code) +// .filePath(newPrjId) +// .sort(1) +// .createdTime(now) +// .updateTime(now) +// .createdBy(currentUserId) +// .updatedBy(currentUserId) +// .build(); +// this.save(fileInfo); +// // 保存到文件系统 +// fileSystemService.createDirectory(eleDataPath); + return null; + } + + /** + * 查询所有项目 + * + * @return + */ + @Override + public ElectromagneticResult queryAllPrjInfo() { + return null; + } + + /** + * 子集拖拽重排序 + * + * @param folderResortDTOList + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ElectromagneticResult folderResort(List folderResortDTOList) { + + for (FolderResortDTO folderResortDTO : folderResortDTOList) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getSort, folderResortDTO.getSort()) + .eq(EdFileInfo::getId, folderResortDTO.getId()); + this.update(updateWrapper); + } + return ElectromagneticResultUtil.success(true); + } + + /** + * 项目发布 + * + * @param prjId + * @return + */ + @Override + public ElectromagneticResult publish(String prjId) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) + .likeRight(EdFileInfo::getFilePath, prjId); + this.update(updateWrapper); + return ElectromagneticResultUtil.success(true); + } + + + private String getPath(List ids) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFileName) + .in(EdFileInfo::getId, ids); + List edFileInfos = this.baseMapper.selectList(queryWrapper); + Map map = edFileInfos.stream().collect(Collectors.toMap(EdFileInfo::getId, EdFileInfo::getFileName)); + StringBuilder path = new StringBuilder(); + for (String id : ids) { + String tmp = map.get(id) + File.separator; + path.append(tmp); + } + return path.toString(); + } + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileSystemServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileSystemServiceImpl.java new file mode 100644 index 0000000..eecad6f --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileSystemServiceImpl.java @@ -0,0 +1,40 @@ +package com.electromagnetic.industry.software.manage.service.serviceimpl; + +import cn.hutool.core.io.FileUtil; +import com.electromagnetic.industry.software.manage.service.FileSystemService; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.io.InputStream; + +@Service +public class FileSystemServiceImpl implements FileSystemService { + + @Override + public void createDirectory(String path) { + FileUtil.mkdir(path); + } + + @Override + public void copyFile(String source, String destination) { + } + + @Override + public void moveFile(String source, String destination) { + } + + @Override + public void save(InputStream inputStream, String destination) { + } + + @Override + public void renameFile(String sourcePath, String oldName, String newName) { + File sourceFile = new File(sourcePath + File.separator + oldName); + FileUtil.rename(sourceFile, newName, true); + } + + @Override + public boolean checkFolderExist(String newPath) { + return FileUtil.exist(newPath); + } +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java index 1ab48dd..55c2236 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java @@ -77,7 +77,7 @@ public class UserServiceImpl implements UserService { public Boolean checkUserValid(User user) { if (user == null || user.getIsPublished() == PublishEnum.UNPUBLISHED.getCode() - || user.getEffectFlag() == EffectFlagEnum.EFFECT_FLAG_0.getCode() + || user.getEffectFlag() == EffectFlagEnum.NOT_EFFECTIVE.code ) { return false; } else if (user.getInternshipEndDate() != null && user.getInternshipEndDate().before(now())) { diff --git a/electrmangnetic/src/main/resources/application.properties b/electrmangnetic/src/main/resources/application.properties index d2a6a4f..2081a39 100644 --- a/electrmangnetic/src/main/resources/application.properties +++ b/electrmangnetic/src/main/resources/application.properties @@ -22,20 +22,22 @@ mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl pagehelper.helperDialect=mysql pagehelper.reasonable=false server.port=8888 -#windows文件存储目录 -data.windows.path=E:/comacFileStorage/ -#文件缓存路径 -data.file.cache.dir=/szsd/cache/ -#文件存储路径 -data.file.storage.dir=/szsd/fileStorage/ -#上传文件时文件的缓存文件夹名称 -data.upload.cache.dir=upload -#导出数据时文件的缓存文件夹名称 -data.export.cache.dir=export -#导入数据时文件的缓存文件夹名称 -data.import.cache.dir=import -file.encode.passwd=adknfhkj87654knd -#数据类型中的文件类型为file -data.type.file=file -#数据类型中的文件夹类型为folder -data.type.folder=folder +#windows文件存储目录,用于测试 +data.windows.path=E:/tmp/eleData/ +data.linux.path=/szsd/data/eleData +prj.folder.max.length=6 +##文件缓存路径 +#data.file.cache.dir=/szsd/cache/ +##文件存储路径 +#data.file.storage.dir=/szsd/fileStorage/ +##上传文件时文件的缓存文件夹名称 +#data.upload.cache.dir=upload +##导出数据时文件的缓存文件夹名称 +#data.export.cache.dir=export +##导入数据时文件的缓存文件夹名称 +#data.import.cache.dir=import +#file.encode.passwd=adknfhkj87654knd +##数据类型中的文件类型为file +#data.type.file=file +##数据类型中的文件夹类型为folder +#data.type.folder=folder diff --git a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml new file mode 100644 index 0000000..09989d8 --- /dev/null +++ b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/cons/ElectromagneticConstants.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/cons/ElectromagneticConstants.java index 2c560ae..13abaed 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/cons/ElectromagneticConstants.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/cons/ElectromagneticConstants.java @@ -4,4 +4,6 @@ public interface ElectromagneticConstants { String EXPORT_FILE_SUFFIX = ".colib"; + String MYSQL_FILE_PATH_SPLIT = "_"; + } diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EffectFlagEnum.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EffectFlagEnum.java index 33a1285..f59a3f4 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EffectFlagEnum.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EffectFlagEnum.java @@ -10,18 +10,16 @@ import lombok.Getter; * @version $Id: EffectFlagEnum.java, v 0.1 2024-08-01 18:18 */ @AllArgsConstructor -@Getter public enum EffectFlagEnum { /** * 有效 */ - EFFECT_FLAG_1(1, "有效"), + EFFECT(1, "有效"), /** * 无效 */ - EFFECT_FLAG_0(0, "无效"), - ; - private Integer code; - private String desc; + NOT_EFFECTIVE(0, "无效"); + public Integer code; + public String desc; } \ No newline at end of file diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataSaveStatusEnum.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataSaveStatusEnum.java new file mode 100644 index 0000000..b5c6c49 --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataSaveStatusEnum.java @@ -0,0 +1,15 @@ +package com.electromagnetic.industry.software.common.enums; + +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum EleDataSaveStatusEnum { + + UPLOADING(0, "上传中"), + SUCCESS(1, "上传成功"), + FAIL(2, "上传失败"); + + public int code; + public String des; + +} diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataStatusEnum.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataStatusEnum.java new file mode 100644 index 0000000..ac43024 --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataStatusEnum.java @@ -0,0 +1,15 @@ +package com.electromagnetic.industry.software.common.enums; + +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum EleDataStatusEnum { + + NOT_PUBLISHED(0, "未发布"), + PUBLISHED(1, "已发布"), + OCCUPY(2, "占用"); + + public int code; + public String desc; + +} diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataTypeEnum.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataTypeEnum.java new file mode 100644 index 0000000..b65c0e9 --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/EleDataTypeEnum.java @@ -0,0 +1,13 @@ +package com.electromagnetic.industry.software.common.enums; + +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum EleDataTypeEnum { + + FILE(0, "文件夹"), + FOLDER(1, "普通文件"); + + public int code; + public String desc; +} diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/exception/BizException.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/exception/BizException.java new file mode 100644 index 0000000..ef5f2a6 --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/exception/BizException.java @@ -0,0 +1,17 @@ +package com.electromagnetic.industry.software.common.exception; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BizException extends RuntimeException { + + private int code; + private String msg; + +} diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleCommonUtil.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleCommonUtil.java index 6795ccb..bfd381c 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleCommonUtil.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleCommonUtil.java @@ -1,5 +1,7 @@ package com.electromagnetic.industry.software.common.util; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.regex.Pattern; public final class EleCommonUtil { @@ -7,6 +9,8 @@ public final class EleCommonUtil { // 正则表达式模式,匹配中文字符、下划线、连字符、加号、数字和英文字符 private static final String PATTERN = "^[\\u4e00-\\u9fa5a-zA-Z0-9._\\-+]+$"; + private static final String TIME_FORMAT1 = "yyMMddHHmmssSSS"; + // 编译正则表达式 private static final Pattern pattern = Pattern.compile(PATTERN); @@ -37,4 +41,13 @@ public final class EleCommonUtil { return pattern.matcher(fileFullName).matches(); } + public static String getNowTimeStr() { + // 获取当前时间 + LocalDateTime now = LocalDateTime.now(); + // 创建日期时间格式化器 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(TIME_FORMAT1); + // 格式化当前时间 + return now.format(formatter); + } + } From 8cb8c4c834c8950895853b3a8128e9c4f943d9af Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 18 Dec 2024 09:36:05 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E9=87=8D=E6=96=B0=E6=95=B4=E7=90=86?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E7=9B=B8=E5=85=B3=E4=BE=9D=E8=B5=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electrmangnetic/pom.xml | 49 ---- .../manage/mapper/RolePermissionMapper.java | 3 +- .../manage/mapper/UserRoleMapper.java | 3 +- .../manage/pojo/models/BaseModel.java | 4 +- .../manage/pojo/models/EdFileInfo.java | 4 +- .../serviceimpl/EDDataServiceImpl.java | 20 +- .../serviceimpl/EdFileInfoServiceImpl.java | 34 +-- .../src/main/resources/application.properties | 25 +- .../src/main/resources/log4j.properties | 5 - .../src/main/resources/log4j2-spring-prod.xml | 206 ----------------- .../src/main/resources/log4j2-spring.xml | 218 ------------------ electromagnetic-common/pom.xml | 10 + .../industry/software/common/util/EleLog.java | 9 + 13 files changed, 56 insertions(+), 534 deletions(-) delete mode 100644 electrmangnetic/src/main/resources/log4j.properties delete mode 100644 electrmangnetic/src/main/resources/log4j2-spring-prod.xml delete mode 100644 electrmangnetic/src/main/resources/log4j2-spring.xml create mode 100644 electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java diff --git a/electrmangnetic/pom.xml b/electrmangnetic/pom.xml index f255d8a..0eae279 100644 --- a/electrmangnetic/pom.xml +++ b/electrmangnetic/pom.xml @@ -23,26 +23,6 @@ org.springframework.boot spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter - - - ch.qos.logback - logback-classic - - - org.slf4j - slf4j-log4j12 - - - org.apache.logging.log4j - log4j-to-slf4j - - - - cn.hutool hutool-all @@ -93,35 +73,6 @@ druid 1.1.10 - - - org.apache.logging.log4j - log4j-api - 2.11.2 - - - org.apache.logging.log4j - log4j-core - 2.11.2 - - - org.apache.logging.log4j - log4j-jcl - 2.11.2 - - - - com.lmax - disruptor - 3.4.2 - - - - - org.apache.logging.log4j - log4j-slf4j-impl - 2.11.2 - org.springframework.boot spring-boot-starter-test diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java index 78575b2..e98ab0c 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java @@ -2,7 +2,8 @@ package com.electromagnetic.industry.software.manage.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.electromagnetic.industry.software.manage.pojo.models.RolePermission; -import org.mapstruct.Mapper; +import org.apache.ibatis.annotations.Mapper; + @Mapper public interface RolePermissionMapper extends BaseMapper { diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserRoleMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserRoleMapper.java index 84e69c7..a8c2e58 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserRoleMapper.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/UserRoleMapper.java @@ -2,7 +2,8 @@ package com.electromagnetic.industry.software.manage.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.electromagnetic.industry.software.manage.pojo.models.UserRole; -import org.mapstruct.Mapper; +import org.apache.ibatis.annotations.Mapper; + @Mapper public interface UserRoleMapper extends BaseMapper { diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java index 4e813b7..8ec428b 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/BaseModel.java @@ -2,11 +2,11 @@ package com.electromagnetic.industry.software.manage.pojo.models; import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; -import lombok.experimental.SuperBuilder; +import lombok.experimental.Accessors; import java.util.Date; -@SuperBuilder +@Accessors(chain = true) @Data public class BaseModel { /** diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java index 4770324..bdd7fc1 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java @@ -3,11 +3,11 @@ package com.electromagnetic.industry.software.manage.pojo.models; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; -import lombok.experimental.SuperBuilder; +import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = true) @TableName("ed_file_info") -@SuperBuilder +@Accessors(chain = true) @Data public class EdFileInfo extends BaseModel { /** diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EDDataServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EDDataServiceImpl.java index c07c831..f472147 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EDDataServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EDDataServiceImpl.java @@ -63,25 +63,25 @@ public class EDDataServiceImpl implements EDDataService { private EDDataMapper edDataMapper; @Resource private CategoryMapper categoryMapper; - @Value("${data.windows.path}") +// @Value("${data.windows.path}") private String uploadFilePath; - @Value("${data.file.storage.dir}") +// @Value("${data.file.storage.dir}") private String fileStorageDir; - @Value("${data.import.cache.dir}") +// @Value("${data.import.cache.dir}") private String importCacheDir; - @Value("${file.encode.passwd}") +// @Value("${file.encode.passwd}") private String encodePasswd; - @Value("${data.type.folder}") +// @Value("${data.type.folder}") private String dataTypeFolder; - @Value("${data.windows.path}") +// @Value("${data.windows.path}") private String windowsDir; - @Value("${data.file.cache.dir}") +// @Value("${data.file.cache.dir}") private String fileCacheDir; - @Value("${data.upload.cache.dir}") +// @Value("${data.upload.cache.dir}") private String uploadCacheDir; - @Value("${data.export.cache.dir}") +// @Value("${data.export.cache.dir}") private String exportCacheDir; - @Value("${data.type.file}") +// @Value("${data.type.file}") private String dataTypeFile; @Override diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 1ae1aeb..9000c6a 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -83,23 +83,23 @@ public class EdFileInfoServiceImpl extends ServiceImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/electrmangnetic/src/main/resources/log4j2-spring.xml b/electrmangnetic/src/main/resources/log4j2-spring.xml deleted file mode 100644 index 698bf69..0000000 --- a/electrmangnetic/src/main/resources/log4j2-spring.xml +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/electromagnetic-common/pom.xml b/electromagnetic-common/pom.xml index 58d52ab..68972c7 100644 --- a/electromagnetic-common/pom.xml +++ b/electromagnetic-common/pom.xml @@ -39,6 +39,16 @@ hutool-all 5.8.22 + + ch.qos.logback + logback-classic + 1.2.3 + + + ch.qos.logback + logback-core + 1.2.3 + \ No newline at end of file diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java new file mode 100644 index 0000000..7f6acf4 --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java @@ -0,0 +1,9 @@ +package com.electromagnetic.industry.software.common.util; + +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Setter +public class EleLog { +} From 7f50349104f5395368996d763d865f596559e4dc Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 18 Dec 2024 09:42:36 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=95=B4=E7=90=86=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/EdFileInfoServiceImpl.java | 17 +++++----- .../industry/software/common/util/EleLog.java | 31 ++++++++++++++++--- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 9000c6a..a3c85ed 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -12,10 +12,7 @@ import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum; import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum; import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; -import com.electromagnetic.industry.software.common.util.EleCommonUtil; -import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; -import com.electromagnetic.industry.software.common.util.IdWorker; -import com.electromagnetic.industry.software.common.util.UserThreadLocal; +import com.electromagnetic.industry.software.common.util.*; import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; @@ -36,10 +33,11 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -@Slf4j @Service public class EdFileInfoServiceImpl extends ServiceImpl implements EdFileInfoService { + private EleLog log = new EleLog(EdFileInfoServiceImpl.class); + @Resource private Environment environment; @@ -73,7 +71,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl existEdFileInfos = this.baseMapper.selectList(existPrjWrapper); if (CollUtil.isNotEmpty(existEdFileInfos)) { - log.info("{} 已经存在", prjName); + String info = StrFormatter.format("{} 已经存在", prjName); + log.info(info); ElectromagneticResultUtil.fail("-1", "该项目名称已经存在。"); } @@ -104,7 +103,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl{}", e.getMessage(), e); + String info = StrFormatter.format("文件创建失败,具体为--->{}", e.getMessage()); + log.error(info, e); return ElectromagneticResultUtil.fail("-1", e.getMessage()); } return ElectromagneticResultUtil.success(true); @@ -133,7 +133,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl{},{}", newPrjName, e.getMessage(), e); + String info = StrFormatter.format("修改工程名异常--->{},{}", newPrjName, e.getMessage()); + log.error(info, e); throw new RuntimeException(e); } return ElectromagneticResultUtil.success(true); diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java index 7f6acf4..4d476f3 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/EleLog.java @@ -1,9 +1,32 @@ package com.electromagnetic.industry.software.common.util; -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -@Slf4j -@Setter public class EleLog { + + private Logger logger; + + public EleLog(Class clazz) { + this.logger = LoggerFactory.getLogger(clazz); + } + + public void info(String msg) { + logger.info(msg); + } + + public void debug(String msg) { + logger.debug(msg); + } + + public void warn(String msg) { + logger.warn(msg); + } + public void error(String msg) { + logger.error(msg); + } + + public void error(String msg, Throwable e) { + logger.error(msg, e); + } } From e76449212e0f2c38d9d4323747e00091c67ace5e Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 18 Dec 2024 15:34:18 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=BC=80=E5=8F=91=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=B1=82=E7=BA=A7=E5=AE=9A=E4=B9=89=E7=9B=B8=E5=85=B3=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E8=BF=98=E6=B2=A1=E8=87=AA=E6=B5=8B?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/controller/EDDataController.java | 2 +- .../manage/controller/ProjectController.java | 16 +- .../manage/mapper/EdFileInfoMapper.java | 4 + .../manage/pojo/models/EdFileInfo.java | 2 + .../software/manage/pojo/resp/ProjectVO.java | 17 ++ .../manage/service/EdFileInfoService.java | 23 ++ .../serviceimpl/EdFileInfoServiceImpl.java | 262 +++++++++++++++--- .../resources/sqlmapper/EdFileInfoMapper.xml | 7 + 8 files changed, 300 insertions(+), 33 deletions(-) create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/ProjectVO.java diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EDDataController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EDDataController.java index c147180..96c1a9a 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EDDataController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EDDataController.java @@ -15,7 +15,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Date; -@RequestMapping("/data/ed/file") +@RequestMapping("/data1/ed/file") @RestController public class EDDataController { diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java index 61e9537..9dcab0e 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java @@ -40,12 +40,21 @@ public class ProjectController { return edFileInfoService.queryAllPrjInfo(); } - @RequestMapping("addFolder") public ElectromagneticResult addFolder(@RequestParam String folderName, @RequestParam String parentId) { return edFileInfoService.addFolder(parentId, folderName); } + @RequestMapping("modifyFolder") + public ElectromagneticResult modifyFolder(@RequestParam String newFolderName, @RequestParam String id) { + return edFileInfoService.modifyFolder(id, newFolderName); + } + + @RequestMapping("deleteFolder") + public ElectromagneticResult deleteFolder(@RequestParam String fileId) { + return edFileInfoService.deleteFolder(fileId); + } + @RequestMapping("folderResort") public ElectromagneticResult folderResort(@RequestBody List folderResortDTOList) { return edFileInfoService.folderResort(folderResortDTOList); @@ -55,4 +64,9 @@ public class ProjectController { public ElectromagneticResult publish(@RequestParam String prjId) { return edFileInfoService.publish(prjId); } + + @RequestMapping("follow") + public ElectromagneticResult follow(@RequestParam String sourceId, @RequestParam String targetId) { + return edFileInfoService.follow(sourceId, targetId); + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java index 39df6df..68d5fec 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileInfoMapper.java @@ -4,9 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface EdFileInfoMapper extends BaseMapper { String maxPrjId(); + List selectAllAdminFolder(String prjId); + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java index bdd7fc1..017ad7b 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java @@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; import lombok.experimental.Accessors; +import lombok.experimental.FieldNameConstants; @EqualsAndHashCode(callSuper = true) @TableName("ed_file_info") @Accessors(chain = true) @Data +@FieldNameConstants public class EdFileInfo extends BaseModel { /** * 主键ID diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/ProjectVO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/ProjectVO.java new file mode 100644 index 0000000..45c3b26 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/ProjectVO.java @@ -0,0 +1,17 @@ +package com.electromagnetic.industry.software.manage.pojo.resp; + +import lombok.Data; + +import java.util.List; + +@Data +public class ProjectVO { + + private String id; + private String fileName; + private String parentId; + private int sort; + + private List children; + +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java index 845bb01..8d7034c 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java @@ -55,4 +55,27 @@ public interface EdFileInfoService { * @return */ ElectromagneticResult publish(String prjId); + + /** + * 删除子集 + * @param fileId + * @return + */ + ElectromagneticResult deleteFolder(String fileId); + + /** + * 层级沿用 + * @param sourceId + * @param targetId + * @return + */ + ElectromagneticResult follow(String sourceId, String targetId); + + /** + * 修改子集名称 + * @param id + * @param newFolderName + * @return + */ + ElectromagneticResult modifyFolder(String id, String newFolderName); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index a3c85ed..6644afc 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -1,12 +1,18 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.lang.tree.TreeNodeConfig; +import cn.hutool.core.lang.tree.TreeUtil; import cn.hutool.core.text.StrFormatter; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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.EleDataSaveStatusEnum; import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum; @@ -16,9 +22,9 @@ import com.electromagnetic.industry.software.common.util.*; import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; +import com.electromagnetic.industry.software.manage.pojo.resp.ProjectVO; import com.electromagnetic.industry.software.manage.service.EdFileInfoService; import com.electromagnetic.industry.software.manage.service.FileSystemService; -import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; @@ -33,6 +39,8 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.*; + @Service public class EdFileInfoServiceImpl extends ServiceImpl implements EdFileInfoService { @@ -63,6 +71,14 @@ public class EdFileInfoServiceImpl extends ServiceImpl createNewPrj(String prjName) { + + Assert.isTrue(EleCommonUtil.isFileNameValid(prjName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。"); + if (!EleCommonUtil.isFileNameValid(prjName)) { + String info = StrFormatter.format("工程名称{}不符合要求", prjName); + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } + // 首先检查工程是否存在 // TODO 一个项目如果被废除了,然后又新建了一个同名工程,这种情况怎么处理,需要产品确认。当前这里先按照同名如果存在则抛出异常处理。 LambdaQueryWrapper existPrjWrapper = Wrappers.lambdaQuery(EdFileInfo.class) @@ -85,7 +101,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo::getId) - .likeRight(EdFileInfo::getFilePath, prjId + ElectromagneticConstants.MYSQL_FILE_PATH_SPLIT); + .likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT); List edFileInfos = this.baseMapper.selectList(queryWrapper); edFileInfos.forEach(e -> ids.add(e.getId())); Wrappers.lambdaUpdate(EdFileInfo.class).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code).in(EdFileInfo::getId, ids); @@ -171,18 +187,27 @@ public class EdFileInfoServiceImpl extends ServiceImpl addFolder(String parentId, String folderName) { + // 验证名称是否合法 + Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。"); + + if (!EleCommonUtil.isFileNameValid(folderName)) { + String info = StrFormatter.format("子集名称{}不符合要求", folderName); + log.error(info); + return ElectromagneticResultUtil.fail("-1", info); + } // 首先判断判断当前深度是否已经达到6层 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo::getId, EdFileInfo::getFilePath) .eq(EdFileInfo::getId, parentId); EdFileInfo edFileInfo = this.baseMapper.selectOne(queryWrapper); String currentPath = edFileInfo.getFilePath(); - List paths = CollUtil.newArrayList(edFileInfo.getFilePath().split(ElectromagneticConstants.MYSQL_FILE_PATH_SPLIT)); + List paths = CollUtil.newArrayList(edFileInfo.getFilePath().split(MYSQL_FILE_PATH_SPLIT)); if (paths.size() >= prjFolderMaxLength) { String info = "当前子集已达到最大层级,禁止创建子集。"; log.error(info); return ElectromagneticResultUtil.fail("-1", info); } + // 判断文件夹名称是否存在 List edFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo::getId, EdFileInfo::getFileName) @@ -194,31 +219,32 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryAllPrjInfo() { - return null; + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId) + .eq(EdFileInfo::getParentId, 0) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code); + List ids = this.baseMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList()); + + List projectVOS = new ArrayList<>(); + + for (String id : ids) { + LambdaQueryWrapper queryWrapper1 = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getParentId, EdFileInfo::getSort) + .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id + MYSQL_FILE_PATH_SPLIT); + List edFileInfos = this.baseMapper.selectList(queryWrapper1); + // 转换为树 + TreeNodeConfig config = new TreeNodeConfig(); + config.setIdKey(EdFileInfo.Fields.id); + config.setParentIdKey(EdFileInfo.Fields.parentId); + config.setWeightKey(EdFileInfo.Fields.sort); + + List> trees = TreeUtil.build(edFileInfos, "0", config, ((obj, treeNode) -> { + treeNode.putExtra(EdFileInfo.Fields.id, obj.getId()); + treeNode.putExtra(EdFileInfo.Fields.parentId, obj.getParentId()); + treeNode.putExtra(EdFileInfo.Fields.sort, obj.getSort()); + treeNode.putExtra(EdFileInfo.Fields.fileName, obj.getFileName()); + })); + + String jsonStr = JSONUtil.toJsonStr(trees); + ProjectVO projectVO = JSONUtil.toList(jsonStr, ProjectVO.class).get(0); + projectVOS.add(projectVO); + } + return ElectromagneticResultUtil.success(projectVOS); } /** @@ -265,6 +322,149 @@ public class EdFileInfoServiceImpl extends ServiceImpl deleteFolder(String fileId) { + // TODO是否需要判断文件夹是否为空 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFilePath) + .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + fileId + MYSQL_FILE_PATH_SPLIT) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code); + List edFileInfos = this.baseMapper.selectList(queryWrapper); + List ids = edFileInfos.stream().map(EdFileInfo::getId).collect(Collectors.toList()); + ids.add(fileId); + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) + .set(EdFileInfo::getSort, -1) + .in(EdFileInfo::getId, ids); + this.baseMapper.update(null, updateWrapper); + + String[] tmpFileIds = edFileInfos.get(0).getFilePath().split(MYSQL_FILE_PATH_SPLIT); + String parentId = tmpFileIds[0]; + for (String tmpPathId : tmpFileIds) { + parentId = this.baseMapper.maxPrjId(); + if (fileId.equals(tmpPathId)) { + break; + } + } + // 同层级的resort + List edFileInfos1 = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getSort) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) + .eq(EdFileInfo::getParentId, parentId) + .orderByAsc(EdFileInfo::getSort)); + for (int i = 1; i <= edFileInfos1.size(); i++) { + String id = edFileInfos1.get(i).getId(); + this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getSort, i) + .eq(EdFileInfo::getId, id)); + } + return ElectromagneticResultUtil.success(true); + } + + /** + * 层级沿用 + * + * @param sourceId + * @param targetId + * @return + */ + @Override + public ElectromagneticResult follow(String sourceId, String targetId) { + + try { + String currentUserId = UserThreadLocal.getUserId(); + // 把source工程的层级结构copy到目标工程 + // 查找source的全部目录 + List sourceEdFileInfos = this.baseMapper.selectAllAdminFolder(sourceId); + List targetEdFileInfos = this.baseMapper.selectAllAdminFolder(targetId); + // 确定层级最大为prjFolderMaxLength层,现在逐层来处理。 + for (int i = 1; i <= prjFolderMaxLength; ++i) { + // 先查找source第i层下有那些子集 + final int count = i; + EdFileInfo targetParentFile = targetEdFileInfos.stream() + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1) + .collect(Collectors.toList()).get(0); + List sourceTmpEdFiles = sourceEdFileInfos.stream() + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) + .collect(Collectors.toList()); + List targetTmpEdFiles = targetEdFileInfos.stream() + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) + .collect(Collectors.toList()); + Map sourceFileNameMap= sourceTmpEdFiles.stream().collect(Collectors.toMap(EdFileInfo::getFileName, e -> e)); + List targetFileNames = targetTmpEdFiles.stream().map(EdFileInfo::getFileName).collect(Collectors.toList()); + for (EdFileInfo edFileInfo : sourceTmpEdFiles) { + String sourceFileName = edFileInfo.getFileName(); + if (!targetFileNames.contains(sourceFileName)) { + EdFileInfo sourceFile = sourceFileNameMap.get(sourceFileName); + EdFileInfo targetFile = new EdFileInfo(); + int maxFolderId = Integer.parseInt(this.baseMapper.maxPrjId()); + String newFolderId = String.valueOf(maxFolderId + 1); + Date now = new Date(); + targetFile.setId(newFolderId) + .setFileId(newFolderId) + .setFileName(sourceFile.getFileName()) + .setFileVersion(100) + .setParentId(targetParentFile.getParentId()) + .setFileTime(EleCommonUtil.getNowTimeStr()) + .setDataType(EleDataTypeEnum.FOLDER.code) + .setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) + .setEffectFlag(EffectFlagEnum.EFFECT.code) + .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) + .setFilePath(targetParentFile.getFilePath() + MYSQL_FILE_PATH_SPLIT + newFolderId) + .setSort(targetTmpEdFiles.size() + 1) + .setCreatedTime(now) + .setUpdateTime(now) + .setCreatedBy(currentUserId) + .setUpdatedBy(currentUserId); + this.save(targetFile); + String targetSysFilePath = getSysFilePathByDbPath(targetFile.getFilePath()) + File.separator + sourceFileName; + FileUtil.mkdir(targetSysFilePath); + targetEdFileInfos = this.baseMapper.selectAllAdminFolder(targetId); + } + } + } + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = StrFormatter.format("层级沿用失败"); + log.error(info, e); + return ElectromagneticResultUtil.fail("-1", info); + } + } + + /** + * 修改子集名称 + * + * @param id + * @param newFolderName + * @return + */ + @Override + public ElectromagneticResult modifyFolder(String id, String newFolderName) { + try { + EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getId, id)); + String sysFilePath = getSysFilePathByDbPath(fileInfo.getFilePath()); + this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getFileName, newFolderName)); + FileUtil.rename(new File(sysFilePath), newFolderName, true); + return ElectromagneticResultUtil.success(true); + } catch(Exception e) { + String info = StrFormatter.format("修改子集名称为{}失败", newFolderName); + log.error(info, e); + return ElectromagneticResultUtil.fail("-1", info); + } + } + + private String getSysFilePathByDbPath(String dbPath) { + ArrayList paths = CollUtil.newArrayList(dbPath.split(MYSQL_FILE_PATH_SPLIT)); + return getPath(paths); + } private String getPath(List ids) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) diff --git a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml index 09989d8..14bb52f 100644 --- a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml +++ b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml @@ -7,4 +7,11 @@ select max(id) from ed_file_info where length(id) = 6 and (parent_id is null or parent_id = "") + + + \ No newline at end of file From 1b4492e81265083f8666544e26b440e8594bf3e0 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 18 Dec 2024 16:03:05 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86=E7=9B=B8=E5=85=B3=E9=80=BB=E8=BE=91=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/common/GlobalExceptionHandler.java | 32 +++ .../manage/service/FileSystemService.java | 4 +- .../serviceimpl/EdFileInfoServiceImpl.java | 259 ++++++++++-------- .../serviceimpl/FileSystemServiceImpl.java | 5 + 4 files changed, 188 insertions(+), 112 deletions(-) create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/common/GlobalExceptionHandler.java diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/common/GlobalExceptionHandler.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/common/GlobalExceptionHandler.java new file mode 100644 index 0000000..35aa853 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/common/GlobalExceptionHandler.java @@ -0,0 +1,32 @@ +package com.electromagnetic.industry.software.manage.common; + +import com.electromagnetic.industry.software.common.exception.BizException; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(RuntimeException.class) + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + @ResponseBody + public ElectromagneticResult runTimeError(Throwable e) { + log.error(e.getMessage(), e); + return ElectromagneticResultUtil.fail("-1", e.getMessage()); + } + + @ExceptionHandler(BizException.class) + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + @ResponseBody + public ElectromagneticResult bizError(BizException e) { + log.error(e.getMessage(), e); + return ElectromagneticResultUtil.fail("-1", e.getMsg()); + } +} \ No newline at end of file diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileSystemService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileSystemService.java index 9b2286d..41cd016 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileSystemService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileSystemService.java @@ -12,7 +12,9 @@ public interface FileSystemService { void save(InputStream inputStream, String destination); - void renameFile(String sourcePath, String oldName, String newName); + void renameFile(String sourcePath, String newName); + + void renameFile(String sourcePath, String sourceName, String newName); boolean checkFolderExist(String newPath); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 6644afc..a65f93f 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -1,7 +1,6 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNodeConfig; @@ -17,6 +16,7 @@ import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum; import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum; import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; +import com.electromagnetic.industry.software.common.exception.BizException; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.util.*; import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; @@ -121,7 +121,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl{}", e.getMessage()); log.error(info, e); - return ElectromagneticResultUtil.fail("-1", e.getMessage()); + throw new BizException(-1, info); } return ElectromagneticResultUtil.success(true); } @@ -151,7 +151,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl{},{}", newPrjName, e.getMessage()); log.error(info, e); - throw new RuntimeException(e); + throw new BizException(-1, info); } return ElectromagneticResultUtil.success(true); } @@ -163,17 +163,23 @@ public class EdFileInfoServiceImpl extends ServiceImpl delete(String prjId) { - - List ids = new ArrayList<>(); - ids.add(prjId); - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId) - .likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT); - List edFileInfos = this.baseMapper.selectList(queryWrapper); - edFileInfos.forEach(e -> ids.add(e.getId())); - Wrappers.lambdaUpdate(EdFileInfo.class).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code).in(EdFileInfo::getId, ids); - return ElectromagneticResultUtil.success(true); + try { + List ids = new ArrayList<>(); + ids.add(prjId); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId) + .likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT); + List edFileInfos = this.baseMapper.selectList(queryWrapper); + edFileInfos.forEach(e -> ids.add(e.getId())); + Wrappers.lambdaUpdate(EdFileInfo.class).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code).in(EdFileInfo::getId, ids); + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "删除项目失败"; + log.error(info, e); + throw new BizException(-1, info); + } } /** @@ -219,32 +225,38 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryAllPrjInfo() { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId) - .eq(EdFileInfo::getParentId, 0) - .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code); - List ids = this.baseMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList()); + try { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId) + .eq(EdFileInfo::getParentId, 0) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code); + List ids = this.baseMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList()); - List projectVOS = new ArrayList<>(); + List projectVOS = new ArrayList<>(); - for (String id : ids) { - LambdaQueryWrapper queryWrapper1 = Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getParentId, EdFileInfo::getSort) - .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id + MYSQL_FILE_PATH_SPLIT); - List edFileInfos = this.baseMapper.selectList(queryWrapper1); - // 转换为树 - TreeNodeConfig config = new TreeNodeConfig(); - config.setIdKey(EdFileInfo.Fields.id); - config.setParentIdKey(EdFileInfo.Fields.parentId); - config.setWeightKey(EdFileInfo.Fields.sort); + for (String id : ids) { + LambdaQueryWrapper queryWrapper1 = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getParentId, EdFileInfo::getSort) + .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id + MYSQL_FILE_PATH_SPLIT); + List edFileInfos = this.baseMapper.selectList(queryWrapper1); + // 转换为树 + TreeNodeConfig config = new TreeNodeConfig(); + config.setIdKey(EdFileInfo.Fields.id); + config.setParentIdKey(EdFileInfo.Fields.parentId); + config.setWeightKey(EdFileInfo.Fields.sort); - List> trees = TreeUtil.build(edFileInfos, "0", config, ((obj, treeNode) -> { - treeNode.putExtra(EdFileInfo.Fields.id, obj.getId()); - treeNode.putExtra(EdFileInfo.Fields.parentId, obj.getParentId()); - treeNode.putExtra(EdFileInfo.Fields.sort, obj.getSort()); - treeNode.putExtra(EdFileInfo.Fields.fileName, obj.getFileName()); - })); + List> trees = TreeUtil.build(edFileInfos, "0", config, ((obj, treeNode) -> { + treeNode.putExtra(EdFileInfo.Fields.id, obj.getId()); + treeNode.putExtra(EdFileInfo.Fields.parentId, obj.getParentId()); + treeNode.putExtra(EdFileInfo.Fields.sort, obj.getSort()); + treeNode.putExtra(EdFileInfo.Fields.fileName, obj.getFileName()); + })); - String jsonStr = JSONUtil.toJsonStr(trees); - ProjectVO projectVO = JSONUtil.toList(jsonStr, ProjectVO.class).get(0); - projectVOS.add(projectVO); + String jsonStr = JSONUtil.toJsonStr(trees); + ProjectVO projectVO = JSONUtil.toList(jsonStr, ProjectVO.class).get(0); + projectVOS.add(projectVO); + } + return ElectromagneticResultUtil.success(projectVOS); + } catch (Exception e) { + String info = "查询项目失败"; + log.error(info, e); + throw new BizException(-1, info); } - return ElectromagneticResultUtil.success(projectVOS); } /** @@ -297,14 +315,19 @@ public class EdFileInfoServiceImpl extends ServiceImpl folderResort(List folderResortDTOList) { - - for (FolderResortDTO folderResortDTO : folderResortDTOList) { - LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) - .set(EdFileInfo::getSort, folderResortDTO.getSort()) - .eq(EdFileInfo::getId, folderResortDTO.getId()); - this.update(updateWrapper); + try { + for (FolderResortDTO folderResortDTO : folderResortDTOList) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getSort, folderResortDTO.getSort()) + .eq(EdFileInfo::getId, folderResortDTO.getId()); + this.update(updateWrapper); + } + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "子集重排序异常"; + log.error(info, e); + throw new BizException(-1, info); } - return ElectromagneticResultUtil.success(true); } /** @@ -314,12 +337,19 @@ public class EdFileInfoServiceImpl extends ServiceImpl publish(String prjId) { - LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) - .set(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) - .likeRight(EdFileInfo::getFilePath, prjId); - this.update(updateWrapper); - return ElectromagneticResultUtil.success(true); + try { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) + .likeRight(EdFileInfo::getFilePath, prjId); + this.update(updateWrapper); + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "项目发布异常"; + log.error(info, e); + throw new BizException(-1, info); + } } /** @@ -330,41 +360,48 @@ public class EdFileInfoServiceImpl extends ServiceImpl deleteFolder(String fileId) { - // TODO是否需要判断文件夹是否为空 - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId, EdFileInfo::getFilePath) - .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + fileId + MYSQL_FILE_PATH_SPLIT) - .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code); - List edFileInfos = this.baseMapper.selectList(queryWrapper); - List ids = edFileInfos.stream().map(EdFileInfo::getId).collect(Collectors.toList()); - ids.add(fileId); - LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) - .set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) - .set(EdFileInfo::getSort, -1) - .in(EdFileInfo::getId, ids); - this.baseMapper.update(null, updateWrapper); - String[] tmpFileIds = edFileInfos.get(0).getFilePath().split(MYSQL_FILE_PATH_SPLIT); - String parentId = tmpFileIds[0]; - for (String tmpPathId : tmpFileIds) { - parentId = this.baseMapper.maxPrjId(); - if (fileId.equals(tmpPathId)) { - break; + try { + // TODO是否需要判断文件夹是否为空 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getFilePath) + .like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + fileId + MYSQL_FILE_PATH_SPLIT) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code); + List edFileInfos = this.baseMapper.selectList(queryWrapper); + List ids = edFileInfos.stream().map(EdFileInfo::getId).collect(Collectors.toList()); + ids.add(fileId); + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) + .set(EdFileInfo::getSort, -1) + .in(EdFileInfo::getId, ids); + this.baseMapper.update(null, updateWrapper); + + String[] tmpFileIds = edFileInfos.get(0).getFilePath().split(MYSQL_FILE_PATH_SPLIT); + String parentId = tmpFileIds[0]; + for (String tmpPathId : tmpFileIds) { + parentId = this.baseMapper.maxPrjId(); + if (fileId.equals(tmpPathId)) { + break; + } } + // 同层级的resort + List edFileInfos1 = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) + .select(EdFileInfo::getId, EdFileInfo::getSort) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) + .eq(EdFileInfo::getParentId, parentId) + .orderByAsc(EdFileInfo::getSort)); + for (int i = 1; i <= edFileInfos1.size(); i++) { + String id = edFileInfos1.get(i).getId(); + this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) + .set(EdFileInfo::getSort, i) + .eq(EdFileInfo::getId, id)); + } + return ElectromagneticResultUtil.success(true); + } catch (Exception e) { + String info = "删除子集异常"; + log.error(info, e); + throw new BizException(-1, info); } - // 同层级的resort - List edFileInfos1 = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) - .select(EdFileInfo::getId, EdFileInfo::getSort) - .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) - .eq(EdFileInfo::getParentId, parentId) - .orderByAsc(EdFileInfo::getSort)); - for (int i = 1; i <= edFileInfos1.size(); i++) { - String id = edFileInfos1.get(i).getId(); - this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) - .set(EdFileInfo::getSort, i) - .eq(EdFileInfo::getId, id)); - } - return ElectromagneticResultUtil.success(true); } /** @@ -424,7 +461,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl