2025-09-29 09:35:08 +08:00
|
|
|
|
# 其他模块文档 (Python版本)
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
## 实现状态说明
|
|
|
|
|
|
|
|
|
|
|
|
- ✅ **已实现**: 功能已完全实现并可正常使用
|
|
|
|
|
|
- ⚠️ **部分实现**: 基础框架已实现,但需要与外部系统集成
|
|
|
|
|
|
- ❌ **待实现**: 尚未实现,需要开发
|
|
|
|
|
|
|
|
|
|
|
|
## 访问方式
|
|
|
|
|
|
|
|
|
|
|
|
在脚本中通过 `VWED.other` 访问所有其他模块功能。
|
|
|
|
|
|
|
|
|
|
|
|
## 创建唯一的 ID 编号
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
|
|
|
|
|
* 方法说明
|
|
|
|
|
|
|
|
|
|
|
|
创建唯一的 ID 编号。
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
def create_uuid() -> str
|
2025-09-25 10:52:52 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* 输入参数
|
|
|
|
|
|
|
|
|
|
|
|
无。
|
|
|
|
|
|
* 输出参数
|
|
|
|
|
|
* 表示一个唯一 ID 编号的字符串。
|
|
|
|
|
|
* 异常
|
|
|
|
|
|
|
|
|
|
|
|
本方法会抛出异常。
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
## 发送邮件 ⚠️
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
|
|
|
|
|
* 方法说明
|
|
|
|
|
|
|
|
|
|
|
|
向目标收件方发送简单邮件。
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
def send_mail(param: str) -> None
|
2025-09-25 10:52:52 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* 输入参数
|
2025-09-29 09:35:08 +08:00
|
|
|
|
* param,str 类型,表示邮件的详情,反序列化后的示例如下:
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
2025-09-25 10:52:52 +08:00
|
|
|
|
{
|
2025-09-29 09:35:08 +08:00
|
|
|
|
"to": "yy@yy.com", # 接收方,必填
|
|
|
|
|
|
"subject": "Daily Meeting", # 主题,必填
|
|
|
|
|
|
"text": "xxx", # 内容,必填
|
|
|
|
|
|
"cc": "xxx@xxx.com,yyy@yyy.com", # 抄送,选填
|
|
|
|
|
|
"bcc": "zzz@zzz.com" # 秘密抄送,选填
|
2025-09-25 10:52:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
* 输出参数
|
|
|
|
|
|
|
|
|
|
|
|
无。
|
|
|
|
|
|
* 异常
|
|
|
|
|
|
|
|
|
|
|
|
本方法会抛出异常。
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
## 发送用户消息 ⚠️
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
|
|
|
|
|
* 方法说明
|
|
|
|
|
|
|
|
|
|
|
|
发送用户消息,不仅可以弹窗提醒,还可以在RDS的消息管理界面进行查看。
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
def send_user_message(level: str, message_title: str, message_body: str) -> None
|
2025-09-25 10:52:52 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* 输入参数
|
2025-09-29 09:35:08 +08:00
|
|
|
|
* level,str 类型,表示消息提醒的等级,有ERROR,WARN,INFO三种等级。
|
|
|
|
|
|
* message_title,str 类型,表示用户消息的标题。
|
|
|
|
|
|
* message_body,str 类型,表示用户消息的内容。
|
2025-09-25 10:52:52 +08:00
|
|
|
|
* 输出参数
|
|
|
|
|
|
|
|
|
|
|
|
无。
|
|
|
|
|
|
* 异常
|
|
|
|
|
|
|
|
|
|
|
|
本方法不会抛出异常。
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
## JSON字符串转化为XML字符串
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
|
|
|
|
|
* 方法说明
|
|
|
|
|
|
|
|
|
|
|
|
将json字符串转化为xml字符串
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
def json_to_xml(param: str) -> str
|
2025-09-25 10:52:52 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* 输入参数
|
2025-09-29 09:35:08 +08:00
|
|
|
|
* param,str 类型,表示传入的json字符串
|
2025-09-25 10:52:52 +08:00
|
|
|
|
* 输出参数
|
|
|
|
|
|
* xml字符串
|
|
|
|
|
|
* 异常
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
本方法不会抛出异常。
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
## MD5字符串加密
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
|
|
|
|
|
* 方法说明
|
|
|
|
|
|
|
|
|
|
|
|
将字符串进行加密后返回
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
def md5_encode(param: str) -> str
|
2025-09-25 10:52:52 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* 输入参数
|
2025-09-29 09:35:08 +08:00
|
|
|
|
* param,str 类型,表示传入的字符串
|
2025-09-25 10:52:52 +08:00
|
|
|
|
* 输出参数
|
|
|
|
|
|
* 32位小写字符串
|
|
|
|
|
|
* 异常
|
|
|
|
|
|
|
|
|
|
|
|
本方法会抛出异常。
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
## Base64字符串重编码
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
|
|
|
|
|
* 方法说明
|
|
|
|
|
|
|
|
|
|
|
|
将字符串进行重编码后返回
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
def base64_encode(param: str) -> str
|
2025-09-25 10:52:52 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* 输入参数
|
2025-09-29 09:35:08 +08:00
|
|
|
|
* param,str 类型,表示传入的字符串
|
2025-09-25 10:52:52 +08:00
|
|
|
|
* 输出参数
|
|
|
|
|
|
* UrlBase64 重编码后的字符串
|
|
|
|
|
|
* 异常
|
|
|
|
|
|
|
|
|
|
|
|
本方法会抛出异常。
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
## 转换成分页对象
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
|
|
|
|
|
* 方法说明
|
|
|
|
|
|
|
|
|
|
|
|
根据给定的参数和数据,转换成分页对象并进行返回。
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
def trans_to_page_obj(total_count: int, current_page: int, page_size: int, total_page: int, page_list: str) -> str
|
2025-09-25 10:52:52 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* 输入参数
|
2025-09-29 09:35:08 +08:00
|
|
|
|
* total_count, int 类型,表示分页数据的总条数
|
|
|
|
|
|
* current_page, int 类型,表示当前是第几页
|
|
|
|
|
|
* page_size, int 类型,表示每页显示的数量
|
|
|
|
|
|
* total_page, int 类型,表示总页数
|
|
|
|
|
|
* page_list, str 类型,表示当前页的数据
|
2025-09-25 10:52:52 +08:00
|
|
|
|
* 输出参数
|
|
|
|
|
|
* 转换后的分页对象字符串
|
|
|
|
|
|
* 异常
|
|
|
|
|
|
|
|
|
|
|
|
本方法不会抛出异常。
|
|
|
|
|
|
* 请求示例
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
def trans_to_page_obj():
|
|
|
|
|
|
# 1. 提供分页相关参数和源数据
|
|
|
|
|
|
|
|
|
|
|
|
# 当前是第几页,最小值就是1!
|
|
|
|
|
|
current_page = 2
|
|
|
|
|
|
# 每页的数据条数
|
|
|
|
|
|
page_size = 20
|
|
|
|
|
|
# 获取相关的数据,以实际情况为准进行修改
|
|
|
|
|
|
data = jj.find_sites_by_condition("{}", "ASC")
|
|
|
|
|
|
# 打印查询到的数据
|
|
|
|
|
|
jj.script_log("INFO", "trans_to_page_obj", data)
|
|
|
|
|
|
# 转换成对象,方便截取当页的数据
|
|
|
|
|
|
data_obj = json.loads(data)
|
|
|
|
|
|
# 截取指定页的数据
|
|
|
|
|
|
page_list_obj = data_obj[(current_page-1)*page_size : current_page*page_size]
|
|
|
|
|
|
# 将截取的数据转成字符串
|
|
|
|
|
|
page_list_str = json.dumps(page_list_obj)
|
|
|
|
|
|
|
|
|
|
|
|
# 2. 调用脚本方法,转换成分页对象
|
|
|
|
|
|
|
|
|
|
|
|
# 将数据转换成分页对象
|
|
|
|
|
|
res = jj.trans_to_page_obj(len(data_obj), current_page, page_size,
|
|
|
|
|
|
math.ceil(len(data_obj)/page_size), page_list_str)
|
|
|
|
|
|
# 打印转换后的结果
|
|
|
|
|
|
jj.script_log("INFO", "res=", res)
|
|
|
|
|
|
|
|
|
|
|
|
# 3. 拿着分页对象进行返回或其他操作
|
|
|
|
|
|
# TODO
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 获取天风任务参数 ⚠️
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
|
|
|
|
|
* 方法说明
|
|
|
|
|
|
|
|
|
|
|
|
在脚本中直接获取到天风任务参数。
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
async def get_script_value(key: str) -> str
|
2025-09-25 10:52:52 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* 输入参数
|
|
|
|
|
|
* key,变量表达式。
|
|
|
|
|
|
* 输出参数
|
|
|
|
|
|
|
|
|
|
|
|
天风任务中参数key的值的字符串。
|
|
|
|
|
|
* 异常
|
|
|
|
|
|
本方法不会抛出异常。该方法如果获取一个不存在的值时将会返回NULL。
|
|
|
|
|
|
* 请求示例
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
def test():
|
|
|
|
|
|
# 获取任务变量status
|
|
|
|
|
|
jj.script_log("debug", "b1,agvid:", jj.get_script_value("task.variables.status"))
|
|
|
|
|
|
# 获取b4块选出的库位
|
|
|
|
|
|
jj.script_log("debug", "b1,agvid:", jj.get_script_value("blocks.b4.site_id"))
|
|
|
|
|
|
# 获取输入参数agvId
|
|
|
|
|
|
jj.script_log("debug", "b1,agvid:", jj.get_script_value("task_inputs.agv_id"))
|
2025-09-25 10:52:52 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
## 批量放行 ⚠️
|
2025-09-25 10:52:52 +08:00
|
|
|
|
|
|
|
|
|
|
* 方法说明
|
|
|
|
|
|
|
|
|
|
|
|
批量放行机器人,与等待放行块结合使用。
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
def release_wait_pass(agv_ids: List[str]) -> bool
|
2025-09-25 10:52:52 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* 输入参数
|
2025-09-29 09:35:08 +08:00
|
|
|
|
* agv_ids,str 列表类型,需放行的机器人Id。
|
2025-09-25 10:52:52 +08:00
|
|
|
|
* 输出参数
|
2025-09-29 09:35:08 +08:00
|
|
|
|
* True,放行成功。
|
|
|
|
|
|
* False,放行失败
|
2025-09-25 10:52:52 +08:00
|
|
|
|
* 异常
|
|
|
|
|
|
本方法不会抛出异常。
|
|
|
|
|
|
* 请求示例
|
|
|
|
|
|
|
2025-09-29 09:35:08 +08:00
|
|
|
|
```python
|
|
|
|
|
|
def release_wait_pass():
|
|
|
|
|
|
agv_ids = [] # 注意参数是列表
|
|
|
|
|
|
agv_ids.append("AMB-150J") # 放行一个就只用append一个
|
|
|
|
|
|
agv_ids.append("sim_01")
|
|
|
|
|
|
jj.release_wait_pass(agv_ids)
|
2025-09-25 10:52:52 +08:00
|
|
|
|
```
|