Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsk-operate-sys-cscec
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fulixin
dsk-operate-sys-cscec
Commits
d1779a75
Commit
d1779a75
authored
Feb 18, 2024
by
lcl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
u
parent
f8301c9e
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
71 additions
and
38 deletions
+71
-38
DataAnalysisComponent.java
...rc/main/java/com/dsk/component/DataAnalysisComponent.java
+58
-29
CbQuantitySummaryController.java
...com/dsk/cscec/controller/CbQuantitySummaryController.java
+0
-1
CbQuantitySummaryServiceImpl.java
.../dsk/cscec/service/impl/CbQuantitySummaryServiceImpl.java
+0
-8
ISysOssService.java
.../src/main/java/com/dsk/system/service/ISysOssService.java
+3
-0
SysOssServiceImpl.java
...n/java/com/dsk/system/service/impl/SysOssServiceImpl.java
+10
-0
No files found.
dsk-module/dsk-biz-api/src/main/java/com/dsk/component/DataAnalysisComponent.java
View file @
d1779a75
package
com
.
dsk
.
component
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.dsk.common.excel.ExcelUtils
;
import
com.dsk.common.exception.ServiceException
;
...
...
@@ -8,16 +9,20 @@ import com.dsk.cscec.domain.CbProjectFile;
import
com.dsk.cscec.domain.CbQuantitySummary
;
import
com.dsk.cscec.domain.bo.CbProjectBaseBo
;
import
com.dsk.cscec.service.CbProjectFileService
;
import
com.dsk.cscec.service.ICbQuantitySummaryActualService
;
import
com.dsk.cscec.service.ICbQuantitySummaryService
;
import
com.dsk.oss.factory.OssFactory
;
import
com.dsk.system.domain.vo.SysOssVo
;
import
com.dsk.system.service.ISysOssService
;
import
org.apache.el.stream.Stream
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.support.TransactionTemplate
;
import
org.springframework.util.ObjectUtils
;
import
java.io.FileInputStream
;
import
javax.annotation.Resource
;
import
java.io.InputStream
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -32,6 +37,12 @@ public class DataAnalysisComponent {
@Autowired
private
ICbQuantitySummaryService
quantitySummaryService
;
@Autowired
private
CbProjectFileService
projectFileService
;
@Autowired
private
ISysOssService
ossService
;
@Resource
private
TransactionTemplate
transactionTemplate
;
/**
* 工料汇总数据解析
...
...
@@ -42,52 +53,70 @@ public class DataAnalysisComponent {
List
<
CbProjectFile
>
fileList
=
projectFileService
.
list
(
Wrappers
.<
CbProjectFile
>
lambdaQuery
()
.
eq
(
CbProjectFile:
:
getProjectId
,
bo
.
getProjectId
())
.
eq
(
CbProjectFile:
:
getCbType
,
CbProjectConstants
.
CB_TYPE_QUANTITY_SUMMARY
)
.
eq
(
CbProjectFile:
:
getCbStage
,
bo
.
getCbStage
()));
.
eq
(
CbProjectFile:
:
getCbStage
,
bo
.
getCbStage
())
.
in
(
CbProjectFile:
:
getFileParseStatus
,
Arrays
.
asList
(
1
,
3
)));
if
(
ObjectUtils
.
isEmpty
(
fileList
))
return
;
//文件处理
for
(
CbProjectFile
file
:
fileList
)
{
if
(
file
.
getDelFlag
()
==
0
)
{
if
(
file
.
getFileParseStatus
()
==
3
)
break
;
//文件下载
InputStream
inputStream
=
ossService
.
downFileIO
(
file
.
getFileOssId
());
if
(
ObjectUtil
.
isNull
(
inputStream
))
{
file
.
setFailRemark
(
"文件数据不存在"
);
file
.
setFileParseStatus
(
3
);
projectFileService
.
updateById
(
file
);
break
;
}
//解析数据
List
<
CbQuantitySummary
>
importList
=
new
ExcelUtils
<>(
CbQuantitySummary
.
class
).
importExcelAllSheet
(
new
FileInputStream
(
""
)
,
1
);
List
<
CbQuantitySummary
>
importList
=
new
ExcelUtils
<>(
CbQuantitySummary
.
class
).
importExcelAllSheet
(
inputStream
,
1
);
if
(
importList
.
isEmpty
())
{
throw
new
ServiceException
(
"表格中不存在待导入数据!"
);
file
.
setFailRemark
(
"表格中不存在待导入数据!"
);
file
.
setFileParseStatus
(
3
);
projectFileService
.
updateById
(
file
);
break
;
}
import
List
=
importList
.
stream
().
parallel
()
List
<
CbQuantitySummary
>
quantitySummary
List
=
importList
.
stream
().
parallel
()
.
filter
(
item
->
!
ObjectUtils
.
isEmpty
(
item
.
getCbName
()))
.
peek
(
item
->
{
item
.
setProjectId
(
1L
);
item
.
setCbStage
(
0
);
item
.
setCbProjectFileId
(
1L
);
}).
collect
(
Collectors
.
toList
());
if
(
import
List
.
isEmpty
())
{
if
(
quantitySummary
List
.
isEmpty
())
{
throw
new
ServiceException
(
"表格中不存在有效数据数据!"
);
}
//分批次插入
if
(
importList
.
size
()
>
1000
)
{
int
index
=
0
;
int
sum
=
importList
.
size
();
while
(
index
<
sum
)
{
List
<
CbQuantitySummary
>
divideList
=
importList
.
subList
(
index
,
Math
.
max
((
index
+
1
)
*
1000
,
sum
));
boolean
b
=
quantitySummaryService
.
saveBatch
(
divideList
);
if
(!
b
)
{
throw
new
ServiceException
(
"数据插入失败!"
);
transactionTemplate
.
execute
(
status
->
{
try
{
//分批次插入
if
(
quantitySummaryList
.
size
()
>
1000
)
{
int
index
=
0
;
int
sum
=
quantitySummaryList
.
size
();
while
(
index
<
sum
)
{
List
<
CbQuantitySummary
>
divideList
=
quantitySummaryList
.
subList
(
index
,
Math
.
max
((
index
+
1
)
*
1000
,
sum
));
boolean
b
=
quantitySummaryService
.
saveBatch
(
divideList
);
if
(!
b
)
{
throw
new
ServiceException
(
"数据插入失败!"
);
}
index
+=
1000
;
}
}
else
{
boolean
b
=
quantitySummaryService
.
saveBatch
(
quantitySummaryList
);
if
(!
b
)
{
throw
new
ServiceException
(
"数据插入失败!"
);
}
}
index
+=
1000
;
}
}
else
{
boolean
b
=
quantitySummaryService
.
saveBatch
(
importList
);
if
(!
b
)
{
throw
new
ServiceException
(
"数据插入失败!"
);
file
.
setFileParseStatus
(
2
);
projectFileService
.
updateById
(
file
);
}
catch
(
Exception
e
){
status
.
setRollbackOnly
();
}
}
return
Boolean
.
TRUE
;
});
}
else
{
quantitySummaryService
.
remove
(
Wrappers
.<
CbQuantitySummary
>
lambdaQuery
().
eq
(
CbQuantitySummary:
:
getCbProjectFileId
,
file
.
getId
()));
projectFileService
.
removeById
(
file
);
}
}
}
@Autowired
private
CbProjectFileService
projectFileService
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/controller/CbQuantitySummaryController.java
View file @
d1779a75
...
...
@@ -11,7 +11,6 @@ import com.dsk.cscec.domain.vo.CbQuantitySummaryListVo;
import
com.dsk.cscec.service.ICbQuantitySummaryService
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.List
;
import
java.util.Map
;
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbQuantitySummaryServiceImpl.java
View file @
d1779a75
...
...
@@ -2,31 +2,23 @@ package com.dsk.cscec.service.impl;
import
cn.hutool.crypto.SecureUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.dsk.common.excel.ExcelUtils
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.cscec.constant.CbProjectConstants
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.CbQuantitySummary
;
import
com.dsk.cscec.domain.CbQuantitySummaryActual
;
import
com.dsk.cscec.domain.bo.CbProjectBaseBo
;
import
com.dsk.cscec.domain.bo.CbQuantitySummaryListBo
;
import
com.dsk.cscec.domain.vo.CbQuantitySummaryListVo
;
import
com.dsk.cscec.mapper.CbQuantitySummaryMapper
;
import
com.dsk.cscec.service.CbProjectFileService
;
import
com.dsk.cscec.service.ICbQuantitySummaryActualService
;
import
com.dsk.cscec.service.ICbQuantitySummaryService
;
import
jodd.bean.BeanException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.ObjectUtils
;
import
java.io.FileInputStream
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
dsk-system/src/main/java/com/dsk/system/service/ISysOssService.java
View file @
d1779a75
...
...
@@ -10,6 +10,7 @@ import org.springframework.web.multipart.MultipartFile;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.UnsupportedEncodingException
;
import
java.util.Collection
;
import
java.util.List
;
...
...
@@ -37,4 +38,6 @@ public interface ISysOssService {
Boolean
deleteWithValidByIds
(
Collection
<
Long
>
ids
,
Boolean
isValid
);
InputStream
downFileIO
(
Long
ossId
);
}
dsk-system/src/main/java/com/dsk/system/service/impl/SysOssServiceImpl.java
View file @
d1779a75
...
...
@@ -177,6 +177,16 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
return
baseMapper
.
deleteBatchIds
(
ids
)
>
0
;
}
@Override
public
InputStream
downFileIO
(
Long
ossId
)
{
//文件下载
SysOss
sysOss
=
baseMapper
.
selectById
(
ossId
);
if
(
ObjectUtil
.
isNull
(
sysOss
))
{
throw
new
ServiceException
(
"文件数据不存在!"
);
}
return
OssFactory
.
instance
(
sysOss
.
getService
()).
getObjectContent
(
sysOss
.
getUrl
());
}
/**
* 匹配Url
*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment