基于若依的ruoyi-nbcio的flowable流程管理系统增加服务任务和我的抄送功能

更多ruoyi-nbcio功能请看演示系统

gitee源代码地址

前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio

演示地址:RuoYi-Nbcio后台管理系统

1、增加一个状态字段

wf_copy增加下面两个字段

就用未读已读来区分

2、前端

api接口增加如下:

// 查询流程我的抄送列表
export function listMyCopyProcess(query) {return request({url: '/workflow/process/myCopyList',method: 'get',params: query})
}//抄送人已读状态
export function updateCcReaded(parameter) {return request({url: '/workflow/process/updateViewStatust',method:'get',params: parameter})
}
<template><div class="app-container"><el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"><el-form-item label="流程名称" prop="processName"><el-inputv-model="queryParams.processName"placeholder="请输入流程名称"clearable@keyup.enter.native="handleQuery"/></el-form-item><el-form-item label="发起人" prop="originatorName"><el-inputv-model="queryParams.originatorName"placeholder="请输入发起人"clearable@keyup.enter.native="handleQuery"/></el-form-item><el-form-item><el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button><el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button></el-form-item></el-form><el-row :gutter="10" class="mb8"><el-col :span="1.5"><el-buttontype="warning"plainicon="el-icon-download"size="mini"v-hasPermi="['workflow:process:copyExport']"@click="handleExport">导出</el-button></el-col><right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar></el-row><el-table v-loading="loading" :data="copyList" @selection-change="handleSelectionChange"><el-table-column type="selection" width="55" align="center" /><el-table-column label="抄送编号" align="center" prop="copyId" /><el-table-column label="标题" align="center" prop="title" :show-overflow-tooltip="true" /><el-table-column label="流程名称" align="center" prop="processName" :show-overflow-tooltip="true" /><el-table-column label="发起人" align="center" prop="originatorName" /><el-table-column label="创建时间" align="center" prop="createTime"><template slot-scope="scope"><span>{{ parseTime(scope.row.createTime) }}</span></template></el-table-column><el-table-column label="操作" align="center" class-name="small-padding fixed-width"><template slot-scope="scope"><el-buttonsize="mini"type="text"icon="el-icon-tickets"@click="handleFlowRecord(scope.row)"v-hasPermi="['workflow:process:query']">详情</el-button></template></el-table-column></el-table><paginationv-show="total>0":total="total":page.sync="queryParams.pageNum":limit.sync="queryParams.pageSize"@pagination="getList"/></div>
</template><script>
import { listMyCopyProcess } from "@/api/workflow/process"export default {name: "myCopy",data() {return {// 按钮loadingbuttonLoading: false,// 遮罩层loading: true,// 选中数组ids: [],// 非单个禁用single: true,// 非多个禁用multiple: true,// 显示搜索条件showSearch: true,// 总条数total: 0,// 流程抄送表格数据copyList: [],// 弹出层标题title: "",// 是否显示弹出层open: false,// 查询参数queryParams: {pageNum: 1,pageSize: 10,processId: undefined,processName: undefined,categoryId: undefined,taskId: undefined,userId: undefined,originatorName: undefined,},// 表单参数form: {},// 表单校验rules: {copyId: [{ required: true, message: "抄送主键不能为空", trigger: "blur" }],processId: [{ required: true, message: "流程主键不能为空", trigger: "blur" }],processName: [{ required: true, message: "流程名称不能为空", trigger: "blur" }],categoryId: [{ required: true, message: "流程分类主键不能为空", trigger: "blur" }],taskId: [{ required: true, message: "任务主键不能为空", trigger: "blur" }],userId: [{ required: true, message: "用户主键不能为空", trigger: "blur" }]}};},created() {this.getList();},methods: {/** 查询流程抄送列表 */getList() {this.loading = true;listMyCopyProcess(this.queryParams).then(response => {this.copyList = response.rows;this.total = response.total;this.loading = false;});},// 取消按钮cancel() {this.open = false;this.reset();},// 表单重置reset() {this.form = {copyId: undefined,processId: undefined,processName: undefined,categoryId: undefined,taskId: undefined,userId: undefined,originatorName: undefined,createBy: undefined,createTime: undefined,updateBy: undefined,updateTime: undefined,delFlag: undefined};this.resetForm("form");},/** 搜索按钮操作 */handleQuery() {this.queryParams.pageNum = 1;this.getList();},/** 重置按钮操作 */resetQuery() {this.resetForm("queryForm");this.handleQuery();},// 多选框选中数据handleSelectionChange(selection) {this.ids = selection.map(item => item.copyId)this.single = selection.length!==1this.multiple = !selection.length},/** 查看详情 */handleFlowRecord(row){console.log(row);this.$router.push({path: '/workflow/process/detail/' + row.instanceId,query: {taskId: row.taskId,processed: false}})},/** 导出按钮操作 */handleExport() {this.download('workflow/process/copyExport', {...this.queryParams}, `wf_copy_process_${new Date().getTime()}.xlsx`)}}
};
</script>

上面是我的抄送,主要是接口不一样。

抄送点击详情的时候更新一下状态

 /** 查看详情 */handleFlowRecord(row){console.log(row);updateCcReaded({ id: row.copyId }).then(res => {if (res.success) {console.log(res);}})this.$router.push({path: '/workflow/process/detail/' + row.instanceId,query: {taskId: row.taskId,processed: false}})},

3、后端

查询我的抄送代码:

 /*** 查询我的流程抄送列表** @param bo 流程抄送* @return 流程抄送*/@Overridepublic TableDataInfo<WfCopyVo> selectMyPageList(WfCopyBo bo, PageQuery pageQuery) {LambdaQueryWrapper<WfCopy> lqw = buildMyQueryWrapper(bo);lqw.orderByDesc(WfCopy::getCreateTime);Page<WfCopyVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);return TableDataInfo.build(result);}/*** 查询流程抄送列表** @param bo 流程抄送* @return 流程抄送*/@Overridepublic List<WfCopyVo> selectList(WfCopyBo bo) {LambdaQueryWrapper<WfCopy> lqw = buildQueryWrapper(bo);return baseMapper.selectVoList(lqw);}private LambdaQueryWrapper<WfCopy> buildMyQueryWrapper(WfCopyBo bo) {Map<String, Object> params = bo.getParams();LoginUser sysUser = commonService.getLoginUser();LambdaQueryWrapper<WfCopy> lqw = Wrappers.lambdaQuery();lqw.eq(bo.getUserId() == sysUser.getUserId(), WfCopy::getOriginatorId, bo.getUserId());return lqw;}

更新抄送代码如下:

 @Overridepublic Boolean makeCopy(WfTaskBo taskBo) {if (StringUtils.isBlank(taskBo.getCopyUserIds())) {// 若抄送用户为空,则不需要处理,返回成功return true;}HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(taskBo.getProcInsId()).singleResult();String[] ids = taskBo.getCopyUserIds().split(",");List<WfCopy> copyList = new ArrayList<>(ids.length);Long originatorId = LoginHelper.getUserId();String originatorName = LoginHelper.getNickName();String title = historicProcessInstance.getProcessDefinitionName() + "-" + taskBo.getTaskName();for (String id : ids) {Long userId = Long.valueOf(id);WfCopy copy = new WfCopy();copy.setTitle(title);copy.setProcessId(historicProcessInstance.getProcessDefinitionId());copy.setProcessName(historicProcessInstance.getProcessDefinitionName());copy.setDeploymentId(historicProcessInstance.getDeploymentId());copy.setInstanceId(taskBo.getProcInsId());copy.setTaskId(taskBo.getTaskId());copy.setUserId(userId);copy.setOriginatorId(originatorId);copy.setOriginatorName(originatorName);copy.setState("未读");copyList.add(copy);}return baseMapper.insertBatch(copyList);}@Overridepublic void updateStatus(String id) {baseMapper.updateState(id);}<update id="updateState" parameterType="com.ruoyi.workflow.domain.WfCopy">update wf_copyset state = '已读'WHERE copy_id=#{id}</update>

4、效果图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA检查项目的jdk版本需要看的地方

IDEA检查项目的jdk版本需要看的地方 1、检查项目结构&#xff0c;如下图所示选择即可 选择了之后打开了如下界面&#xff1a; 下面的三张图全部都要检查选择jdk8的版本 2、进入设置&#xff0c;如下所示&#xff1a; 进入之后&#xff0c;根据下图&#xff0c;挨个选择&#xf…

「海蓝色」海关可视化监管平台,助力海关体系实现规范化程序管理

海关监管是国家对进出境货物、旅客和邮件进行检查和控制的重要机构&#xff0c;其职责是保障国家的安全和经济利益。海关监管的核心目标是防止非法进出境活动&#xff0c;包括走私、偷逃税款等行为。海关监管通过检查和核实货物的品质、数量和价值&#xff0c;确保货物符合相关…

SMART PLC编码器角度测量

编码器角度测量在倒立摆摆杆角度测量上的应用请参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/131443657https://rxxw-control.blog.csdn.net/article/details/131443657线性模式下编码器旋转圈数和单圈计数值测量可以查看下面文章: https://rxxw…

C语言实现植物大战僵尸(完整版)

实现这个游戏需要Easy_X 这个在我前面一篇C之番外篇爱心代码有程序教你怎么下载&#xff0c;大家可自行查看 然后就是需要植物大战僵尸的素材和音乐&#xff0c;需要的可以在评论区 首先是main.cpp //开发日志 //1导入素材 //2实现最开始的游戏场景 //3实现游戏顶部的工具栏…

关于pycharm代码误删,本地历史恢复

关于pycharm代码误删&#xff0c;本地历史恢复 1.工作中或多或少的出现代码误删&#xff0c;或者其他原因导致我们的辛辛苦苦写的码子没了&#xff0c;一定很着急。 2.我们点击工作目录文件夹或者是项目内鼠标右击&#xff0c;找到local history 然后选择show history,就可以…

Python3+RIDE+RobotFramework自动化测试框架搭建过程详解

一、Python安装 最新版Python下载地址&#xff1a;https://www.python.org/ 根据操作系统选择对应版本制品下载安装即可&#xff0c;本机用的是Windows x86-64 executable installer。 注意事项&#xff1a; 安装完成后检查下环境变量&#xff0c;默认会配置好&#xff0c;可…

算法初阶双指针+C语言期末考试之编程题加强训练

双指针 常⻅的双指针有两种形式&#xff0c;⼀种是对撞指针&#xff0c;⼀种是左右指针。 对撞指针&#xff1a;⼀般⽤于顺序结构中&#xff0c;也称左右指针。 • 对撞指针从两端向中间移动。⼀个指针从最左端开始&#xff0c;另⼀个从最右端开始&#xff0c;然后逐渐往中间逼…

【链表Linked List】力扣-2 两数相加

目录 题目描述 解题过程 题目描述 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 …

JVM GUI可视化监控及诊断工具

工具既述 使用命令行工具或组合能帮您获取目标Java应用性能相关的基础信息&#xff0c;但它们存在下列局限&#xff1a; 无法获取方法级别的分析数据&#xff0c;如方法间的调用关系、各方法的调用次数和调用时间等&#xff08;这对定位应用性能瓶颈至关重要&#xff09;。要…

决战排序之巅(一)

决战排序之巅 插入排序直接插入排序 void InsertSort(int* arr, int n)希尔排序 void ShellSort(int* arr, int n)测试插入排序测试函数 void verify(int* arr, int n)测试 InsertSort测试 ShellSort测试速度 InsertSort & ShellSort 选择排序直接选择排序 void SelectSort…

初试Jakarta EE项目 - Servlet + JSP

文章目录 一、Jakarta EE概述二、Servlet概述&#xff08;一&#xff09;Servlet的概念&#xff08;二&#xff09;Servlet的工作原理&#xff08;三&#xff09;Servlet的特点1、独立性2、灵活性3、生命周期管理 &#xff08;四&#xff09;Servlet的应用场景&#xff08;五&a…

从零开始,利用ChatGPT学会写作的完整指南

文章目录 前言了解ChatGPT访问OpenAI平台使用ChatGPT进行简单的对话定义写作主题逐步生成文章段落添加个性化和细节编辑和润色反复修改直至满意 图书推荐内容简介作者简介获取方式 前言 在数字时代&#xff0c;人工智能技术日益成熟&#xff0c;为我们提供了全新的学习和创作机…

Linux CentOS本地部署SQL Server数据库结合cpolar内网穿透实现公网访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装sql server二. 局域网测试连接三. 安装cpolar内网穿透四. 将sqlserver映射…

AI报告专题:创造性和生成式人工智能

今天分享的AI系列深度研究报告&#xff1a;《AI报告专题&#xff1a;创造性和生成式人工智能》。 &#xff08;报告出品方&#xff1a;Capgemini&#xff09; 报告共计&#xff1a;64页 AI一代 生成式人工智能 (AI)正在迅速改变我们与技术的交互方式&#xff0c;使机器能够创…

基于ssm在线医疗服务系统论文

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此医疗服务信息的…

Linux---逻辑卷管理

本章主要介绍逻辑卷的管理。 了解什么是逻辑卷创建和删除逻辑卷扩展逻辑卷缩小逻辑卷逻辑卷快照的使用 前面介绍了分区的使用&#xff0c;如果某个分区空间不够&#xff0c;想增加空间是非常困难的。所以&#xff0c;建议尽可能使用逻辑卷而非普通的分区&#xff0c;因为逻辑卷…

贪心算法及相关题目

贪心算法概念 贪心算法是指&#xff0c;在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;算法得到的是在某种意义上的局部最优解 。 贪心算法性质&#xff08;判断是否可以使用贪心算法&#xff09; 1、贪…

el-menu标题过长显示不全问题处理

项目基于vue-element-admin 问题 期望 处理方式 \src\layout\components\Sidebar\index.vue 文件后添加CSS <style scped> /* 侧栏导航菜单经典 文字超长溢出问题 CSS折行 */ .el-submenu__title {display: flex;align-items: center; } .el-submenu__title span {white-…

5个免费实用的AI绘画软件,对新手极其友好!

分享5个实用的AI绘画软件&#xff0c;都可以免费使用&#xff0c;而且操作简单&#xff0c;对新手也比较友好&#xff0c;生成的图片也不错&#xff01; 1、AI-Chat 地址&#xff1a; https://mmm.aiyujiang.com 上传图片并输入AI提示词就能一键生成各类动漫、卡通风格头像&a…

一文让你知道企业真正需要一个怎样的远程协同运维平台?

随着企业业务的快速发展&#xff0c;各类系统也是越来越多&#xff0c;运维工作的作用也就越发突出&#xff0c;运维工作出现一点问题就会牵一发而动全身&#xff0c;所以企业需要一个远程协同运维平台。那企业真正需要一个怎样的远程协同运维平台呢&#xff1f;有空可以看看这…