经过几天的摸索,终于成功的将自定义表单挂载上工作流了,下面将简单梳理下我的集成步骤,仅供后来的同学们参考:
一.新建数据库自定义业务表
DROP TABLE IF EXISTS `t_leave_apply`;
CREATE TABLE `t_leave_apply` (
`apply_id` bigint UNSIGNED NOT NULL COMMENT '申请单号',
`apply_user` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '申请人',
`dep_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门',
`role_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '职位',
`tenant_id` bigint NULL DEFAULT NULL COMMENT '租户',
`apply_type` tinyint NOT NULL COMMENT '类别;1.事假、2.调休、3.出差、4.工伤、5.其他',
`start_time` datetime NOT NULL COMMENT '请假开始时间',
`end_time` datetime NOT NULL COMMENT '请假结束时间',
`days` int NOT NULL COMMENT '请假天数',
`files` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '附件',
`recipient` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '抄送人(可选多人)',
`create_time` datetime NOT NULL COMMENT '创建时间',
`audit_node` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '当前审核节点',
`audit_status` int NOT NULL DEFAULT 0 COMMENT '审核状态',
`del_flag` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除(0:未删除,2:已删除)',
`process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流程实例编号',
PRIMARY KEY (`apply_id`) USING BTREE,
INDEX `idx_status`(`audit_status` ASC) USING BTREE,
INDEX `idx_apply_user`(`apply_user` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
2.系统工具》生成代码 》导入
3.生成代码
4.将对应代码copy到对应模块
5.修改后端代码
1.修改service接口
并且重写getBusinessDataById,这里面要有具体发的实现,如下所示
@Override
public Object getBusinessDataById(String dataId) {
return this.getById(dataId);
}
2.修改xxxVO.java
3.增加查询方法 myPage(方法,名自定义)
3.1XXXMapper.xml
<select id="myPage" resultType="com.nbcio.office.domain.vo.LeaveApplyVo">
select t.*,b.process_definition_key,
b.process_definition_id,
b.process_instance_id,
b.title,
b.data_id,
b.service_impl_name,
b.proposer,
b.act_status,
b.todo_users,
b.done_users,
b.priority,
b.task_id,
b.task_name_id,
b.task_name,
b.deploy_id
from t_leave_apply t left join wf_my_business b on b.data_id = t.apply_id
${ew.customSqlSegment}
and t.create_by = ${createBy}
</select>
3.2XXXMapper.java增加myPage方法
package com.nbcio.office.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nbcio.common.mybatis.core.mapper.BaseMapperPlus;
import com.nbcio.office.domain.LeaveApply;
import com.nbcio.office.domain.vo.LeaveApplyVo;
import org.apache.ibatis.annotations.Param;
/**
* 请假申请Mapper接口
*
* @author edy
* @date 2024-05-15
*/
public interface LeaveApplyMapper extends BaseMapperPlus<LeaveApply, LeaveApplyVo> {
Page<LeaveApplyVo> myPage(Page<LeaveApplyVo> page, @Param(Constants.WRAPPER) QueryWrapper<LeaveApplyVo> queryWrapper,@Param("createBy") Long createBy);
}
3.3 Service接口层和实现层都加上myPage方法
1.修改controller层,将list方法改成下面这个,目的是增加流程相关的参数
/**
* 查询请假申请列表
*/
@SaCheckPermission("office:leaveApply:list")
@GetMapping("/list")
public TableDataInfo<LeaveApplyVo> list(LeaveApplyVo vo, PageQuery pageQuery,HttpServletRequest req) {
Map<String, String[]> ParameterMap = new HashMap<String, String[]>(req.getParameterMap());
String[] column = new String[]{""};
if(ParameterMap!=null&& ParameterMap.containsKey("column")) {
column[0] = ParameterMap.get("column")[0];
column[0] = "t."+ column[0];
ParameterMap.replace("column", column);
log.info("修改的排序规则>>列:" + ParameterMap.get("column")[0]);
}
QueryWrapper<LeaveApplyVo> queryWrapper = QueryGenerator.initQueryWrapper(vo, ParameterMap);
Page<LeaveApplyVo> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
Page<LeaveApplyVo> result = tLeaveApplyService.myPage(page, queryWrapper);
return TableDataInfo.build(result);
}
至此,后端代码整合完毕,前端部分请看下一章节