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
0a8d6205
Commit
0a8d6205
authored
Feb 26, 2024
by
huangjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/V20231129-中建一局二公司' into V20231129-中建一局二公司
parents
88862b3f
888762d6
Changes
19
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
1228 additions
and
14 deletions
+1228
-14
CbProjectOtherAnalysisComponent.java
...va/com/dsk/component/CbProjectOtherAnalysisComponent.java
+126
-0
CbProjectOtherController.java
...va/com/dsk/cscec/controller/CbProjectOtherController.java
+124
-0
CbProjectRecordController.java
...a/com/dsk/cscec/controller/CbProjectRecordController.java
+1
-1
CbProjectOther.java
...pi/src/main/java/com/dsk/cscec/domain/CbProjectOther.java
+132
-0
CbProjectRecord.java
...i/src/main/java/com/dsk/cscec/domain/CbProjectRecord.java
+2
-2
CbQuantitySummaryActual.java
...in/java/com/dsk/cscec/domain/CbQuantitySummaryActual.java
+13
-4
AddCbProjectBo.java
...src/main/java/com/dsk/cscec/domain/bo/AddCbProjectBo.java
+2
-2
CbProjectOtherBo.java
...c/main/java/com/dsk/cscec/domain/bo/CbProjectOtherBo.java
+29
-0
EditProjectInfoBo.java
.../main/java/com/dsk/cscec/domain/bo/EditProjectInfoBo.java
+2
-2
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
CbProjectRecordServiceImpl.java
...om/dsk/cscec/service/impl/CbProjectRecordServiceImpl.java
+14
-2
CbQuantitySummaryServiceImpl.java
.../dsk/cscec/service/impl/CbQuantitySummaryServiceImpl.java
+4
-1
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 @
0a8d6205
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 @
0a8d6205
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/controller/CbProjectRecordController.java
View file @
0a8d6205
...
@@ -67,7 +67,7 @@ public class CbProjectRecordController extends BaseController {
...
@@ -67,7 +67,7 @@ public class CbProjectRecordController extends BaseController {
* 获取项目台账列表
* 获取项目台账列表
*/
*/
@GetMapping
(
"/getProjectList"
)
@GetMapping
(
"/getProjectList"
)
public
TableDataInfo
<
CbProjectRecordSearchVo
>
getProjectList
(
@RequestBody
CbProjectSearchBo
searchBo
,
PageQuery
pageQuery
)
{
public
TableDataInfo
<
CbProjectRecordSearchVo
>
getProjectList
(
CbProjectSearchBo
searchBo
,
PageQuery
pageQuery
)
{
return
baseService
.
getProjectList
(
searchBo
,
pageQuery
);
return
baseService
.
getProjectList
(
searchBo
,
pageQuery
);
}
}
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/CbProjectOther.java
0 → 100644
View file @
0a8d6205
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/CbProjectRecord.java
View file @
0a8d6205
...
@@ -44,9 +44,9 @@ public class CbProjectRecord extends BaseEntity implements Serializable {
...
@@ -44,9 +44,9 @@ public class CbProjectRecord extends BaseEntity implements Serializable {
*/
*/
private
String
ipmProjectNo
;
private
String
ipmProjectNo
;
/**
/**
* 是否获取项目详情
(0:是、1:否)
* 是否获取项目详情
*/
*/
private
Integer
isGetProjectDetail
;
private
Boolean
isGetProjectDetail
;
/**
/**
* 文件名称
* 文件名称
*/
*/
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/CbQuantitySummaryActual.java
View file @
0a8d6205
...
@@ -48,10 +48,7 @@ public class CbQuantitySummaryActual implements Serializable {
...
@@ -48,10 +48,7 @@ public class CbQuantitySummaryActual implements Serializable {
* 采购单价
* 采购单价
*/
*/
private
Double
purchaseUnitPrice
;
private
Double
purchaseUnitPrice
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
/**
* 推送时间
* 推送时间
*/
*/
...
@@ -76,6 +73,18 @@ public class CbQuantitySummaryActual implements Serializable {
...
@@ -76,6 +73,18 @@ public class CbQuantitySummaryActual implements Serializable {
* IPM作业编码
* IPM作业编码
*/
*/
private
String
ipmBizCode
;
private
String
ipmBizCode
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 更新人
*/
private
String
updateBy
;
/**
* 更新时间
*/
private
Date
updateTime
;
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/AddCbProjectBo.java
View file @
0a8d6205
...
@@ -20,10 +20,10 @@ public class AddCbProjectBo {
...
@@ -20,10 +20,10 @@ public class AddCbProjectBo {
*/
*/
private
String
ipmProjectNo
;
private
String
ipmProjectNo
;
/**
/**
* 是否获取项目详情
(0:否、1:是)
* 是否获取项目详情
*/
*/
@NotNull
(
message
=
"是否获取项目详情不能为空"
)
@NotNull
(
message
=
"是否获取项目详情不能为空"
)
private
Integer
isGetProjectDetail
;
private
Boolean
isGetProjectDetail
;
/**
/**
* 文件名称
* 文件名称
*/
*/
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/CbProjectOtherBo.java
0 → 100644
View file @
0a8d6205
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/bo/EditProjectInfoBo.java
View file @
0a8d6205
...
@@ -25,10 +25,10 @@ public class EditProjectInfoBo {
...
@@ -25,10 +25,10 @@ public class EditProjectInfoBo {
*/
*/
private
String
ipmProjectNo
;
private
String
ipmProjectNo
;
/**
/**
* 是否获取项目详情
(0:否、1:是)
* 是否获取项目详情
*/
*/
@NotNull
(
message
=
"是否获取项目详情不能为空"
)
@NotNull
(
message
=
"是否获取项目详情不能为空"
)
private
Integer
isGetProjectDetail
;
private
Boolean
isGetProjectDetail
;
/**
/**
* 文件名称
* 文件名称
*/
*/
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/vo/CbProjectOtherImportVo.java
0 → 100644
View file @
0a8d6205
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 @
0a8d6205
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 @
0a8d6205
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 @
0a8d6205
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 @
0a8d6205
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 @
0a8d6205
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 @
0a8d6205
This diff is collapsed.
Click to expand it.
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbProjectRecordServiceImpl.java
View file @
0a8d6205
...
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.dsk.common.core.domain.PageQuery
;
import
com.dsk.common.core.domain.PageQuery
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.common.helper.LoginHelper
;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.component.DataAnalysisComponent
;
import
com.dsk.component.DataAnalysisComponent
;
import
com.dsk.cscec.constant.CbProjectConstants
;
import
com.dsk.cscec.constant.CbProjectConstants
;
...
@@ -20,13 +21,16 @@ import com.dsk.cscec.domain.bo.*;
...
@@ -20,13 +21,16 @@ import com.dsk.cscec.domain.bo.*;
import
com.dsk.cscec.domain.vo.CbProjectRecordSearchVo
;
import
com.dsk.cscec.domain.vo.CbProjectRecordSearchVo
;
import
com.dsk.cscec.mapper.CbProjectFileMapper
;
import
com.dsk.cscec.mapper.CbProjectFileMapper
;
import
com.dsk.cscec.mapper.CbProjectRecordMapper
;
import
com.dsk.cscec.mapper.CbProjectRecordMapper
;
import
com.dsk.cscec.service.CbProjectExpenseSummaryService
;
import
com.dsk.cscec.service.CbProjectRecordService
;
import
com.dsk.cscec.service.CbProjectRecordService
;
import
com.dsk.cscec.service.CbSummaryService
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -43,6 +47,10 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
...
@@ -43,6 +47,10 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
private
CbProjectFileMapper
projectFileMapper
;
private
CbProjectFileMapper
projectFileMapper
;
@Resource
@Resource
private
DataAnalysisComponent
dataAnalysisComponent
;
private
DataAnalysisComponent
dataAnalysisComponent
;
@Resource
private
CbSummaryService
cbSummaryService
;
@Resource
private
CbProjectExpenseSummaryService
projectExpenseSummaryService
;
/**
/**
* 新增项目
* 新增项目
...
@@ -109,17 +117,21 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
...
@@ -109,17 +117,21 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
projectFileService
.
updateBatchById
(
projectFileList
.
stream
().
peek
(
projectFile
->
projectFile
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSING
)).
collect
(
Collectors
.
toList
()));
projectFileService
.
updateBatchById
(
projectFileList
.
stream
().
peek
(
projectFile
->
projectFile
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSING
)).
collect
(
Collectors
.
toList
()));
//TODO:调各个成本类型的解析文件方法
//TODO:调各个成本类型的解析文件方法
Integer
cbStage
=
projectRecord
.
getCbStage
();
String
username
=
Objects
.
requireNonNull
(
LoginHelper
.
getLoginUser
()).
getUsername
();
//直接费成本
//直接费成本
//工料汇总
//工料汇总
CbProjectBaseBo
projectBaseBo
=
new
CbProjectBaseBo
();
CbProjectBaseBo
projectBaseBo
=
new
CbProjectBaseBo
();
projectBaseBo
.
setProjectId
(
projectId
);
projectBaseBo
.
setProjectId
(
projectId
);
projectBaseBo
.
setCbStage
(
projectRecord
.
getCbStage
());
projectBaseBo
.
setCbStage
(
cbStage
);
dataAnalysisComponent
.
quantitySummaryDataAnalysis
(
projectBaseBo
);
dataAnalysisComponent
.
quantitySummaryDataAnalysis
(
projectBaseBo
);
//措施项目
//措施项目
//其他项目
//其他项目
//现场经费
//现场经费
projectExpenseSummaryService
.
parseSceneExpenseData
(
projectId
,
cbStage
,
username
);
//成本汇总
//成本汇总
cbSummaryService
.
importCbSummary
(
projectId
);
}
}
/**
/**
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbQuantitySummaryServiceImpl.java
View file @
0a8d6205
...
@@ -5,6 +5,7 @@ import cn.hutool.json.JSONUtil;
...
@@ -5,6 +5,7 @@ import cn.hutool.json.JSONUtil;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.helper.LoginHelper
;
import
com.dsk.cscec.domain.CbQuantitySummary
;
import
com.dsk.cscec.domain.CbQuantitySummary
;
import
com.dsk.cscec.domain.CbQuantitySummaryActual
;
import
com.dsk.cscec.domain.CbQuantitySummaryActual
;
import
com.dsk.cscec.domain.CbSubject
;
import
com.dsk.cscec.domain.CbSubject
;
...
@@ -62,7 +63,7 @@ public class CbQuantitySummaryServiceImpl extends ServiceImpl<CbQuantitySummaryM
...
@@ -62,7 +63,7 @@ public class CbQuantitySummaryServiceImpl extends ServiceImpl<CbQuantitySummaryM
Map
<
String
,
Object
>
oneMap
=
new
HashMap
<>();
Map
<
String
,
Object
>
oneMap
=
new
HashMap
<>();
List
<
Map
<
String
,
Object
>>
oneList
=
new
ArrayList
<>();
List
<
Map
<
String
,
Object
>>
oneList
=
new
ArrayList
<>();
oneMap
.
put
(
"name"
,
entry
.
getKey
());
oneMap
.
put
(
"name"
,
entry
.
getKey
());
oneMap
.
put
(
"sort"
,
cbSubjectMapper
.
selectOne
(
Wrappers
.<
CbSubject
>
lambdaQuery
().
eq
(
CbSubject:
:
getCbSubjectName
,
entry
.
getKey
())).
getSort
());
oneMap
.
put
(
"sort"
,
cbSubjectMapper
.
selectOne
(
Wrappers
.<
CbSubject
>
lambdaQuery
().
eq
(
CbSubject:
:
getCbSubjectName
,
entry
.
getKey
())).
getSort
());
for
(
Map
.
Entry
<
String
,
Map
<
String
,
List
<
Map
<
String
,
Object
>>>>
twoEntry
:
entry
.
getValue
().
entrySet
())
{
for
(
Map
.
Entry
<
String
,
Map
<
String
,
List
<
Map
<
String
,
Object
>>>>
twoEntry
:
entry
.
getValue
().
entrySet
())
{
Map
<
String
,
Object
>
twoMap
=
new
HashMap
<>();
Map
<
String
,
Object
>
twoMap
=
new
HashMap
<>();
List
<
Map
<
String
,
Object
>>
twoList
=
new
ArrayList
<>();
List
<
Map
<
String
,
Object
>>
twoList
=
new
ArrayList
<>();
...
@@ -106,11 +107,13 @@ public class CbQuantitySummaryServiceImpl extends ServiceImpl<CbQuantitySummaryM
...
@@ -106,11 +107,13 @@ public class CbQuantitySummaryServiceImpl extends ServiceImpl<CbQuantitySummaryM
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateActual
(
List
<
CbQuantitySummaryActual
>
list
)
{
public
void
updateActual
(
List
<
CbQuantitySummaryActual
>
list
)
{
if
(
ObjectUtils
.
isEmpty
(
list
))
throw
new
BeanException
(
"数据不能为空"
);
if
(
ObjectUtils
.
isEmpty
(
list
))
throw
new
BeanException
(
"数据不能为空"
);
String
nickName
=
LoginHelper
.
getLoginUser
().
getNickname
();
for
(
CbQuantitySummaryActual
actual
:
list
)
{
for
(
CbQuantitySummaryActual
actual
:
list
)
{
if
(
ObjectUtils
.
isEmpty
(
actual
.
getCbQuantitySummaryId
()))
throw
new
BeanException
(
"基础数据id不能为空!"
);
if
(
ObjectUtils
.
isEmpty
(
actual
.
getCbQuantitySummaryId
()))
throw
new
BeanException
(
"基础数据id不能为空!"
);
if
(
ObjectUtils
.
isEmpty
(
actual
.
getQuantities
()))
throw
new
BeanException
(
"工程量(本月用料)不能为空!"
);
if
(
ObjectUtils
.
isEmpty
(
actual
.
getQuantities
()))
throw
new
BeanException
(
"工程量(本月用料)不能为空!"
);
if
(
ObjectUtils
.
isEmpty
(
actual
.
getRecordDate
()))
throw
new
BeanException
(
"填写月份不能为空!"
);
if
(
ObjectUtils
.
isEmpty
(
actual
.
getRecordDate
()))
throw
new
BeanException
(
"填写月份不能为空!"
);
actual
.
setId
(
ObjectUtils
.
isEmpty
(
actual
.
getId
())
?
SecureUtil
.
md5
(
actual
.
getCbQuantitySummaryId
()
+
actual
.
getRecordDate
())
:
actual
.
getId
());
actual
.
setId
(
ObjectUtils
.
isEmpty
(
actual
.
getId
())
?
SecureUtil
.
md5
(
actual
.
getCbQuantitySummaryId
()
+
actual
.
getRecordDate
())
:
actual
.
getId
());
actual
.
setUpdateBy
(
nickName
);
boolean
b
=
baseActualService
.
saveOrUpdate
(
actual
);
boolean
b
=
baseActualService
.
saveOrUpdate
(
actual
);
if
(!
b
)
{
if
(!
b
)
{
log
.
error
(
"CbQuantitySummaryServiceImpl.updateActual() data insert error! data:"
+
JSONUtil
.
toJsonStr
(
actual
));
log
.
error
(
"CbQuantitySummaryServiceImpl.updateActual() data insert error! data:"
+
JSONUtil
.
toJsonStr
(
actual
));
...
...
dsk-module/dsk-biz-api/src/main/resources/mapper/cscec/CbProjectOtherMapper.xml
0 → 100644
View file @
0a8d6205
<?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