diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerAttendancePresenceMapper.java b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerAttendancePresenceMapper.java index 1f83b5562..c94d42e5d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerAttendancePresenceMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerAttendancePresenceMapper.java @@ -52,4 +52,10 @@ public interface WorkerAttendancePresenceMapper extends BaseMapper queryPresentTrend(Map map); + + /** + * 插入如果记录存在则更新时间,不存在则插入 + * @param workerAttendancePresence + */ + void insertOrUpdate(WorkerAttendancePresence workerAttendancePresence); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendancePresenceMapper.xml b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendancePresenceMapper.xml index c601af301..ba0dcfd47 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendancePresenceMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerAttendancePresenceMapper.xml @@ -100,4 +100,11 @@ ) t1 GROUP BY t1.daytime + + + INSERT INTO worker_attendance_presence (id, person_sn, create_time, project_sn) + VALUES (#{id}, #{personSn}, #{createTime}, #{projectSn}) + ON DUPLICATE KEY UPDATE + create_time = VALUES(create_time) + diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendancePresenceServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendancePresenceServiceImpl.java index cf630b8ae..5de974a7e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendancePresenceServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendancePresenceServiceImpl.java @@ -1,5 +1,6 @@ package com.zhgd.xmgl.modules.worker.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -9,15 +10,14 @@ import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance; import com.zhgd.xmgl.modules.worker.entity.WorkerAttendancePresence; import com.zhgd.xmgl.modules.worker.mapper.WorkerAttendancePresenceMapper; import com.zhgd.xmgl.modules.worker.service.IWorkerAttendancePresenceService; +import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService; import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @Description: 考勤当前在场的人 @@ -34,24 +34,32 @@ public class WorkerAttendancePresenceServiceImpl extends ServiceImpl() + .eq(WorkerAttendance::getPersonSn, workerAttendance.getPersonSn()) + .orderByDesc(WorkerAttendance::getCreateTime) + .last("limit 1") + ); + if (newestRecord == null || DateUtil.compare(DateUtil.parseDateTime(newestRecord.getCreateTime()), DateUtil.parseDateTime(workerAttendance.getCreateTime())) < 0) { + newestRecord = workerAttendance; + } + //考勤最后是出场就删除在场记录 + //考勤最后是入场就更新在场时间 + if (Objects.equals(newestRecord.getPassType(), 2)) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.lambda().eq(WorkerAttendancePresence::getPersonSn, workerAttendance.getPersonSn()) - .eq(WorkerAttendancePresence::getProjectSn, workerAttendance.getProjectSn()); + queryWrapper.lambda().eq(WorkerAttendancePresence::getPersonSn, workerAttendance.getPersonSn()); workerAttendancePresenceMapper.delete(queryWrapper); - if (workerAttendance.getPassType() == 1) { - WorkerAttendancePresence workerAttendancePresence = new WorkerAttendancePresence(); - workerAttendancePresence.setProjectSn(workerAttendance.getProjectSn()); - workerAttendancePresence.setPersonSn(workerAttendance.getPersonSn()); - workerAttendancePresence.setCreateTime(workerAttendance.getCreateTime()); - workerAttendancePresenceMapper.insert(workerAttendancePresence); - } + } else { + WorkerAttendancePresence workerAttendancePresence = new WorkerAttendancePresence(); + workerAttendancePresence.setProjectSn(workerAttendance.getProjectSn()); + workerAttendancePresence.setPersonSn(workerAttendance.getPersonSn()); + workerAttendancePresence.setCreateTime(newestRecord.getCreateTime()); + workerAttendancePresenceMapper.insertOrUpdate(workerAttendancePresence); } }