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
126e5ceb
Commit
126e5ceb
authored
Feb 20, 2024
by
chenyuefang
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/V20231129-中建一局二公司' into V20231129-中建一局二公司
parents
74d9ff7e
a3dec409
Changes
32
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
1519 additions
and
193 deletions
+1519
-193
CbGainLossAnalysisController.java
...om/dsk/cscec/controller/CbGainLossAnalysisController.java
+36
-0
CbProjectFileController.java
...ava/com/dsk/cscec/controller/CbProjectFileController.java
+9
-9
CbProjectRecordController.java
...a/com/dsk/cscec/controller/CbProjectRecordController.java
+39
-12
CbProjectFile.java
...api/src/main/java/com/dsk/cscec/domain/CbProjectFile.java
+2
-2
CbProjectRecord.java
...i/src/main/java/com/dsk/cscec/domain/CbProjectRecord.java
+6
-2
AddNewCbProjectBo.java
.../main/java/com/dsk/cscec/domain/bo/AddNewCbProjectBo.java
+8
-6
AddProjectFileUploadBo.java
.../java/com/dsk/cscec/domain/bo/AddProjectFileUploadBo.java
+9
-2
CbProjectSearchBo.java
.../main/java/com/dsk/cscec/domain/bo/CbProjectSearchBo.java
+28
-0
EditProjectInfoBo.java
.../main/java/com/dsk/cscec/domain/bo/EditProjectInfoBo.java
+0
-4
CbGainLossAnalysisListVo.java
...ava/com/dsk/cscec/domain/vo/CbGainLossAnalysisListVo.java
+107
-0
ProjectRecordDataVo.java
...ain/java/com/dsk/cscec/domain/vo/ProjectRecordDataVo.java
+30
-0
ProjectRecordSearchVo.java
...n/java/com/dsk/cscec/domain/vo/ProjectRecordSearchVo.java
+34
-0
CbProjectRecordMapper.java
...main/java/com/dsk/cscec/mapper/CbProjectRecordMapper.java
+7
-0
CbSummaryMapper.java
...i/src/main/java/com/dsk/cscec/mapper/CbSummaryMapper.java
+8
-0
CbProjectFileService.java
...main/java/com/dsk/cscec/service/CbProjectFileService.java
+4
-4
CbProjectRecordService.java
...in/java/com/dsk/cscec/service/CbProjectRecordService.java
+40
-3
ICbGainLossAnalysisService.java
...ava/com/dsk/cscec/service/ICbGainLossAnalysisService.java
+13
-0
CbGainLossAnalysisServiceImpl.java
...dsk/cscec/service/impl/CbGainLossAnalysisServiceImpl.java
+75
-0
CbProjectFileServiceImpl.java
.../com/dsk/cscec/service/impl/CbProjectFileServiceImpl.java
+14
-18
CbProjectRecordServiceImpl.java
...om/dsk/cscec/service/impl/CbProjectRecordServiceImpl.java
+178
-40
CbProjectRecordMapper.xml
...src/main/resources/mapper/cscec/CbProjectRecordMapper.xml
+9
-1
CbSummaryMapper.xml
...z-api/src/main/resources/mapper/cscec/CbSummaryMapper.xml
+26
-0
index.js
dsk-operate-ui/src/api/projectCostLedger/index.js
+23
-0
icon_tips_question.svg
dsk-operate-ui/src/assets/images/icon_tips_question.svg
+1
-0
icon_wrapper.png
dsk-operate-ui/src/assets/images/icon_wrapper.png
+0
-0
tips-plus.png
dsk-operate-ui/src/assets/images/tips-plus.png
+0
-0
index.vue
...projectCostLedger/detail/components/FeedSummary/index.vue
+3
-2
ProjectMenuItem.vue
...ger/detail/components/ProjectSideMenu/ProjectMenuItem.vue
+39
-18
index.vue
...ectCostLedger/detail/components/ProjectSideMenu/index.vue
+71
-20
index.vue
dsk-operate-ui/src/views/projectCostLedger/index.vue
+250
-50
index.vue
dsk-operate-ui/src/views/projectCostLedger/upload/index.vue
+449
-0
SysOssServiceImpl.java
...n/java/com/dsk/system/service/impl/SysOssServiceImpl.java
+1
-0
No files found.
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/controller/CbGainLossAnalysisController.java
0 → 100644
View file @
126e5ceb
package
com
.
dsk
.
cscec
.
controller
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.cscec.domain.bo.CbSummaryActualListBo
;
import
com.dsk.cscec.domain.vo.CbGainLossAnalysisListVo
;
import
com.dsk.cscec.service.ICbGainLossAnalysisService
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
/**
* 成本-盈亏分析对比
*
* @Author lcl
* @Data 2024/2/18 14:01
*/
@RestController
@RequiredArgsConstructor
@RequestMapping
(
"/cb/gain/loss/analysis"
)
public
class
CbGainLossAnalysisController
extends
BaseController
{
private
final
ICbGainLossAnalysisService
baseService
;
/**
* 数据列表
*/
@GetMapping
(
"/list"
)
public
R
<
List
<
CbGainLossAnalysisListVo
>>
getList
(
CbSummaryActualListBo
bo
)
{
return
R
.
ok
(
baseService
.
getList
(
bo
));
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/controller/CbProjectFileController.java
View file @
126e5ceb
package
com
.
dsk
.
cscec
.
controller
;
package
com
.
dsk
.
cscec
.
controller
;
import
cn.hutool.core.
util.ObjectUtil
;
import
cn.hutool.core.
lang.Assert
;
import
com.dsk.common.annotation.Log
;
import
com.dsk.common.annotation.Log
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.enums.BusinessType
;
import
com.dsk.common.enums.BusinessType
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.bo.AddProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.AddProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.QueryProjectFileUploadDetailBo
;
import
com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo
;
import
com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo
;
import
com.dsk.cscec.service.CbProjectFileService
;
import
com.dsk.cscec.service.CbProjectFileService
;
import
com.dsk.system.domain.vo.SysOssVo
;
import
com.dsk.system.domain.vo.SysOssVo
;
...
@@ -48,19 +48,19 @@ public class CbProjectFileController extends BaseController {
...
@@ -48,19 +48,19 @@ public class CbProjectFileController extends BaseController {
@PostMapping
(
value
=
"/uploadCbProjectFile"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
@PostMapping
(
value
=
"/uploadCbProjectFile"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
public
R
<
Map
<
String
,
String
>>
uploadCbProjectFile
(
@Validated
@ModelAttribute
AddProjectFileUploadBo
fileUploadBo
)
throws
UnsupportedEncodingException
{
public
R
<
Map
<
String
,
String
>>
uploadCbProjectFile
(
@Validated
@ModelAttribute
AddProjectFileUploadBo
fileUploadBo
)
throws
UnsupportedEncodingException
{
MultipartFile
file
=
fileUploadBo
.
getFile
();
MultipartFile
file
=
fileUploadBo
.
getFile
();
if
(
ObjectUtil
.
isNull
(
file
))
{
Assert
.
notNull
(
file
,
"上传文件不能为空"
);
return
R
.
fail
(
"上传文件不能为空"
);
}
SysOssVo
oss
=
iSysOssService
.
upload
(
file
);
SysOssVo
oss
=
iSysOssService
.
upload
(
file
);
//添加项目上传文件记录
//添加项目上传文件记录
CbProjectFile
cbProjectFile
;
try
{
try
{
baseService
.
addProjectFile
(
fileUploadBo
,
oss
);
cbProjectFile
=
baseService
.
addProjectFile
(
fileUploadBo
,
oss
);
}
catch
(
ServiceException
e
)
{
}
catch
(
ServiceException
e
)
{
//删除oss中的文件
//删除oss中的文件
iSysOssService
.
deleteWithValidByIds
(
Collections
.
singletonList
(
oss
.
getOssId
()),
true
);
iSysOssService
.
deleteWithValidByIds
(
Collections
.
singletonList
(
oss
.
getOssId
()),
true
);
throw
e
;
throw
e
;
}
}
Map
<
String
,
String
>
map
=
new
HashMap
<>(
2
);
Map
<
String
,
String
>
map
=
new
HashMap
<>(
2
);
map
.
put
(
"fileId"
,
cbProjectFile
.
getId
().
toString
());
map
.
put
(
"fileName"
,
oss
.
getOriginalName
());
map
.
put
(
"fileName"
,
oss
.
getOriginalName
());
map
.
put
(
"fileOssId"
,
oss
.
getOssId
().
toString
());
map
.
put
(
"fileOssId"
,
oss
.
getOssId
().
toString
());
map
.
put
(
"fileOssUrl"
,
oss
.
getUrl
());
map
.
put
(
"fileOssUrl"
,
oss
.
getUrl
());
...
@@ -78,8 +78,8 @@ public class CbProjectFileController extends BaseController {
...
@@ -78,8 +78,8 @@ public class CbProjectFileController extends BaseController {
/**
/**
* 获取项目文件上传详情
* 获取项目文件上传详情
*/
*/
@GetMapping
(
"/getProjectFileUploadDetail"
)
@GetMapping
(
"/getProjectFileUploadDetail
/{projectId}
"
)
public
R
<
QueryProjectFileUploadDetailVo
>
getProjectFileUploadDetail
(
@
Validated
@RequestBody
QueryProjectFileUploadDetailBo
uploadDetailBo
)
{
public
R
<
QueryProjectFileUploadDetailVo
>
getProjectFileUploadDetail
(
@
NotNull
(
message
=
"项目ID不能为空"
)
@PathVariable
Long
projectId
)
{
return
R
.
ok
(
baseService
.
getProjectFileUploadDetail
(
uploadDetailBo
));
return
R
.
ok
(
baseService
.
getProjectFileUploadDetail
(
projectId
));
}
}
}
}
\ No newline at end of file
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/controller/CbProjectRecordController.java
View file @
126e5ceb
...
@@ -2,11 +2,15 @@ package com.dsk.cscec.controller;
...
@@ -2,11 +2,15 @@ package com.dsk.cscec.controller;
import
cn.hutool.core.lang.Assert
;
import
cn.hutool.core.lang.Assert
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.domain.PageQuery
;
import
com.dsk.common.core.domain.R
;
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.CbProjectRecord
;
import
com.dsk.cscec.domain.bo.AddCbProjectBo
;
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.EditProjectInfoBo
;
import
com.dsk.cscec.domain.
bo.ImportCbProjectDataB
o
;
import
com.dsk.cscec.domain.
vo.ProjectRecordSearchV
o
;
import
com.dsk.cscec.service.CbProjectRecordService
;
import
com.dsk.cscec.service.CbProjectRecordService
;
import
com.dsk.cscec.service.IDProjectService
;
import
com.dsk.cscec.service.IDProjectService
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
...
@@ -14,6 +18,7 @@ import org.springframework.web.bind.annotation.*;
...
@@ -14,6 +18,7 @@ import org.springframework.web.bind.annotation.*;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -54,12 +59,20 @@ public class CbProjectRecordController extends BaseController {
...
@@ -54,12 +59,20 @@ public class CbProjectRecordController extends BaseController {
/**
/**
* 根据项目文件导入数据
* 根据项目文件导入数据
*/
*/
@PostMapping
(
"/importData"
)
@PostMapping
(
"/importData
/{projectId}
"
)
public
R
<
Void
>
importData
(
@
Validated
@RequestBody
ImportCbProjectDataBo
importDataBo
)
{
public
R
<
Void
>
importData
(
@
NotNull
(
message
=
"项目ID不能为空"
)
@PathVariable
Long
projectId
)
throws
Exception
{
baseService
.
importData
(
importDataBo
);
baseService
.
importData
(
projectId
);
return
R
.
ok
(
"已开始解析成本数据,过程需3~10分钟,稍后可到项目列表查看导入结果"
);
return
R
.
ok
(
"已开始解析成本数据,过程需3~10分钟,稍后可到项目列表查看导入结果"
);
}
}
/**
* 获取项目台账列表
*/
@GetMapping
(
"/getProjectList"
)
public
TableDataInfo
<
ProjectRecordSearchVo
>
getProjectList
(
CbProjectSearchBo
searchBo
,
PageQuery
pageQuery
)
{
return
baseService
.
getProjectList
(
searchBo
,
pageQuery
);
}
/**
/**
* 修改项目信息
* 修改项目信息
*/
*/
...
@@ -68,14 +81,21 @@ public class CbProjectRecordController extends BaseController {
...
@@ -68,14 +81,21 @@ public class CbProjectRecordController extends BaseController {
return
toAjax
(
baseService
.
editProjectInfo
(
editBo
));
return
toAjax
(
baseService
.
editProjectInfo
(
editBo
));
}
}
///**
/**
// * 获取项目台账列表
* 获取新阶段项目可选成本阶段
// */
*/
//@GetMapping("/getProjectList")
@GetMapping
(
"/getProjectAvailableCbStage/{relatedId}"
)
//public R<List<CbProjectRecord>> getProjectList() {
public
R
<
List
<
Integer
>>
getProjectAvailableCbStage
(
@NotNull
(
message
=
"关联ID不能为空"
)
@PathVariable
Long
relatedId
)
{
// List<CbProjectRecord> projectList = baseService.getProjectList();
return
R
.
ok
(
baseService
.
getProjectAvailableCbStage
(
relatedId
));
// return R.ok(projectList);
}
//}
/**
* 新增新阶段项目
*/
@PostMapping
(
"/addNewStageProject"
)
public
R
<
CbProjectRecord
>
addNewStageProject
(
@Validated
@RequestBody
AddNewCbProjectBo
newProjectBo
)
{
return
R
.
ok
(
baseService
.
addNewStageProject
(
newProjectBo
));
}
/**
/**
* 获取草稿弹窗列表
* 获取草稿弹窗列表
...
@@ -89,5 +109,12 @@ public class CbProjectRecordController extends BaseController {
...
@@ -89,5 +109,12 @@ public class CbProjectRecordController extends BaseController {
return
R
.
ok
(
draftList
);
return
R
.
ok
(
draftList
);
}
}
/**
* 删除草稿
*/
@DeleteMapping
(
"/deleteDraft/{projectId}"
)
public
R
<
Void
>
deleteDraft
(
@NotNull
(
message
=
"项目ID不能为空"
)
@PathVariable
Long
projectId
)
{
return
toAjax
(
baseService
.
deleteDraft
(
projectId
));
}
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/CbProjectFile.java
View file @
126e5ceb
...
@@ -32,7 +32,7 @@ public class CbProjectFile extends BaseEntity implements Serializable {
...
@@ -32,7 +32,7 @@ public class CbProjectFile extends BaseEntity implements Serializable {
*/
*/
private
Integer
cbStage
;
private
Integer
cbStage
;
/**
/**
* 成本类型
(0:直接费成本、1:工料汇总、2:措施项目、3:其他项目、4:现场经费、5:成本汇总)
* 成本类型
(0:直接费成本、1:工料汇总、2:措施项目、3:其他项目、4:现场经费、5:成本汇总)
*/
*/
private
Integer
cbType
;
private
Integer
cbType
;
/**
/**
...
@@ -56,7 +56,7 @@ public class CbProjectFile extends BaseEntity implements Serializable {
...
@@ -56,7 +56,7 @@ public class CbProjectFile extends BaseEntity implements Serializable {
*/
*/
private
String
failRemark
;
private
String
failRemark
;
/**
/**
* 删除状态(0:否、2:是)
* 删除状态(0:否、
1:待删除、
2:是)
*/
*/
@TableLogic
(
value
=
"0"
,
delval
=
"2"
)
@TableLogic
(
value
=
"0"
,
delval
=
"2"
)
private
Integer
delFlag
;
private
Integer
delFlag
;
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/CbProjectRecord.java
View file @
126e5ceb
...
@@ -24,13 +24,17 @@ public class CbProjectRecord extends BaseEntity implements Serializable {
...
@@ -24,13 +24,17 @@ public class CbProjectRecord extends BaseEntity implements Serializable {
@TableId
(
value
=
"id"
)
@TableId
(
value
=
"id"
)
private
Long
id
;
private
Long
id
;
/**
/**
*
成本阶段(0:标前成本、1:标后成本、2:转固成本
)
*
关联ID(关联多个阶段
)
*/
*/
private
Integer
cbStage
;
private
Long
relatedId
;
/**
/**
* 项目名称
* 项目名称
*/
*/
private
String
projectName
;
private
String
projectName
;
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/
private
Integer
cbStage
;
/**
/**
* 项目文件状态(0:准备中、1:解析中、2:解析成功、3:解析失败)
* 项目文件状态(0:准备中、1:解析中、2:解析成功、3:解析失败)
*/
*/
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/
ImportCbProjectData
Bo.java
→
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/
AddNewCbProject
Bo.java
View file @
126e5ceb
package
com
.
dsk
.
cscec
.
domain
.
bo
;
package
com
.
dsk
.
cscec
.
domain
.
bo
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
/**
/**
* @author sxk
* @author sxk
* @date 2024.02.
07
* @date 2024.02.
19
* @time 1
1:28
* @time 1
4:22
*/
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
@Data
public
class
ImportCbProjectData
Bo
{
public
class
AddNewCbProjectBo
extends
EditProjectInfo
Bo
{
/**
/**
*
项目ID
*
关联ID(关联多个阶段)
*/
*/
@NotNull
(
message
=
"
项目
ID不能为空"
)
@NotNull
(
message
=
"
关联
ID不能为空"
)
private
Long
project
Id
;
private
Long
related
Id
;
/**
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/
*/
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/AddProjectFileUploadBo.java
View file @
126e5ceb
...
@@ -12,11 +12,18 @@ import javax.validation.constraints.NotNull;
...
@@ -12,11 +12,18 @@ import javax.validation.constraints.NotNull;
*/
*/
@Data
@Data
public
class
AddProjectFileUploadBo
{
public
class
AddProjectFileUploadBo
{
/**
* 文件
*/
private
MultipartFile
file
;
private
MultipartFile
file
;
/**
* 项目ID
*/
@NotNull
(
message
=
"项目ID不能为空"
)
@NotNull
(
message
=
"项目ID不能为空"
)
private
Long
projectId
;
private
Long
projectId
;
@NotNull
(
message
=
"成本阶段不能为空"
)
/**
private
Integer
cbStage
;
* 成本类型
*/
@NotNull
(
message
=
"成本类型不能为空"
)
@NotNull
(
message
=
"成本类型不能为空"
)
private
Integer
cbType
;
private
Integer
cbType
;
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/
QueryProjectFileUploadDetail
Bo.java
→
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/
CbProjectSearch
Bo.java
View file @
126e5ceb
...
@@ -2,23 +2,27 @@ package com.dsk.cscec.domain.bo;
...
@@ -2,23 +2,27 @@ package com.dsk.cscec.domain.bo;
import
lombok.Data
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
/**
/**
* @author sxk
* @author sxk
* @date 2024.02.
06
* @date 2024.02.
18
* @time 1
4:17
* @time 1
5:04
*/
*/
@Data
@Data
public
class
QueryProjectFileUploadDetailBo
{
public
class
CbProjectSearchBo
{
/**
* 项目名称
*/
private
String
projectName
;
/**
/**
*
项目ID
*
IPM项目编码
*/
*/
@NotNull
(
message
=
"项目ID不能为空"
)
private
String
ipmProjectNo
;
private
Long
projectId
;
/**
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/
*/
@NotNull
(
message
=
"成本阶段不能为空"
)
private
Integer
cbStage
;
private
Integer
cbStage
;
/**
* 项目文件状态(1:解析中、2:解析成功、3:解析失败)
*/
private
Integer
projectFileStatus
;
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/bo/EditProjectInfoBo.java
View file @
126e5ceb
...
@@ -33,8 +33,4 @@ public class EditProjectInfoBo {
...
@@ -33,8 +33,4 @@ public class EditProjectInfoBo {
* 文件名称
* 文件名称
*/
*/
private
String
projectFileName
;
private
String
projectFileName
;
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/
private
Integer
cbStage
;
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/vo/CbGainLossAnalysisListVo.java
0 → 100644
View file @
126e5ceb
package
com
.
dsk
.
cscec
.
domain
.
vo
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @Author lcl
* @Data 2024/2/19 9:42
*/
@Data
public
class
CbGainLossAnalysisListVo
implements
Serializable
{
private
Long
id
;
/**
* 名称
*/
private
String
cbName
;
/**
* 招标控制价(招标控制价合价)
*/
private
String
tenderSumPrice
;
/**
* 招标控制价(不含税招标合价)
*/
private
String
taxExcludeTenderSumPrice
;
/**
* 招标控制价(含税招标合价)
*/
private
String
taxIncludeTenderSumPrice
;
/**
* 投标报价(投标报价合价)
*/
private
String
bidSumPrice
;
/**
* 投标报价(不含税投标合价)
*/
private
String
taxExcludeBidSumPrice
;
/**
* 投标报价(含税投标合价)
*/
private
String
taxIncludebBidSumPrice
;
/**
* 成本汇总(不含税成本合价)
*/
private
String
taxExclusiveTotal
;
/**
* 成本汇总(成本税金合价)
*/
private
String
cbTaxesTotal
;
/**
* 成本汇总(含税成本合价)
*/
private
String
taxInclusiveTotal
;
/**
* 造价指标(招标控制价)
*/
private
String
costTender
;
/**
* 造价指标(投标报价)
*/
private
String
costBid
;
/**
* 造价指标(成本)
*/
private
String
costExpense
;
/**
* 含税成本占比
*/
private
String
taxInclusiveExpenseProportion
;
/**
* 招标控制价(含税合价偏差)
*/
private
String
tenderSumPriceDeviation
;
/**
* 招标控制价(含税盈亏率)
*/
private
String
tenderProfitLossRatio
;
/**
* 投标报价(含税合价偏差)
*/
private
String
bidSumPriceDeviation
;
/**
* 投标报价(含税盈亏率)
*/
private
String
bidProfitLossRatio
;
/**
* 实际成本费用(本月费用(含税))
*/
private
String
taxInclusiveExpense
;
/**
* 实际成本费用(本月费用(不含税))
*/
private
String
taxExclusiveExpense
;
/**
* 实际成本费用(截至本月费用(含税))
*/
private
String
sumTaxInclusiveExpense
;
/**
* 实际成本费用(截至本月费用(不含税))
*/
private
String
sumTaxExclusiveExpense
;
private
List
<
CbGainLossAnalysisListVo
>
children
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/vo/ProjectRecordDataVo.java
0 → 100644
View file @
126e5ceb
package
com
.
dsk
.
cscec
.
domain
.
vo
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author sxk
* @date 2024.02.18
* @time 15:18
*/
@Data
public
class
ProjectRecordDataVo
{
/**
* 项目文件状态(1:解析中、2:解析成功、3:解析失败)
*/
private
Integer
projectFileStatus
;
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/
private
Integer
cbStage
;
/**
* 更新者
*/
private
String
updateBy
;
/**
* 更新时间
*/
private
Date
updateTime
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/domain/vo/ProjectRecordSearchVo.java
0 → 100644
View file @
126e5ceb
package
com
.
dsk
.
cscec
.
domain
.
vo
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author sxk
* @date 2024.02.18
* @time 15:08
*/
@Data
public
class
ProjectRecordSearchVo
{
/**
* 项目ID
*/
private
Long
id
;
/**
* 项目名称
*/
private
String
projectName
;
/**
* IPM项目编码
*/
private
String
ipmProjectNo
;
/**
* 文件名称
*/
private
String
projectFileName
;
/**
* 项目数据
*/
private
List
<
ProjectRecordDataVo
>
dataVoList
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/mapper/CbProjectRecordMapper.java
View file @
126e5ceb
package
com
.
dsk
.
cscec
.
mapper
;
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.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.dsk.cscec.domain.CbProjectRecord
;
import
com.dsk.cscec.domain.CbProjectRecord
;
import
com.dsk.cscec.domain.vo.ProjectRecordSearchVo
;
/**
/**
* 项目台账表(CbProjectRecord)表数据库访问层
* 项目台账表(CbProjectRecord)表数据库访问层
...
@@ -10,6 +13,10 @@ import com.dsk.cscec.domain.CbProjectRecord;
...
@@ -10,6 +13,10 @@ import com.dsk.cscec.domain.CbProjectRecord;
* @since 2024-02-05 11:37:49
* @since 2024-02-05 11:37:49
*/
*/
public
interface
CbProjectRecordMapper
extends
BaseMapper
<
CbProjectRecord
>
{
public
interface
CbProjectRecordMapper
extends
BaseMapper
<
CbProjectRecord
>
{
/**
* 获取项目台账列表
*/
Page
<
ProjectRecordSearchVo
>
selectPageProjectRecordList
(
Page
<
ProjectRecordSearchVo
>
build
,
QueryWrapper
<
CbProjectRecord
>
wrapper
);
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/mapper/CbSummaryMapper.java
View file @
126e5ceb
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import
com.dsk.cscec.domain.CbSummary
;
import
com.dsk.cscec.domain.CbSummary
;
import
com.dsk.cscec.domain.bo.CbSummaryActualListBo
;
import
com.dsk.cscec.domain.bo.CbSummaryActualListBo
;
import
com.dsk.cscec.domain.bo.CbSummaryBo
;
import
com.dsk.cscec.domain.bo.CbSummaryBo
;
import
com.dsk.cscec.domain.vo.CbGainLossAnalysisListVo
;
import
com.dsk.cscec.domain.vo.CbSummaryActualListVo
;
import
com.dsk.cscec.domain.vo.CbSummaryActualListVo
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
...
@@ -61,4 +62,11 @@ public interface CbSummaryMapper extends BaseMapper<CbSummary> {
...
@@ -61,4 +62,11 @@ public interface CbSummaryMapper extends BaseMapper<CbSummary> {
* @return
* @return
*/
*/
List
<
Map
<
String
,
Object
>>
selectByLevel
(
@Param
(
"bo"
)
CbSummaryBo
bo
);
List
<
Map
<
String
,
Object
>>
selectByLevel
(
@Param
(
"bo"
)
CbSummaryBo
bo
);
CbGainLossAnalysisListVo
getGainLossAnalysisById
(
@Param
(
"id"
)
Long
id
,
@Param
(
"expenseDate"
)
String
expenseDate
);
List
<
CbGainLossAnalysisListVo
>
getGainLossAnalysisByParentId
(
@Param
(
"id"
)
Long
parentId
,
@Param
(
"expenseDate"
)
String
expenseDate
);
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/CbProjectFileService.java
View file @
126e5ceb
...
@@ -3,7 +3,6 @@ package com.dsk.cscec.service;
...
@@ -3,7 +3,6 @@ package com.dsk.cscec.service;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.bo.AddProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.AddProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.QueryProjectFileUploadDetailBo
;
import
com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo
;
import
com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo
;
import
com.dsk.system.domain.vo.SysOssVo
;
import
com.dsk.system.domain.vo.SysOssVo
;
...
@@ -19,8 +18,9 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
...
@@ -19,8 +18,9 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
*
*
* @param fileUploadBo 上传信息
* @param fileUploadBo 上传信息
* @param oss oss信息
* @param oss oss信息
* @return 文件实体
*/
*/
void
addProjectFile
(
AddProjectFileUploadBo
fileUploadBo
,
SysOssVo
oss
);
CbProjectFile
addProjectFile
(
AddProjectFileUploadBo
fileUploadBo
,
SysOssVo
oss
);
/**
/**
* 逻辑删除项目上传文件记录
* 逻辑删除项目上传文件记录
...
@@ -33,9 +33,9 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
...
@@ -33,9 +33,9 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
/**
/**
* 获取项目文件上传详情
* 获取项目文件上传详情
*
*
* @param
uploadDetailBo 查询信息
* @param
projectId 项目ID
* @return 文件列表
* @return 文件列表
*/
*/
QueryProjectFileUploadDetailVo
getProjectFileUploadDetail
(
QueryProjectFileUploadDetailBo
uploadDetailBo
);
QueryProjectFileUploadDetailVo
getProjectFileUploadDetail
(
Long
projectId
);
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/CbProjectRecordService.java
View file @
126e5ceb
package
com
.
dsk
.
cscec
.
service
;
package
com
.
dsk
.
cscec
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.dsk.common.core.domain.PageQuery
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.cscec.domain.CbProjectRecord
;
import
com.dsk.cscec.domain.CbProjectRecord
;
import
com.dsk.cscec.domain.bo.AddCbProjectBo
;
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.EditProjectInfoBo
;
import
com.dsk.cscec.domain.
bo.ImportCbProjectDataB
o
;
import
com.dsk.cscec.domain.
vo.ProjectRecordSearchV
o
;
import
java.util.List
;
import
java.util.List
;
...
@@ -26,9 +30,18 @@ public interface CbProjectRecordService extends IService<CbProjectRecord> {
...
@@ -26,9 +30,18 @@ public interface CbProjectRecordService extends IService<CbProjectRecord> {
/**
/**
* 根据项目文件导入数据
* 根据项目文件导入数据
*
*
* @param
importDataBo 导入对象
* @param
projectId 项目ID
*/
*/
void
importData
(
ImportCbProjectDataBo
importDataBo
);
void
importData
(
Long
projectId
)
throws
Exception
;
/**
* 获取项目台账列表
*
* @param searchBo 查询条件
* @param pageQuery 分页对象
* @return 分页数据
*/
TableDataInfo
<
ProjectRecordSearchVo
>
getProjectList
(
CbProjectSearchBo
searchBo
,
PageQuery
pageQuery
);
/**
/**
* 修改项目信息
* 修改项目信息
...
@@ -38,10 +51,34 @@ public interface CbProjectRecordService extends IService<CbProjectRecord> {
...
@@ -38,10 +51,34 @@ public interface CbProjectRecordService extends IService<CbProjectRecord> {
*/
*/
Integer
editProjectInfo
(
EditProjectInfoBo
editBo
);
Integer
editProjectInfo
(
EditProjectInfoBo
editBo
);
/**
* 获取新阶段项目可选成本阶段
*
* @param relatedId 关联ID
* @return 可选成本阶段
*/
List
<
Integer
>
getProjectAvailableCbStage
(
Long
relatedId
);
/**
* 新增新阶段项目
*
* @param newProjectBo 新增对象
* @return 新增结果
*/
CbProjectRecord
addNewStageProject
(
AddNewCbProjectBo
newProjectBo
);
/**
/**
* 获取草稿弹窗列表
* 获取草稿弹窗列表
*
*
* @return 草稿弹窗列表
* @return 草稿弹窗列表
*/
*/
List
<
CbProjectRecord
>
getDraftDialogList
();
List
<
CbProjectRecord
>
getDraftDialogList
();
/**
* 删除草稿
*
* @param projectId 项目ID
* @return 删除结果
*/
Integer
deleteDraft
(
Long
projectId
);
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/ICbGainLossAnalysisService.java
0 → 100644
View file @
126e5ceb
package
com
.
dsk
.
cscec
.
service
;
import
com.dsk.cscec.domain.bo.CbSummaryActualListBo
;
import
com.dsk.cscec.domain.vo.CbGainLossAnalysisListVo
;
import
java.util.List
;
public
interface
ICbGainLossAnalysisService
{
List
<
CbGainLossAnalysisListVo
>
getList
(
CbSummaryActualListBo
bo
);
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbGainLossAnalysisServiceImpl.java
0 → 100644
View file @
126e5ceb
package
com
.
dsk
.
cscec
.
service
.
impl
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.lang.Assert
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.dsk.cscec.domain.CbSummary
;
import
com.dsk.cscec.domain.bo.CbSummaryActualListBo
;
import
com.dsk.cscec.domain.vo.CbGainLossAnalysisListVo
;
import
com.dsk.cscec.mapper.CbSummaryMapper
;
import
com.dsk.cscec.service.ICbGainLossAnalysisService
;
import
jodd.util.StringUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Author lcl
* @Data 2024/2/18 14:03
*/
@Slf4j
@Service
public
class
CbGainLossAnalysisServiceImpl
implements
ICbGainLossAnalysisService
{
@Resource
private
CbSummaryMapper
cbSummaryMapper
;
@Override
public
List
<
CbGainLossAnalysisListVo
>
getList
(
CbSummaryActualListBo
bo
)
{
Assert
.
notNull
(
bo
.
getId
(),
"id不能为空"
);
List
<
CbGainLossAnalysisListVo
>
resultList
=
new
ArrayList
<>();
if
(
StringUtil
.
isBlank
(
bo
.
getExpenseDate
()))
{
//默认当前月
bo
.
setExpenseDate
(
DatePattern
.
SIMPLE_MONTH_FORMAT
.
format
(
new
Date
()));
}
CbSummary
cbSummary
=
cbSummaryMapper
.
selectById
(
bo
.
getId
());
if
(
ObjectUtil
.
isEmpty
(
cbSummary
))
{
return
resultList
;
}
List
<
CbGainLossAnalysisListVo
>
childrenList
=
cbSummaryMapper
.
getGainLossAnalysisByParentId
(
bo
.
getId
(),
bo
.
getExpenseDate
());
if
(
0
==
cbSummary
.
getLevel
())
{
resultList
=
childrenList
;
}
else
{
childrenList
=
getProjectSumList
(
bo
);
CbGainLossAnalysisListVo
cbGainLossAnalysisListVo
=
cbSummaryMapper
.
getGainLossAnalysisById
(
bo
.
getId
(),
bo
.
getExpenseDate
());
cbGainLossAnalysisListVo
.
setChildren
(
childrenList
);
resultList
.
add
(
cbGainLossAnalysisListVo
);
}
return
resultList
;
}
/**
* 盈亏对比分析列表
*
*/
private
List
<
CbGainLossAnalysisListVo
>
getProjectSumList
(
CbSummaryActualListBo
bo
)
{
List
<
CbGainLossAnalysisListVo
>
childrenList
=
cbSummaryMapper
.
getGainLossAnalysisByParentId
(
bo
.
getId
(),
bo
.
getExpenseDate
());
childrenList
.
forEach
(
children
->
{
CbSummaryActualListBo
childBo
=
new
CbSummaryActualListBo
();
childBo
.
setId
(
children
.
getId
());
childBo
.
setExpenseDate
(
bo
.
getExpenseDate
());
children
.
setChildren
(
getProjectSumList
(
childBo
));
});
return
childrenList
;
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbProjectFileServiceImpl.java
View file @
126e5ceb
...
@@ -4,12 +4,10 @@ import cn.hutool.core.bean.BeanUtil;
...
@@ -4,12 +4,10 @@ import cn.hutool.core.bean.BeanUtil;
import
cn.hutool.core.lang.Assert
;
import
cn.hutool.core.lang.Assert
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.cscec.constant.CbProjectConstants
;
import
com.dsk.cscec.constant.CbProjectConstants
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.CbProjectFile
;
import
com.dsk.cscec.domain.CbProjectRecord
;
import
com.dsk.cscec.domain.CbProjectRecord
;
import
com.dsk.cscec.domain.bo.AddProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.AddProjectFileUploadBo
;
import
com.dsk.cscec.domain.bo.QueryProjectFileUploadDetailBo
;
import
com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo
;
import
com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo
;
import
com.dsk.cscec.mapper.CbProjectFileMapper
;
import
com.dsk.cscec.mapper.CbProjectFileMapper
;
import
com.dsk.cscec.mapper.CbProjectRecordMapper
;
import
com.dsk.cscec.mapper.CbProjectRecordMapper
;
...
@@ -40,22 +38,23 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
...
@@ -40,22 +38,23 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
*
*
* @param fileUploadBo 上传信息
* @param fileUploadBo 上传信息
* @param oss oss信息
* @param oss oss信息
* @return
*/
*/
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
addProjectFile
(
AddProjectFileUploadBo
fileUploadBo
,
SysOssVo
oss
)
{
public
CbProjectFile
addProjectFile
(
AddProjectFileUploadBo
fileUploadBo
,
SysOssVo
oss
)
{
//校验项目是否存在
//校验项目是否存在
this
.
checkProjectExist
(
fileUploadBo
.
getProjectId
());
CbProjectRecord
projectRecord
=
this
.
checkProjectExist
(
fileUploadBo
.
getProjectId
());
CbProjectFile
projectFile
=
BeanUtil
.
toBean
(
fileUploadBo
,
CbProjectFile
.
class
);
CbProjectFile
projectFile
=
BeanUtil
.
toBean
(
fileUploadBo
,
CbProjectFile
.
class
);
projectFile
.
setCbStage
(
projectRecord
.
getCbStage
());
projectFile
.
setFileName
(
oss
.
getOriginalName
());
projectFile
.
setFileName
(
oss
.
getOriginalName
());
projectFile
.
setFileOssId
(
oss
.
getOssId
());
projectFile
.
setFileOssId
(
oss
.
getOssId
());
projectFile
.
setFileOssUrl
(
oss
.
getUrl
());
projectFile
.
setFileOssUrl
(
oss
.
getUrl
());
//项目文件状态:准备中
//项目文件状态:准备中
projectFile
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PREPARING
);
projectFile
.
setFileParseStatus
(
CbProjectConstants
.
PROJECT_FILE_STATUS_PREPARING
);
//删除状态:未删除
projectFile
.
setDelFlag
(
CbProjectConstants
.
DELETE_FLAG_EXIST
);
baseMapper
.
insert
(
projectFile
);
baseMapper
.
insert
(
projectFile
);
return
projectFile
;
}
}
/**
/**
...
@@ -68,26 +67,24 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
...
@@ -68,26 +67,24 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
public
Integer
deleteProjectFile
(
Long
fileId
)
{
public
Integer
deleteProjectFile
(
Long
fileId
)
{
CbProjectFile
projectFile
=
baseMapper
.
selectById
(
fileId
);
CbProjectFile
projectFile
=
baseMapper
.
selectById
(
fileId
);
Assert
.
notNull
(
projectFile
,
"该文件不存在"
);
Assert
.
notNull
(
projectFile
,
"该文件不存在"
);
projectFile
.
setDelFlag
(
CbProjectConstants
.
DELETE_FLAG_NOT_EXIST
);
return
baseMapper
.
deleteById
(
projectFile
);
return
baseMapper
.
updateById
(
projectFile
);
}
}
/**
/**
* 获取项目文件上传详情
* 获取项目文件上传详情
*
*
* @param
uploadDetailBo 查询信息
* @param
projectId 项目ID
* @return 文件列表
* @return 文件列表
*/
*/
@Override
@Override
public
QueryProjectFileUploadDetailVo
getProjectFileUploadDetail
(
QueryProjectFileUploadDetailBo
uploadDetailBo
)
{
public
QueryProjectFileUploadDetailVo
getProjectFileUploadDetail
(
Long
projectId
)
{
Long
projectId
=
uploadDetailBo
.
getProjectId
();
//校验项目是否存在
//校验项目是否存在
this
.
checkProjectExist
(
projectId
);
this
.
checkProjectExist
(
projectId
);
List
<
CbProjectFile
>
projectFileList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbProjectFile
>()
List
<
CbProjectFile
>
projectFileList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CbProjectFile
>()
.
eq
(
CbProjectFile:
:
getProjectId
,
projectId
)
.
eq
(
CbProjectFile:
:
getProjectId
,
projectId
)
//成本阶段
//成本阶段
.
eq
(
CbProjectFile:
:
getCbStage
,
uploadDetailBo
.
getCbStage
())
//
.eq(CbProjectFile::getCbStage, uploadDetailBo.getCbStage())
//删除状态:否
//删除状态:否
.
eq
(
CbProjectFile:
:
getDelFlag
,
CbProjectConstants
.
DELETE_FLAG_EXIST
));
.
eq
(
CbProjectFile:
:
getDelFlag
,
CbProjectConstants
.
DELETE_FLAG_EXIST
));
...
@@ -127,13 +124,12 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
...
@@ -127,13 +124,12 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
* 校验项目是否存在
* 校验项目是否存在
*
*
* @param projectId 项目ID
* @param projectId 项目ID
* @return 项目实体
*/
*/
private
voi
d
checkProjectExist
(
Long
projectId
)
{
private
CbProjectRecor
d
checkProjectExist
(
Long
projectId
)
{
//校验项目是否存在
//校验项目是否存在
if
(!
projectRecordMapper
.
exists
(
new
LambdaQueryWrapper
<
CbProjectRecord
>()
CbProjectRecord
projectRecord
=
projectRecordMapper
.
selectById
(
projectId
);
.
eq
(
CbProjectRecord:
:
getId
,
projectId
)
Assert
.
notNull
(
projectRecord
,
"该项目不存在"
);
.
eq
(
CbProjectRecord:
:
getDelFlag
,
CbProjectConstants
.
DELETE_FLAG_EXIST
)))
{
return
projectRecord
;
throw
new
ServiceException
(
"该项目不存在"
);
}
}
}
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbProjectRecordServiceImpl.java
View file @
126e5ceb
This diff is collapsed.
Click to expand it.
dsk-module/dsk-biz-api/src/main/resources/mapper/cscec/CbProjectRecordMapper.xml
View file @
126e5ceb
<?xml version="1.0" encoding="UTF-8"?>
<?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">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.dsk.cscec.mapper.CbProjectRecordMapper"
>
<mapper
namespace=
"com.dsk.cscec.mapper.CbProjectRecordMapper"
>
<!--获取项目台账列表-->
<select
id=
"selectPageProjectRecordList"
resultType=
"com.dsk.cscec.domain.vo.ProjectRecordSearchVo"
>
select cpr.id,
cpr.project_name,
cpr.ipm_project_no,
cpr.project_file_name
from cb_project_record cpr
${ew.getCustomSqlSegment};
</select>
</mapper>
</mapper>
\ No newline at end of file
dsk-module/dsk-biz-api/src/main/resources/mapper/cscec/CbSummaryMapper.xml
View file @
126e5ceb
...
@@ -127,5 +127,31 @@
...
@@ -127,5 +127,31 @@
order by csu.sort
order by csu.sort
</select>
</select>
<select
id=
"getGainLossAnalysisById"
resultType=
"com.dsk.cscec.domain.vo.CbGainLossAnalysisListVo"
>
select csu.id, csu.cb_name, csu.tax_exclusive_total, csu.cb_taxes_total, csu.tax_inclusive_total, csa.tax_inclusive_expense, csa.tax_exclusive_expense,
sum(cde.tender_control_sum_price) tenderSumPrice, sum(cde.exclude_tax_cb_sum_price) taxExcludeTenderSumPrice, sum(cde.include_tax_cb_sum_price) taxIncludeTenderSumPrice,
sum(csa1.tax_inclusive_expense) sumTaxInclusiveExpense, sum(csa1.tax_exclusive_expense) sumTaxExclusiveExpense
from cb_summary csu
left join cb_summary_actual csa on (csu.id = csa.cb_summary_id and csa.expense_date = #{expenseDate} AND csa.del_flag = 0)
left join cb_summary_actual csa1 on (csu.id = csa1.cb_summary_id and csa1.expense_date
<
= #{expenseDate} AND csa1.del_flag = 0)
left join cb_direct_expense cde on (csu.project_id = cde.project_id and csu.cb_stage = cde.cb_stage and cde.del_flag = 0)
where csu.id = #{id} and csu.del_flag = 0
group by csu.id
order by csu.sort
</select>
<select
id=
"getGainLossAnalysisByParentId"
resultType=
"com.dsk.cscec.domain.vo.CbGainLossAnalysisListVo"
>
select csu.id, csu.cb_name, csu.tax_exclusive_total, csu.cb_taxes_total, csu.tax_inclusive_total, csa.tax_inclusive_expense, csa.tax_exclusive_expense,
sum(cde.tender_control_sum_price) tenderSumPrice, sum(cde.exclude_tax_cb_sum_price) taxExcludeTenderSumPrice, sum(cde.include_tax_cb_sum_price) taxIncludeTenderSumPrice,
sum(csa1.tax_inclusive_expense) sumTaxInclusiveExpense, sum(csa1.tax_exclusive_expense) sumTaxExclusiveExpense
from cb_summary csu
left join cb_summary_actual csa on (csu.id = csa.cb_summary_id and csa.expense_date = #{expenseDate} AND csa.del_flag = 0)
left join cb_summary_actual csa1 on (csu.id = csa1.cb_summary_id and csa1.expense_date
<
= #{expenseDate} AND csa1.del_flag = 0)
left join cb_direct_expense cde on (csu.project_id = cde.project_id and csu.cb_stage = cde.cb_stage and cde.del_flag = 0)
where csu.parent_id = #{parentId} and csu.del_flag = 0
group by csu.id
order by csu.sort
</select>
</mapper>
</mapper>
dsk-operate-ui/src/api/projectCostLedger/index.js
View file @
126e5ceb
...
@@ -7,3 +7,26 @@ export function checkProjectCodeExist (data) {
...
@@ -7,3 +7,26 @@ export function checkProjectCodeExist (data) {
method
:
'get'
,
method
:
'get'
,
})
})
}
}
//新增项目
export
function
addProject
(
data
)
{
return
request
({
url
:
'/cbProjectRecord/addProject'
,
method
:
'post'
,
data
:
data
,
})
}
//获取当前项目文件上传
export
function
getProjectFileUploadDetail
(
projectId
)
{
return
request
({
url
:
'/cbProjectFile/getProjectFileUploadDetail/'
+
projectId
,
method
:
'get'
,
})
}
//获取草稿箱列表
export
function
getDraftDialogList
(
projectId
)
{
return
request
({
url
:
'/cbProjectRecord/getDraftDialogList'
,
method
:
'get'
,
})
}
dsk-operate-ui/src/assets/images/icon_tips_question.svg
0 → 100644
View file @
126e5ceb
<svg
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
fill=
"none"
version=
"1.1"
width=
"12"
height=
"12"
viewBox=
"0 0 12 12"
><g><g><path
d=
"M2,6C2,3.79085,3.79085,2,6,2C8.209150000000001,2,10,3.79085,10,6C10,8.209150000000001,8.209150000000001,10,6,10C3.79085,10,2,8.209150000000001,2,6C2,6,2,6,2,6ZM6,1C3.23857,1,1,3.23857,1,6C1,8.76143,3.23857,11,6,11C8.76143,11,11,8.76143,11,6C11,3.23857,8.76143,1,6,1C6,1,6,1,6,1ZM5.15,4.99465C5.15,4.99465,5.15,4.8793500000000005,5.15,4.8793500000000005C5.1506,4.742179999999999,5.19968,4.59,5.30912,4.4756C5.41022,4.369949999999999,5.60728,4.25,5.99713,4.25C6.36322,4.25,6.61783,4.424799999999999,6.74765,4.6232500000000005C6.8863,4.8351500000000005,6.85897,5.01298,6.79318,5.10183C6.7111,5.21263,6.6092,5.31495,6.48607,5.4258C6.4486,5.45953,6.40242,5.49972,6.3529,5.5428C6.3529,5.5428,6.3529,5.54283,6.3529,5.54283C6.26435,5.61985,6.16515,5.70617,6.08605,5.78145C5.80517,6.0487,5.5001,6.4217,5.5001,7C5.5001,7,5.50173,7.2532,5.50173,7.2532C5.50173,7.2532,6.5017,7.2468,6.5017,7.2468C6.5017,7.2468,6.5001,6.99862,6.5001,6.99862C6.50047,6.82762,6.57058,6.70078,6.77537,6.5059C6.84422,6.4404,6.9061,6.38685,6.9769,6.3256C6.9769,6.3256,6.97692,6.32557,6.97692,6.32557C7.0293,6.28027,7.08655,6.23075,7.15513,6.16902C7.2977,6.04065,7.45638,5.88653,7.59675,5.69702C7.9758,5.1853,7.88715,4.5384,7.58448,4.07575C7.27297,3.59963,6.7062,3.25,5.99713,3.25C5.3835,3.25,4.90777,3.44858,4.58658,3.78428C4.27393,4.1110500000000005,4.1511499999999995,4.5227699999999995,4.15,4.87683C4.15,4.87683,4.15,4.99465,4.15,4.99465C4.15,4.99465,5.15,4.99465,5.15,4.99465C5.15,4.99465,5.15,4.99465,5.15,4.99465ZM5.5017,7.75C5.5017,7.75,5.5017,8.75195,5.5017,8.75195C5.5017,8.75195,6.5017,8.75195,6.5017,8.75195C6.5017,8.75195,6.5017,7.75,6.5017,7.75C6.5017,7.75,5.5017,7.75,5.5017,7.75C5.5017,7.75,5.5017,7.75,5.5017,7.75Z"
fill-rule=
"evenodd"
fill=
"#FFAB44"
fill-opacity=
"1"
/></g></g></svg>
\ No newline at end of file
dsk-operate-ui/src/assets/images/icon_wrapper.png
0 → 100644
View file @
126e5ceb
246 Bytes
dsk-operate-ui/src/assets/images/tips-plus.png
0 → 100644
View file @
126e5ceb
222 Bytes
dsk-operate-ui/src/views/projectCostLedger/detail/components/FeedSummary/index.vue
View file @
126e5ceb
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<div
class=
"feed-summary-container"
>
<div
class=
"feed-summary-container"
>
<div
class=
"feed-summary-inner"
>
<div
class=
"feed-summary-inner"
>
<div
class=
"left-side-menu"
>
<div
class=
"left-side-menu"
>
<project-side-menu
:menuTree=
"menuTreeList"
></project-side-menu>
<project-side-menu
:menuTree=
"menuTreeList"
:unique-opened=
"false"
:default-active=
"defaultActive"
></project-side-menu>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -16,6 +16,7 @@ export default {
...
@@ -16,6 +16,7 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
defaultActive
:
""
,
menuTreeList
:
[
menuTreeList
:
[
{
{
nodeName
:
"房建类成本科目"
,
nodeName
:
"房建类成本科目"
,
...
@@ -81,7 +82,7 @@ export default {
...
@@ -81,7 +82,7 @@ export default {
},
},
//可访问data属性
//可访问data属性
created
()
{
created
()
{
},
},
//计算集
//计算集
computed
:
{
computed
:
{
...
...
dsk-operate-ui/src/views/projectCostLedger/detail/components/ProjectSideMenu/ProjectMenuItem.vue
View file @
126e5ceb
<
template
>
<
template
>
<div
class=
"project-menu-item-container"
>
<div
class=
"project-menu-item-container"
>
<template>
<!-- 有下级菜单 -->
<template
v-if=
"checkHasChidren"
>
<el-submenu
:index=
"menuItem.nodeValue"
ref=
"projectSubMenuItem"
class=
"project-sub-menu-item"
>
<template
slot=
"title"
>
<i
class=
"el-icon-location"
></i>
<span>
111
</span>
</
template
>
</el-submenu>
</template>
<
template
v-else
>
</div>
</
template
>
</template>
</div>
</template>
</template>
<
script
>
<
script
>
export
default
{
export
default
{
name
:
"projectMenuItem"
,
name
:
"projectMenuItem"
,
data
()
{
props
:
{
return
{
menuItem
:
{
type
:
Object
,
required
:
true
,
default
:
()
=>
({})
}
},
data
()
{
return
{
}
};
},
},
//可访问data属性
//可访问data属性
created
()
{
created
()
{
},
},
//计算集
//计算集
computed
:{
computed
:
{
checkHasChidren
()
{
return
!!
(
this
.
menuItem
&&
this
.
menuItem
?.
children
&&
this
.
menuItem
.
children
.
length
);
}
},
//方法集
methods
:
{
},
},
//方法集
methods
:{
},
}
}
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.project-menu-item-container
{
.project-menu-item-container
{
}
}
</
style
>
</
style
>
dsk-operate-ui/src/views/projectCostLedger/detail/components/ProjectSideMenu/index.vue
View file @
126e5ceb
<
template
>
<
template
>
<div
class=
"project-side-menu-container"
>
<div
class=
"project-side-menu-container"
>
<el-menu
mode=
"vertical"
class=
"project-side-menu-instance"
>
<el-menu
mode=
"vertical"
class=
"project-side-menu-instance"
:unique-opened=
"uniqueOpened"
:default-active=
"defaultActive"
@
select=
"menuSelect"
<project-menu-item></project-menu-item>
@
open=
"subMenuOpen"
@
close=
"subMenuClose"
>
<template
v-for=
"(item,index) of tempMenuTree"
>
<project-menu-item
:menuItem=
"item"
:key=
"item.nodeValue"
></project-menu-item>
</
template
>
</el-menu>
</el-menu>
</div>
</div>
</template>
</template>
...
@@ -29,6 +32,16 @@ export default {
...
@@ -29,6 +32,16 @@ export default {
icon
:
"icon"
,
icon
:
"icon"
,
suffixIcon
:
"suffixIcon"
suffixIcon
:
"suffixIcon"
})
})
},
// 只保持打开一个菜单
uniqueOpened
:
{
type
:
Boolean
,
default
:
false
},
// 默认打开的菜单
defaultActive
:
{
type
:
String
,
default
:
""
}
}
},
},
watch
:
{
watch
:
{
...
@@ -67,6 +80,16 @@ export default {
...
@@ -67,6 +80,16 @@ export default {
},
},
//方法集
//方法集
methods
:
{
methods
:
{
// 事件订阅
subMenuOpen
(
menuPath
)
{
this
.
$emit
(
"open"
,
menuPath
);
},
subMenuClose
(
menuPath
)
{
this
.
$emit
(
"close"
,
menuPath
);
},
menuSelect
(
menuPath
)
{
this
.
$emit
(
"select"
,
menuPath
);
},
// 初始化树形结构
// 初始化树形结构
initMenuTree
(
array
=
[])
{
initMenuTree
(
array
=
[])
{
if
(
array
?.
length
)
{
if
(
array
?.
length
)
{
...
@@ -75,6 +98,10 @@ export default {
...
@@ -75,6 +98,10 @@ export default {
this
.
tempMenuOptions
=
_options
;
this
.
tempMenuOptions
=
_options
;
// 映射配置
// 映射配置
const
resultData
=
this
.
mapDataByMenuOptions
(
JSON
.
parse
(
JSON
.
stringify
(
this
.
comMenuTree
)),
_options
);
const
resultData
=
this
.
mapDataByMenuOptions
(
JSON
.
parse
(
JSON
.
stringify
(
this
.
comMenuTree
)),
_options
);
console
.
log
(
resultData
);
if
(
resultData
)
{
this
.
tempMenuTree
=
resultData
;
}
}
}
},
},
mergeMenuOptions
(
options
)
{
mergeMenuOptions
(
options
)
{
...
@@ -86,10 +113,31 @@ export default {
...
@@ -86,10 +113,31 @@ export default {
return
options
;
return
options
;
},
},
mapDataByMenuOptions
(
menuList
,
options
)
{
mapDataByMenuOptions
(
menuList
,
options
)
{
// 分组源数据
const
_groupData
=
this
.
groupData
(
menuList
,
options
);
// 映射过后的树
// 映射过后的树
const
_mapedData
=
this
.
mapData
(
menuList
,
options
);
const
_mapedData
=
this
.
mapData
(
_groupData
,
options
);
// 处理层级 以及删除空children
// 处理层级 以及删除空children
this
.
buildTree
(
_mapedData
);
return
this
.
buildTree
(
_mapedData
);
},
groupData
(
data
,
options
,
originData
=
[])
{
if
(
data
?.
length
)
{
const
{
children
}
=
options
;
const
len
=
data
.
length
;
for
(
let
index
=
0
;
index
<
len
;
index
++
)
{
const
_item
=
data
[
index
];
const
_newItem
=
JSON
.
parse
(
JSON
.
stringify
(
_item
));
originData
.
push
({
originData
:
_newItem
});
if
(
_item
[
children
]
instanceof
Array
&&
_item
[
children
].
length
)
{
_newItem
[
children
]
=
this
.
groupData
(
_item
[
children
],
options
);
}
else
{
delete
_newItem
[
children
];
}
}
}
return
originData
;
},
},
mapData
(
data
=
[],
mapOptions
)
{
mapData
(
data
=
[],
mapOptions
)
{
const
keys
=
Object
.
keys
(
mapOptions
);
const
keys
=
Object
.
keys
(
mapOptions
);
...
@@ -97,12 +145,13 @@ export default {
...
@@ -97,12 +145,13 @@ export default {
data
.
forEach
(
item
=>
{
data
.
forEach
(
item
=>
{
// 循环key映射到 树
// 循环key映射到 树
keys
.
forEach
(
key
=>
{
keys
.
forEach
(
key
=>
{
const
mapKey
=
mapOptions
[
key
];
const
_mapKey
=
mapOptions
[
key
];
if
(
Object
.
hasOwnProperty
.
call
(
item
,
mapKey
))
{
const
_origin
=
item
[
"originData"
];
item
[
key
]
=
item
[
mapKey
];
if
(
Object
.
hasOwnProperty
.
call
(
_origin
,
_mapKey
))
{
item
[
key
]
=
JSON
.
parse
(
JSON
.
stringify
(
_origin
[
_mapKey
]));
}
}
});
});
if
(
item
?.
children
)
{
if
(
item
?.
children
instanceof
Array
&&
item
.
children
.
length
)
{
// 递归映射
// 递归映射
this
.
mapData
(
item
?.
children
,
mapOptions
);
this
.
mapData
(
item
?.
children
,
mapOptions
);
}
}
...
@@ -115,7 +164,7 @@ export default {
...
@@ -115,7 +164,7 @@ export default {
// 添加层级
// 添加层级
addTreeLevel
(
mapedData
);
addTreeLevel
(
mapedData
);
addNodeParent
(
mapedData
);
addNodeParent
(
mapedData
);
console
.
log
(
mapedData
)
;
return
mapedData
;
}
}
}
}
},
},
...
@@ -134,19 +183,21 @@ export default {
...
@@ -134,19 +183,21 @@ export default {
overflow
:
auto
;
overflow
:
auto
;
/* 重置一级二级菜单 高度行高 */
/* 重置一级二级菜单 高度行高 */
/* .el-submenu__title {
.project-sub-menu-item
{
height: 32px;
&
>
.el-submenu__title
{
line-height: 32px;
height
:
32px
;
line-height
:
32px
;
&:hover {
&
:hover
{
background-color: unset;
background-color
:
unset
;
background: linear-gradient(
background
:
linear-gradient
(
91deg,
91deg
,
rgba(0, 129, 255, 0.1) 0%,
rgba
(
0
,
129
,
255
,
0
.1
)
0%
,
rgba(0, 129, 255, 0) 100%
rgba
(
0
,
129
,
255
,
0
)
100%
);
);
}
}
}
}
*/
}
}
}
}
}
</
style
>
</
style
>
dsk-operate-ui/src/views/projectCostLedger/index.vue
View file @
126e5ceb
This diff is collapsed.
Click to expand it.
dsk-operate-ui/src/views/projectCostLedger/upload/index.vue
0 → 100644
View file @
126e5ceb
This diff is collapsed.
Click to expand it.
dsk-system/src/main/java/com/dsk/system/service/impl/SysOssServiceImpl.java
View file @
126e5ceb
...
@@ -128,6 +128,7 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
...
@@ -128,6 +128,7 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
public
SysOssVo
upload
(
MultipartFile
file
)
throws
UnsupportedEncodingException
{
public
SysOssVo
upload
(
MultipartFile
file
)
throws
UnsupportedEncodingException
{
String
originalfileName
=
file
.
getOriginalFilename
();
String
originalfileName
=
file
.
getOriginalFilename
();
//文件名解码防止上传中文名文件导致的文件名乱码
//文件名解码防止上传中文名文件导致的文件名乱码
assert
originalfileName
!=
null
;
originalfileName
=
URLDecoder
.
decode
(
originalfileName
,
"UTF-8"
);
originalfileName
=
URLDecoder
.
decode
(
originalfileName
,
"UTF-8"
);
String
suffix
=
StringUtils
.
substring
(
originalfileName
,
originalfileName
.
lastIndexOf
(
"."
),
originalfileName
.
length
());
String
suffix
=
StringUtils
.
substring
(
originalfileName
,
originalfileName
.
lastIndexOf
(
"."
),
originalfileName
.
length
());
OssClient
storage
=
OssFactory
.
instance
();
OssClient
storage
=
OssFactory
.
instance
();
...
...
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