diff --git a/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java b/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java
index 7132ab9..33d6443 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java
@@ -217,10 +217,10 @@
 
                 try {
 
-                    logger.info(cust.getCustname()+" "+map.size()+"-生成名单开始"+DateUtil.getNow());
+                  //  logger.info(cust.getCustname()+" "+map.size()+"-生成名单开始"+DateUtil.getNow());
                     for(Integer timeid:map.keySet()){
                         if(timeid!=null){
-                        logger.info("创建名单  "+timeid);
+                       // logger.info("创建名单  "+timeid);
                             TAtteDtl dtl=new TAtteDtl();
                             dtl.setAttedate(attedate);
                             dtl.setAtteno(atteClassDao.getAtteNo(attedate));
@@ -253,12 +253,12 @@
                             }
                             TAtteDtl oldbean=atteClassDao.getDtl(timeid,attedate,cust.getCustid());
                             if(oldbean==null){
-                                logger.info("oldbean is null");
+                              //  logger.info("oldbean is null");
                                 atteClassDao.saveAtteDtl(dtl);
                             }
                         }
                     }
-                    logger.info(cust.getCustname()+"-生成名单结束"+DateUtil.getNow());
+                    //logger.info(cust.getCustname()+"-生成名单结束"+DateUtil.getNow());
                 } catch (Exception e) {
                     e.printStackTrace();
                     return false;
diff --git a/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteReportServiceImpl.java b/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteReportServiceImpl.java
index b9b3c4f..8374ef5 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteReportServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteReportServiceImpl.java
@@ -49,9 +49,10 @@
             atteReportDao.delAtteReport(startdate,deptcode);
 
             List<ReportInfo> list=atteReportDao.getreportfromView(deptcode,startdate);
+            System.out.println(startdate+"生成报表 "+list.size());
             if(list!=null&&list.size()>0){
                 for(ReportInfo info:list){
-                    System.out.println(info.getCustid()+" "+info.getAttedate()+" "+info.getApflag());
+                //    System.out.println(info.getCustid()+" "+info.getAttedate()+" "+info.getApflag());
                     TAtteReport report=atteReportDao.findReportById(info.getCustid(),info.getAttedate(),info.getApflag());
                     if(report==null){
                         report=new TAtteReport();
diff --git a/src/main/java/com/supwisdom/dlpay/atte/task/CreateAtteDtlTask.java b/src/main/java/com/supwisdom/dlpay/atte/task/CreateAtteDtlTask.java
index 459df1e..85f4043 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/task/CreateAtteDtlTask.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/task/CreateAtteDtlTask.java
@@ -84,6 +84,9 @@
     }
 
     public static void main(String[] args) {
-        System.out.println(DateUtil.getNewDay("20200617",-1));
+        String cdate=DateUtil.getNow("yyyyMMdd");
+        System.out.println(cdate);
+        String attedate=DateUtil.getNewDay(cdate,-1);
+        System.out.println(attedate);
     }
 }
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 2902ad9..8d30168 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -49,7 +49,7 @@
 
 atte.create.dtl=0 0 1 * * ?
 atte.refresh.dtl=0 0 8,10,12,14,16,18,19,21 * * ?
-atte.create.report=0 0 4 * * ?
+atte.create.report=0 30 3 * * ?
 
 spring.redis.database=2
 
