• 基于jeecgboot的flowable增加流程节点抄送功能


    1、后端

    主要增加flow_cc一个表

     增加相应的这个表模块功能

    @GetMapping(value = "/list")
        public Result queryPageList(FlowCc flowCc,
                                       @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                       @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                       HttpServletRequest req) {
            QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(flowCc, req.getParameterMap());
            
            queryWrapper.eq("username", iFlowThirdService.getLoginUser().getUsername());
            Page page = new Page(pageNo, pageSize);
            IPage pageList = flowCcService.page(page, queryWrapper);
            return Result.OK(pageList);
        }

    这里主要修改了增加条件,只显示自己的数据

    增加流程抄送类功能

    @Override
        public Boolean flowCc(FlowTaskVo taskVo) {
            if (StringUtils.isEmpty(taskVo.getCcUsers())) {
                // 若抄送用户为空,则不需要处理,返回成功
                return true;
            }
            HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
                .processInstanceId(taskVo.getInstanceId()).singleResult();
            String[] usernames = taskVo.getCcUsers().split(",");
            List flowCcList = new ArrayList<>();
            String initiatorUsername = iFlowThirdService.getLoginUser().getUsername();
            String initiatorRealname = iFlowThirdService.getLoginUser().getRealname();
            String title = historicProcessInstance.getProcessDefinitionName();
            for (String username : usernames) {
                FlowCc flowCc = new FlowCc();
                flowCc.setTitle(title);
                flowCc.setFlowId(historicProcessInstance.getProcessDefinitionId());
                flowCc.setFlowName(historicProcessInstance.getProcessDefinitionName());
                flowCc.setDeploymentId(historicProcessInstance.getDeploymentId());
                flowCc.setInstanceId(taskVo.getInstanceId());
                flowCc.setTaskId(taskVo.getTaskId());
                flowCc.setBusinessKey(taskVo.getBusinessKey());
                flowCc.setUsername(username);
                flowCc.setInitiatorUsername(initiatorUsername);
                flowCc.setInitiatorRealname(initiatorRealname);
                flowCcList.add(flowCc);
            }
            return insertBatch(flowCcList);
        }
        /**
         * 批量插入(包含限制条数,目前现在100条)
        */
        @Override
        public boolean insertBatch(List flowCcList) {
            String sqlStatement = SqlHelper.getSqlStatement(this.currentMapperClass(), SqlMethod.INSERT_ONE);
            return SqlHelper.executeBatch(this.currentModelClass(), log, flowCcList, 100,
                    (sqlSession, entity) -> sqlSession.insert(sqlStatement, entity));
        }

    2、前端

    通过代码自动生成,拷贝进去,就是详情修改一下如下

    /** 流程流转记录 */
          handleFlowRecord(row){
            console.log("handleFlowRecord row=",row);
            this.$router.push({ path: '/flowable/task/record/index',
              query: {
                procInsId: row.instanceId,
                deployId: row.deploymentId,
                taskId: row.taskId,
                businessKey: row.businessKey,
                finished: false
            }})
          },

    选择抄送人增加一下


             
           

    3、效果如下:

     

     

     

  • 相关阅读:
    Django-(7)
    自动化测试何时切入?为何选择selenium做UI自动化?
    教师节到了,用Python做了个非常好用的学生点名系统
    开源 RPA 和并行处理的力量
    力扣124. 二叉树中的最大路径和
    Dubbo-SPI机制
    数据挖掘实验(二)数据预处理【等深分箱与等宽分箱】
    【PowerShell代码】清除掉文件中的非英文字母
    C# - Enum各种转换
    Rt-Thread 5-调度
  • 原文地址:https://blog.csdn.net/qq_40032778/article/details/127405740