From 8ff888f270a27940d882bee8ab7439fad8926aec 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 | 43 +++++++++++-------- 3 files changed, 37 insertions(+), 19 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 7342b92a8..64022f645 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 61b8bc3ed..26672a2dc 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 @@ -108,4 +108,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 ec3e8c4ca..455a2efb9 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 @@ -11,15 +11,13 @@ 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: 考勤当前在场的人 @@ -36,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); } } @@ -89,7 +95,6 @@ public class WorkerAttendancePresenceServiceImpl extends ServiceImpl> getPresentWorkerIdListByRegion(Long regionId, String projectSn) { return workerAttendancePresenceMapper.getPresentWorkerIdListByRegion(regionId, projectSn);