1.配置流程图
1登录系统
1. 登录系统,选择菜单 用户机构权限---》模型管理---》新增模型
2.配置流程
在用户任务上配置用户角色办理人等
在审核流程流程箭头配置配置流程条件
在审核通过驳回处配置互斥网关
2.配置数据库数据
流程配置找到表 pm_s_flowinfo,在系统中新增流程之后该表会自动新增一条数据但是只有主键id,需要自己配置表信息
WF_NODE_FIELD:要走流程的业务表 流程节点记录字段
PROCESS_FIELD:要走流程的业务表 流程实例记录字段
BUSINESS_KEY_FIELD :要走流程的业务表 主键名字一般名字未 ID
BUSINESS_TABLE_NAME : 要走流程的业务表 业务表名字
AUDIT_FLAG:审核类型标识,一般以业务表面一致就行(审核类型标识符,用在表 pm_base_audit的use_object中)
FLOW_CODE:统一编码,流程的唯一编码不能重复
CUS_NODE_FIELD:自定义节点ID目前写 cus_node_id写死
3.编写流程代码
3.1流程启动代码
public PmXxhProjectPreEvaluation insert(PmXxhProjectPreEvaluation pmXxhProjectPreEvaluation, LoginUser user) {
pmXxhProjectPreEvaluation.setId(UUID.randomUUID().toString());
pmXxhProjectPreEvaluation.setStatus("1");
pmXxhProjectPreEvaluation.setIsDelete("0");
pmXxhProjectPreEvaluation.setCreateDepId(user.getOrgCode());
pmXxhProjectPreEvaluation.setCreateUser(user.getUserId());
pmXxhProjectPreEvaluation.setCreateTime(new Date());
pmXxhProjectPreEvaluation.setUpdateUser(user.getUserId());
pmXxhProjectPreEvaluation.setUpdateTime(pmXxhProjectPreEvaluation.getCreateTime());
pmXxhProjectPreEvaluation.setMofDivCode(user.getMofDivCode());
pmXxhProjectPreEvaluation.setFiscalYear(user.getFiscalYear());
pmXxhProjectPreEvaluationDao.insert(pmXxhProjectPreEvaluation);
Map<String, Object> params =
ConvertBeanUtils.transBean2Map(pmXxhProjectPreEvaluation);
//上面新增数据把实体转成Map
//流程启动代码 project-pre-evaluation-workflow流程唯一Code
prjFlowFactory.getFlowOperator("project-pre-evaluation-workflow")
.startFlow(pmXxhProjectPreEvaluation.getId(), user.getUserId(), params);
return pmXxhProjectPreEvaluation;
}
3.2自己重写的流程上报审批等接口
public Object batchReport(EscalationVo escalationVo, LoginUser user) {
if (escalationVo.getIds().isEmpty() || StringUtils.isEmpty(escalationVo.getFlowKey())) {
return null;
}
Map<String, String> flowInfo = auditsDao.selectFlow(escalationVo.getFlowKey());
if (flowInfo == null || StringUtils.isEmpty(flowInfo.get("BUSINESS_TABLE_NAME"))) {
return null;
}
List<String> ids = escalationVo.getIds();
if (ids != null && !ids.isEmpty()) {
ids.forEach(id -> {
Map<String, Object> params = auditsDao.selectEntity(id, flowInfo.get("BUSINESS_TABLE_NAME"), flowInfo.get("BUSINESS_KEY_FIELD"));
if (params != null) {
params.put("prjId", id);
params.put("taskId", id);
params.put("auditResult", 1);
String useObject = escalationVo.getFlowKey();
if (escalationVo.getAuditStatus() != null) {
params.put("status", escalationVo.getAuditStatus());
}
FlowStatus status = prjFlowFactory.getFlowOperator(useObject).commit(id, user.getUserId(), params);
PmBaseAuditWithBLOBs auditRecord = new PmBaseAuditWithBLOBs();
auditRecord.setJobId(id);
auditRecord.setPrjId(id);
auditRecord.setUseObject(useObject);
auditRecord.setAuditType(1);
auditRecord.setAuditResultCode("0");
auditRecord.setAuditResult(escalationVo.getAuditStatusContent());
auditRecord.setImproveContent("----");
auditRecord.setConclusionName(escalationVo.getAuditStatusContent());
this.pmBaseAuditService.auditHandle(auditRecord, params, status.getProcessInstanceId(), user, false);
try {
auditsDao.updateStatus(id,flowInfo.get("BUSINESS_TABLE_NAME"), escalationVo.getAuditStatus(), flowInfo.get("BUSINESS_KEY_FIELD"));
} catch (Exception E) {
E.printStackTrace();
}
}
});
}
return null;
}
实体类型
package com.wenzheng.xxh.audit.vo;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @Author ZRP
* @Date 2023/12/8 9:31
*/
@Data
public class EscalationVo {
/**
* 走流程业务表-->主键id 集合
*/
private List<String> ids;
/**
* 流程key
* 例:project-pre-evaluation-workflow流程唯一Code
*/
private String flowKey;
/**
* 审核状态 目前自定义 根据自己的业务来
* 状态 1: 未上报 2:部门审核中 3:部门审核退回 4:部门审核通过 5:待整改(部门发起)
* 6:业务科室审核退回 7:业务科室审核通过 8:待整改(业务科室发起)
* 9:绩效中心审核退回 10:绩效中心审核通过
*/
private Integer auditStatus;
/**
* 审核状态内容-->用于做审批记录存放用
* 上报成功 主管通过 主管驳回 财政通过 财政驳回 等
*/
private String auditStatusContent;
}
3.3接口调用API
地址 | http://10.30.4.96:8412/audits/batchReport |
请求头 | Content-Type:application/json Wz-Token:token |
传参 | { "auditStatus": 10, "auditStatusContent": "财政通过", "flowKey": "project-construction-workflow-test", "ids": ["02c4951c-bbdf-48b3-b913-794c4ab2e9bf"] } |