diff --git a/build.gradle b/build.gradle
index 50b7563..fa8028b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -43,7 +43,7 @@
 }
 
 docker {
-    name 'harbor.supwisdom.com/dali/door:' + version
+    name 'harbor.supwisdom.com/dali/conference:' + version
     println(jar.archivePath)
     files jar.archivePath
 }
diff --git a/src/main/java/com/supwisdom/dlpay/atte/bean/AtteReport.java b/src/main/java/com/supwisdom/dlpay/atte/bean/AtteReport.java
index e5b0a2c..f66a55b 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/bean/AtteReport.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/bean/AtteReport.java
@@ -11,11 +11,11 @@
     private String cardno;
     private Integer custtypeid;
     private String deptcode;
-    private Integer cnt1; //正常
-    private Integer cnt2;  //迟到早退
-    private Integer cnt3; // 请假
-    private Integer cnt4; //旷工
-    private Integer cnts;//
+    private float cnt1; //正常
+    private float cnt2;  //迟到早退
+    private float cnt3; // 请假
+    private float cnt4; //旷工
+    private float cnts;//
     private String custtypename;
     private String deptname;
 
@@ -59,43 +59,43 @@
         this.deptcode = deptcode;
     }
 
-    public Integer getCnt1() {
+    public float getCnt1() {
         return cnt1;
     }
 
-    public void setCnt1(Integer cnt1) {
+    public void setCnt1(float cnt1) {
         this.cnt1 = cnt1;
     }
 
-    public Integer getCnt2() {
+    public float getCnt2() {
         return cnt2;
     }
 
-    public void setCnt2(Integer cnt2) {
+    public void setCnt2(float cnt2) {
         this.cnt2 = cnt2;
     }
 
-    public Integer getCnt3() {
+    public float getCnt3() {
         return cnt3;
     }
 
-    public void setCnt3(Integer cnt3) {
+    public void setCnt3(float cnt3) {
         this.cnt3 = cnt3;
     }
 
-    public Integer getCnts() {
+    public float getCnts() {
         return cnts;
     }
 
-    public void setCnts(Integer cnts) {
+    public void setCnts(float cnts) {
         this.cnts = cnts;
     }
 
-    public Integer getCnt4() {
+    public float getCnt4() {
         return cnt4;
     }
 
-    public void setCnt4(Integer cnt4) {
+    public void setCnt4(float cnt4) {
         this.cnt4 = cnt4;
     }
 
diff --git a/src/main/java/com/supwisdom/dlpay/atte/bean/Sum.java b/src/main/java/com/supwisdom/dlpay/atte/bean/Sum.java
index 45c6dfd..af3381a 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/bean/Sum.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/bean/Sum.java
@@ -1,11 +1,11 @@
 package com.supwisdom.dlpay.atte.bean;
 
 public class Sum {
-    private Integer cnt1;
-    private Integer cnt2;
-    private Integer cnt3;
-    private Integer cnt4;
-    private Integer cnts;
+    private float cnt1;
+    private float cnt2;
+    private float cnt3;
+    private float cnt4;
+    private float cnts;
 
     public Sum() {
         this.cnt1=0;
@@ -15,43 +15,43 @@
         this.cnts=0;
     }
 
-    public Integer getCnt1() {
+    public float getCnt1() {
         return cnt1;
     }
 
-    public void setCnt1(Integer cnt1) {
+    public void setCnt1(float cnt1) {
         this.cnt1 = cnt1;
     }
 
-    public Integer getCnt2() {
+    public float getCnt2() {
         return cnt2;
     }
 
-    public void setCnt2(Integer cnt2) {
+    public void setCnt2(float cnt2) {
         this.cnt2 = cnt2;
     }
 
-    public Integer getCnt3() {
+    public float getCnt3() {
         return cnt3;
     }
 
-    public void setCnt3(Integer cnt3) {
+    public void setCnt3(float cnt3) {
         this.cnt3 = cnt3;
     }
 
-    public Integer getCnt4() {
+    public float getCnt4() {
         return cnt4;
     }
 
-    public void setCnt4(Integer cnt4) {
+    public void setCnt4(float cnt4) {
         this.cnt4 = cnt4;
     }
 
-    public Integer getCnts() {
+    public float getCnts() {
         return cnts;
     }
 
-    public void setCnts(Integer cnts) {
+    public void setCnts(float cnts) {
         this.cnts = cnts;
     }
 }
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 2a0c88c..2c7ede0 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
@@ -692,11 +692,11 @@
             sql.append("  and c.cardno like :cno ");
         }
         sql.append(" ) select a.custid,a.custname,a.cardno,a.custtypeid,a.deptcode,a.deptname,a.custtypename, ")
-        .append(" (select count(*) from a aa where aa.custid=a.custid  ) cnts,")
-                .append(" (select count(*) from a aa where aa.custid=a.custid and aa.state=1) cnt1,")
-                .append(" (select count(*) from a aa where aa.custid=a.custid and aa.state=2) cnt2,")
-                .append(" (select count(*) from a aa where aa.custid=a.custid and aa.state=3) cnt3,")
-                .append(" (select count(*) from a aa where aa.custid=a.custid and aa.state=0) cnt4")
+        .append(" (select count(*)/2.0 from a aa where aa.custid=a.custid  ) cnts,")
+                .append(" (select count(*)/2.0 from a aa where aa.custid=a.custid and aa.state=1) cnt1,")
+                .append(" (select count(*)/2.0 from a aa where aa.custid=a.custid and aa.state=2) cnt2,")
+                .append(" (select count(*)/2.0 from a aa where aa.custid=a.custid and aa.state=3) cnt3,")
+                .append(" (select count(*)/2.0 from a aa where aa.custid=a.custid and aa.state=0) cnt4")
         .append(" from a group by a.custname,a.cardno,a.custtypeid,a.deptcode,a.custid,a.deptname,a.custtypename  ")
          .append(" order by a.deptcode desc ,a.custtypeid desc ");
         Query query=entityManager.createNativeQuery(sql.toString(), AtteReport.class);
@@ -796,11 +796,11 @@
             sql.append("  and c.cardno like :cno ");
         }
         sql.append(" ) select a.custid,a.custname,a.cardno,a.custtypeid,a.deptcode,a.custtypename,a.deptname, ")
-                .append(" (select count(*) from a aa where aa.custid=a.custid  ) cnts,")
-                .append(" (select count(*) from a aa where aa.custid=a.custid and aa.state=1) cnt1,")
-                .append(" (select count(*) from a aa where aa.custid=a.custid and aa.state=2) cnt2,")
-                .append(" (select count(*) from a aa where aa.custid=a.custid and aa.state=3) cnt3,")
-                .append(" (select count(*) from a aa where aa.custid=a.custid and aa.state=0) cnt4")
+                .append(" (select count(*)/2.0 from a aa where aa.custid=a.custid  ) cnts,")
+                .append(" (select count(*)/2.0 from a aa where aa.custid=a.custid and aa.state=1) cnt1,")
+                .append(" (select count(*)/2.0 from a aa where aa.custid=a.custid and aa.state=2) cnt2,")
+                .append(" (select count(*)/2.0 from a aa where aa.custid=a.custid and aa.state=3) cnt3,")
+                .append(" (select count(*)/2.0 from a aa where aa.custid=a.custid and aa.state=0) cnt4")
                 .append(" from a group by a.custname,a.cardno,a.custtypeid,a.deptcode,a.custid,a.custtypename,a.deptname ")
                 .append(" order by a.deptcode desc ,a.custtypeid desc ");
         Query query=entityManager.createNativeQuery(sql.toString(), AtteReport.class);
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 8b22126..f186935 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/domain/TAtteDtl.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/domain/TAtteDtl.java
@@ -18,6 +18,7 @@
     private Integer oldstate;
     private String  operid;
     private String updatetime;
+    private Integer apflag; //1-上午 2-下午；
 
 
     @Id
@@ -103,4 +104,12 @@
         this.updatetime = updatetime;
     }
 
+    @Column(name = "apflag",length = 2)
+    public Integer getApflag() {
+        return apflag;
+    }
+
+    public void setApflag(Integer apflag) {
+        this.apflag = apflag;
+    }
 }
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 54d71c2..188c668 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
@@ -222,6 +222,14 @@
                     dtl.setStatus(1);
                     dtl.setTimeid(timeid);
                     dtl.setUpdatetime(DateUtil.getNow());
+                    TNcTime time=ncTimeDao.findByTimeId(timeid);
+                    String etime=time.getEtime().replace(":","")+"00";
+                    int diff=getDiffMin("130000",etime);
+                    if(diff>0){
+                        dtl.setApflag(2);
+                    }else{
+                        dtl.setApflag(1);
+                    }
                     atteClassDao.saveAtteDtl(dtl);
                 }
             }
@@ -334,18 +342,23 @@
         for(AtteDtl dtl:list){
           List<TAtteDtl> details=atteClassDao.getDetailList(dtl.getCustid(),attedate) ;
            if(details!=null){
-
+                    String refno="";
                    for(int i=0;i<details.size();i++){
                        TAtteDtl detail=details.get(i);
                        Integer nextid=null;
                        if((i==0 || i==2)&&details.size()==4){
                            nextid=details.get(i+1).getTimeid();//考离时间段
+                       }else if((i==1 || i==3)&&details.size()==4){
+                           nextid=details.get(i-1).getTimeid();
                        }
                        int state=getState(detail.getTimeid(),dtl.getAttetime(),nextid);
-                       if(detail.getState()==0){
-                           detail.setState(state);
-                           detail.setUpdatetime(DateUtil.getNow());
-                           atteClassDao.updateAtteDtl(detail);
+                       if(detail.getState()==0&&state!=0){
+                           if(!refno.equals(dtl.getRefno())){
+                               detail.setState(state);
+                               detail.setUpdatetime(DateUtil.getNow());
+                               atteClassDao.updateAtteDtl(detail);
+                               refno=dtl.getRefno();
+                           }
                        }else if(detail.getState()==2&&state==1){
                            detail.setState(state);
                            detail.setUpdatetime(DateUtil.getNow());
@@ -388,7 +401,13 @@
                  }
              }
         }else if(time.getTimetype()==2){ //考离
-            if(bmin<=0&&emin>=0){
+            //考到
+            TNcTime lasttime=ncTimeDao.findByTimeId(nextid);
+            String endtime=lasttime.getEtime().replace(":","")+"00";
+            d_min=getDiffMin(endtime,attetime);
+            if(d_min>0&&bmin>0){
+                flag=2;
+            }else if(bmin<=0&&emin>=0){
                 flag=1;
             }else {
                 flag=0;
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index e4741ab..54c03ed 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -247,9 +247,10 @@
 INSERT INTO "tb_businesspara" VALUES ('atte_min', '60');
 INSERT INTO "tb_businesspara" VALUES ('atte_emin', '60');
 
-create view v_atte_info as WITH a AS (
+create view v_atte_info as  WITH a AS (
   SELECT t.custid,
   t.attedate,
+  t.apflag,
   CASE
   WHEN (EXISTS ( SELECT d.atteno,
   d.custid,
@@ -262,7 +263,7 @@
   d.operid,
   d.updatetime
   FROM t_atte_dtl d
-  WHERE (((t.custid)::text = (d.custid)::text) AND ((t.attedate)::text = (d.attedate)::text) AND (d.state = 0)))) THEN 0
+  WHERE ((t.apflag = d.apflag) AND ((t.custid)::text = (d.custid)::text) AND ((t.attedate)::text = (d.attedate)::text) AND (d.state = 0)))) THEN 0
   WHEN (EXISTS ( SELECT d.atteno,
   d.custid,
   d.attedate,
@@ -274,7 +275,7 @@
   d.operid,
   d.updatetime
   FROM t_atte_dtl d
-  WHERE (((t.custid)::text = (d.custid)::text) AND ((t.attedate)::text = (d.attedate)::text) AND (d.state > 10)))) THEN 3
+  WHERE ((t.apflag = d.apflag) AND ((t.custid)::text = (d.custid)::text) AND ((t.attedate)::text = (d.attedate)::text) AND (d.state > 10)))) THEN 3
   WHEN (EXISTS ( SELECT d.atteno,
   d.custid,
   d.attedate,
@@ -286,11 +287,11 @@
   d.operid,
   d.updatetime
   FROM t_atte_dtl d
-  WHERE (((t.custid)::text = (d.custid)::text) AND ((t.attedate)::text = (d.attedate)::text) AND (d.state = 2)))) THEN 2
+  WHERE ((t.apflag = d.apflag) AND ((t.custid)::text = (d.custid)::text) AND ((t.attedate)::text = (d.attedate)::text) AND (d.state = 2)))) THEN 2
   ELSE 1
   END AS state
   FROM t_atte_dtl t
-  GROUP BY t.custid, t.attedate
+  GROUP BY t.custid, t.attedate, t.apflag
   ORDER BY t.attedate DESC
   )
 SELECT a.custid,
@@ -298,7 +299,8 @@
        a.state,
        c.custname,
        c.custtypeid,
-       c.deptcode
+       c.deptcode,
+       a.apflag
 FROM (a
   LEFT JOIN t_customer c ON (((a.custid)::text = (c.custid)::text)));
 
