@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;
  }
 @Override
 public CashLoad findCashLoadByTransNo(String transNo) {
   Assert.notNull(transNo, "find CashLoad failed for transNo null");
   return cashLoadDao.findById(transNo);
 }