Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
0104f256
提交
0104f256
authored
6月 12, 2025
作者:
hzh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
订单审批功能实现
上级
b82c61a8
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
516 行增加
和
1 行删除
+516
-1
OrderApproveController.java
...g/dromara/workflow/controller/OrderApproveController.java
+67
-0
OrderApprove.java
...c/main/java/org/dromara/workflow/domain/OrderApprove.java
+83
-0
OrderApproveBo.java
...n/java/org/dromara/workflow/domain/bo/OrderApproveBo.java
+92
-0
OrderApproveVo.java
...n/java/org/dromara/workflow/domain/vo/OrderApproveVo.java
+100
-0
OrderApproveMapper.java
.../java/org/dromara/workflow/mapper/OrderApproveMapper.java
+15
-0
IOrderApproveService.java
...va/org/dromara/workflow/service/IOrderApproveService.java
+23
-0
FileApproveServiceImpl.java
...dromara/workflow/service/impl/FileApproveServiceImpl.java
+0
-1
OrderApproveServiceImpl.java
...romara/workflow/service/impl/OrderApproveServiceImpl.java
+129
-0
OrderApproveMapper.xml
...src/main/resources/mapper/workflow/OrderApproveMapper.xml
+7
-0
没有找到文件。
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/OrderApproveController.java
0 → 100644
浏览文件 @
0104f256
package
org
.
dromara
.
workflow
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
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.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.OrderApproveBo
;
import
org.dromara.workflow.domain.vo.OrderApproveVo
;
import
org.dromara.workflow.service.IOrderApproveService
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
/**
* 订单审批
* 前端访问路由地址为:/workflow/orderApprove
*
* @author hzh
* @date 2025-06-12
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping
(
"/orderApprove"
)
public
class
OrderApproveController
extends
BaseController
{
private
final
IOrderApproveService
orderApproveService
;
/**
* 查询订单审批列表
*/
@SaCheckPermission
(
"workflow:orderApprove:list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
<
OrderApproveVo
>
list
(
OrderApproveBo
bo
,
PageQuery
pageQuery
)
{
return
orderApproveService
.
queryPageList
(
bo
,
pageQuery
);
}
/**
* 获取订单审批详细信息
*
* @param id 主键
*/
@SaCheckPermission
(
"workflow:orderApprove:query"
)
@GetMapping
(
"/{id}"
)
public
R
<
OrderApproveVo
>
getInfo
(
@NotNull
(
message
=
"主键不能为空"
)
@PathVariable
Long
id
)
{
return
R
.
ok
(
orderApproveService
.
queryById
(
id
));
}
/**
* 新增订单审批
*/
@SaCheckPermission
(
"workflow:orderApprove:add"
)
@Log
(
title
=
"订单审批"
,
businessType
=
BusinessType
.
INSERT
)
@RepeatSubmit
()
@PostMapping
()
public
R
<
OrderApproveVo
>
add
(
@Validated
(
AddGroup
.
class
)
@RequestBody
OrderApproveBo
bo
)
{
return
R
.
ok
(
orderApproveService
.
insert
(
bo
));
}
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/OrderApprove.java
0 → 100644
浏览文件 @
0104f256
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.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
java.io.Serial
;
/**
* 订单审批对象 srv_order_approve
*
* @author hzh
* @date 2025-06-12
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"srv_order_approve"
)
public
class
OrderApprove
extends
TenantEntity
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@TableId
(
value
=
"id"
)
private
Long
id
;
/**
* 职工id
*/
private
Long
staffId
;
/**
* 申请人类型
*/
private
String
applyType
;
/**
* 是否需要审批
*/
private
Long
deptApprove
;
/**
* 授权人用户id
*/
private
Long
authId
;
/**
* 订单id
*/
private
Long
orderId
;
/**
* 订单类型
*/
private
String
orderType
;
/**
* 下单时间
*/
private
Date
orderTime
;
/**
* 订单失效时间
*/
private
Date
expireTime
;
/**
* 订单信息
*/
private
String
info
;
/**
* 状态
*/
private
String
status
;
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/OrderApproveBo.java
0 → 100644
浏览文件 @
0104f256
package
org
.
dromara
.
workflow
.
domain
.
bo
;
import
org.dromara.workflow.domain.OrderApprove
;
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.*
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
/**
* 订单审批业务对象 srv_order_approve
*
* @author hzh
* @date 2025-06-12
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@AutoMapper
(
target
=
OrderApprove
.
class
,
reverseConvertGenerate
=
false
)
public
class
OrderApproveBo
extends
BaseEntity
{
/**
* 主键
*/
@NotNull
(
message
=
"主键不能为空"
,
groups
=
{
EditGroup
.
class
})
private
Long
id
;
/**
* 职工id
*/
@NotNull
(
message
=
"职工id不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
staffId
;
/**
* 申请人类型
*/
@NotBlank
(
message
=
"申请人类型不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
applyType
;
/**
* 是否需要审批
*/
@NotNull
(
message
=
"是否需要审批不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
deptApprove
;
/**
* 授权人用户id
*/
@NotNull
(
message
=
"授权人用户id不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
authId
;
/**
* 订单id
*/
@NotNull
(
message
=
"订单id不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
orderId
;
/**
* 订单类型
*/
@NotBlank
(
message
=
"订单类型不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
orderType
;
/**
* 下单时间
*/
@NotNull
(
message
=
"下单时间不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Date
orderTime
;
/**
* 订单失效时间
*/
@NotNull
(
message
=
"订单失效时间不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Date
expireTime
;
/**
* 订单信息
*/
@NotBlank
(
message
=
"订单信息不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
info
;
/**
* 状态
*/
@NotBlank
(
message
=
"状态不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
status
;
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/OrderApproveVo.java
0 → 100644
浏览文件 @
0104f256
package
org
.
dromara
.
workflow
.
domain
.
vo
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
org.dromara.workflow.domain.OrderApprove
;
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
;
/**
* 订单审批视图对象 srv_order_approve
*
* @author hzh
* @date 2025-06-12
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper
(
target
=
OrderApprove
.
class
)
public
class
OrderApproveVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@ExcelProperty
(
value
=
"主键"
)
private
Long
id
;
/**
* 职工id
*/
@ExcelProperty
(
value
=
"职工id"
)
private
Long
staffId
;
/**
* 申请人类型
*/
@ExcelProperty
(
value
=
"申请人类型"
)
private
String
applyType
;
/**
* 是否需要审批
*/
@ExcelProperty
(
value
=
"是否需要审批"
)
private
Long
deptApprove
;
/**
* 授权人用户id
*/
@ExcelProperty
(
value
=
"授权人用户id"
)
private
Long
authId
;
/**
* 订单id
*/
@ExcelProperty
(
value
=
"订单id"
)
private
Long
orderId
;
/**
* 订单类型
*/
@ExcelProperty
(
value
=
"订单类型"
)
private
String
orderType
;
/**
* 下单时间
*/
@ExcelProperty
(
value
=
"下单时间"
)
private
Date
orderTime
;
/**
* 订单失效时间
*/
@ExcelProperty
(
value
=
"订单失效时间"
)
private
Date
expireTime
;
/**
* 订单信息
*/
@ExcelProperty
(
value
=
"订单信息"
)
private
String
info
;
/**
* 状态
*/
@ExcelProperty
(
value
=
"状态"
)
private
String
status
;
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/OrderApproveMapper.java
0 → 100644
浏览文件 @
0104f256
package
org
.
dromara
.
workflow
.
mapper
;
import
org.dromara.workflow.domain.OrderApprove
;
import
org.dromara.workflow.domain.vo.OrderApproveVo
;
import
org.dromara.common.mybatis.core.mapper.BaseMapperPlus
;
/**
* 订单审批Mapper接口
*
* @author hzh
* @date 2025-06-12
*/
public
interface
OrderApproveMapper
extends
BaseMapperPlus
<
OrderApprove
,
OrderApproveVo
>
{
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IOrderApproveService.java
0 → 100644
浏览文件 @
0104f256
package
org
.
dromara
.
workflow
.
service
;
import
org.dromara.common.mybatis.service.IBaseService
;
import
org.dromara.workflow.domain.OrderApprove
;
import
org.dromara.workflow.domain.bo.OrderApproveBo
;
import
org.dromara.workflow.domain.vo.OrderApproveVo
;
/**
* 订单审批Service接口
*
* @author hzh
* @date 2025-06-12
*/
public
interface
IOrderApproveService
extends
IBaseService
<
OrderApproveVo
,
OrderApproveBo
,
OrderApprove
>{
/**
* 新增
* @param bo bo
* @return 数据
*/
OrderApproveVo
insert
(
OrderApproveBo
bo
);
}
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FileApproveServiceImpl.java
浏览文件 @
0104f256
...
@@ -165,7 +165,6 @@ public class FileApproveServiceImpl extends AbstractBaseService<FileApproveVo, F
...
@@ -165,7 +165,6 @@ public class FileApproveServiceImpl extends AbstractBaseService<FileApproveVo, F
}
}
}
}
// private String
/**
/**
* 执行办理任务监听
* 执行办理任务监听
...
...
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/OrderApproveServiceImpl.java
0 → 100644
浏览文件 @
0104f256
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.apache.dubbo.config.annotation.DubboReference
;
import
org.dromara.common.core.enums.BusinessStatusEnum
;
import
org.dromara.common.core.utils.MapstructUtils
;
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.workflow.api.domain.RemoteWorkflowService
;
import
org.dromara.workflow.api.domain.event.ProcessEvent
;
import
org.dromara.workflow.api.domain.event.ProcessTaskEvent
;
import
org.dromara.workflow.domain.OrderApprove
;
import
org.dromara.workflow.domain.bo.OrderApproveBo
;
import
org.dromara.workflow.domain.vo.OrderApproveVo
;
import
org.dromara.workflow.mapper.OrderApproveMapper
;
import
org.dromara.workflow.service.IOrderApproveService
;
import
org.dromara.workflow.utils.QueryUtils
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
/**
* 订单审批Service业务层处理
*
* @author hzh
* @date 2025-06-12
*/
@RequiredArgsConstructor
@Service
@Slf4j
public
class
OrderApproveServiceImpl
extends
AbstractBaseService
<
OrderApproveVo
,
OrderApproveBo
,
OrderApprove
>
implements
IOrderApproveService
{
private
final
OrderApproveMapper
baseMapper
;
@DubboReference
private
final
RemoteWorkflowService
workflowService
;
@Override
public
BaseMapperPlus
<
OrderApprove
,
OrderApproveVo
>
mapper
()
{
return
baseMapper
;
}
@Override
public
LambdaQueryWrapper
<
OrderApprove
>
buildQueryWrapper
(
OrderApproveBo
bo
)
{
Map
<
String
,
Object
>
params
=
bo
.
getParams
();
LambdaQueryWrapper
<
OrderApprove
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
eq
(
bo
.
getStaffId
()
!=
null
,
OrderApprove:
:
getStaffId
,
bo
.
getStaffId
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getApplyType
()),
OrderApprove:
:
getApplyType
,
bo
.
getApplyType
());
lqw
.
eq
(
bo
.
getDeptApprove
()
!=
null
,
OrderApprove:
:
getDeptApprove
,
bo
.
getDeptApprove
());
lqw
.
eq
(
bo
.
getAuthId
()
!=
null
,
OrderApprove:
:
getAuthId
,
bo
.
getAuthId
());
lqw
.
eq
(
bo
.
getOrderId
()
!=
null
,
OrderApprove:
:
getOrderId
,
bo
.
getOrderId
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getOrderType
()),
OrderApprove:
:
getOrderType
,
bo
.
getOrderType
());
lqw
.
eq
(
bo
.
getOrderTime
()
!=
null
,
OrderApprove:
:
getOrderTime
,
bo
.
getOrderTime
());
lqw
.
eq
(
bo
.
getExpireTime
()
!=
null
,
OrderApprove:
:
getExpireTime
,
bo
.
getExpireTime
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getInfo
()),
OrderApprove:
:
getInfo
,
bo
.
getInfo
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getStatus
()),
OrderApprove:
:
getStatus
,
bo
.
getStatus
());
return
lqw
;
}
@Override
public
OrderApproveVo
insert
(
OrderApproveBo
bo
)
{
OrderApprove
add
=
MapstructUtils
.
convert
(
bo
,
OrderApprove
.
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
,
OrderApproveVo
.
class
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
Boolean
deleteWithValidByIds
(
Collection
<
Long
>
ids
,
Boolean
isValid
)
{
List
<
String
>
idList
=
StreamUtils
.
toList
(
ids
,
String:
:
valueOf
);
workflowService
.
deleteRunAndHisInstance
(
idList
);
return
baseMapper
.
deleteByIds
(
ids
)
>
0
;
}
/**
* 总体流程监听(例如: 提交 退回 撤销 终止 作废等)
* 正常使用只需#processEvent.key=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@EventListener
(
condition
=
"#processEvent.key.startsWith('biz_order_approve')"
)
public
void
processHandler
(
ProcessEvent
processEvent
)
{
log
.
info
(
"当前任务执行了{}"
,
processEvent
.
toString
());
OrderApprove
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('biz_order_approve')"
)
public
void
processTaskHandler
(
ProcessTaskEvent
processTaskEvent
)
{
String
[]
ids
=
QueryUtils
.
getTaskDefinitionKeyListByBusinessKey
(
processTaskEvent
.
getBusinessKey
()).
toArray
(
new
String
[
0
]);
if
(
StringUtils
.
equalsAny
(
processTaskEvent
.
getTaskDefinitionKey
(),
ids
))
{
log
.
info
(
"当前任务执行了{}"
,
processTaskEvent
);
OrderApprove
fa
=
baseMapper
.
selectById
(
Long
.
valueOf
(
processTaskEvent
.
getBusinessKey
()));
fa
.
setStatus
(
BusinessStatusEnum
.
WAITING
.
getStatus
());
baseMapper
.
updateById
(
fa
);
}
}
}
ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/OrderApproveMapper.xml
0 → 100644
浏览文件 @
0104f256
<?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.OrderApproveMapper"
>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论