From 718cf9333ac1fd2f6fbde3a78698a84569d1122d Mon Sep 17 00:00:00 2001
From: sunFlower <787203167@qq.com>
Date: Fri, 30 Sep 2022 22:15:11 +0800
Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=85=E9=81=93?=
=?UTF-8?q?=E5=B7=B2=E7=9F=A5bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../components/PersonnelSelection/index.vue | 23 +++++++++++++++----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/jero-web/src/components/PersonnelSelection/index.vue b/jero-web/src/components/PersonnelSelection/index.vue
index a3e26e2bc..bfd786a92 100644
--- a/jero-web/src/components/PersonnelSelection/index.vue
+++ b/jero-web/src/components/PersonnelSelection/index.vue
@@ -42,12 +42,15 @@
isLeaf: 'leaf'
}"
:defaultCheckedKeys="defaultCheckedKeys"
+ :defaultExpandAll="defaultExpandAll"
:check-strictly="false"
node-key="id"
@check-change="handleCheckChange"
:data.sync="gData">
- {{ data.title }}
+
+ {{ data.title }}
+
@@ -89,7 +92,7 @@
return {
loading: false,
gData: [],
- autoExpandParent: true,
+ autoExpandParent: false,
checkboxList: [],
expandedKeys: [],
visible: false,
@@ -103,7 +106,8 @@
defaultCheckedKeys: [],
defaultCheckedKeysName: [],
content: [],
- dataList: []
+ dataList: [],
+ defaultExpandAll: false
}
},
mounted() {
@@ -169,6 +173,7 @@
}
this.defaultCheckedKeys = this.userIds
this.defaultCheckedKeys = [...this.defaultCheckedKeys]
+ this.defaultExpandAll = false
this.treeVisible = true
} else {
this.queryDepartUserTreeList(1)
@@ -307,7 +312,7 @@
},
onSearch(e) {
this.loading = true
- // this.treeVisible = false
+ this.treeVisible = false
let p = new Promise((resolve, reject) => {
resolve()
})
@@ -319,6 +324,7 @@
JSON.parse(gData).forEach(res => {
if (res.type == 'User') {
if (res.name.includes(e)) {
+ res.color = true
content.push(res)
}
} else if (res.type == 'Depart') {
@@ -328,6 +334,7 @@
content.push(res)
}
})
+ this.defaultExpandAll = true
this.gData = this.toTree(content)
} else {
let content = JSON.parse(gData)
@@ -339,11 +346,12 @@
})
}
this.gData = this.toTree(content)
+ this.defaultExpandAll = false
}
}
this.defaultCheckedKeys = this.userIds
this.defaultCheckedKeys = [...this.defaultCheckedKeys]
- // this.treeVisible = true
+ this.treeVisible = true
this.loading = false
})
// this.gData = []
@@ -444,6 +452,7 @@
// }
// }
}
+ this.defaultExpandAll = false
this.treeVisible = true
} else {
this.gData = []
@@ -537,4 +546,8 @@
.treeWrap {
height: calc(100vh - 240px);
}
+ .active{
+ color: #21c9cc;
+ display: inline-block;
+ }
\ No newline at end of file
From 294f9ea383ab6214f3d29a75d40b0a1ed3f59b4f Mon Sep 17 00:00:00 2001
From: sunFlower <787203167@qq.com>
Date: Fri, 30 Sep 2022 22:32:56 +0800
Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=85=E9=81=93?=
=?UTF-8?q?=E5=B7=B2=E7=9F=A5bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../components/PersonnelSelection/index.vue | 492 +++++++++---------
1 file changed, 247 insertions(+), 245 deletions(-)
diff --git a/jero-web/src/components/PersonnelSelection/index.vue b/jero-web/src/components/PersonnelSelection/index.vue
index bfd786a92..43b6f4b88 100644
--- a/jero-web/src/components/PersonnelSelection/index.vue
+++ b/jero-web/src/components/PersonnelSelection/index.vue
@@ -32,40 +32,40 @@
v-model="searchModel" @search="onSearch"/>
{{$t('dataLoading')}}
-
-
-
- {{ data.title }}
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{$t('cancel')}}
@@ -114,101 +114,102 @@
},
methods: {
- handleCheckChange(val, checked, indeterminate) {
- if (checked) {
- this.userName.push(val.title)
- this.userIds.push(val.id)
- } else {
- for (let i = 0; i < this.userName.length; i++) {
- if (this.userName[i] == val.title) {
- this.userName.splice(i, 1)
- i--
- }
- }
- for (let i = 0; i < this.userIds.length; i++) {
- if (this.userIds[i] == val.id) {
- this.userIds.splice(i, 1)
- i--
- }
- }
- }
- },
+ // handleCheckChange(val, checked, indeterminate) {
+ // if (checked) {
+ // this.userName.push(val.title)
+ // this.userIds.push(val.id)
+ // } else {
+ // for (let i = 0; i < this.userName.length; i++) {
+ // if (this.userName[i] == val.title) {
+ // this.userName.splice(i, 1)
+ // i--
+ // }
+ // }
+ // for (let i = 0; i < this.userIds.length; i++) {
+ // if (this.userIds[i] == val.id) {
+ // this.userIds.splice(i, 1)
+ // i--
+ // }
+ // }
+ // }
+ // },
standardClick() {
- this.visible = true
this.treeVisible = false
this.departId = ''
this.searchModel = ''
- this.userName = []
this.userIds = []
- let gData = localStorage.getItem('gData')
- if (gData) {
- let dataList = JSON.parse(gData)
- if (!this.selectDepartment) {
- dataList.forEach(res => {
- if (res.type == 'Depart') {
- res.disabled = true
- }
- })
- }
- this.dataList = this.toTree(dataList)
- }
- setTimeout(() => {
- if (gData) {
- this.gData = this.dataList
- this.gData = [...this.gData]
- // this.treeVisible = true
- if (this.personneQuery[this.query.db_field_name + 'Name']) {
- this.userName = this.personneQuery[this.query.db_field_name + 'Name'].split(',')
- } else if (this.personneQuery[this.query.db_field_name]) {
- this.userName = this.personneQuery[this.query.db_field_name].split(',')
- } else {
- this.userName = []
- }
- if (this.personneQuery[this.query.db_field_name + '_id']) {
- this.userIds = this.personneQuery[this.query.db_field_name + '_id'].split(',')
- } else if (this.personneQuery[this.query.db_field_name]) {
- this.userIds = this.personneQuery[this.query.db_field_name].split(',')
- } else {
- this.userIds = []
- }
- this.defaultCheckedKeys = this.userIds
- this.defaultCheckedKeys = [...this.defaultCheckedKeys]
- this.defaultExpandAll = false
- this.treeVisible = true
- } else {
- this.queryDepartUserTreeList(1)
- }
- }, 200)
+ this.userName = []
+ this.queryDepartUserTreeList(1)
+ this.visible = true
+ // let gData = localStorage.getItem('gData')
+ // if (gData) {
+ // let dataList = JSON.parse(gData)
+ // if (!this.selectDepartment) {
+ // dataList.forEach(res => {
+ // if (res.type == 'Depart') {
+ // res.disabled = true
+ // }
+ // })
+ // }
+ // this.dataList = this.toTree(dataList)
+ // }
+ // setTimeout(() => {
+ // if (gData) {
+ // this.gData = this.dataList
+ // this.gData = [...this.gData]
+ // // this.treeVisible = true
+ // if (this.personneQuery[this.query.db_field_name + 'Name']) {
+ // this.userName = this.personneQuery[this.query.db_field_name + 'Name'].split(',')
+ // } else if (this.personneQuery[this.query.db_field_name]) {
+ // this.userName = this.personneQuery[this.query.db_field_name].split(',')
+ // } else {
+ // this.userName = []
+ // }
+ // if (this.personneQuery[this.query.db_field_name + '_id']) {
+ // this.userIds = this.personneQuery[this.query.db_field_name + '_id'].split(',')
+ // } else if (this.personneQuery[this.query.db_field_name]) {
+ // this.userIds = this.personneQuery[this.query.db_field_name].split(',')
+ // } else {
+ // this.userIds = []
+ // }
+ // this.defaultCheckedKeys = this.userIds
+ // this.defaultCheckedKeys = [...this.defaultCheckedKeys]
+ // this.defaultExpandAll = false
+ // this.treeVisible = true
+ // } else {
+ // this.queryDepartUserTreeList(1)
+ // }
+ // }, 200)
},
//将数据拼成树形结构
- toTree(config) {
- // 删除 所有 children,以防止多次调用
- config.forEach(function(item) {
- delete item.children
- })
- // 将数据存储为 以 id 为 KEY 的 map 索引数据列
- let map = {}
- config.forEach((item) => {
- item.label = item.name
- item.key = item.id
-
- item.title = item.name + (item.itemName ? ' ' + item.itemName : '')
- map[item.id] = item
- })
- let val = []
- config.forEach((item) => {
- // 以当前遍历项,的pid,去map对象中找到索引的id
- let parent = map[item.parentId]
- // 如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
- if (parent) {
- (parent.children || (parent.children = [])).push(item)
- } else {
- //如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 val结果集中,作为顶级
- val.push(item)
- }
- })
- return val
- },
+ // toTree(config) {
+ // // 删除 所有 children,以防止多次调用
+ // config.forEach(function(item) {
+ // delete item.children
+ // })
+ // // 将数据存储为 以 id 为 KEY 的 map 索引数据列
+ // let map = {}
+ // config.forEach((item) => {
+ // item.label = item.name
+ // item.key = item.id
+ //
+ // item.title = item.name + (item.itemName ? ' ' + item.itemName : '')
+ // map[item.id] = item
+ // })
+ // let val = []
+ // config.forEach((item) => {
+ // // 以当前遍历项,的pid,去map对象中找到索引的id
+ // let parent = map[item.parentId]
+ // // 如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
+ // if (parent) {
+ // (parent.children || (parent.children = [])).push(item)
+ // } else {
+ // //如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 val结果集中,作为顶级
+ // val.push(item)
+ // }
+ // })
+ // return val
+ // },
standardDelete() {
this.$emit('input', null)
this.$forceUpdate()
@@ -288,12 +289,12 @@
}
let userIds = JSON.parse(JSON.stringify(this.userIds))
let userName = JSON.parse(JSON.stringify(this.userName))
- userName = userName.filter(function(item, index) {
- return userName.indexOf(item) === index // 因为indexOf 只能查找到第一个
- })
- userIds = userIds.filter(function(item, index) {
- return userIds.indexOf(item) === index // 因为indexOf 只能查找到第一个
- })
+ // userName = userName.filter(function(item, index) {
+ // return userName.indexOf(item) === index // 因为indexOf 只能查找到第一个
+ // })
+ // userIds = userIds.filter(function(item, index) {
+ // return userIds.indexOf(item) === index // 因为indexOf 只能查找到第一个
+ // })
this.$emit('input', userName.join(','))
this.$emit('change', this.query.db_field_name, userIds.join(','), this.query.subscript)
this.visible = false
@@ -311,146 +312,146 @@
this.defaultCheckedKeys = []
},
onSearch(e) {
- this.loading = true
- this.treeVisible = false
- let p = new Promise((resolve, reject) => {
- resolve()
+ // this.loading = true
+ // this.treeVisible = false
+ // let p = new Promise((resolve, reject) => {
+ // resolve()
+ // })
+ // p.then(() => {
+ // let gData = localStorage.getItem('gData')
+ // let content = []
+ // if (gData) {
+ // if (e) {
+ // JSON.parse(gData).forEach(res => {
+ // if (res.type == 'User') {
+ // if (res.name.includes(e)) {
+ // res.color = true
+ // content.push(res)
+ // }
+ // } else if (res.type == 'Depart') {
+ // if (!this.selectDepartment) {
+ // res.disabled = true
+ // }
+ // content.push(res)
+ // }
+ // })
+ // this.defaultExpandAll = true
+ // this.gData = this.toTree(content)
+ // } else {
+ // let content = JSON.parse(gData)
+ // if (!this.selectDepartment) {
+ // content.forEach(res => {
+ // if (res.type == 'Depart') {
+ // res.disabled = true
+ // }
+ // })
+ // }
+ // this.gData = this.toTree(content)
+ // this.defaultExpandAll = false
+ // }
+ // }
+ // this.defaultCheckedKeys = this.userIds
+ // this.defaultCheckedKeys = [...this.defaultCheckedKeys]
+ // this.treeVisible = true
+ // this.loading = false
+ // })
+ this.gData = []
+ this.departId = ''
+ this.visibleTree = false
+ if (e) {
+ this.getUserAndDepart()
+ } else {
+ this.treeVisible = false
+ this.queryDepartUserTreeList(2)
+ }
+ },
+ getUserAndDepart() {
+ getAction('sys/user/getUserAndDepart', { name: this.searchModel }).then((res) => {
+ if (res) {
+ this.gData = res.filter(ele => ele.flag === 'DEPART')
+ } else {
+ this.gData = []
+ }
+ this.visibleTree = true
})
- p.then(() => {
- let gData = localStorage.getItem('gData')
- let content = []
- if (gData) {
- if (e) {
- JSON.parse(gData).forEach(res => {
- if (res.type == 'User') {
- if (res.name.includes(e)) {
- res.color = true
- content.push(res)
- }
- } else if (res.type == 'Depart') {
- if (!this.selectDepartment) {
- res.disabled = true
- }
- content.push(res)
- }
- })
- this.defaultExpandAll = true
- this.gData = this.toTree(content)
+ },
+ onExpand(selectedKeys, val) {
+ if (this.searchModel == '' || !this.searchModel) {
+ if (val.expanded) {
+ if (this.departId == val.node.value) {
} else {
- let content = JSON.parse(gData)
- if (!this.selectDepartment) {
- content.forEach(res => {
- if (res.type == 'Depart') {
- res.disabled = true
- }
- })
- }
- this.gData = this.toTree(content)
- this.defaultExpandAll = false
+ this.departId = val.node.value
+ this.queryDepartUserTreeList(2)
}
}
- this.defaultCheckedKeys = this.userIds
- this.defaultCheckedKeys = [...this.defaultCheckedKeys]
- this.treeVisible = true
- this.loading = false
- })
- // this.gData = []
- // this.departId = ''
- // this.visibleTree = false
- // if (e) {
- // this.getUserAndDepart()
- // } else {
- // this.treeVisible = false
- // this.queryDepartUserTreeList(2)
- // }
+ }
},
- // getUserAndDepart() {
- // getAction('sys/user/getUserAndDepart', { name: this.searchModel }).then((res) => {
- // if (res) {
- // this.gData = res.filter(ele => ele.flag === 'DEPART')
- // } else {
- // this.gData = []
- // }
- // this.visibleTree = true
- // })
- // },
- // onExpand(selectedKeys, val) {
- // if (this.searchModel == '' || !this.searchModel) {
- // if (val.expanded) {
- // if (this.departId == val.node.value) {
- // } else {
- // this.departId = val.node.value
- // this.queryDepartUserTreeList(2)
- // }
- // }
- // }
- // },
queryDepartUserTreeList(num) {
- // let gData = JSON.parse(JSON.stringify(this.gData))
- // if (gData && gData.length > 0) {
- // gData = JSON.stringify(gData)
- // } else {
- // gData = ''
- // }
+ let gData = JSON.parse(JSON.stringify(this.gData))
+ if (gData && gData.length > 0) {
+ gData = JSON.stringify(gData)
+ } else {
+ gData = ''
+ }
this.confirmLoading = true
this.loading = true
//queryDepartUserTreeList
//queryUserTreeList
- getAction('sys/user/queryUserTreeList', {
- // departId: this.departId,
- // json: gData,
- // flag: '1'
+ postAction('sys/user/queryDepartUserTreeList', {
+ departId: this.departId,
+ json: gData,
+ flag: '1'
}).then((res) => {
this.confirmLoading = false
if (res.success) {
this.loading = false
// localStorage.setItem('gData', JSON.stringify(res.result))
// this.toTree(dataList)
- let content = JSON.parse(JSON.stringify(res.result))
- if (!this.selectDepartment) {
- res.result.forEach(res => {
- if (res.type == 'Depart') {
- res.disabled = true
- }
- })
- }
- localStorage.removeItem('gData')
- localStorage.setItem('gData', JSON.stringify(content))
- this.gData = this.toTree(res.result)
- console.log(this.gData)
+ // let content = JSON.parse(JSON.stringify(res.result))
+ // if (!this.selectDepartment) {
+ // res.result.forEach(res => {
+ // if (res.type == 'Depart') {
+ // res.disabled = true
+ // }
+ // })
+ // }
+ // localStorage.removeItem('gData')
+ // localStorage.setItem('gData', JSON.stringify(content))
+ // this.gData = this.toTree(res.result)
+ this.gData = res.result
this.gData = [...this.gData]
// this.gData[0].isLeaf = false
- // this.defaultExpandedKeys = [this.departId]
+ this.defaultExpandedKeys = [this.departId]
if (num == 1) {
- // if (this.userName && this.userName.length == 0) {
- if (this.personneQuery[this.query.db_field_name + 'Name']) {
- this.userName = this.personneQuery[this.query.db_field_name + 'Name'].split(',')
- } else if (this.personneQuery[this.query.db_field_name]) {
- this.userName = this.personneQuery[this.query.db_field_name].split(',')
- } else {
- this.userName = []
+ if (this.userName && this.userName.length == 0) {
+ if (this.personneQuery[this.query.db_field_name + 'Name']) {
+ this.userName = this.personneQuery[this.query.db_field_name + 'Name'].split(',')
+ } else if (this.personneQuery[this.query.db_field_name]) {
+ this.userName = this.personneQuery[this.query.db_field_name].split(',')
+ } else {
+ this.userName = []
+ }
}
- // }
- // if (this.userIds && this.userIds.length == 0) {
- if (this.personneQuery[this.query.db_field_name + '_id']) {
- this.userIds = this.personneQuery[this.query.db_field_name + '_id'].split(',')
- } else if (this.personneQuery[this.query.db_field_name]) {
- this.userIds = this.personneQuery[this.query.db_field_name].split(',')
- } else {
- this.userIds = []
+ if (this.userIds && this.userIds.length == 0) {
+ if (this.personneQuery[this.query.db_field_name + '_id']) {
+ this.userIds = this.personneQuery[this.query.db_field_name + '_id'].split(',')
+ } else if (this.personneQuery[this.query.db_field_name]) {
+ this.userIds = this.personneQuery[this.query.db_field_name].split(',')
+ } else {
+ this.userIds = []
+ }
}
- // }
this.defaultCheckedKeys = this.userIds
this.defaultCheckedKeys = [...this.defaultCheckedKeys]
- // this.defaultCheckedKeysName = []
- // if (this.defaultCheckedKeys.length > 0) {
- // for (let i = 0; i < this.defaultCheckedKeys.length; i++) {
- // this.defaultCheckedKeysName.push({
- // id: this.defaultCheckedKeys[i],
- // name: this.userName[i]
- // })
- // }
- // }
+ this.defaultCheckedKeysName = []
+ if (this.defaultCheckedKeys.length > 0) {
+ for (let i = 0; i < this.defaultCheckedKeys.length; i++) {
+ this.defaultCheckedKeysName.push({
+ id: this.defaultCheckedKeys[i],
+ name: this.userName[i]
+ })
+ }
+ }
}
this.defaultExpandAll = false
this.treeVisible = true
@@ -546,7 +547,8 @@
.treeWrap {
height: calc(100vh - 240px);
}
- .active{
+
+ .active {
color: #21c9cc;
display: inline-block;
}
From d0d400d13686971c928bd1723a7725b39056482f Mon Sep 17 00:00:00 2001
From: liyawei
Date: Thu, 6 Oct 2022 23:48:42 +0800
Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=8B=86=E5=88=86-PDF?=
=?UTF-8?q?=E6=8B=86=E5=88=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../split/service/impl/FileSpiltService.java | 662 ++++--
.../service/impl/FileSplitPdfService.java | 1849 +++++++++++++++++
.../impl/SarFileSplitInfoServiceImpl.java | 57 +-
.../splitting/modules/SplitText.vue | 6 +-
4 files changed, 2369 insertions(+), 205 deletions(-)
create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitPdfService.java
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java
index af9c9838a..130f6b31f 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.oss.CosBootUtil;
-import com.jero.modules.document.utils.ReadPdfUtil;
import com.jero.modules.ocr.util.UUIDUtils;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
@@ -61,6 +60,8 @@ public class FileSpiltService {
private ISarFileSplitItemsValEOService iSarFileSplitItemsValEOService;
@Autowired
private IOSSFileService iossFileService;
+ @Autowired
+ private FileSplitPdfService fileSplitPdfService;
@Value("${jero.path.upload}")
private String filePath;
@@ -110,9 +111,8 @@ public class FileSpiltService {
List nowStart = new ArrayList<>();
// if (sarFileSplitInfoEO.getStartNumber()<4){
- //从第四个开始拆解
- nowStart.add("3.1");
- nowStart.add("4");
+ //从第二个开始拆解
+ nowStart.add("2");
// } else {
// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber()));
// }
@@ -154,27 +154,20 @@ public class FileSpiltService {
// 记录word自动生成的编号数据
Map numberMap = new HashMap();
boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
- boolean startFlag = false; // 判断开始拆分的起始段落,因为需要从标题:范围 开始拆,但会受目录的影响
- int count = 0; // 记录标题:范围 出现的次数
- for (IBodyElement element : elements) {
+ boolean firstFlag = true;
+ List startDigitList = getStartDigit(elements, enumByValue);
+ String regex = "^[0-9]*$";
+ String preName = "";
+ int preNameNum = 0;
+// for (IBodyElement element : elements) {
+ for (int g=0; g< elements.size(); g++) {
+ IBodyElement element = elements.get(g);
// 段落
if (element instanceof XWPFParagraph) {
XWPFParagraph p = (XWPFParagraph) element;
// 处理段落生成编号不识别问题
String paragraphString = p.getText();
- if ("前言".equals(getChinese(paragraphString))) {
- count++;
- if (count > 1) {
- startFlag = true;
- }
-
- continue;
- } else {
- if(!startFlag) {
- continue;
- }
- }
if (StringUtils.isNotBlank(paragraphString)) {
paragraphString = paragraphString.replace((char) 12288, ' ');
paragraphString = paragraphString.trim();
@@ -192,6 +185,15 @@ public class FileSpiltService {
paragraphString = paragraphString.replaceAll("\r\n","");
paragraphString = paragraphString.replaceAll("\n","");
paragraphString = paragraphString.trim();
+
+ if ("前言".equals(getChinese(paragraphString)) && (paragraphString.replaceAll("\t", "")
+ .replaceAll("\b", "").replaceAll(" ", "").length() == 2)) { // 前言后面有文本,判定为是目录中的前言
+ firstFlag = false;
+ }
+ if(firstFlag) {
+ continue;
+ }
+
if(StringUtils.isEmpty(paragraphString)){
// 处理当前段落仅为图片的情况
List imageBundleList = readImageInParagraph((XWPFParagraph) p);
@@ -239,13 +241,16 @@ public class FileSpiltService {
if (sarFileSplitInfoEO.getStartNumber() <= 1 && sarFileSplitInfoEO.getStopNumber() >= 1) {
messageList.add(message);
treeList.add(documentTreeEO1);
+ preName = getOneStartDigit(paragraphString, enumByValue);;
+ preNameNum = g;
menuCanAdd = true;
} else {
menuCanAdd = false;
}
messageNumber++;
}
- } else if (messageNumber == 1) {
+ }
+ /*else if (messageNumber == 1) {
ptest = Pattern.compile("^2\\s{0,50}规范性引用文件");
matcher = ptest.matcher(paragraphString);
if (matcher.find()) {
@@ -312,11 +317,21 @@ public class FileSpiltService {
addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText());
}
}
- } else if (messageNumber >= 3) {
+ } */
+ else if (messageNumber >= 1) {
ptest = Pattern.compile("^[\\d.]*$");
boolean hasGoIf = false;
+ String startDigit = getOneStartDigit(paragraphString, enumByValue);
for (int i = 0; i < nowStart.size(); i++) {
- if (paragraphString.startsWith(nowStart.get(i))) {
+// if (paragraphString.startsWith(nowStart.get(i))) {
+ if (startDigit.equals(nowStart.get(i))) {
+ // 判断真的是标题还是干扰项 TODO
+ if (nowStart.get(i).matches(regex)) {
+ boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit, g, startDigitList, ".");
+ if (result) {
+ continue;
+ }
+ }
// 判断名称,如果大于10位,取十位,
String itemName = paragraphString.substring(nowStart.get(i).length()).length() > 10 ? paragraphString.substring(nowStart.get(i).length(), nowStart.get(i).length() + 10) : paragraphString.substring(nowStart.get(i).length());
List clauseContent = new ArrayList<>();
@@ -330,6 +345,8 @@ public class FileSpiltService {
// 增加一条数据,需要在数结构中加一条数据
SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
treeList.add(sarFileSplitMenuEO);
+ preName = startDigit;
+ preNameNum = g;
message.setMenuId(sarFileSplitMenuEO.getId());
if(!StringUtils.isEmpty(itemName)){
addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length()));
@@ -416,18 +433,16 @@ public class FileSpiltService {
* @return
*/
public int fileGSO(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) {
- // 拆分文件主表中插入数据
if (sarFileSplitInfoEO.getStopNumber() <= 0) {
sarFileSplitInfoEO.setStopNumber(200);
}
if (sarFileSplitInfoEO.getStartNumber() <= 0) {
sarFileSplitInfoEO.setStartNumber(1);
}
-// dao.insertSelective(sarFileSplitInfoEO);
// 拆分文件条款表中最终插入数据
List messageList = new ArrayList<>();
-// int messageNumber = 0;
+ int messageNumber = 0;
// 拆分文件目录表中最终插入数据
List treeList = new ArrayList<>();
// 拆分文件条款详情表中最终插入数据
@@ -447,94 +462,89 @@ public class FileSpiltService {
List nowStart = new ArrayList<>();
nowStart.add("1");
- try {
+// if (sarFileSplitInfoEO.getStartNumber()<4){
+// } else {
+// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber()));
+// }
+ //获取文件地址
+ String connectId = sarFileSplitInfoEO.getConnectId();
+ String fileName = sarFileSplitInfoEO.getFileName();
+ if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+ queryWrapper.eq(OSSFile::getConnectId, connectId);
+ queryWrapper.eq(OSSFile::getFileName, fileName);
+ queryWrapper.orderByDesc(OSSFile::getCreateTime);
+ List ossFileList = iossFileService.list(queryWrapper);
+ if (CollectionUtils.isEmpty(ossFileList)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ OSSFile ossFile = ossFileList.get(0);
+ String readFilePath = ossFile.getUrl();
+ if (StringUtils.isEmpty(readFilePath) || !CosBootUtil.doesObjectExist(readFilePath)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ try (InputStream is = CosBootUtil.download(readFilePath);) {
- //获取文件地址
- String connectId = sarFileSplitInfoEO.getConnectId();
- String fileName = sarFileSplitInfoEO.getFileName();
- if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) {
- throw new JeroBootException("当前文件未找到,请重新选择!");
- }
- LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
- queryWrapper.eq(OSSFile::getConnectId, connectId);
- queryWrapper.eq(OSSFile::getFileName, fileName);
- queryWrapper.orderByDesc(OSSFile::getCreateTime);
- List ossFileList = iossFileService.list(queryWrapper);
- if (CollectionUtils.isEmpty(ossFileList)) {
- throw new JeroBootException("当前文件未找到,请重新选择!");
- }
- OSSFile ossFile = ossFileList.get(0);
- String readFilePath = ossFile.getUrl();
-
- if (StringUtils.isEmpty(readFilePath) || !CosBootUtil.doesObjectExist(readFilePath)) {
- throw new JeroBootException("当前文件未找到,请重新选择!");
- }
-
- //修改为读取PDF
// InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。
-// XWPFDocument doc = new XWPFDocument(is);
- // GSO因为word内容格式读取有问题,对GSO文件进行特殊处理,必须使用PDF文件
- if (!(readFilePath.endsWith(".pdf") || readFilePath.endsWith(".PDF"))) {
- throw new JeroBootException("GSO必须选择PDF文件!");
- }
+ XWPFDocument doc = new XWPFDocument(is);
- String readPdf = ReadPdfUtil.readPdf(readFilePath);
- if (StringUtils.isEmpty(readPdf)) {
- throw new JeroBootException("未读取到文件内容,请检查后重试!");
- }
- String[] pdfArrays;
-
- String os = System.getProperty("os.name");
- //Windows操作系统
- if (os != null && os.toLowerCase().startsWith("windows")) {
- pdfArrays = readPdf.split("\r\n");
- } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
- pdfArrays = readPdf.split("\n");
- } else { //其它操作系统
- pdfArrays = readPdf.split("\n");
- }
-
-// Pattern ptest ;
+ Pattern ptest = Pattern.compile("^[\\d.]*$");
// Matcher matcher;
// 记录拆分后的每一段文字
- //修改为读取PDF
-// List elements = doc.getBodyElements();
+ List elements = doc.getBodyElements();
// 记录word自动生成的编号数据
Map numberMap = new HashMap();
boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
- //修改为读取PDF
-// for (IBodyElement element : elements) {
- //定义初始化数据
+ List startDigitList = getStartDigit(elements, enumByValue);
+ List newStartDigitList = new ArrayList<>();
+ for (String startDigit : startDigitList) {
+ if(startDigit.endsWith(".")) {
+ startDigit = startDigit.substring(0, startDigit.lastIndexOf("."));
+ }
+ newStartDigitList.add(startDigit);
+ }
+ String regex = "^[0-9]*$";
boolean firstFlag = true;
- for (String paragraphString : pdfArrays) {
- if (paragraphString.contains("SCOPE")) {
- firstFlag = false;
- }
- if (firstFlag) {
- continue;
- }
-
+ String preName = "";
+ int preNameNum = 0;
+// for (IBodyElement element : elements) {
+ for (int g=0; g< elements.size(); g++) {
+ IBodyElement element = elements.get(g);
// 段落
- //修改为读取PDF
-// if (element instanceof XWPFParagraph) {
-// XWPFParagraph p = (XWPFParagraph)element;
+ if (element instanceof XWPFParagraph) {
+ XWPFParagraph p = (XWPFParagraph) element;
- // 处理段落生成编号不识别问题
-// String paragraphString = p.getText();
- if (StringUtils.isNotBlank(paragraphString)) {
- paragraphString = paragraphString.replace((char) 12288, ' ');
- paragraphString = paragraphString.trim();
- }
- if(StringUtils.isEmpty(paragraphString)){
- continue;
- }
- paragraphString = paragraphString.replaceAll("\r\n","");
- paragraphString = paragraphString.replaceAll("\n","");
- paragraphString = paragraphString.trim();
- if(StringUtils.isEmpty(paragraphString)){
- continue;
- }
+ // 处理段落生成编号不识别问题
+ String paragraphString = p.getText();
+ if (!StringUtils.isEmpty(paragraphString)) {
+ paragraphString = paragraphString.replace((char) 12288, ' ');
+ paragraphString = paragraphString.replaceAll("\r\n","");
+ paragraphString = paragraphString.replaceAll("\n","");
+ paragraphString = paragraphString.trim();
+ }
+ if(StringUtils.isEmpty(paragraphString)){
+ // 处理当前段落仅为图片的情况
+ List imageBundleList = readImageInParagraph((XWPFParagraph) p);
+ if (CollectionUtils.isNotEmpty(imageBundleList)) {
+ if (messageList.size() > 0) {
+ addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
+ }
+ }
+ continue;
+ }
+ if (paragraphString.toLowerCase().contains("scope")) {
+ String pp = paragraphString.replaceAll("\t", "")
+ .replaceAll("\b", "").replaceAll(" ", "");
+ if (!pp.substring(pp.length()-1).matches(regex)) {
+ firstFlag = false;
+ }
+ }
+ if (firstFlag) {
+ continue;
+ }
// if (StringUtils.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) {
// String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf("."));
// if (numberMap.containsKey(numberParent)){
@@ -551,66 +561,113 @@ public class FileSpiltService {
// paragraphString = numberParent+".1"+ p.getText();
// }
// }
-
-// ptest = Pattern.compile("^[\\d.]*$");
- boolean hasGoIf = false;
- for (int i = 0; i < nowStart.size(); i++) {
- if (paragraphString.startsWith(nowStart.get(i))) {
- // 判断名称,如果大于10位,取十位,
-// String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
- String itemName = FileSplitUtils.getItemName(paragraphString, nowStart.get(i));
- List clauseContent = new ArrayList<>();
- clauseContent.add(paragraphString);
- SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent);
-
- String[] numberStr = nowStart.get(i).split("\\.");
- if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()) {
- menuCanAdd = false;
- } else {
- // 增加一条数据,需要在数结构中加一条数据
- SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
- treeList.add(sarFileSplitMenuEO);
- message.setMenuId(sarFileSplitMenuEO.getId());
- if(!StringUtils.isEmpty(itemName)){
- addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length()));
+//^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$
+ ptest = Pattern.compile("^[\\d.]*$");
+ //定义查看是否有编号,没有编号则按照上一个编号放置数据
+ boolean hasGoIf = false;
+ String startDigit = getOneStartDigit(paragraphString, enumByValue);
+ for (int i = 0; i < nowStart.size(); i++) {
+// if (paragraphString.startsWith(nowStart.get(i))) {
+ if (startDigit.equals(nowStart.get(i)) || startDigit.equals(nowStart.get(i)+ ".") || startDigit.equals(nowStart.get(i)+ "-") ) {
+ // 判断一级 真的是标题还是干扰项 TODO
+ if (startDigit.matches("^[0-9]*.$") || startDigit.matches("^[0-9]*-$")) {
+ if(startDigit.endsWith(".")) {
+ boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit.substring(0, startDigit.lastIndexOf(".")), g, newStartDigitList, ".");
+ if (result) {
+ continue;
+ }
+ } else if(startDigit.endsWith("-")) {
+ boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit.substring(0, startDigit.lastIndexOf("-")), g, newStartDigitList, ".");
+ if (result) {
+ continue;
+ }
+ } else {
+ boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit, g, newStartDigitList, ".");
+ if (result) {
+ continue;
+ }
+ }
}
- messageList.add(message);
- nowStart = getNewNowStart(nowStart.get(i));
- menuCanAdd = true;
+ // 判断名称,如果大于10位,取十位,
+// String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
+ String itemName = FileSplitUtils.getItemName(paragraphString, startDigit);
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent);
+
+ String[] numberStr = nowStart.get(i).split("\\.");
+// String numberStrTemp = numberStr[0].replace("S", "");
+
+ if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()) {
+ menuCanAdd = false;
+ } else {
+ // 增加一条数据,需要在数结构中加一条数据
+ SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
+ treeList.add(sarFileSplitMenuEO);
+ preName = nowStart.get(i);
+ preNameNum = g;
+ message.setMenuId(sarFileSplitMenuEO.getId());
+// addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length()));
+ if(!StringUtils.isEmpty(itemName)){
+ addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length()));
+ }
+ messageList.add(message);
+ nowStart = getNewNowStart(nowStart.get(i));
+ menuCanAdd = true;
+ }
+ hasGoIf = true;
+ break;
+
}
- hasGoIf = true;
- break;
}
- }
+ if (!hasGoIf && menuCanAdd) {
+ if ("annex1".equals(paragraphString.toLowerCase().replaceAll("\t", "")
+ .replaceAll("\b", "").replaceAll(" ", ""))
+ && !messageList.get(messageList.size() - 1).getItemsNum().equals("annex")) {
- if (!hasGoIf && menuCanAdd) {
- if (!paragraphString.equals("")) {
- addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString);
- }
-// List imageBundleList = readImageInParagraph((XWPFParagraph)p);
-// if(CollectionUtils.isNotEmpty(imageBundleList)) {
-// addItermsConditionsImage(messageList.get(messageList.size()-1),itemValList, p,imageBundleList);
-// }
+ String appendixNum = messageList.get(messageList.size() - 1).getItemsNum().split("\\.")[0];
+ if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) {
+ String itemName = "annex";
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "annex", itemName, clauseContent);
+ // 增加一条数据,需要在数结构中加一条数据
+ SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList("annex", treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue);
+ addItermsConditionsText(message, itemValList, paragraphString);
+ treeList.add(sarFileSplitMenuEO);
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ messageList.add(message);
+ nowStart = new ArrayList<>();
+ } else {
+ break;
+ }
+
+ } else {
+ if (!p.getText().equals("")) {
+ addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText());
+ }
+ List imageBundleList = readImageInParagraph((XWPFParagraph) p);
+ if (CollectionUtils.isNotEmpty(imageBundleList)) {
+ addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
+ }
+ }
// }
- hasGoIf = true;
- }
- // 判断是否直接跳出所有循环
- if (!menuCanAdd && messageList.size() > 0) {
- break;
- }
+ hasGoIf = true;
+ }
- //修改为读取PDF
-// } else if (element instanceof XWPFTable){
-// if(messageList != null && !messageList.isEmpty()){
-// addItermsConditionsOfTable(messageList.get(messageList.size()-1),itemValList,(XWPFTable)element);
-// }
-// }
+ // 判断是否直接跳出所有循环
+ if (!menuCanAdd && messageList.size() > 0) {
+ break;
+ }
+
+ } else if (element instanceof XWPFTable) {
+ if (messageList != null && !messageList.isEmpty()) {
+ addItermsConditionsOfTable(messageList.get(messageList.size() - 1), itemValList, (XWPFTable) element);
+ }
+ }
}
- } catch (JeroBootException e) {
- e.printStackTrace();
- throw new JeroBootException(e.getMessage());
} catch (Exception e) {
e.printStackTrace();
return -1;
@@ -699,7 +756,22 @@ public class FileSpiltService {
// 记录word自动生成的编号数据
Map numberMap = new HashMap();
boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
- for (IBodyElement element : elements) {
+ List startDigitList = getStartDigit(elements, enumByValue);
+ List newStartDigitList = new ArrayList<>();
+ for (String startDigit : startDigitList) {
+ if(startDigit.endsWith("S")) {
+ startDigit = startDigit.substring(0, startDigit.lastIndexOf("S"));
+ }
+ if(startDigit.endsWith(".")) {
+ startDigit = startDigit.substring(0, startDigit.lastIndexOf("."));
+ }
+ newStartDigitList.add(startDigit);
+ }
+ String preName = "";
+ int preNameNum = 0;
+// for (IBodyElement element : elements) {
+ for (int g=0; g< elements.size(); g++) {
+ IBodyElement element = elements.get(g);
// 段落
if (element instanceof XWPFParagraph) {
XWPFParagraph p = (XWPFParagraph) element;
@@ -752,14 +824,33 @@ public class FileSpiltService {
//^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$
ptest = Pattern.compile("S^[\\d.]*$");
boolean hasGoIf = false;
+ String startDigit = getOneStartDigit(paragraphString,enumByValue);
+ if(startDigit.endsWith("S")) {
+ startDigit = startDigit.substring(0, startDigit.lastIndexOf("S"));
+ }
for (int i = 0; i < nowStart.size(); i++) {
- if (paragraphString.startsWith(nowStart.get(i))) {
+// if (paragraphString.startsWith(nowStart.get(i))) {
+ if (startDigit.equals(nowStart.get(i)) || startDigit.equals(nowStart.get(i)+ ".") ) {
+ // 判断一级 真的是标题还是干扰项 TODO
+ if (startDigit.matches("^[0-9]*.$")) {
+ if(startDigit.endsWith(".")) {
+ boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit.substring(0, startDigit.lastIndexOf(".")), g, newStartDigitList, ".");
+ if (result) {
+ continue;
+ }
+ } else {
+ boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit, g, newStartDigitList, ".");
+ if (result) {
+ continue;
+ }
+ }
+ }
// 判断名称,如果大于10位,取十位,
// String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
- String itemName = FileSplitUtils.getItemName(paragraphString, nowStart.get(i));
+ String itemName = FileSplitUtils.getItemName(paragraphString, startDigit);
List clauseContent = new ArrayList<>();
clauseContent.add(paragraphString);
- SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent);
+ SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent);
String[] numberStr = nowStart.get(i).split("\\.");
String numberStrTemp = numberStr[0].replace("S", "");
@@ -770,6 +861,8 @@ public class FileSpiltService {
// 增加一条数据,需要在数结构中加一条数据
SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
treeList.add(sarFileSplitMenuEO);
+ preName = nowStart.get(i);
+ preNameNum = g;
message.setMenuId(sarFileSplitMenuEO.getId());
if(!StringUtils.isEmpty(itemName)){
addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length()));
@@ -1262,7 +1355,7 @@ public class FileSpiltService {
treeList.add(documentTreeEO);
List nowStart = new ArrayList<>();
- nowStart.add("1.");
+ nowStart.add("1");
// if (sarFileSplitInfoEO.getStartNumber()<4){
// } else {
// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber()));
@@ -1299,7 +1392,21 @@ public class FileSpiltService {
// 记录word自动生成的编号数据
Map numberMap = new HashMap();
boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
- for (IBodyElement element : elements) {
+ List startDigitList = getStartDigit(elements, enumByValue);
+ List newStartDigitList = new ArrayList<>();
+ for (String startDigit : startDigitList) {
+ if(startDigit.endsWith(".")) {
+ startDigit = startDigit.substring(0, startDigit.lastIndexOf("."));
+ }
+ newStartDigitList.add(startDigit);
+ }
+ String regex = "^[0-9]*$";
+ boolean firstFlag = true;
+ String preName = "";
+ int preNameNum = 0;
+// for (IBodyElement element : elements) {
+ for (int g=0; g< elements.size(); g++) {
+ IBodyElement element = elements.get(g);
// 段落
if (element instanceof XWPFParagraph) {
XWPFParagraph p = (XWPFParagraph) element;
@@ -1312,6 +1419,26 @@ public class FileSpiltService {
paragraphString = paragraphString.replaceAll("\n","");
paragraphString = paragraphString.trim();
}
+ if(StringUtils.isEmpty(paragraphString)){
+ // 处理当前段落仅为图片的情况
+ List imageBundleList = readImageInParagraph((XWPFParagraph) p);
+ if (CollectionUtils.isNotEmpty(imageBundleList)) {
+ if (messageList.size() > 0) {
+ addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
+ }
+ }
+ continue;
+ }
+ if (paragraphString.toLowerCase().contains("scope")) {
+ String pp = paragraphString.replaceAll("\t", "")
+ .replaceAll("\b", "").replaceAll(" ", "");
+ if (!pp.substring(pp.length()-1).matches(regex)) {
+ firstFlag = false;
+ }
+ }
+ if (firstFlag) {
+ continue;
+ }
// if (StringUtils.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) {
// String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf("."));
// if (numberMap.containsKey(numberParent)){
@@ -1332,14 +1459,35 @@ public class FileSpiltService {
ptest = Pattern.compile("^[\\d.]*$");
//定义查看是否有编号,没有编号则按照上一个编号放置数据
boolean hasGoIf = false;
+ String startDigit = getOneStartDigit(paragraphString, enumByValue);
for (int i = 0; i < nowStart.size(); i++) {
- if (paragraphString.startsWith(nowStart.get(i))) {
+// if (paragraphString.startsWith(nowStart.get(i))) {
+ if (startDigit.equals(nowStart.get(i)) || startDigit.equals(nowStart.get(i)+ ".") || startDigit.equals(nowStart.get(i)+ "-") ) {
+ // 判断一级 真的是标题还是干扰项 TODO
+ if (startDigit.matches("^[0-9]*.$") || startDigit.matches("^[0-9]*-$")) {
+ if(startDigit.endsWith(".")) {
+ boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit.substring(0, startDigit.lastIndexOf(".")), g, newStartDigitList, ".");
+ if (result) {
+ continue;
+ }
+ } else if(startDigit.endsWith("-")) {
+ boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit.substring(0, startDigit.lastIndexOf("-")), g, newStartDigitList, ".");
+ if (result) {
+ continue;
+ }
+ } else {
+ boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit, g, newStartDigitList, ".");
+ if (result) {
+ continue;
+ }
+ }
+ }
// 判断名称,如果大于10位,取十位,
// String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
- String itemName = FileSplitUtils.getItemName(paragraphString, nowStart.get(i));
+ String itemName = FileSplitUtils.getItemName(paragraphString, startDigit);
List clauseContent = new ArrayList<>();
clauseContent.add(paragraphString);
- SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent);
+ SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent);
String[] numberStr = nowStart.get(i).split("\\.");
// String numberStrTemp = numberStr[0].replace("S", "");
@@ -1350,13 +1498,15 @@ public class FileSpiltService {
// 增加一条数据,需要在数结构中加一条数据
SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
treeList.add(sarFileSplitMenuEO);
+ preName = nowStart.get(i);
+ preNameNum = g;
message.setMenuId(sarFileSplitMenuEO.getId());
// addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length()));
if(!StringUtils.isEmpty(itemName)){
- addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length()));
+ addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length()));
}
messageList.add(message);
- nowStart = getNewNowStartEU(nowStart.get(i));
+ nowStart = getNewNowStart(nowStart.get(i));
menuCanAdd = true;
}
hasGoIf = true;
@@ -1366,12 +1516,37 @@ public class FileSpiltService {
}
if (!hasGoIf && menuCanAdd) {
- if (!p.getText().equals("")) {
- addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText());
- }
- List imageBundleList = readImageInParagraph((XWPFParagraph) p);
- if (CollectionUtils.isNotEmpty(imageBundleList)) {
- addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
+ if (("annex1".equals(paragraphString.toLowerCase().replaceAll("\t", "")
+ .replaceAll("\b", "").replaceAll(" ", ""))
+ || "annex1a".equals(paragraphString.toLowerCase().replaceAll("\t", "")
+ .replaceAll("\b", "").replaceAll(" ", "")))
+ && !messageList.get(messageList.size() - 1).getItemsNum().equals("annex")) {
+
+ String appendixNum = messageList.get(messageList.size() - 1).getItemsNum().split("\\.")[0];
+ if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) {
+ String itemName = "annex";
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "annex", itemName, clauseContent);
+ // 增加一条数据,需要在数结构中加一条数据
+ SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList("annex", treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue);
+ addItermsConditionsText(message, itemValList, paragraphString);
+ treeList.add(sarFileSplitMenuEO);
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ messageList.add(message);
+ nowStart = new ArrayList<>();
+ } else {
+ break;
+ }
+
+ } else {
+ if (!p.getText().equals("")) {
+ addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText());
+ }
+ List imageBundleList = readImageInParagraph((XWPFParagraph) p);
+ if (CollectionUtils.isNotEmpty(imageBundleList)) {
+ addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
+ }
}
// }
hasGoIf = true;
@@ -1840,7 +2015,7 @@ public class FileSpiltService {
* @param nowStart
* @return
*/
- private static List getNewNowStartEU(String nowStart) {
+ public static List getNewNowStartEU(String nowStart) {
// List nowStartList = new ArrayList<>();
List nowResultStartList = new ArrayList<>();
String[] numberStr = nowStart.split("\\.");
@@ -1866,7 +2041,7 @@ public class FileSpiltService {
* @param nowStart
* @return
*/
- private static List getNewNowStartUS(String nowStart) {
+ public static List getNewNowStartUS(String nowStart) {
// List nowStartList = new ArrayList<>();
List nowResultStartList = new ArrayList<>();
String[] numberStr = nowStart.replace("S", "").split("\\.");
@@ -1893,7 +2068,7 @@ public class FileSpiltService {
* @param nowStart 当前标题内容
* @return
*/
- private static List getNewNowStartJapanOne(String lastStr, String nowStart) {
+ public static List getNewNowStartJapanOne(String lastStr, String nowStart) {
List nowResultStartList = new ArrayList<>();
if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains(".")) {
//包含数字且.
@@ -1934,7 +2109,7 @@ public class FileSpiltService {
* @param nowStart 当前标题内容
* @return
*/
- private static List getNewNowStartJapanTwo(StringBuilder lastStr, StringBuilder secondStr, String nowStart) {
+ public static List getNewNowStartJapanTwo(StringBuilder lastStr, StringBuilder secondStr, String nowStart) {
List nowResultStartList = new ArrayList<>();
if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains(".")) {
//包含数字且.
@@ -1980,7 +2155,7 @@ public class FileSpiltService {
* @param nowStart
* @return
*/
- private static List getNewNowStartKmvssArticle(StringBuilder lastStr, String nowStart) {
+ public static List getNewNowStartKmvssArticle(StringBuilder lastStr, String nowStart) {
List nowResultStartList = new ArrayList<>();
if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains(")")) {
//包含数字且包含括号
@@ -2014,7 +2189,7 @@ public class FileSpiltService {
* @param menuLevel
* @return
*/
- private static List getNewNowStartKmvssTable(String[] catalogerArr, String nowStart, int menuLevel) {
+ public static List getNewNowStartKmvssTable(String[] catalogerArr, String nowStart, int menuLevel) {
/*
*1.韩国KmvssTable模板处理
* 分为五级拆分,拆分为以下内容:
@@ -2111,7 +2286,7 @@ public class FileSpiltService {
* @param nowStart
* @return
*/
- private static List getNewNowStart(String nowStart) {
+ public static List getNewNowStart(String nowStart) {
// List nowStartList = new ArrayList<>();
List nowResultStartList = new ArrayList<>();
String[] numberStr = nowStart.split("\\.");
@@ -2131,7 +2306,7 @@ public class FileSpiltService {
return nowResultStartList;
}
- private static SarFileSplitMenuEO getTreeList(String name,
+ public static SarFileSplitMenuEO getTreeList(String name,
List treeList,
String generalCatalogueId,
SarFileSplitInfoEO sarFileSplitInfoEO,
@@ -2143,14 +2318,14 @@ public class FileSpiltService {
documentTreeEO.setId(UUIDUtils.randomUUID20());
documentTreeEO.setItemName(itemName);
- documentTreeEO.setPId(generalCatalogueId);
+ documentTreeEO.setPId(generalCatalogueId); // 默认情况
documentTreeEO.setInfoId(sarFileSplitInfoEO.getId());
documentTreeEO.setDisplaySeq(treeListDisplay);
documentTreeEO.setName(name);
documentTreeEO.setValidFlag(0);
// 用现在得name 和之前得name 做比较,确定,parentId
-
+// List pIdList = new ArrayList<>();
boolean oneFlag = false;
boolean twoFlag = false;
boolean threeFlag = false;
@@ -2159,11 +2334,13 @@ public class FileSpiltService {
switch (enumByValue) {
case GB:
case GBT:
+ case EU:
case US:
case GSO:
if (name.indexOf(".") >= 0) {
if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) {
documentTreeEO.setPId(forDocumentTree.getId());
+// pIdList.add(forDocumentTree.getId());
break a;
}
} else {
@@ -2171,36 +2348,41 @@ public class FileSpiltService {
}
break;
- case EU:
-
- if (name.indexOf(".") >= 0) {
- if (name.substring(0, name.lastIndexOf(".") - 1).equals(forDocumentTree.getName())) {
- documentTreeEO.setPId(forDocumentTree.getId());
- break a;
- }
- } else {
- documentTreeEO.setPId(generalCatalogueId);
- }
- break;
+// case EU:
+// if (name.indexOf(".") >= 0) {
+// if (name.substring(0, name.lastIndexOf(".") - 1).equals(forDocumentTree.getName())) {
+// documentTreeEO.setPId(forDocumentTree.getId());
+//// pIdList.add(forDocumentTree.getId());
+// break a;
+// }
+// } else {
+// documentTreeEO.setPId(generalCatalogueId);
+//// pIdList.add(generalCatalogueId);
+// }
+// break;
case JPN_ATTACHMENT:
if (name.contains(".")) {
if (name.indexOf(".") >= 0) {
if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) {
documentTreeEO.setPId(forDocumentTree.getId());
+// pIdList.add(forDocumentTree.getId());
break a;
}
} else {
documentTreeEO.setPId(generalCatalogueId);
+// pIdList.add(generalCatalogueId);
}
} else {
if (name.indexOf("–") >= 0) {
if (name.substring(0, name.lastIndexOf("–")).equals(forDocumentTree.getName())
|| (name.substring(0, name.lastIndexOf("–")) + ".").equals(forDocumentTree.getName())) {
documentTreeEO.setPId(forDocumentTree.getId());
+// pIdList.add(forDocumentTree.getId());
break a;
}
} else {
documentTreeEO.setPId(generalCatalogueId);
+// pIdList.add(generalCatalogueId);
}
}
break;
@@ -2226,6 +2408,7 @@ public class FileSpiltService {
if (firstNameTemp.equals(forDocumentTree.getName())) {
documentTreeEO.setName(nameTemp);
documentTreeEO.setPId(forDocumentTree.getId());
+// pIdList.add(forDocumentTree.getId());
break a;
}
} else if (FileSplitUtils.judgeContainsStr(nameTemp)) {
@@ -2250,12 +2433,14 @@ public class FileSpiltService {
if (oneFlag && secondTemp.equals(forDocumentTree.getName())) {
documentTreeEO.setName(nameTemp);
documentTreeEO.setPId(forDocumentTree.getId());
+// pIdList.add(forDocumentTree.getId());
break a;
}
}
} else {
documentTreeEO.setPId(generalCatalogueId);
+// pIdList.add(generalCatalogueId);
}
break;
case KMVSS_ARTICLE:
@@ -2279,11 +2464,13 @@ public class FileSpiltService {
if (firstNameTemp.equals(forDocumentTree.getName())) {
documentTreeEO.setName(nameTemp);
documentTreeEO.setPId(forDocumentTree.getId());
+// pIdList.add(forDocumentTree.getId());
break a;
}
}
} else {
documentTreeEO.setPId(generalCatalogueId);
+// pIdList.add(generalCatalogueId);
}
break;
case KMVSS_TABLE:
@@ -2310,6 +2497,7 @@ public class FileSpiltService {
if (firstNameTemp.equals(forDocumentTree.getName())) {
documentTreeEO.setName(nameTemp);
documentTreeEO.setPId(forDocumentTree.getId());
+// pIdList.add(forDocumentTree.getId());
break a;
}
} else if (FileSplitUtils.hasDigit(nameTemp) && nameTemp.contains(")") && (!nameTemp.contains("("))) {
@@ -2334,6 +2522,7 @@ public class FileSpiltService {
if (oneFlag && secondTemp.equals(forDocumentTree.getName())) {
documentTreeEO.setName(nameTemp);
documentTreeEO.setPId(forDocumentTree.getId());
+// pIdList.add(forDocumentTree.getId());
break a;
}
@@ -2368,6 +2557,7 @@ public class FileSpiltService {
if (oneFlag && twoFlag && threeTemp.equals(forDocumentTree.getName())) {
documentTreeEO.setName(nameTemp);
documentTreeEO.setPId(forDocumentTree.getId());
+// pIdList.add(forDocumentTree.getId());
break a;
}
@@ -2411,30 +2601,38 @@ public class FileSpiltService {
if (oneFlag && twoFlag && threeFlag && fourTemp.equals(forDocumentTree.getName())) {
documentTreeEO.setName(nameTemp);
documentTreeEO.setPId(forDocumentTree.getId());
+// pIdList.add(forDocumentTree.getId());
break a;
}
}
} else {
documentTreeEO.setPId(generalCatalogueId);
+// pIdList.add(generalCatalogueId);
}
break;
default:
if (name.indexOf(".") >= 0) {
if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) {
documentTreeEO.setPId(forDocumentTree.getId());
+// pIdList.add(forDocumentTree.getId());
break a;
}
} else {
documentTreeEO.setPId(generalCatalogueId);
+// pIdList.add(generalCatalogueId);
}
+ break;
}
}
+// if (CollectionUtils.isNotEmpty(pIdList)) {
+// documentTreeEO.setPId(pIdList.get(pIdList.size()-1)); // 拿最后一个
+// }
return documentTreeEO;
}
- private static SarFileSplitItemsEO getSarFileSplitItemsEO(String infoId, String itemsNum, String itemsName, List itemsCondi) {
+ public static SarFileSplitItemsEO getSarFileSplitItemsEO(String infoId, String itemsNum, String itemsName, List itemsCondi) {
SarFileSplitItemsEO sarFileSplitItemsEO = new SarFileSplitItemsEO();
sarFileSplitItemsEO.setInfoId(infoId);
sarFileSplitItemsEO.setItemsNum(itemsNum);
@@ -3065,7 +3263,7 @@ public class FileSpiltService {
// return personMsgEO;
// }
- private String getChinese(String source) {
+ public String getChinese(String source) {
char[] chars = source.toCharArray();
StringBuilder stringBuilder = new StringBuilder();
@@ -3079,4 +3277,84 @@ public class FileSpiltService {
return stringBuilder.toString();
}
+ public List getStartDigit(List elements, SplitFileTypeTypeEnum enumByValue) {
+ String regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]"; // TODO
+ switch (enumByValue) {
+ case GB:
+ case GBT:
+ case EU:
+ case GSO:
+ case JPN_ARTICLE:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]";
+ break;
+ case KMVSS_ARTICLE:
+ case JPN_ATTACHMENT:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}–]";
+ break;
+ case US:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}S]";
+ break;
+ }
+ Matcher matcher;
+ List startDigitList = new ArrayList<>();
+ for (int l=0; l< elements.size(); l++) {
+ IBodyElement element = elements.get(l);
+ if (element instanceof XWPFParagraph) {
+ XWPFParagraph p = (XWPFParagraph) element;
+ String arr = p.getText();
+
+ matcher = Pattern.compile(regex).matcher(arr);
+ if(matcher.find()) {
+ int index = matcher.start();
+ String startDigit = arr.substring(0, index);
+ startDigit = startDigit.replaceAll("\t", "").replaceAll("\b", "")
+ .replaceAll(" ", "").replaceAll("\"", "").replaceAll("\'", "");
+ startDigitList.add(startDigit);
+
+ } else {
+ startDigitList.add(arr.replaceAll("\t", "").replaceAll("\b", "")
+ .replaceAll(" ", "").replaceAll("\"", "").replaceAll("\'", ""));
+
+ }
+ } else if (element instanceof XWPFTable) {
+ startDigitList.add("");
+ }
+ }
+ return startDigitList;
+ }
+
+ public String getOneStartDigit(String arr, SplitFileTypeTypeEnum enumByValue) {
+ String regex="[^\\p{Punct}\\p{Space}\\p{Digit}]"; // TODO
+ switch (enumByValue) {
+ case GB:
+ case GBT:
+ case EU:
+ case GSO:
+ case JPN_ARTICLE:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]";
+ break;
+ case KMVSS_ARTICLE:
+ case JPN_ATTACHMENT:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}–]";
+ break;
+ case US:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}S]";
+ break;
+ }
+ Matcher matcher;
+ matcher = Pattern.compile(regex).matcher(arr);
+ if(matcher.find()) {
+ int index = matcher.start();
+ String startDigit = arr.substring(0, index);
+ startDigit = startDigit.replaceAll(" ", "");
+ if(StringUtils.isNotBlank(startDigit)) {
+ return startDigit.replaceAll("\t", "").replaceAll("\b", "")
+ .replaceAll("\"", "").replaceAll("\'", "");
+ }
+ } else {
+ return arr.replaceAll("\t", "").replaceAll("\b", "")
+ .replaceAll(" ", "").replaceAll("\"", "").replaceAll("\'", "");
+ }
+ return "";
+ }
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitPdfService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitPdfService.java
new file mode 100644
index 000000000..1946515db
--- /dev/null
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitPdfService.java
@@ -0,0 +1,1849 @@
+package com.jero.modules.split.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jero.common.exception.JeroBootException;
+import com.jero.common.util.oss.CosBootUtil;
+import com.jero.modules.document.utils.ReadPdfUtil;
+import com.jero.modules.ocr.util.UUIDUtils;
+import com.jero.modules.oss.entity.OSSFile;
+import com.jero.modules.oss.service.IOSSFileService;
+import com.jero.modules.split.entity.SarFileSplitInfoEO;
+import com.jero.modules.split.entity.SarFileSplitItemsEO;
+import com.jero.modules.split.entity.SarFileSplitItemsValEO;
+import com.jero.modules.split.entity.SarFileSplitMenuEO;
+import com.jero.modules.split.enums.SplitFileTypeTypeEnum;
+import com.jero.modules.split.mapper.SarFileSplitMenuEOMapper;
+import com.jero.modules.split.service.IFileSplitItemsEOService;
+import com.jero.modules.split.service.ISarFileSplitItemsValEOService;
+import com.jero.modules.split.util.FileSplitUtils;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@Service
+@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+public class FileSplitPdfService {
+
+ @Autowired
+ private SarFileSplitMenuEOMapper sarFileSplitMenuEOMapper;
+ @Autowired
+ private IFileSplitItemsEOService iSarFileSplitItemsEOService;
+ @Autowired
+ private ISarFileSplitItemsValEOService iSarFileSplitItemsValEOService;
+ @Autowired
+ private IOSSFileService iossFileService;
+ @Autowired
+ private FileSpiltService fileSpiltService;
+
+ @Value("${jero.path.upload}")
+ private String filePath;
+ @Value("${jero.path.uploadCos}")
+ private String filePathCos;
+ @Value("${jero.splitUrl}")
+ private String splitUrl;
+
+ public int fileCHN(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) {
+
+ // 拆分文件主表中插入数据
+ if (sarFileSplitInfoEO.getStopNumber() <= 0) {
+ sarFileSplitInfoEO.setStopNumber(200);
+ }
+ if (sarFileSplitInfoEO.getStartNumber() <= 0) {
+ sarFileSplitInfoEO.setStartNumber(1);
+ }
+
+ // 拆分文件条款表中最终插入数据
+ List messageList = new ArrayList<>();
+// int messageNumber = 0;
+ // 拆分文件目录表中最终插入数据
+ List treeList = new ArrayList<>();
+ // 拆分文件条款详情表中最终插入数据
+ List itemValList = new ArrayList<>();
+ Long treeListDisplay = 1L;
+
+ String generalCatalogueId = UUIDUtils.randomUUID20();
+ SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
+// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"General Catalogue","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
+ documentTreeEO.setId(generalCatalogueId);
+ documentTreeEO.setName("总目录");
+ documentTreeEO.setInfoId(sarFileSplitInfoEO.getId());
+ documentTreeEO.setDisplaySeq(1L);
+ documentTreeEO.setDisplaySeq(treeListDisplay++);
+ documentTreeEO.setValidFlag(0);
+ treeList.add(documentTreeEO);
+
+ List nowStart = new ArrayList<>();
+ nowStart.add("1");
+ try {
+
+ //获取文件地址
+ String connectId = sarFileSplitInfoEO.getConnectId();
+ String fileName = sarFileSplitInfoEO.getFileName();
+ if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+ queryWrapper.eq(OSSFile::getConnectId, connectId);
+ queryWrapper.eq(OSSFile::getFileName, fileName);
+ queryWrapper.orderByDesc(OSSFile::getCreateTime);
+ List ossFileList = iossFileService.list(queryWrapper);
+ if (CollectionUtils.isEmpty(ossFileList)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ OSSFile ossFile = ossFileList.get(0);
+ String readFilePath = ossFile.getUrl();
+
+ if (StringUtils.isEmpty(readFilePath) || !CosBootUtil.doesObjectExist(readFilePath)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+
+ String readPdf = ReadPdfUtil.readPdf(readFilePath);
+ if (StringUtils.isEmpty(readPdf)) {
+ throw new JeroBootException("未读取到文件内容,请检查后重试!");
+ }
+ String[] pdfArrays;
+
+ String os = System.getProperty("os.name");
+ //Windows操作系统
+ if (os != null && os.toLowerCase().startsWith("windows")) {
+ pdfArrays = readPdf.split("\r\n");
+ } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
+ pdfArrays = readPdf.split("\n");
+ } else { //其它操作系统
+ pdfArrays = readPdf.split("\n");
+ }
+
+ List startDigitList = getStartDigit(pdfArrays, enumByValue);
+ String regex = "^[0-9]*$";
+ boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
+ boolean firstFlag = true;
+ String preName = "";
+ int preNameNum = 0;
+// for (String paragraphString : pdfArrays) {
+ for (int g=0; g10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
+ String itemName = FileSplitUtils.getItemName(paragraphString, startDigit);
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent);
+
+ String[] numberStr = startDigit.split("\\.");
+ if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()) {
+ menuCanAdd = false;
+ } else {
+ // 增加一条数据,需要在数结构中加一条数据
+ SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(startDigit, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
+ treeList.add(sarFileSplitMenuEO);
+ preName = startDigit;
+ preNameNum = g;
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ if(!StringUtils.isEmpty(itemName)){
+ fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length()));
+ }
+ messageList.add(message);
+ nowStart = fileSpiltService.getNewNowStart(startDigit);
+// nowStart.addAll(treeList.stream().filter(e->!"1".equals(e.getName())).map(SarFileSplitMenuEO:: getName).collect(Collectors.toList()));
+ menuCanAdd = true;
+ }
+ hasGoIf = true;
+ break;
+
+ }
+ }
+ // 不是标题行
+ if (!hasGoIf && menuCanAdd) {
+ Pattern ptest = Pattern.compile("^附录\\s{0,50}[A-Z]{1}");
+ Matcher matcher = ptest.matcher(paragraphString);
+ // 获取当前最后一项num
+ if (matcher.find() && !messageList.get(messageList.size() - 1).getItemsNum().equals("附录")) {
+ String appendixNum = messageList.get(messageList.size() - 1).getItemsNum().split("\\.")[0];
+ if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) {
+ String itemName = "附录";
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "附录", itemName, clauseContent);
+ // 增加一条数据,需要在数结构中加一条数据
+ SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList("附录", treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue);
+ fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString);
+ treeList.add(sarFileSplitMenuEO);
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ messageList.add(message);
+ nowStart = new ArrayList<>();
+ } else {
+ break;
+ }
+ } else {
+ if (!paragraphString.equals("")) {
+ fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString);
+ }
+ }
+ hasGoIf = true;
+ }
+ // 判断是否直接跳出所有循环
+ if (!menuCanAdd && messageList.size() > 0) {
+ break;
+ }
+ }
+
+ } catch (JeroBootException e) {
+ e.printStackTrace();
+ throw new JeroBootException(e.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ return -1;
+ }
+ if (treeList.size() > 0 && messageList.size() > 0) {
+ sarFileSplitMenuEOMapper.insertForeach(treeList);
+ iSarFileSplitItemsEOService.insertForeach(messageList);
+ iSarFileSplitItemsValEOService.insertForeach(itemValList);
+ } else {
+ return -1;
+ }
+ return treeList.size();
+
+ }
+
+ public int fileGSO(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) {
+
+ // 拆分文件主表中插入数据
+ if (sarFileSplitInfoEO.getStopNumber() <= 0) {
+ sarFileSplitInfoEO.setStopNumber(200);
+ }
+ if (sarFileSplitInfoEO.getStartNumber() <= 0) {
+ sarFileSplitInfoEO.setStartNumber(1);
+ }
+// dao.insertSelective(sarFileSplitInfoEO);
+
+ // 拆分文件条款表中最终插入数据
+ List messageList = new ArrayList<>();
+// int messageNumber = 0;
+ // 拆分文件目录表中最终插入数据
+ List treeList = new ArrayList<>();
+ // 拆分文件条款详情表中最终插入数据
+ List itemValList = new ArrayList<>();
+ Long treeListDisplay = 1L;
+
+ String generalCatalogueId = UUIDUtils.randomUUID20();
+ SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
+// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"General Catalogue","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
+ documentTreeEO.setId(generalCatalogueId);
+ documentTreeEO.setName("General Catalogue");
+ documentTreeEO.setInfoId(sarFileSplitInfoEO.getId());
+ documentTreeEO.setDisplaySeq(1L);
+ documentTreeEO.setDisplaySeq(treeListDisplay++);
+ documentTreeEO.setValidFlag(0);
+ treeList.add(documentTreeEO);
+
+ List nowStart = new ArrayList<>();
+ nowStart.add("1");
+ try {
+
+ //获取文件地址
+ String connectId = sarFileSplitInfoEO.getConnectId();
+ String fileName = sarFileSplitInfoEO.getFileName();
+ if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+ queryWrapper.eq(OSSFile::getConnectId, connectId);
+ queryWrapper.eq(OSSFile::getFileName, fileName);
+ queryWrapper.orderByDesc(OSSFile::getCreateTime);
+ List ossFileList = iossFileService.list(queryWrapper);
+ if (CollectionUtils.isEmpty(ossFileList)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ OSSFile ossFile = ossFileList.get(0);
+ String readFilePath = ossFile.getUrl();
+
+ if (StringUtils.isEmpty(readFilePath) || !CosBootUtil.doesObjectExist(readFilePath)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+
+ String readPdf = ReadPdfUtil.readPdf(readFilePath);
+ if (StringUtils.isEmpty(readPdf)) {
+ throw new JeroBootException("未读取到文件内容,请检查后重试!");
+ }
+ String[] pdfArrays;
+
+ String os = System.getProperty("os.name");
+ //Windows操作系统
+ if (os != null && os.toLowerCase().startsWith("windows")) {
+ pdfArrays = readPdf.split("\r\n");
+ } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
+ pdfArrays = readPdf.split("\n");
+ } else { //其它操作系统
+ pdfArrays = readPdf.split("\n");
+ }
+
+ List startDigitList = getStartDigit(pdfArrays, enumByValue);
+ List newStartDigitList = new ArrayList<>();
+ for (String startDigit : startDigitList) {
+ if(startDigit.endsWith(".")) {
+ startDigit = startDigit.substring(0, startDigit.lastIndexOf("."));
+ }
+ newStartDigitList.add(startDigit);
+ }
+ String regex = "^[0-9]*$";
+ boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
+ boolean firstFlag = true;
+ String preName = "";
+ int preNameNum = 0;
+// for (String paragraphString : pdfArrays) {
+ for (int g=0; g10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
+ String itemName = FileSplitUtils.getItemName(paragraphString, startDigit);
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent);
+
+ String[] numberStr = nowStart.get(i).split("\\.");
+ if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()) {
+ menuCanAdd = false;
+ } else {
+ // 增加一条数据,需要在数结构中加一条数据
+ SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
+ treeList.add(sarFileSplitMenuEO);
+ preName = nowStart.get(i);
+ preNameNum = g;
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ if(!StringUtils.isEmpty(itemName)){
+ fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length()));
+ }
+ messageList.add(message);
+ nowStart = fileSpiltService.getNewNowStart(nowStart.get(i));
+ menuCanAdd = true;
+ }
+ hasGoIf = true;
+ break;
+
+ }
+ }
+ // 不是标题行
+ if (!hasGoIf && menuCanAdd) {
+ if ("annex1".equals(paragraphString.toLowerCase().replaceAll("\t", "")
+ .replaceAll("\b", "").replaceAll(" ", ""))
+ && !messageList.get(messageList.size() - 1).getItemsNum().equals("annex")) {
+
+ String appendixNum = messageList.get(messageList.size() - 1).getItemsNum().split("\\.")[0];
+ if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) {
+ String itemName = "annex";
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "annex", itemName, clauseContent);
+ // 增加一条数据,需要在数结构中加一条数据
+ SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList("annex", treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue);
+ fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString);
+ treeList.add(sarFileSplitMenuEO);
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ messageList.add(message);
+ nowStart = new ArrayList<>();
+ } else {
+ break;
+ }
+
+ } else {
+ if (!paragraphString.equals("")) {
+ fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString);
+ }
+ }
+ hasGoIf = true;
+ }
+ // 判断是否直接跳出所有循环
+ if (!menuCanAdd && messageList.size() > 0) {
+ break;
+ }
+ }
+
+ } catch (JeroBootException e) {
+ e.printStackTrace();
+ throw new JeroBootException(e.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ return -1;
+ }
+ if (treeList.size() > 0 && messageList.size() > 0) {
+ sarFileSplitMenuEOMapper.insertForeach(treeList);
+ iSarFileSplitItemsEOService.insertForeach(messageList);
+ iSarFileSplitItemsValEOService.insertForeach(itemValList);
+ } else {
+ return -1;
+ }
+ return treeList.size();
+
+ }
+
+ public int fileEU(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) {
+
+ // 拆分文件主表中插入数据
+ if (sarFileSplitInfoEO.getStopNumber() <= 0) {
+ sarFileSplitInfoEO.setStopNumber(200);
+ }
+ if (sarFileSplitInfoEO.getStartNumber() <= 0) {
+ sarFileSplitInfoEO.setStartNumber(1);
+ }
+// dao.insertSelective(sarFileSplitInfoEO);
+
+ // 拆分文件条款表中最终插入数据
+ List messageList = new ArrayList<>();
+// int messageNumber = 0;
+ // 拆分文件目录表中最终插入数据
+ List treeList = new ArrayList<>();
+ // 拆分文件条款详情表中最终插入数据
+ List itemValList = new ArrayList<>();
+ Long treeListDisplay = 1L;
+
+ String generalCatalogueId = UUIDUtils.randomUUID20();
+ SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
+// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"General Catalogue","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
+ documentTreeEO.setId(generalCatalogueId);
+ documentTreeEO.setName("General Catalogue");
+ documentTreeEO.setInfoId(sarFileSplitInfoEO.getId());
+ documentTreeEO.setDisplaySeq(1L);
+ documentTreeEO.setDisplaySeq(treeListDisplay++);
+ documentTreeEO.setValidFlag(0);
+ treeList.add(documentTreeEO);
+
+ List nowStart = new ArrayList<>();
+ nowStart.add("1");
+ try {
+
+ //获取文件地址
+ String connectId = sarFileSplitInfoEO.getConnectId();
+ String fileName = sarFileSplitInfoEO.getFileName();
+ if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+ queryWrapper.eq(OSSFile::getConnectId, connectId);
+ queryWrapper.eq(OSSFile::getFileName, fileName);
+ queryWrapper.orderByDesc(OSSFile::getCreateTime);
+ List ossFileList = iossFileService.list(queryWrapper);
+ if (CollectionUtils.isEmpty(ossFileList)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ OSSFile ossFile = ossFileList.get(0);
+ String readFilePath = ossFile.getUrl();
+
+ if (StringUtils.isEmpty(readFilePath) || !CosBootUtil.doesObjectExist(readFilePath)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+
+ String readPdf = ReadPdfUtil.readPdf(readFilePath);
+ if (StringUtils.isEmpty(readPdf)) {
+ throw new JeroBootException("未读取到文件内容,请检查后重试!");
+ }
+ String[] pdfArrays;
+
+ String os = System.getProperty("os.name");
+ //Windows操作系统
+ if (os != null && os.toLowerCase().startsWith("windows")) {
+ pdfArrays = readPdf.split("\r\n");
+ } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
+ pdfArrays = readPdf.split("\n");
+ } else { //其它操作系统
+ pdfArrays = readPdf.split("\n");
+ }
+
+ List startDigitList = getStartDigit(pdfArrays, enumByValue);
+ List newStartDigitList = new ArrayList<>();
+ for (String startDigit : startDigitList) {
+ if(startDigit.endsWith(".")) {
+ startDigit = startDigit.substring(0, startDigit.lastIndexOf("."));
+ }
+ newStartDigitList.add(startDigit);
+ }
+ String regex = "^[0-9]*$";
+ boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
+ boolean firstFlag = true;
+ String preName = "";
+ int preNameNum = 0;
+// for (String paragraphString : pdfArrays) {
+ for (int g=0; g10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
+ String itemName = FileSplitUtils.getItemName(paragraphString, startDigit);
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent);
+
+ String[] numberStr = nowStart.get(i).split("\\.");
+// String numberStrTemp = numberStr[0].replace("S", "");
+
+ if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()) {
+ menuCanAdd = false;
+ } else {
+ // 增加一条数据,需要在数结构中加一条数据
+ SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
+ treeList.add(sarFileSplitMenuEO);
+ preName = nowStart.get(i);
+ preNameNum = g;
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ if(!StringUtils.isEmpty(itemName)){
+ fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length()));
+ }
+ messageList.add(message);
+// nowStart = fileSpiltService.getNewNowStartEU(nowStart.get(i));
+ nowStart = fileSpiltService.getNewNowStart(nowStart.get(i));
+ menuCanAdd = true;
+ }
+ hasGoIf = true;
+ break;
+
+ }
+ }
+ // 不是标题行
+ if (!hasGoIf && menuCanAdd) {
+ if (("annex1".equals(paragraphString.toLowerCase().replaceAll("\t", "")
+ .replaceAll("\b", "").replaceAll(" ", ""))
+ || "annex1a".equals(paragraphString.toLowerCase().replaceAll("\t", "")
+ .replaceAll("\b", "").replaceAll(" ", "")))
+ && !messageList.get(messageList.size() - 1).getItemsNum().equals("annex")) {
+
+ String appendixNum = messageList.get(messageList.size() - 1).getItemsNum().split("\\.")[0];
+ if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) {
+ String itemName = "annex";
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "annex", itemName, clauseContent);
+ // 增加一条数据,需要在数结构中加一条数据
+ SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList("annex", treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue);
+ fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString);
+ treeList.add(sarFileSplitMenuEO);
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ messageList.add(message);
+ nowStart = new ArrayList<>();
+ } else {
+ break;
+ }
+
+ } else {
+ if (!paragraphString.equals("")) {
+ fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString);
+ }
+ }
+ hasGoIf = true;
+ }
+ // 判断是否直接跳出所有循环
+ if (!menuCanAdd && messageList.size() > 0) {
+ break;
+ }
+ }
+
+ } catch (JeroBootException e) {
+ e.printStackTrace();
+ throw new JeroBootException(e.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ return -1;
+ }
+ if (treeList.size() > 0 && messageList.size() > 0) {
+ sarFileSplitMenuEOMapper.insertForeach(treeList);
+ iSarFileSplitItemsEOService.insertForeach(messageList);
+ iSarFileSplitItemsValEOService.insertForeach(itemValList);
+ } else {
+ return -1;
+ }
+ return treeList.size();
+
+ }
+
+
+ public int fileUSA(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) {
+
+ // 拆分文件主表中插入数据
+ if (sarFileSplitInfoEO.getStopNumber() <= 0) {
+ sarFileSplitInfoEO.setStopNumber(200);
+ }
+ if (sarFileSplitInfoEO.getStartNumber() <= 0) {
+ sarFileSplitInfoEO.setStartNumber(1);
+ }
+// dao.insertSelective(sarFileSplitInfoEO);
+
+ // 拆分文件条款表中最终插入数据
+ List messageList = new ArrayList<>();
+// int messageNumber = 0;
+ // 拆分文件目录表中最终插入数据
+ List treeList = new ArrayList<>();
+ // 拆分文件条款详情表中最终插入数据
+ List itemValList = new ArrayList<>();
+ Long treeListDisplay = 1L;
+
+ String generalCatalogueId = UUIDUtils.randomUUID20();
+ SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
+// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"General Catalogue","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
+ documentTreeEO.setId(generalCatalogueId);
+ documentTreeEO.setName("General Catalogue");
+ documentTreeEO.setInfoId(sarFileSplitInfoEO.getId());
+ documentTreeEO.setDisplaySeq(1L);
+ documentTreeEO.setDisplaySeq(treeListDisplay++);
+ documentTreeEO.setValidFlag(0);
+ treeList.add(documentTreeEO);
+
+ List nowStart = new ArrayList<>();
+ nowStart.add("S1");
+ try {
+
+ //获取文件地址
+ String connectId = sarFileSplitInfoEO.getConnectId();
+ String fileName = sarFileSplitInfoEO.getFileName();
+ if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+ queryWrapper.eq(OSSFile::getConnectId, connectId);
+ queryWrapper.eq(OSSFile::getFileName, fileName);
+ queryWrapper.orderByDesc(OSSFile::getCreateTime);
+ List ossFileList = iossFileService.list(queryWrapper);
+ if (CollectionUtils.isEmpty(ossFileList)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ OSSFile ossFile = ossFileList.get(0);
+ String readFilePath = ossFile.getUrl();
+
+ if (StringUtils.isEmpty(readFilePath) || !CosBootUtil.doesObjectExist(readFilePath)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+
+ String readPdf = ReadPdfUtil.readPdf(readFilePath);
+ if (StringUtils.isEmpty(readPdf)) {
+ throw new JeroBootException("未读取到文件内容,请检查后重试!");
+ }
+ String[] pdfArrays;
+
+ String os = System.getProperty("os.name");
+ //Windows操作系统
+ if (os != null && os.toLowerCase().startsWith("windows")) {
+ pdfArrays = readPdf.split("\r\n");
+ } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
+ pdfArrays = readPdf.split("\n");
+ } else { //其它操作系统
+ pdfArrays = readPdf.split("\n");
+ }
+
+ List startDigitList = getStartDigit(pdfArrays, enumByValue);
+ List newStartDigitList = new ArrayList<>();
+ for (String startDigit : startDigitList) {
+ if(startDigit.endsWith("S")) {
+ startDigit = startDigit.substring(0, startDigit.lastIndexOf("S"));
+ }
+ if(startDigit.endsWith(".")) {
+ startDigit = startDigit.substring(0, startDigit.lastIndexOf("."));
+ }
+ newStartDigitList.add(startDigit);
+ }
+// String regex = "^[0-9]*$";
+ boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
+// boolean firstFlag = true;
+ String preName = "";
+ int preNameNum = 0;
+// for (String paragraphString : pdfArrays) {
+ for (int g=0; g10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
+ String itemName = FileSplitUtils.getItemName(paragraphString, startDigit);
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent);
+
+ String[] numberStr = nowStart.get(i).split("\\.");
+ String numberStrTemp = numberStr[0].replace("S", "");
+
+ if (Integer.valueOf(numberStrTemp) > sarFileSplitInfoEO.getStopNumber()) {
+ menuCanAdd = false;
+ } else {
+ // 增加一条数据,需要在数结构中加一条数据
+ SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
+ treeList.add(sarFileSplitMenuEO);
+ preName = nowStart.get(i);
+ preNameNum = g;
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ if(!StringUtils.isEmpty(itemName)){
+ fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length()));
+ }
+ messageList.add(message);
+ nowStart = fileSpiltService.getNewNowStartUS(nowStart.get(i));
+ menuCanAdd = true;
+ }
+ hasGoIf = true;
+ break;
+
+ }
+ }
+ // 不是标题行
+ if (!hasGoIf && menuCanAdd) {
+ if (!paragraphString.equals("")) {
+ fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString);
+ }
+ hasGoIf = true;
+ }
+ // 判断是否直接跳出所有循环
+ if (!menuCanAdd && messageList.size() > 0) {
+ break;
+ }
+ }
+
+ } catch (JeroBootException e) {
+ e.printStackTrace();
+ throw new JeroBootException(e.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ return -1;
+ }
+ if (treeList.size() > 0 && messageList.size() > 0) {
+ sarFileSplitMenuEOMapper.insertForeach(treeList);
+ iSarFileSplitItemsEOService.insertForeach(messageList);
+ iSarFileSplitItemsValEOService.insertForeach(itemValList);
+ } else {
+ return -1;
+ }
+ return treeList.size();
+
+ }
+
+ public int fileKmvssArticle(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) {
+
+ // 拆分文件主表中插入数据
+ if (sarFileSplitInfoEO.getStopNumber() <= 0) {
+ sarFileSplitInfoEO.setStopNumber(200);
+ }
+ if (sarFileSplitInfoEO.getStartNumber() <= 0) {
+ sarFileSplitInfoEO.setStartNumber(1);
+ }
+// dao.insertSelective(sarFileSplitInfoEO);
+
+ // 拆分文件条款表中最终插入数据
+ List messageList = new ArrayList<>();
+// int messageNumber = 0;
+ // 拆分文件目录表中最终插入数据
+ List treeList = new ArrayList<>();
+ // 拆分文件条款详情表中最终插入数据
+ List itemValList = new ArrayList<>();
+ Long treeListDisplay = 1L;
+
+ String generalCatalogueId = UUIDUtils.randomUUID20();
+ SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
+// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"General Catalogue","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
+ documentTreeEO.setId(generalCatalogueId);
+ documentTreeEO.setName("General Catalogue");
+ documentTreeEO.setInfoId(sarFileSplitInfoEO.getId());
+ documentTreeEO.setDisplaySeq(1L);
+ documentTreeEO.setDisplaySeq(treeListDisplay++);
+ documentTreeEO.setValidFlag(0);
+ treeList.add(documentTreeEO);
+
+ List nowStart = new ArrayList<>();
+ nowStart.add("(1)");
+ try {
+
+ //获取文件地址
+ String connectId = sarFileSplitInfoEO.getConnectId();
+ String fileName = sarFileSplitInfoEO.getFileName();
+ if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+ queryWrapper.eq(OSSFile::getConnectId, connectId);
+ queryWrapper.eq(OSSFile::getFileName, fileName);
+ queryWrapper.orderByDesc(OSSFile::getCreateTime);
+ List ossFileList = iossFileService.list(queryWrapper);
+ if (CollectionUtils.isEmpty(ossFileList)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ OSSFile ossFile = ossFileList.get(0);
+ String readFilePath = ossFile.getUrl();
+
+ if (StringUtils.isEmpty(readFilePath) || !CosBootUtil.doesObjectExist(readFilePath)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+
+ String readPdf = ReadPdfUtil.readPdf(readFilePath);
+ if (StringUtils.isEmpty(readPdf)) {
+ throw new JeroBootException("未读取到文件内容,请检查后重试!");
+ }
+ String[] pdfArrays;
+
+ String os = System.getProperty("os.name");
+ //Windows操作系统
+ if (os != null && os.toLowerCase().startsWith("windows")) {
+ pdfArrays = readPdf.split("\r\n");
+ } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
+ pdfArrays = readPdf.split("\n");
+ } else { //其它操作系统
+ pdfArrays = readPdf.split("\n");
+ }
+
+// List startDigitList = getStartDigit(pdfArrays, enumByValue);
+// String regex = "^[0-9]*$";
+ boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
+ StringBuilder lastStr = new StringBuilder();
+// boolean firstFlag = true;
+// for (String paragraphString : pdfArrays) {
+ for (int g=0; g10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
+ String itemName = FileSplitUtils.getItemName(paragraphString, nowStart.get(i));
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent);
+
+ // 增加一条数据,需要在数结构中加一条数据
+ String name = lastStr + "=" + nowStart.get(i);
+ SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(name, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
+ treeList.add(sarFileSplitMenuEO);
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ if(!StringUtils.isEmpty(itemName)){
+ fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length()));
+ }
+ messageList.add(message);
+ nowStart = fileSpiltService.getNewNowStartKmvssArticle(lastStr, nowStart.get(i));
+ menuCanAdd = true;
+ hasGoIf = true;
+ break;
+
+ }
+ }
+ // 不是标题行
+ if (!hasGoIf && menuCanAdd) {
+ if (!paragraphString.equals("")) {
+ fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString);
+ }
+ hasGoIf = true;
+ }
+ // 判断是否直接跳出所有循环
+ if (!menuCanAdd && messageList.size() > 0) {
+ break;
+ }
+ }
+
+ } catch (JeroBootException e) {
+ e.printStackTrace();
+ throw new JeroBootException(e.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ return -1;
+ }
+ if (treeList.size() > 0 && messageList.size() > 0) {
+ sarFileSplitMenuEOMapper.insertForeach(treeList);
+ iSarFileSplitItemsEOService.insertForeach(messageList);
+ iSarFileSplitItemsValEOService.insertForeach(itemValList);
+ } else {
+ return -1;
+ }
+ return treeList.size();
+
+ }
+
+ public int fileKmvssTable(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) {
+
+ // 拆分文件主表中插入数据
+ if (sarFileSplitInfoEO.getStopNumber() <= 0) {
+ sarFileSplitInfoEO.setStopNumber(200);
+ }
+ if (sarFileSplitInfoEO.getStartNumber() <= 0) {
+ sarFileSplitInfoEO.setStartNumber(1);
+ }
+// dao.insertSelective(sarFileSplitInfoEO);
+
+ // 拆分文件条款表中最终插入数据
+ List messageList = new ArrayList<>();
+// int messageNumber = 0;
+ // 拆分文件目录表中最终插入数据
+ List treeList = new ArrayList<>();
+ // 拆分文件条款详情表中最终插入数据
+ List itemValList = new ArrayList<>();
+ //固定字段内容跳过,包含Note:、Notes:
+ List filterList = new ArrayList<>();
+ filterList.add("Note:");
+ filterList.add("Notes:");
+
+ Long treeListDisplay = 1L;
+
+ String generalCatalogueId = UUIDUtils.randomUUID20();
+ SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
+// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"General Catalogue","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
+ documentTreeEO.setId(generalCatalogueId);
+ documentTreeEO.setName("General Catalogue");
+ documentTreeEO.setInfoId(sarFileSplitInfoEO.getId());
+ documentTreeEO.setDisplaySeq(1L);
+ documentTreeEO.setDisplaySeq(treeListDisplay++);
+ documentTreeEO.setValidFlag(0);
+ treeList.add(documentTreeEO);
+
+ List nowStart = new ArrayList<>();
+ //临时保存note数据列表
+ List nowStartNotes = new ArrayList<>();
+ //初始判断值
+ nowStart.add("1.");
+ nowStartNotes.add("1.");
+ try {
+
+ //获取文件地址
+ String connectId = sarFileSplitInfoEO.getConnectId();
+ String fileName = sarFileSplitInfoEO.getFileName();
+ if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+ queryWrapper.eq(OSSFile::getConnectId, connectId);
+ queryWrapper.eq(OSSFile::getFileName, fileName);
+ queryWrapper.orderByDesc(OSSFile::getCreateTime);
+ List ossFileList = iossFileService.list(queryWrapper);
+ if (CollectionUtils.isEmpty(ossFileList)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ OSSFile ossFile = ossFileList.get(0);
+ String readFilePath = ossFile.getUrl();
+
+ if (StringUtils.isEmpty(readFilePath) || !CosBootUtil.doesObjectExist(readFilePath)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+
+ String readPdf = ReadPdfUtil.readPdf(readFilePath);
+ if (StringUtils.isEmpty(readPdf)) {
+ throw new JeroBootException("未读取到文件内容,请检查后重试!");
+ }
+ String[] pdfArrays;
+
+ String os = System.getProperty("os.name");
+ //Windows操作系统
+ if (os != null && os.toLowerCase().startsWith("windows")) {
+ pdfArrays = readPdf.split("\r\n");
+ } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
+ pdfArrays = readPdf.split("\n");
+ } else { //其它操作系统
+ pdfArrays = readPdf.split("\n");
+ }
+
+// List startDigitList = getStartDigit(pdfArrays, enumByValue);
+// String regex = "^[0-9]*$";
+ boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
+ boolean filterFlag = false;
+ int menuLevel = 0;//菜单等级,分为1/2/3/4/5级
+ int menuNoteLevel = 0;//菜单等级,分为1/2/3/4/5级
+ //存储前四级目录数据
+ String[] catalogerArr = new String[4];
+ String[] catalogerNoteArr = new String[4];
+// boolean firstFlag = true;
+// for (String paragraphString : pdfArrays) {
+ for (int g=0; g();
+ nowStartNotes.add("1.");
+ catalogerNoteArr = new String[4];
+ menuNoteLevel = 0;
+ }
+
+ boolean hasGoIf = false;
+ // 处理标题行
+// String startDigit = getOneStartDigit(paragraphString,enumByValue);
+ for (int i = 0; i < nowStart.size(); i++) {
+ if (paragraphString.startsWith(nowStart.get(i)) && (!filterFlag)) {
+// if (startDigit.equals(nowStart.get(i))) {
+ // 判断真的是标题还是干扰项 TODO
+// String startDigit = nowStart.get(i);
+// if (startDigit.matches(regex)) {
+// boolean result = judge(nowStart, startDigit, startDigitList, "\\.");
+// if (result) {
+// continue;
+// }
+// }
+ // 判断名称,如果大于10位,取十位,
+// String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
+ String itemName = FileSplitUtils.getItemName(paragraphString, nowStart.get(i));
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent);
+
+ // 增加一条数据,需要在数结构中加一条数据
+ String name = "";
+ for (int j = 0; j < catalogerArr.length; j++) {
+ name = name + "=" + catalogerArr[j];
+ }
+ name = name + "=" + nowStart.get(i);
+ SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(name, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
+ treeList.add(sarFileSplitMenuEO);
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ if(!StringUtils.isEmpty(itemName)){
+ fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length()));
+ }
+ messageList.add(message);
+ nowStart = fileSpiltService.getNewNowStartKmvssTable(catalogerArr, nowStart.get(i), menuLevel);
+ menuCanAdd = true;
+ hasGoIf = true;
+ break;
+
+ }
+ }
+ // 不是标题行
+ if (!hasGoIf && menuCanAdd) {
+ if (!paragraphString.equals("")) {
+ fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString);
+ }
+ hasGoIf = true;
+ }
+ // 判断是否直接跳出所有循环
+ if (!menuCanAdd && messageList.size() > 0) {
+ break;
+ }
+ }
+
+ } catch (JeroBootException e) {
+ e.printStackTrace();
+ throw new JeroBootException(e.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ return -1;
+ }
+ if (treeList.size() > 0 && messageList.size() > 0) {
+ sarFileSplitMenuEOMapper.insertForeach(treeList);
+ iSarFileSplitItemsEOService.insertForeach(messageList);
+ iSarFileSplitItemsValEOService.insertForeach(itemValList);
+ } else {
+ return -1;
+ }
+ return treeList.size();
+
+ }
+
+ public int fileJapanOne(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) {
+
+ // 拆分文件主表中插入数据
+ if (sarFileSplitInfoEO.getStopNumber() <= 0) {
+ sarFileSplitInfoEO.setStopNumber(200);
+ }
+ if (sarFileSplitInfoEO.getStartNumber() <= 0) {
+ sarFileSplitInfoEO.setStartNumber(1);
+ }
+// dao.insertSelective(sarFileSplitInfoEO);
+
+ // 拆分文件条款表中最终插入数据
+ List messageList = new ArrayList<>();
+// int messageNumber = 0;
+ // 拆分文件目录表中最终插入数据
+ List treeList = new ArrayList<>();
+ // 拆分文件条款详情表中最终插入数据
+ List itemValList = new ArrayList<>();
+ Long treeListDisplay = 1L;
+
+ String generalCatalogueId = UUIDUtils.randomUUID20();
+ SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
+// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"General Catalogue","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
+ documentTreeEO.setId(generalCatalogueId);
+ documentTreeEO.setName("General Catalogue");
+ documentTreeEO.setInfoId(sarFileSplitInfoEO.getId());
+ documentTreeEO.setDisplaySeq(1L);
+ documentTreeEO.setDisplaySeq(treeListDisplay++);
+ documentTreeEO.setValidFlag(0);
+ treeList.add(documentTreeEO);
+
+ List nowStart = new ArrayList<>();
+ //初始判断值
+ nowStart.add("1.");
+ try {
+
+ //获取文件地址
+ String connectId = sarFileSplitInfoEO.getConnectId();
+ String fileName = sarFileSplitInfoEO.getFileName();
+ if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+ queryWrapper.eq(OSSFile::getConnectId, connectId);
+ queryWrapper.eq(OSSFile::getFileName, fileName);
+ queryWrapper.orderByDesc(OSSFile::getCreateTime);
+ List ossFileList = iossFileService.list(queryWrapper);
+ if (CollectionUtils.isEmpty(ossFileList)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ OSSFile ossFile = ossFileList.get(0);
+ String readFilePath = ossFile.getUrl();
+
+ if (StringUtils.isEmpty(readFilePath) || !CosBootUtil.doesObjectExist(readFilePath)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+
+ String readPdf = ReadPdfUtil.readPdf(readFilePath);
+ if (StringUtils.isEmpty(readPdf)) {
+ throw new JeroBootException("未读取到文件内容,请检查后重试!");
+ }
+ String[] pdfArrays;
+
+ String os = System.getProperty("os.name");
+ //Windows操作系统
+ if (os != null && os.toLowerCase().startsWith("windows")) {
+ pdfArrays = readPdf.split("\r\n");
+ } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
+ pdfArrays = readPdf.split("\n");
+ } else { //其它操作系统
+ pdfArrays = readPdf.split("\n");
+ }
+
+// List startDigitList = getStartDigit(pdfArrays, enumByValue);
+// String regex = "^[0-9]*$";
+ boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
+// boolean firstFlag = true;
+// String preName = "";
+// int preNameNum = 0;
+// for (String paragraphString : pdfArrays) {
+ for (int g=0; g10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
+ String itemName = FileSplitUtils.getItemName(paragraphString, nowStart.get(i));
+
+
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent);
+
+ String[] numberStr;
+ if (nowStart.get(i).contains(".")) {
+ numberStr = nowStart.get(i).split("\\.");
+ } else {
+ numberStr = nowStart.get(i).split("–");
+ }
+// String numberStrTemp = numberStr[0].replace("S", "");
+
+ if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()) {
+ menuCanAdd = false;
+ } else {
+ // 增加一条数据,需要在数结构中加一条数据
+ SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
+ treeList.add(sarFileSplitMenuEO);
+// preName = nowStart.get(i);
+// preNameNum = g;
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ if(!StringUtils.isEmpty(itemName)){
+ fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length()));
+ }
+ messageList.add(message);
+ nowStart = fileSpiltService.getNewNowStartJapanOne("", nowStart.get(i));
+ menuCanAdd = true;
+ }
+ hasGoIf = true;
+
+ break;
+
+
+ }
+ }
+ // 不是标题行
+ if (!hasGoIf && menuCanAdd) {
+ if (!paragraphString.equals("")) {
+ fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString);
+ }
+ hasGoIf = true;
+ }
+ // 判断是否直接跳出所有循环
+ if (!menuCanAdd && messageList.size() > 0) {
+ break;
+ }
+ }
+
+ } catch (JeroBootException e) {
+ e.printStackTrace();
+ throw new JeroBootException(e.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ return -1;
+ }
+ if (treeList.size() > 0 && messageList.size() > 0) {
+ sarFileSplitMenuEOMapper.insertForeach(treeList);
+ iSarFileSplitItemsEOService.insertForeach(messageList);
+ iSarFileSplitItemsValEOService.insertForeach(itemValList);
+ } else {
+ return -1;
+ }
+ return treeList.size();
+
+ }
+
+ public int fileJapanTwo(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) {
+
+ // 拆分文件主表中插入数据
+ if (sarFileSplitInfoEO.getStopNumber() <= 0) {
+ sarFileSplitInfoEO.setStopNumber(200);
+ }
+ if (sarFileSplitInfoEO.getStartNumber() <= 0) {
+ sarFileSplitInfoEO.setStartNumber(1);
+ }
+// dao.insertSelective(sarFileSplitInfoEO);
+
+ // 拆分文件条款表中最终插入数据
+ List messageList = new ArrayList<>();
+// int messageNumber = 0;
+ // 拆分文件目录表中最终插入数据
+ List treeList = new ArrayList<>();
+ // 拆分文件条款详情表中最终插入数据
+ List itemValList = new ArrayList<>();
+ Long treeListDisplay = 1L;
+
+ String generalCatalogueId = UUIDUtils.randomUUID20();
+ SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
+// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"General Catalogue","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
+ documentTreeEO.setId(generalCatalogueId);
+ documentTreeEO.setName("General Catalogue");
+ documentTreeEO.setInfoId(sarFileSplitInfoEO.getId());
+ documentTreeEO.setDisplaySeq(1L);
+ documentTreeEO.setDisplaySeq(treeListDisplay++);
+ documentTreeEO.setValidFlag(0);
+ treeList.add(documentTreeEO);
+
+ List nowStart = new ArrayList<>();
+ //初始判断值
+ nowStart.add("1.");
+ try {
+
+ //获取文件地址
+ String connectId = sarFileSplitInfoEO.getConnectId();
+ String fileName = sarFileSplitInfoEO.getFileName();
+ if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+ queryWrapper.eq(OSSFile::getConnectId, connectId);
+ queryWrapper.eq(OSSFile::getFileName, fileName);
+ queryWrapper.orderByDesc(OSSFile::getCreateTime);
+ List ossFileList = iossFileService.list(queryWrapper);
+ if (CollectionUtils.isEmpty(ossFileList)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+ OSSFile ossFile = ossFileList.get(0);
+ String readFilePath = ossFile.getUrl();
+
+ if (StringUtils.isEmpty(readFilePath) || !CosBootUtil.doesObjectExist(readFilePath)) {
+ throw new JeroBootException("当前文件未找到,请重新选择!");
+ }
+
+ String readPdf = ReadPdfUtil.readPdf(readFilePath);
+ if (StringUtils.isEmpty(readPdf)) {
+ throw new JeroBootException("未读取到文件内容,请检查后重试!");
+ }
+ String[] pdfArrays;
+
+ String os = System.getProperty("os.name");
+ //Windows操作系统
+ if (os != null && os.toLowerCase().startsWith("windows")) {
+ pdfArrays = readPdf.split("\r\n");
+ } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
+ pdfArrays = readPdf.split("\n");
+ } else { //其它操作系统
+ pdfArrays = readPdf.split("\n");
+ }
+
+// List startDigitList = getStartDigit(pdfArrays, enumByValue);
+// String regex = "^[0-9]*$";
+ boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
+ StringBuilder lastStrTemp = new StringBuilder();
+ StringBuilder secondStrTemp = new StringBuilder();
+// boolean firstFlag = true;
+// String preName = "";
+// int preNameNum = 0;
+// for (String paragraphString : pdfArrays) {
+ for (int g=0; g10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
+ String itemName = FileSplitUtils.getItemName(paragraphString, nowStart.get(i));
+ List clauseContent = new ArrayList<>();
+ clauseContent.add(paragraphString);
+ SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent);
+
+// String[] numberStr = nowStart.get(i).split("\\.");
+// String numberStrTemp = numberStr[0].replace("S", "");
+
+// if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()){
+// menuCanAdd = false;
+// } else {
+ // 增加一条数据,需要在数结构中加一条数据
+ String name = lastStrTemp.toString() + "=" + secondStrTemp.toString() + "=" + nowStart.get(i);
+ SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(name, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue);
+ treeList.add(sarFileSplitMenuEO);
+// preName = nowStart.get(i);
+// preNameNum = g;
+ message.setMenuId(sarFileSplitMenuEO.getId());
+ if(!StringUtils.isEmpty(itemName)){
+ fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length()));
+ }
+ messageList.add(message);
+ nowStart = fileSpiltService.getNewNowStartJapanTwo(lastStrTemp, secondStrTemp, nowStart.get(i));
+ menuCanAdd = true;
+// }
+ hasGoIf = true;
+ break;
+
+
+ }
+ }
+ // 不是标题行
+ if (!hasGoIf && menuCanAdd) {
+ if (!paragraphString.equals("")) {
+ fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString);
+ }
+ hasGoIf = true;
+ }
+ // 判断是否直接跳出所有循环
+ if (!menuCanAdd && messageList.size() > 0) {
+ break;
+ }
+ }
+
+ } catch (JeroBootException e) {
+ e.printStackTrace();
+ throw new JeroBootException(e.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ return -1;
+ }
+ if (treeList.size() > 0 && messageList.size() > 0) {
+ sarFileSplitMenuEOMapper.insertForeach(treeList);
+ iSarFileSplitItemsEOService.insertForeach(messageList);
+ iSarFileSplitItemsValEOService.insertForeach(itemValList);
+ } else {
+ return -1;
+ }
+ return treeList.size();
+
+ }
+
+ public String getOneStartDigit(String arr, SplitFileTypeTypeEnum enumByValue) {
+ String regex="[^\\p{Punct}\\p{Space}\\p{Digit}]"; // TODO
+ switch (enumByValue) {
+ case GB:
+ case GBT:
+ case EU:
+ case GSO:
+ case JPN_ARTICLE:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]";
+ break;
+ case KMVSS_ARTICLE:
+ case JPN_ATTACHMENT:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}–]";
+ break;
+ case US:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}S]";
+ break;
+ }
+ Matcher matcher;
+ matcher = Pattern.compile(regex).matcher(arr);
+ if(matcher.find()) {
+ int index = matcher.start();
+ String startDigit = arr.substring(0, index);
+ startDigit = startDigit.replaceAll(" ", "");
+ if(StringUtils.isNotBlank(startDigit)) {
+ return startDigit.replaceAll("\t", "").replaceAll("\b", "")
+ .replaceAll("\"", "").replaceAll("\'", "");
+ }
+ } else {
+ return arr.replaceAll("\t", "").replaceAll("\b", "")
+ .replaceAll(" ", "").replaceAll("\"", "").replaceAll("\'", "");
+ }
+ return "";
+ }
+
+ public List getStartDigit(String[] pdfArrays, SplitFileTypeTypeEnum enumByValue) {
+ String regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]"; // TODO
+ switch (enumByValue) {
+ case GB:
+ case GBT:
+ case EU:
+ case GSO:
+ case JPN_ARTICLE:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]";
+ break;
+ case KMVSS_ARTICLE:
+ case JPN_ATTACHMENT:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}–]";
+ break;
+ case US:
+ regex = "[^\\p{Punct}\\p{Space}\\p{Digit}S]";
+ break;
+ }
+ List startDigitList = new ArrayList<>();
+ Matcher matcher;
+ boolean firstFlag = true;
+ for(int i=0; i startDigitList, String splitChar) {
+ if(StringUtils.isNotBlank(preName)) {
+ List nowStartList = fileSpiltService.getNewNowStart(preName);
+
+ List subList1 = startDigitList.subList(preNameNum, startDigitList.size()-1);
+ // 后文有一级以下的标题
+ for (int i = nowStartList.size() - 1; i >= 1; i--) {
+ int index1 = subList1.indexOf(nowStartList.get(i));
+ if (index1 != -1 && (index1-0) <= 100) { // TODO
+ return true;
+ }
+ }
+
+ // 后文没有一级以下的标题
+ // 先看看一级有没重复
+ int index3 = subList1.indexOf(currentNowStart + splitChar + "1");
+ if(index3 == -1 || index3 > 100 ) {
+ index3 = subList1.indexOf(Integer.valueOf(currentNowStart) + 1);
+ }
+ if(index3 > 0 && index3 <= 100) {
+ List subList = subList1.subList(0, index3); // 这个范围要尽可能的小
+ int index4 = subList.indexOf(currentNowStart);
+ int index5 = subList.lastIndexOf(currentNowStart);
+ if (index4 != index5 && index5 != (currentNum-preNameNum)) { // TODO
+ return true;
+ }
+ }
+ // 重复的话 看看该一级标题第一次出现时后面的标题
+// List nowStartList2 = fileSpiltService.getNewNowStart(currentNowStart);
+// judge(nowStartList2, nowStartList2.get(0), newStartDigitList, splitChar);
+
+ }
+ return false;
+ }
+
+ public boolean judgeJapanOne(String preName, int preNameNum, String currentNowStart, int currentNum, List startDigitList, String splitChar) {
+ if(StringUtils.isNotBlank(preName)) {
+ List nowStartList = fileSpiltService.getNewNowStartJapanOne(null,preName);
+
+ List subList1 = startDigitList.subList(preNameNum, startDigitList.size()-1);
+ // 后文有一级以下的标题
+ for (int i = nowStartList.size() - 1; i >= 1; i--) {
+ int index1 = subList1.indexOf(nowStartList.get(i));
+ if (index1 != -1 && (index1-0) <= 100) { // TODO
+ return true;
+ }
+ }
+
+ // 后文没有一级以下的标题
+ // 先看看一级有没重复
+ int index3 = subList1.indexOf(currentNowStart + splitChar + "1");
+ if(index3 == -1 || index3 > 100 ) {
+ index3 = subList1.indexOf(nowStartList.get(0));
+ }
+ if(index3 > 0 && index3 <= 100) {
+ List subList = subList1.subList(0, index3); // 这个范围要尽可能的小
+ int index4 = subList.indexOf(currentNowStart);
+ int index5 = subList.lastIndexOf(currentNowStart);
+ if (index4 != index5 && index5 != (currentNum-preNameNum)) { // TODO
+ return true;
+ }
+ }
+
+ }
+ return false;
+ }
+}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java
index d22c18234..7c96c9c61 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java
@@ -12,7 +12,6 @@ import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
import com.jero.modules.document.enums.FieldTypeEnum;
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
-import com.jero.modules.ocr.entity.OcrRecordEO;
import com.jero.modules.ocr.util.LineHumpUtil;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
@@ -58,6 +57,8 @@ public class SarFileSplitInfoServiceImpl extends ServiceImpl