diff --git a/src/main/java/com/supwisdom/dlpay/bus/dao/OfflineBusdtlDao.java b/src/main/java/com/supwisdom/dlpay/bus/dao/OfflineBusdtlDao.java
new file mode 100644
index 0000000..e5d0afc
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/dao/OfflineBusdtlDao.java
@@ -0,0 +1,9 @@
+package com.supwisdom.dlpay.bus.dao;
+
+import com.supwisdom.dlpay.bus.domain.TOfflineBusdtl;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface OfflineBusdtlDao extends JpaRepository<TOfflineBusdtl, String> {
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/dao/OnlineBusdtlDao.java b/src/main/java/com/supwisdom/dlpay/bus/dao/OnlineBusdtlDao.java
new file mode 100644
index 0000000..1f38b4d
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/dao/OnlineBusdtlDao.java
@@ -0,0 +1,9 @@
+package com.supwisdom.dlpay.bus.dao;
+
+import com.supwisdom.dlpay.bus.domain.TOnlineBusdtl;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface OnlineBusdtlDao extends JpaRepository<TOnlineBusdtl, String> {
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/domain/TOfflineBusdtl.java b/src/main/java/com/supwisdom/dlpay/bus/domain/TOfflineBusdtl.java
new file mode 100644
index 0000000..f068de4
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/domain/TOfflineBusdtl.java
@@ -0,0 +1,277 @@
+package com.supwisdom.dlpay.bus.domain;
+
+import org.hibernate.annotations.GenericGenerator;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "TB_OFFLINE_BUSDTL",
+    indexes = {@Index(name = "uk_offline_busdtl", unique = true, columnList = "devphyid,termseqno,transdate")})
+public class TOfflineBusdtl {
+  @Id
+  @GenericGenerator(name = "idGenerator", strategy = "uuid")
+  @GeneratedValue(generator = "idGenerator")
+  @Column(name = "id", nullable = false, length = 32)
+  private String id;
+
+  @Column(name = "devphyid", length = 32)
+  private String devphyid;
+
+  @Column(name = "termid", precision = 9)
+  private Integer termid;
+
+  @Column(name = "termseqno", precision = 9)
+  private Integer termseqno;
+
+  @Column(name = "dtltype", nullable = false, length = 10)
+  private String dtltype;  //card-刷卡流水;qrcode-刷二维码流水
+
+  @Column(name = "termseqno", length = 20)
+  private String cardno;
+
+  @Column(name = "cardphyid", length = 20)
+  private String cardphyid;
+
+  @Column(name = "qrcode", length = 600)
+  private String qrcode;
+
+  @Column(name = "transdate", length = 8)
+  private String transdate;
+
+  @Column(name = "transtime", length = 6)
+  private String transtime;
+
+  @Column(name = "amount", nullable = false, precision = 9, scale = 2)
+  private Double amount;
+
+  @Column(name = "managefeetype", length = 20)
+  private String managefeetype = "none"; //none-无；mealer-搭伙费；discount-折扣
+
+  @Column(name = "managefee", precision = 9, scale = 2)
+  private Double managefee = 0D;
+
+  @Column(name = "dtlstat", length = 20)
+  private String dtlstat;  //设备流水的的状态，上传时的status
+
+  @Column(name = "payerid", length = 32)
+  private String payerid; //cardno对应TCitizenCard的payerid
+
+  @Column(name = "payername", length = 200)
+  private String payername; //cardno对应TCitizenCard的username
+
+  @Column(name = "status", nullable = false, length = 10)
+  private String status; //init-采集上来待处理；success-入账成功；fail-入账失败；hangup-挂起
+
+  @Column(name = "errcode", length = 20)
+  private String errcode;
+
+  @Column(name = "errmsg", length = 600)
+  private String errmsg;
+
+  @Column(name = "remark", length = 600)
+  private String remark;
+
+  @Column(name = "accdate", length = 8)
+  private String accdate;
+
+  @Column(name = "billno", length = 20)
+  private String billno;
+
+  @Column(name = "merchaccno", length = 20)
+  private String merchaccno;
+
+  @Column(name = "collecttime", length = 14)
+  private String collecttime; //采集时间，yyyyMMddHHmmss
+
+  public String getId() {
+    return id;
+  }
+
+  public void setId(String id) {
+    this.id = id;
+  }
+
+  public String getDevphyid() {
+    return devphyid;
+  }
+
+  public void setDevphyid(String devphyid) {
+    this.devphyid = devphyid;
+  }
+
+  public Integer getTermid() {
+    return termid;
+  }
+
+  public void setTermid(Integer termid) {
+    this.termid = termid;
+  }
+
+  public Integer getTermseqno() {
+    return termseqno;
+  }
+
+  public void setTermseqno(Integer termseqno) {
+    this.termseqno = termseqno;
+  }
+
+  public String getDtltype() {
+    return dtltype;
+  }
+
+  public void setDtltype(String dtltype) {
+    this.dtltype = dtltype;
+  }
+
+  public String getCardno() {
+    return cardno;
+  }
+
+  public void setCardno(String cardno) {
+    this.cardno = cardno;
+  }
+
+  public String getCardphyid() {
+    return cardphyid;
+  }
+
+  public void setCardphyid(String cardphyid) {
+    this.cardphyid = cardphyid;
+  }
+
+  public String getQrcode() {
+    return qrcode;
+  }
+
+  public void setQrcode(String qrcode) {
+    this.qrcode = qrcode;
+  }
+
+  public String getTransdate() {
+    return transdate;
+  }
+
+  public void setTransdate(String transdate) {
+    this.transdate = transdate;
+  }
+
+  public String getTranstime() {
+    return transtime;
+  }
+
+  public void setTranstime(String transtime) {
+    this.transtime = transtime;
+  }
+
+  public Double getAmount() {
+    return amount;
+  }
+
+  public void setAmount(Double amount) {
+    this.amount = amount;
+  }
+
+  public String getManagefeetype() {
+    return managefeetype;
+  }
+
+  public void setManagefeetype(String managefeetype) {
+    this.managefeetype = managefeetype;
+  }
+
+  public Double getManagefee() {
+    return managefee;
+  }
+
+  public void setManagefee(Double managefee) {
+    this.managefee = managefee;
+  }
+
+  public String getDtlstat() {
+    return dtlstat;
+  }
+
+  public void setDtlstat(String dtlstat) {
+    this.dtlstat = dtlstat;
+  }
+
+  public String getPayerid() {
+    return payerid;
+  }
+
+  public void setPayerid(String payerid) {
+    this.payerid = payerid;
+  }
+
+  public String getPayername() {
+    return payername;
+  }
+
+  public void setPayername(String payername) {
+    this.payername = payername;
+  }
+
+  public String getStatus() {
+    return status;
+  }
+
+  public void setStatus(String status) {
+    this.status = status;
+  }
+
+  public String getErrcode() {
+    return errcode;
+  }
+
+  public void setErrcode(String errcode) {
+    this.errcode = errcode;
+  }
+
+  public String getErrmsg() {
+    return errmsg;
+  }
+
+  public void setErrmsg(String errmsg) {
+    this.errmsg = errmsg;
+  }
+
+  public String getRemark() {
+    return remark;
+  }
+
+  public void setRemark(String remark) {
+    this.remark = remark;
+  }
+
+  public String getAccdate() {
+    return accdate;
+  }
+
+  public void setAccdate(String accdate) {
+    this.accdate = accdate;
+  }
+
+  public String getBillno() {
+    return billno;
+  }
+
+  public void setBillno(String billno) {
+    this.billno = billno;
+  }
+
+  public String getMerchaccno() {
+    return merchaccno;
+  }
+
+  public void setMerchaccno(String merchaccno) {
+    this.merchaccno = merchaccno;
+  }
+
+  public String getCollecttime() {
+    return collecttime;
+  }
+
+  public void setCollecttime(String collecttime) {
+    this.collecttime = collecttime;
+  }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/domain/TOnlineBusdtl.java b/src/main/java/com/supwisdom/dlpay/bus/domain/TOnlineBusdtl.java
new file mode 100644
index 0000000..9651597
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/bus/domain/TOnlineBusdtl.java
@@ -0,0 +1,274 @@
+package com.supwisdom.dlpay.bus.domain;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "TB_ONLINE_BUSDTL",
+    indexes = {@Index(name = "idx_online_busdtl_accdate", columnList = "accdate"),
+        @Index(name = "idx_online_busdtl_termid", columnList = "termid")})
+public class TOnlineBusdtl {
+  @Id
+  @Column(name = "billno", unique = true, nullable = false, length = 20)
+  private String billno;
+
+  @Column(name = "accdate", length = 8)
+  private String accdate;
+
+  @Column(name = "acctime", length = 6)
+  private String acctime;
+
+  @Column(name = "termid", precision = 9)
+  private Integer termid;
+
+  @Column(name = "termseqno", precision = 9)
+  private Integer termseqno;
+
+  @Column(name = "transdate", length = 8)
+  private String transdate;
+
+  @Column(name = "transtime", length = 6)
+  private String transtime;
+
+  @Column(name = "cardno", length = 20)
+  private String cardno;
+
+  @Column(name = "amount", nullable = false, precision = 9, scale = 2)
+  private Double amount;
+
+  @Column(name = "managefeetype", length = 20)
+  private String managefeetype = "none";
+
+  @Column(name = "managefee", precision = 9, scale = 2)
+  private Double managefee = 0D;
+
+  @Column(name = "status", nullable = false, length = 20)
+  private String status; //init|success|fail
+
+  @Column(name = "transtype", nullable = false, length = 20)
+  private String transtype = "none"; //none-消费流水；cancel-撤销流水；refund-退款流水
+
+  @Column(name = "revflag", nullable = false, precision = 1)
+  private Integer revflag = 0;
+
+  @Column(name = "remark", length = 600)
+  private String remark;
+
+  @Column(name = "merchaccno", length = 20)
+  private String merchaccno;
+
+  @Column(name = "transmode", nullable = false, length = 20)
+  private String transmode; //card / qrcode
+
+  @Column(name = "payerid", length = 32)
+  private String payerid;
+
+  @Column(name = "payername", length = 200)
+  private String payername;
+
+  @Column(name = "collectid", length = 32)
+  private String collectid; //采集表的id
+
+  @Column(name = "refno", length = 32)
+  private String refno;
+
+  @Column(name = "core_accdate", length = 8)
+  private String coreAccdate;
+
+  @Column(name = "core_status", length = 10)
+  private String coreStatus;
+
+  @Column(name = "core_sourcetype", length = 20)
+  private String coreSourcetype; //核心平台支付方式
+
+  public String getBillno() {
+    return billno;
+  }
+
+  public void setBillno(String billno) {
+    this.billno = billno;
+  }
+
+  public String getAccdate() {
+    return accdate;
+  }
+
+  public void setAccdate(String accdate) {
+    this.accdate = accdate;
+  }
+
+  public String getAcctime() {
+    return acctime;
+  }
+
+  public void setAcctime(String acctime) {
+    this.acctime = acctime;
+  }
+
+  public Integer getTermid() {
+    return termid;
+  }
+
+  public void setTermid(Integer termid) {
+    this.termid = termid;
+  }
+
+  public Integer getTermseqno() {
+    return termseqno;
+  }
+
+  public void setTermseqno(Integer termseqno) {
+    this.termseqno = termseqno;
+  }
+
+  public String getTransdate() {
+    return transdate;
+  }
+
+  public void setTransdate(String transdate) {
+    this.transdate = transdate;
+  }
+
+  public String getTranstime() {
+    return transtime;
+  }
+
+  public void setTranstime(String transtime) {
+    this.transtime = transtime;
+  }
+
+  public String getCardno() {
+    return cardno;
+  }
+
+  public void setCardno(String cardno) {
+    this.cardno = cardno;
+  }
+
+  public Double getAmount() {
+    return amount;
+  }
+
+  public void setAmount(Double amount) {
+    this.amount = amount;
+  }
+
+  public String getManagefeetype() {
+    return managefeetype;
+  }
+
+  public void setManagefeetype(String managefeetype) {
+    this.managefeetype = managefeetype;
+  }
+
+  public Double getManagefee() {
+    return managefee;
+  }
+
+  public void setManagefee(Double managefee) {
+    this.managefee = managefee;
+  }
+
+  public String getStatus() {
+    return status;
+  }
+
+  public void setStatus(String status) {
+    this.status = status;
+  }
+
+  public String getTranstype() {
+    return transtype;
+  }
+
+  public void setTranstype(String transtype) {
+    this.transtype = transtype;
+  }
+
+  public Integer getRevflag() {
+    return revflag;
+  }
+
+  public void setRevflag(Integer revflag) {
+    this.revflag = revflag;
+  }
+
+  public String getRemark() {
+    return remark;
+  }
+
+  public void setRemark(String remark) {
+    this.remark = remark;
+  }
+
+  public String getMerchaccno() {
+    return merchaccno;
+  }
+
+  public void setMerchaccno(String merchaccno) {
+    this.merchaccno = merchaccno;
+  }
+
+  public String getTransmode() {
+    return transmode;
+  }
+
+  public void setTransmode(String transmode) {
+    this.transmode = transmode;
+  }
+
+  public String getPayerid() {
+    return payerid;
+  }
+
+  public void setPayerid(String payerid) {
+    this.payerid = payerid;
+  }
+
+  public String getPayername() {
+    return payername;
+  }
+
+  public void setPayername(String payername) {
+    this.payername = payername;
+  }
+
+  public String getCollectid() {
+    return collectid;
+  }
+
+  public void setCollectid(String collectid) {
+    this.collectid = collectid;
+  }
+
+  public String getRefno() {
+    return refno;
+  }
+
+  public void setRefno(String refno) {
+    this.refno = refno;
+  }
+
+  public String getCoreAccdate() {
+    return coreAccdate;
+  }
+
+  public void setCoreAccdate(String coreAccdate) {
+    this.coreAccdate = coreAccdate;
+  }
+
+  public String getCoreStatus() {
+    return coreStatus;
+  }
+
+  public void setCoreStatus(String coreStatus) {
+    this.coreStatus = coreStatus;
+  }
+
+  public String getCoreSourcetype() {
+    return coreSourcetype;
+  }
+
+  public void setCoreSourcetype(String coreSourcetype) {
+    this.coreSourcetype = coreSourcetype;
+  }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/service/impl/CitizenCardServiceImpl.java b/src/main/java/com/supwisdom/dlpay/bus/service/impl/CitizenCardServiceImpl.java
index dc8d0b8..e18065d 100644
--- a/src/main/java/com/supwisdom/dlpay/bus/service/impl/CitizenCardServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/bus/service/impl/CitizenCardServiceImpl.java
@@ -90,14 +90,14 @@
       if (BusConstant.STATUS_CARDVER_CLOSED.equals(card.getStatus()) || BusConstant.STATUS_CARDVER_CLOSED.equals(card.getTransStatus())) {
         //注销
         cardver.setCardvertype(BusConstant.CARDVERTYPE_CLOSED); //注销
-        cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+        cardver.setAdddelflag(BusConstant.ADDDELFLAG_ADD); //下发黑名单
         blackverno = card.getCardverno();
       } else if (BusConstant.STATUS_CARDVER_NORMAL.equals(card.getStatus()) && BusConstant.STATUS_CARDVER_NORMAL.equals(card.getTransStatus())) {
         cardver.setCardvertype(BusConstant.CARDVERTYPE_REGISTER); //注册
         cardver.setAdddelflag(BusConstant.ADDDELFLAG_NONE); //不下发黑名单
       } else {
         cardver.setCardvertype(BusConstant.CARDVERTYPE_FREEZE); //卡状态异常
-        cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+        cardver.setAdddelflag(BusConstant.ADDDELFLAG_ADD); //下发黑名单
         blackverno = card.getCardverno();
       }
       cardver.setStatus(BusConstant.STATUS_CARDVER_NORMAL);
@@ -165,13 +165,13 @@
       if (BusConstant.STATUS_CARDVER_CLOSED.equals(card.getStatus()) || BusConstant.STATUS_CARDVER_CLOSED.equals(card.getTransStatus())) {
         //注销
         cardver.setCardvertype(BusConstant.CARDVERTYPE_CLOSED); //注销
-        cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+        cardver.setAdddelflag(BusConstant.ADDDELFLAG_ADD); //下发黑名单
       } else if (BusConstant.STATUS_CARDVER_NORMAL.equals(card.getStatus()) && BusConstant.STATUS_CARDVER_NORMAL.equals(card.getTransStatus())) {
         cardver.setCardvertype(BusConstant.CARDVERTYPE_REGISTER); //注册
         cardver.setAdddelflag(BusConstant.ADDDELFLAG_NONE); //不下发黑名单
       } else {
         cardver.setCardvertype(BusConstant.CARDVERTYPE_FREEZE); //卡状态异常
-        cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+        cardver.setAdddelflag(BusConstant.ADDDELFLAG_ADD); //下发黑名单
       }
       cardver.setStatus(BusConstant.STATUS_CARDVER_NORMAL);
       cardver.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
@@ -230,7 +230,7 @@
             cardver = new TCitizenCardver();
             cardver.setCardverno(cardverno);
             cardver.setCardvertype(BusConstant.CARDVERTYPE_CLOSED); //注销
-            cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+            cardver.setAdddelflag(BusConstant.ADDDELFLAG_ADD); //下发黑名单
             citizenCardverDao.doClosedHistoryRecords(BusConstant.CARDVERTYPE_REGISTER, card.getCardno(), cardverno); //注册记录置为无效
           }
         } else if (BusConstant.STATUS_CARDVER_NORMAL.equals(card.getStatus()) && BusConstant.STATUS_CARDVER_NORMAL.equals(card.getTransStatus())) {
@@ -241,7 +241,7 @@
             cardver = new TCitizenCardver();
             cardver.setCardverno(cardverno);
             cardver.setCardvertype(BusConstant.CARDVERTYPE_UNFREEZE); //变为正常
-            cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+            cardver.setAdddelflag(BusConstant.ADDDELFLAG_DELETE); //下发黑名单
             citizenCardverDao.doClosedHistoryRecords(BusConstant.CARDVERTYPE_FREEZE, card.getCardno(), cardverno); //冻结记录置为无效
             citizenCardverDao.doClosedHistoryRecords(BusConstant.CARDVERTYPE_CLOSED, card.getCardno(), cardverno); //注销记录置为无效
           }
