@Override
  public CCPCBillInfo queryCCPCBillInfo(String mrchNo, String rmtAccNo, String payNo) {
    CCPCBillInfo billInfo = null;
    PayCCPC payCCPC = payCCPCService.findPayCCPCByPayNoAndMrchNo(payNo, mrchNo);
    if (payCCPC != null) {
      if (StringUtils.isNotBlank(rmtAccNo)) {
        if (payCCPC.getRmtAccNo().equals(rmtAccNo)) {
          throw new AppRTException(
              AppExCode.ILLEGAL_PARAMS,
              "非法数据,transRefNo["
                  + payNo
                  + "]对应rmtAccNo["
                  + rmtAccNo
                  + "],但查出的是rmtAccNo["
                  + payCCPC.getRmtAccNo()
                  + "]");
        }
      }
      billInfo = XPOSPClientUtils.payCCPCToCCPCBillInfo(payCCPC);

      String elecsignsPath =
          XpospSysProperty.getESignaturePath()
              + payCCPC.getMrchNo()
              + File.separatorChar
              + payCCPC.getStoreNo()
              + File.separatorChar;
      String rmtElecSignDataFileName =
          payNo + "-rmt" + "." + XPOSPClientUtils.ESIGNATURE_PICTURE_SUFFIX;
      String bnyElecSignDataFileName =
          payNo + "-bny" + "." + XPOSPClientUtils.ESIGNATURE_PICTURE_SUFFIX;
      File remitElecSignDataFile = new File(elecsignsPath + rmtElecSignDataFileName);
      File bnyElecSignDataFile = new File(elecsignsPath + bnyElecSignDataFileName);
      if (remitElecSignDataFile.exists()) {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        BufferedImage image;
        try {
          image = ImageIO.read(remitElecSignDataFile);
          ImageIO.write(image, XPOSPClientUtils.BILLINFO_PICTURE_SUFFIX, out);
          billInfo.setRmtElecsignData(CodecUtils.hexString(out.toByteArray()));
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      if (bnyElecSignDataFile.exists()) {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        BufferedImage image;
        try {
          image = ImageIO.read(bnyElecSignDataFile);
          ImageIO.write(image, XPOSPClientUtils.BILLINFO_PICTURE_SUFFIX, out);
          billInfo.setBnyElecsignData(CodecUtils.hexString(out.toByteArray()));
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
    return billInfo;
  }
  @Override
  public BillInfo findBillInfo(String transType, String transRefNo, String mrchNo, String storeNo) {
    BillInfo billInfo = null;
    CashLoad cashLoad = new CashLoad();
    cashLoad.setTransNo(transRefNo);
    cashLoad.setMrchNo(mrchNo);
    cashLoad.setStoreNo(storeNo);
    cashLoad = cashLoadDao.queryLoad(cashLoad);
    TransferChannel channel = transferRouter.findChannel(cashLoad.getTargetChannel());
    billInfo = channel.findBillInfo(transRefNo);

    TransferChannelType channelType =
        TransferChannelType.fromChannelName(cashLoad.getTargetChannel());
    // 设置其他非传统CUPS交易数据
    billInfo.setTransferChannel(channelType.getChannelId());
    billInfo.setMrchName(cashLoad.getMrchName());
    billInfo.setStoreName(cashLoad.getStoreName());
    billInfo.setOperatorName(cashLoad.getOperatorName()); // 是否要显示真实交易姓名
    billInfo.setTransRefNo(cashLoad.getTransNo());
    billInfo.setTransToken(cashLoad.getUpSno());

    String elecsignsPath =
        baseESignaturePath
            + cashLoad.getMrchNo()
            + File.separatorChar
            + cashLoad.getStoreNo()
            + File.separatorChar;
    String fileName = transRefNo + "-" + transType + "." + XPOSPClientUtils.BILLINFO_PICTURE_SUFFIX;
    logger.debug("[圈存电子签购单路径elecsignsPath:" + elecsignsPath + ",fileName:" + fileName + "]");
    File file = new File(elecsignsPath + fileName);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    if (file.exists()) {
      BufferedImage image;
      try {
        image = ImageIO.read(file);
        ImageIO.write(image, XPOSPClientUtils.BILLINFO_PICTURE_SUFFIX, out);
        billInfo.setElecSignData(CodecUtils.hexString(out.toByteArray()));
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    return billInfo;
  }