## 其他

### 创建唯一的 ID 编号

* 方法说明

  创建唯一的 ID 编号。

```
  function createUuid(): string
```

* 输入参数

  无。
* 输出参数
* 表示一个唯一 ID 编号的字符串。
* 异常

  本方法会抛出异常。

### 发送邮件

* 方法说明

  向目标收件方发送简单邮件。

```
  function sendMail(param: string): void
```

* 输入参数
* param，string 类型，表示邮件的详情，反序列化后的示例如下：

  ```
  {
      "to": "yy@yy.com",                     // 接收方，必填
      "subject": "Daily Meeting",         // 主题，必填
      "text": "xxx",                       // 内容，必填
      "cc": "xxx@xxx.com,yyy@yyy.com",    // 抄送，选填
      "bcc": "zzz@zzz.com"                  // 秘密抄送，选填
  }
  ```
* 输出参数

  无。
* 异常

  本方法会抛出异常。

### 发送用户消息

* 方法说明

  发送用户消息，不仅可以弹窗提醒，还可以在RDS的消息管理界面进行查看。

```
  function sendUserMessage(level: string, messageTitle: string, messageBody: string): void
```

* 输入参数
* level，string 类型，表示消息提醒的等级，有ERROR，WARN，INFO三种等级。
* messageTitle，string 类型，表示用户消息的标题。
* messageBody，string 类型，表示用户消息的内容。
* 输出参数

  无。
* 异常

  本方法不会抛出异常。

### JSON字符串转化为XML字符串

* 方法说明

  将json字符串转化为xml字符串

```
  function jsonToXml(param: string): string
```

* 输入参数
* param，string 类型，表示传入的json字符串
* 输出参数
* xml字符串
* 异常

  本方法会不抛出异常。

### MD5字符串加密

* 方法说明

  将字符串进行加密后返回

```
  function md5Encode(param: string): string
```

* 输入参数
* param，string 类型，表示传入的字符串
* 输出参数
* 32位小写字符串
* 异常

  本方法会抛出异常。

### Base64字符串重编码

* 方法说明

  将字符串进行重编码后返回

```
  function base64Encode(param: string): string
```

* 输入参数
* param，string 类型，表示传入的字符串
* 输出参数
* UrlBase64 重编码后的字符串
* 异常

  本方法会抛出异常。

### 转换成分页对象

* 方法说明

  根据给定的参数和数据，转换成分页对象并进行返回。

```
  function transToPageObj(totalCount: number, currentPage: number, pageSize: number, totalPage: number, pageList: string): string
```

* 输入参数
* totalCount, number 类型，表示分页数据的总条数
* currentPage, number 类型，表示当前是第几页
* pageSize, number 类型，表示每页显示的数量
* totalPage, number 类型，表示总页数
* pageList, string 类型，表示当前页的数据
* 输出参数
* 转换后的分页对象字符串
* 异常

  本方法不会抛出异常。
* 请求示例

```
function transToPageObj() {

// 1. 提供分页相关参数和源数据

  // 当前是第几页，最小值就是1！
  var currentPage = 2;
  // 每页的数据条数
  var pageSize = 20;
  // 获取相关的数据，以实际情况为准进行修改
  var data = jj.findSitesByCondition("{}","ASC");
  // 打印查询到的数据
  jj.scriptLog("INFO", "transToPageObj", data);
  // 转换成对象，方便截取当页的数据
  var dataObj = JSON.parse(data);
  // 截取指定页的数据
  var pageListObj = dataObj.slice((currentPage-1)*pageSize, currentPage*pageSize);
  // 将截取的数据转成字符串
  var pageListStr = JSON.stringify(pageListObj);

// 2. 调用脚本方法，转换成分页对象

  // 将数据转换成分页对象
  var res = jj.transToPageObj(dataObj.length, currentPage, pageSize, Math.ceil(dataObj.length/pageSize), pageListStr);
  // 打印转换后的结果
  jj.scriptLog("INFO", "res=", res);

// 3. 拿着分页对象进行返回或其他操作
  // TODO
}
```

### 获取天风任务参数

* 方法说明

  在脚本中直接获取到天风任务参数。

```
  function getScriptValue(key: string): string
```

* 输入参数
* key，变量表达式。
* 输出参数

  天风任务中参数key的值的字符串。
* 异常
  本方法不会抛出异常。该方法如果获取一个不存在的值时将会返回NULL。
* 请求示例

```
function test() {
    //获取任务变量status
    jj.scriptLog("debug","b1,agvid:",jj.getScriptValue("task.variables.status"))
    //获取b4块选出的库位
    jj.scriptLog("debug","b1,agvid:",jj.getScriptValue("blocks.b4.siteId"))
    //获取输入参数agvId
    jj.scriptLog("debug","b1,agvid:",jj.getScriptValue("taskInputs.agvId"))
}
```

### 批量放行

* 方法说明

  批量放行机器人，与等待放行块结合使用。

```
  function releaseWaitPass(agvIds: Array<String>): boolean
```

* 输入参数
* agvIds，String 数组类型，需放行的机器人Id。
* 输出参数
* true，放行成功。
* false，放行失败
* 异常
  本方法不会抛出异常。
* 请求示例

```
function releaseWaitPass(){
    let agvIds = []//注意参数是数组
    agvIds.push("AMB-150J")//放行一个就只用push一个
    agvIds.push("sim_01")
    jj.releaseWaitPass(agvIds)
}
```

### 脚本公平锁

* 方法说明

  根据锁名称，获取不同的锁，并发情况下串行执行一段代码

```
  function withFairnessLock(lockName: string, fair: boolean, action: () => void): void;
```

* 输入参数
* lockName：String 锁的名称
* fair：true: 公平锁更具时间先后顺序获取，false: 非公平锁，随机获取锁
* action: 执行的代码块
* 输出参数

  无
* 异常
  本方法不会抛出异常。
* 请求示例

```
jj.withFairnessLock("kk", true, () => {
        // 代码块
        jj.scriptLog("INFO", "test", "test")
    })
```

进程已结束，退出代码为 0