@@ -253,7 +253,7 @@
             cardver = new TCitizenCardver();
             cardver.setCardverno(cardverno);
             cardver.setCardvertype(BusConstant.CARDVERTYPE_FREEZE); //变为异常
-            cardver.setAdddelflag(BusConstant.ADDDELFLAG_DOWNLOAD); //下发黑名单
+            cardver.setAdddelflag(BusConstant.ADDDELFLAG_ADD); //下发黑名单
             citizenCardverDao.doClosedHistoryRecords(BusConstant.CARDVERTYPE_UNFREEZE, card.getCardno(), cardverno); //解冻记录置为无效
           }
         }
diff --git a/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java b/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
index 8bd7bea..504ad12 100644
--- a/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
+++ b/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
@@ -24,7 +24,8 @@
   public final static String CARDVERTYPE_FREEZE = "frozen"; //状态挂失、冻结、未启用等都会冻结卡，下载黑名单
   public final static String CARDVERTYPE_UNFREEZE = "unfrozen"; //卡状态正常时解冻
 
-  public final static int ADDDELFLAG_DOWNLOAD = 1; //需要下发
+  public final static int ADDDELFLAG_DELETE = 2; //下发删除
+  public final static int ADDDELFLAG_ADD = 1; //下发新增
   public final static int ADDDELFLAG_NONE = 0; //不需要下发
 
   public final static int SYSPARAID_MAXCARDVERNO = 10; //全局参数，最大版本号
