提交 cd95e45c authored 作者: liupengfei's avatar liupengfei

--no commit message

上级 8f861ffc
......@@ -2,6 +2,11 @@ package com.zrqx.file.controller;
import javax.servlet.http.HttpServletRequest;
import com.zrqx.core.client.vo.ImportLabelVo;
import com.zrqx.core.util.excelutil.ExcelUtil;
import com.zrqx.core.util.excelutil.ImportResult;
import com.zrqx.core.util.excelutil.ImportUtil;
import com.zrqx.file.commons.vo.ExcelBookExportVo;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -21,6 +26,13 @@ import com.zrqx.file.util.BookUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping(value = "/epub")
@Api(description = "单本epub解析(弃用)")
......@@ -31,6 +43,8 @@ public class EpubController {
private String rootPath;
@Autowired
private Redis redis;
@Autowired
private ImportUtil importUtil;
private EpubVo ev = new EpubVo();
......@@ -54,4 +68,67 @@ public class EpubController {
return token;
}
@ApiOperation(value = "excel同步数据 返回token")
@RequestMapping(value = "/excel/upload", method = RequestMethod.POST)
public List<String> uploadByExcel(@RequestParam("file") MultipartFile file,HttpServletRequest request) throws Exception {
request.setCharacterEncoding("UTF-8");
BookUtil bu = new BookUtil();
List<String> tokenList = new ArrayList<>();
List<ExcelBookExportVo> ebookImportList = null;
// 结果集
ImportLabelVo vo = new ImportLabelVo();
//PackageLabelRelation packageLabelRelation = new PackageLabelRelation();
//解析Excel文件
try {
ebookImportList = ExcelUtil.importExcel(file.getInputStream(), ExcelBookExportVo.class, file.getOriginalFilename());
} catch (IOException e) {
e.printStackTrace();
}
// 验证数据
if (ebookImportList == null || ebookImportList.isEmpty()){
throw new BaseException("文件解析数据为0");
}
ebookImportList.forEach(f ->{
if(StringUtils.isNotBlank(f.getIsbn())){
String isbn = f.getIsbn().trim();
try {
String destUrl = "http://192.168.0.209/file/"+isbn+"/"+isbn+".epub";
HttpURLConnection httpUrl = (HttpURLConnection) new URL(destUrl).openConnection();
httpUrl.connect();
File epubFile = inputStreamToFile(httpUrl.getInputStream(),isbn+".epub");
httpUrl.disconnect();
EpubVo ev = bu.getBaseInformation(rootPath, epubFile);
String token = ev.getEbook().getId();
tokenList.add(token);
redis.set(token, ev);
} catch (Exception e) {
throw new BaseException("epub上传失败");
}
}
});
return tokenList;
}
/**
* 工具类
* inputStream 转 File
*/
public static File inputStreamToFile(InputStream ins, String name) throws Exception{
File file = new File(System.getProperty("java.io.tmpdir") + File.separator + name);
if (file.exists()) {
return file;
}
OutputStream os = new FileOutputStream(file);
int bytesRead;
int len = 8192;
byte[] buffer = new byte[len];
while ((bytesRead = ins.read(buffer, 0, len)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
return file;
}
}
package com.zrqx.file.util;
import java.io.File;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
......@@ -164,6 +165,125 @@ public class BookUtil {
return ev;
}
public EpubVo getBaseInformation(String rootPath, File file) throws Exception {
// 获取原文件的全名称
String originalFilename = file.getName();
// 源文件的名称,不带后缀
String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
FileInfo fileInfo = new FileInfo();
fileInfo.setOriginalFileName(originalFilename);
Ebook ebook = new Ebook();
Book book = new Book();
// epub工具类
EpubUtil epubUtil = new EpubUtil();
// epub解析方法类
EpubResolve er = new EpubResolve();
String path = file.getPath();
// 载入电子书资源
epubUtil.setEpubFile(file);
ev.setBook(book);
ev.setEbook(ebook);
ev = er.setBookInfo(epubUtil, ev);
/**
* 保存元数据相关内容
*/
// 名称
book.setName(epubUtil.getBookTitle());
// 作者
Set<RelationAuthor> list = new HashSet<>();
String author = epubUtil.getAuthor();
if(StringUtils.isNotBlank(author)) {
String[] authors = author.split("[,,;;]");
for (String string : authors) {
RelationAuthor relationAuthor = new RelationAuthor();
relationAuthor.setAuthor(string);
list.add(relationAuthor);
}
}
ev.setAuthorList(list);
// 出版时间
book.setPublishTime(epubUtil.getPublishDate());
book.setIsbn(epubUtil.getISBN());
//定价
if(epubUtil.getPrice() != null){
ebook.setPriceOption(1);
ebook.setPrice(epubUtil.getPrice());
ebook.setRealPrice(epubUtil.getPrice());
}
// 关键字(图书的名字)20
ebook.setKeywords(epubUtil.getBookTitle());
// 保存封面
if(epubUtil.getCover() != null){
String imgName = epubUtil.getCover().getHref().substring(epubUtil.getCover().getHref().lastIndexOf("/") + 1);
MultipartFile multipartFile = new MockMultipartFile(imgName, imgName, "image/jpeg", epubUtil.getCover().getInputStream());
FileInfo cover = er.uploadFile(multipartFile, rootPath , fileName);
ebook.setCover(cover.getFileName());
service.insert(cover);
}
ebook.setUploadTime(new Date());
book.setStatus(0);
book.setId(UUIDUtil.getUUID());
ev.setBook(book);
/**
* 保存电子书相关内容
*/
ebook.setId(book.getId());
ebook.setUploadTime(new Date());
// 修改时间4
ebook.setUpdateTime(new Date());// 设置为上传时间
ebook.setEpubFile(fileName);
ebook.setFileName(file.getName());
// css路径
FileInfo cssentity = er.getCss(epubUtil, rootPath , fileName);
if (!service.insert(cssentity)) {
throw new BaseException("css文件上传失败!");
}
ebook.setCssPath(cssentity.getFileName());
// 完善图书信息(13-17)
ev.setEbook(ebook);
// ---------获取图书所有内容------------
List<TOCReference> listReferences = epubUtil.getTocReferences();
// 当前目录
TOCReference tocRef = new TOCReference();
// 初始化顶级目录id 为 "0"
tocRef.setFragmentId("0");
// 初始化顶级目录层级为 0
int level = 0;
// *******************解析章节信息*************
Set<ChapterLibrary> chapterSet = new HashSet<>();
chapterSet = er.setChapter(listReferences, tocRef, level, ebook, chapterSet);
ev.setChapterSet(chapterSet);
// ******************解析内容信息**************
Set<ArticleLibrary> contentSet = new HashSet<>();
Map<String, String> imgtzMap = new HashMap<>();// 图片图注信息
Object[] data = new Object[2];
book.setAuthor(book.getAuthor());
data = er.setContent(listReferences, contentSet, ebook, imgtzMap, data);
ev.setArticleSet(contentSet);
// ************导入图书中的图片资源************
if (data[1] instanceof Map && data[1] != null) {
imgtzMap = (Map<String, String>) data[1];
// 图片info
List<FileInfo> imageInfoList = er.getImages(epubUtil, rootPath , fileName);
if (!service.insertList(imageInfoList)) {
throw new BaseException("图片上传失败!");
}
importBookImgs(imgtzMap, book, imageInfoList);
}
return ev;
}
/**
* (后台) 导入epub中的图片资源到resource
*
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论