diff --git a/config/application-devel-pg-xkx.properties b/config/application-devel-pg-xkx.properties
index 2b52a50..09f071c 100644
--- a/config/application-devel-pg-xkx.properties
+++ b/config/application-devel-pg-xkx.properties
@@ -31,6 +31,7 @@
 payapi.logintime=0 0/20 * * * ?
 #restaurant.chkdtltask.cron=0 0/3 * * * ?
 restaurant.chkdtltask.cron=-
+restaurant.statement.cron=-
 
 # payapi setting
 payapi.url=http://localhost:8080/payapi
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/DtlStatBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/DtlStatBean.java
new file mode 100644
index 0000000..c341ea0
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/DtlStatBean.java
@@ -0,0 +1,25 @@
+package com.supwisdom.dlpay.restaurant.bean;
+
+public interface DtlStatBean {
+  String getAccdate();
+
+  String getDeptcode();
+
+  Integer getCusttype();
+
+  Integer getGroupid();
+
+  Integer getTermid();
+
+  String getMealtype();
+
+  String getPaytype();
+
+  Integer getTotalcnt();
+
+  Double getTotalamt();
+
+  Integer getFeecnt();
+
+  Double getFeeamt();
+}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/dao/DeptDao.java b/src/main/java/com/supwisdom/dlpay/restaurant/dao/DeptDao.java
new file mode 100644
index 0000000..fdcb31d
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/dao/DeptDao.java
@@ -0,0 +1,15 @@
+package com.supwisdom.dlpay.restaurant.dao;
+
+import com.supwisdom.dlpay.restaurant.domain.TDept;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface DeptDao extends JpaRepository<TDept, String> {
+
+  @Query("from TDept t where t.status='normal' ")
+  List<TDept> findNormalDept();
+}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/dao/DeviceDao.java b/src/main/java/com/supwisdom/dlpay/restaurant/dao/DeviceDao.java
index ae81ff4..067df28 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/dao/DeviceDao.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/dao/DeviceDao.java
@@ -37,5 +37,8 @@
 
     TDevice findByDevphyid(String devphyid);
 
+    @Query("from TDevice where state=1 and checkstatus='normal' ")
+    List<TDevice> findNormalDevices();
+
 
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/dao/RptMealsDtlDao.java b/src/main/java/com/supwisdom/dlpay/restaurant/dao/RptMealsDtlDao.java
new file mode 100644
index 0000000..558c98f
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/dao/RptMealsDtlDao.java
@@ -0,0 +1,10 @@
+package com.supwisdom.dlpay.restaurant.dao;
+
+import com.supwisdom.dlpay.restaurant.domain.TRptMealsDtl;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface RptMealsDtlDao extends JpaRepository<TRptMealsDtl, String> {
+  void deleteAllByCheckdate(String accdate);
+}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/dao/TransDtlDao.java b/src/main/java/com/supwisdom/dlpay/restaurant/dao/TransDtlDao.java
index ee2b0e8..1c5f920 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/dao/TransDtlDao.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/dao/TransDtlDao.java
@@ -2,6 +2,7 @@
 
 
 import com.supwisdom.dlpay.framework.data.CountAmountBean;
+import com.supwisdom.dlpay.restaurant.bean.DtlStatBean;
 import com.supwisdom.dlpay.restaurant.bean.ManageFeeAmtBean;
 import com.supwisdom.dlpay.restaurant.bean.SalesAmtBean;
 import com.supwisdom.dlpay.restaurant.domain.TTransDtl;
@@ -61,4 +62,15 @@
 
     @Query("select count(t.billno) as totalcnt,sum(t.amount) as totalamt from TTransDtl t where t.status='success' and t.accdate=?1 ")
     CountAmountBean getLocalTransdtlSumInfo(String accdate);
