Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
K
know-base
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
张京坤
know-base
Commits
17a6691c
提交
17a6691c
authored
3月 12, 2024
作者:
chenshiqiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add log
上级
9451ab86
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
45 行增加
和
37 行删除
+45
-37
KnowledgeServiceImpl.java
.../com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
+45
-37
没有找到文件。
src/main/java/com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
浏览文件 @
17a6691c
...
...
@@ -89,13 +89,15 @@ class KnowledgeServiceImpl implements IKnowledgeService {
@Autowired
private
AsyncService
asyncService
;
private
String
TEMP_PATH
=
"/storage/temp/"
;
private
String
TEMP_PATH
=
"/storage/temp/"
;
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
@Override
public
void
addKnowledge
(
KnowFile
knowFile
,
Knowledge
knowledge
,
KbAuthorizedUser
userInfo
)
{
log
.
info
(
"addKnowledge knowledge :{}"
,
knowledge
);
log
.
info
(
"addKnowledge knowFile :{}"
,
knowFile
);
knowledge
.
setAuthor
(
userInfo
.
getName
());
if
(
null
==
knowledge
.
getVerifyStatus
())
{
knowledge
.
setVerifyStatus
(
0
);
...
...
@@ -116,44 +118,49 @@ class KnowledgeServiceImpl implements IKnowledgeService {
String
html
=
null
;
try
{
String
path
=
filesStorage
+
knowledge
.
getFiles
().
get
(
0
).
getFilePath
();
String
filePath
=
null
;
String
filePath
=
null
;
if
(
".pdf"
.
equals
(
knowFile
.
getFileType
()))
{
log
.
info
(
"pdf"
);
try
{
PDDocument
document
=
PDDocument
.
load
(
new
File
(
path
));
StringBuilder
allBuilder
=
new
StringBuilder
();
PDFTextStripper
pdfTextStripper
=
new
PDFTextStripper
(){
private
StringBuilder
paragraphBuilder
=
new
StringBuilder
();
StringBuilder
allBuilder
=
new
StringBuilder
();
PDFTextStripper
pdfTextStripper
=
new
PDFTextStripper
()
{
private
StringBuilder
paragraphBuilder
=
new
StringBuilder
();
@Override
protected
void
startPage
(
PDPage
page
)
throws
IOException
{
protected
void
startPage
(
PDPage
page
)
throws
IOException
{
super
.
startPage
(
page
);
paragraphBuilder
.
setLength
(
0
);
//make paragraphBuilder empty
}
@Override
protected
void
writeLineSeparator
()
throws
IOException
{
protected
void
writeLineSeparator
()
throws
IOException
{
super
.
writeLineSeparator
();
if
(
paragraphBuilder
.
toString
().
endsWith
(
"."
)||
paragraphBuilder
.
toString
().
endsWith
(
"。"
)||
paragraphBuilder
.
toString
().
endsWith
(
"!"
)||
if
(
paragraphBuilder
.
toString
().
endsWith
(
"."
)
||
paragraphBuilder
.
toString
().
endsWith
(
"。"
)
||
paragraphBuilder
.
toString
().
endsWith
(
"!"
)
||
paragraphBuilder
.
toString
().
endsWith
(
"!"
)
){
)
{
paragraphBuilder
.
append
(
"\n"
);
//mark paragraph
paragraphBuilder
.
append
(
"😀"
);
}
else
{
}
else
{
paragraphBuilder
.
append
(
"\n"
);
//mark paragraph
}
}
@Override
protected
void
writeString
(
String
string
,
List
<
TextPosition
>
textPositions
)
throws
IOException
{
super
.
writeString
(
string
,
textPositions
);
protected
void
writeString
(
String
string
,
List
<
TextPosition
>
textPositions
)
throws
IOException
{
super
.
writeString
(
string
,
textPositions
);
paragraphBuilder
.
append
(
string
);
//add text content
}
@Override
protected
void
endPage
(
PDPage
page
)
throws
IOException
{
protected
void
endPage
(
PDPage
page
)
throws
IOException
{
super
.
endPage
(
page
);
String
paragraph
=
paragraphBuilder
.
toString
().
trim
();
//get paragraph
if
(!
paragraph
.
isEmpty
())
{
String
paragraph
=
paragraphBuilder
.
toString
().
trim
();
//get paragraph
if
(!
paragraph
.
isEmpty
())
{
allBuilder
.
append
(
paragraph
);
}
}
...
...
@@ -164,17 +171,18 @@ class KnowledgeServiceImpl implements IKnowledgeService {
pdfTextStripper
.
setEndPage
(
document
.
getNumberOfPages
());
String
text
=
pdfTextStripper
.
getText
(
document
);
knowledge
.
setContentAll
(
text
);
log
.
info
(
"allBuilder:{}"
,
allBuilder
);
log
.
info
(
"allBuilder:{}"
,
allBuilder
);
contentStringList
=
Arrays
.
asList
(
allBuilder
.
toString
().
split
(
"😀"
));
}
catch
(
Exception
e
)
{
log
.
error
(
"parsing pdf error :{}"
,
e
.
getMessage
());
}
}
else
{
filePath
=
path
;
}
else
{
filePath
=
path
;
File
file
=
new
File
(
filePath
);
log
.
info
(
"word dealing filePath{}"
,
filePath
);
html
=
DocUtil
.
convertDocStream2Html
(
new
FileInputStream
(
file
));
log
.
info
(
"html :{}"
,
html
);
String
htmlWithTable
=
html
.
replace
(
"</p>"
,
"######</p>"
);
htmlWithTable
=
htmlWithTable
.
replace
(
"</title>"
,
"######</title>"
);
htmlWithTable
=
htmlWithTable
.
replace
(
"</h1>"
,
"######</h1>"
);
...
...
@@ -182,7 +190,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
log
.
error
(
e
.
getMessage
()
);
}
...
...
@@ -231,15 +239,15 @@ class KnowledgeServiceImpl implements IKnowledgeService {
esOpUtil
.
docEditByEntity
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
,
knowledge
.
getId
(),
knowledge
);
}
//删除
if
(
null
==
knowledge
.
getKnowledgeProjectId
())
{
if
(
null
==
knowledge
.
getKnowledgeProjectId
())
{
KnowledgeVO
knowledgeVO
=
this
.
getById
(
knowledge
.
getId
());
knowledge
.
setKnowledgeProjectId
(
knowledgeVO
.
getKbKnowledgeId
());
}
deleteForPython
(
knowledge
.
getId
(),
knowledge
.
getKnowledgeProjectId
());
deleteForPython
(
knowledge
.
getId
(),
knowledge
.
getKnowledgeProjectId
());
BeanUtils
.
copyProperties
(
knowledge
,
knowledgeMessage
);
knowledgeMessage
.
setType
(
knowledge
.
getTypeId
());
log
.
info
(
"send message:{}"
,
knowledgeMessage
);
log
.
info
(
"send message:{}"
,
knowledgeMessage
);
produceInfo
.
sendKnowledgeContents
(
knowledgeMessage
);
}
...
...
@@ -248,11 +256,11 @@ class KnowledgeServiceImpl implements IKnowledgeService {
esOpUtil
.
docSavaByEntity
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
,
knowledge
.
getId
(),
knowledge
);
//sync data
KbAuthorizedUser
userInfo
=
SpringContextUtils
.
getUserInfo
();
if
(
null
==
userInfo
)
{
if
(
null
==
userInfo
)
{
return
;
}
KnowledgeVO
knowledgeVO
=
this
.
getById
(
knowledge
.
getId
());
addKnowledge
(
knowledgeVO
.
getFiles
().
get
(
0
),
knowledge
,
userInfo
);
addKnowledge
(
knowledgeVO
.
getFiles
().
get
(
0
),
knowledge
,
userInfo
);
}
@Override
...
...
@@ -262,21 +270,21 @@ class KnowledgeServiceImpl implements IKnowledgeService {
}
CompletableFuture
.
runAsync
(()
->
{
for
(
Knowledge
knowledge
:
knowledgeList
)
{
deleteForPython
(
knowledge
.
getId
(),
knowledge
.
getKbKnowledgeId
());
for
(
Knowledge
knowledge
:
knowledgeList
)
{
deleteForPython
(
knowledge
.
getId
(),
knowledge
.
getKbKnowledgeId
());
}
});
}
public
void
deleteForPython
(
String
id
,
String
knowledgeBaseId
)
{
public
void
deleteForPython
(
String
id
,
String
knowledgeBaseId
)
{
JSONObject
params
=
new
JSONObject
();
List
<
String
>
lidList
=
new
ArrayList
<>();
List
<
String
>
lidList
=
new
ArrayList
<>();
lidList
.
add
(
id
);
params
.
put
(
"id"
,
lidList
);
params
.
put
(
"knowledge_base_id"
,
knowledgeBaseId
);
log
.
info
(
"delete param:{}"
,
params
);
log
.
info
(
"delete param:{}"
,
params
);
try
{
HttpUtil
.
doPost
(
deleteUrl
,
params
,
120000
);
}
catch
(
IOException
e
)
{
...
...
@@ -446,7 +454,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
e
.
printStackTrace
();
}
if
(
null
!=
searchResponse
&&
null
!=
searchResponse
.
getHits
())
{
if
(
null
!=
searchResponse
&&
null
!=
searchResponse
.
getHits
())
{
SearchHit
[]
searchHits
=
searchResponse
.
getHits
().
getHits
();
List
<
KnowledgeVO
>
list
=
new
ArrayList
<>();
for
(
SearchHit
hit
:
searchHits
)
{
...
...
@@ -586,7 +594,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
String
fileSuffix
=
multipartFile
.
getOriginalFilename
().
substring
(
index
+
1
);
if
(
"xls"
.
equals
(
fileSuffix
)
||
"xlsx"
.
equals
(
fileSuffix
))
{
//文件校验
if
(!
this
.
checkExcel
(
multipartFile
))
{
if
(!
this
.
checkExcel
(
multipartFile
))
{
log
.
error
(
"excel格式不对"
);
return
Result
.
error
(
"模版错误,请下载正确模板,再次上传!"
);
}
...
...
@@ -602,8 +610,8 @@ class KnowledgeServiceImpl implements IKnowledgeService {
Workbook
workbook
=
ExcelExportUtil
.
getWorkbook
(
multipartFile
);
if
(
workbook
!=
null
)
{
List
<
String
>
list
=
ExcelExportUtil
.
getSheetTitles
(
workbook
);
return
list
!=
null
&&
list
.
contains
(
"标题"
)&&
list
.
contains
(
"正文"
)
&&
list
.
contains
(
"作者"
)&&
list
.
contains
(
"来源"
)&&
list
.
contains
(
"发布时间"
);
return
list
!=
null
&&
list
.
contains
(
"标题"
)
&&
list
.
contains
(
"正文"
)
&&
list
.
contains
(
"作者"
)
&&
list
.
contains
(
"来源"
)
&&
list
.
contains
(
"发布时间"
);
}
return
false
;
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论