From a2e184116d6b625d4e2ac9459600622b01fbe5a7 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Wed, 23 Jul 2025 18:06:33 +0800 Subject: [PATCH] =?UTF-8?q?icc=E7=9A=84=E5=8A=B3=E5=8A=A1=E4=BA=BA?= =?UTF-8?q?=E5=91=98=EF=BC=8C=E8=80=83=E5=8B=A4=E6=9C=80=E5=90=8E=E6=98=AF?= =?UTF-8?q?=E5=87=BA=E5=9C=BA=E5=B0=B1=E5=88=A0=E9=99=A4=E5=9C=A8=E5=9C=BA?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=EF=BC=8C=E8=80=83=E5=8B=A4=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E6=98=AF=E5=85=A5=E5=9C=BA=E5=B0=B1=E6=9B=B4=E6=96=B0=E5=9C=A8?= =?UTF-8?q?=E5=9C=BA=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WorkerAttendancePresenceMapper.java | 6 +++ .../xml/WorkerAttendancePresenceMapper.xml | 7 ++++ .../WorkerAttendancePresenceServiceImpl.java | 42 +++++++++++-------- 3 files changed, 38 insertions(+), 17 deletions(-) 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); } }