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);
}
}