package com.ruoyi.manage.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.UUID; import com.aspose.words.License; import com.aspose.words.SaveFormat; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.framework.exception.ErrorException; import com.ruoyi.manage.mapper.ManageDocumentListMapper; import com.ruoyi.manage.pojo.ManageDocumentList; import com.ruoyi.manage.service.ManageDocumentListService; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import jakarta.annotation.Resource; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 文件清单 * 服务实现类 *

* * @author * @since 2024-11-08 11:08:11 */ @Service public class ManageDocumentListServiceImpl extends ServiceImpl implements ManageDocumentListService { @Resource private ManageDocumentListMapper manageDocumentListMapper; @Value("${wordUrl}") private String wordUrl; @Override public IPage pageManageDocumentList(Page page, ManageDocumentList manageDocumentList) { return manageDocumentListMapper.pageManageDocumentList(page, QueryWrappers.queryWrappers(manageDocumentList)); } @Override public int uploadFile(Integer id, MultipartFile file) { String pathName; ManageDocumentList manageDocumentList = manageDocumentListMapper.selectById(id); if (manageDocumentList == null) { throw new ErrorException("文件清单不存在"); } if (file == null || file.isEmpty()) { throw new ErrorException("请选择要上传的文件"); } File realpath = new File(wordUrl).getAbsoluteFile(); try { if (!realpath.exists() && !realpath.mkdirs()) { throw new IOException("目录创建失败: " + realpath); } pathName = UUID.randomUUID() + "_" + file.getOriginalFilename(); // 用 Files.copy 而不是 transferTo:transferTo 遇到相对路径会按 Tomcat 临时目录解析 Files.copy(file.getInputStream(), new File(realpath, pathName).toPath(), StandardCopyOption.REPLACE_EXISTING); } catch (Exception e) { e.printStackTrace(); throw new ErrorException("附件上传错误: " + e.getMessage()); } if (ObjectUtils.isNotEmpty(manageDocumentList.getUrl())) { // 删除旧文件 new File(realpath, manageDocumentList.getUrl()).delete(); } manageDocumentList.setUrl(pathName); return manageDocumentListMapper.updateById(manageDocumentList); } @Override public void importExcel(List list) { if (CollectionUtil.isEmpty(list)) { return; } list = list.stream().filter(manageDocumentList -> ObjectUtils.isNotEmpty(manageDocumentList.getName())).collect(Collectors.toList()); saveBatch(list); } }