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
888762d6
Commit
888762d6
authored
Feb 26, 2024
by
dengguangman
Committed by
Administrator
Feb 26, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
其他
Signed-off-by:
Administrator
<
admin@example.com
>
parent
d3f05146
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1190 additions
and
0 deletions
+1190
-0
CbProjectOtherAnalysisComponent.java
...va/com/dsk/component/CbProjectOtherAnalysisComponent.java
+126
-0
CbProjectOtherController.java
...va/com/dsk/cscec/controller/CbProjectOtherController.java
+124
-0
CbProjectOther.java
...pi/src/main/java/com/dsk/cscec/domain/CbProjectOther.java
+132
-0
CbProjectOtherBo.java
...c/main/java/com/dsk/cscec/domain/bo/CbProjectOtherBo.java
+29
-0
CbProjectOtherImportVo.java
.../java/com/dsk/cscec/domain/vo/CbProjectOtherImportVo.java
+116
-0
CbProjectOtherVo.java
...c/main/java/com/dsk/cscec/domain/vo/CbProjectOtherVo.java
+124
-0
CbProjectExpenseSummaryImportListener.java
...cscec/listener/CbProjectExpenseSummaryImportListener.java
+78
-0
CbProjectOtherImportListener.java
.../com/dsk/cscec/listener/CbProjectOtherImportListener.java
+103
-0
CbProjectOtherMapper.java
.../main/java/com/dsk/cscec/mapper/CbProjectOtherMapper.java
+14
-0
CbProjectOtherService.java
...ain/java/com/dsk/cscec/service/CbProjectOtherService.java
+26
-0
CbProjectOtherServiceImpl.java
...com/dsk/cscec/service/impl/CbProjectOtherServiceImpl.java
+310
-0
CbProjectOtherMapper.xml
.../src/main/resources/mapper/cscec/CbProjectOtherMapper.xml
+8
-0
No files found.
dsk-module/dsk-biz-api/src/main/java/com/dsk/component/CbProjectOtherAnalysisComponent.java
0 → 100644
View file @
888762d6
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
;
import
com.dsk.cscec.constant.CbProjectConstants
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.CbProjectOther
;
import
com.dsk.cscec.domain.bo.CbProjectBaseBo
;
import
com.dsk.cscec.service.CbProjectFileService
;
import
com.dsk.cscec.service.CbProjectOtherService
;
import
com.dsk.system.service.ISysOssService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.support.TransactionTemplate
;
import
org.springframework.util.ObjectUtils
;
import
javax.annotation.Resource
;
import
java.io.InputStream
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* 其他费用数据解析组件
*
* @Author lcl
* @Data 2024/2/7 17:43
*/
@Slf4j
@Component
public
class
CbProjectOtherAnalysisComponent
{
@Resource
private
CbProjectOtherService
projectOtherService
;
@Resource
private
CbProjectFileService
projectFileService
;
@Resource
private
ISysOssService
ossService
;
@Resource
private
TransactionTemplate
transactionTemplate
;
/**
* 其他费用数据解析
*/
@Async
public
void
projectOtherDataAnalysis
(
CbProjectBaseBo
bo
)
throws
Exception
{
//查询其他费用导入文件
List
<
CbProjectFile
>
fileList
=
projectFileService
.
list
(
Wrappers
.<
CbProjectFile
>
lambdaQuery
()
.
eq
(
CbProjectFile:
:
getProjectId
,
bo
.
getProjectId
())
.
eq
(
CbProjectFile:
:
getCbType
,
CbProjectConstants
.
CB_TYPE_OTHER_PROJECT
)
.
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
)
{
//文件下载
InputStream
inputStream
=
ossService
.
downFileIO
(
file
.
getFileOssId
());
if
(
ObjectUtil
.
isNull
(
inputStream
))
{
file
.
setFileParseStatus
(
3
);
file
.
setFailRemark
(
"文件数据不存在"
);
projectFileService
.
updateById
(
file
);
break
;
}
//解析数据
List
<
CbProjectOther
>
importList
=
new
ExcelUtils
<>(
CbProjectOther
.
class
).
importExcelAllSheet
(
inputStream
,
1
);
if
(
importList
.
isEmpty
())
{
file
.
setFileParseStatus
(
3
);
file
.
setFailRemark
(
"表格中不存在待导入数据!"
);
projectFileService
.
updateById
(
file
);
break
;
}
List
<
CbProjectOther
>
projectOtherList
=
importList
.
stream
().
parallel
()
.
peek
(
item
->
{
item
.
setProjectId
(
bo
.
getProjectId
());
item
.
setCbStage
(
bo
.
getCbStage
());
item
.
setCbProjectFileId
(
file
.
getId
());
}).
collect
(
Collectors
.
toList
());
if
(
projectOtherList
.
isEmpty
())
{
throw
new
ServiceException
(
"表格中不存在有效数据数据!"
);
}
transactionTemplate
.
execute
(
status
->
{
try
{
//分批次插入
if
(
projectOtherList
.
size
()
>
1000
)
{
int
index
=
0
;
int
sum
=
projectOtherList
.
size
();
while
(
index
<
sum
)
{
List
<
CbProjectOther
>
divideList
=
projectOtherList
.
subList
(
index
,
Math
.
max
((
index
+
1
)
*
1000
,
sum
));
boolean
b
=
projectOtherService
.
saveBatch
(
divideList
);
if
(!
b
)
{
throw
new
ServiceException
(
"数据插入失败!"
);
}
index
+=
1000
;
}
}
else
{
boolean
b
=
projectOtherService
.
saveBatch
(
projectOtherList
);
if
(!
b
)
{
throw
new
ServiceException
(
"数据插入失败!"
);
}
}
file
.
setFileParseStatus
(
2
);
boolean
b
=
projectFileService
.
updateById
(
file
);
if
(!
b
)
{
throw
new
ServiceException
(
"文件状态更新失败!"
);
}
}
catch
(
Exception
e
)
{
status
.
setRollbackOnly
();
file
.
setFileParseStatus
(
3
);
file
.
setFailRemark
(
e
.
getMessage
());
projectFileService
.
updateById
(
file
);
}
return
Boolean
.
TRUE
;
});
}
else
{
projectOtherService
.
remove
(
Wrappers
.<
CbProjectOther
>
lambdaQuery
().
eq
(
CbProjectOther:
:
getCbProjectFileId
,
file
.
getId
()));
projectFileService
.
removeById
(
file
);
}
}
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/controller/CbProjectOtherController.java
0 → 100644
View file @
888762d6
package
com
.
dsk
.
cscec
.
controller
;
import
cn.dev33.satoken.annotation.SaIgnore
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.dsk.common.annotation.Log
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.enums.BusinessType
;
import
com.dsk.component.CbProjectOtherAnalysisComponent
;
import
com.dsk.cscec.domain.CbProjectExpenseSummary
;
import
com.dsk.cscec.domain.bo.CbProjectBaseBo
;
import
com.dsk.cscec.domain.bo.CbProjectOtherBo
;
import
com.dsk.cscec.domain.vo.CbProjectOtherVo
;
import
com.dsk.cscec.service.CbProjectExpenseSummaryService
;
import
com.dsk.cscec.service.CbProjectOtherService
;
import
org.springframework.http.MediaType
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
/**
* @ClassName CbProjectOtherController
* @Description 其他费用相关控制器
* @Author Dgm
* @Date 2024/2/8 10:55
* @Version 1.0.0
*/
@RestController
@RequestMapping
(
"cb/projectOther"
)
public
class
CbProjectOtherController
{
@Resource
private
CbProjectOtherService
projectOtherService
;
@Resource
private
CbProjectExpenseSummaryService
cbProjectExpenseSummaryService
;
@Resource
private
CbProjectOtherAnalysisComponent
otherAnalysisComponent
;
@GetMapping
(
value
=
"/projectOther/dataAnalysis"
)
public
R
<
List
<
CbProjectExpenseSummary
>>
projectOtherDataAnalysis
(
CbProjectBaseBo
baseBo
)
throws
Exception
{
otherAnalysisComponent
.
projectOtherDataAnalysis
(
baseBo
);
return
R
.
ok
();
}
/***
* @Description: 其他费用-汇总
* @Param:
* @return: com.dsk.common.core.domain.R<java.util.List<com.dsk.cscec.domain.vo.CbProjectOtherVo>>
* @Author: Dgm
* @date: 2024/2/8 14:08
*/
@SaIgnore
@GetMapping
(
value
=
"/statistics/{projectId}"
)
public
R
<
List
<
CbProjectExpenseSummary
>>
statistics
(
@PathVariable
Long
projectId
)
{
CbProjectExpenseSummary
expenseSummary
=
new
CbProjectExpenseSummary
();
expenseSummary
.
setProjectId
(
projectId
);
expenseSummary
.
setDataType
(
2
);
QueryWrapper
<
CbProjectExpenseSummary
>
queryWrapper
=
Wrappers
.
query
(
expenseSummary
);
queryWrapper
.
select
(
"id"
,
"expense_name as expenseName"
,
"expense_value as expenseValue"
);
queryWrapper
.
orderByAsc
(
"id"
);
List
<
CbProjectExpenseSummary
>
expenseSummaryList
=
this
.
cbProjectExpenseSummaryService
.
list
(
queryWrapper
);
if
(
ObjectUtil
.
isEmpty
(
expenseSummaryList
))
{
expenseSummaryList
=
new
ArrayList
<>();
}
return
R
.
ok
(
expenseSummaryList
);
}
/***
* @Description: 其他费用一级大类
* @Param:
* @return: com.dsk.common.core.domain.R<java.util.List<com.dsk.cscec.domain.vo.CbProjectOtherVo>>
* @Author: Dgm
* @date: 2024/2/8 14:08
*/
@SaIgnore
@GetMapping
(
value
=
"/type/{projectId}"
)
public
R
<
List
<
Map
<
String
,
Object
>>>
dictType
(
@PathVariable
Long
projectId
)
{
List
<
Map
<
String
,
Object
>>
data
=
projectOtherService
.
listByLevel
(
projectId
,
0
);
if
(
ObjectUtil
.
isNull
(
data
))
{
data
=
new
ArrayList
<>();
}
return
R
.
ok
(
data
);
}
/***
* @Description: 其他费用列表
* @Param:
* @return: com.dsk.common.core.domain.R<java.util.List<com.dsk.cscec.domain.vo.CbProjectOtherVo>>
* @Author: Dgm
* @date: 2024/2/8 14:08
*/
@SaIgnore
@GetMapping
(
"/list"
)
public
R
<
List
<
CbProjectOtherVo
>>
list
(
CbProjectOtherBo
projectOtherBo
)
{
List
<
CbProjectOtherVo
>
data
=
projectOtherService
.
selectDataList
(
projectOtherBo
);
if
(
ObjectUtil
.
isNull
(
data
))
{
data
=
new
ArrayList
<>();
}
return
R
.
ok
(
data
);
}
/***
* @Description: 其他费用-导入数据
* @param file 导入文件
* @param projectId 项目id
* @return: com.dsk.common.core.domain.R<java.util.List<com.dsk.cscec.domain.vo.CbProjectOtherVo>>
* @Author: Dgm
* @date: 2024/2/8 14:08
*/
@Log
(
title
=
"其他费用相关项导入"
,
businessType
=
BusinessType
.
IMPORT
)
@PostMapping
(
value
=
"/importData"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
public
R
<
Void
>
importData
(
@RequestPart
(
"file"
)
MultipartFile
file
,
Long
projectId
)
throws
Exception
{
projectOtherService
.
importExcelData
(
file
,
projectId
);
return
R
.
ok
();
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/CbProjectOther.java
0 → 100644
View file @
888762d6
package
com
.
dsk
.
cscec
.
domain
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @ClassName CbProjectOtherVo
* @Description 项目其他项目费用
* @Author Dgm
* @Date 2024/2/8 10:39
* @Version 1.0.0
*/
@Data
public
class
CbProjectOther
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键id
*/
private
Long
id
;
/**
* 成本阶段( 0:标前成本、1:标后成本、2:转固成本)
*/
private
Integer
cbStage
;
/**
* 项目ID
*/
private
Long
projectId
;
/**
* 父项id
*/
private
Long
parentId
;
/**
* 序号
*/
private
String
number
;
/**
* 处理后序号
*/
private
String
dealWithNumber
;
/**
* 清单内容
*/
private
String
itemContent
;
/**
* 工作内容、做法/规格型号/施工现场配置说明
*/
private
String
workContent
;
/**
* 单位
*/
private
String
unit
;
/**
* 工程量
*/
private
BigDecimal
engineeringQuantity
;
/**
* 不含税单价
*/
private
String
unitPriceExcludingTax
;
/**
* 不含税合价
*/
private
String
totalPriceExcludeTax
;
/**
* 税率(%)
*/
private
String
taxRate
;
/**
* 含税合价
*/
private
String
totalPriceIncludingTax
;
/**
* 税金(元)
*/
private
String
taxAmount
;
/**
* 成本科目
*/
private
String
costSubject
;
/**
* 税金类型
*/
private
String
taxType
;
/**
* 数据类型(1:履约担保、保函手续费、市场营销奖励费、2:创优费:3:其他:4:保险保函:5:水电费:6:现场其他直接费:7:技术质量管理:8:工程保险类:10:报批报建、竣工验收类
*/
private
String
dataType
;
/**
* 备注
*/
private
String
remarks
;
/**
* 修改人
*/
private
String
updateBy
;
/**
* 创建人
*/
private
String
createBy
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 更新时间
*/
private
Date
updateTime
;
/**
* 项目成本文件id
*/
private
Long
cbProjectFileId
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/CbProjectOtherBo.java
0 → 100644
View file @
888762d6
package
com
.
dsk
.
cscec
.
domain
.
bo
;
import
lombok.Data
;
@Data
public
class
CbProjectOtherBo
{
/**
* 费用项Id
*/
private
Long
parentId
;
/**
* 年月
*/
private
String
month
;
/**
* 项目id
*/
private
Long
projectId
;
/**
* 成本阶段( 0:标前成本、1:标后成本、2:转固成本)
*/
private
Integer
cbStage
;
}
\ No newline at end of file
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/vo/CbProjectOtherImportVo.java
0 → 100644
View file @
888762d6
package
com
.
dsk
.
cscec
.
domain
.
vo
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* @ClassName CbProjectOtherVo
* @Description 项目其他项目费用
* @Author Dgm
* @Date 2024/2/8 10:39
* @Version 1.0.0
*/
@Data
public
class
CbProjectOtherImportVo
{
/**
* 序号
*/
@ExcelProperty
(
value
=
"序号"
)
private
String
number
;
/**
* 清单内容
*/
@ExcelProperty
(
value
=
"清单内容"
)
private
String
itemContent
;
/**
* 工作内容、做法/规格型号/施工现场配置说明
*/
@ExcelProperty
(
value
=
"工作内容"
)
private
String
workContent
;
/**
* 单位
*/
@ExcelProperty
(
value
=
"单位"
)
private
String
unit
;
/**
* 工程量
*/
@ExcelProperty
(
value
=
"工程量"
)
private
BigDecimal
engineeringQuantity
;
/**
* 不含税单价
*/
@ExcelProperty
(
value
=
"不含税单价"
)
private
String
unitPriceExcludingTax
;
/**
* 不含税合价
*/
@ExcelProperty
(
value
=
"不含税合价"
)
private
String
totalPriceExcludeTax
;
/**
* 税率(%)
*/
@ExcelProperty
(
value
=
"税率(%)"
)
private
String
taxRate
;
/**
* 含税合价
*/
@ExcelProperty
(
value
=
"含税合价"
)
private
String
totalPriceIncludingTax
;
/**
* 税金(元)
*/
@ExcelProperty
(
value
=
"税金(元)"
)
private
String
taxAmount
;
/**
* 成本科目
*/
@ExcelProperty
(
value
=
"成本科目"
)
private
String
costSubject
;
/**
* 税金类型
*/
@ExcelProperty
(
value
=
"税金类型"
)
private
String
taxType
;
/**
* 备注
*/
@ExcelProperty
(
value
=
"备注"
)
private
String
remarks
;
/**
* 数据类型(1:履约担保、保函手续费、市场营销奖励费、2:创优费:3:其他:4:保险保函:5:水电费:6:现场其他直接费:7:技术质量管理:8:工程保险类:10:报批报建、竣工验收类
*/
private
String
dataType
;
/**
* 主键id
*/
private
Long
id
;
/**
* 成本阶段( 0:标前成本、1:标后成本、2:转固成本)
*/
private
Integer
cbStage
;
/**
* 项目ID
*/
private
Long
projectId
;
/**
* 父项id
*/
private
Long
parentId
;
/**
* 处理后序号
*/
private
String
dealWithNumber
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/vo/CbProjectOtherVo.java
0 → 100644
View file @
888762d6
package
com
.
dsk
.
cscec
.
domain
.
vo
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @ClassName CbProjectOtherVo
* @Description 项目其他项目费用
* @Author Dgm
* @Date 2024/2/8 10:39
* @Version 1.0.0
*/
@Data
public
class
CbProjectOtherVo
{
/**
* 主键id
*/
private
Long
id
;
/**
* 成本阶段( 0:标前成本、1:标后成本、2:转固成本)
*/
private
Integer
cbStage
;
/**
* 项目ID
*/
private
Long
projectId
;
/**
* 父项id
*/
private
Long
parentId
;
/**
* 序号
*/
private
String
number
;
/**
* 处理后序号
*/
private
String
dealWithNumber
;
/**
* 清单内容
*/
private
String
itemContent
;
/**
* 工作内容、做法/规格型号/施工现场配置说明
*/
private
String
workContent
;
/**
* 单位
*/
private
String
unit
;
/**
* 工程量
*/
private
BigDecimal
engineeringQuantity
;
/**
* 不含税单价
*/
private
String
unitPriceExcludingTax
;
/**
* 不含税合价
*/
private
String
totalPriceExcludeTax
;
/**
* 税率(%)
*/
private
String
taxRate
;
/**
* 含税合价
*/
private
String
totalPriceIncludingTax
;
/**
* 税金(元)
*/
private
String
taxAmount
;
/**
* 成本科目
*/
private
String
costSubject
;
/**
* 税金类型
*/
private
String
taxType
;
/**
* 数据类型(1:履约担保、保函手续费、市场营销奖励费、2:创优费:3:其他:4:保险保函:5:水电费:6:现场其他直接费:7:技术质量管理:8:工程保险类:10:报批报建、竣工验收类
*/
private
String
dataType
;
/**
* 备注
*/
private
String
remarks
;
/**
* 修改人
*/
private
String
updateBy
;
/**
* 创建人
*/
private
String
createBy
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 更新时间
*/
private
Date
updateTime
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/listener/CbProjectExpenseSummaryImportListener.java
0 → 100644
View file @
888762d6
package
com
.
dsk
.
cscec
.
listener
;
import
cn.hutool.core.util.StrUtil
;
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.CbProjectExpenseSummaryImportVo
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 其他项目自定义导入
*
* @author Lion Li
*/
@Slf4j
public
class
CbProjectExpenseSummaryImportListener
extends
AnalysisEventListener
<
CbProjectExpenseSummaryImportVo
>
implements
ExcelListener
<
CbProjectExpenseSummaryImportVo
>
{
private
final
Long
projectId
;
private
final
Integer
cbStage
;
private
List
<
CbProjectExpenseSummaryImportVo
>
dataList
=
new
ArrayList
<>();
private
int
successNum
=
0
;
private
int
failureNum
=
0
;
private
final
StringBuilder
successMsg
=
new
StringBuilder
();
private
final
StringBuilder
failureMsg
=
new
StringBuilder
();
public
CbProjectExpenseSummaryImportListener
(
Long
projectId
,
Integer
cbStage
)
{
this
.
cbStage
=
cbStage
;
this
.
projectId
=
projectId
;
}
@Override
public
void
invoke
(
CbProjectExpenseSummaryImportVo
importVo
,
AnalysisContext
context
)
{
Integer
rowIndex
=
context
.
readRowHolder
().
getRowIndex
();
if
(
StrUtil
.
isEmpty
(
importVo
.
getExpenseName
()))
{
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
rowIndex
+
"行 解析失败:清单内容不能为空"
);
}
String
number
=
importVo
.
getNumber
();
if
(
StrUtil
.
isEmpty
(
number
))
{
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
rowIndex
+
"行 解析失败:序号不能为空"
);
}
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
}
@Override
public
ExcelResult
<
CbProjectExpenseSummaryImportVo
>
getExcelResult
()
{
return
new
ExcelResult
<
CbProjectExpenseSummaryImportVo
>()
{
@Override
public
String
getAnalysis
()
{
if
(
failureNum
>
0
)
{
failureMsg
.
insert
(
0
,
"很抱歉,导入失败!共 "
+
failureNum
+
" 条数据格式不正确,错误如下:"
);
throw
new
ServiceException
(
failureMsg
.
toString
());
}
else
{
successMsg
.
insert
(
0
,
"恭喜您,数据已全部导入成功!共 "
+
successNum
+
" 条,数据如下:"
);
}
return
successMsg
.
toString
();
}
@Override
public
List
<
CbProjectExpenseSummaryImportVo
>
getList
()
{
return
dataList
;
}
@Override
public
List
<
String
>
getErrorList
()
{
return
null
;
}
};
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/listener/CbProjectOtherImportListener.java
0 → 100644
View file @
888762d6
package
com
.
dsk
.
cscec
.
listener
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.util.ReUtil
;
import
cn.hutool.core.util.StrUtil
;
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.CbProjectOtherImportVo
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.regex.Pattern
;
/**
* 其他项目自定义导入
*
* @author Lion Li
*/
@Slf4j
public
class
CbProjectOtherImportListener
extends
AnalysisEventListener
<
CbProjectOtherImportVo
>
implements
ExcelListener
<
CbProjectOtherImportVo
>
{
private
final
Long
projectId
;
private
final
Integer
cbStage
;
private
List
<
CbProjectOtherImportVo
>
dataList
=
new
ArrayList
<>();
private
int
successNum
=
0
;
private
int
failureNum
=
0
;
private
final
StringBuilder
successMsg
=
new
StringBuilder
();
private
final
StringBuilder
failureMsg
=
new
StringBuilder
();
public
CbProjectOtherImportListener
(
Long
projectId
,
Integer
cbStage
)
{
this
.
cbStage
=
cbStage
;
this
.
projectId
=
projectId
;
}
@Override
public
void
invoke
(
CbProjectOtherImportVo
importVo
,
AnalysisContext
context
)
{
Integer
rowIndex
=
context
.
readRowHolder
().
getRowIndex
();
if
(
StrUtil
.
isEmpty
(
importVo
.
getItemContent
()))
{
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
rowIndex
+
"行 解析失败:清单内容不能为空"
);
}
String
number
=
importVo
.
getNumber
();
if
(
StrUtil
.
isEmpty
(
number
))
{
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
rowIndex
+
"行 解析失败:序号不能为空"
);
}
Boolean
numberMatch
=
false
;
String
regex
=
"[\\((]*[一|二|三|四|五|六|七|八|九|十]+[\\))]*"
;
Pattern
pattern
=
Pattern
.
compile
(
"^\\d+(\\.\\d+)*$"
);
Pattern
pattern3
=
Pattern
.
compile
(
"^([1-9][0-9]*|0)$"
);
if
(
ReUtil
.
isMatch
(
regex
,
number
)
||
ReUtil
.
isMatch
(
pattern
,
number
)||
ReUtil
.
isMatch
(
pattern3
,
number
))
{
numberMatch
=
true
;
}
else
{
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
rowIndex
+
"行 解析失败:序号格式错误"
);
}
if
(
numberMatch
){
if
(
ReUtil
.
isMatch
(
regex
,
number
)){
String
replace
=
number
.
replaceAll
(
"[\\\\((]|[\\\\))]"
,
""
);
int
no
=
Convert
.
chineseToNumber
(
replace
);
importVo
.
setDealWithNumber
(
String
.
valueOf
(
no
));
}
else
{
importVo
.
setDealWithNumber
(
importVo
.
getNumber
());
}
dataList
.
add
(
importVo
);
}
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
}
@Override
public
ExcelResult
<
CbProjectOtherImportVo
>
getExcelResult
()
{
return
new
ExcelResult
<
CbProjectOtherImportVo
>()
{
@Override
public
String
getAnalysis
()
{
if
(
failureNum
>
0
)
{
failureMsg
.
insert
(
0
,
"很抱歉,导入失败!共 "
+
failureNum
+
" 条数据格式不正确,错误如下:"
);
throw
new
ServiceException
(
failureMsg
.
toString
());
}
else
{
successMsg
.
insert
(
0
,
"恭喜您,数据已全部导入成功!共 "
+
successNum
+
" 条,数据如下:"
);
}
return
successMsg
.
toString
();
}
@Override
public
List
<
CbProjectOtherImportVo
>
getList
()
{
return
dataList
;
}
@Override
public
List
<
String
>
getErrorList
()
{
return
null
;
}
};
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/mapper/CbProjectOtherMapper.java
0 → 100644
View file @
888762d6
package
com
.
dsk
.
cscec
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.dsk.cscec.domain.CbProjectOther
;
import
com.dsk.cscec.domain.bo.CbProjectOtherBo
;
import
com.dsk.cscec.domain.vo.CbProjectOtherVo
;
import
java.util.List
;
public
interface
CbProjectOtherMapper
extends
BaseMapper
<
CbProjectOther
>
{
List
<
CbProjectOtherVo
>
selectListByProjectAndStage
(
CbProjectOtherBo
projectOtherBo
);
}
\ No newline at end of file
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/CbProjectOtherService.java
0 → 100644
View file @
888762d6
package
com
.
dsk
.
cscec
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.dsk.cscec.domain.CbProjectOther
;
import
com.dsk.cscec.domain.bo.CbProjectOtherBo
;
import
com.dsk.cscec.domain.vo.CbProjectOtherVo
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.List
;
import
java.util.Map
;
/**
* 成本-工料汇总基本表(CbQuantitySummary)表服务接口
*
* @author lcl
* @since 2024-02-05 11:06:56
*/
public
interface
CbProjectOtherService
extends
IService
<
CbProjectOther
>
{
void
importExcelData
(
MultipartFile
file
,
Long
projectId
);
List
<
Map
<
String
,
Object
>>
listByLevel
(
Long
projectId
,
int
i
);
List
<
CbProjectOtherVo
>
selectDataList
(
CbProjectOtherBo
projectOtherBo
);
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbProjectOtherServiceImpl.java
0 → 100644
View file @
888762d6
This diff is collapsed.
Click to expand it.
dsk-module/dsk-biz-api/src/main/resources/mapper/cscec/CbProjectOtherMapper.xml
0 → 100644
View file @
888762d6
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.dsk.cscec.mapper.CbProjectOtherMapper"
>
<select
id=
"selectListByProjectAndStage"
resultType=
"com.dsk.cscec.domain.vo.CbProjectOtherVo"
>
SELECT t.* FROM cb_project_other t WHERE t.project_id=#{projectId} AND t.cb_stage=#{cbStage} AND t.parent_id=#{parentId} ORDER BY id ASC
</select>
</mapper>
\ No newline at end of file
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