From b7eb6e87b4d88e5a419b64e3e3d0e5dc1be0f48f Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期五, 06 三月 2026 16:52:36 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New
---
src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java | 39 ++++++++++++++++++++++++++-------------
1 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
index b323a22..9d5e688 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.staff.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -14,10 +15,12 @@
import com.ruoyi.staff.dto.PersonalAttendanceRecordsDto;
import com.ruoyi.staff.dto.StaffOnJobDto;
import com.ruoyi.staff.mapper.PersonalAttendanceLocationConfigMapper;
+import com.ruoyi.staff.mapper.PersonalShiftMapper;
import com.ruoyi.staff.mapper.StaffOnJobMapper;
import com.ruoyi.staff.pojo.PersonalAttendanceLocationConfig;
import com.ruoyi.staff.pojo.PersonalAttendanceRecords;
import com.ruoyi.staff.mapper.PersonalAttendanceRecordsMapper;
+import com.ruoyi.staff.pojo.PersonalShift;
import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.staff.service.PersonalAttendanceRecordsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -63,6 +66,9 @@
@Autowired
private SysDeptMapper sysDeptMapper;
+ @Autowired
+ private PersonalShiftMapper personalShiftMapper;
+
@Override
public int add(PersonalAttendanceRecordsDto personalAttendanceRecordsDto) {
// 褰撳墠鏃堕棿
@@ -76,20 +82,24 @@
if (staffOnJob == null) {
throw new BaseException("褰撳墠鐢ㄦ埛娌℃湁瀵瑰簲鐨勫憳宸ヤ俊鎭�");
}
- /*鍒ゆ柇鎵撳崱浣嶇疆鏄惁鍦ㄨ鍒欒寖鍥村唴*/
- List<PersonalAttendanceLocationConfig> personalAttendanceLocationConfigs = personalAttendanceLocationConfigMapper.selectList(Wrappers.<PersonalAttendanceLocationConfig>lambdaQuery()
- .eq(PersonalAttendanceLocationConfig::getSysDeptId, staffOnJob.getSysDeptId())
- .orderByDesc(PersonalAttendanceLocationConfig::getId));
- if (personalAttendanceLocationConfigs == null || personalAttendanceLocationConfigs.isEmpty()) {
- throw new BaseException("褰撳墠閮ㄩ棬娌℃湁璁剧疆鎵撳崱瑙勫垯");
+ //鍒ゆ柇鍒ゆ柇鍛樺伐褰撳ぉ鏄惁鏈夋帓鐝暟鎹�
+ List<PersonalShift> personalShifts = personalShiftMapper.selectList(Wrappers.<PersonalShift>lambdaQuery()
+ .eq(PersonalShift::getStaffOnJobId, staffOnJob.getId())
+ .eq(PersonalShift::getWorkTime, currentDate.atStartOfDay())
+ .isNotNull(PersonalShift::getPersonalAttendanceLocationConfigId));
+ if (CollectionUtil.isEmpty(personalShifts)){
+ throw new BaseException("褰撳墠鐢ㄦ埛褰撳ぉ娌℃湁鎺掔彮鏁版嵁");
}
+ /*鍒ゆ柇鎵撳崱浣嶇疆鏄惁鍦ㄨ鍒欒寖鍥村唴*/
+ PersonalShift personalShift = personalShifts.get(0);
+
+ PersonalAttendanceLocationConfig locationConfig = personalAttendanceLocationConfigMapper.selectById(personalShift.getPersonalAttendanceLocationConfigId());
Double punchLongitude = personalAttendanceRecordsDto.getLongitude(); //鎵撳崱鐨勭粡搴�
Double punchLatitude = personalAttendanceRecordsDto.getLatitude(); // 鎵撳崱鐨勭含搴�
if (punchLongitude == null || punchLatitude == null) {
throw new BaseException("鎵撳崱澶辫触锛氭湭鑾峰彇鍒版偍鐨勪綅缃俊鎭紝璇峰紑鍚畾浣嶆潈闄�");
}
//璁$畻鎵撳崱浣嶇疆涓庤�冨嫟鐐圭殑璺濈
- PersonalAttendanceLocationConfig locationConfig = personalAttendanceLocationConfigs.get(0);//鑾峰彇鏈�鏂扮殑涓�鏉℃暟鎹�
double allowedRadius = locationConfig.getRadius(); // 鍏佽鐨勮寖鍥达紙绫筹級
double actualDistance = LocationUtils.calculateDistance(
punchLatitude, punchLongitude, // 鍛樺伐鎵撳崱鐨勭粡绾害
@@ -231,12 +241,15 @@
SysDept dept = sysDeptMapper.selectDeptById(staffOnJob.getSysDeptId());
resultDto.setDeptName(dept != null ? dept.getDeptName() : null);
//鑾峰彇璇ュ憳宸ュ搴旂殑鎵撳崱瑙勫垯
- List<PersonalAttendanceLocationConfig> personalAttendanceLocationConfigs = personalAttendanceLocationConfigMapper.selectList(Wrappers.<PersonalAttendanceLocationConfig>lambdaQuery()
- .eq(PersonalAttendanceLocationConfig::getSysDeptId, staffOnJob.getSysDeptId())
- .orderByDesc(PersonalAttendanceLocationConfig::getId));
- if (personalAttendanceLocationConfigs.size()>0){
- resultDto.setStartAt(personalAttendanceLocationConfigs.get(0).getStartAt());
- resultDto.setEndAt(personalAttendanceLocationConfigs.get(0).getEndAt());
+ List<PersonalShift> personalShifts = personalShiftMapper.selectList(Wrappers.<PersonalShift>lambdaQuery()
+ .eq(PersonalShift::getStaffOnJobId, staffOnJob.getId())
+ .eq(PersonalShift::getWorkTime, currentDate.atStartOfDay())
+ .isNotNull(PersonalShift::getPersonalAttendanceLocationConfigId));
+ if (CollectionUtil.isNotEmpty(personalShifts)){
+ PersonalAttendanceLocationConfig personalAttendanceLocationConfig = personalAttendanceLocationConfigMapper.selectById(personalShifts.get(0).getPersonalAttendanceLocationConfigId());
+ resultDto.setStartAt(personalAttendanceLocationConfig.getStartAt());
+ resultDto.setEndAt(personalAttendanceLocationConfig.getEndAt());
+ resultDto.setShift(personalAttendanceLocationConfig.getShift());
}
return resultDto;
}
--
Gitblit v1.9.3