考勤流水生成时间调整
diff --git a/src/main/java/com/supwisdom/dlpay/atte/controller/AppAtteController.java b/src/main/java/com/supwisdom/dlpay/atte/controller/AppAtteController.java
index 3746a38..abdbc28 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/controller/AppAtteController.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/controller/AppAtteController.java
@@ -12,9 +12,12 @@
 import com.supwisdom.dlpay.atte.service.AtteClassService;
 import com.supwisdom.dlpay.atte.service.AtteReportService;
 import com.supwisdom.dlpay.atte.service.AtteRestService;
+import com.supwisdom.dlpay.atte.service.HandRefreshService;
 import com.supwisdom.dlpay.doorlist.bean.TCustomerInfo;
 import com.supwisdom.dlpay.framework.dao.BusinessparaDao;
 import com.supwisdom.dlpay.framework.domain.TBusinesspara;
+import com.supwisdom.dlpay.framework.domain.TTaskLock;
+import com.supwisdom.dlpay.framework.service.SystemUtilService;
 import com.supwisdom.dlpay.framework.util.DateUtil;
 import com.supwisdom.dlpay.framework.util.StringUtil;
 import com.supwisdom.dlpay.mainservice.dao.CardDao;
@@ -63,6 +66,8 @@
     private DeptDao deptDao;
     @Autowired
     private ApiCommonProxy commonProxy;
+    @Autowired
+    private HandRefreshService handRefreshService;
 
 
 
@@ -780,4 +785,123 @@
         }
         return jld_code;
     }
+
+
+    /**
+     *    测试
+     * @param model
+     * @return
+     */
+
+    @Autowired
+    private SystemUtilService systemUtilService;
+    @RequestMapping("/createdtl")
+    public void test(@RequestParam(value = "start") String startdate,
+                     @RequestParam(value = "end") String enddate,Model model){
+        TTaskLock lock= null;
+        lock = systemUtilService.doLockTask("REFRESHDTL",null,"所有流水刷新");
+        if(lock==null){
+            return;
+        }
+        Integer cur=Integer.parseInt(DateUtil.getNow("yyyyMMdd"));
+        Integer start=Integer.parseInt(startdate);
+        Integer end=Integer.parseInt(enddate);
+        int cnt=1;
+        while (start<=end&&cnt<=10) {
+            if(start>cur){
+                return ;
+            }
+            atteClassService.createAtteDtl(startdate, null);
+            startdate = DateUtil.getNewDay(startdate, 1);
+            start = Integer.parseInt(startdate);
+            cnt++;
+        }
+        String hostdatetime = systemUtilService.getSysdatetime().getHostdatetime(); //yyyyMMddHHmmss
+        lock.setTaskstatus(0);
+        lock.setTasktime(hostdatetime);
+        systemUtilService.updateTaskLock(lock);
+
+    }
+
+
+
+    @RequestMapping("/refreshdtl")
+    public void refreshdtl(@RequestParam(value = "start") String startdate,
+                     @RequestParam(value = "end") String enddate,Model model){
+        TTaskLock lock= null;
+        lock = systemUtilService.doLockTask("REFRESHDTL",null,"所有流水刷新");
+        if(lock==null){
+            return;
+        }
+        Integer start=Integer.parseInt(startdate);
+        Integer end=Integer.parseInt(enddate);
+        int cnt=1;
+        while (start<=end&&cnt<=10) {
+            atteClassService.handleDtl(null,startdate);
+            startdate = DateUtil.getNewDay(startdate, 1);
+            start = Integer.parseInt(startdate);
+            cnt++;
+        }
+        String hostdatetime = systemUtilService.getSysdatetime().getHostdatetime(); //yyyyMMddHHmmss
+        lock.setTaskstatus(0);
+        lock.setTasktime(hostdatetime);
+        systemUtilService.updateTaskLock(lock);
+
+    }
+
+    @RequestMapping("/refreshreport")
+    public void refreshreport(@RequestParam(value = "start") String startdate,
+                           @RequestParam(value = "end") String enddate,Model model){
+        TTaskLock lock= null;
+        lock = systemUtilService.doLockTask("REFRESHDTL",null,"所有流水刷新");
+        if(lock==null){
+            return;
+        }
+        Integer start=Integer.parseInt(startdate);
+        Integer end=Integer.parseInt(enddate);
+        int cnt=1;
+        Integer cur=Integer.parseInt(DateUtil.getNow("yyyyMMdd"));
+        while (start<=end&&cnt<=10) {
+            if(start>=cur){
+                return ;
+            }
+            atteReportService.refreshReport(null,startdate,startdate);
+            startdate = DateUtil.getNewDay(startdate, 1);
+            start = Integer.parseInt(startdate);
+            cnt++;
+        }
+        String hostdatetime = systemUtilService.getSysdatetime().getHostdatetime(); //yyyyMMddHHmmss
+        lock.setTaskstatus(0);
+        lock.setTasktime(hostdatetime);
+        systemUtilService.updateTaskLock(lock);
+
+    }
+    @RequestMapping("/refresh")
+    public void refreshall(@RequestParam(value = "start") String startdate,
+                              @RequestParam(value = "end") String enddate,Model model){
+        TTaskLock lock= null;
+        lock = systemUtilService.doLockTask("REFRESHDTL",null,"所有流水刷新");
+        if(lock==null){
+            return;
+        }
+        Integer cur=Integer.parseInt(DateUtil.getNow("yyyyMMdd"));
+        Integer start=Integer.parseInt(startdate);
+        Integer end=Integer.parseInt(enddate);
+        int cnt=1;
+        while (start<=end&&cnt<=10) {
+            if(start>=cur){
+                return ;
+            }
+            handRefreshService.refreshbyhand(startdate,startdate,null);
+            startdate = DateUtil.getNewDay(startdate, 1);
+            start = Integer.parseInt(startdate);
+            cnt++;
+        }
+        String hostdatetime = systemUtilService.getSysdatetime().getHostdatetime(); //yyyyMMddHHmmss
+        lock.setTaskstatus(0);
+        lock.setTasktime(hostdatetime);
+        systemUtilService.updateTaskLock(lock);
+
+    }
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/atte/controller/CustAtteController.java b/src/main/java/com/supwisdom/dlpay/atte/controller/CustAtteController.java
index f7968ec..0cc130e 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/controller/CustAtteController.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/controller/CustAtteController.java
@@ -648,7 +648,7 @@
                 deptcode="-99";
             }
         }
