```markdown ## 其他 ### 创建唯一的 ID 编号 * 方法说明 创建唯一的 ID 编号。 ```python def create_uuid() -> str ``` * 输入参数 无。 * 输出参数 * 表示一个唯一 ID 编号的字符串。 * 异常 本方法会抛出异常。 ### 发送邮件 * 方法说明 向目标收件方发送简单邮件。 ```python def send_mail(param: str) -> None ``` * 输入参数 * param,string 类型,表示邮件的详情,反序列化后的示例如下: ```json { "to": "yy@yy.com", // 接收方,必填 "subject": "Daily Meeting", // 主题,必填 "text": "xxx", // 内容,必填 "cc": "xxx@xxx.com,yyy@yyy.com", // 抄送,选填 "bcc": "zzz@zzz.com" // 秘密抄送,选填 } ``` * 输出参数 无。 * 异常 本方法会抛出异常。 ### 发送用户消息 * 方法说明 发送用户消息,不仅可以弹窗提醒,还可以在RDS的消息管理界面进行查看。 ```python def send_user_message(level: str, message_title: str, message_body: str) -> None ``` * 输入参数 * level,string 类型,表示消息提醒的等级,有ERROR,WARN,INFO三种等级。 * message_title,string 类型,表示用户消息的标题。 * message_body,string 类型,表示用户消息的内容。 * 输出参数 无。 * 异常 本方法不会抛出异常。 ### JSON字符串转化为XML字符串 * 方法说明 将json字符串转化为xml字符串 ```python def json_to_xml(param: str) -> str ``` * 输入参数 * param,string 类型,表示传入的json字符串 * 输出参数 * xml字符串 * 异常 本方法不会抛出异常。 ### MD5字符串加密 * 方法说明 将字符串进行加密后返回 ```python def md5_encode(param: str) -> str ``` * 输入参数 * param,string 类型,表示传入的字符串 * 输出参数 * 32位小写字符串 * 异常 本方法会抛出异常。 ### Base64字符串重编码 * 方法说明 将字符串进行重编码后返回 ```python def base64_encode(param: str) -> str ``` * 输入参数 * param,string 类型,表示传入的字符串 * 输出参数 * UrlBase64 重编码后的字符串 * 异常 本方法会抛出异常。 ### 转换成分页对象 * 方法说明 根据给定的参数和数据,转换成分页对象并进行返回。 ```python def trans_to_page_obj(total_count: int, current_page: int, page_size: int, total_page: int, page_list: str) -> str ``` * 输入参数 * total_count, int 类型,表示分页数据的总条数 * current_page, int 类型,表示当前是第几页 * page_size, int 类型,表示每页显示的数量 * total_page, int 类型,表示总页数 * page_list, string 类型,表示当前页的数据 * 输出参数 * 转换后的分页对象字符串 * 异常 本方法不会抛出异常。 * 请求示例 ```python def trans_to_page_obj_example(): # 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 ``` ### 获取天风任务参数 * 方法说明 在脚本中直接获取到天风任务参数。 ```python def get_script_value(key: str) -> str ``` * 输入参数 * key,变量表达式。 * 输出参数 天风任务中参数key的值的字符串。 * 异常 本方法不会抛出异常。该方法如果获取一个不存在的值时将会返回None。 * 请求示例 ```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")) ``` ### 批量放行 * 方法说明 批量放行机器人,与等待放行块结合使用。 ```python def release_wait_pass(agv_ids: List[str]) -> bool ``` * 输入参数 * agv_ids,字符串列表类型,需放行的机器人Id。 * 输出参数 * True,放行成功。 * False,放行失败 * 异常 本方法不会抛出异常。 * 请求示例 ```python def release_wait_pass_example(): agv_ids = [] # 注意参数是列表 agv_ids.append("AMB-150J") # 放行一个就只用append一个 agv_ids.append("sim_01") jj.release_wait_pass(agv_ids) ``` ### 脚本公平锁 * 方法说明 根据锁名称,获取不同的锁,并发情况下串行执行一段代码 ```python def with_fairness_lock(lock_name: str, fair: bool, action: Callable[[], None]) -> None ``` * 输入参数 * lock_name:字符串,锁的名称 * fair:True: 公平锁更具时间先后顺序获取,False: 非公平锁,随机获取锁 * action: 执行的代码块(可调用对象) * 输出参数 无 * 异常 本方法不会抛出异常。 * 请求示例 ```python def fairness_lock_example(): jj.with_fairness_lock("kk", True, lambda: # 代码块 jj.script_log("INFO", "test", "test") ) ``` 进程已结束,退出代码为 0 ```