+
+    @Query(value = "select t.accdate,cust.deptcode,cust.custtype,dev.devgroupid as groupid,t.termid,t.mealtype,t.core_sourcetype as paytype, " +
+        "sum(case when t.revflag=1 then 0 when t.transtype='revert' then 0 else 1 end) as totalcnt,sum(amount) as totalamt, " +
+        "sum(case when t.revflag=1 then 0 when t.transtype='revert' then 0 when t.managefeetype in ('discount','reduction','quota') then 1 else 0 end) as feecnt, " +
+        "sum(case when t.revflag=1 then 0 when t.transtype='revert' then 0 when t.managefeetype in ('discount','reduction','quota') then t.managefee else 0 end) as feeamt " +
+        "from tb_transdtl t  " +
+        "left join tb_customer cust on t.custid=cust.custid " +
+        "left join tb_device dev on t.termid=dev.id " +
+        "where t.status='success' and t.accdate=?1 " +
+        "group by t.accdate,cust.deptcode,cust.custtype,dev.devgroupid,t.termid,t.mealtype,t.core_sourcetype ", nativeQuery = true)
+    List<DtlStatBean> getTransdtlStatinfo(String accdate);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCheckDetail.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCheckDetail.java
index 33c9e78..c5400a1 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCheckDetail.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCheckDetail.java
@@ -13,7 +13,7 @@
   @Id
   @GenericGenerator(name = "ckidGenerator", strategy = "uuid")
   @GeneratedValue(generator = "ckidGenerator")
-  @Column(name = "ID", nullable = false, length = 32)
+  @Column(name = "ID", unique = true, nullable = false, length = 32)
   private String id;
 
   @Column(name = "ACCDATE", nullable = false, length = 8)
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
index 5a107d4..276225b 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
@@ -22,6 +22,8 @@
     private String status;
     private String checkstatus;
 
+    private String deptcode;
+
     @Id
     @GenericGenerator(name = "idGenerator", strategy = "uuid")
     @GeneratedValue(generator = "idGenerator")
@@ -129,4 +131,13 @@
     public void setCheckstatus(String checkstatus) {
         this.checkstatus = checkstatus;
     }