-        handRefreshService.refreshbyhand(startdate,enddate,deptcode);
+        //handRefreshService.refreshbyhand(startdate,enddate,deptcode);
         return map;
     }
 
diff --git a/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java b/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java
index c3dd941..97fe433 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java
@@ -237,7 +237,7 @@
     @Transactional
     @Override
     public String getAtteNo(String attedate) {
-        String sql=" select to_char(cast(nextval('seq_attedtl') as INTEGER),'FM000000') ";
+        String sql=" select to_char(cast(nextval('seq_attedtl') as INTEGER),'FM000000000000') ";
         Query query=entityManager.createNativeQuery(sql);
         List list=query.getResultList();
         if(list!=null&&list.size()>0){
diff --git a/src/main/java/com/supwisdom/dlpay/atte/domain/TAtteDtl.java b/src/main/java/com/supwisdom/dlpay/atte/domain/TAtteDtl.java
index ef21b52..3d29696 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/domain/TAtteDtl.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/domain/TAtteDtl.java
@@ -23,7 +23,7 @@
 
 
     @Id
-    @Column(name = "atteno",length = 14)
+    @Column(name = "atteno",length = 20)
     public String getAtteno() {
         return atteno;
     }
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 f210c31..7132ab9 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
@@ -24,7 +24,10 @@
 import com.supwisdom.dlpay.system.domain.TCustType;
 import com.supwisdom.dlpay.system.page.Pagination;
 import com.supwisdom.dlpay.system.service.SystemService;
+import com.supwisdom.dlpay.task.SyncCustomerTask;
 import org.apache.xmlbeans.impl.tool.Diff;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -56,6 +59,7 @@
     private BusinessparaDao businessparaDao;
     @Autowired
     AtteClockDao atteClockDao;
+    protected static Logger logger = LoggerFactory.getLogger(AtteClassServiceImpl.class);
 
 
     @Override
@@ -177,75 +181,93 @@
         searchBean.setAttedate(attedate);
         // 获取考勤人员
         List<TCustomerInfo> custlist=atteClassDao.getAtteCust(searchBean);
+        logger.info("考勤名单总数"+custlist.size());
+        try {
+            for (TCustomerInfo cust:custlist){
+                TClassCust classCust=atteClassDao.getByIdAndDate(cust.getCustid(),attedate);
+                TNcTimegrp timegrp=null;
+                TAtteClass atteClass=null;
+                if(classCust==null){
+                    // 无排班
+                  Integer timegrpid=getTimegrp(cust,attedate);
+                    if(timegrpid!=null){
+                        timegrp=ncTimeGrpDao.findByTimeGrpId(timegrpid);
+                    }else {
+                        logger.info("timegrpid为空"+cust.getCustname());
+                    }
+                }else{
+                    logger.info("考勤排班");
+                    atteClass=atteClassDao.getClassById(classCust.getClassid());
+                    if(atteClass!=null&&atteClass.getWorkorno()==1){
+                        timegrp=ncTimeGrpDao.findByTimeGrpId(atteClass.getTimegrpid());
+                    }
 
-        for (TCustomerInfo cust:custlist){
-            TClassCust classCust=atteClassDao.getByIdAndDate(cust.getCustid(),attedate);
-            TNcTimegrp timegrp=null;
-            TAtteClass atteClass=null;
-            if(classCust==null){
-                // 无排班
-              Integer timegrpid=getTimegrp(cust,attedate);
-                if(timegrpid!=null){
-                    timegrp=ncTimeGrpDao.findByTimeGrpId(timegrpid);
                 }
-            }else{
 
-                atteClass=atteClassDao.getClassById(classCust.getClassid());
-                if(atteClass!=null&&atteClass.getWorkorno()==1){
-                    timegrp=ncTimeGrpDao.findByTimeGrpId(atteClass.getTimegrpid());
+                if(timegrp==null){
+                    continue;
+                }
+                Map<Integer,Integer> map=new HashMap<>();
+                map.put(timegrp.getTimeid1(),timegrp.getTimeid1());
+                map.put(timegrp.getTimeid2(),timegrp.getTimeid2());
+                map.put(timegrp.getTimeid3(),timegrp.getTimeid3());
+                map.put(timegrp.getTimeid4(),timegrp.getTimeid4());
+                map.put(timegrp.getTimeid5(),timegrp.getTimeid5());
+                map.put(timegrp.getTimeid6(),timegrp.getTimeid6());
+
+                try {
+
+                    logger.info(cust.getCustname()+" "+map.size()+"-生成名单开始"+DateUtil.getNow());
+                    for(Integer timeid:map.keySet()){
+                        if(timeid!=null){
+                        logger.info("创建名单  "+timeid);
+                            TAtteDtl dtl=new TAtteDtl();
+                            dtl.setAttedate(attedate);
+                            dtl.setAtteno(atteClassDao.getAtteNo(attedate));
+                            dtl.setCustid(cust.getCustid());
+                            TAtteRest rest=atteRestDao.getRest(cust.getCustid(),attedate);
+                            if(rest!=null){  //查询假条
+                                dtl.setState(rest.getRtype());
+                            }else{
+                                dtl.setState(0);
+                            }
+                            //判断有无补打卡
+                            if(dtl.getState()==0&&atteClockDao.isClock(cust.getCustid(),timeid,attedate)){
+                                dtl.setState(1);
+                            }
+                            dtl.setStatus(1);
+                            dtl.setTimeid(timeid);
+                            dtl.setUpdatetime(DateUtil.getNow());
+                            TNcTime time=ncTimeDao.findByTimeId(timeid);
+                            String etime=time.getEtime().replace(":","")+"00";
+                            String divtime="130000";
+                            TBusinesspara para=businessparaDao.findByParakey("divtime");
+                            if(para!=null&&!StringUtil.isEmpty(para.getParaval())){
+                                divtime=para.getParaval();
+                            }
+                            int diff=getDiffMin(divtime,etime);
+                            if(diff>0){
+                                dtl.setApflag(2);
+                            }else{
+                                dtl.setApflag(1);
+                            }
+                            TAtteDtl oldbean=atteClassDao.getDtl(timeid,attedate,cust.getCustid());
+                            if(oldbean==null){
+                                logger.info("oldbean is null");
+                                atteClassDao.saveAtteDtl(dtl);
+                            }
+                        }
+                    }
+                    logger.info(cust.getCustname()+"-生成名单结束"+DateUtil.getNow());
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    return false;
                 }
 
             }
-
-            if(timegrp==null){
-                continue;
-            }
-            Map<Integer,Integer> map=new HashMap<>();
-            map.put(timegrp.getTimeid1(),timegrp.getTimeid1());
-            map.put(timegrp.getTimeid2(),timegrp.getTimeid2());
-            map.put(timegrp.getTimeid3(),timegrp.getTimeid3());
-            map.put(timegrp.getTimeid4(),timegrp.getTimeid4());
-            map.put(timegrp.getTimeid5(),timegrp.getTimeid5());
-            map.put(timegrp.getTimeid6(),timegrp.getTimeid6());
-            for(Integer timeid:map.keySet()){
-                if(timeid!=null){
-                    TAtteDtl dtl=new TAtteDtl();
-                    dtl.setAttedate(attedate);
-                    dtl.setAtteno(atteClassDao.getAtteNo(attedate));
-                    dtl.setCustid(cust.getCustid());
-                    TAtteRest rest=atteRestDao.getRest(cust.getCustid(),attedate);
-                    if(rest!=null){  //查询假条
-                        dtl.setState(rest.getRtype());
-                    }else{
-                        dtl.setState(0);
-                    }
-                    //判断有无补打卡
-                    if(dtl.getState()==0&&atteClockDao.isClock(cust.getCustid(),timeid,attedate)){
-                        dtl.setState(1);
-                    }
-                    dtl.setStatus(1);
-                    dtl.setTimeid(timeid);
-                    dtl.setUpdatetime(DateUtil.getNow());
-                    TNcTime time=ncTimeDao.findByTimeId(timeid);
-                    String etime=time.getEtime().replace(":","")+"00";
-                    String divtime="130000";
-                    TBusinesspara para=businessparaDao.findByParakey("divtime");
-                    if(para!=null&&!StringUtil.isEmpty(para.getParaval())){
-                        divtime=para.getParaval();
-                    }
-                    int diff=getDiffMin(divtime,etime);
-                    if(diff>0){
-                        dtl.setApflag(2);
-                    }else{
-                        dtl.setApflag(1);
-                    }
-                    TAtteDtl oldbean=atteClassDao.getDtl(timeid,attedate,cust.getCustid());
-                    if(oldbean==null){
-                        atteClassDao.saveAtteDtl(dtl);
-                    }
-                }
-            }
-
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
         }
         return true;
     }
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 a109e20..459df1e 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/task/CreateAtteDtlTask.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/task/CreateAtteDtlTask.java
@@ -38,7 +38,7 @@
         String attedate= null;
         try {
             String now = DateUtil.getNow();
-            logger.info("时间:" + now + "--生成考勤名单");
+            logger.info("n时间:" + now + "--生成考勤名单");
             attedate = DateUtil.getNow("yyyyMMdd");
 
             TTaskLock lock= null;
@@ -60,7 +60,7 @@
     public void refreshAtteDtl(){
         try {
             String now = DateUtil.getNow();
-            logger.info("时间:" + now + "--刷新考勤状态");
+            logger.info("n时间:" + now + "--刷新考勤状态");
           String  attedate = DateUtil.getNow("yyyyMMdd");
             atteClassService.handleDtl(null,attedate);
         } catch (Exception e) {
@@ -68,13 +68,13 @@
         }
     }
 
-    @Scheduled(cron = "${atte.create.dtl}")//每天一点生成前一天报表
+    @Scheduled(cron = "${atte.create.report}")//每天一点生成前一天报表
     public void createAtteReport(){
 
         String attedate= null;
         try {
             String now = DateUtil.getNow();
-            logger.info("时间:" + now + "--生成前一天考勤报表");
+            logger.info("n时间:" + now + "--生成前一天考勤报表");
           String  cdate=DateUtil.getNow("yyyyMMdd");
             attedate=DateUtil.getNewDay(cdate,-1);
             atteReportService.refreshReport(null,attedate,attedate);
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index bf27274..2902ad9 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -47,8 +47,10 @@
 sync.cardStatus.cron=0 0/10 * * * ?
 apiLogin.refresh.cron=0 0/20 * * * ?
 
-atte.create.dtl=0 0 2 * * ?
-atte.refresh.dtl=0 0/30 * * * ?
+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 * * ?
+
 spring.redis.database=2