BYSMS系统 API 接口 1.2 - 补充接口
获取账号profile
请求消息
请求参数
无
响应消息
响应内容
http 响应消息 body 中, 数据以json格式存储,
如果获取成功,返回如下
{
"ret": 0,
"profile": {
"userid": 2,
"username": "ws0001",
"usertype": 8888,
"realname": "车间工1",
"avatar" : "f2"
}
}
其中, username
是登录时使用的登录名, 而 realname
是显示在界面上的用户名称(昵称)
avatar
是用户头像图片文件名, 后面加上 png
后缀 就是对应的头像图片。
如果该字段值为空,就使用缺省头像 default.png
头像图片在给学员的网盘下载资源目录中的 icons/avatars
目录中
如果失败,返回失败的原因,示例如下
ret 不为 0 表示失败, msg字段描述失败的原因
退出登录
请求消息
请求参数
无
响应消息
响应内容
http 响应消息 body 中, 数据以json格式存储,
如果退出登录成功,返回如下
ret 为 0 表示退出登录成功
如果退出登录失败,返回失败的原因,示例如下
ret 不为 0 表示退出登录失败, msg字段描述失败的原因
药品送检工作流 1
该API接口 用来 进行药品送检发布流程 的处理。
药品送检流程定义如下:
{
# 状态,开始状态名一定得是开始
"开始": {
# action 定义了该状态下,可以接受的 几种 操作
# 如果action == None,表示该状态为 结束状态
"actions": {
'创建送样申请': {
# 谁可以执行该动作,目前支持
# everyone 所有人
# permission 需要拥有某种权限
# creator 是否是流程发起者 True,False
# usertype 必须是某种类型用户
'whocan': {
'permission':'common.wf_medicine_exam_submit'
},
# 该动作需要提交的数据格式
'submitdata': [
{
'name': '送样时间', # 字段名称
'type': 'DateTimePicker', # 字段类型
},
{
'name': '批号', # 字段名称, 一轮生产测试
'type': 'LineEdit', # 字段类型
'check_string_len': [2, 50], # 字段输入值长度要求
},
{
'name': '送样编号', # 字段名称 一批可以送给好几个QC组进行测试,测试目标不一样。
'type': 'LineEdit', # 字段类型
'check_string_len': [2, 50], # 字段输入值长度要求
},
{
'name': '组别', # 字段名称 目标QC组
'type': 'LineEdit', # 字段类型
'check_string_len': [2, 30], # 字段输入值长度要求
},
{
'name': '值班联系人、联系方式', # 字段名称 QC部门值班人员
'type': 'PlainTextEdit',
'check_string_len': [0, 200], # 字段输入值长度要求
},
{
'name': '备注(淬灭后送样、大概含量等信息)', # 字段名称
'type': 'PlainTextEdit',
'check_string_len': [0, 10000], # 字段输入值长度要求
},
],
# 操作后,进入到 下一个状态名
'next': "送样申请已创建",
},
}
},
# 状态
"送样申请已创建": {
"actions": {
'中止流程': WF.action_admin_terminate,
'开始空白/对照样工作': {
'whocan': {
'permission':'common.wf_medicine_exam_handle'
},
'submitdata': [
{
'name': '备注',
'type': 'PlainTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "空白/对照样工作已开始",
},
'打回申请': {
'whocan': {
'permission':'common.wf_medicine_exam_handle'
},
'submitdata': [
{
'name': '打回原因',
'type': 'PlainTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "中止",
},
'修改送样时间': {
'whocan': {
'permission':'common.wf_medicine_exam_submit'
},
'submitdata': [
{
'name': '新送样时间', # 字段名称
'type': 'DateTimePicker', # 字段类型
},
{
'name': '修改原因',
'type': 'PlainTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "送样申请已创建",
},
}
},
# 状态
"空白/对照样工作已开始": {
"actions": {
'中止流程': WF.action_admin_terminate,
'确认收到样品': {
'whocan': {
'permission':'common.wf_medicine_exam_handle'
},
'submitdata': [
{
'name': '备注',
'type': 'PlainTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "等待IPC报告",
},
'确认修改送样时间': {
'whocan': {
'permission':'common.wf_medicine_exam_handle'
},
'submitdata': [
{
'name': '备注',
'type': 'PlainTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "空白/对照样工作已开始",
},
'修改送样时间': {
'whocan': {
'permission': 'common.wf_medicine_exam_submit'
},
'submitdata': [
{
'name': '新送样时间', # 字段名称
'type': 'DateTimePicker', # 字段类型
},
{
'name': '备注',
'type': 'PlainTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "空白/对照样工作已开始",
},
}
},
# 状态
"等待IPC报告": {
"actions": {
'中止流程': WF.action_admin_terminate,
'提交IPC报告': {
'whocan': {
'permission':'common.wf_medicine_exam_handle'
},
'submitdata': [
{
'name': '报告内容',
'type': 'PlainTextEdit',
'check_string_len': [0, 10000], # 字段输入值长度要求
},
],
'next': '结束',
}
}
},
# 为None表示这是结束步骤,没有操作了
"结束": None,
# 为None表示这是结束步骤,没有操作了
"中止": None
}
药品送检工作流 的API url路径均为 /api/wf_medicineexam
。
列出
用来列出系统中的我可以看到的药品送检工作流记录。
请求
- 请求头
GET /api/wf_medicineexam?action=listbypage&pagenum=1&pagesize=50&keywords=
Cookie: sessionid=<sessionid数值>
- url参数
参数名 | 示例 | 必要性 | 含义 |
---|---|---|---|
action | listbypage | 必填项 | 必须为 listbypage |
pagesize | 1 | 必填项 | 分页的 每页获取多少条记录 |
pagenum | 2 | 必填项 | 获取第几页的信息 |
keywords | 白月 黑 | 可选项 | 搜索关键字,如果提供,表示工作流标题中包含的关键字。 多个关键字以空格隔开,表示工作流标题中同时包含的关键字词 |
响应
后端返回列出结果
- 消息体
{
"ret": 0,
"items": [
{
"id": 15,
"creator": 6,
"creator__realname": "张飞",
"title": "2024-12-01 22:01 - Lyrica - 纯度",
"currentstate": "送样申请已创建",
"createdate": "2024-12-01T16:01:25.968Z"
},
{
"id": 12,
"creator": 6,
"creator__realname": "张飞",
"title": "2024-12-01 22:32 - Lyrica - 硬度",
"currentstate": "结束",
"createdate": "2024-12-01T16:32:00.871Z"
}
],
"total": 2,
"keywords": ""
}
ret 为 0 表示列出成功
total 总共有2条工作流记录
items 数组 里面包含了当前页中的工作流记录。
每条记录以如下格式存储
{
"id": 12,
"creator": 6,
"creator__realname": "张飞",
"title": "2024-12-01 22:32 - Lyrica - 硬度",
"currentstate": "结束",
"createdate": "2024-12-01T16:32:00.871Z"
}
其中:
title
是 工作流流记录的 标题
currentstate
是该工作流的当前状态
询问可否新建工作流
用来询问本账号是否有权限新建 送检工作流
只有 赋予权限的 账号才能创建
请求
- 请求头
- url参数
参数名 | 示例 | 必要性 | 含义 |
---|---|---|---|
action | canicreatewf | 必填项 | 必须为 canicreatewf |
响应
后端返回列出结果
- 消息体
ret 为 0 表示列出成功
permitted 为 true
表示有新建工作流的权限, 为 false
表示没有该权限
获取一个工作流信息
请求
- 请求头
其中 withwhatcanido=true
参数指明了 同时要返回 当前我可以 对这个工作流 进行的操作
id参数为对应的工作流id
响应
- 消息体
{
"ret": 0,
"rec": {
"id": 4,
"creatorname": "车间工1",
"title": "2024-11-30 03:00 - 普瑞巴林(Lyrica)提纯 第6期 - 室温稳定观察",
"currentstate": "空白/对照样工作已开始",
"createdate": "2024-11-30T01:38:28.056Z",
"steps": [
{
"id": 10,
"operator_id": 2,
"operator__realname": "车间工1",
"operator__avatar": "m2",
"actiondate": "2024-11-30T01:38:28.056Z",
"actionname": "创建送样申请",
"nextstate": "送样申请已创建"
},
{
"id": 11,
"operator_id": 2,
"operator__realname": "车间工1",
"operator__avatar": "m2",
"actiondate": "2024-11-30T01:43:56.899Z",
"actionname": "修改送样时间",
"nextstate": "送样申请已创建"
},
{
"id": 12,
"operator_id": 3,
"operator__realname": "质检工1",
"operator__avatar": "f2",
"actiondate": "2024-11-30T01:45:00.262Z",
"actionname": "开始空白/对照样工作",
"nextstate": "空白/对照样工作已开始"
},
{
"id": 13,
"operator_id": 2,
"operator__realname": "车间工1",
"operator__avatar": "m2",
"actiondate": "2024-11-30T01:46:17.693Z",
"actionname": "修改送样时间",
"nextstate": "空白/对照样工作已开始"
},
{
"id": 14,
"operator_id": 3,
"operator__realname": "质检工1",
"operator__avatar": "f2",
"actiondate": "2024-11-30T01:50:16.278Z",
"actionname": "确知修改送样时间",
"nextstate": "空白/对照样工作已开始"
}
]
},
"whaticando": [
{
"name": "确认收到样品",
"submitdata": [
{
"name": "备注",
"type": "PlainTextEdit",
"check_string_len": [
0,
50000
]
}
]
},
{
"name": "确知修改送样时间",
"submitdata": [
{
"name": "备注",
"type": "PlainTextEdit",
"check_string_len": [
0,
50000
]
}
]
}
],
"wf_name": "药品送检"
}
其中:
rec 里面记录了工作流的信息,包括
id: 工作流的id,
creatorname: 工作流的创建者姓名,
title: 药品送检的标题,
currentstate: 工作流的当前状态,
createdate: 工作流的创建时间, ISO时间格式的字符串。
steps: 工作流的步骤
里面的依次列出每个步骤的id,操作者名字,操作时间,操作名称、操作完进入什么状态
如果请求要获取的工作流的id为-1,表示要创建一个新工作流记录,服务端应该返回如下
{
"ret": 0,
"wf_name": "药品送检",
"rec": {
"id": -1,
"creatorname": "",
"title": "",
"currentstate": "",
"createdate": ""
},
"whaticando": [
{
"name": "创建送样申请",
"submitdata": [
{
"name": "送样时间",
"type": "DateTimePicker"
},
{
"name": "批号",
"type": "LineEdit",
"check_string_len": [
2,
50
]
},
{
"name": "送样编号",
"type": "LineEdit",
"check_string_len": [
2,
50
]
},
{
"name": "组别",
"type": "LineEdit",
"check_string_len": [
2,
30
]
},
{
"name": "值班联系人、联系方式",
"type": "PlainTextEdit",
"check_string_len": [
0,
200
]
},
{
"name": "备注(淬灭后送样、大概含量等信息)",
"type": "PlainTextEdit",
"check_string_len": [
0,
10000
]
}
]
}
]
}
whaticando 里面是当前状态下,我可以进行的操作,每个可行操作的格式如下
{
"name": "驳回主题",
"submitdata": [
{
"name": "驳回原因",
"type": "textarea",
"check_string_len": [
0,
10000
]
}
],
"whocan": 4,
"next": "主题被驳回",
"key": "reject_topic"
}
name 为操作名
key 为执行该操作,对应的 api 中 key字段的名称
submitdata 为该操作需要提交的参数数据,其中
name 是参数名
type 是参数类型,目前有4种
int: 整数,
text: 单行文本
textarea : 多行文本
richtext: 多行富文本,内容可以包含图片等
另外还可能有检查机制,目前主要有
check_int_range: 检查输入整数范围
check_string_len: 检查字符串长度范围
每个状态下,可以进行的操作,这里没有一一记录。请大家运行下载包,F12浏览器查看消息记录,根据实际的接口消息,编写后端代码。
执行一个工作流操作步骤
请求
- 请求头
- 消息体
{
"action": "stepaction",
"name": "创建送样申请",
"wf_id": -1,
"submitdata": [
{
"name": "送样时间",
"type": "DateTimePicker",
"value": "2024-11-27T15:27:00.000Z"
},
{
"name": "批号",
"type": "LineEdit",
"value": "B32"
},
{
"name": "送样编号",
"type": "LineEdit",
"value": "QC3-21"
},
{
"name": "组别",
"type": "LineEdit",
"value": "QC3"
},
{
"name": "值班联系人、联系方式",
"type": "PlainTextEdit",
"value": "王常陆 13998765"
},
{
"name": "备注(淬灭后送样、大概含量等信息)",
"type": "PlainTextEdit",
"value": "淬灭后送样、大概含量等信息"
}
]
}
其中:
action
固定为stepaction
key
为操作名
wf_id
为操作的工作流id, -1 表示系统还没有该工作量记录,是新建的工作流
submitdata
为提交的操作数据
响应
服务端,应该对该操作进行鉴权,如果通过,存储操作数据到数据库中,并且返回响应。
注意,每个操作,服务端需要存储起来,并为其分配一个单独的id,对应这个操作,方便前端将来查询这个操作的具体submitdata数据信息。
- 消息体
获取一个工作流操作步骤信息
大家可以发现,获取一个工作流信息时,里面的每个步骤并不包含submitdata。
因为 submitdata数据量可能很大。
当使用者要查看一个操作的具体 submitdata 数据的时候,前端发出此API请求获取该操作的 submitdata。
请求
- 请求头
其中 step_id 参数为操作步骤id
响应
- 消息体
格式示例如下:
{
"ret": 0,
"data": [
{
"name": "送样时间",
"type": "DateTimePicker",
"value": "2024-11-27T15:27:00.000Z"
},
{
"name": "批号",
"type": "LineEdit",
"value": "B32"
},
{
"name": "送样编号",
"type": "LineEdit",
"value": "QC3-21"
},
{
"name": "组别",
"type": "LineEdit",
"value": "QC3"
},
{
"name": "值班联系人、联系方式",
"type": "PlainTextEdit",
"value": "王常陆 13998765"
},
{
"name": "备注(淬灭后送样、大概含量等信息)",
"type": "PlainTextEdit",
"value": "淬灭后送样、大概含量等信息"
}
]
}
其中 data里面存储了该操作步骤的 submitdata数据。
药品送检工作流 2
该工作流和 药品送检工作流 1 几乎一模一样,除了有些 纯文本的 PlainTextEdit
替换为 富文本的 RichTextEdit
另外一个区别就是api接口中 /api/wf_medicineexam
改为 /api/wf_medicineexam2
定义如下:
{
'name' : '药品送检2',
'rule' : {
# 状态,开始状态名一定得是开始
"开始": {
# action 定义了该状态下,可以接受的 几种 操作
# 如果action == None,表示该状态为 结束状态
"actions": {
'创建送样申请': {
# 谁可以执行该动作,目前支持
# everyone 所有人
# permission 需要拥有某种权限
# creator 是否是流程发起者 True,False
# usertype 必须是某种类型用户
'whocan': {
'permission':'common.wf_medicine_exam_submit'
},
# 该动作需要提交的数据格式
'submitdata': [
{
'name': '送样时间',
'type': 'DateTimePicker',
},
{
'name': '批号',
'type': 'LineEdit',
'check_string_len': [2, 50],
},
{
'name': '送样编号',
'type': 'LineEdit',
'check_string_len': [2, 50],
},
{
'name': '组别',
'type': 'LineEdit',
'check_string_len': [2, 30],
},
{
'name': '值班联系人、联系方式',
'type': 'PlainTextEdit',
'check_string_len': [0, 200],
},
{
'name': '备注(淬灭后送样、大概含量等信息)',
'type': 'RichTextEdit',
'check_string_len': [0, 10000],
},
],
# 操作后,进入到 下一个状态名
'next': "送样申请已创建",
},
}
},
# 状态
"送样申请已创建": {
"actions": {
'中止流程': WF.action_admin_terminate,
'开始空白/对照样工作': {
'whocan': {
'permission':'common.wf_medicine_exam_handle'
},
'submitdata': [
{
'name': '备注',
'type': 'RichTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "空白/对照样工作已开始",
},
'打回申请': {
'whocan': {
'permission':'common.wf_medicine_exam_handle'
},
'submitdata': [
{
'name': '打回原因',
'type': 'RichTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "中止",
},
'修改送样时间': {
'whocan': {
'permission':'common.wf_medicine_exam_submit'
},
'submitdata': [
{
'name': '新送样时间',
'type': 'DateTimePicker',
},
{
'name': '修改原因',
'type': 'RichTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "送样申请已创建",
},
}
},
# 状态
"空白/对照样工作已开始": {
"actions": {
'中止流程': WF.action_admin_terminate,
'确认收到样品': {
'whocan': {
'permission':'common.wf_medicine_exam_handle'
},
'submitdata': [
{
'name': '备注',
'type': 'RichTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "等待IPC报告",
},
'确认修改送样时间': {
'whocan': {
'permission':'common.wf_medicine_exam_handle'
},
'submitdata': [
{
'name': '备注',
'type': 'RichTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "空白/对照样工作已开始",
},
'修改送样时间': {
'whocan': {
'permission': 'common.wf_medicine_exam_submit'
},
'submitdata': [
{
'name': '新送样时间',
'type': 'DateTimePicker',
},
{
'name': '备注',
'type': 'RichTextEdit',
'check_string_len': [0, 50000],
},
],
'next': "空白/对照样工作已开始",
},
}
},
# 状态
"等待IPC报告": {
"actions": {
'中止流程': WF.action_admin_terminate,
'提交IPC报告': {
'whocan': {
'permission':'common.wf_medicine_exam_handle'
},
'submitdata': [
{
'name': '报告内容',
'type': 'RichTextEdit',
'check_string_len': [0, 10000],
},
],
'next': '结束',
}
}
},
# 为None表示这是结束步骤,没有操作了
"结束": None,
# 为None表示这是结束步骤,没有操作了
"中止": None
}
}
上传图片接口
请求
- 请求头
file_name 值为文件名, 目前只支持 jpg
或者 png
扩展名的文件
响应
- 消息体
ret 为 0 表示列出成功
url 字段表示服务端该图片的url地址
ret 不为 0 表示失败, msg字段描述失败的原因