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
43b5c405
Commit
43b5c405
authored
Feb 08, 2024
by
施翔轲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
项目台账文件导入列表:草稿、文件上传详情
parent
5ca3ac93
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
249 additions
and
58 deletions
+249
-58
CbProjectConstants.java
.../main/java/com/dsk/cscec/constant/CbProjectConstants.java
+1
-1
CbProjectFileController.java
...ava/com/dsk/cscec/controller/CbProjectFileController.java
+24
-11
AddProjectFileUploadBo.java
.../java/com/dsk/cscec/domain/bo/AddProjectFileUploadBo.java
+1
-1
QueryProjectFileUploadDetailBo.java
...m/dsk/cscec/domain/bo/QueryProjectFileUploadDetailBo.java
+24
-0
DraftDialogListVo.java
.../main/java/com/dsk/cscec/domain/vo/DraftDialogListVo.java
+30
-0
QueryProjectFileUploadDetailVo.java
...m/dsk/cscec/domain/vo/QueryProjectFileUploadDetailVo.java
+44
-0
CbProjectFileMapper.java
...c/main/java/com/dsk/cscec/mapper/CbProjectFileMapper.java
+10
-2
CbProjectFileService.java
...main/java/com/dsk/cscec/service/CbProjectFileService.java
+19
-10
CbProjectFileServiceImpl.java
.../com/dsk/cscec/service/impl/CbProjectFileServiceImpl.java
+84
-31
CbProjectFileMapper.xml
...i/src/main/resources/mapper/cscec/CbProjectFileMapper.xml
+12
-2
No files found.
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/constant/CbProjectConstants.java
View file @
43b5c405
...
...
@@ -77,6 +77,6 @@ public interface CbProjectConstants {
/**
* 成本类型:成本汇总
*/
Integer
CB_TYPE_
ACCOUNT_
SUMMARY
=
5
;
Integer
CB_TYPE_SUMMARY
=
5
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/controller/CbProjectFileController.java
View file @
43b5c405
...
...
@@ -6,9 +6,10 @@ import com.dsk.common.core.controller.BaseController;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.enums.BusinessType
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.bo.ProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.QueryCbProjectFileDetailBo
;
import
com.dsk.cscec.domain.bo.AddProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.QueryProjectFileUploadDetailBo
;
import
com.dsk.cscec.domain.vo.DraftDialogListVo
;
import
com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo
;
import
com.dsk.cscec.service.CbProjectFileService
;
import
com.dsk.system.domain.vo.SysOssVo
;
import
com.dsk.system.service.ISysOssService
;
...
...
@@ -47,7 +48,7 @@ public class CbProjectFileController extends BaseController {
*/
@Log
(
title
=
"项目台账上传OSS对象存储"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
(
value
=
"/uploadCbProjectFile"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
public
R
<
Map
<
String
,
String
>>
uploadCbProjectFile
(
@Validated
@ModelAttribute
ProjectFileUploadBo
fileUploadBo
)
throws
UnsupportedEncodingException
{
public
R
<
Map
<
String
,
String
>>
uploadCbProjectFile
(
@Validated
@ModelAttribute
Add
ProjectFileUploadBo
fileUploadBo
)
throws
UnsupportedEncodingException
{
MultipartFile
file
=
fileUploadBo
.
getFile
();
if
(
ObjectUtil
.
isNull
(
file
))
{
return
R
.
fail
(
"上传文件不能为空"
);
...
...
@@ -76,11 +77,23 @@ public class CbProjectFileController extends BaseController {
return
toAjax
(
baseService
.
deleteProjectFile
(
fileId
));
}
///**
// * 根据项目ID获取项目文件详情
// */
//@GetMapping("/getProjectFileDetail")
//public R<List<CbProjectFile>> getProjectFileDetail(@Validated @RequestBody QueryCbProjectFileDetailBo queryBo) {
// return R.ok(baseService.getProjectFileDetail(queryBo));
//}
/**
* 获取草稿弹窗列表
*/
@GetMapping
(
"/getDraftDialogList"
)
public
R
<
List
<
DraftDialogListVo
>>
getDraftDialogList
()
{
List
<
DraftDialogListVo
>
draftList
=
baseService
.
getDraftDialogList
();
if
(
draftList
.
isEmpty
())
{
return
R
.
ok
(
"暂无草稿记录"
);
}
return
R
.
ok
(
draftList
);
}
/**
* 获取项目文件上传详情
*/
@GetMapping
(
"/getProjectFileUploadDetail"
)
public
R
<
QueryProjectFileUploadDetailVo
>
getProjectFileUploadDetail
(
@Validated
@RequestBody
QueryProjectFileUploadDetailBo
uploadDetailBo
)
{
return
R
.
ok
(
baseService
.
getProjectFileUploadDetail
(
uploadDetailBo
));
}
}
\ No newline at end of file
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/ProjectFileUploadBo.java
→
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/
Add
ProjectFileUploadBo.java
View file @
43b5c405
...
...
@@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @time 16:07
*/
@Data
public
class
ProjectFileUploadBo
{
public
class
Add
ProjectFileUploadBo
{
private
MultipartFile
file
;
@NotNull
(
message
=
"项目ID不能为空"
)
private
Long
projectId
;
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/QueryProjectFileUploadDetailBo.java
0 → 100644
View file @
43b5c405
package
com
.
dsk
.
cscec
.
domain
.
bo
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
/**
* @author sxk
* @date 2024.02.06
* @time 14:17
*/
@Data
public
class
QueryProjectFileUploadDetailBo
{
/**
* 项目ID
*/
@NotNull
(
message
=
"项目ID不能为空"
)
private
Long
projectId
;
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/
@NotNull
(
message
=
"成本阶段不能为空"
)
private
Integer
cbStage
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/vo/DraftDialogListVo.java
0 → 100644
View file @
43b5c405
package
com
.
dsk
.
cscec
.
domain
.
vo
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author sxk
* @date 2024.02.07
* @time 16:28
*/
@Data
public
class
DraftDialogListVo
{
/**
* 项目ID
*/
private
Long
projectId
;
/**
* 项目名称
*/
private
String
projectName
;
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/
private
Integer
cbStage
;
/**
* 更新时间
*/
private
Date
updateTime
;
}
\ No newline at end of file
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/vo/QueryProjectFileUploadDetailVo.java
0 → 100644
View file @
43b5c405
package
com
.
dsk
.
cscec
.
domain
.
vo
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
lombok.Data
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author sxk
* @date 2024.02.08
* @time 10:24
*/
@Data
public
class
QueryProjectFileUploadDetailVo
{
/**
* 项目ID
*/
private
Long
projectId
;
/**
* 直接费成本
*/
private
List
<
CbProjectFile
>
directExpense
=
new
ArrayList
<>();
/**
* 工料汇总
*/
private
List
<
CbProjectFile
>
quantitySummary
=
new
ArrayList
<>();
/**
* 措施项目
*/
private
List
<
CbProjectFile
>
measureProject
=
new
ArrayList
<>();
/**
* 其他项目
*/
private
List
<
CbProjectFile
>
otherProject
=
new
ArrayList
<>();
/**
* 现场经费
*/
private
List
<
CbProjectFile
>
sceneExpense
=
new
ArrayList
<>();
/**
* 成本汇总
*/
private
List
<
CbProjectFile
>
cbSummary
=
new
ArrayList
<>();
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/mapper/CbProjectFileMapper.java
View file @
43b5c405
...
...
@@ -2,6 +2,10 @@ package com.dsk.cscec.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.vo.DraftDialogListVo
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* 项目成本文件表(CbProjectFile)表数据库访问层
...
...
@@ -10,7 +14,11 @@ import com.dsk.cscec.domain.CbProjectFile;
* @since 2024-02-05 14:01:03
*/
public
interface
CbProjectFileMapper
extends
BaseMapper
<
CbProjectFile
>
{
/**
* 获取草稿弹窗列表
*
* @return 草稿弹窗列表
*/
List
<
DraftDialogListVo
>
getDraftDialogList
(
@Param
(
"projectFileStatusWaitParse"
)
Integer
projectFileStatusWaitParse
,
@Param
(
"deleteFlagExist"
)
Integer
deleteFlagExist
);
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/CbProjectFileService.java
View file @
43b5c405
...
...
@@ -2,8 +2,10 @@ package com.dsk.cscec.service;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.bo.QueryCbProjectFileDetailBo
;
import
com.dsk.cscec.domain.bo.ProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.AddProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.QueryProjectFileUploadDetailBo
;
import
com.dsk.cscec.domain.vo.DraftDialogListVo
;
import
com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo
;
import
com.dsk.system.domain.vo.SysOssVo
;
import
java.util.List
;
...
...
@@ -21,7 +23,7 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
* @param fileUploadBo 上传信息
* @param oss oss信息
*/
void
addProjectFile
(
ProjectFileUploadBo
fileUploadBo
,
SysOssVo
oss
);
void
addProjectFile
(
Add
ProjectFileUploadBo
fileUploadBo
,
SysOssVo
oss
);
/**
* 逻辑删除项目上传文件记录
...
...
@@ -31,12 +33,19 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
*/
Integer
deleteProjectFile
(
Long
fileId
);
///**
// * 根据项目ID获取项目文件详情
// *
// * @param queryBo 查询体
// * @return 文件详情列表
// */
//List<CbProjectFile> getProjectFileDetail(QueryCbProjectFileDetailBo queryBo);
/**
* 获取草稿弹窗列表
*
* @return 草稿弹窗列表
*/
List
<
DraftDialogListVo
>
getDraftDialogList
();
/**
* 获取项目文件上传详情
*
* @param uploadDetailBo 查询信息
* @return 文件列表
*/
QueryProjectFileUploadDetailVo
getProjectFileUploadDetail
(
QueryProjectFileUploadDetailBo
uploadDetailBo
);
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbProjectFileServiceImpl.java
View file @
43b5c405
package
com
.
dsk
.
cscec
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.lang.Assert
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Assert
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.cscec.constant.CbProjectConstants
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.CbProjectRecord
;
import
com.dsk.cscec.domain.bo.QueryCbProjectFileDetailBo
;
import
com.dsk.cscec.domain.bo.ProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.AddProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.QueryProjectFileUploadDetailBo
;
import
com.dsk.cscec.domain.vo.DraftDialogListVo
;
import
com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo
;
import
com.dsk.cscec.mapper.CbProjectFileMapper
;
import
com.dsk.cscec.mapper.CbProjectRecordMapper
;
import
com.dsk.cscec.service.CbProjectFileService
;
...
...
@@ -19,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.Objects
;
/**
* 项目成本文件表(CbProjectFile)表服务实现类
...
...
@@ -41,19 +44,16 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
addProjectFile
(
ProjectFileUploadBo
fileUploadBo
,
SysOssVo
oss
)
{
public
void
addProjectFile
(
Add
ProjectFileUploadBo
fileUploadBo
,
SysOssVo
oss
)
{
//校验项目是否存在
if
(!
projectRecordMapper
.
exists
(
new
LambdaQueryWrapper
<
CbProjectRecord
>()
.
eq
(
CbProjectRecord:
:
getId
,
fileUploadBo
.
getProjectId
())
.
eq
(
CbProjectRecord:
:
getDelFlag
,
CbProjectConstants
.
DELETE_FLAG_EXIST
)))
{
throw
new
ServiceException
(
"项目ID无效,该项目不存在"
);
}
this
.
checkProjectExist
(
fileUploadBo
.
getProjectId
());
CbProjectFile
projectFile
=
BeanUtil
.
toBean
(
fileUploadBo
,
CbProjectFile
.
class
);
projectFile
.
setFileName
(
oss
.
getOriginalName
());
projectFile
.
setFileOssId
(
oss
.
getOssId
().
toString
());
projectFile
.
setFileOssUrl
(
oss
.
getUrl
());
//项目文件状态:解析中
projectFile
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_
PARSING
);
projectFile
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_
WAIT_PARSE
);
//删除状态:未删除
projectFile
.
setDelFlag
(
CbProjectConstants
.
DELETE_FLAG_EXIST
);
baseMapper
.
insert
(
projectFile
);
...
...
@@ -68,30 +68,83 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
@Override
public
Integer
deleteProjectFile
(
Long
fileId
)
{
CbProjectFile
projectFile
=
baseMapper
.
selectById
(
fileId
);
Assert
.
notNull
(
projectFile
,
"该文件不存在"
);
Assert
.
notNull
(
projectFile
,
"该文件不存在"
);
projectFile
.
setDelFlag
(
CbProjectConstants
.
DELETE_FLAG_NOT_EXIST
);
return
baseMapper
.
updateById
(
projectFile
);
}
///**
// * 根据项目ID获取项目文件详情
// *
// * @param queryBo 查询体
// * @return 文件详情列表
// */
//@Override
//public List<CbProjectFile> getProjectFileDetail(QueryCbProjectFileDetailBo queryBo) {
// return baseMapper.selectList(new LambdaQueryWrapper<CbProjectFile>()
// .eq(CbProjectFile::getProjectId, queryBo.getProjectId())
// .eq(CbProjectFile::getCbStage, queryBo.getCbStage())
// //成本类型:未确定,即创建项目后未上传任何文件
// .ne(CbProjectFile::getCbType, CbProjectConstants.CB_TYPE_NOT_CONFIRM)
// .eq(CbProjectFile::getDelFlag, CbProjectConstants.DELETE_FLAG_EXIST)
// //项目文件状态:未上传
// .eq(CbProjectFile::getFileParseStatus, CbProjectConstants.PROJECT_FILE_STATUS_NOT_UPLOAD)
// .or()
// //项目文件状态:待解析
// .eq(CbProjectFile::getFileParseStatus, CbProjectConstants.PROJECT_FILE_STATUS_WAIT_PARSE));
//}
/**
* 获取草稿弹窗列表
*
* @return 草稿弹窗列表
*/
@Override
public
List
<
DraftDialogListVo
>
getDraftDialogList
()
{
return
baseMapper
.
getDraftDialogList
(
CbProjectConstants
.
PROJECT_FILE_STATUS_WAIT_PARSE
,
CbProjectConstants
.
DELETE_FLAG_EXIST
);
}
/**
* 获取项目文件上传详情
*
* @param uploadDetailBo 查询信息
* @return 文件列表
*/
@Override
public
QueryProjectFileUploadDetailVo
getProjectFileUploadDetail
(
QueryProjectFileUploadDetailBo
uploadDetailBo
)
{
Long
projectId
=
uploadDetailBo
.
getProjectId
();
//校验项目是否存在
this
.
checkProjectExist
(
projectId
);
List
<
CbProjectFile
>
projectFileList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbProjectFile
>()
.
eq
(
CbProjectFile:
:
getProjectId
,
projectId
)
//成本阶段
.
eq
(
CbProjectFile:
:
getCbStage
,
uploadDetailBo
.
getCbStage
())
//删除状态:否
.
eq
(
CbProjectFile:
:
getDelFlag
,
CbProjectConstants
.
DELETE_FLAG_EXIST
));
QueryProjectFileUploadDetailVo
draftDetailVo
=
new
QueryProjectFileUploadDetailVo
();
draftDetailVo
.
setProjectId
(
projectId
);
if
(
projectFileList
.
isEmpty
())
{
return
draftDetailVo
;
}
//按照成本类型分类填充
projectFileList
.
forEach
(
fileList
->
{
//TODO:此写法太丑陋,待优化
if
(
Objects
.
equals
(
fileList
.
getCbType
(),
CbProjectConstants
.
CB_TYPE_DIRECT_EXPENSE
))
{
//直接费成本
draftDetailVo
.
getDirectExpense
().
add
(
fileList
);
}
else
if
(
Objects
.
equals
(
fileList
.
getCbType
(),
CbProjectConstants
.
CB_TYPE_QUANTITY_SUMMARY
))
{
//工料汇总
draftDetailVo
.
getQuantitySummary
().
add
(
fileList
);
}
else
if
(
Objects
.
equals
(
fileList
.
getCbType
(),
CbProjectConstants
.
CB_TYPE_MEASURE_PROJECT
))
{
//措施项目
draftDetailVo
.
getMeasureProject
().
add
(
fileList
);
}
else
if
(
Objects
.
equals
(
fileList
.
getCbType
(),
CbProjectConstants
.
CB_TYPE_OTHER_PROJECT
))
{
//其他项目
draftDetailVo
.
getOtherProject
().
add
(
fileList
);
}
else
if
(
Objects
.
equals
(
fileList
.
getCbType
(),
CbProjectConstants
.
CB_TYPE_SCENE_EXPENSE
))
{
//现场经费
draftDetailVo
.
getSceneExpense
().
add
(
fileList
);
}
else
if
(
Objects
.
equals
(
fileList
.
getCbType
(),
CbProjectConstants
.
CB_TYPE_SUMMARY
))
{
//成本汇总
draftDetailVo
.
getCbSummary
().
add
(
fileList
);
}
});
return
draftDetailVo
;
}
/**
* 校验项目是否存在
*
* @param projectId 项目ID
*/
private
void
checkProjectExist
(
Long
projectId
)
{
//校验项目是否存在
if
(!
projectRecordMapper
.
exists
(
new
LambdaQueryWrapper
<
CbProjectRecord
>()
.
eq
(
CbProjectRecord:
:
getId
,
projectId
)
.
eq
(
CbProjectRecord:
:
getDelFlag
,
CbProjectConstants
.
DELETE_FLAG_EXIST
)))
{
throw
new
ServiceException
(
"该项目不存在"
);
}
}
}
dsk-module/dsk-biz-api/src/main/resources/mapper/cscec/CbProjectFileMapper.xml
View file @
43b5c405
<?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"
>
<!--获取草稿弹窗列表-->
<select
id=
"getDraftDialogList"
resultType=
"com.dsk.cscec.domain.vo.DraftDialogListVo"
>
SELECT cpf.project_id,
cpr.project_name,
cpf.cb_stage,
max(cpf.update_time) as update_time
FROM cb_project_file cpf
left join cb_project_record cpr
on cpf.project_id = cpr.id
WHERE (file_parse_status = #{projectFileStatusWaitParse} AND cpf.del_flag = #{deleteFlagExist})
group by cpf.project_id, cpf.cb_stage
</select>
</mapper>
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