+
+    @Column(name = "DEPTCODE", length = 32)
+    public String getDeptcode() {
+        return deptcode;
+    }
+
+    public void setDeptcode(String deptcode) {
+        this.deptcode = deptcode;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TDept.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TDept.java
new file mode 100644
index 0000000..b901fdc
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TDept.java
@@ -0,0 +1,88 @@
+package com.supwisdom.dlpay.restaurant.domain;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "TB_DEPT",
+    indexes = {@Index(name = "UK_DEPT_DEPTNO", unique = true, columnList = "DEPTNO")})
+public class TDept {
+  @Id
+  @SequenceGenerator(name = "pk_dept_deptcode", sequenceName = "SEQ_DEPTCODE", allocationSize = 1, initialValue = 10)
+  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pk_dept_deptcode")
+  @Column(name="DEPTCODE", nullable = false, length = 32)
+  private String deptcode; //ID
+
+  @Column(name="DEPTNO", nullable = false, length = 20)
+  private String deptno;  //部门编号,可能会要修改，不能为主键，唯一索引
+
+  @Column(name="DEPTNAME", precision = 600)
+  private String deptname; //部门名称
+
+  @Column(name="FDEPTCODE", nullable = false, length = 32)
+  private String fdeptcode; //上级部门
+
+  @Column(name="ENAME", precision = 600)
+  private String ename; //部门英文名称
+
+  @Column(name="STATUS", nullable = false, precision = 600)
+  private String status; //normal-正常；closed-删除
+
+  @Column(name="LASTSAVED", length = 20)
+  private String lastsaved; //最后更新时间
+
+  public String getDeptcode() {
+    return deptcode;
+  }
+
+  public void setDeptcode(String deptcode) {
+    this.deptcode = deptcode;
+  }
+
+  public String getDeptno() {
+    return deptno;
+  }
+
+  public void setDeptno(String deptno) {
+    this.deptno = deptno;
+  }
+
+  public String getDeptname() {
+    return deptname;
+  }
+
+  public void setDeptname(String deptname) {
+    this.deptname = deptname;
+  }
+
+  public String getFdeptcode() {
+    return fdeptcode;
+  }
+
+  public void setFdeptcode(String fdeptcode) {
+    this.fdeptcode = fdeptcode;
+  }
+
+  public String getEname() {
+    return ename;
+  }
+
+  public void setEname(String ename) {
+    this.ename = ename;
+  }
+
+  public String getStatus() {
+    return status;
+  }
+
+  public void setStatus(String status) {
+    this.status = status;
+  }
+
+  public String getLastsaved() {
+    return lastsaved;
+  }
+
+  public void setLastsaved(String lastsaved) {
+    this.lastsaved = lastsaved;
+  }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TRptMealsDtl.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TRptMealsDtl.java
new file mode 100644
index 0000000..7496b1d
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TRptMealsDtl.java
@@ -0,0 +1,165 @@
+package com.supwisdom.dlpay.restaurant.domain;
+
+
+import org.hibernate.annotations.GenericGenerator;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "TB_RPT_MEALSDTL",
+    indexes = {@Index(name = "UK_RPT_MEALSDTL", unique = true, columnList = "checkdate,deptcode,custtype,devgroupid,deviceid,mealtype,paytype")})
+public class TRptMealsDtl {
+
+  //日期  部门  人员类别  设备组(商户)  设备  餐次  支付方式  总次数 总金额  补贴次数 补贴金额
+  @Id
+  @GenericGenerator(name = "midGenerator", strategy = "uuid")
+  @GeneratedValue(generator = "midGenerator")
+  @Column(name = "ID", unique = true, nullable = false, length = 32)
+  private String id;
+
+  @Column(name = "CHECKDATE", nullable = false, length = 8)
+  private String checkdate; //日期
+
+  @Column(name = "DEPTCODE", nullable = false, length = 32)
+  private String deptcode; //部门
+
+  @Column(name = "CUSTTYPE", nullable = false, precision = 9)
+  private Integer custtype; //人员类别
+
+  @Column(name = "DEVGROUPID", nullable = false, precision = 9)
+  private Integer devgroupid; //设备组(商户)
+
+  @Column(name = "DEVICEID", nullable = false, length = 9)
+  private Integer deviceid; //设备
+
+  @Column(name = "MEALTYPE", nullable = false, length = 20)
+  private String mealtype; //餐次
+
+  @Column(name = "PAYTYPE", nullable = false, length = 32)
+  private String paytype; //支付方式
+
+  @Column(name = "TOTALCNT", precision = 9, scale = 0)
+  private Integer totalcnt;
+
+  @Column(name = "TOTALAMT", precision = 15, scale = 2)
+  private Double totalamt;
+
+  @Column(name = "FEECNT", precision = 9, scale = 0)
+  private Integer feecnt;
+
+  @Column(name = "FEEAMT", precision = 15, scale = 2)
+  private Double feeamt;
+
+  public TRptMealsDtl() {
+  }
+
+  public TRptMealsDtl(String checkdate, String deptcode, Integer custtype, Integer devgroupid, Integer deviceid, String mealtype, String paytype, Integer totalcnt, Double totalamt, Integer feecnt, Double feeamt) {
+    this.checkdate = checkdate;
+    this.deptcode = deptcode;
+    this.custtype = custtype;
+    this.devgroupid = devgroupid;
+    this.deviceid = deviceid;
+    this.mealtype = mealtype;
+    this.paytype = paytype;
+    this.totalcnt = totalcnt;
+    this.totalamt = totalamt;
+    this.feecnt = feecnt;
+    this.feeamt = feeamt;
+  }
+
+  public String getId() {
+    return id;
+  }
+
+  public void setId(String id) {
+    this.id = id;
+  }
+
+  public String getCheckdate() {
+    return checkdate;
+  }
+
+  public void setCheckdate(String checkdate) {
+    this.checkdate = checkdate;
+  }
+
+  public String getDeptcode() {
+    return deptcode;
+  }
+
+  public void setDeptcode(String deptcode) {
+    this.deptcode = deptcode;
+  }
+
+  public Integer getCusttype() {
+    return custtype;
+  }
+
+  public void setCusttype(Integer custtype) {
+    this.custtype = custtype;
+  }
+
+  public Integer getDevgroupid() {
+    return devgroupid;
+  }
+
+  public void setDevgroupid(Integer devgroupid) {
+    this.devgroupid = devgroupid;
+  }
+
+  public Integer getDeviceid() {
+    return deviceid;
+  }
+
+  public void setDeviceid(Integer deviceid) {
+    this.deviceid = deviceid;
+  }
+
+  public String getMealtype() {
+    return mealtype;
+  }
+
+  public void setMealtype(String mealtype) {
+    this.mealtype = mealtype;
+  }
+
+  public String getPaytype() {
+    return paytype;
+  }
+
+  public void setPaytype(String paytype) {
+    this.paytype = paytype;
+  }
+
+  public Integer getTotalcnt() {
+    return totalcnt;
+  }
+
+  public void setTotalcnt(Integer totalcnt) {
+    this.totalcnt = totalcnt;
+  }
+
+  public Double getTotalamt() {
+    return totalamt;
+  }
+
+  public void setTotalamt(Double totalamt) {
+    this.totalamt = totalamt;
+  }
+
+  public Integer getFeecnt() {
+    return feecnt;
+  }
+
+  public void setFeecnt(Integer feecnt) {
+    this.feecnt = feecnt;
+  }
+
+  public Double getFeeamt() {
+    return feeamt;
+  }
+
+  public void setFeeamt(Double feeamt) {
+    this.feeamt = feeamt;
+  }
+}
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/CheckTransdtlService.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/CheckTransdtlService.java
index a488d67..781a740 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/CheckTransdtlService.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/CheckTransdtlService.java
@@ -65,4 +65,19 @@
 
   @Transactional(rollbackFor = Exception.class)
   TCheckCtl doConfirmCheckFile(TCheckCtl ctl, TCheckFile checkFile);
