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 个修改的文件
包含
511 行增加
和
3 行删除
+511
-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
+284
-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
package
com
.
zzsn
.
knowbase
.
util
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.Locale
;
import
java.util.TimeZone
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
public
class
TimeUtil
{
static
SimpleDateFormat
format
;
private
static
Pattern
patDate0
=
Pattern
.
compile
(
"\\d+-\\d{1,2}-\\d+"
);
private
static
Pattern
patDate1
=
Pattern
.
compile
(
"\\d+[-\\s/年月日]\\d{1,2}-\\d+"
,
Pattern
.
CASE_INSENSITIVE
);
private
static
Pattern
patDate2
=
Pattern
.
compile
(
"\\d+\\s+[A-Z][a-z]+\\s+\\d+"
);
private
static
Pattern
patDate3
=
Pattern
.
compile
(
"[A-Z][a-z.]+\\s+\\d{1,2},\\s+\\d+"
);
private
static
Pattern
patDate4
=
Pattern
.
compile
(
"\\d+年\\d+月\\d+日"
);
private
static
Pattern
patDate4_1
=
Pattern
.
compile
(
"\\d+年\\d+月\\d+号"
);
private
static
Pattern
patDate5
=
Pattern
.
compile
(
"\\d+/\\d{1,2}/\\d+"
);
private
static
Pattern
patDate6
=
Pattern
.
compile
(
"\\d+\\.\\d+\\.\\d+"
);
private
static
Date
thresholdDate
=
null
;
private
static
SimpleDateFormat
formatter0
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
private
static
SimpleDateFormat
formatter0_1
=
new
SimpleDateFormat
(
"yy-MM-dd"
);
private
static
SimpleDateFormat
formatter2
=
new
SimpleDateFormat
(
"dd MMM yyyy"
,
Locale
.
ENGLISH
);
private
static
SimpleDateFormat
formatter3_1
=
new
SimpleDateFormat
(
"MMM dd, yyyy"
,
Locale
.
ENGLISH
);
private
static
SimpleDateFormat
formatter3_2
=
new
SimpleDateFormat
(
"MMM. dd, yyyy"
,
Locale
.
ENGLISH
);
private
static
SimpleDateFormat
formatter4
=
new
SimpleDateFormat
(
"yyyy年MM月dd"
);
private
static
SimpleDateFormat
formatter5_1
=
new
SimpleDateFormat
(
"yyyy/MM/dd"
);
private
static
SimpleDateFormat
formatter5_2
=
new
SimpleDateFormat
(
"dd/MM/yyyy"
);
private
static
SimpleDateFormat
formatter5_4
=
new
SimpleDateFormat
(
"yy/MM/dd"
);
private
static
SimpleDateFormat
formatter5_3
=
new
SimpleDateFormat
(
"dd/MM/yy"
);
private
static
SimpleDateFormat
formatter6
=
new
SimpleDateFormat
(
"yyyy.MM.dd"
);
private
static
SimpleDateFormat
formatter6_1
=
new
SimpleDateFormat
(
"dd.MM.yyyy"
);
public
static
String
dateToString
(
Date
date
)
{
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
return
TimeUtil
.
format
.
format
(
date
);
}
public
static
String
getPublishDate
(
String
raw
)
{
if
(
raw
==
null
)
{
return
null
;
}
Date
date
=
transDate
(
raw
);
if
(
date
!=
null
)
{
Calendar
c
=
Calendar
.
getInstance
(
TimeZone
.
getTimeZone
(
"Asia/Shanghai"
));
c
.
setTime
(
date
);
Pattern
p
=
Pattern
.
compile
(
"(\\d{1,2})[:|:](\\d{1,2})([:|:]\\d{1,2}){0,1}"
);
Matcher
m
=
p
.
matcher
(
raw
);
while
(
m
.
find
())
{
String
hour
=
m
.
group
(
1
);
if
(
hour
!=
null
)
{
c
.
set
(
Calendar
.
HOUR_OF_DAY
,
Integer
.
parseInt
(
hour
));
}
String
minute
=
m
.
group
(
2
);
if
(
minute
!=
null
)
{
c
.
set
(
Calendar
.
MINUTE
,
Integer
.
parseInt
(
minute
));
}
String
second
=
m
.
group
(
3
);
if
(
second
!=
null
)
{
c
.
set
(
Calendar
.
SECOND
,
Integer
.
parseInt
(
second
.
replaceAll
(
"[::]"
,
""
)));
}
}
return
format
(
c
.
getTime
(),
"yyyy-MM-dd"
);
}
else
{
return
null
;
}
}
private
static
String
format
(
Date
d
,
String
format
)
{
if
(
d
==
null
)
return
""
;
SimpleDateFormat
myFormatter
=
new
SimpleDateFormat
(
format
);
return
myFormatter
.
format
(
d
);
}
private
static
Date
transDate
(
String
content
)
{
try
{
Matcher
dateMatcher
=
null
;
Date
date
=
null
;
if
(((
dateMatcher
=
patDate0
.
matcher
(
content
)).
find
()
&&
((
date
=
transDate
(
dateMatcher
.
group
(),
0
))
!=
null
))
||
((
dateMatcher
=
patDate1
.
matcher
(
content
)).
find
()
&&
((
date
=
transDate
(
dateMatcher
.
group
(),
1
))
!=
null
))
||
((
dateMatcher
=
patDate2
.
matcher
(
content
)).
find
()
&&
((
date
=
transDate
(
dateMatcher
.
group
(),
2
))
!=
null
))
||
((
dateMatcher
=
patDate3
.
matcher
(
content
)).
find
()
&&
((
date
=
transDate
(
dateMatcher
.
group
(),
3
))
!=
null
))
||
((
dateMatcher
=
patDate4
.
matcher
(
content
)).
find
()
&&
((
date
=
transDate
(
dateMatcher
.
group
(),
4
))
!=
null
))
||
((
dateMatcher
=
patDate4_1
.
matcher
(
content
)).
find
()
&&
((
date
=
transDate
(
dateMatcher
.
group
(),
4
))
!=
null
))
||
((
dateMatcher
=
patDate5
.
matcher
(
content
)).
find
()
&&
((
date
=
transDate
(
dateMatcher
.
group
(),
5
))
!=
null
))
||
((
dateMatcher
=
patDate6
.
matcher
(
content
)).
find
()
&&
((
date
=
transDate
(
dateMatcher
.
group
(),
6
))
!=
null
))
)
{
return
date
;
}
return
null
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
private
static
Date
transDate
(
String
source
,
int
type
)
{
try
{
if
(
thresholdDate
==
null
)
{
thresholdDate
=
formatter0
.
parse
(
"1970-01-01"
);
}
Date
date
=
null
;
switch
(
type
)
{
case
0
:
date
=
formatter0
.
parse
(
source
);
if
(
date
.
before
(
thresholdDate
))
{
date
=
formatter0_1
.
parse
(
source
);
if
(
date
.
before
(
thresholdDate
))
{
return
null
;
}
}
break
;
case
1
:
//date = formatter1.parse(source);
break
;
case
2
:
date
=
formatter2
.
parse
(
source
);
break
;
case
3
:
try
{
date
=
formatter3_1
.
parse
(
source
);
}
catch
(
Exception
e
)
{
date
=
null
;
}
if
(
date
==
null
)
{
date
=
formatter3_2
.
parse
(
source
);
}
break
;
case
4
:
date
=
formatter4
.
parse
(
source
);
break
;
case
5
:
try
{
date
=
formatter5_1
.
parse
(
source
);
}
catch
(
Exception
e
)
{
date
=
null
;
}
if
((
date
==
null
)
||
(
date
.
before
(
thresholdDate
)))
{
date
=
formatter5_2
.
parse
(
source
);
}
if
((
date
==
null
)
||
(
date
.
before
(
thresholdDate
)))
{
date
=
formatter5_3
.
parse
(
source
);
}
if
((
date
==
null
)
||
(
date
.
before
(
thresholdDate
)))
{
date
=
formatter5_4
.
parse
(
source
);
}
break
;
case
6
:
try
{
date
=
formatter6
.
parse
(
source
);
}
catch
(
ParseException
e
)
{
date
=
null
;
}
if
((
date
==
null
)
||
(
date
.
before
(
thresholdDate
)))
{
date
=
formatter6_1
.
parse
(
source
);
}
break
;
}
if
((
date
!=
null
)
&&
(
date
.
before
(
thresholdDate
)))
{
return
null
;
}
return
date
;
}
catch
(
Exception
e
)
{
return
null
;
}
}
/**
* 获取前7天的时间
* @param date
* @return
*/
public
static
String
beforeWeek
(
Date
date
){
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Calendar
c
=
Calendar
.
getInstance
();
//设置为指定日期
c
.
setTime
(
date
);
c
.
add
(
Calendar
.
DATE
,-
7
);
Date
time
=
c
.
getTime
();
return
format
.
format
(
time
);
}
/**
* 获取前30天的时间
* @param date
* @return
*/
public
static
String
beforeMonth
(
Date
date
){
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Calendar
c
=
Calendar
.
getInstance
();
//设置为指定日期
c
.
setTime
(
date
);
c
.
add
(
Calendar
.
DATE
,-
30
);
return
format
.
format
(
c
.
getTime
())
+
" 00:00:00"
;
}
public
static
String
getDateString
(
Date
date
)
{
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
return
TimeUtil
.
format
.
format
(
date
);
}
public
static
Date
StringToDate
(
String
dateString
)
throws
ParseException
{
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
return
format
.
parse
(
dateString
);
}
public
static
String
dateConvert
(
String
dateString
)
throws
ParseException
{
format
=
new
SimpleDateFormat
(
"MM/dd/yyyy"
);
Date
parse
=
format
.
parse
(
dateString
);
return
getDateString
(
parse
);
}
/**
* 获取指定某一天的开始时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public
static
Long
getDailyStartTime
(
Long
timeStamp
,
String
timeZone
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTimeZone
(
TimeZone
.
getTimeZone
(
timeZone
));
calendar
.
setTimeInMillis
(
timeStamp
);
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
calendar
.
set
(
Calendar
.
MINUTE
,
0
);
calendar
.
set
(
Calendar
.
MILLISECOND
,
0
);
return
calendar
.
getTimeInMillis
();
}
/**
* 获取指定某一天的结束时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public
static
Long
getDailyEndTime
(
Long
timeStamp
,
String
timeZone
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTimeZone
(
TimeZone
.
getTimeZone
(
timeZone
));
calendar
.
setTimeInMillis
(
timeStamp
);
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
23
);
calendar
.
set
(
Calendar
.
MINUTE
,
59
);
calendar
.
set
(
Calendar
.
SECOND
,
59
);
calendar
.
set
(
Calendar
.
MILLISECOND
,
999
);
return
calendar
.
getTimeInMillis
();
}
/**
* 判断两个时间是否为同一天
* @param date1
* @param date2
* @return
*/
public
static
boolean
isSameDay
(
final
Date
date1
,
final
Date
date2
)
{
if
(
date1
==
null
||
date2
==
null
)
{
return
false
;
}
final
Calendar
cal1
=
Calendar
.
getInstance
();
cal1
.
setTime
(
date1
);
final
Calendar
cal2
=
Calendar
.
getInstance
();
cal2
.
setTime
(
date2
);
return
isSame
(
cal1
,
cal2
);
}
private
static
boolean
isSame
(
final
Calendar
cal1
,
final
Calendar
cal2
)
{
if
(
cal1
==
null
||
cal2
==
null
)
{
return
false
;
}
return
(
cal1
.
get
(
Calendar
.
ERA
)
==
cal2
.
get
(
Calendar
.
ERA
)
&&
cal1
.
get
(
Calendar
.
YEAR
)
==
cal2
.
get
(
Calendar
.
YEAR
)
&&
cal1
.
get
(
Calendar
.
DAY_OF_YEAR
)
==
cal2
.
get
(
Calendar
.
DAY_OF_YEAR
));
}
}
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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论