考勤
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)));