+
+  @Transactional(rollbackFor = Exception.class, readOnly = true)
+  TCheckCtl getSystemCheckCtl();
+
+  @Transactional(rollbackFor = Exception.class)
+  String doGetStatementDate();
+
+  @Transactional(rollbackFor = Exception.class)
+  String doSwitchStatementDate(String statdate);
+
+  @Transactional(rollbackFor = Exception.class)
+  boolean doClearStatmentMealsDtl(String statdate);
+
+  @Transactional(rollbackFor = Exception.class)
+  boolean doStatmentMealsDtl(String statdate);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CheckTransdtlServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CheckTransdtlServiceImpl.java
index 551fdcb..6f2eea3 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CheckTransdtlServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CheckTransdtlServiceImpl.java
@@ -1,23 +1,20 @@
 package com.supwisdom.dlpay.restaurant.service.impl;
 
 import com.supwisdom.dlpay.api.bean.DownloadShopBillData;
+import com.supwisdom.dlpay.framework.dao.BusinessparaDao;
 import com.supwisdom.dlpay.framework.dao.ShopSettlementDao;
 import com.supwisdom.dlpay.framework.data.CountAmountBean;
 import com.supwisdom.dlpay.framework.data.ExistBean;
+import com.supwisdom.dlpay.framework.domain.TBusinesspara;
 import com.supwisdom.dlpay.framework.domain.TShopSettlement;
 import com.supwisdom.dlpay.framework.service.SystemUtilService;
 import com.supwisdom.dlpay.framework.util.DateUtil;
 import com.supwisdom.dlpay.framework.util.MoneyUtil;
 import com.supwisdom.dlpay.framework.util.StringUtil;
 import com.supwisdom.dlpay.framework.util.TradeDict;
-import com.supwisdom.dlpay.restaurant.dao.CheckCtlDao;
-import com.supwisdom.dlpay.restaurant.dao.CheckDetailDao;
-import com.supwisdom.dlpay.restaurant.dao.CheckFileDao;
-import com.supwisdom.dlpay.restaurant.dao.TransDtlDao;
-import com.supwisdom.dlpay.restaurant.domain.TCheckCtl;
-import com.supwisdom.dlpay.restaurant.domain.TCheckDetail;
-import com.supwisdom.dlpay.restaurant.domain.TCheckFile;
-import com.supwisdom.dlpay.restaurant.domain.TTransDtl;
+import com.supwisdom.dlpay.restaurant.bean.DtlStatBean;
+import com.supwisdom.dlpay.restaurant.dao.*;
+import com.supwisdom.dlpay.restaurant.domain.*;
 import com.supwisdom.dlpay.restaurant.service.CheckTransdtlService;
 import com.supwisdom.dlpay.restaurant.util.RestaurantConstant;
 import org.apache.commons.beanutils.BeanUtils;
@@ -48,7 +45,21 @@
   @Autowired
   private CheckDetailDao checkDetailDao;
   @Autowired
+  private BusinessparaDao businessparaDao;
+  @Autowired
   private SystemUtilService systemUtilService;
+  @Autowired
+  private RptMealsDtlDao rptMealsDtlDao;
+  @Autowired
+  private DeviceDao deviceDao;
+  @Autowired
+  private CustTypeDao custTypeDao;
+  @Autowired
+  private DeptDao deptDao;
+  @Autowired
+  private DeviceGroupDao deviceGroupDao;
+  @Autowired
+  private MealTypeDao mealTypeDao;
 
   private static final Logger logger = LoggerFactory.getLogger(CheckTransdtlServiceImpl.class);
 
@@ -183,7 +194,7 @@
   }
 
   @Override
