diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java index 8cd004c..7056ec1 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java @@ -1,10 +1,12 @@ package com.electromagnetic.industry.software.manage.config; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.electromagnetic.industry.software.common.util.UserThreadLocal; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.util.Date; +import java.util.Optional; @Component public class EdMetaObjectHandler implements MetaObjectHandler { @@ -26,8 +28,8 @@ public class EdMetaObjectHandler implements MetaObjectHandler { if (metaObject.hasGetter("updatedAt")) { this.strictInsertFill(metaObject, "updatedAt", Date.class, new Date()); } - if (metaObject.hasGetter("updatedTime")) { - this.strictInsertFill(metaObject, "updatedTime", Date.class, new Date()); + if (metaObject.hasGetter("createdBy")) { + this.strictUpdateFill(metaObject, "createdBy", String.class, Optional.of(UserThreadLocal.getUserId()).orElse("")); } } @@ -42,6 +44,9 @@ public class EdMetaObjectHandler implements MetaObjectHandler { if (metaObject.hasGetter("updatedTime")) { this.strictUpdateFill(metaObject, "updatedTime", Date.class, new Date()); } + if (metaObject.hasGetter("updatedBy")) { + this.strictUpdateFill(metaObject, "updatedTime", String.class, Optional.of(UserThreadLocal.getUserId()).orElse("")); + } } } 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 e2cf96c..918d6f2 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 @@ -1,5 +1,6 @@ package com.electromagnetic.industry.software.manage.pojo.models; +import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import lombok.experimental.Accessors; @@ -12,24 +13,24 @@ public class BaseModel { /** * 创建时间 */ - @TableField(value = "created_time") + @TableField(value = "created_time", fill = FieldFill.INSERT) private Date createdTime; /** * 创建人 */ - @TableField(value = "created_by") + @TableField(value = "created_by", fill = FieldFill.INSERT) private String createdBy; /** * 最后更新时间 */ - @TableField(value = "updated_time") + @TableField(value = "updated_time", fill = FieldFill.UPDATE) private Date updatedTime; /** * 最后更新人 */ - @TableField(value = "updated_by") + @TableField(value = "updated_by", fill = FieldFill.UPDATE) private String updatedBy; } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoVO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoVO.java index 432746b..377a2e4 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoVO.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoVO.java @@ -1,9 +1,11 @@ package com.electromagnetic.industry.software.manage.pojo.other; +import com.electromagnetic.industry.software.manage.pojo.resp.FileTagInfo; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; +import java.util.List; @Data public class FileInfoVO { @@ -43,4 +45,7 @@ public class FileInfoVO { private String fileCode; private String createdBy; + + private List labels; + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/FileTagInfo.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/FileTagInfo.java new file mode 100644 index 0000000..3d505cb --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/FileTagInfo.java @@ -0,0 +1,12 @@ +package com.electromagnetic.industry.software.manage.pojo.resp; + +import lombok.Data; + +@Data +public class FileTagInfo { + + private String tagId; + + private String tagName; + +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java index 5cb3161..b7bd8d6 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java @@ -188,8 +188,6 @@ public class CommonService { .eq(EdFileInfo::getParentId, parentId)); List names = edFileInfos.stream().map(EdFileInfo::getFileName).collect(Collectors.toList()); try { - Date now = new Date(); - String currentUserId = UserThreadLocal.getUserId(); String path = currentPath + MYSQL_FILE_PATH_SPLIT + folderId; EdFileInfo fileInfo = new EdFileInfo(); String nowTimeStr = EleCommonUtil.getNowTimeStr(); @@ -208,11 +206,7 @@ public class CommonService { .setFilePath(path) .setSort(names.size() + 1) .setFileNote(fileNote) - .setDataOwn(dataOwnCode) - .setCreatedTime(now) - .setUpdatedTime(now) - .setCreatedBy(currentUserId) - .setUpdatedBy(currentUserId); + .setDataOwn(dataOwnCode); edFileInfoMapper.insert(fileInfo); // 保存到文件系统 String targetFilePath = getEleDataPath(dataOwnCode) + File.separator + getDbPath(paths) + File.separator + folderName; @@ -297,8 +291,6 @@ public class CommonService { public ElectromagneticResult deleteFolder(String id, int dataOwnCode) { // 如果文件夹下存在文件(包括文件夹和已经逻辑删除的文件),则不允许删除。后面管理员选择会有物理删除文件夹和文件的功能,此时MySQL和文件系统则会进行物理删除该文件。 - Date now = new Date(); - String currentUserId = UserThreadLocal.getUserId(); EdFileInfo srcFileInfo = edFileInfoMapper.selectById(id); String srcPrjName = srcFileInfo.getFileName(); String srcFilePath = getFileSysPath(srcFileInfo.getFilePath(), dataOwnCode); @@ -320,8 +312,6 @@ public class CommonService { edFileInfoMapper.update(null, Wrappers.lambdaUpdate() .like(EdFileInfo::getFilePath, id) .set(EdFileInfo::getSort, -1) - .set(EdFileInfo::getUpdatedBy, currentUserId) - .set(EdFileInfo::getUpdatedTime, now) .set(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code)); // 层级文件夹重排序 List edFileInfos1 = edFileInfoMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) @@ -335,8 +325,6 @@ public class CommonService { String tmp = edFileInfos1.get(i).getId(); edFileInfoMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) .set(EdFileInfo::getSort, i + 1) - .set(EdFileInfo::getUpdatedBy, currentUserId) - .set(EdFileInfo::getUpdatedTime, now) .eq(EdFileInfo::getId, tmp)); } } @@ -353,8 +341,6 @@ public class CommonService { // 逻辑删除文件夹 edFileInfoMapper.update(null, Wrappers.lambdaUpdate() .eq(EdFileInfo::getId, id) - .set(EdFileInfo::getUpdatedBy, currentUserId) - .set(EdFileInfo::getUpdatedTime, now) .set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code)); fileSystemService.renameFile(srcFilePath, srcPrjName + "_" + IdUtil.fastSimpleUUID() + DELETE_FLAG); } @@ -423,7 +409,6 @@ public class CommonService { } } - public String getLastPrjLeafId(String path) { String[] split = path.split(MYSQL_FILE_PATH_SPLIT); for (int i = split.length - 1; i >= 0; i--) { @@ -440,5 +425,4 @@ public class CommonService { } - } 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 9da4bec..6bd09c9 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 @@ -34,6 +34,7 @@ import com.electromagnetic.industry.software.manage.pojo.other.UploadRecordDTO; import com.electromagnetic.industry.software.manage.pojo.req.*; import com.electromagnetic.industry.software.manage.pojo.resp.*; import com.electromagnetic.industry.software.manage.service.EdFileInfoService; +import com.electromagnetic.industry.software.manage.service.EdTagLibraryService; import com.electromagnetic.industry.software.manage.service.FileSystemService; import com.electromagnetic.industry.software.manage.service.PermissionService; import org.springframework.core.io.FileSystemResource; @@ -77,6 +78,9 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo.class, file -> !file.getColumn().equals("file_content")) .eq(EdFileInfo::getSaveStatus, EleDataSaveStatusEnum.SUCCESS.code) @@ -208,11 +211,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl String maxPrjId = this.baseMapper.maxPrjId(); int prjCount = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class).eq(EdFileInfo::getParentId, PRJ_PARENT_ID)).intValue(); int id = Integer.parseInt(StrUtil.isEmpty(maxPrjId) ? "100000" : maxPrjId); - Date now = new Date(); - String currentUserId = UserThreadLocal.getUserId(); String newPrjId = String.valueOf(id + 1); EdFileInfo fileInfo = new EdFileInfo(); @@ -101,11 +98,7 @@ public class EdPrjServiceImpl extends ServiceImpl .setFilePath(newPrjId) .setSort(++prjCount) .setFileCode(commonService.createFileCode(newPrjId, EleDataTypeEnum.FOLDER.desc, FILE_START_VERSION, nowTimeStr)) - .setDataOwn(dataOwnCode) - .setCreatedTime(now) - .setUpdatedTime(now) - .setCreatedBy(currentUserId) - .setUpdatedBy(currentUserId); + .setDataOwn(dataOwnCode); this.save(fileInfo); // 保存到文件系统 fileSystemService.createDirectory(commonService.getEleDataPath(dataOwnCode) + File.separator + prjName); @@ -152,9 +145,7 @@ public class EdPrjServiceImpl extends ServiceImpl } this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) .eq(EdFileInfo::getId, prjId) - .set(EdFileInfo::getFileName, newPrjName) - .set(EdFileInfo::getUpdatedBy, UserThreadLocal.getUserId()) - .set(EdFileInfo::getUpdatedTime, new Date())); + .set(EdFileInfo::getFileName, newPrjName)); fileSystemService.renameFile(commonService.getEleDataPath(dataOwnCode), oldPrjName, newPrjName); UserThreadLocal.setSuccessInfo("", prjId, "修改工层名 {} 为 {} 成功。", oldPrjName, newPrjName); } catch (Exception e) { @@ -265,8 +256,6 @@ public class EdPrjServiceImpl extends ServiceImpl for (FolderResortDTO folderResortDTO : folderResortDTOList) { LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) .set(EdFileInfo::getSort, folderResortDTO.getSort()) - .set(EdFileInfo::getUpdatedBy, currentUserId) - .set(EdFileInfo::getUpdatedTime, now) .eq(EdFileInfo::getId, folderResortDTO.getId()); this.update(updateWrapper); } @@ -290,8 +279,6 @@ public class EdPrjServiceImpl extends ServiceImpl public ElectromagneticResult publish(String prjId, int dataOwnCode) { EdFileInfo fileInfo = this.baseMapper.selectById(prjId); try { - Date now = new Date(); - String currentUserId = UserThreadLocal.getUserId(); // 将已经处于删除状态设置成逻辑删除 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo::getId, EdFileInfo::getFilePath) @@ -307,15 +294,11 @@ public class EdPrjServiceImpl extends ServiceImpl this.update(Wrappers.lambdaUpdate(EdFileInfo.class) .eq(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code) .set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) - .set(EdFileInfo::getUpdatedBy, currentUserId) - .set(EdFileInfo::getUpdatedTime, now) .likeRight(EdFileInfo::getFilePath, prjId)); // 其余置为发布状态 LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class) .set(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) .eq(EdFileInfo::getDataStatus, EleDataStatusEnum.NOT_PUBLISHED.code) - .set(EdFileInfo::getUpdatedBy, currentUserId) - .set(EdFileInfo::getUpdatedTime, now) .likeRight(EdFileInfo::getFilePath, prjId); this.update(updateWrapper); commonService.deletePrjSysDir(fileSysPaths); @@ -352,7 +335,6 @@ public class EdPrjServiceImpl extends ServiceImpl public ElectromagneticResult follow(String sourceId, String targetId, int dataOwnCode) { try { - String currentUserId = UserThreadLocal.getUserId(); // 把source工程的层级结构copy到目标工程 // 查找source的全部目录 List sourceEdFileInfos = commonService.selectAllAdminFolder(sourceId, null, dataOwnCode); @@ -408,11 +390,7 @@ public class EdPrjServiceImpl extends ServiceImpl .setFileType("文件夹") .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) .setFilePath(targetParentFile.getFilePath() + MYSQL_FILE_PATH_SPLIT + newFolderId) - .setSort(++sort) - .setCreatedTime(now) - .setUpdatedTime(now) - .setCreatedBy(currentUserId) - .setUpdatedBy(currentUserId); + .setSort(++sort); this.save(targetFile); targetEdFileInfos.add(targetFile); String targetSysFilePath = commonService.getFileSysPath(targetFile.getFilePath(), dataOwnCode); @@ -452,14 +430,10 @@ public class EdPrjServiceImpl extends ServiceImpl String parentId = this.baseMapper.selectById(id).getParentId(); // 首先检查同层是否有同名目录 Assert.isTrue(commonService.notExistSameFolder(parentId, newFolderName, dataOwnCode), StrFormatter.format("{} 子集名已经存在", newFolderName)); - String currentUserId = UserThreadLocal.getUserId(); - Date now = new Date(); EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class) .eq(EdFileInfo::getId, id)); String sysFilePath = commonService.getFileSysPath(fileInfo.getFilePath(), dataOwnCode); this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) - .set(EdFileInfo::getUpdatedTime, now) - .set(EdFileInfo::getUpdatedBy, currentUserId) .eq(EdFileInfo::getId, id) .set(EdFileInfo::getFileName, newFolderName)); fileSystemService.renameFile(sysFilePath, newFolderName); diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/OfficeFileUtil.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/OfficeFileUtil.java index 332b9b3..6ea4a22 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/OfficeFileUtil.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/util/OfficeFileUtil.java @@ -56,18 +56,22 @@ public class OfficeFileUtil { try { String pdfParentDir = FileUtil.getParent(pdfPath, 1) + File.separatorChar + IdUtil.fastSimpleUUID() + File.separatorChar; StringBuilder command = new StringBuilder(); - command.append("libreoffice").append(" ").append("--headless") + command.append("/usr/bin/libreoffice24.8").append(" ").append("--headless") .append(" ").append("--convert-to") .append(" ").append("pdf") .append(" ").append(wordPath) .append(" ").append("--outdir") .append(" ").append(pdfParentDir); + log.info("convert word file to pdf, command: {}", command); Process process = RuntimeUtil.exec(command.toString()); process.waitFor(); if (process.exitValue() != 0) { String info = StrFormatter.format("word文档{}转换成pdf文档{}失败", wordPath, pdfPath); throw new BizException(info); } + String outPdfPath = FileUtil.loopFiles(pdfParentDir).get(0).getAbsolutePath(); + FileUtil.move(new File(outPdfPath), new File(pdfPath), true); + } catch (Exception e) { log.error(e.getMessage(), e); throw new BizException(e.getMessage(), e);