diff --git a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/mapper/SurProjectAttendanceUserMapper.java b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/mapper/SurProjectAttendanceUserMapper.java index f1386a58..90c3e33d 100644 --- a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/mapper/SurProjectAttendanceUserMapper.java +++ b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/mapper/SurProjectAttendanceUserMapper.java @@ -82,4 +82,5 @@ public interface SurProjectAttendanceUserMapper public long countTodayAttendance(SurProjectAttendanceUser where); public List todayAttendance(SurProjectAttendanceUser where); + public List todayAttendanceData(List list); } diff --git a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/impl/SurProjectAttendanceUserServiceImpl.java b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/impl/SurProjectAttendanceUserServiceImpl.java index ebae10a7..db0655e9 100644 --- a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/impl/SurProjectAttendanceUserServiceImpl.java +++ b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/impl/SurProjectAttendanceUserServiceImpl.java @@ -1,5 +1,7 @@ package com.yanzhu.jh.project.service.impl; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; @@ -154,6 +156,30 @@ public class SurProjectAttendanceUserServiceImpl implements ISurProjectAttendanc where.setIndex(1); } where.setIndex((where.getIndex()-1)* where.getSize()); - return surProjectAttendanceUserMapper.todayAttendance(where); + List list= surProjectAttendanceUserMapper.todayAttendance(where); + List workerIds=new ArrayList<>(); + for(SurProjectAttendanceUser u: list){ + workerIds.add(u.getWorkerId()); + } + List datas=surProjectAttendanceUserMapper.todayAttendanceData(workerIds); + for (SurProjectAttendanceUser u:list) { + u.setInTime(findDate(datas,u,"E")); + u.setOutTime(findDate(datas,u,"L")); + } + return list; } + + private Date findDate(List datas, SurProjectAttendanceUser u, String type) { + for (SurProjectAttendanceUser user:datas) { + if(user.getWorkerId().equals(u.getWorkerId()) && user.getName().equals(type)){ + if(type.equals("L")){ + return user.getOutTime(); + }else{ + return user.getInTime(); + } + } + } + return null; + } + } diff --git a/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceDataMapper.xml b/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceDataMapper.xml index 5dd323ec..298250c1 100644 --- a/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceDataMapper.xml +++ b/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceDataMapper.xml @@ -190,7 +190,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select companyTypeId,count(1) id from ( ) x2 where id in ( select min(id) from ( ) x1 where date(attendance_time)=#{attendanceTime} @@ -206,7 +206,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and project_id=#{projectId} group by workerId ) - and companyTypeId in (1,2,3,8) group by companyTypeId + and companyTypeId in (1,2,3,4,5,6,8) group by companyTypeId + + select count(1) cnt from sur_project_attendance_user u, sur_project_attendance_cfg c,view_sur_project_attendance_group g where u.cfgid=c.id and u.state=0 and u.companyId=g.companyId + and u.workerid in( + SELECT workerid FROM sur_project_attendance_data WHERE DATE(attendance_time)=CURDATE() + ) and g.companyTypeId =1 @@ -324,13 +327,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select a.* , (select min(attendance_time) from sur_project_attendance_data b where b.workerId=a.workerId and date(b.attendance_time)=CURDATE() and b.attendance_type='e') inTime, (SELECT Max(attendance_time) FROM sur_project_attendance_data b WHERE b.workerId=a.workerId AND DATE(b.attendance_time)=CURDATE() AND b.attendance_type='l') outTime from ( select u.* from sur_project_attendance_user u, sur_project_attendance_cfg c,view_sur_project_attendance_group g where u.cfgid=c.id and u.state=0 and u.companyId=g.companyId + and u.workerid in( + SELECT workerid FROM sur_project_attendance_data WHERE DATE(attendance_time)=CURDATE() + ) + and g.companyTypeId in (1,6) @@ -354,4 +361,45 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by u.id limit #{index},#{size} ) a + + \ No newline at end of file