Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
a06e9b89
Commit
a06e9b89
authored
Jul 12, 2022
by
高建强
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
item:知识库导入迁移
parent
aaccb931
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
731 additions
and
26 deletions
+731
-26
ExcelParserOld.java
...in/amos/knowledgebase/face/util/excel/ExcelParserOld.java
+486
-0
DocLibraryResource.java
...oin/amos/knowledgebase/controller/DocLibraryResource.java
+20
-5
DocCategoryService.java
...n/amos/knowledgebase/face/service/DocCategoryService.java
+10
-8
DocLibraryService.java
...in/amos/knowledgebase/face/service/DocLibraryService.java
+215
-13
No files found.
amos-boot-module/amos-boot-module-api/amos-boot-module-knowledgebase-api/src/main/java/com/yeejoin/amos/knowledgebase/face/util/excel/ExcelParserOld.java
0 → 100644
View file @
a06e9b89
package
com
.
yeejoin
.
amos
.
knowledgebase
.
face
.
util
.
excel
;
import
com.baomidou.mybatisplus.core.toolkit.Sequence
;
import
com.yeejoin.amos.knowledgebase.face.model.KnowledgeDynamicsOptionModel
;
import
com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagInstanceModel
;
import
com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagModel
;
import
com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagValueModel
;
import
com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocContent
;
import
com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDynamicsValue
;
import
com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagInstance
;
import
com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagValue
;
import
com.yeejoin.amos.knowledgebase.face.util.DocSortUtil
;
import
lombok.Data
;
import
lombok.Getter
;
import
lombok.NonNull
;
import
org.apache.poi.ss.usermodel.Cell
;
import
org.apache.poi.ss.usermodel.Row
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
org.typroject.tyboot.core.foundation.exception.BaseException
;
import
org.typroject.tyboot.core.foundation.utils.Bean
;
import
org.typroject.tyboot.core.foundation.utils.DateUtil
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
java.text.DecimalFormat
;
import
java.util.*
;
import
java.util.regex.Pattern
;
/**
* excel格式的战例解析--定制化
*
* @author tiantao
*/
public
class
ExcelParserOld
{
private
static
final
Pattern
NUMBER_STRING_PATTEN
=
Pattern
.
compile
(
"^[-\\+]?[\\d]*$"
);
private
static
final
String
DATE_FORMAT
=
"yyyy-MM-dd HH:mm:ss"
;
private
static
final
String
DATE_FORMAT4_HTML
=
"yyyy-MM-dd HH:mm"
;
public
static
final
String
VALUE_TAG_FIELD_SINGLEVALUE
=
"singleValue"
;
//单值字段名
public
static
final
String
VALUE_TAG_FIELD_RANGE_MAX
=
"rangeMax"
;
//范围值 上界
public
static
final
String
VALUE_TAG_FIELD_RANGE_MIN
=
"rangeMin"
;
//范围值 下界
public
static
final
String
VALUE_TAG_FIELD_TEXT
=
"text"
;
//文本值
public
static
final
String
VALUE_TAG_FIELD_DATE_H
=
"dateH"
;
//时间,年月日时分秒
public
static
final
String
VALUE_TAG_FIELD_ENUM_NAME
=
"enumName"
;
// 枚举类型字段名
public
static
final
String
DOC_STATUS_UNPUBLISHED
=
"UNPUBLISHED"
;
//文档发布状态--未发布
public
static
final
String
DOC_STATUS_PUBLISHED
=
"PUBLISHED"
;
//文
public
static
final
String
MARKING_TYPE_DOC
=
"DOC"
;
// 标记类型--文档标签
public
static
final
String
MARKING_TYPE_CONTENT
=
"CONTENT"
;
// 标记类型--内容标签
/**
* 审核状态--待提交
*/
public
static
final
String
DOC_AUDIT_STATUS_SAVED
=
"SAVED"
;
/**
* 审核状态--待审核
*/
public
static
final
String
DOC_AUDIT_STATUS_SUBMITTED
=
"SUBMITTED"
;
/**
* 审核状态--通过
*/
public
static
final
String
DOC_AUDIT_STATUS_PASSED
=
"PASSED"
;
/**
* 审核状态--驳回
*/
public
static
final
String
DOC_AUDIT_STATUS_REJECTED
=
"REJECTED"
;
private
static
final
String
TAG_INSTANCE_LABEL
=
"label"
;
private
static
String
DELETE_SYNC_PLAN_TOPIC
=
"DELETE_SYNC_PLAN_DOC"
;
private
static
String
getHolderRegex
(
Integer
index
)
{
return
"#\\{knowledge-"
+
index
+
"\\}"
;
}
private
static
String
getHolderAllRegex
()
{
return
"#\\{knowledge-\\d+\\}"
;
}
private
static
String
removeAllHolder
(
String
str
)
{
return
str
.
replaceAll
(
getHolderAllRegex
(),
""
);
}
private
static
String
replaceHolder
(
String
str
,
Integer
index
,
String
text
)
{
if
(
text
==
null
)
{
text
=
""
;
}
return
str
.
replaceAll
(
getHolderRegex
(
index
),
text
);
}
/**
* 配置信息中涉及的标签列表以id为key
*/
private
final
Map
<
Long
,
KnowledgeTagModel
>
tagMap
;
/**
* 导入配置
*/
private
final
Map
<
String
,
ExcelImportConfig
>
excelConfigMap
;
/**
* 文档动态字段数据类型Map
*/
private
final
Map
<
String
,
KnowledgeDynamicsOptionModel
>
fieldTypeMap
;
/**
* 标签的值类型
*/
private
final
Map
<
Long
,
String
>
tagValueTypeMap
;
/**
* 涉及的枚举信息,以分组为外层key,中文值为内层key,英文值为value
*/
private
final
Map
<
String
,
Map
<
String
,
String
>>
enumCnEnMap
;
/**
* 标签的单位
*/
private
final
Map
<
Long
,
String
>
tagUnitMap
;
/**
* 解析的数据及返回结果数据
*/
private
List
<
ImportResult
>
ImportResults
=
new
ArrayList
<>();
private
TablesDataList
tablesDataList
=
new
TablesDataList
();
private
Sequence
sequence
;
public
List
<
ImportResult
>
getImportResults
()
{
return
ImportResults
;
}
private
Date
now
=
new
Date
();
private
final
String
orgCode
;
public
ExcelParserOld
(
@NonNull
Map
<
Long
,
KnowledgeTagModel
>
tagMap
,
@NonNull
Map
<
String
,
ExcelImportConfig
>
excelConfigMap
,
Map
<
String
,
KnowledgeDynamicsOptionModel
>
fieldTypeMap
,
@NonNull
Map
<
Long
,
String
>
tagValueTypeMap
,
@NonNull
Map
<
String
,
Map
<
String
,
String
>>
enumCnEnMap
,
@NonNull
Map
<
Long
,
String
>
tagUnitMap
,
@NonNull
Sequence
sequence
,
String
orgCode
)
{
this
.
tagMap
=
Collections
.
unmodifiableMap
(
tagMap
);
this
.
excelConfigMap
=
excelConfigMap
;
this
.
fieldTypeMap
=
Collections
.
unmodifiableMap
(
fieldTypeMap
);
this
.
tagValueTypeMap
=
Collections
.
unmodifiableMap
(
tagValueTypeMap
);
this
.
enumCnEnMap
=
Collections
.
unmodifiableMap
(
enumCnEnMap
);
this
.
tagUnitMap
=
Collections
.
unmodifiableMap
(
tagUnitMap
);
this
.
sequence
=
sequence
;
this
.
orgCode
=
orgCode
;
}
/**
* 解析表格行
*
* @param row 表格行对象
*/
public
void
parseRow
(
Row
row
,
Map
<
String
,
Long
>
typeValueMap
)
{
try
{
String
typeValue
=
convertCellValueToString
(
row
.
getCell
(
1
));
if
(
ValidationUtil
.
isEmpty
(
typeValue
)
||
ValidationUtil
.
isEmpty
(
typeValueMap
.
get
(
typeValue
)))
{
throw
new
BadRequest
(
"缺少基本信息"
);
}
ExcelImportConfig
excelConfig
=
this
.
excelConfigMap
.
get
(
String
.
valueOf
(
typeValueMap
.
get
(
typeValue
)));
String
docTitle
=
convertCellValueToString
(
row
.
getCell
(
excelConfig
.
getTitleColumn
()));
// String docDirectory = convertCellValueToString(row.getCell(excelConfig.getDirectoryColumn()));
String
docDirectory
=
excelConfig
.
getDirectoryColumn
();
if
(
ValidationUtil
.
isEmpty
(
docTitle
)
||
ValidationUtil
.
isEmpty
(
docDirectory
))
{
throw
new
BadRequest
(
"缺少基本信息"
);
}
Long
directoryId
=
Long
.
parseLong
(
docDirectory
);
// 创建文档
KnowledgeDocContent
docContent
=
getNewDoc
(
excelConfig
);
// 设置文档分类
docContent
.
setDocTitle
(
docTitle
);
docContent
.
setDirectoryId
(
directoryId
);
// 创建动态字段
List
<
KnowledgeDynamicsValue
>
dynamicsValues
=
getDynamicsValueList
(
excelConfig
,
row
,
docContent
);
// 创建标签实例
List
<
KnowledgeTagInstance
>
tagInstances
=
new
ArrayList
<>();
// 以及标签值实例
List
<
KnowledgeTagValue
>
tagValues
=
new
ArrayList
<>();
Map
<
Long
,
List
<
Integer
>>
tagColumns
=
excelConfig
.
getTagColumns
();
Map
<
Integer
,
String
>
formatMap
=
excelConfig
.
getFormatMap
();
for
(
Long
tagSeq
:
tagColumns
.
keySet
())
{
if
(!
tagMap
.
containsKey
(
tagSeq
)
||
!
tagValueTypeMap
.
containsKey
(
tagSeq
))
{
continue
;
}
String
valueType
=
tagValueTypeMap
.
get
(
tagSeq
);
KnowledgeTagInstance
tagInstance
=
getTagInstance
(
tagMap
.
get
(
tagSeq
),
docContent
.
getSequenceNbr
());
switch
(
valueType
)
{
case
"single"
:
{
Integer
valueColIndex
=
tagColumns
.
get
(
tagSeq
).
get
(
0
);
String
cellValue
=
convertCellValueToString
(
row
.
getCell
(
valueColIndex
));
if
(
ValidationUtil
.
isEmpty
(
cellValue
)
||
!
NUMBER_STRING_PATTEN
.
matcher
(
cellValue
).
matches
())
{
continue
;
}
tagValues
.
add
(
getTagValue
(
tagInstance
,
VALUE_TAG_FIELD_SINGLEVALUE
,
cellValue
));
replaceHtmlHolder
(
docContent
,
valueColIndex
,
cellValue
,
cellValue
);
break
;
}
case
"date"
:
{
Integer
valueColIndex
=
tagColumns
.
get
(
tagSeq
).
get
(
0
);
String
cellValue
=
convertCellValueToString
(
row
.
getCell
(
valueColIndex
));
if
(
ValidationUtil
.
isEmpty
(
cellValue
)
||
!
formatMap
.
containsKey
(
valueColIndex
))
{
continue
;
}
try
{
Date
date
=
DateUtil
.
formatStringToDate
(
cellValue
,
formatMap
.
get
(
valueColIndex
));
cellValue
=
DateUtil
.
formatDate
(
date
,
DATE_FORMAT
);
String
htmlDateStr
=
DateUtil
.
formatDate
(
date
,
DATE_FORMAT4_HTML
);
tagValues
.
add
(
getTagValue
(
tagInstance
,
VALUE_TAG_FIELD_DATE_H
,
cellValue
));
replaceHtmlHolder
(
docContent
,
valueColIndex
,
htmlDateStr
,
cellValue
);
}
catch
(
Exception
e
)
{
continue
;
}
break
;
}
case
"text"
:
{
Integer
valueColIndex
=
tagColumns
.
get
(
tagSeq
).
get
(
0
);
String
cellValue
=
convertCellValueToString
(
row
.
getCell
(
valueColIndex
));
if
(
ValidationUtil
.
isEmpty
(
cellValue
))
{
continue
;
}
tagValues
.
add
(
getTagValue
(
tagInstance
,
VALUE_TAG_FIELD_TEXT
,
cellValue
));
replaceHtmlHolder
(
docContent
,
valueColIndex
,
cellValue
,
cellValue
);
break
;
}
case
"range"
:
if
(
tagColumns
.
get
(
tagSeq
).
size
()
>
1
)
{
Integer
valueColIndex1
=
tagColumns
.
get
(
tagSeq
).
get
(
0
);
String
cellValue1
=
convertCellValueToString
(
row
.
getCell
(
valueColIndex1
));
Integer
valueColIndex2
=
tagColumns
.
get
(
tagSeq
).
get
(
1
);
String
cellValue2
=
convertCellValueToString
(
row
.
getCell
(
valueColIndex2
));
if
(
ValidationUtil
.
isEmpty
(
cellValue1
)
&&
ValidationUtil
.
isEmpty
(
cellValue2
)
||
!
NUMBER_STRING_PATTEN
.
matcher
(
cellValue1
).
matches
()
||
!
NUMBER_STRING_PATTEN
.
matcher
(
cellValue2
).
matches
())
{
continue
;
}
if
(!
ValidationUtil
.
isEmpty
(
cellValue1
))
{
tagValues
.
add
(
getTagValue
(
tagInstance
,
VALUE_TAG_FIELD_RANGE_MIN
,
cellValue1
));
replaceHtmlHolder
(
docContent
,
valueColIndex1
,
cellValue1
,
cellValue1
);
}
if
(!
ValidationUtil
.
isEmpty
(
cellValue2
))
{
tagValues
.
add
(
getTagValue
(
tagInstance
,
VALUE_TAG_FIELD_RANGE_MAX
,
cellValue2
));
replaceHtmlHolder
(
docContent
,
valueColIndex2
,
cellValue2
,
cellValue2
);
}
}
else
{
continue
;
}
break
;
default
:
break
;
}
tagInstances
.
add
(
tagInstance
);
}
if
(
ValidationUtil
.
isEmpty
(
excelConfig
.
getTitleColumn
()))
{
throw
new
BadRequest
(
"缺少标题所在的索引信息"
);
}
replaceHtmlHolder
(
docContent
,
excelConfig
.
getTitleColumn
(),
docTitle
,
docTitle
);
docContent
.
setHtmlContent
(
removeAllHolder
(
docContent
.
getHtmlContent
()));
docContent
.
setTextContent
(
removeAllHolder
(
docContent
.
getTextContent
()));
String
textContent
=
String
.
valueOf
(
docContent
.
getTextContent
());
docContent
.
setSummary
(
textContent
.
substring
(
0
,
Math
.
min
(
300
,
textContent
.
length
())));
List
<
KnowledgeTagInstanceModel
>
docTags
=
stuffTagValues
(
tagInstances
,
tagValues
);
docContent
.
setSortStr
(
DocSortUtil
.
getSortStr
(
docTags
));
this
.
tablesDataList
.
getDocContentList
().
add
(
docContent
);
this
.
tablesDataList
.
getDynamicsValueList
().
addAll
(
dynamicsValues
);
this
.
tablesDataList
.
getTagInstanceList
().
addAll
(
tagInstances
);
this
.
tablesDataList
.
getTagValueList
().
addAll
(
tagValues
);
this
.
ImportResults
.
add
(
new
ImportResult
(
row
.
getRowNum
()));
}
catch
(
BaseException
e
)
{
this
.
ImportResults
.
add
(
new
ImportResult
(
row
.
getRowNum
(),
e
.
getMessage
()));
}
catch
(
Exception
e
)
{
this
.
ImportResults
.
add
(
new
ImportResult
(
row
.
getRowNum
(),
e
.
getStackTrace
()[
0
].
getMethodName
()));
}
}
private
List
<
KnowledgeTagInstanceModel
>
stuffTagValues
(
List
<
KnowledgeTagInstance
>
tagInstances
,
List
<
KnowledgeTagValue
>
tagValues
)
{
if
(
ValidationUtil
.
isEmpty
(
tagInstances
))
{
return
Collections
.
emptyList
();
}
ArrayList
<
KnowledgeTagInstanceModel
>
resList
=
Bean
.
toModels
(
tagInstances
,
KnowledgeTagInstanceModel
.
class
);
Map
<
Object
,
KnowledgeTagInstanceModel
>
instanceModelMap
=
Bean
.
listToMap
(
resList
,
"sequenceNbr"
,
KnowledgeTagInstanceModel
.
class
);
if
(!
ValidationUtil
.
isEmpty
(
tagValues
))
{
tagValues
.
forEach
(
tagValue
->
{
KnowledgeTagInstanceModel
instanceModel
=
instanceModelMap
.
get
(
tagValue
.
getInstanceSeq
());
List
<
KnowledgeTagValueModel
>
tagValueModels
=
instanceModel
.
getTagValues
();
if
(
null
==
tagValueModels
)
{
tagValueModels
=
new
ArrayList
<>();
instanceModel
.
setTagValues
(
tagValueModels
);
}
tagValueModels
.
add
(
Bean
.
toModel
(
tagValue
,
new
KnowledgeTagValueModel
()));
});
}
return
resList
;
}
private
void
replaceHtmlHolder
(
KnowledgeDocContent
docContent
,
Integer
colIndex
,
String
contentValue
,
String
textValue
)
{
docContent
.
setHtmlContent
(
replaceHolder
(
docContent
.
getHtmlContent
(),
colIndex
,
contentValue
));
docContent
.
setTextContent
(
replaceHolder
(
docContent
.
getTextContent
(),
colIndex
,
textValue
));
}
/**
* 获取解析到的数据列表,并刷新以备下一波解析
*
* @return 数据列表合集
*/
public
TablesDataList
getAndFlushDatas
()
{
TablesDataList
res
=
this
.
tablesDataList
;
this
.
tablesDataList
=
new
TablesDataList
();
return
res
;
}
/**
* 创建一个新的文档
*
* @return
*/
private
KnowledgeDocContent
getNewDoc
(
ExcelImportConfig
excelConfig
)
{
KnowledgeDocContent
docContent
=
new
KnowledgeDocContent
();
docContent
.
setSequenceNbr
(
sequence
.
nextId
());
docContent
.
setRecDate
(
now
);
docContent
.
setRecUserId
(
RequestContext
.
getExeUserId
());
docContent
.
setUserId
(
RequestContext
.
getExeUserId
());
docContent
.
setCreateTime
(
now
);
docContent
.
setAgencyCode
(
RequestContext
.
getAgencyCode
());
docContent
.
setOrgCode
(
this
.
orgCode
);
docContent
.
setHtmlContent
(
excelConfig
.
getHtmlModule
());
docContent
.
setTextContent
(
excelConfig
.
getSummaryModule
());
docContent
.
setDocStatus
(
DOC_STATUS_UNPUBLISHED
);
docContent
.
setAuditStatus
(
DOC_AUDIT_STATUS_SAVED
);
docContent
.
setHaveAttachment
(
false
);
return
docContent
;
}
private
List
<
KnowledgeDynamicsValue
>
getDynamicsValueList
(
ExcelImportConfig
excelConfig
,
Row
row
,
KnowledgeDocContent
docContent
)
{
List
<
KnowledgeDynamicsValue
>
dynamicsValues
=
new
ArrayList
<>();
Map
<
String
,
Integer
>
basicColumns
=
excelConfig
.
getBasicColumns
();
Map
<
Integer
,
String
>
enumMap
=
excelConfig
.
getEnumMap
();
for
(
String
fieldName
:
basicColumns
.
keySet
())
{
Integer
colIndex
=
basicColumns
.
get
(
fieldName
);
Cell
cell
=
row
.
getCell
(
colIndex
);
KnowledgeDynamicsOptionModel
optionModel
=
fieldTypeMap
.
get
(
fieldName
);
if
(
null
==
optionModel
)
{
throw
new
BadRequest
(
"无法识别的字段名:"
+
fieldName
);
}
String
type
=
fieldTypeMap
.
get
(
fieldName
).
getDataType
();
String
cellValue
=
convertCellValueToString
(
cell
);
if
(
type
.
toUpperCase
().
equals
(
"ENUM"
))
{
if
(!
enumMap
.
containsKey
(
colIndex
))
{
throw
new
BadRequest
(
"缺少枚举字段的配置信息:"
+
fieldName
);
}
String
enumName
=
enumMap
.
get
(
colIndex
);
cellValue
=
enumCnEnMap
.
get
(
enumName
).
get
(
cellValue
);
}
dynamicsValues
.
add
(
getNewDynamicsField
(
optionModel
,
cellValue
,
docContent
.
getSequenceNbr
()));
// 替换模板占位字符
replaceHtmlHolder
(
docContent
,
colIndex
,
cellValue
,
cellValue
);
}
return
dynamicsValues
;
}
private
KnowledgeDynamicsValue
getNewDynamicsField
(
KnowledgeDynamicsOptionModel
optionModel
,
String
cellValue
,
Long
docSequenceNbr
)
{
KnowledgeDynamicsValue
dynamicsValue
=
new
KnowledgeDynamicsValue
();
dynamicsValue
.
setSequenceNbr
(
sequence
.
nextId
());
dynamicsValue
.
setRecDate
(
now
);
dynamicsValue
.
setRecUserId
(
RequestContext
.
getExeUserId
());
dynamicsValue
.
setFieldName
(
optionModel
.
getFieldName
());
dynamicsValue
.
setFieldValue
(
ValidationUtil
.
isEmpty
(
cellValue
)
?
""
:
cellValue
);
dynamicsValue
.
setDataType
(
optionModel
.
getDataType
());
dynamicsValue
.
setAgencyCode
(
RequestContext
.
getAgencyCode
());
dynamicsValue
.
setFieldLabel
(
optionModel
.
getFieldLabel
());
dynamicsValue
.
setGroupSeq
(
optionModel
.
getGroupSeq
());
dynamicsValue
.
setQueryStrategy
(
optionModel
.
getQueryStrategy
());
dynamicsValue
.
setInstanceId
(
docSequenceNbr
);
dynamicsValue
.
setOptionSeq
(
optionModel
.
getSequenceNbr
());
return
dynamicsValue
;
}
KnowledgeTagInstance
getTagInstance
(
KnowledgeTagModel
tagModel
,
Long
docSequenceNbr
)
{
KnowledgeTagInstance
tagInstance
=
new
KnowledgeTagInstance
();
tagInstance
.
setSequenceNbr
(
sequence
.
nextId
());
tagInstance
.
setRecDate
(
now
);
tagInstance
.
setRecUserId
(
RequestContext
.
getExeUserId
());
tagInstance
.
setAgencyCode
(
RequestContext
.
getAgencyCode
());
tagInstance
.
setTagSeq
(
tagModel
.
getSequenceNbr
());
tagInstance
.
setTargetSeq
(
docSequenceNbr
);
tagInstance
.
setTagType
(
tagModel
.
getTagType
());
tagInstance
.
setTagName
(
tagModel
.
getTagName
());
tagInstance
.
setMarkingType
(
MARKING_TYPE_DOC
);
return
tagInstance
;
}
/**
* 创建一个新的标签值实例
*
* @param tagInstance 实例对象
* @param value 值
* @return Model
*/
private
KnowledgeTagValue
getTagValue
(
KnowledgeTagInstance
tagInstance
,
String
fieldName
,
String
value
)
{
KnowledgeTagValue
tagValue
=
new
KnowledgeTagValue
();
tagValue
.
setSequenceNbr
(
sequence
.
nextId
());
tagValue
.
setRecDate
(
now
);
tagValue
.
setRecUserId
(
RequestContext
.
getExeUserId
());
tagValue
.
setAgencyCode
(
RequestContext
.
getAgencyCode
());
tagValue
.
setInstanceSeq
(
tagInstance
.
getSequenceNbr
());
tagValue
.
setFieldName
(
fieldName
);
tagValue
.
setTagValue
(
value
);
tagValue
.
setUnit
(
tagUnitMap
.
get
(
tagInstance
.
getTagSeq
()));
return
tagValue
;
}
/**
* 获取单元格的文本内容
*
* @param cell
* @return
*/
public
static
String
convertCellValueToString
(
Cell
cell
)
{
if
(
cell
==
null
)
{
return
null
;
}
String
returnValue
=
null
;
switch
(
cell
.
getCellType
())
{
//数字
case
NUMERIC:
Double
doubleValue
=
cell
.
getNumericCellValue
();
// 格式化科学计数法,取一位整数
DecimalFormat
df
=
new
DecimalFormat
(
"0"
);
returnValue
=
df
.
format
(
doubleValue
);
break
;
//字符串
case
STRING:
returnValue
=
cell
.
getStringCellValue
().
trim
();
break
;
//布尔
case
BOOLEAN:
Boolean
booleanValue
=
cell
.
getBooleanCellValue
();
returnValue
=
booleanValue
.
toString
();
break
;
// 空值
case
BLANK:
break
;
// 公式
case
FORMULA:
returnValue
=
cell
.
getCellFormula
();
break
;
// 故障
case
ERROR:
break
;
default
:
}
return
returnValue
;
}
/**
* 数据涉及对象列表缓存
*/
@Getter
public
class
TablesDataList
{
private
List
<
KnowledgeDocContent
>
docContentList
=
new
ArrayList
<>();
private
List
<
KnowledgeTagInstance
>
tagInstanceList
=
new
ArrayList
<>();
private
List
<
KnowledgeTagValue
>
tagValueList
=
new
ArrayList
<>();
private
List
<
KnowledgeDynamicsValue
>
dynamicsValueList
=
new
ArrayList
<>();
}
@Data
class
ImportResult
{
// 行号
private
Integer
rowIndex
;
// 是否导入成功
private
boolean
success
;
// 错误信息
private
String
errorMessege
;
ImportResult
(
Integer
rowIndex
,
String
errorMessege
)
{
this
.
rowIndex
=
rowIndex
;
this
.
success
=
false
;
this
.
errorMessege
=
errorMessege
;
}
ImportResult
(
Integer
rowIndex
)
{
this
.
rowIndex
=
rowIndex
;
this
.
success
=
true
;
}
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-knowledgebase-biz/src/main/java/com/yeejoin/amos/knowledgebase/controller/DocLibraryResource.java
View file @
a06e9b89
package
com
.
yeejoin
.
amos
.
knowledgebase
.
controller
;
package
com
.
yeejoin
.
amos
.
knowledgebase
.
controller
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
com.alibaba.fastjson.JSONArray
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
@@ -212,18 +214,31 @@ public class DocLibraryResource {
...
@@ -212,18 +214,31 @@ public class DocLibraryResource {
docLibraryService
.
export
(
id
,
type
,
response
);
docLibraryService
.
export
(
id
,
type
,
response
);
}
}
// @TycloudOperation(ApiLevel = UserType.AGENCY)
// @ApiOperation(value = "导入excel文档")
// @RequestMapping(value = "/import", method = RequestMethod.POST)
// public ResponseModel importExcel(@RequestPart(value = "file") MultipartFile file,
// @RequestPart(value = "module") String moduleStr) {
// ExcelImportConfig excelConfig;
// try {
// excelConfig = JSON.parseObject(moduleStr, ExcelImportConfig.class);
// } catch (Exception e) {
// throw new BadRequest("模板配置信息格式有误");
// }
// return ResponseHelper.buildResponse(docLibraryService.importExcel(file, excelConfig));
// }
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@ApiOperation
(
value
=
"导入excel文档"
)
@ApiOperation
(
value
=
"导入excel文档"
)
@RequestMapping
(
value
=
"/import"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/import"
,
method
=
RequestMethod
.
POST
)
public
ResponseModel
importExcel
(
@RequestPart
(
value
=
"file"
)
MultipartFile
file
,
public
ResponseModel
importExcel
(
@RequestPart
(
value
=
"file"
)
MultipartFile
file
,
@RequestPart
(
value
=
"module"
)
String
moduleStr
)
{
@RequestPart
(
value
=
"module"
)
String
moduleStr
)
{
List
<
ExcelImportConfig
>
excelConfigList
;
ExcelImportConfig
excelConfig
;
try
{
try
{
excelConfig
=
JSON
.
parseObject
(
moduleStr
,
ExcelImportConfig
.
class
);
excelConfig
List
=
JSONArray
.
parseArray
(
moduleStr
,
ExcelImportConfig
.
class
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
BadRequest
(
"模板配置信息格式有误"
);
throw
new
BadRequest
(
"模板配置信息格式有误"
);
}
}
return
ResponseHelper
.
buildResponse
(
docLibraryService
.
importExcel
(
file
,
excelConfig
));
return
ResponseHelper
.
buildResponse
(
docLibraryService
.
importExcel
(
file
,
excelConfig
List
));
}
}
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-knowledgebase-biz/src/main/java/com/yeejoin/amos/knowledgebase/face/service/DocCategoryService.java
View file @
a06e9b89
package
com
.
yeejoin
.
amos
.
knowledgebase
.
face
.
service
;
package
com
.
yeejoin
.
amos
.
knowledgebase
.
face
.
service
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.SortedSet
;
import
java.util.TreeSet
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -257,4 +250,13 @@ public class DocCategoryService extends BaseService<KnowledgeDocCategoryModel, K
...
@@ -257,4 +250,13 @@ public class DocCategoryService extends BaseService<KnowledgeDocCategoryModel, K
List
<
KnowledgeDocCategoryModel
>
categoryModelList
=
this
.
queryForList
(
null
,
true
,
categoryName
,
parentId
);
List
<
KnowledgeDocCategoryModel
>
categoryModelList
=
this
.
queryForList
(
null
,
true
,
categoryName
,
parentId
);
return
categoryModelList
.
isEmpty
()
?
null
:
categoryModelList
.
get
(
0
);
return
categoryModelList
.
isEmpty
()
?
null
:
categoryModelList
.
get
(
0
);
}
}
public
Map
<
String
,
Long
>
getGroupNameValue
(
List
<
Long
>
ids
)
{
List
<
KnowledgeDocCategoryModel
>
list
=
this
.
queryBatchSeq
(
ids
);
Map
<
String
,
Long
>
result
=
new
HashMap
<>();
for
(
KnowledgeDocCategoryModel
knowledgeDocCategoryModel:
list
)
{
result
.
put
(
knowledgeDocCategoryModel
.
getCategoryName
(),
knowledgeDocCategoryModel
.
getSequenceNbr
());
}
return
result
;
}
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-knowledgebase-biz/src/main/java/com/yeejoin/amos/knowledgebase/face/service/DocLibraryService.java
View file @
a06e9b89
...
@@ -21,6 +21,7 @@ import com.yeejoin.amos.knowledgebase.face.util.*;
...
@@ -21,6 +21,7 @@ import com.yeejoin.amos.knowledgebase.face.util.*;
import
com.yeejoin.amos.knowledgebase.face.util.FileExporter.FileType
;
import
com.yeejoin.amos.knowledgebase.face.util.FileExporter.FileType
;
import
com.yeejoin.amos.knowledgebase.face.util.excel.ExcelImportConfig
;
import
com.yeejoin.amos.knowledgebase.face.util.excel.ExcelImportConfig
;
import
com.yeejoin.amos.knowledgebase.face.util.excel.ExcelParser
;
import
com.yeejoin.amos.knowledgebase.face.util.excel.ExcelParser
;
import
com.yeejoin.amos.knowledgebase.face.util.excel.ExcelParserOld
;
import
com.yeejoin.amos.knowledgebase.face.util.pdf.PdfBuilder
;
import
com.yeejoin.amos.knowledgebase.face.util.pdf.PdfBuilder
;
import
com.yeejoin.amos.knowledgebase.face.util.sql.BaseSqlCondition
;
import
com.yeejoin.amos.knowledgebase.face.util.sql.BaseSqlCondition
;
import
com.yeejoin.amos.knowledgebase.face.util.word.DocxBuilder
;
import
com.yeejoin.amos.knowledgebase.face.util.word.DocxBuilder
;
...
@@ -582,26 +583,221 @@ public class DocLibraryService {
...
@@ -582,26 +583,221 @@ public class DocLibraryService {
FileExporter
.
exportFile
(
fileType
,
docTitle
,
bytes
,
response
);
FileExporter
.
exportFile
(
fileType
,
docTitle
,
bytes
,
response
);
}
}
@Transactional
(
rollbackFor
=
{
Exception
.
class
,
BaseException
.
class
})
// @Transactional(rollbackFor = { Exception.class, BaseException.class })
public
List
importExcel
(
MultipartFile
file
,
ExcelImportConfig
excelConfig
)
{
// public List importExcel(MultipartFile file, List<ExcelImportConfig> excelConfigList) {
// String inputerOrg = RemoteData.getOrgWithCurUserAndRole(KnowledgeRoleName.INPUTER.getRoleName());
// if (ValidationUtil.isEmpty(inputerOrg)) {
// throw new RequestForbidden("非录入者角色用户无权录入");
// }
// int finishedNum = 0;
//
// Set<Long> involvedTagIds = new HashSet<>();
// Set<String> enumNameList = new HashSet<>();
// Map<String, ExcelImportConfig> excelConfigMap = new HashMap();
// List<Long> directoryList = new ArrayList<>();
// for (ExcelImportConfig excelConfig : excelConfigList) {
// if (!excelConfig.check()) {
// throw new BadRequest("模板配置数据有误");
// }
// excelConfigMap.put(excelConfig.getDirectoryColumn(), excelConfig);
// Set<Long> involvedTags = excelConfig.getTagColumns().keySet();
// involvedTagIds.addAll(involvedTags);
// Set<String> enumNames = new HashSet<>(excelConfig.getEnumMap().values());
// enumNameList.addAll(enumNames);
// directoryList.add(Long.parseLong(excelConfig.getDirectoryColumn()));
// }
// Map<String, Long> directoryMap = docCategoryService.getGroupNameValue(directoryList);
// Workbook workbook = getBookWithFile(file);
// Sheet sheet = workbook.getSheetAt(0);
// if (sheet == null) {
// throw new BadRequest("文档sheet页为空");
// }
// int rowNumber = getRowNumber(sheet, excelConfigList.get(0));
// if (rowNumber <= 0) {
// throw new BadRequest("数据条目为零");
// }
//
// // 组装标签信息Map
// Map<Long, KnowledgeTagModel> tagMap = new HashMap();
// if (!ValidationUtil.isEmpty(involvedTagIds)) {
// List<KnowledgeTagModel> tagModelList = tagService.queryByIds(involvedTagIds);
// for (KnowledgeTagModel tagModel : tagModelList) {
// tagMap.put(tagModel.getSequenceNbr(), tagModel);
// }
// }
// // 组装文档动态字段数据类型Map
// Map<String, KnowledgeDynamicsOptionModel> fieldTypeMap = new HashMap<>();
// List<KnowledgeDynamicsOptionModel> optionModels = dynamicsOptionService
// .queryByFunctional(RequestContext.getAppKey(), DynamicsFunctional.DOC_BASEINFO.name());
// for (KnowledgeDynamicsOptionModel optionModel : optionModels) {
// fieldTypeMap.put(optionModel.getFieldName(), optionModel);
// }
//
// // 组装标签值类型Map
// Map<Long, String> tagValueTypeMap = new HashMap<>();
// if (!ValidationUtil.isEmpty(involvedTagIds)) {
// List<KnowledgeDynamicsValueModel> dynamicsValueList = dynamicsValueService.queryFieldValueByIds(new ArrayList(involvedTagIds), "valueType");
// for (KnowledgeDynamicsValueModel dynamicsValueModel : dynamicsValueList) {
// tagValueTypeMap.put(dynamicsValueModel.getInstanceId(), dynamicsValueModel.getFieldValue());
// }
// }
// // 组装字典中英文Map
// Map<String, Map<String, String>> enumCnEnMap = new HashMap<>();
// for (String enumName : enumNameList) {
// try {
// List<DictionarieValueModel> dictList = RemoteData.queryDict(enumName);
// Map<String, String> cnEnMap = new HashMap<>();
// for (DictionarieValueModel dictionarieValueModel : dictList) {
// cnEnMap.put(dictionarieValueModel.getDictDataValue(), dictionarieValueModel.getDictDataKey());
// }
// enumCnEnMap.put(enumName, cnEnMap);
// } catch (Exception e) {
// throw new RequestForbidden("获取字典数据出错,解析无法进行");
// }
// }
// // 组装标签单位Map
// Map<Long, String> tagUnitMap = new HashMap<>();
// if (!ValidationUtil.isEmpty(involvedTagIds)) {
// List<KnowledgeDynamicsValueModel> dynamicsValueList = dynamicsValueService.queryFieldValueByIds(new ArrayList(involvedTagIds), "unit");
// for (KnowledgeDynamicsValueModel dynamicsValueModel : dynamicsValueList) {
// tagUnitMap.put(dynamicsValueModel.getInstanceId(), dynamicsValueModel.getFieldValue());
// }
// }
//
// ExcelParser excelParser = new ExcelParser(tagMap, excelConfigMap, fieldTypeMap, tagValueTypeMap, enumCnEnMap,
// tagUnitMap, this.sequence, inputerOrg);
// // 逐行解析
// while (finishedNum < rowNumber) {
// for (int i = 0; i < BATCH_IMPORT_ONCE_NUM && finishedNum < rowNumber; i++, finishedNum++) {
// Row row = sheet.getRow(excelConfigList.get(0).getStartRowIndex() + finishedNum);
// excelParser.parseRow(row, directoryMap);
// if (i % 500 == 0) {
// batchInsertDocDataAll(excelParser.getAndFlushDatas());
// }
// }
// QuoteCountFlushTiming.needFlushTag();
// }
// return excelParser.getImportResults();
// }
// @Transactional(rollbackFor = {Exception.class, BaseException.class})
// public List importExcel(MultipartFile file, List<ExcelImportConfig> excelConfigList) {
// String inputerOrg = RemoteData.getOrgWithCurUserAndRole(KnowledgeRoleName.INPUTER.getRoleName());
// if (ValidationUtil.isEmpty(inputerOrg)) {
// throw new RequestForbidden("非录入者角色用户无权录入");
// }
// int finishedNum = 0;
// List<Object> list = new ArrayList<>();
// for (ExcelImportConfig excelConfig : excelConfigList) {
// if (!excelConfig.check()) {
// throw new BadRequest("模板配置数据有误");
// }
// Workbook workbook = getBookWithFile(file);
// Sheet sheet = workbook.getSheetAt(0);
// if (sheet == null) {
// throw new BadRequest("文档sheet页为空");
// }
// int rowNumber = getRowNumber(sheet, excelConfig);
// if (rowNumber <= 0) {
// throw new BadRequest("数据条目为零");
// }
// Set<Long> involvedTagIds = excelConfig.getTagColumns().keySet();
// // 组装标签信息Map
// Map<Long, KnowledgeTagModel> tagMap = new HashMap();
// if (!ValidationUtil.isEmpty(involvedTagIds)) {
// List<KnowledgeTagModel> tagModelList = tagService.queryByIds(involvedTagIds);
// for (KnowledgeTagModel tagModel : tagModelList) {
// tagMap.put(tagModel.getSequenceNbr(), tagModel);
// }
// }
// // 组装文档动态字段数据类型Map
// Map<String, KnowledgeDynamicsOptionModel> fieldTypeMap = new HashMap<>();
// List<KnowledgeDynamicsOptionModel> optionModels = dynamicsOptionService.queryByFunctional(RequestContext.getAppKey(), DynamicsFunctional.DOC_BASEINFO.name());
// for (KnowledgeDynamicsOptionModel optionModel : optionModels) {
// fieldTypeMap.put(optionModel.getFieldName(), optionModel);
// }
//
// // 组装标签值类型Map
// Map<Long, String> tagValueTypeMap = new HashMap<>();
// if (!ValidationUtil.isEmpty(involvedTagIds)) {
// List<KnowledgeDynamicsValueModel> dynamicsValueList = dynamicsValueService.queryFieldValueByIds(new ArrayList(involvedTagIds), "valueType");
// for (KnowledgeDynamicsValueModel dynamicsValueModel : dynamicsValueList) {
// tagValueTypeMap.put(dynamicsValueModel.getInstanceId(), dynamicsValueModel.getFieldValue());
// }
// }
// // 组装字典中英文Map
// Map<String, Map<String, String>> enumCnEnMap = new HashMap<>();
// Set<String> enumNameList = new HashSet<>(excelConfig.getEnumMap().values());
// for (String enumName : enumNameList) {
// try {
// List<DictionarieValueModel> dictList = RemoteData.queryDict(enumName);
// Map<String, String> cnEnMap = new HashMap<>();
// for (DictionarieValueModel dictionarieValueModel : dictList) {
// cnEnMap.put(dictionarieValueModel.getDictDataValue(), dictionarieValueModel.getDictDataKey());
// }
// enumCnEnMap.put(enumName, cnEnMap);
// } catch (Exception e) {
// throw new RequestForbidden("获取字典数据出错,解析无法进行");
// }
// }
// // 组装标签单位Map
// Map<Long, String> tagUnitMap = new HashMap<>();
// if (!ValidationUtil.isEmpty(involvedTagIds)) {
// List<KnowledgeDynamicsValueModel> dynamicsValueList = dynamicsValueService.queryFieldValueByIds(new ArrayList(involvedTagIds), "unit");
// for (KnowledgeDynamicsValueModel dynamicsValueModel : dynamicsValueList) {
// tagUnitMap.put(dynamicsValueModel.getInstanceId(), dynamicsValueModel.getFieldValue());
// }
// }
//
// ExcelParser excelParser = new ExcelParser(tagMap, excelConfig, fieldTypeMap, tagValueTypeMap, enumCnEnMap, tagUnitMap, this.sequence, inputerOrg);
// // 逐行解析
// while (finishedNum <= rowNumber) {
// for (int i = 0; i < BATCH_IMPORT_ONCE_NUM && finishedNum < rowNumber; i++, finishedNum++) {
// Row row = sheet.getRow(excelConfig.getStartRowIndex() + finishedNum);
// excelParser.parseRow(row);
// }
// batchInsertDocDataAll(excelParser.getAndFlushDatas());
// QuoteCountFlushTiming.needFlushTag();
// }
// list.add(excelParser.getImportResults());
// }
// return list;
// }
@Transactional
(
rollbackFor
=
{
Exception
.
class
,
BaseException
.
class
})
public
List
importExcel
(
MultipartFile
file
,
List
<
ExcelImportConfig
>
excelConfigList
)
{
String
inputerOrg
=
RemoteData
.
getOrgWithCurUserAndRole
(
KnowledgeRoleName
.
INPUTER
.
getRoleName
());
String
inputerOrg
=
RemoteData
.
getOrgWithCurUserAndRole
(
KnowledgeRoleName
.
INPUTER
.
getRoleName
());
if
(
ValidationUtil
.
isEmpty
(
inputerOrg
))
{
if
(
ValidationUtil
.
isEmpty
(
inputerOrg
))
{
throw
new
RequestForbidden
(
"非录入者角色用户无权录入"
);
throw
new
RequestForbidden
(
"非录入者角色用户无权录入"
);
}
}
int
finishedNum
=
0
;
int
finishedNum
=
0
;
Set
<
Long
>
involvedTagIds
=
new
HashSet
<>();
Set
<
String
>
enumNameList
=
new
HashSet
<>();
Map
<
String
,
ExcelImportConfig
>
excelConfigMap
=
new
HashMap
();
List
<
Long
>
directoryList
=
new
ArrayList
<>();
for
(
ExcelImportConfig
excelConfig
:
excelConfigList
)
{
if
(!
excelConfig
.
check
())
{
if
(!
excelConfig
.
check
())
{
throw
new
BadRequest
(
"模板配置数据有误"
);
throw
new
BadRequest
(
"模板配置数据有误"
);
}
}
excelConfigMap
.
put
(
excelConfig
.
getDirectoryColumn
(),
excelConfig
);
Set
<
Long
>
involvedTags
=
excelConfig
.
getTagColumns
().
keySet
();
involvedTagIds
.
addAll
(
involvedTags
);
Set
<
String
>
enumNames
=
new
HashSet
<>(
excelConfig
.
getEnumMap
().
values
());
enumNameList
.
addAll
(
enumNames
);
directoryList
.
add
(
Long
.
parseLong
(
excelConfig
.
getDirectoryColumn
()));
}
Map
<
String
,
Long
>
directoryMap
=
docCategoryService
.
getGroupNameValue
(
directoryList
);
Workbook
workbook
=
getBookWithFile
(
file
);
Workbook
workbook
=
getBookWithFile
(
file
);
Sheet
sheet
=
workbook
.
getSheetAt
(
0
);
Sheet
sheet
=
workbook
.
getSheetAt
(
0
);
if
(
sheet
==
null
)
{
if
(
sheet
==
null
)
{
throw
new
BadRequest
(
"文档sheet页为空"
);
throw
new
BadRequest
(
"文档sheet页为空"
);
}
}
int
rowNumber
=
getRowNumber
(
sheet
,
excelConfig
);
int
rowNumber
=
getRowNumber
(
sheet
,
excelConfig
List
.
get
(
0
)
);
if
(
rowNumber
<=
0
)
{
if
(
rowNumber
<=
0
)
{
throw
new
BadRequest
(
"数据条目为零"
);
throw
new
BadRequest
(
"数据条目为零"
);
}
}
Set
<
Long
>
involvedTagIds
=
excelConfig
.
getTagColumns
().
keySet
();
// 组装标签信息Map
// 组装标签信息Map
Map
<
Long
,
KnowledgeTagModel
>
tagMap
=
new
HashMap
();
Map
<
Long
,
KnowledgeTagModel
>
tagMap
=
new
HashMap
();
if
(!
ValidationUtil
.
isEmpty
(
involvedTagIds
))
{
if
(!
ValidationUtil
.
isEmpty
(
involvedTagIds
))
{
...
@@ -612,7 +808,8 @@ public class DocLibraryService {
...
@@ -612,7 +808,8 @@ public class DocLibraryService {
}
}
// 组装文档动态字段数据类型Map
// 组装文档动态字段数据类型Map
Map
<
String
,
KnowledgeDynamicsOptionModel
>
fieldTypeMap
=
new
HashMap
<>();
Map
<
String
,
KnowledgeDynamicsOptionModel
>
fieldTypeMap
=
new
HashMap
<>();
List
<
KnowledgeDynamicsOptionModel
>
optionModels
=
dynamicsOptionService
.
queryByFunctional
(
RequestContext
.
getAppKey
(),
DynamicsFunctional
.
DOC_BASEINFO
.
name
());
List
<
KnowledgeDynamicsOptionModel
>
optionModels
=
dynamicsOptionService
.
queryByFunctional
(
RequestContext
.
getAppKey
(),
DynamicsFunctional
.
DOC_BASEINFO
.
name
());
for
(
KnowledgeDynamicsOptionModel
optionModel
:
optionModels
)
{
for
(
KnowledgeDynamicsOptionModel
optionModel
:
optionModels
)
{
fieldTypeMap
.
put
(
optionModel
.
getFieldName
(),
optionModel
);
fieldTypeMap
.
put
(
optionModel
.
getFieldName
(),
optionModel
);
}
}
...
@@ -620,14 +817,14 @@ public class DocLibraryService {
...
@@ -620,14 +817,14 @@ public class DocLibraryService {
// 组装标签值类型Map
// 组装标签值类型Map
Map
<
Long
,
String
>
tagValueTypeMap
=
new
HashMap
<>();
Map
<
Long
,
String
>
tagValueTypeMap
=
new
HashMap
<>();
if
(!
ValidationUtil
.
isEmpty
(
involvedTagIds
))
{
if
(!
ValidationUtil
.
isEmpty
(
involvedTagIds
))
{
List
<
KnowledgeDynamicsValueModel
>
dynamicsValueList
=
dynamicsValueService
.
queryFieldValueByIds
(
new
ArrayList
(
involvedTagIds
),
"valueType"
);
List
<
KnowledgeDynamicsValueModel
>
dynamicsValueList
=
dynamicsValueService
.
queryFieldValueByIds
(
new
ArrayList
(
involvedTagIds
),
"valueType"
);
for
(
KnowledgeDynamicsValueModel
dynamicsValueModel
:
dynamicsValueList
)
{
for
(
KnowledgeDynamicsValueModel
dynamicsValueModel
:
dynamicsValueList
)
{
tagValueTypeMap
.
put
(
dynamicsValueModel
.
getInstanceId
(),
dynamicsValueModel
.
getFieldValue
());
tagValueTypeMap
.
put
(
dynamicsValueModel
.
getInstanceId
(),
dynamicsValueModel
.
getFieldValue
());
}
}
}
}
// 组装字典中英文Map
// 组装字典中英文Map
Map
<
String
,
Map
<
String
,
String
>>
enumCnEnMap
=
new
HashMap
<>();
Map
<
String
,
Map
<
String
,
String
>>
enumCnEnMap
=
new
HashMap
<>();
Set
<
String
>
enumNameList
=
new
HashSet
<>(
excelConfig
.
getEnumMap
().
values
());
for
(
String
enumName
:
enumNameList
)
{
for
(
String
enumName
:
enumNameList
)
{
try
{
try
{
List
<
DictionarieValueModel
>
dictList
=
RemoteData
.
queryDict
(
enumName
);
List
<
DictionarieValueModel
>
dictList
=
RemoteData
.
queryDict
(
enumName
);
...
@@ -643,26 +840,31 @@ public class DocLibraryService {
...
@@ -643,26 +840,31 @@ public class DocLibraryService {
// 组装标签单位Map
// 组装标签单位Map
Map
<
Long
,
String
>
tagUnitMap
=
new
HashMap
<>();
Map
<
Long
,
String
>
tagUnitMap
=
new
HashMap
<>();
if
(!
ValidationUtil
.
isEmpty
(
involvedTagIds
))
{
if
(!
ValidationUtil
.
isEmpty
(
involvedTagIds
))
{
List
<
KnowledgeDynamicsValueModel
>
dynamicsValueList
=
dynamicsValueService
.
queryFieldValueByIds
(
new
ArrayList
(
involvedTagIds
),
"unit"
);
List
<
KnowledgeDynamicsValueModel
>
dynamicsValueList
=
dynamicsValueService
.
queryFieldValueByIds
(
new
ArrayList
(
involvedTagIds
),
"unit"
);
for
(
KnowledgeDynamicsValueModel
dynamicsValueModel
:
dynamicsValueList
)
{
for
(
KnowledgeDynamicsValueModel
dynamicsValueModel
:
dynamicsValueList
)
{
tagUnitMap
.
put
(
dynamicsValueModel
.
getInstanceId
(),
dynamicsValueModel
.
getFieldValue
());
tagUnitMap
.
put
(
dynamicsValueModel
.
getInstanceId
(),
dynamicsValueModel
.
getFieldValue
());
}
}
}
}
ExcelParser
excelParser
=
new
ExcelParser
(
tagMap
,
excelConfig
,
fieldTypeMap
,
tagValueTypeMap
,
enumCnEnMap
,
tagUnitMap
,
this
.
sequence
,
inputerOrg
);
ExcelParserOld
excelParser
=
new
ExcelParserOld
(
tagMap
,
excelConfigMap
,
fieldTypeMap
,
tagValueTypeMap
,
enumCnEnMap
,
tagUnitMap
,
this
.
sequence
,
inputerOrg
);
// 逐行解析
// 逐行解析
while
(
finishedNum
<
rowNumber
)
{
while
(
finishedNum
<
rowNumber
)
{
for
(
int
i
=
0
;
i
<
BATCH_IMPORT_ONCE_NUM
&&
finishedNum
<
rowNumber
;
i
++,
finishedNum
++)
{
for
(
int
i
=
0
;
i
<
BATCH_IMPORT_ONCE_NUM
&&
finishedNum
<
rowNumber
;
i
++,
finishedNum
++)
{
Row
row
=
sheet
.
getRow
(
excelConfig
.
getStartRowIndex
()
+
finishedNum
);
Row
row
=
sheet
.
getRow
(
excelConfigList
.
get
(
0
).
getStartRowIndex
()
+
finishedNum
);
excelParser
.
parseRow
(
row
);
excelParser
.
parseRow
(
row
,
directoryMap
);
}
batchInsertDocDataAll
(
excelParser
.
getAndFlushDatas
());
batchInsertDocDataAll
(
excelParser
.
getAndFlushDatas
());
// if (i % 500 == 0) {
// batchInsertDocDataAll(excelParser.getAndFlushDatas());
// }
}
QuoteCountFlushTiming
.
needFlushTag
();
QuoteCountFlushTiming
.
needFlushTag
();
}
}
return
excelParser
.
getImportResults
();
return
excelParser
.
getImportResults
();
}
}
void
batchInsertDocDataAll
(
ExcelParser
.
TablesDataList
datas
)
{
void
batchInsertDocDataAll
(
ExcelParserOld
.
TablesDataList
datas
)
{
docContentService
.
saveBatch
(
datas
.
getDocContentList
());
docContentService
.
saveBatch
(
datas
.
getDocContentList
());
dynamicsValueService
.
saveBatch
(
datas
.
getDynamicsValueList
());
dynamicsValueService
.
saveBatch
(
datas
.
getDynamicsValueList
());
tagInstanceService
.
saveBatch
(
datas
.
getTagInstanceList
());
tagInstanceService
.
saveBatch
(
datas
.
getTagInstanceList
());
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment