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
ccc6e248
Commit
ccc6e248
authored
Feb 21, 2024
by
施翔轲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
项目台账相关
parent
3a296509
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
345 additions
and
69 deletions
+345
-69
CbProjectConstants.java
.../main/java/com/dsk/cscec/constant/CbProjectConstants.java
+4
-0
CbProjectFileController.java
...ava/com/dsk/cscec/controller/CbProjectFileController.java
+3
-1
CbProjectRecordController.java
...a/com/dsk/cscec/controller/CbProjectRecordController.java
+30
-11
CbProjectFile.java
...api/src/main/java/com/dsk/cscec/domain/CbProjectFile.java
+1
-1
CbProjectHistorySearchBo.java
...ava/com/dsk/cscec/domain/bo/CbProjectHistorySearchBo.java
+32
-0
ProjectRecordSearchVo.java
...n/java/com/dsk/cscec/domain/vo/ProjectRecordSearchVo.java
+11
-16
CbProjectRecordMapper.java
...main/java/com/dsk/cscec/mapper/CbProjectRecordMapper.java
+13
-1
CbProjectFileService.java
...main/java/com/dsk/cscec/service/CbProjectFileService.java
+10
-4
CbProjectRecordService.java
...in/java/com/dsk/cscec/service/CbProjectRecordService.java
+28
-6
CbProjectFileServiceImpl.java
.../com/dsk/cscec/service/impl/CbProjectFileServiceImpl.java
+50
-8
CbProjectRecordServiceImpl.java
...om/dsk/cscec/service/impl/CbProjectRecordServiceImpl.java
+123
-16
CbProjectFileMapper.xml
...i/src/main/resources/mapper/cscec/CbProjectFileMapper.xml
+1
-3
CbProjectRecordMapper.xml
...src/main/resources/mapper/cscec/CbProjectRecordMapper.xml
+39
-2
No files found.
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/constant/CbProjectConstants.java
View file @
ccc6e248
...
...
@@ -40,6 +40,10 @@ public interface CbProjectConstants {
* 删除状态:未删除
*/
Integer
DELETE_FLAG_EXIST
=
0
;
/**
* 删除状态:待删除
*/
Integer
DELETE_FLAG_WAIT_DELETE
=
1
;
/**
* 删除状态:已删除
*/
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/controller/CbProjectFileController.java
View file @
ccc6e248
...
...
@@ -49,6 +49,8 @@ public class CbProjectFileController extends BaseController {
public
R
<
Map
<
String
,
String
>>
uploadCbProjectFile
(
@Validated
@ModelAttribute
AddProjectFileUploadBo
fileUploadBo
)
throws
UnsupportedEncodingException
{
MultipartFile
file
=
fileUploadBo
.
getFile
();
Assert
.
notNull
(
file
,
"上传文件不能为空"
);
//校验同一成本类型下是否存在相同文件
baseService
.
checkProjectFileExist
(
fileUploadBo
);
SysOssVo
oss
=
iSysOssService
.
upload
(
file
);
//添加项目上传文件记录
CbProjectFile
cbProjectFile
;
...
...
@@ -72,7 +74,7 @@ public class CbProjectFileController extends BaseController {
*/
@DeleteMapping
(
"/deleteCbProjectFile/{fileId}"
)
public
R
<
Void
>
deleteCbProjectFile
(
@NotNull
(
message
=
"文件ID不能为空"
)
@PathVariable
Long
fileId
)
{
return
toAjax
(
baseService
.
deleteProjectFile
(
fileId
));
return
toAjax
(
baseService
.
deleteProjectFile
(
new
Long
[]{
fileId
}
));
}
/**
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/controller/CbProjectRecordController.java
View file @
ccc6e248
...
...
@@ -6,10 +6,7 @@ import com.dsk.common.core.domain.PageQuery;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.cscec.domain.CbProjectRecord
;
import
com.dsk.cscec.domain.bo.AddCbProjectBo
;
import
com.dsk.cscec.domain.bo.AddNewCbProjectBo
;
import
com.dsk.cscec.domain.bo.CbProjectSearchBo
;
import
com.dsk.cscec.domain.bo.EditProjectInfoBo
;
import
com.dsk.cscec.domain.bo.*
;
import
com.dsk.cscec.domain.vo.ProjectRecordSearchVo
;
import
com.dsk.cscec.service.CbProjectRecordService
;
import
com.dsk.cscec.service.IDProjectService
;
...
...
@@ -19,6 +16,7 @@ import org.springframework.web.bind.annotation.*;
import
javax.annotation.Resource
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.util.Arrays
;
import
java.util.List
;
/**
...
...
@@ -69,10 +67,18 @@ public class CbProjectRecordController extends BaseController {
* 获取项目台账列表
*/
@GetMapping
(
"/getProjectList"
)
public
TableDataInfo
<
ProjectRecordSearchVo
>
getProjectList
(
CbProjectSearchBo
searchBo
,
PageQuery
pageQuery
)
{
public
TableDataInfo
<
ProjectRecordSearchVo
>
getProjectList
(
@RequestBody
CbProjectSearchBo
searchBo
,
PageQuery
pageQuery
)
{
return
baseService
.
getProjectList
(
searchBo
,
pageQuery
);
}
/**
* 获取项目历史阶段信息(懒加载)
*/
@GetMapping
(
"/getProjectHistoryInfo"
)
public
R
<
List
<
CbProjectRecord
>>
getProjectHistoryInfo
(
@RequestBody
CbProjectHistorySearchBo
searchBo
)
{
return
R
.
ok
(
baseService
.
getProjectHistoryInfo
(
searchBo
));
}
/**
* 修改项目信息
*/
...
...
@@ -97,16 +103,29 @@ public class CbProjectRecordController extends BaseController {
return
R
.
ok
(
baseService
.
addNewStageProject
(
newProjectBo
));
}
/**
* 查询当前项目可删除成本阶段
* 即查询当前项目非草稿的成本阶段
*/
@GetMapping
(
"/getProjectCbStageNotDraft/{relatedId}"
)
public
R
<
List
<
Integer
>>
getProjectCbStageNotDraft
(
@PathVariable
Long
relatedId
)
{
return
R
.
ok
(
baseService
.
getProjectCbStageNotDraft
(
relatedId
));
}
/**
* 批量删除项目
*/
@DeleteMapping
(
"/batchDeleteProject/{projectIds}"
)
public
R
<
Void
>
batchDeleteProject
(
@NotNull
(
message
=
"项目ID不能为空"
)
@PathVariable
Long
[]
projectIds
)
{
return
toAjax
(
baseService
.
batchDeleteProject
(
Arrays
.
asList
(
projectIds
)));
}
/**
* 获取草稿弹窗列表
*/
@GetMapping
(
"/getDraftDialogList"
)
public
R
<
List
<
CbProjectRecord
>>
getDraftDialogList
()
{
List
<
CbProjectRecord
>
draftList
=
baseService
.
getDraftDialogList
();
if
(
draftList
.
isEmpty
())
{
return
R
.
ok
(
"暂无草稿记录"
);
}
return
R
.
ok
(
draftList
);
public
TableDataInfo
<
CbProjectRecord
>
getDraftDialogList
(
PageQuery
pageQuery
)
{
return
baseService
.
getDraftDialogList
(
pageQuery
);
}
/**
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/CbProjectFile.java
View file @
ccc6e248
...
...
@@ -48,7 +48,7 @@ public class CbProjectFile extends BaseEntity implements Serializable {
*/
private
String
fileOssUrl
;
/**
* 项目文件状态(0:
待解析
、1:解析中、2:解析成功、3:解析失败)
* 项目文件状态(0:
准备中
、1:解析中、2:解析成功、3:解析失败)
*/
private
Integer
fileParseStatus
;
/**
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/CbProjectHistorySearchBo.java
0 → 100644
View file @
ccc6e248
package
com
.
dsk
.
cscec
.
domain
.
bo
;
import
lombok.Data
;
/**
* @author sxk
* @date 2024.02.18
* @time 15:04
*/
@Data
public
class
CbProjectHistorySearchBo
{
/**
* 项目ID
*/
private
Long
projectId
;
/**
* 项目名称
*/
private
String
projectName
;
/**
* IPM项目编码
*/
private
String
ipmProjectNo
;
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/
private
Integer
cbStage
;
/**
* 项目文件状态(1:解析中、2:解析成功、3:解析失败)
*/
private
Integer
projectFileStatus
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/vo/ProjectRecordSearchVo.java
View file @
ccc6e248
package
com
.
dsk
.
cscec
.
domain
.
vo
;
import
com.dsk.cscec.domain.CbProjectRecord
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.util.
List
;
import
java.util.
Date
;
/**
* @author sxk
* @date 2024.02.18
* @time 15:08
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
ProjectRecordSearchVo
{
public
class
ProjectRecordSearchVo
extends
CbProjectRecord
{
/**
*
项目ID
*
更新者
*/
private
Long
id
;
private
String
updateBy
;
/**
*
项目名称
*
更新时间
*/
private
String
projectNa
me
;
private
Date
updateTi
me
;
/**
*
IPM项目编码
*
是否有子集
*/
private
String
ipmProjectNo
;
/**
* 文件名称
*/
private
String
projectFileName
;
/**
* 项目数据
*/
private
List
<
ProjectRecordDataVo
>
dataVoList
;
private
Boolean
hasChildren
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/mapper/CbProjectRecordMapper.java
View file @
ccc6e248
...
...
@@ -2,9 +2,13 @@ package com.dsk.cscec.mapper;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Constants
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.dsk.cscec.domain.CbProjectRecord
;
import
com.dsk.cscec.domain.bo.CbProjectSearchBo
;
import
com.dsk.cscec.domain.vo.ProjectRecordSearchVo
;
import
org.apache.ibatis.annotations.Param
;
/**
* 项目台账表(CbProjectRecord)表数据库访问层
...
...
@@ -16,7 +20,15 @@ public interface CbProjectRecordMapper extends BaseMapper<CbProjectRecord> {
/**
* 获取项目台账列表
*/
Page
<
ProjectRecordSearchVo
>
selectPageProjectRecordList
(
Page
<
ProjectRecordSearchVo
>
build
,
QueryWrapper
<
CbProjectRecord
>
wrapper
);
Page
<
ProjectRecordSearchVo
>
selectPageProjectRecordList
(
IPage
<
CbProjectSearchBo
>
build
,
@Param
(
"searchBo"
)
CbProjectSearchBo
searchBo
,
@Param
(
"deleteFlagExist"
)
Integer
deleteFlagExist
,
@Param
(
"projectFileStatusPreparing"
)
Integer
projectFileStatusPreparing
);
/**
* 获取草稿弹窗列表
*/
Page
<
CbProjectRecord
>
selectPageDraftDialogList
(
@Param
(
"page"
)
Page
<
CbProjectRecord
>
page
,
@Param
(
Constants
.
WRAPPER
)
QueryWrapper
<
CbProjectRecord
>
wrapper
);
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/CbProjectFileService.java
View file @
ccc6e248
...
...
@@ -13,6 +13,13 @@ import com.dsk.system.domain.vo.SysOssVo;
* @since 2024-02-05 14:01:06
*/
public
interface
CbProjectFileService
extends
IService
<
CbProjectFile
>
{
/**
* 校验同一成本类型下是否存在相同文件
*
* @param fileUploadBo 上传信息
*/
Boolean
checkProjectFileExist
(
AddProjectFileUploadBo
fileUploadBo
);
/**
* 添加项目上传文件记录
*
...
...
@@ -23,12 +30,12 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
CbProjectFile
addProjectFile
(
AddProjectFileUploadBo
fileUploadBo
,
SysOssVo
oss
);
/**
* 逻辑删除项目上传文件记录
*
批量
逻辑删除项目上传文件记录
*
* @param fileId 文件ID
* @param fileId
s
文件ID
* @return 删除结果
*/
Integer
deleteProjectFile
(
Long
fileId
);
Integer
deleteProjectFile
(
Long
[]
fileIds
);
/**
* 获取项目文件上传详情
...
...
@@ -37,5 +44,4 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
* @return 文件列表
*/
QueryProjectFileUploadDetailVo
getProjectFileUploadDetail
(
Long
projectId
);
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/CbProjectRecordService.java
View file @
ccc6e248
...
...
@@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import
com.dsk.common.core.domain.PageQuery
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.cscec.domain.CbProjectRecord
;
import
com.dsk.cscec.domain.bo.AddCbProjectBo
;
import
com.dsk.cscec.domain.bo.AddNewCbProjectBo
;
import
com.dsk.cscec.domain.bo.CbProjectSearchBo
;
import
com.dsk.cscec.domain.bo.EditProjectInfoBo
;
import
com.dsk.cscec.domain.bo.*
;
import
com.dsk.cscec.domain.vo.ProjectRecordSearchVo
;
import
java.util.List
;
...
...
@@ -43,6 +40,14 @@ public interface CbProjectRecordService extends IService<CbProjectRecord> {
*/
TableDataInfo
<
ProjectRecordSearchVo
>
getProjectList
(
CbProjectSearchBo
searchBo
,
PageQuery
pageQuery
);
/**
* 获取项目历史阶段信息(懒加载)
*
* @param searchBo 查询条件
* @return 历史阶段信息
*/
List
<
CbProjectRecord
>
getProjectHistoryInfo
(
CbProjectHistorySearchBo
searchBo
);
/**
* 修改项目信息
*
...
...
@@ -67,12 +72,29 @@ public interface CbProjectRecordService extends IService<CbProjectRecord> {
*/
CbProjectRecord
addNewStageProject
(
AddNewCbProjectBo
newProjectBo
);
/**
* 查询当前项目非草稿的成本阶段
*
* @param relatedId 关联ID
* @return 已有数据的成本阶段
*/
List
<
Integer
>
getProjectCbStageNotDraft
(
Long
relatedId
);
/**
* 批量删除项目
*
* @param projectIds 项目ID
* @return 删除结果
*/
Integer
batchDeleteProject
(
List
<
Long
>
projectIds
);
/**
* 获取草稿弹窗列表
*
* @return 草稿弹窗列表
* @param pageQuery 分页对象
* @return 分页数据
*/
List
<
CbProjectRecord
>
getDraftDialogList
(
);
TableDataInfo
<
CbProjectRecord
>
getDraftDialogList
(
PageQuery
pageQuery
);
/**
* 删除草稿
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbProjectFileServiceImpl.java
View file @
ccc6e248
...
...
@@ -2,7 +2,9 @@ package com.dsk.cscec.service.impl;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.lang.Assert
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.dsk.cscec.constant.CbProjectConstants
;
import
com.dsk.cscec.domain.CbProjectFile
;
...
...
@@ -17,6 +19,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -32,13 +35,34 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
private
CbProjectFileMapper
baseMapper
;
@Resource
private
CbProjectRecordMapper
projectRecordMapper
;
@Resource
private
CbProjectFileMapper
projectFileMapper
;
/**
* 校验同一成本类型下是否存在相同文件
*
* @param fileUploadBo 上传信息
*/
@Override
public
Boolean
checkProjectFileExist
(
AddProjectFileUploadBo
fileUploadBo
)
{
String
filename
=
fileUploadBo
.
getFile
().
getOriginalFilename
();
assert
filename
!=
null
;
projectFileMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbProjectFile
>()
.
eq
(
CbProjectFile:
:
getProjectId
,
fileUploadBo
.
getProjectId
())
.
eq
(
CbProjectFile:
:
getCbType
,
fileUploadBo
.
getCbType
())).
forEach
(
projectFile
->
{
//仅对比文件名,不考虑文件格式
Assert
.
isFalse
(
projectFile
.
getFileName
().
substring
(
0
,
projectFile
.
getFileName
().
lastIndexOf
(
"."
)).
equals
(
filename
.
substring
(
0
,
filename
.
lastIndexOf
(
"."
)))
,
"当前成本类型下存在同名文件,请重新上传"
);
});
return
true
;
}
/**
* 添加项目上传文件记录
*
* @param fileUploadBo 上传信息
* @param oss oss信息
* @return
* @return
文件记录
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -58,16 +82,34 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
}
/**
* 逻辑删除项目上传文件记录
*
批量
逻辑删除项目上传文件记录
*
* @param fileId 文件ID
* @param fileId
s
文件ID
* @return 删除结果
*/
@Override
public
Integer
deleteProjectFile
(
Long
fileId
)
{
CbProjectFile
projectFile
=
baseMapper
.
selectById
(
fileId
);
Assert
.
notNull
(
projectFile
,
"该文件不存在"
);
return
baseMapper
.
deleteById
(
projectFile
);
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Integer
deleteProjectFile
(
Long
[]
fileIds
)
{
int
flag
=
0
;
//查询待删除文件
List
<
CbProjectFile
>
fileList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbProjectFile
>()
.
in
(
ObjectUtil
.
isNotNull
(
fileIds
),
CbProjectFile:
:
getId
,
Arrays
.
asList
(
fileIds
)));
for
(
CbProjectFile
file
:
fileList
)
{
//不允许删除解析中的文件
Integer
fileParseStatus
=
file
.
getFileParseStatus
();
Assert
.
isFalse
(
fileParseStatus
.
equals
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSING
),
"文件正在解析中,不允许删除"
);
//准备中、的文件设为已删除,否则设为待删除
//设为待删除是为了方便各个成本类型删除数据
if
(
fileParseStatus
.
equals
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PREPARING
))
{
flag
=
baseMapper
.
deleteById
(
file
);
}
else
{
flag
=
baseMapper
.
update
(
null
,
new
UpdateWrapper
<
CbProjectFile
>()
.
set
(
"del_flag"
,
CbProjectConstants
.
DELETE_FLAG_WAIT_DELETE
)
.
eq
(
"id"
,
file
.
getId
()));
}
}
return
flag
;
}
/**
...
...
@@ -91,7 +133,7 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
QueryProjectFileUploadDetailVo
draftDetailVo
=
new
QueryProjectFileUploadDetailVo
();
draftDetailVo
.
setProjectId
(
projectId
);
if
(
projectFileList
.
isEmpty
())
{
return
draftDetailVo
;
return
null
;
}
//按照成本类型分类填充
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbProjectRecordServiceImpl.java
View file @
ccc6e248
...
...
@@ -3,6 +3,7 @@ package com.dsk.cscec.service.impl;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.lang.Assert
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
...
...
@@ -140,23 +141,67 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
*/
@Override
public
TableDataInfo
<
ProjectRecordSearchVo
>
getProjectList
(
CbProjectSearchBo
searchBo
,
PageQuery
pageQuery
)
{
QueryWrapper
<
CbProjectRecord
>
wrapper
=
Wrappers
.
query
();
wrapper
.
like
(
StringUtils
.
isNotBlank
(
searchBo
.
getProjectName
()),
"project_name"
,
searchBo
.
getProjectName
())
.
like
(
StringUtils
.
isNotBlank
(
searchBo
.
getIpmProjectNo
()),
"ipm_project_no"
,
searchBo
.
getIpmProjectNo
());
//TODO:成本阶段、文件解析状态筛选
Integer
cbStage
=
searchBo
.
getCbStage
();
Integer
projectFileStatus
=
searchBo
.
getProjectFileStatus
();
Page
<
ProjectRecordSearchVo
>
page
=
baseMapper
.
selectPageProjectRecordList
(
pageQuery
.
build
(),
searchBo
,
CbProjectConstants
.
DELETE_FLAG_EXIST
,
CbProjectConstants
.
PROJECT_FILE_STATUS_PREPARING
);
Page
<
ProjectRecordSearchVo
>
page
=
baseMapper
.
selectPageProjectRecordList
(
pageQuery
.
build
(),
wrapper
);
for
(
ProjectRecordSearchVo
searchVo
:
page
.
getRecords
())
{
Long
projectId
=
searchVo
.
getId
();
//page.
//判断是否有历史阶段
searchVo
.
setHasChildren
(
baseMapper
.
selectCount
(
new
LambdaQueryWrapper
<
CbProjectRecord
>()
.
eq
(
CbProjectRecord:
:
getRelatedId
,
searchVo
.
getRelatedId
()))
>
1
);
//关键字标红
if
(
StringUtils
.
isNotBlank
(
searchBo
.
getProjectName
()))
{
searchVo
.
setProjectName
(
StringUtils
.
markInRed
(
searchVo
.
getProjectName
(),
searchBo
.
getProjectName
()));
}
//补充更新时间、更新人
CbProjectFile
projectFile
=
projectFileMapper
.
selectOne
(
new
LambdaQueryWrapper
<
CbProjectFile
>()
.
eq
(
CbProjectFile:
:
getProjectId
,
searchVo
.
getId
())
.
orderByDesc
(
CbProjectFile:
:
getUpdateTime
)
.
last
(
"LIMIT 1"
));
searchVo
.
setUpdateBy
(
projectFile
.
getUpdateBy
());
searchVo
.
setUpdateTime
(
projectFile
.
getUpdateTime
());
}
return
TableDataInfo
.
build
(
page
);
}
/**
* 获取项目历史阶段信息(懒加载)
*
* @param searchBo 查询条件
* @return 历史阶段信息
*/
@Override
public
List
<
CbProjectRecord
>
getProjectHistoryInfo
(
CbProjectHistorySearchBo
searchBo
)
{
//校验项目是否存在
CbProjectRecord
projectRecord
=
this
.
checkProjectExist
(
searchBo
.
getProjectId
());
//查询所有历史阶段项目(不含准备中的项目)
List
<
CbProjectRecord
>
projectRecordList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbProjectRecord
>()
.
eq
(
CbProjectRecord:
:
getRelatedId
,
projectRecord
.
getRelatedId
())
.
ne
(
CbProjectRecord:
:
getId
,
projectRecord
.
getId
())
.
ne
(
CbProjectRecord:
:
getProjectFileStatus
,
CbProjectConstants
.
PROJECT_FILE_STATUS_PREPARING
)
.
like
(
StringUtils
.
isNotBlank
(
searchBo
.
getProjectName
()),
CbProjectRecord:
:
getProjectName
,
searchBo
.
getProjectName
())
.
eq
(
StringUtils
.
isNotBlank
(
searchBo
.
getIpmProjectNo
()),
CbProjectRecord:
:
getIpmProjectNo
,
searchBo
.
getIpmProjectNo
())
.
eq
(
ObjectUtil
.
isNotNull
(
searchBo
.
getCbStage
()),
CbProjectRecord:
:
getCbStage
,
searchBo
.
getCbStage
())
.
eq
(
ObjectUtil
.
isNotNull
(
searchBo
.
getProjectFileStatus
()),
CbProjectRecord:
:
getProjectFileStatus
,
searchBo
.
getProjectFileStatus
()));
projectRecordList
.
forEach
(
record
->
{
//关键字标红
if
(
StringUtils
.
isNotBlank
(
searchBo
.
getProjectName
()))
{
record
.
setProjectName
(
StringUtils
.
markInRed
(
record
.
getProjectFileName
(),
searchBo
.
getProjectName
()));
}
//补充更新时间、更新人
CbProjectFile
projectFile
=
projectFileMapper
.
selectOne
(
new
LambdaQueryWrapper
<
CbProjectFile
>()
.
eq
(
CbProjectFile:
:
getProjectId
,
record
.
getId
())
.
orderByDesc
(
CbProjectFile:
:
getUpdateTime
)
.
last
(
"LIMIT 1"
));
record
.
setUpdateBy
(
projectFile
.
getUpdateBy
());
record
.
setUpdateTime
(
projectFile
.
getUpdateTime
());
});
return
projectRecordList
;
}
/**
* 修改项目信息
*
...
...
@@ -233,13 +278,70 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
return
null
;
}
/**
* 查询当前项目非草稿的成本阶段
*
* @param relatedId 关联ID
* @return 已有数据的成本阶段
*/
@Override
public
List
<
Integer
>
getProjectCbStageNotDraft
(
Long
relatedId
)
{
//通过关联ID校验项目是否存在
List
<
CbProjectRecord
>
projectRecordList
=
this
.
checkRelatedIdExist
(
relatedId
);
ArrayList
<
Integer
>
cbStageList
=
new
ArrayList
<>();
projectRecordList
.
forEach
(
projectRecord
->
{
//文件状态为解析成功or解析失败即为有数据
if
(!
projectRecord
.
getProjectFileStatus
().
equals
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PREPARING
)
&&
!
projectRecord
.
getProjectFileStatus
().
equals
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSING
)
&&
projectFileMapper
.
exists
(
new
LambdaQueryWrapper
<
CbProjectFile
>()
.
eq
(
CbProjectFile:
:
getProjectId
,
projectRecord
.
getId
())
.
eq
(
CbProjectFile:
:
getFileParseStatus
,
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSE_SUCCESS
)
.
or
()
.
eq
(
CbProjectFile:
:
getFileParseStatus
,
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSE_FAIL
)))
{
cbStageList
.
add
(
projectRecord
.
getCbStage
());
}
});
return
cbStageList
;
}
/**
* 批量删除项目
*
* @param projectIds 项目ID
* @return 删除结果
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Integer
batchDeleteProject
(
List
<
Long
>
projectIds
)
{
int
flag
=
0
;
for
(
Long
projectId
:
projectIds
)
{
//校验项目是否存在
CbProjectRecord
projectRecord
=
this
.
checkProjectExist
(
projectId
);
//不允许删除正在解析中的项目
Assert
.
isFalse
(
projectRecord
.
getProjectFileStatus
().
equals
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PARSING
)
,
"存在解析中的项目,删除失败"
);
//TODO:各个成本类型数据和对应每月成本数据暂不做删除,项目台账列表查不出来自然也无法查看数据
//删除项目文件记录
flag
=
projectFileMapper
.
delete
(
new
LambdaQueryWrapper
<
CbProjectFile
>()
.
eq
(
CbProjectFile:
:
getProjectId
,
projectId
));
//删除项目记录
Assert
.
isTrue
(
flag
>
0
,
"操作异常,请联系管理员"
);
flag
=
baseMapper
.
deleteById
(
projectId
);
}
return
flag
;
}
/**
* 通过关联ID校验项目是否存在
*
* @return 该关联ID下的所有项目记录
*/
private
List
<
CbProjectRecord
>
checkRelatedIdExist
(
Long
relatedId
)
{
List
<
CbProjectRecord
>
projectRecordList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbProjectRecord
>().
eq
(
CbProjectRecord:
:
getRelatedId
,
relatedId
));
List
<
CbProjectRecord
>
projectRecordList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbProjectRecord
>()
.
eq
(
CbProjectRecord:
:
getRelatedId
,
relatedId
));
Assert
.
isFalse
(
projectRecordList
.
isEmpty
(),
"关联ID无效"
);
return
projectRecordList
;
}
...
...
@@ -247,12 +349,17 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
/**
* 获取草稿弹窗列表
*
* @return 草稿弹窗列表
* @param pageQuery 分页对象
* @return 分页数据
*/
@Override
public
List
<
CbProjectRecord
>
getDraftDialogList
()
{
return
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbProjectRecord
>()
.
eq
(
CbProjectRecord:
:
getProjectFileStatus
,
CbProjectConstants
.
PROJECT_FILE_STATUS_PREPARING
));
public
TableDataInfo
<
CbProjectRecord
>
getDraftDialogList
(
PageQuery
pageQuery
)
{
QueryWrapper
<
CbProjectRecord
>
wrapper
=
Wrappers
.
query
();
wrapper
.
eq
(
"project_file_status"
,
CbProjectConstants
.
PROJECT_FILE_STATUS_PREPARING
)
.
eq
(
"del_flag"
,
CbProjectConstants
.
DELETE_FLAG_EXIST
)
.
orderByDesc
(
"update_time"
);
return
TableDataInfo
.
build
(
baseMapper
.
selectPageDraftDialogList
(
pageQuery
.
build
(),
wrapper
));
}
/**
...
...
dsk-module/dsk-biz-api/src/main/resources/mapper/cscec/CbProjectFileMapper.xml
View file @
ccc6e248
<?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.CbProjectFileMapper"
>
</mapper>
</mapper>
\ No newline at end of file
dsk-module/dsk-biz-api/src/main/resources/mapper/cscec/CbProjectRecordMapper.xml
View file @
ccc6e248
...
...
@@ -3,10 +3,47 @@
<mapper
namespace=
"com.dsk.cscec.mapper.CbProjectRecordMapper"
>
<!--获取项目台账列表-->
<select
id=
"selectPageProjectRecordList"
resultType=
"com.dsk.cscec.domain.vo.ProjectRecordSearchVo"
>
select
cpr.id,
cpr.related_id,
cpr.project_name,
cpr.cb_stage,
cpr.project_file_status,
cpr.ipm_project_no,
cpr.is_get_project_detail,
cpr.project_file_name,
cpr.create_time
from cb_project_record cpr
left join cb_project_record cprr
on cpr.related_id = cprr.related_id
and cpr.cb_stage
<
cprr.cb_stage
where
cprr.cb_stage is null
and
cpr.del_flag=#{deleteFlagExist}
<if
test=
"searchBo.projectName != null and searchBo.projectName != ''"
>
and cpr.project_name like concat('%',#{searchBo.projectName},'%')
</if>
<if
test=
"searchBo.ipmProjectNo != null and searchBo.ipmProjectNo != ''"
>
and cpr.ipm_project_no = #{searchBo.ipmProjectNo}
</if>
<if
test=
"searchBo.cbStage != null"
>
and cpr.cb_stage = #{searchBo.cbStage}
</if>
<if
test=
"searchBo.projectFileStatus != null"
>
and project_file_status = #{searchBo.projectFileStatus}
</if>
and
cpr.project_file_status != #{projectFileStatusPreparing}
order by cpr.create_time desc
</select>
<!--获取草稿弹窗列表-->
<select
id=
"selectPageDraftDialogList"
resultType=
"com.dsk.cscec.domain.CbProjectRecord"
>
select cpr.id,
cpr.project_name,
cpr.
ipm_project_no
,
cpr.
project_file_na
me
cpr.
cb_stage
,
cpr.
update_ti
me
from cb_project_record cpr
${ew.getCustomSqlSegment};
</select>
...
...
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