Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
K
know-base
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
张京坤
know-base
Commits
539dee42
提交
539dee42
authored
1月 18, 2024
作者:
chenshiqiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
import
上级
c7b759e7
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
227 行增加
和
3 行删除
+227
-3
pom.xml
pom.xml
+7
-0
KnowledgeController.java
...ava/com/zzsn/knowbase/controller/KnowledgeController.java
+12
-0
Knowledge.java
src/main/java/com/zzsn/knowbase/entity/Knowledge.java
+1
-0
IKnowledgeService.java
...ain/java/com/zzsn/knowbase/service/IKnowledgeService.java
+7
-0
AsyncService.java
...ain/java/com/zzsn/knowbase/service/impl/AsyncService.java
+35
-0
KnowledgeServiceImpl.java
.../com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
+95
-3
ExcelExportUtil.java
src/main/java/com/zzsn/knowbase/util/ExcelExportUtil.java
+69
-0
TimeUtil.java
src/main/java/com/zzsn/knowbase/util/TimeUtil.java
+0
-0
KnowledgeVO.java
src/main/java/com/zzsn/knowbase/vo/KnowledgeVO.java
+1
-0
没有找到文件。
pom.xml
浏览文件 @
539dee42
...
@@ -197,6 +197,13 @@
...
@@ -197,6 +197,13 @@
<version>
1.11
</version>
<version>
1.11
</version>
</dependency>
</dependency>
<!-- excel工具包 -->
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
easyexcel
</artifactId>
<version>
2.2.10
</version>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
src/main/java/com/zzsn/knowbase/controller/KnowledgeController.java
浏览文件 @
539dee42
...
@@ -26,6 +26,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
...
@@ -26,6 +26,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
import
org.springframework.web.util.WebUtils
;
import
org.springframework.web.util.WebUtils
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -101,6 +102,7 @@ public class KnowledgeController {
...
@@ -101,6 +102,7 @@ public class KnowledgeController {
Map
<
String
,
MultipartFile
>
fileMap
=
multipartRequest
.
getFileMap
();
Map
<
String
,
MultipartFile
>
fileMap
=
multipartRequest
.
getFileMap
();
List
<
Result
<
KnowFile
>>
resultList
=
localFileService
.
upload
(
fileMap
);
List
<
Result
<
KnowFile
>>
resultList
=
localFileService
.
upload
(
fileMap
);
KbAuthorizedUser
userInfo
=
SpringContextUtils
.
getUserInfo
();
KbAuthorizedUser
userInfo
=
SpringContextUtils
.
getUserInfo
();
knowledge
.
setImportData
(
0
);
CompletableFuture
.
runAsync
(()->
this
.
add
(
resultList
,
knowledge
,
userInfo
));
CompletableFuture
.
runAsync
(()->
this
.
add
(
resultList
,
knowledge
,
userInfo
));
return
Result
.
OK
(
"添加成功!"
);
return
Result
.
OK
(
"添加成功!"
);
}
}
...
@@ -168,4 +170,14 @@ public class KnowledgeController {
...
@@ -168,4 +170,14 @@ public class KnowledgeController {
}
}
return
Result
.
error
(
"响应失败"
);
return
Result
.
error
(
"响应失败"
);
}
}
/**
* 通过excel导入
*
* @return
*/
@RequestMapping
(
value
=
"/importInfo"
,
method
=
RequestMethod
.
POST
)
public
Result
<?>
importInfo
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
return
knowledgeService
.
doImportInfo
(
request
);
}
}
}
src/main/java/com/zzsn/knowbase/entity/Knowledge.java
浏览文件 @
539dee42
...
@@ -111,6 +111,7 @@ public class Knowledge implements Serializable {
...
@@ -111,6 +111,7 @@ public class Knowledge implements Serializable {
private
List
<
Content
>
contents
;
private
List
<
Content
>
contents
;
private
List
<
KnowFile
>
files
;
private
List
<
KnowFile
>
files
;
private
Integer
score
;
private
Integer
score
;
private
Integer
importData
;
}
}
...
...
src/main/java/com/zzsn/knowbase/service/IKnowledgeService.java
浏览文件 @
539dee42
...
@@ -6,6 +6,9 @@ import com.zzsn.knowbase.entity.KnowFile;
...
@@ -6,6 +6,9 @@ import com.zzsn.knowbase.entity.KnowFile;
import
com.zzsn.knowbase.entity.Knowledge
;
import
com.zzsn.knowbase.entity.Knowledge
;
import
com.zzsn.knowbase.vo.KnowledgeParam
;
import
com.zzsn.knowbase.vo.KnowledgeParam
;
import
com.zzsn.knowbase.vo.KnowledgeVO
;
import
com.zzsn.knowbase.vo.KnowledgeVO
;
import
com.zzsn.knowbase.vo.Result
;
import
javax.servlet.http.HttpServletRequest
;
/**
/**
* @Description: 知识服务
* @Description: 知识服务
...
@@ -45,4 +48,8 @@ public interface IKnowledgeService {
...
@@ -45,4 +48,8 @@ public interface IKnowledgeService {
IPage
<
KnowledgeVO
>
listFromPython
(
KnowledgeParam
knowledgeParam
,
Integer
pageNo
,
Integer
pageSize
,
String
column
,
String
order
);
IPage
<
KnowledgeVO
>
listFromPython
(
KnowledgeParam
knowledgeParam
,
Integer
pageNo
,
Integer
pageSize
,
String
column
,
String
order
);
KnowledgeVO
getById
(
String
id
);
KnowledgeVO
getById
(
String
id
);
Result
<?>
doImportInfo
(
HttpServletRequest
request
);
void
doExcel
(
HttpServletRequest
request
,
String
fileSuffix
);
}
}
src/main/java/com/zzsn/knowbase/service/impl/AsyncService.java
0 → 100644
浏览文件 @
539dee42
package
com
.
zzsn
.
knowbase
.
service
.
impl
;
import
com.zzsn.knowbase.service.IKnowledgeService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Lazy
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletRequest
;
/**
* Description: 异步处理service
* Author: EDY
* Date: 2023/7/26
*/
@Service
public
class
AsyncService
{
@Autowired
@Lazy
IKnowledgeService
knowledgeService
;
//异步执行文件解析
@Async
public
void
doimport
(
HttpServletRequest
request
,
MultipartFile
multipartFile
,
String
fileSuffix
)
{
String
subjectId
=
request
.
getParameter
(
"subjectId"
);
String
isTopping
=
request
.
getParameter
(
"isTopping"
);
String
isExamine
=
request
.
getParameter
(
"isExamine"
);
knowledgeService
.
doExcel
(
request
,
fileSuffix
);
}
}
src/main/java/com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
浏览文件 @
539dee42
package
com
.
zzsn
.
knowbase
.
service
.
impl
;
package
com
.
zzsn
.
knowbase
.
service
.
impl
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.obs.services.model.PutObjectResult
;
import
com.zzsn.knowbase.constant.Constants
;
import
com.zzsn.knowbase.constant.Constants
;
import
com.zzsn.knowbase.entity.*
;
import
com.zzsn.knowbase.entity.*
;
import
com.zzsn.knowbase.enums.KnowTypeEnum
;
import
com.zzsn.knowbase.enums.KnowTypeEnum
;
...
@@ -16,6 +19,7 @@ import com.zzsn.knowbase.service.KbKnowledgeProjectService;
...
@@ -16,6 +19,7 @@ import com.zzsn.knowbase.service.KbKnowledgeProjectService;
import
com.zzsn.knowbase.util.*
;
import
com.zzsn.knowbase.util.*
;
import
com.zzsn.knowbase.vo.KnowledgeParam
;
import
com.zzsn.knowbase.vo.KnowledgeParam
;
import
com.zzsn.knowbase.vo.KnowledgeVO
;
import
com.zzsn.knowbase.vo.KnowledgeVO
;
import
com.zzsn.knowbase.vo.Result
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -36,7 +40,11 @@ import org.springframework.beans.BeanUtils;
...
@@ -36,7 +40,11 @@ import org.springframework.beans.BeanUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartHttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.ByteArrayInputStream
;
import
java.io.File
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.IOException
;
...
@@ -71,6 +79,9 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -71,6 +79,9 @@ class KnowledgeServiceImpl implements IKnowledgeService {
@Value
(
"${files.storage}"
)
@Value
(
"${files.storage}"
)
String
filesStorage
;
String
filesStorage
;
@Autowired
private
AsyncService
asyncService
;
@Override
@Override
public
void
addKnowledge
(
KnowFile
knowFile
,
Knowledge
knowledge
,
KbAuthorizedUser
userInfo
)
{
public
void
addKnowledge
(
KnowFile
knowFile
,
Knowledge
knowledge
,
KbAuthorizedUser
userInfo
)
{
...
@@ -92,8 +103,8 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -92,8 +103,8 @@ class KnowledgeServiceImpl implements IKnowledgeService {
File
file
=
new
File
(
filesStorage
+
knowledge
.
getFiles
().
get
(
0
).
getFilePath
());
File
file
=
new
File
(
filesStorage
+
knowledge
.
getFiles
().
get
(
0
).
getFilePath
());
html
=
DocUtil
.
convertDocStream2Html
(
new
FileInputStream
(
file
));
html
=
DocUtil
.
convertDocStream2Html
(
new
FileInputStream
(
file
));
String
htmlWithTable
=
html
.
replace
(
"</p>"
,
"######</p>"
);
String
htmlWithTable
=
html
.
replace
(
"</p>"
,
"######</p>"
);
htmlWithTable
=
htmlWithTable
.
replace
(
"</title>"
,
"######</title>"
);
htmlWithTable
=
htmlWithTable
.
replace
(
"</title>"
,
"######</title>"
);
htmlWithTable
=
htmlWithTable
.
replace
(
"</h1>"
,
"######</h1>"
);
htmlWithTable
=
htmlWithTable
.
replace
(
"</h1>"
,
"######</h1>"
);
contentStringList
=
Arrays
.
asList
(
htmlWithTable
.
split
(
"######"
));
contentStringList
=
Arrays
.
asList
(
htmlWithTable
.
split
(
"######"
));
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
...
@@ -104,7 +115,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -104,7 +115,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
for
(
String
tem
:
contentStringList
)
{
for
(
String
tem
:
contentStringList
)
{
String
text
=
Jsoup
.
parse
(
tem
).
text
();
String
text
=
Jsoup
.
parse
(
tem
).
text
();
log
.
info
(
"info:{}"
,
text
);
log
.
info
(
"info:{}"
,
text
);
if
((!
tem
.
contains
(
"<title>"
))
&&
(!
text
.
isEmpty
()))
{
if
((!
tem
.
contains
(
"<title>"
))
&&
(!
text
.
isEmpty
()))
{
knowledge
.
setTitle
(
text
);
knowledge
.
setTitle
(
text
);
break
;
break
;
}
}
...
@@ -445,6 +456,87 @@ class KnowledgeServiceImpl implements IKnowledgeService {
...
@@ -445,6 +456,87 @@ class KnowledgeServiceImpl implements IKnowledgeService {
return
null
;
return
null
;
}
}
@Override
public
Result
<?>
doImportInfo
(
HttpServletRequest
request
)
{
MultipartHttpServletRequest
multipartRequest
=
(
MultipartHttpServletRequest
)
request
;
Map
<
String
,
MultipartFile
>
fileMap
=
multipartRequest
.
getFileMap
();
if
(
fileMap
.
size
()
<
1
)
{
return
Result
.
error
(
"请上传excel或者word文件"
);
}
MultipartFile
multipartFile
=
fileMap
.
get
(
new
ArrayList
<
String
>(
fileMap
.
keySet
()).
get
(
0
));
int
index
=
multipartFile
.
getOriginalFilename
().
lastIndexOf
(
"."
);
String
fileSuffix
=
multipartFile
.
getOriginalFilename
().
substring
(
index
+
1
);
if
(
"doc"
.
equals
(
fileSuffix
)
||
"docx"
.
equals
(
fileSuffix
)
||
"xls"
.
equals
(
fileSuffix
)
||
"xlsx"
.
equals
(
fileSuffix
))
{
asyncService
.
doimport
(
request
,
multipartFile
,
fileSuffix
);
return
Result
.
OK
(
"已进行处理"
);
}
else
{
return
Result
.
error
(
"不支持的文件类型"
);
}
}
@Override
public
void
doExcel
(
HttpServletRequest
request
,
String
fileSuffix
)
{
String
kbKnowledgeId
=
request
.
getParameter
(
"kbKnowledgeId"
);
String
knowledgeProjectId
=
request
.
getParameter
(
"knowledgeProjectId"
);
String
typeId
=
request
.
getParameter
(
"typeId"
);
String
createBy
=
request
.
getParameter
(
"createBy"
);
try
{
MultipartHttpServletRequest
multipartRequest
=
(
MultipartHttpServletRequest
)
request
;
Map
<
String
,
MultipartFile
>
fileMap
=
multipartRequest
.
getFileMap
();
MultipartFile
multipartFile
=
fileMap
.
get
(
new
ArrayList
<
String
>(
fileMap
.
keySet
()).
get
(
0
));
//1.上传文件到文件服务器
// 将MultipartFile的文件内容保存到字节数组
byte
[]
fileData
=
multipartFile
.
getBytes
();
List
<
List
<
String
>>
lists
=
ExcelExportUtil
.
readExcel
(
new
ByteArrayInputStream
(
fileData
),
1
,
9
);
//存入es
importInfo
(
lists
,
kbKnowledgeId
,
knowledgeProjectId
,
typeId
,
createBy
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
//导入发布库数据
public
void
importInfo
(
List
<
List
<
String
>>
lists
,
String
kbKnowledgeId
,
String
knowledgeProjectId
,
String
typeId
,
String
createBy
)
{
for
(
List
<
String
>
info
:
lists
)
{
try
{
Knowledge
specialInformation
=
Knowledge
.
builder
()
.
kbKnowledgeId
(
kbKnowledgeId
)
.
knowledgeProjectId
(
knowledgeProjectId
)
.
typeId
(
typeId
)
.
createBy
(
createBy
)
.
importData
(
1
)
.
build
();
specialInformation
.
setId
(
codeGenerateUtil
.
geneIdNo
(
Constants
.
FINANCE
,
8
));
//判断正文是否为空
if
(
StringUtils
.
isEmpty
(
info
.
get
(
3
)))
{
log
.
error
(
"上传的数据为空"
);
return
;
}
if
(
StringUtils
.
isNotEmpty
(
info
.
get
(
1
)))
{
specialInformation
.
setTitle
(
info
.
get
(
1
));
}
if
(
StringUtils
.
isNotEmpty
(
info
.
get
(
4
)))
{
specialInformation
.
setAuthor
(
info
.
get
(
4
));
}
if
(
StringUtils
.
isNotEmpty
(
info
.
get
(
5
)))
{
specialInformation
.
setOrigin
(
info
.
get
(
5
));
}
if
(
StringUtils
.
isNotEmpty
(
info
.
get
(
6
)))
{
specialInformation
.
setPublishDate
(
EsDateUtil
.
esFieldDateFormat
(
info
.
get
(
6
)));
}
specialInformation
.
setDeleteFlag
(
0
);
specialInformation
.
setCreateTime
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
format
(
new
Date
(),
"yyyy-MM-dd'T'HH:mm:ss"
));
esOpUtil
.
docSavaByEntity
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
,
specialInformation
.
getId
(),
specialInformation
);
}
catch
(
NumberFormatException
e
)
{
log
.
error
(
"处理异常"
);
}
}
}
private
String
genKey
(
KnowledgeParam
knowledgeParam
)
{
private
String
genKey
(
KnowledgeParam
knowledgeParam
)
{
String
type
=
(
knowledgeParam
.
getTypeIds
()
==
null
?
""
:
knowledgeParam
.
getTypeIds
());
String
type
=
(
knowledgeParam
.
getTypeIds
()
==
null
?
""
:
knowledgeParam
.
getTypeIds
());
String
knowledgeProjectId
=
(
knowledgeParam
.
getKnowledgeProjectId
()
==
null
?
""
:
knowledgeParam
.
getKnowledgeProjectId
());
String
knowledgeProjectId
=
(
knowledgeParam
.
getKnowledgeProjectId
()
==
null
?
""
:
knowledgeParam
.
getKnowledgeProjectId
());
...
...
src/main/java/com/zzsn/knowbase/util/ExcelExportUtil.java
0 → 100644
浏览文件 @
539dee42
package
com
.
zzsn
.
knowbase
.
util
;
import
org.apache.poi.hssf.usermodel.HSSFCell
;
import
org.apache.poi.hssf.usermodel.HSSFDateUtil
;
import
org.apache.poi.xssf.usermodel.XSSFCell
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
java.io.InputStream
;
import
java.text.DecimalFormat
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
ExcelExportUtil
{
/**
* 读取excel数据
*
* @param firstRow 第一行有用数据(0表示第一行)
* @param columnNum 有用数据的总列数
* @return java.util.List<java.util.List < java.lang.String>>
*/
public
static
List
<
List
<
String
>>
readExcel
(
InputStream
inputStream
,
Integer
firstRow
,
Integer
columnNum
)
throws
Exception
{
List
<
List
<
String
>>
dataList
=
new
ArrayList
<>();
//获取整个excel
XSSFWorkbook
hb
=
new
XSSFWorkbook
(
inputStream
);
int
sheets
=
hb
.
getNumberOfSheets
();
for
(
int
i
=
0
;
i
<
sheets
;
i
++)
{
XSSFSheet
sheet
=
hb
.
getSheetAt
(
i
);
//第一行
int
firstRowNum
=
sheet
.
getFirstRowNum
();
//最后一行
int
lastRowNum
=
sheet
.
getPhysicalNumberOfRows
();
for
(
int
j
=
firstRowNum
+
firstRow
;
j
<
lastRowNum
;
j
++)
{
//获取行
XSSFRow
row
=
sheet
.
getRow
(
j
);
if
(
row
!=
null
)
{
List
<
String
>
list
=
new
ArrayList
<>();
for
(
int
m
=
0
;
m
<
columnNum
;
m
++)
{
String
data
=
ExcelExportUtil
.
getValue
(
row
.
getCell
(
m
)).
trim
();
list
.
add
(
data
);
}
dataList
.
add
(
list
);
}
}
}
return
dataList
;
}
public
static
String
getValue
(
XSSFCell
xssfCell
)
{
if
(
xssfCell
==
null
||
xssfCell
.
toString
().
trim
().
equals
(
""
))
{
return
""
;
}
int
cellType
=
xssfCell
.
getCellType
();
if
(
cellType
==
HSSFCell
.
CELL_TYPE_NUMERIC
)
{
if
(
HSSFDateUtil
.
isCellDateFormatted
(
xssfCell
))
{
return
TimeUtil
.
getDateString
(
xssfCell
.
getDateCellValue
());
}
else
{
//防止数字变成科学计数法的形式
DecimalFormat
df
=
new
DecimalFormat
(
"0"
);
return
df
.
format
(
xssfCell
.
getNumericCellValue
());
}
}
else
{
return
xssfCell
.
getStringCellValue
();
}
}
}
src/main/java/com/zzsn/knowbase/util/TimeUtil.java
0 → 100644
浏览文件 @
539dee42
差异被折叠。
点击展开。
src/main/java/com/zzsn/knowbase/vo/KnowledgeVO.java
浏览文件 @
539dee42
...
@@ -33,6 +33,7 @@ public class KnowledgeVO {
...
@@ -33,6 +33,7 @@ public class KnowledgeVO {
private
String
author
;
private
String
author
;
private
Integer
score
;
private
Integer
score
;
private
Integer
verifyStatus
;
private
Integer
verifyStatus
;
private
Integer
importData
;
private
List
<
Content
>
contents
;
private
List
<
Content
>
contents
;
private
List
<
KnowFile
>
files
;
private
List
<
KnowFile
>
files
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论