/**
   * 根据设备型号 填入设备类型 是虚拟卡的 填入虚拟信息 验证配对的设备信号
   *
   * @param ls
   * @param deviceModel
   * @return true 设备了虚拟设备 flase 未设置虚拟设备
   * @throws ComponentException
   */
  protected boolean fillDeviceModel(
      Map<String, RStbModel> stbModels,
      Map<String, RCardModel> cardModels,
      Map<String, RModemModel> modemModels,
      List<RPairCfg> pairs,
      DeviceDto device)
      throws ComponentException {

    if (StringHelper.isNotEmpty(device.getPair_device_model())) {
      for (RPairCfg p : pairs) {
        if (p.getStb_model().equals(device.getDevice_model())
            && p.getCard_model().equals(device.getPair_device_model())) {
          return true;
        }
      }
      throw new ComponentException(
          "设备型号:"
              + device.getDevice_model_text()
              + "与"
              + device.getPair_device_model_text()
              + "不能配对使用,请检查");
    } else {
      // 配对设备号空,设置相应的虚拟卡信息
      RStbModel model = stbModels.get(device.getDevice_model());
      //			if (model == null)
      //				throw new ComponentException("错误的设备型号:"
      //						+ device.getDevice_model()+",请检查该型号是否适用当前地区");

      if (StringHelper.isNotEmpty(model.getVirtual_card_model())) {
        RCardModel cardM = cardModels.get(model.getVirtual_card_model());
        if (cardM.getIs_virtual().equals(SystemConstants.BOOLEAN_TRUE)) {
          if (StringHelper.isNotEmpty(device.getPair_device_code())) {
            throw new ComponentException("设备为机卡一体设备,不需要指定卡号,请确认设备号" + device.getDevice_code());
          } else {
            device.setDiffence_type(device.getDiffence_type());
            device.setPair_device_code(device.getDevice_code());
            device.setPair_device_model(model.getVirtual_card_model());
          }
        }
      } else if (StringHelper.isNotEmpty(model.getVirtual_modem_model())) {
        RModemModel modemM = modemModels.get(model.getVirtual_modem_model());
        if (modemM.getIs_virtual().equals(SystemConstants.BOOLEAN_TRUE)) {
          if (StringHelper.isNotEmpty(device.getPair_device_modem_code())) {
            throw new ComponentException("设备为机卡一体设备,不需要指定卡号,请确认设备号" + device.getDevice_code());
          } else {
            device.setDiffence_type(device.getDiffence_type());
            device.setPair_device_modem_code(device.getDevice_code());
            device.setPair_device_model(model.getVirtual_modem_model());
          }
        }
      }
      return true;
    }
  }
  /**
   * 检查设备智能卡是否16位,设备编号是否含有特殊字符
   *
   * @param d
   * @return
   * @throws ComponentException
   */
  protected boolean checkDeviceCodeNum(DeviceDto d) throws ComponentException {
    String type = d.getDevice_type();
    String deviceCode = d.getDevice_code();
    String pairDeviceCode = d.getPair_device_code();
    //		if(type.equals(SystemConstants.DEVICE_TYPE_CARD)&&deviceCode.length()!= 16){
    //			 throw new ComponentException("该智能卡号【"+deviceCode+"】不符合标准16位!");
    //		}
    //		if(type.equals(SystemConstants.DEVICE_TYPE_STB)&&
    // StringHelper.isNotEmpty(pairDeviceCode)&&pairDeviceCode.length()!= 16){
    //			 throw new ComponentException("该智能卡号【"+pairDeviceCode+"】不符合标准16位!");
    //		}

    Pattern p = Pattern.compile("[^a-zA-Z0-9]");
    Matcher m = p.matcher(deviceCode);
    String newDeviceCode = m.replaceAll("");
    if (newDeviceCode.length() != deviceCode.length()) {
      if (type.equals(SystemConstants.DEVICE_TYPE_CARD)) {
        throw new ComponentException("该智能卡号【" + deviceCode + "】含有特殊字符!");
      }
      if (type.equals(SystemConstants.DEVICE_TYPE_STB)) {
        throw new ComponentException("该机顶盒号【" + deviceCode + "】含有特殊字符!");
      }
    }

    if (StringHelper.isNotEmpty(pairDeviceCode)) {
      m = p.matcher(pairDeviceCode);
      newDeviceCode = m.replaceAll("");
      if (newDeviceCode.length() != pairDeviceCode.length()) {
        throw new ComponentException("该智能卡号【" + pairDeviceCode + "】含有特殊字符!");
      }
    }
    return true;
  }