
# 创建"按ID查询设备详情"脚本
修改已存在的设备信息，则需要创建可以根据设备ID查询出设备详情的脚本。
#### 操作步骤
1. 进入[创建"设备维修管理系统"应用](https://support.huaweicloud.com/bestpractice-astrozero/astrozero_07_1009.html)中创建的应用。
2. 在"Equipment"中，将鼠标放在"Script"目录上，单击界面上出现的"+"，选择"脚本"。
3. 在弹窗中，选中"创建一个新脚本"，在"名称"文本框中输入"queryEquipmentDetail"，单击"添加"。 
   系统实际创建的脚本名称为"***HW__*** queryEquipmentDetail"，"***HW__***"前缀由租户命名空间namespace决定。新建创建的脚本，默认是当前用户锁定状态，可以进行编辑保存等操作。
   当编辑已有脚本时，为防止编辑时多人篡改，编辑前请单击![](https://support.huaweicloud.com/bestpractice-astrozero/zh-cn_image_0000001433151902.png)进行锁定。
   
   
4. 在代码编辑器中插入如下脚本代码。 
   脚本代码中，"***HW__*** "前缀由租户命名空间namespace决定，请根据实际情况进行替换。
   ```
   /*****************************
    * 本脚本用于按设备ID查询设备详情
    * ***************************/
   import * as db from 'db';//导入处理object相关的标准库
   import * as context from 'context';//导入上下文相关的标准库
   //定义入参结构
   @action.object({ type: "param" })
   export class ActionInput {
       @action.param({ type: 'String', required: true })
       equipmentId: string;//设备ID
   }
   //定义出参结构
   @action.object({ type: "param" })
   export class ActionOutput {
       @action.param({ type: 'Any', label: 'equipment' })
       equipment: object;//设备对象
   }
   @useObject(['HW__Equipment__CST'])//使用数据库对象HW__Equipment__CST
   @action.object({ type: "method" })
   export class QueryEquipmentDetail {
       @action.method({ input: 'ActionInput', output: 'ActionOutput' })
       public queryEquipmentDetail(input: ActionInput): ActionOutput {
           let out = new ActionOutput();    //新建出参ActionOutput类型的实例，作为返回值
           let error = new Error();    //新建错误类型的实例，用于在发生错误时保存错误信息
           try {
               //必填校验
               if (!input.equipmentId || input.equipmentId == "") {
                   error.name = "EQM";
                   error.message = "Equipment id is required.";
                   throw error;
               }
               //获取HW__Equipment__CST这个Object的操作实例
               let s = db.object('HW__Equipment__CST');
               //查询字段(全部)
               let option = {};
               //查询条件
               let condition = {
                   "conjunction": "AND",
                   "conditions": [{
                       "field": "id",
                       "operator": "eq",
                       "value": input.equipmentId
                   }]
               };
               //调用按条件查询Equipment__CST的接口
               let record = s.queryByCondition(condition, option);
               //如果查询到数据
               if (record && record[0]) {
                   //拼接前台省市区级联选择器的数据模型
                   let cascaderAddress = [];
                   if (record[0].HW__installationSiteProvince__CST) {
                       cascaderAddress.push(record[0].HW__installationSiteProvince__CST);
                       if (record[0].HW__installationSiteCity__CST) {
                           cascaderAddress.push(record[0].HW__installationSiteCity__CST);
                           if (record[0].HW__installationSiteArea__CST) {
                               cascaderAddress.push(record[0].HW__installationSiteArea__CST);
                           }
                       }
                   }
                   record[0].cascaderAddress = cascaderAddress;
                   //将结果挂入输出对象中
                   out.equipment = record[0]
               }
           } catch (error) {
               console.error(error.name, error.message);
               context.setError(error.name, error.message);
           }
           return out;
       }
   }
   ```
   
   
5. 单击编辑器上方的![](https://support.huaweicloud.com/bestpractice-astrozero/zh-cn_image_0000001432992650.png)，保存脚本。
 
#### 验证并发布
1. 测试新增逻辑能否正常执行。 
   1. 单击编辑器上方的![](https://support.huaweicloud.com/bestpractice-astrozero/zh-cn_image_0000001432835014.png)，执行脚本。
   
   2. 在界面底部输入测试数据，单击测试窗口右上角![](https://support.huaweicloud.com/bestpractice-astrozero/zh-cn_image_0000001482911533.png)执行图标。
      测试报文样例如下，equipmentId可参考[创建"编辑设备"脚本](https://support.huaweicloud.com/bestpractice-astrozero/astrozero_07_1025.html)验证新增设备时生成的设备ID：
      ```
      { 
          "equipmentId": "cQue000000e1qnhgtCng"
      }
      ```
      执行成功，会在"输出"页签返回查询结果，返回结果是上一节中新增的设备信息。
      图1查询返回的设备信息   
      ![](https://support.huaweicloud.com/bestpractice-astrozero/zh-cn_image_0000001432992646.png "点击放大") 
   
   
   
   
2. 测试成功，单击编辑器上方的![](https://support.huaweicloud.com/bestpractice-astrozero/zh-cn_image_0000001432675062.png)，启用脚本。
 
