/**
  * 接收第三方系统发生过来的报警数据 节目报警:
  *
  * @param msg <Msg Version="4" MsgID="4310" Type="MonUp" DateTime="2010-12-20 04:02:36"
  *     SrcCode="440600M01" DstCode="440000G01" Priority="1" ReplyID="4310"> <Return
  *     Type="AlarmSearchPSet" Value="0" Desc="成功" /> <ReturnInfo> <AlarmSearchPSet Index="7"
  *     Freq="339000" ServiceID="104" VideoPID="163" AudioPID="92"> <AlarmSearchP Type="31"
  *     Desc="静帧" AlarmID="123121212" Value="1" Time="2011-02-28 14:26:00" /> </AlarmSearchPSet>
  *     </ReturnInfo> </Msg> 码流报警: <Msg Version="4" MsgID="4310" Type="MonUp" DateTime="2010-12-20
  *     04:02:36" SrcCode="440600M01" DstCode="440000G01" Priority="1" ReplyID="4310"> <Return
  *     Type="AlarmSearchFSet" Value="0" Desc="成功" /> <ReturnInfo> <AlarmSearchFSet Index="7"
  *     Freq="339000"> <AlarmSearchF Type="1" Desc="失锁" AlarmID="123121212" Value="1"
  *     Time="2011-02-28 14:26:00" /> </AlarmSearchPSet> </ReturnInfo> </Msg> 可以接收同一对象的多个报警数据
  * @return 结果
  */
 public WSResult bmpReceiveAlarmData(String msg) {
   WSResult retObj = new WSResult();
   try {
     ClassWrapper.wrap(ReceiveTaskBase.class).receive(msg);
   } catch (Exception ex) {
     errorProcess(retObj, "接收报警数据失败!", ex);
   }
   return retObj;
 }
 /**
  * 接收第三方系统发生过来的性能数据
  *
  * @param objXml 数据格式如下 <ObjSet> <Obj ID="000942" IP="192.168.8.58"> <IndexSet
  *     DateTime="2012-04-13 12:00:00"> <Index ID="If1Out" Value="101"/> <Index ID="If1In"
  *     Value="88"/> </IndexSet> </Obj> </ObjSet> 可以同时接收多个对象的性能数据, 可以同时接收多个子对象的性能数据,
  *     可以同时接收多个时间段的性能数据, 可以同时接收同一时间段多个指标的性能数据
  * @return 结果
  */
 public WSResult bmpReceivePerfData(String objXml) {
   WSResult retObj = new WSResult();
   try {
     ClassWrapper.wrap(CollDataReceiver.class).receive(objXml);
   } catch (Exception ex) {
     errorProcess(retObj, "接收性能数据失败!", ex);
   }
   return retObj;
 }
  /**
   * 获取某对象的某属性的性能数据,可能为多个对象属性
   *
   * @param objId 对象ID
   * @param attrId 属性ID
   * @param fetchSize 获取性能数据的条数
   * @return 性能数据XML
   * @throws Exception 异常
   */
  public String getPerfDataByObjAndAttrib(int objId, int attrId, int fetchSize) throws Exception {
    // 定义一个Document作为返回结果
    Document result_doc =
        DocumentHelper.parseText(
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?><DataSource></DataSource>");

    // 先查询该对象该属性下所有的对象属性
    List<ObjAttribEntity> lst =
        ClassWrapper.wrapTrans(ObjAttribDal.class)
            .getByObjIdAndAttribId(objId, attrId, new Integer[] {1});

    if (lst != null && lst.size() > 0) {
      List<QueryParam> para = new ArrayList<QueryParam>();

      // 对所有对象属性组装QueryParam,并保存到List
      for (ObjAttribEntity entity : lst) {
        QueryParam qp = new QueryParam();
        qp.setObjId(objId);
        qp.setObjAttrId(entity.getObjAttrId());
        qp.setAttrType(entity.getAttribType());
        qp.setFetchSize(fetchSize);

        para.add(qp);
      }

      // 调用接口取性能数据
      QueryParam[] arr = para.toArray(new QueryParam[para.size()]);
      Map<Integer, List<QueryResult>> values =
          CollDataQuery.getInstance().query(Integer.valueOf(objId), arr);

      // 根据结果组装XML
      if (values != null && values.size() > 0) {
        // 获取该属性枚举信息
        List<String> attrIdArr = new ArrayList<String>();
        attrIdArr.add(String.valueOf(attrId));
        List<ValueTableEntity> valueTables = getValueTableByAttrIds(attrIdArr);

        // 组装
        for (ObjAttribEntity entity : lst) {
          String objattrId = String.valueOf(entity.getObjAttrId());
          String objattrName = String.valueOf(entity.getAttribType());

          Element ele = result_doc.getRootElement().addElement("Data");
          ele.addAttribute("OBJATTR_ID", objattrId);
          ele.addAttribute("OBJATTR_NAME", objattrName);

          List<QueryResult> resultLst = values.get(Integer.valueOf(objattrId));

          // 循环读取每个QueryResult对象,并转化为指定XML格式
          ele.appendContent(
              queryResultListToXml(
                      resultLst,
                      objattrId,
                      objattrName,
                      String.valueOf(fetchSize),
                      String.valueOf(entity.getAttribType()),
                      valueTables)
                  .getRootElement());
        }
      }
    }

    return result_doc.asXML();
  }
 public AlarmEventFilterDef() {
   aedal = ClassWrapper.wrapTrans(AlarmEventDal.class);
 }