Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
aa0b2b82
提交
aa0b2b82
authored
12月 11, 2024
作者:
hzh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
审批流程配置
上级
ef575a10
隐藏空白字符变更
内嵌
并排
正在显示
18 个修改的文件
包含
813 行增加
和
20 行删除
+813
-20
ProcessApproveStatus.java
...ava/org/dromara/server/constant/ProcessApproveStatus.java
+21
-0
ProcessKey.java
...src/main/java/org/dromara/server/constant/ProcessKey.java
+19
-0
ProcessStepApprove.java
.../java/org/dromara/server/constant/ProcessStepApprove.java
+19
-0
ProcessStepType.java
...ain/java/org/dromara/server/constant/ProcessStepType.java
+27
-0
ProcessProgressController.java
.../dromara/server/controller/ProcessProgressController.java
+106
-0
TrainController.java
.../org/dromara/server/controller/train/TrainController.java
+0
-1
ProcessApprove.java
...c/main/java/org/dromara/server/domain/ProcessApprove.java
+5
-5
ProcessProgress.java
.../main/java/org/dromara/server/domain/ProcessProgress.java
+79
-0
ProcessApproveBo.java
...n/java/org/dromara/server/domain/bo/ProcessApproveBo.java
+8
-7
ProcessProgressBo.java
.../java/org/dromara/server/domain/bo/ProcessProgressBo.java
+80
-0
Process.java
...r/src/main/java/org/dromara/server/domain/vo/Process.java
+42
-0
ProcessApproveVo.java
...n/java/org/dromara/server/domain/vo/ProcessApproveVo.java
+2
-6
ProcessProgressVo.java
.../java/org/dromara/server/domain/vo/ProcessProgressVo.java
+86
-0
ProcessProgressMapper.java
...java/org/dromara/server/mapper/ProcessProgressMapper.java
+15
-0
IProcessProgressService.java
...a/org/dromara/server/service/IProcessProgressService.java
+63
-0
ProcessApproveServiceImpl.java
...romara/server/service/impl/ProcessApproveServiceImpl.java
+0
-1
ProcessProgressServiceImpl.java
...omara/server/service/impl/ProcessProgressServiceImpl.java
+234
-0
ProcessProgressMapper.xml
...rc/main/resources/mapper/server/ProcessProgressMapper.xml
+7
-0
没有找到文件。
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/constant/ProcessApproveStatus.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
constant
;
/**
* @author wenhe
*/
public
enum
ProcessApproveStatus
{
/**
* 审批中
*/
APPROVEIND
,
/**
* 审批拒绝
*/
REJECT
,
/**
* 审批完成
*/
END
;
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/constant/ProcessKey.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
constant
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
ProcessKey
{
//出差审批
PROCESS_KEY_TRAVEL
(
"process-travel"
,
"出差审批"
);
private
String
key
;
private
String
desc
;
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/constant/ProcessStepApprove.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
constant
;
/**
* @author wenhe
*/
public
enum
ProcessStepApprove
{
/**
* 会签
*/
AND
,
/**
* 或签
*/
OR
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/constant/ProcessStepType.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
constant
;
/**
* 流程步骤类型
*
* @author wenhe
*/
public
enum
ProcessStepType
{
/**
* 开始
*/
START
,
/**
* 其他
*/
OTHER
,
/**
* 审批
*/
APPROVE
,
/**
* 结束
*/
END
;
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/controller/ProcessProgressController.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
controller
;
import
java.util.List
;
import
lombok.RequiredArgsConstructor
;
import
jakarta.servlet.http.HttpServletResponse
;
import
jakarta.validation.constraints.*
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.validation.annotation.Validated
;
import
org.dromara.common.idempotent.annotation.RepeatSubmit
;
import
org.dromara.common.log.annotation.Log
;
import
org.dromara.common.web.core.BaseController
;
import
org.dromara.common.mybatis.core.page.PageQuery
;
import
org.dromara.common.core.domain.R
;
import
org.dromara.common.core.validate.AddGroup
;
import
org.dromara.common.core.validate.EditGroup
;
import
org.dromara.common.log.enums.BusinessType
;
import
org.dromara.common.excel.utils.ExcelUtil
;
import
org.dromara.server.domain.vo.ProcessProgressVo
;
import
org.dromara.server.domain.bo.ProcessProgressBo
;
import
org.dromara.server.service.IProcessProgressService
;
import
org.dromara.common.mybatis.core.page.TableDataInfo
;
/**
* 流程进度
* 前端访问路由地址为:/server/progress
*
* @author hzh
* @date 2024-12-11
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping
(
"/progress"
)
public
class
ProcessProgressController
extends
BaseController
{
private
final
IProcessProgressService
processProgressService
;
/**
* 查询流程进度列表
*/
@SaCheckPermission
(
"server:progress:list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
<
ProcessProgressVo
>
list
(
ProcessProgressBo
bo
,
PageQuery
pageQuery
)
{
return
processProgressService
.
queryPageList
(
bo
,
pageQuery
);
}
/**
* 导出流程进度列表
*/
@SaCheckPermission
(
"server:progress:export"
)
@Log
(
title
=
"流程进度"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
public
void
export
(
ProcessProgressBo
bo
,
HttpServletResponse
response
)
{
List
<
ProcessProgressVo
>
list
=
processProgressService
.
queryList
(
bo
);
ExcelUtil
.
exportExcel
(
list
,
"流程进度"
,
ProcessProgressVo
.
class
,
response
);
}
/**
* 获取流程进度详细信息
*
* @param id 主键
*/
@SaCheckPermission
(
"server:progress:query"
)
@GetMapping
(
"/{id}"
)
public
R
<
ProcessProgressVo
>
getInfo
(
@NotNull
(
message
=
"主键不能为空"
)
@PathVariable
Long
id
)
{
return
R
.
ok
(
processProgressService
.
queryById
(
id
));
}
/**
* 新增流程进度
*/
@SaCheckPermission
(
"server:progress:add"
)
@Log
(
title
=
"流程进度"
,
businessType
=
BusinessType
.
INSERT
)
@RepeatSubmit
()
@PostMapping
()
public
R
<
Void
>
add
(
@Validated
(
AddGroup
.
class
)
@RequestBody
ProcessProgressBo
bo
)
{
return
toAjax
(
processProgressService
.
insertByBo
(
bo
));
}
/**
* 修改流程进度
*/
@SaCheckPermission
(
"server:progress:edit"
)
@Log
(
title
=
"流程进度"
,
businessType
=
BusinessType
.
UPDATE
)
@RepeatSubmit
()
@PutMapping
()
public
R
<
Void
>
edit
(
@Validated
(
EditGroup
.
class
)
@RequestBody
ProcessProgressBo
bo
)
{
return
toAjax
(
processProgressService
.
updateByBo
(
bo
));
}
/**
* 删除流程进度
*
* @param ids 主键串
*/
@SaCheckPermission
(
"server:progress:remove"
)
@Log
(
title
=
"流程进度"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
public
R
<
Void
>
remove
(
@NotEmpty
(
message
=
"主键不能为空"
)
@PathVariable
Long
[]
ids
)
{
return
toAjax
(
processProgressService
.
deleteWithValidByIds
(
List
.
of
(
ids
),
true
));
}
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/controller/train/TrainController.java
浏览文件 @
aa0b2b82
...
...
@@ -146,7 +146,6 @@ public class TrainController extends BaseController {
.
setToStationCode
(
toStationCode
)
.
setTripType
(
TripType
.
PUBLIC
.
getCode
());
List
<
org
.
dromara
.
common
.
ys
.
model
.
res
.
train
.
QueryModel
>
list
=
trainService
.
queryModel
(
userId
,
query
);
System
.
out
.
println
(
"list:"
+
list
.
size
());
return
R
.
ok
(
list
);
}
...
...
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/domain/ProcessApprove.java
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
domain
;
import
org.dromara.common.tenant.core.TenantEntity
;
import
com.baomidou.mybatisplus.annotation.
*
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.
TableName
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
org.dromara.common.tenant.core.TenantEntity
;
import
java.io.Serial
;
import
java.util.Date
;
/**
* 出差申请审批对象 process_approve
...
...
@@ -72,7 +72,7 @@ public class ProcessApprove extends TenantEntity {
/**
* 是否通过
*/
private
Long
pass
;
private
Boolean
pass
;
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/domain/ProcessProgress.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
domain
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.tenant.core.TenantEntity
;
import
com.baomidou.mybatisplus.annotation.*
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serial
;
/**
* 流程进度对象 process_progress
*
* @author hzh
* @date 2024-12-11
*/
@Data
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"process_progress"
)
public
class
ProcessProgress
extends
TenantEntity
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* id
*/
@TableId
(
value
=
"id"
)
private
Long
id
;
/**
* 流程定义key
*/
private
String
processKey
;
/**
* 流程名称
*/
private
String
processName
;
/**
* 流程步骤key
*/
private
String
processStepKey
;
/**
* 流程步骤
*/
private
String
processStepName
;
/**
* 审批类型
*/
private
String
approveType
;
/**
* 关联id
*/
private
Long
relatedId
;
/**
* 用户id
*/
private
Long
approveUserId
;
/**
* 用户
*/
private
String
approveUserName
;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private
String
delFlag
;
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/domain/bo/ProcessApproveBo.java
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
domain
.
bo
;
import
org.dromara.server.domain.ProcessApprove
;
import
org.dromara.common.mybatis.core.domain.BaseEntity
;
import
org.dromara.common.core.validate.AddGroup
;
import
org.dromara.common.core.validate.EditGroup
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
jakarta.validation.constraints.NotBlank
;
import
jakarta.validation.constraints.NotNull
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
jakarta.validation.constraints.*
;
import
org.dromara.common.core.validate.AddGroup
;
import
org.dromara.common.core.validate.EditGroup
;
import
org.dromara.common.mybatis.core.domain.BaseEntity
;
import
org.dromara.server.domain.ProcessApprove
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
/**
* 出差申请审批业务对象 process_approve
...
...
@@ -80,7 +81,7 @@ public class ProcessApproveBo extends BaseEntity {
* 是否通过
*/
@NotNull
(
message
=
"是否通过不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
pass
;
private
Boolean
pass
;
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/domain/bo/ProcessProgressBo.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
domain
.
bo
;
import
lombok.experimental.Accessors
;
import
org.dromara.server.domain.ProcessProgress
;
import
org.dromara.common.mybatis.core.domain.BaseEntity
;
import
org.dromara.common.core.validate.AddGroup
;
import
org.dromara.common.core.validate.EditGroup
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
jakarta.validation.constraints.*
;
/**
* 流程进度业务对象 process_progress
*
* @author hzh
* @date 2024-12-11
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
@AutoMapper
(
target
=
ProcessProgress
.
class
,
reverseConvertGenerate
=
false
)
public
class
ProcessProgressBo
extends
BaseEntity
{
/**
* id
*/
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
EditGroup
.
class
})
private
Long
id
;
/**
* 流程定义key
*/
@NotBlank
(
message
=
"流程定义key不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
processKey
;
/**
* 流程名称
*/
@NotBlank
(
message
=
"流程名称不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
processName
;
/**
* 流程步骤key
*/
@NotBlank
(
message
=
"流程步骤key不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
processStepKey
;
/**
* 流程步骤
*/
@NotBlank
(
message
=
"流程步骤不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
processStepName
;
/**
* 审批类型
*/
@NotBlank
(
message
=
"审批类型不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
approveType
;
/**
* 关联id
*/
@NotNull
(
message
=
"关联id不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
relatedId
;
/**
* 用户id
*/
@NotNull
(
message
=
"用户id不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
approveUserId
;
/**
* 用户
*/
@NotBlank
(
message
=
"用户不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
approveUserName
;
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/domain/vo/Process.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
domain
.
vo
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* 审批配置
* @author hzh
* @date 2024-12-11
**/
@Data
@Accessors
(
chain
=
true
)
public
class
Process
implements
Serializable
{
/**
* 步骤名称
*/
private
String
stepName
;
/**
* 步骤key值(唯一值)
*/
private
String
stepKey
;
/**
* 步骤类型
*/
private
String
stepType
;
/**
* 审批类型
*/
private
String
approveType
;
/**
* 审批人
*/
private
List
<
Long
>
operatorList
;
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/domain/vo/ProcessApproveVo.java
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
domain
.
vo
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
org.dromara.server.domain.ProcessApprove
;
import
com.alibaba.excel.annotation.ExcelIgnoreUnannotated
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
org.dromara.common.excel.annotation.ExcelDictFormat
;
import
org.dromara.common.excel.convert.ExcelDictConvert
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
org.dromara.server.domain.ProcessApprove
;
import
java.io.Serial
;
import
java.io.Serializable
;
...
...
@@ -88,7 +84,7 @@ public class ProcessApproveVo implements Serializable {
* 是否通过
*/
@ExcelProperty
(
value
=
"是否通过"
)
private
Long
pass
;
private
Boolean
pass
;
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/domain/vo/ProcessProgressVo.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
domain
.
vo
;
import
org.dromara.server.domain.ProcessProgress
;
import
com.alibaba.excel.annotation.ExcelIgnoreUnannotated
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
org.dromara.common.excel.annotation.ExcelDictFormat
;
import
org.dromara.common.excel.convert.ExcelDictConvert
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 流程进度视图对象 process_progress
*
* @author hzh
* @date 2024-12-11
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper
(
target
=
ProcessProgress
.
class
)
public
class
ProcessProgressVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* id
*/
@ExcelProperty
(
value
=
"id"
)
private
Long
id
;
/**
* 流程定义key
*/
@ExcelProperty
(
value
=
"流程定义key"
)
private
String
processKey
;
/**
* 流程名称
*/
@ExcelProperty
(
value
=
"流程名称"
)
private
String
processName
;
/**
* 流程步骤key
*/
@ExcelProperty
(
value
=
"流程步骤key"
)
private
String
processStepKey
;
/**
* 流程步骤
*/
@ExcelProperty
(
value
=
"流程步骤"
)
private
String
processStepName
;
/**
* 审批类型
*/
@ExcelProperty
(
value
=
"审批类型"
)
private
String
approveType
;
/**
* 关联id
*/
@ExcelProperty
(
value
=
"关联id"
)
private
Long
relatedId
;
/**
* 用户id
*/
@ExcelProperty
(
value
=
"用户id"
)
private
Long
approveUserId
;
/**
* 用户
*/
@ExcelProperty
(
value
=
"用户"
)
private
String
approveUserName
;
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/mapper/ProcessProgressMapper.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
mapper
;
import
org.dromara.server.domain.ProcessProgress
;
import
org.dromara.server.domain.vo.ProcessProgressVo
;
import
org.dromara.common.mybatis.core.mapper.BaseMapperPlus
;
/**
* 流程进度Mapper接口
*
* @author hzh
* @date 2024-12-11
*/
public
interface
ProcessProgressMapper
extends
BaseMapperPlus
<
ProcessProgress
,
ProcessProgressVo
>
{
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/service/IProcessProgressService.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
service
;
import
org.dromara.common.mybatis.service.IBaseService
;
import
org.dromara.server.constant.ProcessApproveStatus
;
import
org.dromara.server.domain.ProcessProgress
;
import
org.dromara.server.domain.bo.ProcessApproveBo
;
import
org.dromara.server.domain.bo.ProcessProgressBo
;
import
org.dromara.server.domain.vo.ProcessProgressVo
;
import
java.util.List
;
/**
* 流程进度Service接口
*
* @author hzh
* @date 2024-12-11
*/
public
interface
IProcessProgressService
extends
IBaseService
<
ProcessProgressVo
,
ProcessProgressBo
,
ProcessProgress
>
{
/**
* 设置审批人集合
*
* @param processKey 流程key
* @param relatedId 关联id
* @return 下一个审批人列表
*/
void
setNextApproveUserList
(
String
processKey
,
Long
relatedId
);
/**
* 审批
*
* @param bo bo
* @return 是否成功
*/
boolean
approve
(
ProcessApproveBo
bo
);
/**
* 获取审批状态
*
* @param processKey 流程key
* @param relatedId 关联id
* @return 审批状态
*/
ProcessApproveStatus
getApproveStatus
(
String
processKey
,
Long
relatedId
);
/**
* 获取审批人列表
*
* @param processKey 流程key
* @return 审批人列表
*/
List
<
Long
>
getApproveUserList
(
String
processKey
);
/**
* 获取当前审批人列表
*
* @param processKey 审批key
* @param relatedIds 关联id
* @return 当前审批人列表
*/
List
<
List
<
Long
>>
getCurrentApproveUserList
(
String
processKey
,
List
<
Long
>
relatedIds
);
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/service/impl/ProcessApproveServiceImpl.java
浏览文件 @
aa0b2b82
...
...
@@ -47,5 +47,4 @@ public class ProcessApproveServiceImpl extends AbstractBaseService<ProcessApprov
lqw
.
eq
(
bo
.
getPass
()
!=
null
,
ProcessApprove:
:
getPass
,
bo
.
getPass
());
return
lqw
;
}
}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/server/service/impl/ProcessProgressServiceImpl.java
0 → 100644
浏览文件 @
aa0b2b82
package
org
.
dromara
.
server
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.dubbo.common.utils.CollectionUtils
;
import
org.dromara.common.core.utils.StreamUtils
;
import
org.dromara.common.core.utils.StringUtils
;
import
org.dromara.common.mybatis.core.mapper.BaseMapperPlus
;
import
org.dromara.common.mybatis.service.AbstractBaseService
;
import
org.dromara.common.satoken.utils.LoginHelper
;
import
org.dromara.server.constant.ProcessApproveStatus
;
import
org.dromara.server.constant.ProcessStepApprove
;
import
org.dromara.server.constant.ProcessStepType
;
import
org.dromara.server.domain.ProcessApprove
;
import
org.dromara.server.domain.ProcessConfig
;
import
org.dromara.server.domain.ProcessProgress
;
import
org.dromara.server.domain.bo.ProcessApproveBo
;
import
org.dromara.server.domain.bo.ProcessProgressBo
;
import
org.dromara.server.domain.vo.Process
;
import
org.dromara.server.domain.vo.ProcessProgressVo
;
import
org.dromara.server.mapper.ProcessApproveMapper
;
import
org.dromara.server.mapper.ProcessConfigMapper
;
import
org.dromara.server.mapper.ProcessProgressMapper
;
import
org.dromara.server.service.IProcessProgressService
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
/**
* 流程进度Service业务层处理
*
* @author hzh
* @date 2024-12-11
*/
@RequiredArgsConstructor
@Service
public
class
ProcessProgressServiceImpl
extends
AbstractBaseService
<
ProcessProgressVo
,
ProcessProgressBo
,
ProcessProgress
>
implements
IProcessProgressService
{
private
final
ProcessProgressMapper
baseMapper
;
private
final
ProcessConfigMapper
processConfigMapper
;
private
final
ProcessApproveMapper
processApproveMapper
;
@Override
public
BaseMapperPlus
<
ProcessProgress
,
ProcessProgressVo
>
mapper
()
{
return
baseMapper
;
}
@Override
public
LambdaQueryWrapper
<
ProcessProgress
>
buildQueryWrapper
(
ProcessProgressBo
bo
)
{
Map
<
String
,
Object
>
params
=
bo
.
getParams
();
LambdaQueryWrapper
<
ProcessProgress
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getProcessKey
()),
ProcessProgress:
:
getProcessKey
,
bo
.
getProcessKey
());
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getProcessName
()),
ProcessProgress:
:
getProcessName
,
bo
.
getProcessName
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getProcessStepKey
()),
ProcessProgress:
:
getProcessStepKey
,
bo
.
getProcessStepKey
());
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getProcessStepName
()),
ProcessProgress:
:
getProcessStepName
,
bo
.
getProcessStepName
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getApproveType
()),
ProcessProgress:
:
getApproveType
,
bo
.
getApproveType
());
lqw
.
eq
(
bo
.
getRelatedId
()
!=
null
,
ProcessProgress:
:
getRelatedId
,
bo
.
getRelatedId
());
lqw
.
eq
(
bo
.
getApproveUserId
()
!=
null
,
ProcessProgress:
:
getApproveUserId
,
bo
.
getApproveUserId
());
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getApproveUserName
()),
ProcessProgress:
:
getApproveUserName
,
bo
.
getApproveUserName
());
return
lqw
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
setNextApproveUserList
(
String
processKey
,
Long
relatedId
)
{
ProcessConfig
pc
=
processConfigMapper
.
selectOne
(
new
LambdaQueryWrapper
<>(
ProcessConfig
.
class
)
.
eq
(
ProcessConfig:
:
getProcessKey
,
processKey
)
);
String
process
=
pc
.
getProcess
();
if
(
StringUtils
.
isEmpty
(
process
))
{
return
;
}
//获取审批配置
List
<
Process
>
processList
=
JSON
.
parseArray
(
process
,
Process
.
class
);
//获取审批步骤
List
<
Process
>
approveProcessList
=
StreamUtils
.
filter
(
processList
,
p
->
StringUtils
.
equals
(
p
.
getStepType
(),
ProcessStepType
.
APPROVE
.
name
()));
//获取审批进度
List
<
ProcessProgress
>
progressList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<>(
ProcessProgress
.
class
)
.
eq
(
ProcessProgress:
:
getRelatedId
,
relatedId
)
.
eq
(
ProcessProgress:
:
getProcessKey
,
processKey
)
);
if
(
CollectionUtil
.
isEmpty
(
progressList
))
{
//获取已审批的记录
List
<
ProcessApprove
>
approveList
=
processApproveMapper
.
selectList
(
new
LambdaQueryWrapper
<>(
ProcessApprove
.
class
)
.
eq
(
ProcessApprove:
:
getRelatedId
,
relatedId
)
.
eq
(
ProcessApprove:
:
getProcessConfigKey
,
processKey
)
.
orderByDesc
(
ProcessApprove:
:
getId
));
String
lastProcessStepKey
=
""
;
if
(
CollectionUtils
.
isNotEmpty
(
approveList
))
{
//获取最后一条审批记录
lastProcessStepKey
=
approveList
.
get
(
0
).
getProcessStepKey
();
}
List
<
String
>
stepKeyList
=
StreamUtils
.
toList
(
approveProcessList
,
Process:
:
getStepKey
);
Process
nextProcess
=
null
;
if
(
StringUtils
.
isEmpty
(
lastProcessStepKey
))
{
nextProcess
=
approveProcessList
.
get
(
0
);
}
else
{
int
i
=
stepKeyList
.
indexOf
(
lastProcessStepKey
);
if
(
i
<
stepKeyList
.
size
()
-
1
)
{
nextProcess
=
approveProcessList
.
get
(
i
+
1
);
}
}
if
(
nextProcess
!=
null
)
{
//设置审批进度
List
<
Long
>
userList
=
nextProcess
.
getOperatorList
();
Process
finalNextProcess
=
nextProcess
;
List
<
ProcessProgress
>
ppList
=
userList
.
stream
()
.
map
(
userId
->
{
return
new
ProcessProgress
()
.
setProcessKey
(
pc
.
getProcessKey
())
.
setProcessName
(
pc
.
getProcessName
())
.
setProcessStepKey
(
finalNextProcess
.
getStepKey
())
.
setProcessStepName
(
finalNextProcess
.
getStepName
())
.
setRelatedId
(
relatedId
)
.
setApproveUserId
(
userId
)
.
setApproveType
(
finalNextProcess
.
getApproveType
());
}).
collect
(
Collectors
.
toList
());
baseMapper
.
insertBatch
(
ppList
);
}
}
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
approve
(
ProcessApproveBo
bo
)
{
Long
userId
=
LoginHelper
.
getUserId
();
List
<
ProcessProgress
>
progressList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<>(
ProcessProgress
.
class
)
.
eq
(
ProcessProgress:
:
getProcessKey
,
bo
.
getProcessConfigKey
())
.
eq
(
ProcessProgress:
:
getRelatedId
,
bo
.
getRelatedId
())
);
ProcessProgress
progress
=
StreamUtils
.
findFirst
(
progressList
,
p
->
Objects
.
equals
(
p
.
getApproveUserId
(),
userId
));
if
(
Objects
.
isNull
(
progress
))
{
throw
new
RuntimeException
(
"您没有审批权限!"
);
}
//新增审批记录
bo
.
setProcessStepKey
(
progress
.
getProcessStepKey
());
bo
.
setProcessStepName
(
progress
.
getProcessStepName
());
bo
.
setApproveUserId
(
userId
);
bo
.
setApproveName
(
LoginHelper
.
getUsername
());
bo
.
setApproveTime
(
new
Date
());
processApproveMapper
.
insert
(
BeanUtil
.
copyProperties
(
bo
,
ProcessApprove
.
class
));
if
(
bo
.
getPass
())
{
//判断是否是或签
if
(
StringUtils
.
equals
(
progress
.
getApproveType
(),
ProcessStepApprove
.
OR
.
name
()))
{
baseMapper
.
deleteByIds
(
StreamUtils
.
toList
(
progressList
,
ProcessProgress:
:
getId
));
}
else
{
baseMapper
.
deleteById
(
progress
.
getId
());
}
//重新查询审批精度
progressList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<>(
ProcessProgress
.
class
)
.
eq
(
ProcessProgress:
:
getProcessKey
,
bo
.
getProcessConfigKey
())
.
eq
(
ProcessProgress:
:
getRelatedId
,
bo
.
getRelatedId
())
);
if
(
CollectionUtils
.
isEmpty
(
progressList
))
{
setNextApproveUserList
(
bo
.
getProcessConfigKey
(),
bo
.
getRelatedId
());
}
}
else
{
baseMapper
.
deleteByIds
(
StreamUtils
.
toList
(
progressList
,
ProcessProgress:
:
getId
));
}
return
true
;
}
@Override
public
ProcessApproveStatus
getApproveStatus
(
String
processKey
,
Long
relatedId
)
{
List
<
ProcessProgress
>
progressList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<>(
ProcessProgress
.
class
)
.
eq
(
ProcessProgress:
:
getProcessKey
,
processKey
)
.
eq
(
ProcessProgress:
:
getRelatedId
,
relatedId
)
);
if
(
CollectionUtils
.
isEmpty
(
progressList
))
{
List
<
ProcessApprove
>
approveList
=
processApproveMapper
.
selectList
(
new
LambdaQueryWrapper
<>(
ProcessApprove
.
class
)
.
eq
(
ProcessApprove:
:
getRelatedId
,
relatedId
)
.
eq
(
ProcessApprove:
:
getProcessConfigKey
,
processKey
)
.
orderByDesc
(
ProcessApprove:
:
getId
));
if
(
CollectionUtils
.
isEmpty
(
approveList
))
{
return
ProcessApproveStatus
.
END
;
}
else
{
ProcessApprove
pa
=
approveList
.
get
(
0
);
return
pa
.
getPass
()
?
ProcessApproveStatus
.
END
:
ProcessApproveStatus
.
REJECT
;
}
}
else
{
return
ProcessApproveStatus
.
APPROVEIND
;
}
}
@Override
public
List
<
Long
>
getApproveUserList
(
String
processKey
)
{
ProcessConfig
pc
=
processConfigMapper
.
selectOne
(
new
LambdaQueryWrapper
<>(
ProcessConfig
.
class
)
.
eq
(
ProcessConfig:
:
getProcessKey
,
processKey
)
);
String
process
=
pc
.
getProcess
();
if
(
StringUtils
.
isEmpty
(
process
))
{
return
List
.
of
();
}
else
{
//获取审批配置
List
<
Process
>
processList
=
JSON
.
parseArray
(
process
,
Process
.
class
);
List
<
Process
>
approveProcessList
=
StreamUtils
.
filter
(
processList
,
p
->
StringUtils
.
equals
(
p
.
getStepType
(),
ProcessStepType
.
APPROVE
.
name
()));
return
approveProcessList
.
stream
().
flatMap
(
p
->
p
.
getOperatorList
().
stream
()).
collect
(
Collectors
.
toList
());
}
}
@Override
public
List
<
List
<
Long
>>
getCurrentApproveUserList
(
String
processKey
,
List
<
Long
>
relatedIds
)
{
if
(
StringUtils
.
isEmpty
(
processKey
))
{
throw
new
RuntimeException
(
"流程配置不存在!"
);
}
if
(
CollectionUtils
.
isEmpty
(
relatedIds
))
{
return
List
.
of
();
}
List
<
ProcessProgress
>
progressList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<>(
ProcessProgress
.
class
)
.
eq
(
ProcessProgress:
:
getProcessKey
,
processKey
)
.
in
(
ProcessProgress:
:
getRelatedId
,
relatedIds
));
return
StreamUtils
.
toList
(
relatedIds
,
relatedId
->
progressList
.
stream
().
filter
(
p
->
Objects
.
equals
(
p
.
getRelatedId
(),
relatedId
)).
map
(
ProcessProgress:
:
getApproveUserId
).
collect
(
Collectors
.
toList
())
);
}
}
ruoyi-modules/ruoyi-server/src/main/resources/mapper/server/ProcessProgressMapper.xml
0 → 100644
浏览文件 @
aa0b2b82
<?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=
"org.dromara.server.mapper.ProcessProgressMapper"
>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论