Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
be28c0e2
提交
be28c0e2
authored
5月 22, 2025
作者:
hzh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
部门文件审批功能实现
上级
d6251d66
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
436 行增加
和
0 行删除
+436
-0
FileApproveController.java
...rg/dromara/workflow/controller/FileApproveController.java
+91
-0
FileApprove.java
...rc/main/java/org/dromara/workflow/domain/FileApprove.java
+56
-0
FileApproveBo.java
...in/java/org/dromara/workflow/domain/bo/FileApproveBo.java
+60
-0
FileApproveVo.java
...in/java/org/dromara/workflow/domain/vo/FileApproveVo.java
+65
-0
FileApproveMapper.java
...n/java/org/dromara/workflow/mapper/FileApproveMapper.java
+15
-0
IFileApproveService.java
...ava/org/dromara/workflow/service/IFileApproveService.java
+29
-0
FileApproveServiceImpl.java
...dromara/workflow/service/impl/FileApproveServiceImpl.java
+113
-0
FileApproveMapper.xml
.../src/main/resources/mapper/workflow/FileApproveMapper.xml
+7
-0
没有找到文件。
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FileApproveController.java
0 → 100644
浏览文件 @
be28c0e2
package
org
.
dromara
.
workflow
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
jakarta.validation.constraints.NotEmpty
;
import
jakarta.validation.constraints.NotNull
;
import
lombok.RequiredArgsConstructor
;
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.idempotent.annotation.RepeatSubmit
;
import
org.dromara.common.log.annotation.Log
;
import
org.dromara.common.log.enums.BusinessType
;
import
org.dromara.common.mybatis.core.page.PageQuery
;
import
org.dromara.common.mybatis.core.page.TableDataInfo
;
import
org.dromara.common.web.core.BaseController
;
import
org.dromara.workflow.domain.bo.FileApproveBo
;
import
org.dromara.workflow.domain.vo.FileApproveVo
;
import
org.dromara.workflow.service.IFileApproveService
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* 部门文件下载申请
* 前端访问路由地址为:/workflow/fileApprove
*
* @author hzh
* @date 2025-05-22
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping
(
"/fileApprove"
)
public
class
FileApproveController
extends
BaseController
{
private
final
IFileApproveService
fileApproveService
;
/**
* 查询部门文件下载申请列表
*/
@GetMapping
(
"/list"
)
public
TableDataInfo
<
FileApproveVo
>
list
(
FileApproveBo
bo
,
PageQuery
pageQuery
)
{
return
fileApproveService
.
queryPageList
(
bo
,
pageQuery
);
}
/**
* 获取部门文件下载申请详细信息
*
* @param id 主键
*/
@SaCheckPermission
(
"workflow:fileApprove:query"
)
@GetMapping
(
"/{id}"
)
public
R
<
FileApproveVo
>
getInfo
(
@NotNull
(
message
=
"主键不能为空"
)
@PathVariable
Long
id
)
{
return
R
.
ok
(
fileApproveService
.
queryById
(
id
));
}
/**
* 新增部门文件下载申请
*/
@Log
(
title
=
"部门文件下载申请"
,
businessType
=
BusinessType
.
INSERT
)
@RepeatSubmit
()
@PostMapping
()
public
R
<
FileApproveVo
>
add
(
@Validated
(
AddGroup
.
class
)
@RequestBody
FileApproveBo
bo
)
{
return
R
.
ok
(
fileApproveService
.
insert
(
bo
));
}
/**
* 修改部门文件下载申请
*/
@Log
(
title
=
"部门文件下载申请"
,
businessType
=
BusinessType
.
UPDATE
)
@RepeatSubmit
()
@PutMapping
()
public
R
<
FileApproveVo
>
edit
(
@Validated
(
EditGroup
.
class
)
@RequestBody
FileApproveBo
bo
)
{
return
R
.
ok
(
fileApproveService
.
update
(
bo
));
}
/**
* 删除部门文件下载申请
*
* @param ids 主键串
*/
@SaCheckPermission
(
"workflow:fileApprove:remove"
)
@Log
(
title
=
"部门文件下载申请"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
public
R
<
Void
>
remove
(
@NotEmpty
(
message
=
"主键不能为空"
)
@PathVariable
Long
[]
ids
)
{
return
toAjax
(
fileApproveService
.
deleteWithValidByIds
(
List
.
of
(
ids
),
true
));
}
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FileApprove.java
0 → 100644
浏览文件 @
be28c0e2
package
org
.
dromara
.
workflow
.
domain
;
import
org.dromara.common.tenant.core.TenantEntity
;
import
com.baomidou.mybatisplus.annotation.*
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serial
;
/**
* 部门文件下载申请对象 sys_dept_file_approve
*
* @author hzh
* @date 2025-05-22
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"sys_dept_file_approve"
)
public
class
FileApprove
extends
TenantEntity
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@TableId
(
value
=
"id"
)
private
Long
id
;
/**
* 部门文件id
*/
private
Long
sysDeptFileId
;
/**
* 文件名称
*/
private
String
fileName
;
/**
* 用途
*/
private
String
purpose
;
/**
* 邮箱
*/
private
String
email
;
/**
* 状态
*/
private
String
status
;
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FileApproveBo.java
0 → 100644
浏览文件 @
be28c0e2
package
org
.
dromara
.
workflow
.
domain
.
bo
;
import
org.dromara.workflow.domain.FileApprove
;
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.*
;
/**
* 部门文件下载申请业务对象 sys_dept_file_approve
*
* @author hzh
* @date 2025-05-22
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@AutoMapper
(
target
=
FileApprove
.
class
,
reverseConvertGenerate
=
false
)
public
class
FileApproveBo
extends
BaseEntity
{
/**
* 主键
*/
@NotNull
(
message
=
"主键不能为空"
,
groups
=
{
EditGroup
.
class
})
private
Long
id
;
/**
* 部门文件id
*/
@NotNull
(
message
=
"部门文件id不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
sysDeptFileId
;
/**
* 文件名称
*/
@NotBlank
(
message
=
"文件名称不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
fileName
;
/**
* 用途
*/
@NotBlank
(
message
=
"用途不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
purpose
;
/**
* 邮箱
*/
@NotBlank
(
message
=
"邮箱不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
email
;
/**
* 状态
*/
@NotBlank
(
message
=
"状态不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
status
;
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FileApproveVo.java
0 → 100644
浏览文件 @
be28c0e2
package
org
.
dromara
.
workflow
.
domain
.
vo
;
import
com.alibaba.excel.annotation.ExcelIgnoreUnannotated
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
org.dromara.workflow.domain.FileApprove
;
import
java.io.Serial
;
import
java.io.Serializable
;
/**
* 部门文件下载申请视图对象 sys_dept_file_approve
*
* @author hzh
* @date 2025-05-22
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper
(
target
=
FileApprove
.
class
)
public
class
FileApproveVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@ExcelProperty
(
value
=
"主键"
)
private
Long
id
;
/**
* 部门文件id
*/
@ExcelProperty
(
value
=
"部门文件id"
)
private
Long
sysDeptFileId
;
/**
* 文件名称
*/
@ExcelProperty
(
value
=
"文件名称"
)
private
String
fileName
;
/**
* 用途
*/
@ExcelProperty
(
value
=
"用途"
)
private
String
purpose
;
/**
* 邮箱
*/
@ExcelProperty
(
value
=
"邮箱"
)
private
String
email
;
/**
* 状态
*/
@ExcelProperty
(
value
=
"状态"
)
private
String
status
;
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FileApproveMapper.java
0 → 100644
浏览文件 @
be28c0e2
package
org
.
dromara
.
workflow
.
mapper
;
import
org.dromara.workflow.domain.FileApprove
;
import
org.dromara.workflow.domain.vo.FileApproveVo
;
import
org.dromara.common.mybatis.core.mapper.BaseMapperPlus
;
/**
* 部门文件下载申请Mapper接口
*
* @author hzh
* @date 2025-05-22
*/
public
interface
FileApproveMapper
extends
BaseMapperPlus
<
FileApprove
,
FileApproveVo
>
{
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFileApproveService.java
0 → 100644
浏览文件 @
be28c0e2
package
org
.
dromara
.
workflow
.
service
;
import
org.dromara.common.mybatis.service.IBaseService
;
import
org.dromara.workflow.domain.FileApprove
;
import
org.dromara.workflow.domain.bo.FileApproveBo
;
import
org.dromara.workflow.domain.vo.FileApproveVo
;
/**
* 部门文件下载申请Service接口
*
* @author hzh
* @date 2025-05-22
*/
public
interface
IFileApproveService
extends
IBaseService
<
FileApproveVo
,
FileApproveBo
,
FileApprove
>{
/**
* 新增
* @param bo bo
* @return 数据
*/
FileApproveVo
insert
(
FileApproveBo
bo
);
/**
* 修改
* @param bo bo
* @return 数据
*/
FileApproveVo
update
(
FileApproveBo
bo
);
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FileApproveServiceImpl.java
0 → 100644
浏览文件 @
be28c0e2
package
org
.
dromara
.
workflow
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.common.core.enums.BusinessStatusEnum
;
import
org.dromara.common.core.utils.MapstructUtils
;
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.workflow.api.domain.event.ProcessEvent
;
import
org.dromara.workflow.api.domain.event.ProcessTaskEvent
;
import
org.dromara.workflow.domain.FileApprove
;
import
org.dromara.workflow.domain.bo.FileApproveBo
;
import
org.dromara.workflow.domain.vo.FileApproveVo
;
import
org.dromara.workflow.mapper.FileApproveMapper
;
import
org.dromara.workflow.service.IFileApproveService
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.stereotype.Service
;
import
java.util.Map
;
/**
* 部门文件下载申请Service业务层处理
*
* @author hzh
* @date 2025-05-22
*/
@RequiredArgsConstructor
@Service
@Slf4j
public
class
FileApproveServiceImpl
extends
AbstractBaseService
<
FileApproveVo
,
FileApproveBo
,
FileApprove
>
implements
IFileApproveService
{
private
final
FileApproveMapper
baseMapper
;
@Override
public
BaseMapperPlus
<
FileApprove
,
FileApproveVo
>
mapper
()
{
return
baseMapper
;
}
@Override
public
LambdaQueryWrapper
<
FileApprove
>
buildQueryWrapper
(
FileApproveBo
bo
)
{
Map
<
String
,
Object
>
params
=
bo
.
getParams
();
LambdaQueryWrapper
<
FileApprove
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
eq
(
bo
.
getSysDeptFileId
()
!=
null
,
FileApprove:
:
getSysDeptFileId
,
bo
.
getSysDeptFileId
());
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getFileName
()),
FileApprove:
:
getFileName
,
bo
.
getFileName
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getPurpose
()),
FileApprove:
:
getPurpose
,
bo
.
getPurpose
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getEmail
()),
FileApprove:
:
getEmail
,
bo
.
getEmail
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getStatus
()),
FileApprove:
:
getStatus
,
bo
.
getStatus
());
return
lqw
;
}
@Override
public
FileApproveVo
insert
(
FileApproveBo
bo
)
{
FileApprove
add
=
MapstructUtils
.
convert
(
bo
,
FileApprove
.
class
);
if
(
StringUtils
.
isBlank
(
add
.
getStatus
()))
{
add
.
setStatus
(
BusinessStatusEnum
.
DRAFT
.
getStatus
());
}
boolean
flag
=
baseMapper
.
insert
(
add
)
>
0
;
if
(
flag
)
{
bo
.
setId
(
add
.
getId
());
}
return
MapstructUtils
.
convert
(
add
,
FileApproveVo
.
class
);
}
@Override
public
FileApproveVo
update
(
FileApproveBo
bo
)
{
FileApprove
update
=
MapstructUtils
.
convert
(
bo
,
FileApprove
.
class
);
baseMapper
.
updateById
(
update
);
return
MapstructUtils
.
convert
(
update
,
FileApproveVo
.
class
);
}
/**
* 总体流程监听(例如: 提交 退回 撤销 终止 作废等)
* 正常使用只需#processEvent.key=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@EventListener
(
condition
=
"#processEvent.key.startsWith('dept_file_approve')"
)
public
void
processHandler
(
ProcessEvent
processEvent
)
{
log
.
info
(
"当前任务执行了{}"
,
processEvent
.
toString
());
FileApprove
fa
=
baseMapper
.
selectById
(
Long
.
valueOf
(
processEvent
.
getBusinessKey
()));
fa
.
setStatus
(
processEvent
.
getStatus
());
if
(
processEvent
.
isSubmit
())
{
fa
.
setStatus
(
BusinessStatusEnum
.
WAITING
.
getStatus
());
}
baseMapper
.
updateById
(
fa
);
}
/**
* 执行办理任务监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.key=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getTaskDefinitionKey())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@EventListener
(
condition
=
"#processTaskEvent.key.startsWith('dept_file_approve')"
)
public
void
processTaskHandler
(
ProcessTaskEvent
processTaskEvent
)
{
// 所有demo案例的申请人节点id
String
[]
ids
=
{};
if
(
StringUtils
.
equalsAny
(
processTaskEvent
.
getTaskDefinitionKey
(),
ids
))
{
log
.
info
(
"当前任务执行了{}"
,
processTaskEvent
.
toString
());
FileApprove
fa
=
baseMapper
.
selectById
(
Long
.
valueOf
(
processTaskEvent
.
getBusinessKey
()));
fa
.
setStatus
(
BusinessStatusEnum
.
WAITING
.
getStatus
());
baseMapper
.
updateById
(
fa
);
}
}
}
ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FileApproveMapper.xml
0 → 100644
浏览文件 @
be28c0e2
<?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.workflow.mapper.FileApproveMapper"
>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论