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