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; });