Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
isoft_psa
Project
Project
Details
Activity
Releases
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
王飞
isoft_psa
Commits
f3dac9c3
Commit
f3dac9c3
authored
Mar 04, 2025
by
wangjiancheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:项目管理
parent
5581ef71
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
1539 additions
and
0 deletions
+1539
-0
ProjectManageController.java
.../ruoyi/web/controller/system/ProjectManageController.java
+172
-0
ProjectNumberGenerator.java
...n/java/com/ruoyi/common/utils/ProjectNumberGenerator.java
+33
-0
ProjectManage.java
.../src/main/java/com/ruoyi/system/domain/ProjectManage.java
+115
-0
ProjectMember.java
.../src/main/java/com/ruoyi/system/domain/ProjectMember.java
+23
-0
ProjectRepayment.java
...c/main/java/com/ruoyi/system/domain/ProjectRepayment.java
+37
-0
ProjectManageMapper.java
...ain/java/com/ruoyi/system/mapper/ProjectManageMapper.java
+69
-0
ProjectMemberMapper.java
...ain/java/com/ruoyi/system/mapper/ProjectMemberMapper.java
+71
-0
ProjectRepaymentMapper.java
.../java/com/ruoyi/system/mapper/ProjectRepaymentMapper.java
+79
-0
IProjectManageService.java
.../java/com/ruoyi/system/service/IProjectManageService.java
+69
-0
IProjectMemberService.java
.../java/com/ruoyi/system/service/IProjectMemberService.java
+68
-0
IProjectRepaymentService.java
...va/com/ruoyi/system/service/IProjectRepaymentService.java
+69
-0
ProjectManageServiceImpl.java
...m/ruoyi/system/service/impl/ProjectManageServiceImpl.java
+197
-0
ProjectMemberServiceImpl.java
...m/ruoyi/system/service/impl/ProjectMemberServiceImpl.java
+101
-0
ProjectRepaymentServiceImpl.java
...uoyi/system/service/impl/ProjectRepaymentServiceImpl.java
+99
-0
ProjectManageMapper.xml
...src/main/resources/mapper/project/ProjectManageMapper.xml
+180
-0
ProjectMemberMapper.xml
...src/main/resources/mapper/project/ProjectMemberMapper.xml
+66
-0
ProjectRepaymentMapper.xml
.../main/resources/mapper/project/ProjectRepaymentMapper.xml
+91
-0
No files found.
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ProjectManageController.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
web
.
controller
.
system
;
import
java.util.List
;
import
javax.servlet.http.HttpServletResponse
;
import
com.ruoyi.system.domain.ProjectManage
;
import
com.ruoyi.system.domain.ProjectRepayment
;
import
com.ruoyi.system.mapper.ProjectRepaymentMapper
;
import
com.ruoyi.system.service.IProjectManageService
;
import
com.ruoyi.system.service.IProjectRepaymentService
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.ruoyi.common.annotation.Log
;
import
com.ruoyi.common.core.controller.BaseController
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.enums.BusinessType
;
import
com.ruoyi.common.utils.poi.ExcelUtil
;
import
com.ruoyi.common.core.page.TableDataInfo
;
/**
* 项目管理Controller
*
* @author wangjiancheng
* @date 2025-02-26
*/
@RestController
@RequestMapping
(
"/system/project"
)
public
class
ProjectManageController
extends
BaseController
{
@Autowired
private
IProjectManageService
projectManageService
;
@Autowired
private
IProjectRepaymentService
projectRepaymentService
;
@Autowired
private
ProjectRepaymentMapper
projectRepaymentMapper
;
/**
* 查询项目管理列表
*/
@PreAuthorize
(
"@ss.hasPermi('system:project:list')"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
ProjectManage
projectManage
)
{
startPage
();
// 查询数据库中所有项目
List
<
ProjectManage
>
list
=
projectManageService
.
selectProjectManageList
(
projectManage
);
// 设置项目的回款详情
for
(
ProjectManage
projectManage1
:
list
)
{
projectManage1
.
setRepaymentCount
(
projectRepaymentMapper
.
countProjectRepayment
(
projectManage1
.
getId
()));
ProjectRepayment
projectRepayment
=
new
ProjectRepayment
();
projectRepayment
.
setProjectId
(
projectManage1
.
getId
());
projectManage1
.
setRepaymentDetails
(
projectRepaymentService
.
selectProjectRepaymentList
(
projectRepayment
));
// 设置项目附件
}
return
getDataTable
(
list
);
}
/**
* 导出项目管理列表
*/
@PreAuthorize
(
"@ss.hasPermi('system:project:export')"
)
@Log
(
title
=
"项目管理"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
public
void
export
(
HttpServletResponse
response
,
ProjectManage
projectManage
)
{
List
<
ProjectManage
>
list
=
projectManageService
.
selectProjectManageList
(
projectManage
);
ExcelUtil
<
ProjectManage
>
util
=
new
ExcelUtil
<
ProjectManage
>(
ProjectManage
.
class
);
util
.
exportExcel
(
response
,
list
,
"项目管理数据"
);
}
/**
* 获取项目管理详细信息
*/
@PreAuthorize
(
"@ss.hasPermi('system:project:query')"
)
@GetMapping
(
value
=
"/{id}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
{
return
success
(
projectManageService
.
selectProjectManageById
(
id
));
}
/**
* 新增项目管理
*/
@PreAuthorize
(
"@ss.hasPermi('system:project:add')"
)
@Log
(
title
=
"项目管理"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
public
AjaxResult
add
(
@RequestBody
ProjectManage
projectManage
)
{
projectManage
.
setDelFlag
(
String
.
valueOf
(
ProjectManage
.
NO_DELETE
));
return
toAjax
(
projectManageService
.
insertProjectManage
(
projectManage
));
}
/**
* 修改项目管理
*/
@PreAuthorize
(
"@ss.hasPermi('system:project:edit')"
)
@Log
(
title
=
"项目管理"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
public
AjaxResult
edit
(
@RequestBody
ProjectManage
projectManage
)
{
return
toAjax
(
projectManageService
.
updateProjectManage
(
projectManage
));
}
/**
* 删除项目管理
*/
@PreAuthorize
(
"@ss.hasPermi('system:project:remove')"
)
@Log
(
title
=
"项目管理"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
{
return
toAjax
(
projectManageService
.
deleteProjectManageByIds
(
ids
));
}
/*
* 查询草稿箱项目
* */
@PreAuthorize
(
"@ss.hasPermi('system:project:draft')"
)
@GetMapping
(
"/draft/list"
)
public
TableDataInfo
draft
(
ProjectManage
projectManage
)
{
startPage
();
List
<
ProjectManage
>
list
=
projectManageService
.
selectProjectManageListDraft
(
projectManage
);
for
(
ProjectManage
projectManage1
:
list
)
{
// 设置项目的回款详情
projectManage1
.
setRepaymentCount
(
projectRepaymentMapper
.
countProjectRepayment
(
projectManage1
.
getId
()));
ProjectRepayment
projectRepayment
=
new
ProjectRepayment
();
projectRepayment
.
setProjectId
(
projectManage1
.
getId
());
projectManage1
.
setRepaymentDetails
(
projectRepaymentService
.
selectProjectRepaymentList
(
projectRepayment
));
// 设置项目附件
}
return
getDataTable
(
list
);
}
/*
* 新增草稿箱项目
* */
@PreAuthorize
(
"@ss.hasPermi('system:project:add')"
)
@Log
(
title
=
"项目管理"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
(
"/draft"
)
public
AjaxResult
addDraft
(
@RequestBody
ProjectManage
projectManage
)
{
projectManage
.
setDraft
(
String
.
valueOf
(
ProjectManage
.
DRAFT
));
return
toAjax
(
projectManageService
.
insertProjectManage
(
projectManage
));
}
/*
* 逻辑删除项目
* */
@PreAuthorize
(
"@ss.hasPermi('system:project:logicRemove')"
)
@Log
(
title
=
"项目管理"
,
businessType
=
BusinessType
.
OTHER
)
@DeleteMapping
(
"/logicRemove/{id}"
)
public
AjaxResult
logicRemove
(
@PathVariable
(
"id"
)
Long
id
)
{
ProjectManage
projectManage
=
new
ProjectManage
();
projectManage
.
setId
(
id
);
projectManage
.
setDelFlag
(
String
.
valueOf
(
ProjectManage
.
DELETE
));
return
toAjax
(
projectManageService
.
updateProjectManage
(
projectManage
));
}
}
ruoyi-common/src/main/java/com/ruoyi/common/utils/ProjectNumberGenerator.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
common
.
utils
;
import
java.time.LocalDate
;
import
java.time.format.DateTimeFormatter
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.atomic.AtomicInteger
;
public
class
ProjectNumberGenerator
{
// 存储当天每种类型的项目计数器
private
static
final
ConcurrentHashMap
<
String
,
AtomicInteger
>
projectCounter
=
new
ConcurrentHashMap
<>();
/**
* 生成项目编号
*
* @param type 项目类型 (KF RL YW PX PT LZ )
* @return 生成的项目编号
*/
public
static
String
generateProjectNumber
(
String
type
)
{
String
currentDate
=
LocalDate
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyyMMdd"
));
// 用于区分不同类型的项目
String
key
=
currentDate
+
type
;
// 如果该类型今天没有生成过编号,则初始化计数器为 1
projectCounter
.
computeIfAbsent
(
key
,
k
->
new
AtomicInteger
(
1
));
// 获取当前计数器值并递增
int
count
=
projectCounter
.
get
(
key
).
getAndIncrement
();
// 格式化序号为三位数
String
formattedCount
=
String
.
format
(
"%03d"
,
count
);
return
currentDate
+
type
+
formattedCount
;
}
}
ruoyi-system/src/main/java/com/ruoyi/system/domain/ProjectManage.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
domain
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.core.domain.BaseEntity
;
/**
* 项目管理对象 project_manage
*
* @author wangjiancheng
* @date 2025-02-26
*/
@Data
public
class
ProjectManage
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/** 主键id */
private
Long
id
;
/** 项目编号 */
@Excel
(
name
=
"项目编号"
)
private
String
projectNumber
;
/** 项目名称 */
@Excel
(
name
=
"项目名称"
)
private
String
projectName
;
/** 项目类型 */
@Excel
(
name
=
"项目类型"
)
private
String
projectType
;
/** 预计开始时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"预计开始时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
startDate
;
/** 预计结束时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"预计结束时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
endDate
;
/** 事业部负责人 */
@Excel
(
name
=
"事业部负责人"
)
private
Long
departmentLeaderId
;
/** 项目经理 */
@Excel
(
name
=
"项目经理"
)
private
Long
projectManagerId
;
/** 项目成本 */
@Excel
(
name
=
"项目成本"
)
private
BigDecimal
projectCost
;
/** 项目描述 */
@Excel
(
name
=
"项目描述"
)
private
String
projectDescribe
;
/** 项目状态 */
@Excel
(
name
=
"项目状态"
)
private
String
projectStatus
;
/** 立项时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"立项时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
createDate
;
/** 更新时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"更新时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
updateDate
;
/** 草稿箱(0-草稿 1-不是) */
private
String
draft
;
/** 删除标记(0-存在 1-删除) */
private
String
delFlag
;
// 事业部负责人名称(查询列表)
@TableField
(
exist
=
false
)
private
String
departmentLeaderName
;
// 项目经理名称(查询列表)
@TableField
(
exist
=
false
)
private
String
projectManagerName
;
// 查询项目成员名称(查询列表)
@TableField
(
exist
=
false
)
private
String
projectMemberNames
;
// 项目成员(详情,新增)
@TableField
(
exist
=
false
)
private
List
<
Long
>
projectMemberIds
;
// 回款笔数
@TableField
(
exist
=
false
)
private
int
repaymentCount
;
// 回款信息
@TableField
(
exist
=
false
)
private
List
<
ProjectRepayment
>
repaymentDetails
;
public
static
final
int
NO_DELETE
=
0
;
public
static
final
int
DELETE
=
1
;
public
static
final
int
DRAFT
=
0
;
public
static
final
int
NOT_DRAFT
=
1
;
}
ruoyi-system/src/main/java/com/ruoyi/system/domain/ProjectMember.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
domain
;
import
lombok.Data
;
import
com.ruoyi.common.core.domain.BaseEntity
;
/**
* 项目成员对象 project_member
*
* @author ruoyi
* @date 2025-02-28
*/
@Data
public
class
ProjectMember
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/** 项目id 关联项目管理表主键id */
private
Long
projectId
;
/** 用户id关联用户表主键id */
private
Long
userId
;
}
ruoyi-system/src/main/java/com/ruoyi/system/domain/ProjectRepayment.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
domain
;
import
lombok.Data
;
import
com.ruoyi.common.annotation.Excel
;
import
com.ruoyi.common.core.domain.BaseEntity
;
/**
* 项目回款对象 project_repayment
*
* @author ruoyi
* @date 2025-02-28
*/
@Data
public
class
ProjectRepayment
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/** 回款id */
private
Long
repaymentId
;
/** 回款百分比 */
@Excel
(
name
=
"回款百分比"
)
private
String
repaymentPercentage
;
/** 回款前置条件 */
@Excel
(
name
=
"回款前置条件"
)
private
String
repaymentCondition
;
/** 关联项目管理表主键id */
@Excel
(
name
=
"关联项目管理表主键id"
)
private
Long
projectId
;
/** 备注 */
@Excel
(
name
=
"备注"
)
private
String
notes
;
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ProjectManageMapper.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
mapper
;
import
com.ruoyi.system.domain.ProjectManage
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* 项目管理Mapper接口
*
* @author wangjiancheng
* @date 2025-02-26
*/
public
interface
ProjectManageMapper
{
/**
* 查询项目管理
*
* @param id 项目管理主键
* @return 项目管理
*/
public
ProjectManage
selectProjectManageById
(
@Param
(
"id"
)
Long
id
);
/**
* 查询项目管理列表
*
* @param projectManage 项目管理
* @return 项目管理集合
*/
public
List
<
ProjectManage
>
selectProjectManageList
(
ProjectManage
projectManage
);
/*
* 查询草稿箱项目管理列表
* */
public
List
<
ProjectManage
>
selectProjectManageListDraft
(
ProjectManage
projectManage
);
/**
* 新增项目管理
*
* @param projectManage 项目管理
* @return 结果
*/
public
int
insertProjectManage
(
ProjectManage
projectManage
);
/**
* 修改项目管理
*
* @param projectManage 项目管理
* @return 结果
*/
public
int
updateProjectManage
(
ProjectManage
projectManage
);
/**
* 删除项目管理
*
* @param id 项目管理主键
* @return 结果
*/
public
int
deleteProjectManageById
(
Long
id
);
/**
* 批量删除项目管理
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public
int
deleteProjectManageByIds
(
Long
[]
ids
);
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ProjectMemberMapper.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
mapper
;
import
java.util.List
;
import
com.ruoyi.system.domain.ProjectMember
;
import
org.apache.ibatis.annotations.Param
;
/**
* 项目成员Mapper接口
*
* @author ruoyi
* @date 2025-02-28
*/
public
interface
ProjectMemberMapper
{
/**
* 查询项目成员
*
* @param projectId 项目成员主键
* @return 项目成员
*/
public
ProjectMember
selectProjectMemberByProjectId
(
Long
projectId
);
/**
* 查询项目成员列表
*
* @param projectMember 项目成员
* @return 项目成员集合
*/
public
List
<
ProjectMember
>
selectProjectMemberList
(
ProjectMember
projectMember
);
/**
* 新增项目成员
*
* @param projectMember 项目成员
* @return 结果
*/
public
int
insertProjectMember
(
ProjectMember
projectMember
);
/**
* 修改项目成员
*
* @param projectMember 项目成员
* @return 结果
*/
public
int
updateProjectMember
(
ProjectMember
projectMember
);
/**
* 删除项目成员
*
* @param projectId 项目成员主键
* @return 结果
*/
public
int
deleteProjectMemberByProjectId
(
Long
projectId
);
/**
* 批量删除项目成员
*
* @param projectIds 需要删除的数据主键集合
* @return 结果
*/
public
int
deleteProjectMemberByProjectIds
(
Long
[]
projectIds
);
/**
* 批量新增项目成员
*
* @param projectId 项目 ID
* @param memberIds 成员 ID 列表
*/
void
batchInsertProjectMembers
(
@Param
(
"projectId"
)
Long
projectId
,
@Param
(
"memberIds"
)
List
<
Long
>
memberIds
);
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ProjectRepaymentMapper.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.ruoyi.system.domain.ProjectRepayment
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* 项目回款Mapper接口
*
* @author ruoyi
* @date 2025-02-28
*/
@Mapper
public
interface
ProjectRepaymentMapper
extends
BaseMapper
<
ProjectRepayment
>
{
/**
* 查询项目回款
*
* @param repaymentId 项目回款主键
* @return 项目回款
*/
public
ProjectRepayment
selectProjectRepaymentByRepaymentId
(
Long
repaymentId
);
/**
* 查询项目回款列表
*
* @param projectRepayment 项目回款
* @return 项目回款集合
*/
public
List
<
ProjectRepayment
>
selectProjectRepaymentList
(
ProjectRepayment
projectRepayment
);
/**
* 新增项目回款
*
* @param projectRepayment 项目回款
* @return 结果
*/
public
int
insertProjectRepayment
(
ProjectRepayment
projectRepayment
);
/**
* 修改项目回款
*
* @param projectRepayment 项目回款
* @return 结果
*/
public
int
updateProjectRepayment
(
ProjectRepayment
projectRepayment
);
/**
* 删除项目回款
*
* @param repaymentId 项目回款主键
* @return 结果
*/
public
int
deleteProjectRepaymentByRepaymentId
(
Long
repaymentId
);
/**
* 批量删除项目回款
*
* @param repaymentIds 需要删除的数据主键集合
* @return 结果
*/
public
int
deleteProjectRepaymentByRepaymentIds
(
Long
[]
repaymentIds
);
/*
* 统计个项目回款笔数
* @param projectId 项目id
*
* */
int
countProjectRepayment
(
Long
projectId
);
/*
* 批量插入项目回款
* */
void
batchInsertProjectRepayments
(
@Param
(
"projectRepayments"
)
List
<
ProjectRepayment
>
projectRepayments
);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/IProjectManageService.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
service
;
import
com.ruoyi.system.domain.ProjectManage
;
import
java.util.List
;
/**
* 项目管理Service接口
*
* @author wangjiancheng
* @date 2025-02-26
*/
public
interface
IProjectManageService
{
/**
* 查询项目管理
*
* @param id 项目管理主键
* @return 项目管理
*/
public
ProjectManage
selectProjectManageById
(
Long
id
);
/**
* 查询项目管理列表
*
* @param projectManage 项目管理
* @return 项目管理集合
*/
public
List
<
ProjectManage
>
selectProjectManageList
(
ProjectManage
projectManage
);
/*
* 查询草稿箱项目
* @param projectManage 草稿箱项目管理
* */
public
List
<
ProjectManage
>
selectProjectManageListDraft
(
ProjectManage
projectManage
);
/**
* 新增项目管理
*
* @param projectManage 项目管理
* @return 结果
*/
public
int
insertProjectManage
(
ProjectManage
projectManage
);
/**
* 修改项目管理
*
* @param projectManage 项目管理
* @return 结果
*/
public
int
updateProjectManage
(
ProjectManage
projectManage
);
/**
* 批量删除项目管理
*
* @param ids 需要删除的项目管理主键集合
* @return 结果
*/
public
int
deleteProjectManageByIds
(
Long
[]
ids
);
/**
* 删除项目管理信息
*
* @param id 项目管理主键
* @return 结果
*/
public
int
deleteProjectManageById
(
Long
id
);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/IProjectMemberService.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
service
;
import
java.util.List
;
import
com.ruoyi.system.domain.ProjectMember
;
/**
* 项目成员Service接口
*
* @author ruoyi
* @date 2025-02-28
*/
public
interface
IProjectMemberService
{
/**
* 查询项目成员
*
* @param projectId 项目成员主键
* @return 项目成员
*/
public
ProjectMember
selectProjectMemberByProjectId
(
Long
projectId
);
/**
* 查询项目成员列表
*
* @param projectMember 项目成员
* @return 项目成员集合
*/
public
List
<
ProjectMember
>
selectProjectMemberList
(
ProjectMember
projectMember
);
/**
* 新增项目成员
*
* @param projectMember 项目成员
* @return 结果
*/
public
int
insertProjectMember
(
ProjectMember
projectMember
);
/**
* 修改项目成员
*
* @param projectMember 项目成员
* @return 结果
*/
public
int
updateProjectMember
(
ProjectMember
projectMember
);
/**
* 批量删除项目成员
*
* @param projectIds 需要删除的项目成员主键集合
* @return 结果
*/
public
int
deleteProjectMemberByProjectIds
(
Long
[]
projectIds
);
/**
* 删除项目成员信息
*
* @param projectId 项目成员主键
* @return 结果
*/
public
int
deleteProjectMemberByProjectId
(
Long
projectId
);
/*
* 批量新增项目成员
* @param projectId 项目id
* @param memberIds 成员id集合
* */
public
void
batchInsertProjectMembers
(
Long
projectId
,
List
<
Long
>
memberIds
);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/IProjectRepaymentService.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
service
;
import
com.ruoyi.system.domain.ProjectRepayment
;
import
java.util.List
;
/**
* 项目回款Service接口
*
* @author ruoyi
* @date 2025-02-28
*/
public
interface
IProjectRepaymentService
{
/**
* 查询项目回款
*
* @param repaymentId 项目回款主键
* @return 项目回款
*/
public
ProjectRepayment
selectProjectRepaymentByRepaymentId
(
Long
repaymentId
);
/**
* 查询项目回款列表
*
* @param projectRepayment 项目回款
* @return 项目回款集合
*/
public
List
<
ProjectRepayment
>
selectProjectRepaymentList
(
ProjectRepayment
projectRepayment
);
/**
* 新增项目回款
*
* @param projectRepayment 项目回款
* @return 结果
*/
public
int
insertProjectRepayment
(
ProjectRepayment
projectRepayment
);
/**
* 修改项目回款
*
* @param projectRepayment 项目回款
* @return 结果
*/
public
int
updateProjectRepayment
(
ProjectRepayment
projectRepayment
);
/**
* 批量删除项目回款
*
* @param repaymentIds 需要删除的项目回款主键集合
* @return 结果
*/
public
int
deleteProjectRepaymentByRepaymentIds
(
Long
[]
repaymentIds
);
/**
* 删除项目回款信息
*
* @param repaymentId 项目回款主键
* @return 结果
*/
public
int
deleteProjectRepaymentByRepaymentId
(
Long
repaymentId
);
/*
* 批量插入项目回款信息
* @param projectRepayments 项目回款信息集合
*
* */
public
void
batchInsertProjectRepayments
(
List
<
ProjectRepayment
>
projectRepayments
);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProjectManageServiceImpl.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
service
.
impl
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
com.ruoyi.common.utils.DateUtils
;
import
com.ruoyi.common.utils.ProjectNumberGenerator
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.system.domain.ProjectManage
;
import
com.ruoyi.system.domain.ProjectMember
;
import
com.ruoyi.system.domain.ProjectRepayment
;
import
com.ruoyi.system.mapper.ProjectManageMapper
;
import
com.ruoyi.system.mapper.ProjectRepaymentMapper
;
import
com.ruoyi.system.service.IProjectManageService
;
import
com.ruoyi.system.service.IProjectMemberService
;
import
com.ruoyi.system.service.IProjectRepaymentService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
* 项目管理Service业务层处理
*
* @author wangjiancheng
* @date 2025-02-26
*/
@Service
public
class
ProjectManageServiceImpl
implements
IProjectManageService
{
@Autowired
private
ProjectManageMapper
projectManageMapper
;
@Autowired
private
IProjectMemberService
projectMemberService
;
@Autowired
private
IProjectRepaymentService
projectRepaymentService
;
@Autowired
private
ProjectRepaymentMapper
projectRepaymentMapper
;
/**
* 查询项目管理
*
* @param id 项目管理主键
* @return 项目管理
*/
@Override
public
ProjectManage
selectProjectManageById
(
Long
id
)
{
ProjectManage
projectManage
=
projectManageMapper
.
selectProjectManageById
(
id
);
String
projectMemberIdsStr
=
projectManage
.
getProjectMemberNames
().
trim
();
if
(
projectMemberIdsStr
.
isEmpty
())
{
// 设置为空列表
projectManage
.
setProjectMemberIds
(
new
ArrayList
<>());
}
else
{
// 将字符串分割并转换为 Long 类型的列表
projectManage
.
setProjectMemberIds
(
Arrays
.
stream
(
projectMemberIdsStr
.
split
(
","
))
.
map
(
Long:
:
parseLong
)
.
collect
(
Collectors
.
toList
()));
}
// 设置项目的回款详情
projectManage
.
setRepaymentCount
(
projectRepaymentMapper
.
countProjectRepayment
(
id
));
ProjectRepayment
projectRepayment
=
new
ProjectRepayment
();
projectRepayment
.
setProjectId
(
id
);
projectManage
.
setRepaymentDetails
(
projectRepaymentService
.
selectProjectRepaymentList
(
projectRepayment
));
// 设置项目附件
return
projectManage
;
}
/**
* 查询项目管理列表
*
* @param projectManage 项目管理
* @return 项目管理
*/
@Override
public
List
<
ProjectManage
>
selectProjectManageList
(
ProjectManage
projectManage
)
{
return
projectManageMapper
.
selectProjectManageList
(
projectManage
);
}
/*
* 查询草稿箱项目
* */
@Override
public
List
<
ProjectManage
>
selectProjectManageListDraft
(
ProjectManage
projectManage
)
{
return
projectManageMapper
.
selectProjectManageListDraft
(
projectManage
);
}
/**
* 新增项目管理
*
* @param projectManage 项目管理
* @return 结果
*/
@Override
public
int
insertProjectManage
(
ProjectManage
projectManage
)
{
// 生成项目编号
projectManage
.
setProjectNumber
(
ProjectNumberGenerator
.
generateProjectNumber
(
projectManage
.
getProjectType
()));
// 判断项目编号是否重复
ProjectManage
projectManageQuery
=
new
ProjectManage
();
projectManageQuery
.
setProjectNumber
(
projectManage
.
getProjectNumber
());
if
(!
selectProjectManageList
(
projectManageQuery
).
isEmpty
())
{
return
0
;
}
// 立项时间
projectManage
.
setCreateDate
(
new
Date
());
projectManage
.
setDelFlag
(
String
.
valueOf
(
ProjectManage
.
NO_DELETE
));
//projectManage.setUpdateDate(new Date());
// 事业部负责人
projectManage
.
setDepartmentLeaderId
(
SecurityUtils
.
getUserId
());
// 新增项目成员
projectManage
.
getProjectMemberIds
().
forEach
(
memberId
->
{
ProjectMember
projectMember
=
new
ProjectMember
();
projectMember
.
setProjectId
(
projectManage
.
getId
());
projectMember
.
setUserId
(
memberId
);
projectMemberService
.
insertProjectMember
(
projectMember
);
});
//projectMemberService.batchInsertProjectMembers(projectManage.getId(), projectManage.getProjectMemberIds());
// 新增项目回款
projectManage
.
getRepaymentDetails
().
forEach
(
projectRepayment
->
{
projectRepayment
.
setProjectId
(
projectManage
.
getId
());
projectRepaymentService
.
insertProjectRepayment
(
projectRepayment
);
});
// 新增项目附件
return
projectManageMapper
.
insertProjectManage
(
projectManage
);
}
/**
* 修改项目管理
*
* @param projectManage 项目管理
* @return 结果
*/
@Override
public
int
updateProjectManage
(
ProjectManage
projectManage
)
{
if
(
projectManage
.
getProjectMemberIds
()
!=
null
&&
!
projectManage
.
getProjectMemberIds
().
isEmpty
()){
// 项目成员
projectManage
.
getProjectMemberIds
().
forEach
(
memberId
->
{
ProjectMember
projectMember
=
new
ProjectMember
();
projectMember
.
setProjectId
(
projectManage
.
getId
());
projectMember
.
setUserId
(
memberId
);
// 判断同一项目下成员是否重复
if
(!
projectMemberService
.
selectProjectMemberList
(
projectMember
).
isEmpty
())
{
System
.
out
.
println
(
"项目成员已存在"
);
return
;
}
else
{
projectMemberService
.
insertProjectMember
(
projectMember
);
}
});
}
if
(
projectManage
.
getRepaymentDetails
()
!=
null
&&
!
projectManage
.
getRepaymentDetails
().
isEmpty
()){
// 项目回款
projectManage
.
getRepaymentDetails
().
forEach
(
projectRepayment
->
{
// 判断同一项目下回款是否重复 直接删除重新添加新的
if
(!
projectRepaymentService
.
selectProjectRepaymentList
(
projectRepayment
).
isEmpty
())
{
System
.
out
.
println
(
"项目回款重复"
);
return
;
}
else
{
projectRepayment
.
setProjectId
(
projectManage
.
getId
());
projectRepaymentService
.
insertProjectRepayment
(
projectRepayment
);
}
});
}
// 更新附件
projectManage
.
setUpdateDate
(
DateUtils
.
getNowDate
());
return
projectManageMapper
.
updateProjectManage
(
projectManage
);
}
/**
* 批量删除项目管理
*
* @param ids 需要删除的项目管理主键
* @return 结果
*/
@Override
public
int
deleteProjectManageByIds
(
Long
[]
ids
)
{
return
projectManageMapper
.
deleteProjectManageByIds
(
ids
);
}
/**
* 删除项目管理信息
*
* @param id 项目管理主键
* @return 结果
*/
@Override
public
int
deleteProjectManageById
(
Long
id
)
{
return
projectManageMapper
.
deleteProjectManageById
(
id
);
}
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProjectMemberServiceImpl.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
service
.
impl
;
import
java.util.List
;
import
com.ruoyi.system.mapper.ProjectMemberMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.ruoyi.system.domain.ProjectMember
;
import
com.ruoyi.system.service.IProjectMemberService
;
/**
* 项目成员Service业务层处理
*
* @author ruoyi
* @date 2025-02-28
*/
@Service
public
class
ProjectMemberServiceImpl
implements
IProjectMemberService
{
@Autowired
private
ProjectMemberMapper
projectMemberMapper
;
/**
* 查询项目成员
*
* @param projectId 项目成员主键
* @return 项目成员
*/
@Override
public
ProjectMember
selectProjectMemberByProjectId
(
Long
projectId
)
{
return
projectMemberMapper
.
selectProjectMemberByProjectId
(
projectId
);
}
/**
* 查询项目成员列表
*
* @param projectMember 项目成员
* @return 项目成员
*/
@Override
public
List
<
ProjectMember
>
selectProjectMemberList
(
ProjectMember
projectMember
)
{
return
projectMemberMapper
.
selectProjectMemberList
(
projectMember
);
}
/**
* 新增项目成员
*
* @param projectMember 项目成员
* @return 结果
*/
@Override
public
int
insertProjectMember
(
ProjectMember
projectMember
)
{
return
projectMemberMapper
.
insertProjectMember
(
projectMember
);
}
/**
* 修改项目成员
*
* @param projectMember 项目成员
* @return 结果
*/
@Override
public
int
updateProjectMember
(
ProjectMember
projectMember
)
{
return
projectMemberMapper
.
updateProjectMember
(
projectMember
);
}
/**
* 批量删除项目成员
*
* @param projectIds 需要删除的项目成员主键
* @return 结果
*/
@Override
public
int
deleteProjectMemberByProjectIds
(
Long
[]
projectIds
)
{
return
projectMemberMapper
.
deleteProjectMemberByProjectIds
(
projectIds
);
}
/**
* 删除项目成员信息
*
* @param projectId 项目成员主键
* @return 结果
*/
@Override
public
int
deleteProjectMemberByProjectId
(
Long
projectId
)
{
return
projectMemberMapper
.
deleteProjectMemberByProjectId
(
projectId
);
}
@Override
public
void
batchInsertProjectMembers
(
Long
projectId
,
List
<
Long
>
memberIds
)
{
if
(
memberIds
!=
null
&&
!
memberIds
.
isEmpty
())
{
projectMemberMapper
.
batchInsertProjectMembers
(
projectId
,
memberIds
);
}
}
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProjectRepaymentServiceImpl.java
0 → 100644
View file @
f3dac9c3
package
com
.
ruoyi
.
system
.
service
.
impl
;
import
java.util.List
;
import
com.ruoyi.system.domain.ProjectRepayment
;
import
com.ruoyi.system.mapper.ProjectRepaymentMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.ruoyi.system.service.IProjectRepaymentService
;
/**
* 项目回款Service业务层处理
*
* @author ruoyi
* @date 2025-02-28
*/
@Service
public
class
ProjectRepaymentServiceImpl
implements
IProjectRepaymentService
{
@Autowired
private
ProjectRepaymentMapper
projectRepaymentMapper
;
/**
* 查询项目回款
*
* @param repaymentId 项目回款主键
* @return 项目回款
*/
@Override
public
ProjectRepayment
selectProjectRepaymentByRepaymentId
(
Long
repaymentId
)
{
return
projectRepaymentMapper
.
selectProjectRepaymentByRepaymentId
(
repaymentId
);
}
/**
* 查询项目回款列表
*
* @param projectRepayment 项目回款
* @return 项目回款
*/
@Override
public
List
<
ProjectRepayment
>
selectProjectRepaymentList
(
ProjectRepayment
projectRepayment
)
{
return
projectRepaymentMapper
.
selectProjectRepaymentList
(
projectRepayment
);
}
/**
* 新增项目回款
*
* @param projectRepayment 项目回款
* @return 结果
*/
@Override
public
int
insertProjectRepayment
(
ProjectRepayment
projectRepayment
)
{
return
projectRepaymentMapper
.
insertProjectRepayment
(
projectRepayment
);
}
/**
* 修改项目回款
*
* @param projectRepayment 项目回款
* @return 结果
*/
@Override
public
int
updateProjectRepayment
(
ProjectRepayment
projectRepayment
)
{
return
projectRepaymentMapper
.
updateProjectRepayment
(
projectRepayment
);
}
/**
* 批量删除项目回款
*
* @param repaymentIds 需要删除的项目回款主键
* @return 结果
*/
@Override
public
int
deleteProjectRepaymentByRepaymentIds
(
Long
[]
repaymentIds
)
{
return
projectRepaymentMapper
.
deleteProjectRepaymentByRepaymentIds
(
repaymentIds
);
}
/**
* 删除项目回款信息
*
* @param repaymentId 项目回款主键
* @return 结果
*/
@Override
public
int
deleteProjectRepaymentByRepaymentId
(
Long
repaymentId
)
{
return
projectRepaymentMapper
.
deleteProjectRepaymentByRepaymentId
(
repaymentId
);
}
@Override
public
void
batchInsertProjectRepayments
(
List
<
ProjectRepayment
>
projectRepayments
)
{
projectRepaymentMapper
.
batchInsertProjectRepayments
(
projectRepayments
);
}
}
ruoyi-system/src/main/resources/mapper/project/ProjectManageMapper.xml
0 → 100644
View file @
f3dac9c3
This diff is collapsed.
Click to expand it.
ruoyi-system/src/main/resources/mapper/project/ProjectMemberMapper.xml
0 → 100644
View file @
f3dac9c3
<?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.ruoyi.system.mapper.ProjectMemberMapper"
>
<resultMap
type=
"ProjectMember"
id=
"ProjectMemberResult"
>
<result
property=
"projectId"
column=
"project_id"
/>
<result
property=
"userId"
column=
"user_id"
/>
</resultMap>
<sql
id=
"selectProjectMemberVo"
>
select project_id, user_id from project_member
</sql>
<select
id=
"selectProjectMemberList"
parameterType=
"ProjectMember"
resultMap=
"ProjectMemberResult"
>
<include
refid=
"selectProjectMemberVo"
/>
<where>
</where>
</select>
<select
id=
"selectProjectMemberByProjectId"
parameterType=
"Long"
resultMap=
"ProjectMemberResult"
>
<include
refid=
"selectProjectMemberVo"
/>
where project_id = #{projectId}
</select>
<insert
id=
"insertProjectMember"
parameterType=
"ProjectMember"
>
insert into project_member
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"projectId != null"
>
project_id,
</if>
<if
test=
"userId != null"
>
user_id,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"projectId != null"
>
#{projectId},
</if>
<if
test=
"userId != null"
>
#{userId},
</if>
</trim>
</insert>
<update
id=
"updateProjectMember"
parameterType=
"ProjectMember"
>
update project_member
<trim
prefix=
"SET"
suffixOverrides=
","
>
<if
test=
"userId != null"
>
user_id = #{userId},
</if>
</trim>
where project_id = #{projectId}
</update>
<delete
id=
"deleteProjectMemberByProjectId"
parameterType=
"Long"
>
delete from project_member where project_id = #{projectId}
</delete>
<delete
id=
"deleteProjectMemberByProjectIds"
parameterType=
"String"
>
delete from project_member where project_id in
<foreach
item=
"projectId"
collection=
"array"
open=
"("
separator=
","
close=
")"
>
#{projectId}
</foreach>
</delete>
<!-- 批量新增项目成员 -->
<insert
id=
"batchInsertProjectMembers"
>
INSERT INTO project_member (project_id, user_id)
VALUES
<foreach
collection=
"memberIds"
item=
"memberId"
separator=
","
>
(#{projectId}, #{memberId})
</foreach>
</insert>
</mapper>
ruoyi-system/src/main/resources/mapper/project/ProjectRepaymentMapper.xml
0 → 100644
View file @
f3dac9c3
<?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.ruoyi.system.mapper.ProjectRepaymentMapper"
>
<resultMap
type=
"ProjectRepayment"
id=
"ProjectRepaymentResult"
>
<result
property=
"repaymentId"
column=
"repayment_id"
/>
<result
property=
"repaymentPercentage"
column=
"repayment_percentage"
/>
<result
property=
"repaymentCondition"
column=
"repayment_condition"
/>
<result
property=
"projectId"
column=
"project_id"
/>
<result
property=
"notes"
column=
"notes"
/>
</resultMap>
<sql
id=
"selectProjectRepaymentVo"
>
select repayment_id, repayment_percentage, repayment_condition, project_id, notes from project_repayment
</sql>
<select
id=
"selectProjectRepaymentList"
parameterType=
"ProjectRepayment"
resultMap=
"ProjectRepaymentResult"
>
<include
refid=
"selectProjectRepaymentVo"
/>
<where>
<if
test=
"repaymentPercentage != null "
>
and repayment_percentage = #{repaymentPercentage}
</if>
<if
test=
"repaymentCondition != null and repaymentCondition != ''"
>
and repayment_condition = #{repaymentCondition}
</if>
<if
test=
"projectId != null "
>
and project_id = #{projectId}
</if>
<if
test=
"notes != null and notes != ''"
>
and notes = #{notes}
</if>
</where>
</select>
<select
id=
"selectProjectRepaymentByRepaymentId"
parameterType=
"Long"
resultMap=
"ProjectRepaymentResult"
>
<include
refid=
"selectProjectRepaymentVo"
/>
where repayment_id = #{repaymentId}
</select>
<insert
id=
"insertProjectRepayment"
parameterType=
"ProjectRepayment"
useGeneratedKeys=
"true"
keyProperty=
"repaymentId"
>
insert into project_repayment
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"repaymentPercentage != null"
>
repayment_percentage,
</if>
<if
test=
"repaymentCondition != null"
>
repayment_condition,
</if>
<if
test=
"projectId != null"
>
project_id,
</if>
<if
test=
"notes != null"
>
notes,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"repaymentPercentage != null"
>
#{repaymentPercentage},
</if>
<if
test=
"repaymentCondition != null"
>
#{repaymentCondition},
</if>
<if
test=
"projectId != null"
>
#{projectId},
</if>
<if
test=
"notes != null"
>
#{notes},
</if>
</trim>
</insert>
<update
id=
"updateProjectRepayment"
parameterType=
"ProjectRepayment"
>
update project_repayment
<trim
prefix=
"SET"
suffixOverrides=
","
>
<if
test=
"repaymentPercentage != null"
>
repayment_percentage = #{repaymentPercentage},
</if>
<if
test=
"repaymentCondition != null"
>
repayment_condition = #{repaymentCondition},
</if>
<if
test=
"projectId != null"
>
project_id = #{projectId},
</if>
<if
test=
"notes != null"
>
notes = #{notes},
</if>
</trim>
where repayment_id = #{repaymentId}
</update>
<delete
id=
"deleteProjectRepaymentByRepaymentId"
parameterType=
"Long"
>
delete from project_repayment where repayment_id = #{repaymentId}
</delete>
<delete
id=
"deleteProjectRepaymentByRepaymentIds"
parameterType=
"String"
>
delete from project_repayment where repayment_id in
<foreach
item=
"repaymentId"
collection=
"array"
open=
"("
separator=
","
close=
")"
>
#{repaymentId}
</foreach>
</delete>
<select
id=
"countProjectRepayment"
parameterType=
"Long"
resultType=
"int"
>
select count(*) from project_repayment where project_id = #{projectId}
</select>
<!--批量新增-->
<insert
id=
"batchProjectRepayment"
parameterType=
"java.util.List"
>
insert into project_repayment
(repayment_percentage,repayment_condition,project_id,notes)
values
<foreach
collection=
"projectRepayments"
item=
"repayment"
separator=
","
>
(
<trim
suffixOverrides=
","
>
<if
test=
"item.repaymentPercentage != null"
>
#{item.repaymentPercentage},
</if>
<if
test=
"item.repaymentCondition != null"
>
#{item.repaymentCondition},
</if>
<if
test=
"item.projectId != null"
>
#{item.projectId},
</if>
<if
test=
"item.notes != null"
>
#{item.notes},
</if>
</trim>
)
</foreach>
</insert>
</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