Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
J
jgjk
Project
Project
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
Graph
比较
统计图
议题
0
议题
0
列表
看板
标记
Milestones
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
注册表
注册表
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
任建宇
jgjk
Commits
cd95e45c
提交
cd95e45c
authored
3月 19, 2021
作者:
liupengfei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
--no commit message
上级
8f861ffc
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
204 行增加
和
7 行删除
+204
-7
EpubController.java
...rc/main/java/com/zrqx/file/controller/EpubController.java
+77
-0
BookUtil.java
app/file/src/main/java/com/zrqx/file/util/BookUtil.java
+127
-7
没有找到文件。
app/file/src/main/java/com/zrqx/file/controller/EpubController.java
浏览文件 @
cd95e45c
...
...
@@ -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
;
}
}
app/file/src/main/java/com/zrqx/file/util/BookUtil.java
浏览文件 @
cd95e45c
package
com
.
zrqx
.
file
.
util
;
import
java.io.File
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.HashMap
;
...
...
@@ -56,15 +57,15 @@ public class BookUtil {
if
(!
service
.
insert
(
entity
))
{
throw
new
BaseException
(
"上传失败!"
);
}
else
{
String
path
=
entity
.
getPath
();
// 载入电子书资源
epubUtil
.
setEpubFile
(
file
.
getInputStream
());
ev
.
setBook
(
book
);
ev
.
setEbook
(
ebook
);
ev
=
er
.
setBookInfo
(
epubUtil
,
ev
);
/**
* 保存元数据相关内容
*/
...
...
@@ -100,9 +101,9 @@ public class BookUtil {
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
);
service
.
insert
(
cover
);
}
ebook
.
setUploadTime
(
new
Date
());
book
.
setStatus
(
0
);
book
.
setId
(
UUIDUtil
.
getUUID
());
...
...
@@ -125,7 +126,7 @@ public class BookUtil {
}
ebook
.
setCssPath
(
cssentity
.
getFileName
());
// 完善图书信息(13-17)
ev
.
setEbook
(
ebook
);
// ---------获取图书所有内容------------
...
...
@@ -164,9 +165,128 @@ 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
*
*
* @throws Exception
*/
public
void
importBookImgs
(
Map
<
String
,
String
>
imgtzMap
,
Book
book
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论