-  public TCheckFile doUpdateCheckFile(TCheckFile checkFile){
+  public TCheckFile doUpdateCheckFile(TCheckFile checkFile) {
     return checkFileDao.save(checkFile);
   }
 
@@ -345,4 +356,107 @@
     return checkCtlDao.save(ctl);
   }
 
+  @Override
+  public TCheckCtl getSystemCheckCtl() {
+    return checkCtlDao.getById(RestaurantConstant.CHECK_TRANSDTL_CTLID);
+  }
+
+  @Override
+  public String doGetStatementDate() {
+    TBusinesspara businesspara = businessparaDao.findByParakeyForUpdate(RestaurantConstant.TRANSDTL_STATEMENT_LASTDATE);
+    if (null == businesspara) {
+      businesspara = new TBusinesspara();
+      businesspara.setParakey(RestaurantConstant.TRANSDTL_STATEMENT_LASTDATE);
+      businesspara.setParaval(getMinTransdate());
+      businessparaDao.save(businesspara);
+    }
+    return businesspara.getParaval();
+  }
+
+  @Override
+  public String doSwitchStatementDate(String statdate) {
+    TBusinesspara businesspara = businessparaDao.findByParakeyForUpdate(RestaurantConstant.TRANSDTL_STATEMENT_LASTDATE);
+    businesspara.setParaval(DateUtil.getNewDay(statdate, 1));
+    businessparaDao.save(businesspara);
+    return businesspara.getParaval();
+  }
+
+  @Override
+  public boolean doClearStatmentMealsDtl(String statdate) {
+    rptMealsDtlDao.deleteAllByCheckdate(statdate);
+    return true;
+  }
+
+  @Override
+  public boolean doStatmentMealsDtl(String statdate) {
+    List<DtlStatBean> list = transDtlDao.getTransdtlStatinfo(statdate);
+    List<TRptMealsDtl> data = new ArrayList<>(0);
+    if (!StringUtil.isEmpty(list)) {
+      for (DtlStatBean bean : list) {
+        TRptMealsDtl tmd = new TRptMealsDtl();
+        tmd.setCheckdate(bean.getAccdate());
+        tmd.setDeptcode(bean.getDeptcode() == null ? "unknow" : bean.getDeptcode());
+        tmd.setCusttype(bean.getCusttype() == null ? -1 : bean.getCusttype());
+        tmd.setDevgroupid(bean.getGroupid() == null ? -1 : bean.getGroupid());
+        tmd.setDeviceid(bean.getTermid() == null ? -1 : bean.getTermid());
+        tmd.setMealtype(bean.getMealtype() == null ? "unknow" : bean.getMealtype());
+        tmd.setPaytype(bean.getPaytype() == null ? "citizenCard" : bean.getPaytype());
+        tmd.setTotalcnt(bean.getTotalcnt());
+        tmd.setTotalamt(bean.getTotalamt());
+        tmd.setFeecnt(bean.getFeecnt());
+        tmd.setFeeamt(bean.getFeeamt());
+        data.add(tmd);
+      }
+    } else {
+      //当天无交易记录，插入一条全零记录
+      TRptMealsDtl tmd = new TRptMealsDtl();
+      tmd.setCheckdate(statdate);
+      tmd.setDeptcode(getDefaultDeptcode());
+      tmd.setCusttype(getDefaultCusttype());
+      tmd.setDevgroupid(getDefaultDevgroupid());
+      tmd.setDeviceid(getDefaultDeviceid());
+      tmd.setMealtype(getDefaultMealtype());
+      tmd.setPaytype("citizenCard");
+      tmd.setTotalcnt(0);
+      tmd.setTotalamt(0D);
+      tmd.setFeecnt(0);
+      tmd.setFeeamt(0D);
+      data.add(tmd);
+    }
+    rptMealsDtlDao.saveAll(data);
+    return true;
+  }
+
+  private String getDefaultDeptcode() {
+    List<TDept> list = deptDao.findNormalDept();
+    if (!StringUtil.isEmpty(list)) return list.get(0).getDeptcode();
+    return "unknow";
+  }
+
+  private Integer getDefaultCusttype() {
+    List<TCustType> list = custTypeDao.findAll();
+    if (!StringUtil.isEmpty(list)) return list.get(0).getCusttypeid();
+    return -1;
+  }
+
+  private Integer getDefaultDevgroupid() {
+    List<TDeviceGroup> list = deviceGroupDao.findAll();
+    if (!StringUtil.isEmpty(list)) return list.get(0).getDevgroupid();
+    return -1;
+  }
+
+  private Integer getDefaultDeviceid() {
+    List<TDevice> list = deviceDao.findNormalDevices();
+    if (!StringUtil.isEmpty(list)) return list.get(0).getId();
+    return -1;
+
+  }
+
+  private String getDefaultMealtype() {
+    List<TMealtype> list = mealTypeDao.findAllByOrderByEndtime();
+    if (!StringUtil.isEmpty(list)) return list.get(0).getMealtype();
+    return "unknow";
+  }
+
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/task/TransdtlStatementTask.java b/src/main/java/com/supwisdom/dlpay/restaurant/task/TransdtlStatementTask.java
new file mode 100644
index 0000000..cb256eb
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/task/TransdtlStatementTask.java
@@ -0,0 +1,79 @@
+package com.supwisdom.dlpay.restaurant.task;
+
+import com.supwisdom.dlpay.framework.service.SystemUtilService;
+import com.supwisdom.dlpay.framework.util.DateUtil;
+import com.supwisdom.dlpay.restaurant.domain.TCheckCtl;
+import com.supwisdom.dlpay.restaurant.service.CheckTransdtlService;
+import net.javacrumbs.shedlock.core.SchedulerLock;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * 流水统计任务
+ */
+@Component
+@EnableScheduling
+public class TransdtlStatementTask {
+  @Autowired
+  private SystemUtilService systemUtilService;
+  @Autowired
+  private CheckTransdtlService checkTransdtlService;
+
+  private static final Logger logger = LoggerFactory.getLogger(TransdtlStatementTask.class);
+
+
+  @Scheduled(cron = "${restaurant.statement.cron}")
+  @SchedulerLock(name = "RestaurantStatementTask", lockAtMostForString = "PT10M")
+  public void doStatementTask() {
+    try {
+      long t1 = System.currentTimeMillis();
+      logger.info("=================== 【流水统计任务】开始： ===================");
+
+      TCheckCtl checkCtl = checkTransdtlService.getSystemCheckCtl();
+      if (null == checkCtl) {
+        logger.error("还未与核心平台对账！");
+        return;
+      }
+      String enddate = checkCtl.getCheckdate();
+      if (!checkCtl.getCheckOk()) enddate = DateUtil.getNewDay(checkCtl.getCheckdate(), -1); //已对账的日期
+      String startdate = checkTransdtlService.doGetStatementDate(); //上次统计的日期
+      if (DateUtil.compareDatetime(startdate, enddate, "yyyyMMdd") < 0) {
+        logger.info("对【" + startdate + " ~ " + enddate + "】的流水进行统计：");
+      }
+
+      String statdate = startdate;
+      while (DateUtil.compareDatetime(statdate, enddate, "yyyyMMdd") <= 0) {
+        try {
+          if (doStatementProcess(statdate)) {
+            statdate = checkTransdtlService.doSwitchStatementDate(statdate); //统计日期加1;
+          }
+        } catch (Exception e) {
+          e.printStackTrace();
+          break;
+        }
+      }
+
+      long t2 = System.currentTimeMillis();
+      logger.info("=================== 【流水统计任务】结束，耗时 " + (t2 - t1) + " ms ===================");
+    } catch (Exception e) {
+      logger.error("【流水统计任务】报错：" + e.getMessage());
+      e.printStackTrace();
+    }
+  }
+
+  public boolean doStatementProcess(String statdate) throws Exception {
+    logger.info("对【" + statdate + "】的流水进行统计：");
+
+    boolean result = false;
+    if (checkTransdtlService.doClearStatmentMealsDtl(statdate)) {
+      result = checkTransdtlService.doStatmentMealsDtl(statdate); //TB_RPT_MEALSDTL表数据统计
+    }
+
+    return result;
+  }
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java b/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
index e9afa21..80933c7 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
@@ -75,5 +75,5 @@
     public static final String CHKDTL_RESOLVED_HANGUP="hangup"; //挂起
 
 
-
+    public static final String TRANSDTL_STATEMENT_LASTDATE = "transdtl.statement.lastdate"; //统计日期
 }
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index f1cb684..a606a3a 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -33,4 +33,6 @@
 
 # 对账任务
 restaurant.chkdtltask.cron=27 3/10 * * * ?
+# 统计任务
+restaurant.statement.cron=0 7/10 * * * ?
 
