From 45f2dfd2a5de05860c881416aa52fe20136b3a2b Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 10 Jul 2026 17:02:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(attendance):=20=E4=BF=AE=E5=A4=8D=E8=80=83?= =?UTF-8?q?=E5=8B=A4=E8=AE=B0=E5=BD=95=E4=B8=AD=E9=83=A8=E9=97=A8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E4=B8=8D=E5=87=86=E7=A1=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 WmsEmployeeInfoMapper 和 WmsEmployeeInfo 依赖 - 添加 wmsEmployeeInfoMapper 成员变量用于查询员工信息 - 从 wms_employee_info 表获取准确的部门信息,替代打卡机中的部门数据 - 使用员工姓名作为键构建姓名到部门的映射关系 - 当存在准确部门信息时优先使用数据库中的部门名称 - 保持原有逻辑作为备选方案以确保数据完整性 --- .../impl/AttendanceRecordsServiceImpl.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/klp-wms/src/main/java/com/klp/service/impl/AttendanceRecordsServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/AttendanceRecordsServiceImpl.java index 9d1f074f1..af9a5b4c9 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/AttendanceRecordsServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/AttendanceRecordsServiceImpl.java @@ -15,6 +15,8 @@ import com.klp.domain.bo.AttendanceRecordsBo; import com.klp.domain.vo.AttendanceRecordsVo; import com.klp.domain.AttendanceRecords; import com.klp.mapper.AttendanceRecordsMapper; +import com.klp.mapper.WmsEmployeeInfoMapper; +import com.klp.domain.WmsEmployeeInfo; import com.klp.service.IAttendanceRecordsService; import javax.servlet.http.HttpServletResponse; @@ -35,6 +37,7 @@ public class AttendanceRecordsServiceImpl implements IAttendanceRecordsService { private static final Logger log = LoggerFactory.getLogger(AttendanceRecordsServiceImpl.class); private final AttendanceRecordsMapper baseMapper; + private final WmsEmployeeInfoMapper wmsEmployeeInfoMapper; @Override public AttendanceRecordsVo queryById(Integer id) { @@ -134,6 +137,23 @@ public class AttendanceRecordsServiceImpl implements IAttendanceRecordsService { lqw.orderByAsc(AttendanceRecords::getPin).orderByAsc(AttendanceRecords::getChecktime); List records = baseMapper.selectList(lqw); + // 从 wms_employee_info 获取正确的部门(打卡机里的部门可能不准) + Set names = records.stream() + .map(AttendanceRecords::getEname) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toSet()); + final Map nameDeptMap = new HashMap<>(); + if (!names.isEmpty()) { + List empList = wmsEmployeeInfoMapper.selectList( + Wrappers.lambdaQuery() + .select(WmsEmployeeInfo::getName, WmsEmployeeInfo::getDept) + .in(WmsEmployeeInfo::getName, names) + ); + empList.stream() + .filter(e -> StringUtils.isNotBlank(e.getName()) && StringUtils.isNotBlank(e.getDept())) + .forEach(e -> nameDeptMap.put(e.getName(), e.getDept())); + } + // 3. 按员工分组,再按日期分组 // key: pin, value: 员工信息 + 按天分组的打卡记录 LinkedHashMap employeeMap = new LinkedHashMap<>(); @@ -145,7 +165,7 @@ public class AttendanceRecordsServiceImpl implements IAttendanceRecordsService { EmployeeAttendance e = new EmployeeAttendance(); e.pin = r.getPin(); e.ename = r.getEname(); - e.deptname = r.getDeptname(); + e.deptname = nameDeptMap.getOrDefault(r.getEname(), r.getDeptname()); e.dailyRecords = new TreeMap<>(); return e; });