一、mysql表结构
DROP TABLE IF EXISTS `work_flow`;
CREATE TABLE `work_flow` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
`work_type` int(2) COMMENT '流程类型',
`work_type_name` varchar(255) COMMENT '流程类型名称',
`create_time` datetime(0) COMMENT '创建时间',
`modify_time` datetime(0) COMMENT '修改时间,时间戳',
`process_code` varchar(255) COMMENT '流程号(雪花算法)',
`states` int(255) COMMENT '流程状态(1.待审核/2.撤销/3.驳回/4.通过)',
PRIMARY KEY (`id`) USING BTREE
);
DROP TABLE IF EXISTS `work_flow_process`;
CREATE TABLE `work_flow_process`(
`id` int(11) COMMENT '主键',
`work_flow_id` int(11) COMMENT '关联流程主表ID',
`business_id` int(11) COMMENT '业务流程节点(1校长/2副校长/3班主任)',
`audit_user_id` int(11) COMMENT '审核人id',
`audit_user_name` varchar(255) COMMENT '审核人名称',
`audit_user_remark` varchar(500) COMMENT '审核意见',
`audit_time` datetime(0) COMMENT '审核时间',
`audit_status` int(10) COMMENT '1审核中/2待我审核/3通过/4驳回',
`delete_state` int(1) COMMENT '删除状态,默认0'
);
二、Java核心逻辑实现
public class workFlowProcess {
@Override
public PageUtils selectAgendaList(Query query) {
PageHelper.startPage(query.getPage(), query.getLimit(),query.getOrderBy());
List<MeteWorkProcessNodeNongHang> agendaList = this.mapper.selectAgendaList(query);
List<WorkFlowProssNodeDefinition> definitions = WorkFlowProssNodeDefinition.workFlowIDCNongHang();
WorkFlowProssNodeDefinition head = definitions.get(0);
for (MeteWorkProcessNodeNongHang node : agendaList) {
List<String> btns = new ArrayList<>();
btns.add("审核通过");
if (head.getUserId() != node.getAuditUserId()){
btns.add("驳回");
}
List<Map<String,Object>> backNodes = new ArrayList<>();
for (WorkFlowProssNodeDefinition definition : definitions) {
if (definition.getUserId() == node.getAuditUserId()){
break;
}
Map<String,Object> backInfo = new HashMap<>();
backInfo.put("workId",node.getWorkId());
backInfo.put("userId",definition.getUserId());
backInfo.put("userName",definition.getUserName());
backNodes.add(backInfo);
}
node.setAuditBtns(btns);
node.setBackNodes(backNodes);
}
List<Map<String,Object>> datas = new ArrayList<>();
for (MeteWorkProcessNodeNongHang l : agendaList) {
try {