审批流 #
mysql建表 #
drop table if exists oa_flowinfo;
CREATE TABLE oa_flowinfo(
id int PRIMARY KEY auto_increment,
tid smallint default 0 comment '租户ID',
uuid varchar(20),
name varchar(50),
description varchar(200),
category varchar(50),
flow TEXT,
status varchar(20),
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updater varchar(50),
UNIQUE uc(tid,name)
) comment '审批流定义';
drop table if exists oa_flowinstances;
CREATE TABLE if exists oa_flowinstances(
id int PRIMARY KEY auto_increment,
tid smallint default 0 comment '租户ID',
uuid varchar(50),
title varchar(100),
remark varchar(500),
formId varchar(50),
variables varchar(500),
definitionId varchar(50),
applicant varchar(50),
status varchar(50),
currentNodeId varchar(50),
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updater varchar(50)
)comment '审批单';
drop table if exists oa_flowtasks;
CREATE TABLE oa_flowtasks(
id int PRIMARY KEY auto_increment,
tid smallint default 0 comment '租户ID',
uuid varchar(50),
instanceId varchar(50),
nodeId varchar(50),
nodeName varchar(50),
assignee varchar(50),
status varchar(50),
instructions varchar(200),
variables varchar(500),
comment varchar(100),
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updater varchar(50)
)comment '审批任务';
sqlite建表 #
DROP TABLE IF EXISTS oa_flowinfo;
CREATE TABLE oa_flowinfo(
id INTEGER PRIMARY KEY AUTOINCREMENT,
tid INTEGER DEFAULT 0,
uuid TEXT,
name TEXT,
description TEXT,
category TEXT,
flow TEXT,
status TEXT,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP,
updater TEXT,
UNIQUE(tid, name)
);
DROP TABLE IF EXISTS oa_flowinstances;
CREATE TABLE oa_flowinstances(
id INTEGER PRIMARY KEY AUTOINCREMENT,
tid INTEGER DEFAULT 0,
uuid TEXT,
title TEXT,
remark TEXT,
formId TEXT,
variables TEXT,
definitionId TEXT,
applicant TEXT,
status TEXT,
currentNodeId TEXT,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP,
updater TEXT
);
DROP TABLE IF EXISTS oa_flowtasks;
CREATE TABLE oa_flowtasks(
id INTEGER PRIMARY KEY AUTOINCREMENT,
tid INTEGER DEFAULT 0,
uuid TEXT,
instanceId TEXT,
nodeId TEXT,
nodeName TEXT,
assignee TEXT,
status TEXT,
instructions TEXT,
variables TEXT,
comment TEXT,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP,
updater TEXT
);
导入审批流页面 #
专业版本可以找客服提供
数据变更审批 #
- 不管是新增,更新,审批,导入的数据集配置方法都是一样的,参考 数据更新
- 新建好数据集后,指定对定的数据集序号就可以开启了
- 关于审批ds, 你需要先建好审批表,然后定义写入审批即可,以下为建表样列
create table modify_request(
id INT NOT NULL AUTO_INCREMENT,
tablename VARCHAR(50) NOT NULL,
codename VARCHAR(50) NOT NULL,
code VARCHAR(50) NOT NULL,
columnname varchar(50),
oldvalue varchar(100),
newvalue varchar(255),
requester varchar(50),
checker varchar(50),
flag int default 0,
request_remark varchar(200),
check_remark varchar(200),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) comment '变更清单';
dataset={
"table":"modify_request",
"sFields":[],
"id":"id",
"fDict":{},
"autoDict":{"tablename":"表名","codename":"主键名","requester":"$username"}
}
-
审批有两种方式, 一种是打开单独的窗口选择要修改的字段(开启审批), 还有一种是编辑里不会生效,会流向审批(开启审批编辑)
-
审批界面也是通过平台CRUD功能生成, 采用两个功能按钮(参考"批量动作设定")
import json
action='$action'
updatelist="$updatelist"
sql=''
if action=='check':
contents=ds_sql('数据源名',f'select tablename,columnname,newvalue,codename,code from modify_request where id in ({updatelist})')
sql=[]
for content in contents[1:]:
if content[1]:
sql.append(f"update {content[0]} set {content[1]}='{content[2]}' where {content[3]}='{content[4]}'")
else:
changeList=[]
changeDict=json.loads(content[2])
for k,v in changeDict.items():
changeList.append(f"{k}='{v}'")
changeList=','.join(changeList)
if changeList:
sql.append(f"update {content[0]} set {changeList} where {content[3]}='{content[4]}'")
sql.append(f"update modify_request set flag=2, checker='$username' where id in ({updatelist})")
sql=';'.join(sql)
elif action=='reject':
sql= f"update modify_request set flag=1, checker='$username' where id in ({updatelist})"
if sql:
ds=ds_sql('数据源名',sql)