Crud数据审批

新增修改的配置方法 #

  • 不管是新增,更新,审批,导入的数据集配置方法都是一样的,参考 数据更新
  • 新建好数据集后,指定对定的数据集序号就可以开启了
  • 关于审批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)