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
05b3a497
Commit
05b3a497
authored
Feb 22, 2024
by
chenyuefang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
成本汇总导入
parent
1a1cc19e
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
465 additions
and
23 deletions
+465
-23
CbSummaryController.java
...in/java/com/dsk/cscec/controller/CbSummaryController.java
+8
-1
CbSummaryCostAccountImportVo.java
...com/dsk/cscec/domain/vo/CbSummaryCostAccountImportVo.java
+80
-0
CbSummaryProjectImportVo.java
...ava/com/dsk/cscec/domain/vo/CbSummaryProjectImportVo.java
+20
-3
CbSummaryCostAccountImportListener.java
...sk/cscec/listener/CbSummaryCostAccountImportListener.java
+96
-0
CbSummaryProjectImportListener.java
...om/dsk/cscec/listener/CbSummaryProjectImportListener.java
+115
-0
CbSummaryService.java
...src/main/java/com/dsk/cscec/service/CbSummaryService.java
+6
-2
CbSummaryServiceImpl.java
...java/com/dsk/cscec/service/impl/CbSummaryServiceImpl.java
+139
-16
CbSummaryMapper.xml
...z-api/src/main/resources/mapper/cscec/CbSummaryMapper.xml
+1
-1
No files found.
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/controller/CbSummaryController.java
View file @
05b3a497
...
@@ -128,6 +128,13 @@ public class CbSummaryController extends BaseController {
...
@@ -128,6 +128,13 @@ public class CbSummaryController extends BaseController {
}
}
//导入
/**
* 解析并保存数据
* @param projectId
*/
@PostMapping
(
"/analysisData"
)
public
void
analysisData
(
Long
projectId
){
cbSummaryService
.
importCbProject
(
projectId
);
}
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/vo/CbSummaryCostAccountImportVo.java
0 → 100644
View file @
05b3a497
package
com
.
dsk
.
cscec
.
domain
.
vo
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* 成本汇总(CbSummary)-成本科目汇总导入Vo
*
* @author cyf
* @since 2024-02-06
*/
@Data
@NoArgsConstructor
public
class
CbSummaryCostAccountImportVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
20126964599875841L
;
/**
* 排序
*/
private
Integer
sort
;
/**
* 层级
*/
private
Integer
level
;
/**
* 项目id
*/
private
Long
projectId
;
/**
* 项目成本文件id
*/
private
Long
cbProjectFileId
;
/**
* 成本类型(1项目汇总,2成本科目汇总)
*/
private
Integer
cbType
=
2
;
/**
* 序号
*/
@ExcelProperty
(
value
=
"序号"
)
private
String
number
;
/**
* 成本科目
*/
@ExcelProperty
(
value
=
"成本科目"
)
private
String
cbName
;
/**
* 不含税成本合价
*/
@ExcelProperty
(
value
=
"不含税成本合价"
)
private
String
taxExclusiveTotal
;
/**
* 成本税金合价
*/
@ExcelProperty
(
value
=
"成本税金合价"
)
private
String
cbTaxesTotal
;
/**
* 含税成本合价
*/
@ExcelProperty
(
value
=
"含税成本合价"
)
private
String
taxInclusiveTotal
;
/**
* 成本占比
*/
@ExcelProperty
(
value
=
"成本占比"
)
private
String
cbProportion
;
/**
* 含税成本平米指标
*/
@ExcelProperty
(
value
=
"含税成本平米指标"
)
private
String
taxInclusivePmTarget
;
/**
* 备注
*/
@ExcelProperty
(
value
=
"备注"
)
private
String
remark
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/vo/CbSummaryProjectImportVo.java
View file @
05b3a497
package
com
.
dsk
.
cscec
.
domain
.
vo
;
package
com
.
dsk
.
cscec
.
domain
.
vo
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
/**
* 成本汇总(CbSummary)-项目汇总导入Vo
* 成本汇总(CbSummary)-项目汇总导入Vo
...
@@ -18,7 +16,26 @@ import java.util.Date;
...
@@ -18,7 +16,26 @@ import java.util.Date;
@NoArgsConstructor
@NoArgsConstructor
public
class
CbSummaryProjectImportVo
implements
Serializable
{
public
class
CbSummaryProjectImportVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
20126964599875841L
;
private
static
final
long
serialVersionUID
=
-
20126964599875841L
;
/**
* 排序
*/
private
Integer
sort
;
/**
* 层级
*/
private
Integer
level
;
/**
* 项目id
*/
private
Long
projectId
;
/**
* 项目成本文件id
*/
private
Long
cbProjectFileId
;
/**
* 成本类型(1项目汇总,2成本科目汇总)
*/
private
Integer
cbType
=
1
;
/**
/**
* 序号
* 序号
*/
*/
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/listener/CbSummaryCostAccountImportListener.java
0 → 100644
View file @
05b3a497
package
com
.
dsk
.
cscec
.
listener
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.dsk.common.excel.ExcelListener
;
import
com.dsk.common.excel.ExcelResult
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.cscec.domain.vo.CbSummaryCostAccountImportVo
;
import
jodd.util.StringUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 成本汇总-成本科目汇总自定义导入
*
* @author cyf
*/
@Slf4j
public
class
CbSummaryCostAccountImportListener
extends
AnalysisEventListener
<
CbSummaryCostAccountImportVo
>
implements
ExcelListener
<
CbSummaryCostAccountImportVo
>
{
private
final
Long
projectId
;
private
final
Long
fileId
;
private
ArrayList
<
CbSummaryCostAccountImportVo
>
resultList
=
new
ArrayList
<>();
private
int
sort
=
0
;
private
int
successNum
=
0
;
private
int
failureNum
=
0
;
private
final
StringBuilder
successMsg
=
new
StringBuilder
();
private
final
StringBuilder
failureMsg
=
new
StringBuilder
();
public
CbSummaryCostAccountImportListener
(
Long
projectId
,
Long
fileId
)
{
this
.
projectId
=
projectId
;
this
.
fileId
=
fileId
;
}
@Override
public
void
invoke
(
CbSummaryCostAccountImportVo
importVo
,
AnalysisContext
context
)
{
importVo
.
setProjectId
(
projectId
);
importVo
.
setCbProjectFileId
(
fileId
);
importVo
.
setSort
(++
sort
);
//层级处理
if
(
StringUtil
.
isNotBlank
(
importVo
.
getNumber
()))
{
//序号包含n个 - 为n+1级
int
count
=
StringUtil
.
count
(
importVo
.
getNumber
(),
"-"
);
importVo
.
setLevel
(
count
+
1
);
}
else
{
failureNum
++;
failureMsg
.
append
(
"<br/>"
).
append
(
"第"
+
sort
+
"条数据序号为空"
);
return
;
}
//父级数据处理
if
(
sort
==
1
)
{
importVo
.
setLevel
(
0
);
}
resultList
.
add
(
importVo
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
}
@Override
public
ExcelResult
<
CbSummaryCostAccountImportVo
>
getExcelResult
()
{
return
new
ExcelResult
<
CbSummaryCostAccountImportVo
>()
{
@Override
public
String
getAnalysis
()
{
if
(
failureNum
>
0
)
{
failureMsg
.
insert
(
0
,
"失败原因:共 "
+
failureNum
+
" 条数据格式不正确,错误如下:"
);
throw
new
ServiceException
(
failureMsg
.
toString
());
}
else
{
successMsg
.
insert
(
0
,
"成本科目汇总数据已全部解析成功!共 "
+
getList
().
size
()
+
" 条"
);
}
return
successMsg
.
toString
();
}
@Override
public
List
<
CbSummaryCostAccountImportVo
>
getList
()
{
return
resultList
;
}
@Override
public
List
<
String
>
getErrorList
()
{
return
null
;
}
};
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/listener/CbSummaryProjectImportListener.java
0 → 100644
View file @
05b3a497
package
com
.
dsk
.
cscec
.
listener
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.dsk.common.excel.ExcelListener
;
import
com.dsk.common.excel.ExcelResult
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.cscec.domain.vo.CbSummaryProjectImportVo
;
import
jodd.util.StringUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.List
;
/**
* 成本汇总-项目汇总自定义导入
*
* @author cyf
*/
@Slf4j
public
class
CbSummaryProjectImportListener
extends
AnalysisEventListener
<
CbSummaryProjectImportVo
>
implements
ExcelListener
<
CbSummaryProjectImportVo
>
{
// private final CbSummaryService cbSummaryService;
private
final
Long
projectId
;
private
final
Long
fileId
;
private
ArrayList
<
CbSummaryProjectImportVo
>
resultList
=
new
ArrayList
<>();
private
int
sort
=
0
;
private
int
successNum
=
0
;
private
int
failureNum
=
0
;
private
final
StringBuilder
successMsg
=
new
StringBuilder
();
private
final
StringBuilder
failureMsg
=
new
StringBuilder
();
public
CbSummaryProjectImportListener
(
Long
projectId
,
Long
fileId
)
{
// this.cbSummaryService = SpringUtils.getBean(CbSummaryService.class);
this
.
projectId
=
projectId
;
this
.
fileId
=
fileId
;
}
@Override
public
void
invoke
(
CbSummaryProjectImportVo
importVo
,
AnalysisContext
context
)
{
//第一个序号不能为空? todo
//添加父级数据
if
(
sort
==
0
)
{
CbSummaryProjectImportVo
firstVo
=
new
CbSummaryProjectImportVo
();
firstVo
.
setLevel
(
0
);
firstVo
.
setCbName
(
"成本汇总"
);
firstVo
.
setProjectId
(
projectId
);
firstVo
.
setCbProjectFileId
(
fileId
);
firstVo
.
setSort
(
sort
);
resultList
.
add
(
firstVo
);
}
importVo
.
setProjectId
(
projectId
);
importVo
.
setCbProjectFileId
(
fileId
);
importVo
.
setSort
(++
sort
);
//层级处理
if
(
StringUtil
.
isBlank
(
importVo
.
getNumber
()))
{
//序号为空则为上一个序号不为空的子级
//按sort倒序取number不为空的最大level
Object
[]
objects
=
resultList
.
stream
().
sorted
(
Comparator
.
comparingInt
(
CbSummaryProjectImportVo:
:
getSort
).
reversed
())
.
filter
(
vo
->
StringUtil
.
isNotBlank
(
vo
.
getNumber
())).
limit
(
1
).
map
(
CbSummaryProjectImportVo:
:
getLevel
).
toArray
();
//数据序号错误 todo
Integer
lastLevel
=
(
Integer
)
objects
[
0
];
importVo
.
setLevel
(
lastLevel
+
1
);
}
else
if
(
importVo
.
getNumber
().
matches
(
"[\u4E00-\u9FA5]+"
))
{
//判断是否为中文,如果是中文则为一级
importVo
.
setLevel
(
1
);
}
else
if
(
importVo
.
getNumber
().
matches
(
"^[0-9]*[1-9][0-9]*$"
))
{
//判断是否为正整数
importVo
.
setLevel
(
Integer
.
valueOf
(
importVo
.
getNumber
()));
}
// failureNum++;
// failureMsg.append("<br/>").append(failureNum);
resultList
.
add
(
importVo
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
}
@Override
public
ExcelResult
<
CbSummaryProjectImportVo
>
getExcelResult
()
{
return
new
ExcelResult
<
CbSummaryProjectImportVo
>()
{
@Override
public
String
getAnalysis
()
{
if
(
failureNum
>
0
)
{
failureMsg
.
insert
(
0
,
"失败原因:共 "
+
failureNum
+
" 条数据格式不正确,错误如下:"
);
throw
new
ServiceException
(
failureMsg
.
toString
());
}
else
{
successMsg
.
insert
(
0
,
"项目汇总数据已全部解析成功!共 "
+
getList
().
size
()
+
" 条"
);
}
return
successMsg
.
toString
();
}
@Override
public
List
<
CbSummaryProjectImportVo
>
getList
()
{
return
resultList
;
}
@Override
public
List
<
String
>
getErrorList
()
{
return
null
;
}
};
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/CbSummaryService.java
View file @
05b3a497
...
@@ -2,6 +2,7 @@ package com.dsk.cscec.service;
...
@@ -2,6 +2,7 @@ package com.dsk.cscec.service;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.CbSummary
;
import
com.dsk.cscec.domain.CbSummary
;
import
com.dsk.cscec.domain.bo.CbSummaryActualBo
;
import
com.dsk.cscec.domain.bo.CbSummaryActualBo
;
import
com.dsk.cscec.domain.bo.CbSummaryActualListBo
;
import
com.dsk.cscec.domain.bo.CbSummaryActualListBo
;
...
@@ -21,8 +22,11 @@ import java.util.Map;
...
@@ -21,8 +22,11 @@ import java.util.Map;
*/
*/
public
interface
CbSummaryService
extends
IService
<
CbSummary
>
{
public
interface
CbSummaryService
extends
IService
<
CbSummary
>
{
//项目汇总导入 todo
/**
void
importCbProject
(
Long
projectId
,
Integer
cbStage
);
* 项目汇总导入
* @param projectId
*/
void
importCbProject
(
Long
projectId
);
/**
/**
* 获取一级名称/成本科目列表
* 获取一级名称/成本科目列表
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbSummaryServiceImpl.java
View file @
05b3a497
...
@@ -8,7 +8,9 @@ import cn.hutool.core.util.ObjectUtil;
...
@@ -8,7 +8,9 @@ import cn.hutool.core.util.ObjectUtil;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.excel.ExcelResult
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.utils.poi.ExcelUtil
;
import
com.dsk.cscec.constant.CbProjectConstants
;
import
com.dsk.cscec.constant.CbProjectConstants
;
import
com.dsk.cscec.domain.*
;
import
com.dsk.cscec.domain.*
;
import
com.dsk.cscec.domain.bo.CbSummaryActualBo
;
import
com.dsk.cscec.domain.bo.CbSummaryActualBo
;
...
@@ -16,19 +18,22 @@ import com.dsk.cscec.domain.bo.CbSummaryActualListBo;
...
@@ -16,19 +18,22 @@ import com.dsk.cscec.domain.bo.CbSummaryActualListBo;
import
com.dsk.cscec.domain.bo.CbSummaryActualLockBo
;
import
com.dsk.cscec.domain.bo.CbSummaryActualLockBo
;
import
com.dsk.cscec.domain.bo.CbSummaryBo
;
import
com.dsk.cscec.domain.bo.CbSummaryBo
;
import
com.dsk.cscec.domain.vo.CbSummaryActualListVo
;
import
com.dsk.cscec.domain.vo.CbSummaryActualListVo
;
import
com.dsk.cscec.domain.vo.CbSummaryCostAccountImportVo
;
import
com.dsk.cscec.domain.vo.CbSummaryProjectImportVo
;
import
com.dsk.cscec.listener.CbSummaryCostAccountImportListener
;
import
com.dsk.cscec.listener.CbSummaryProjectImportListener
;
import
com.dsk.cscec.mapper.*
;
import
com.dsk.cscec.mapper.*
;
import
com.dsk.cscec.service.CbSummaryService
;
import
com.dsk.cscec.service.CbSummaryService
;
import
com.dsk.system.service.ISysOssService
;
import
jodd.util.StringUtil
;
import
jodd.util.StringUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.InputStream
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* 成本汇总(CbSummary)表服务实现类
* 成本汇总(CbSummary)表服务实现类
...
@@ -36,6 +41,7 @@ import java.util.Map;
...
@@ -36,6 +41,7 @@ import java.util.Map;
* @author cyf
* @author cyf
* @since 2024-02-06
* @since 2024-02-06
*/
*/
@Slf4j
@Service
@Service
public
class
CbSummaryServiceImpl
extends
ServiceImpl
<
CbSummaryMapper
,
CbSummary
>
implements
CbSummaryService
{
public
class
CbSummaryServiceImpl
extends
ServiceImpl
<
CbSummaryMapper
,
CbSummary
>
implements
CbSummaryService
{
@Autowired
@Autowired
...
@@ -50,35 +56,153 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
...
@@ -50,35 +56,153 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
@Autowired
@Autowired
private
CbSummaryActualLockMapper
cbSummaryActualLockMapper
;
private
CbSummaryActualLockMapper
cbSummaryActualLockMapper
;
@Autowired
private
ISysOssService
ossService
;
@Override
@Override
public
void
importCbProject
(
Long
projectId
,
Integer
cbStage
)
{
public
void
importCbProject
(
Long
projectId
)
{
//获取del_flag为1的文件,若存在则根据fileId删除相关基础数据,并修改文件del_flag为2 todo
//获取文件信息
//获取文件信息
List
<
CbProjectFile
>
cbProjectFiles
=
cbProjectFileMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbProjectFile
>()
List
<
CbProjectFile
>
cbProjectFiles
=
cbProjectFileMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbProjectFile
>()
.
eq
(
CbProjectFile:
:
getProjectId
,
projectId
)
.
eq
(
CbProjectFile:
:
getProjectId
,
projectId
)
.
eq
(
CbProjectFile:
:
getCbStage
,
cbStage
)
//
.eq(CbProjectFile::getCbStage, cbStage)
.
eq
(
CbProjectFile:
:
getCbType
,
CbProjectConstants
.
CB_TYPE_SUMMARY
)
.
eq
(
CbProjectFile:
:
getCbType
,
CbProjectConstants
.
CB_TYPE_SUMMARY
)
.
eq
(
CbProjectFile:
:
getFileParseStatus
,
CbProjectConstants
.
PROJECT_FILE_STATUS_PREPARING
)
);
);
//解析数据
//解析数据
cbProjectFiles
.
forEach
(
cbProjectFile
->
{
cbProjectFiles
.
forEach
(
cbProjectFile
->
{
MultipartFile
file
=
null
;
//todo
if
(
cbProjectFile
.
getFileName
().
contains
(
"项目"
))
{
}
else
if
(
cbProjectFile
.
getFileName
().
contains
(
"项目"
))
{
if
(
cbProjectFile
.
getFileName
().
contains
(
"项目"
))
{
saveCbSummaryProject
(
projectId
,
cbProjectFile
);
}
else
if
(
cbProjectFile
.
getFileName
().
contains
(
"成本科目"
))
{
saveCbSummaryCostAccount
(
projectId
,
cbProjectFile
);
}
else
{
}
else
{
//修改文件状态
//修改文件状态
cbProjectFile
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSE_FAIL
);
cbProjectFile
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSE_FAIL
);
cbProjectFile
.
setFailRemark
(
"
文件名错误!
"
);
cbProjectFile
.
setFailRemark
(
"
失败原因:文件名错误
"
);
cbProjectFileMapper
.
updateById
(
cbProjectFile
);
cbProjectFileMapper
.
updateById
(
cbProjectFile
);
}
}
});
});
}
}
/**
* 成本汇总-项目汇总导入
* @param projectId
* @param file
* @return
*/
boolean
saveCbSummaryProject
(
Long
projectId
,
CbProjectFile
file
){
//修改文件状态为解析中
file
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSING
);
cbProjectFileMapper
.
updateById
(
file
);
//文件下载
InputStream
inputStream
=
ossService
.
downFileIO
(
file
.
getFileOssId
());
if
(
ObjectUtil
.
isNull
(
inputStream
))
{
file
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSE_FAIL
);
file
.
setFailRemark
(
"失败原因:文件数据不存在"
);
cbProjectFileMapper
.
updateById
(
file
);
return
false
;
}
//解析数据
ExcelResult
<
CbSummaryProjectImportVo
>
importVoExcelResult
=
ExcelUtil
.
importExcel
(
inputStream
,
CbSummaryProjectImportVo
.
class
,
new
CbSummaryProjectImportListener
(
projectId
,
file
.
getId
()));
log
.
info
(
importVoExcelResult
.
getAnalysis
());
List
<
CbSummary
>
addList
=
BeanUtil
.
copyToList
(
importVoExcelResult
.
getList
(),
CbSummary
.
class
);
this
.
saveBatch
(
addList
);
//处理父级id
List
<
CbSummary
>
cbSummaryList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbSummary
>()
.
eq
(
CbSummary:
:
getProjectId
,
projectId
)
.
eq
(
CbSummary:
:
getCbType
,
1
)
.
orderByAsc
(
CbSummary:
:
getSort
)
);
for
(
CbSummary
cbSummary:
cbSummaryList
)
{
if
(
cbSummary
.
getLevel
()==
0
){
continue
;
}
//获取父级id
Integer
parentLevel
=
cbSummary
.
getLevel
()-
1
;
CbSummary
parent
=
cbSummaryList
.
stream
().
filter
(
summary
->
summary
.
getSort
()<
cbSummary
.
getSort
()&&
summary
.
getLevel
()==
parentLevel
)
.
max
(
Comparator
.
comparing
(
CbSummary:
:
getSort
)).
get
();
cbSummary
.
setParentId
(
parent
.
getId
());
}
this
.
updateBatchById
(
cbSummaryList
);
//修改文件状态为解析成功
file
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSE_SUCCESS
);
cbProjectFileMapper
.
updateById
(
file
);
return
true
;
}
/**
* 成本汇总-成本科目汇总导入
* @param projectId
* @param file
* @return
*/
boolean
saveCbSummaryCostAccount
(
Long
projectId
,
CbProjectFile
file
)
{
//修改文件状态为解析中
file
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSING
);
cbProjectFileMapper
.
updateById
(
file
);
//文件下载
InputStream
inputStream
=
ossService
.
downFileIO
(
file
.
getFileOssId
());
if
(
ObjectUtil
.
isNull
(
inputStream
))
{
file
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSE_FAIL
);
file
.
setFailRemark
(
"失败原因:文件数据不存在"
);
cbProjectFileMapper
.
updateById
(
file
);
return
false
;
}
//解析数据
ExcelResult
<
CbSummaryCostAccountImportVo
>
importVoExcelResult
=
ExcelUtil
.
importExcel
(
inputStream
,
CbSummaryCostAccountImportVo
.
class
,
new
CbSummaryCostAccountImportListener
(
projectId
,
file
.
getId
()));
log
.
info
(
importVoExcelResult
.
getAnalysis
());
List
<
CbSummary
>
addList
=
BeanUtil
.
copyToList
(
importVoExcelResult
.
getList
(),
CbSummary
.
class
);
this
.
saveBatch
(
addList
);
//处理父级id
List
<
CbSummary
>
cbSummaryList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbSummary
>()
.
eq
(
CbSummary:
:
getProjectId
,
projectId
)
.
eq
(
CbSummary:
:
getCbType
,
1
)
.
orderByAsc
(
CbSummary:
:
getSort
)
);
for
(
CbSummary
cbSummary:
cbSummaryList
)
{
if
(
cbSummary
.
getLevel
()==
0
){
continue
;
}
//获取父级id
Integer
parentLevel
=
cbSummary
.
getLevel
()-
1
;
CbSummary
parent
=
cbSummaryList
.
stream
().
filter
(
summary
->
summary
.
getSort
()<
cbSummary
.
getSort
()&&
summary
.
getLevel
()==
parentLevel
)
.
max
(
Comparator
.
comparing
(
CbSummary:
:
getSort
)).
get
();
cbSummary
.
setParentId
(
parent
.
getId
());
}
this
.
updateBatchById
(
cbSummaryList
);
//修改文件状态为解析成功
file
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSE_SUCCESS
);
cbProjectFileMapper
.
updateById
(
file
);
return
true
;
}
@Override
@Override
public
List
<
Map
<
String
,
Object
>>
getCbNameList
(
CbSummaryBo
bo
)
{
public
List
<
Map
<
String
,
Object
>>
getCbNameList
(
CbSummaryBo
bo
)
{
Assert
.
notNull
(
bo
.
getProjectId
(),
"项目id不能为空"
);
Assert
.
notNull
(
bo
.
getProjectId
(),
"项目id不能为空"
);
Assert
.
notNull
(
bo
.
getCbStage
(),
"成本阶段不能为空"
);
//
Assert.notNull(bo.getCbStage(), "成本阶段不能为空");
Assert
.
notNull
(
bo
.
getCbType
(),
"成本类型不能为空"
);
Assert
.
notNull
(
bo
.
getCbType
(),
"成本类型不能为空"
);
List
<
Map
<
String
,
Object
>>
resultList
=
new
ArrayList
<>();
List
<
Map
<
String
,
Object
>>
resultList
=
new
ArrayList
<>();
...
@@ -102,10 +226,11 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
...
@@ -102,10 +226,11 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
//默认当前月
//默认当前月
bo
.
setExpenseDate
(
DatePattern
.
SIMPLE_MONTH_FORMAT
.
format
(
new
Date
()));
bo
.
setExpenseDate
(
DatePattern
.
SIMPLE_MONTH_FORMAT
.
format
(
new
Date
()));
}
}
List
<
CbSummaryActualListVo
>
list
=
new
ArrayList
<>();
//当前父级数据
//当前父级数据
CbSummaryActualListVo
cbSummaryActualListVo
=
baseMapper
.
getById
(
bo
.
getId
(),
bo
.
getExpenseDate
());
CbSummaryActualListVo
cbSummaryActualListVo
=
baseMapper
.
getById
(
bo
.
getId
(),
bo
.
getExpenseDate
());
if
(
ObjectUtil
.
isEmpty
(
cbSummaryActualListVo
))
{
if
(
ObjectUtil
.
isEmpty
(
cbSummaryActualListVo
))
{
return
null
;
return
list
;
}
}
//截至本月费用汇总
//截至本月费用汇总
Map
<
String
,
BigDecimal
>
parentTotal
=
cbSummaryActualMapper
.
getTotal
(
cbSummaryActualListVo
.
getId
(),
bo
.
getExpenseDate
());
Map
<
String
,
BigDecimal
>
parentTotal
=
cbSummaryActualMapper
.
getTotal
(
cbSummaryActualListVo
.
getId
(),
bo
.
getExpenseDate
());
...
@@ -127,7 +252,6 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
...
@@ -127,7 +252,6 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
//成本科目汇总一级列表
//成本科目汇总一级列表
cbSummaryActualListVo
.
setChildren
(
childrenList
);
cbSummaryActualListVo
.
setChildren
(
childrenList
);
List
<
CbSummaryActualListVo
>
list
=
new
ArrayList
<>();
list
.
add
(
cbSummaryActualListVo
);
list
.
add
(
cbSummaryActualListVo
);
return
list
;
return
list
;
}
else
{
}
else
{
...
@@ -135,7 +259,6 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
...
@@ -135,7 +259,6 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
childrenList
=
getProjectSumList
(
bo
);
childrenList
=
getProjectSumList
(
bo
);
cbSummaryActualListVo
.
setChildren
(
childrenList
);
cbSummaryActualListVo
.
setChildren
(
childrenList
);
List
<
CbSummaryActualListVo
>
list
=
new
ArrayList
<>();
list
.
add
(
cbSummaryActualListVo
);
list
.
add
(
cbSummaryActualListVo
);
return
list
;
return
list
;
}
}
...
...
dsk-module/dsk-biz-api/src/main/resources/mapper/cscec/CbSummaryMapper.xml
View file @
05b3a497
...
@@ -121,7 +121,7 @@
...
@@ -121,7 +121,7 @@
where
where
csu.del_flag = 0
csu.del_flag = 0
and csu.project_id = #{bo.projectId}
and csu.project_id = #{bo.projectId}
and csu.cb_stage = #{bo.cbStage}
and csu.cb_type = #{bo.cbType}
and csu.cb_type = #{bo.cbType}
and csu.level = #{bo.level}
and csu.level = #{bo.level}
order by csu.sort
order by csu.sort
...
...
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