车间
This commit is contained in:
@@ -21,6 +21,8 @@ import com.ruoyi.oa.domain.vo.OaAttendanceRecordVo;
|
||||
import com.ruoyi.oa.domain.OaAttendanceRecord;
|
||||
import com.ruoyi.oa.mapper.OaAttendanceRecordMapper;
|
||||
import com.ruoyi.oa.service.IOaAttendanceRecordService;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.oa.domain.vo.SysOaAttendanceVo;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -150,51 +152,94 @@ public class OaAttendanceRecordServiceImpl implements IOaAttendanceRecordService
|
||||
/**
|
||||
*
|
||||
* @param userIds
|
||||
* @param calcTime “yyyy-MM-dd”
|
||||
* @param relationMonth “yyyy-MM-dd”
|
||||
* @param calcTime "yyyy-MM-dd"
|
||||
* @param relationMonth "yyyy-MM-dd"
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<ProjectAttendanceVo> getAttendance(List<Long> userIds, String calcTime,String relationMonth) {
|
||||
public List<ProjectAttendanceVo> getAttendance(List<Long> userIds, String calcTime, String relationMonth) {
|
||||
// 首先查询合并好的projectIds 然后在查到的这个Long类型的列表后加入 0 1, 分别代表0出差1请假
|
||||
List<String> projectIdsString = baseMapper.selectProjectIds(userIds,calcTime,relationMonth);
|
||||
List<String> projectIdsString = baseMapper.selectProjectIds(userIds, calcTime, relationMonth);
|
||||
List<Long> projectIds = parseProjectIds(projectIdsString);
|
||||
projectIds.add(0L);
|
||||
projectIds.add(1L);
|
||||
// 然后拿着每一个userId和projectId去签到表查询出勤 在传入的计算时间之前
|
||||
List<ProjectAttendanceVo> attendanceVoList = new ArrayList<>();
|
||||
for (Long userId : userIds) {
|
||||
|
||||
List<ProjectAttendance> projects = new ArrayList<>();
|
||||
for (Long projectId : projectIds) {
|
||||
// 老规矩如果calcTime和relationMonth不在一个月则查询relationMonth全月的 如果在一个月则查询从一号到calcTime的出勤次数 及day_length>0或hour>0或project_id=0
|
||||
Long workDays = attendanceMapper.getWorkDaysByUserIdAndProjectId(userId,projectId,calcTime,relationMonth);
|
||||
Long workDays = attendanceMapper.getWorkDaysByUserIdAndProjectId(userId, projectId, calcTime, relationMonth);
|
||||
|
||||
ProjectAttendance projectAttendance = new ProjectAttendance();
|
||||
projectAttendance.setProjectId(projectId);
|
||||
projectAttendance.setWorkDays(workDays);
|
||||
if (projectId.equals(0L)) {
|
||||
projectAttendance.setProjectName("出差");
|
||||
}else if (projectId.equals(1L)) {
|
||||
} else if (projectId.equals(1L)) {
|
||||
projectAttendance.setProjectName("请假");
|
||||
}else{
|
||||
} else {
|
||||
SysOaProjectVo sysOaProjectVo = projectMapper.selectVoById(projectId);
|
||||
projectAttendance.setProjectName(sysOaProjectVo.getProjectName());
|
||||
}
|
||||
|
||||
projects.add(projectAttendance);
|
||||
// 只有当workDays > 0时才添加到列表中
|
||||
if (workDays > 0) {
|
||||
projects.add(projectAttendance);
|
||||
}
|
||||
}
|
||||
|
||||
// 如果有任何记录,添加到结果列表
|
||||
if (!projects.isEmpty()) {
|
||||
ProjectAttendanceVo projectAttendanceVo = new ProjectAttendanceVo();
|
||||
projectAttendanceVo.setProjects(projects);
|
||||
projectAttendanceVo.setRelationMonth(relationMonth);
|
||||
projectAttendanceVo.setNickName(userMapper.selectVoById(userId).getNickName());
|
||||
attendanceVoList.add(projectAttendanceVo);
|
||||
}
|
||||
ProjectAttendanceVo projectAttendanceVo = new ProjectAttendanceVo();
|
||||
projectAttendanceVo.setProjects(projects);
|
||||
projectAttendanceVo.setRelationMonth(relationMonth);
|
||||
projectAttendanceVo.setNickName(userMapper.selectVoById(userId).getNickName());
|
||||
attendanceVoList.add(projectAttendanceVo);
|
||||
}
|
||||
//
|
||||
return attendanceVoList;
|
||||
}
|
||||
|
||||
|
||||
//TODO 原本代码逻辑
|
||||
// @Override
|
||||
// public List<ProjectAttendanceVo> getAttendance(List<Long> userIds, String calcTime,String relationMonth) {
|
||||
// // 首先查询合并好的projectIds 然后在查到的这个Long类型的列表后加入 0 1, 分别代表0出差1请假
|
||||
// List<String> projectIdsString = baseMapper.selectProjectIds(userIds,calcTime,relationMonth);
|
||||
// List<Long> projectIds = parseProjectIds(projectIdsString);
|
||||
// projectIds.add(0L);
|
||||
// projectIds.add(1L);
|
||||
// // 然后拿着每一个userId和projectId去签到表查询出勤 在传入的计算时间之前
|
||||
// List<ProjectAttendanceVo> attendanceVoList = new ArrayList<>();
|
||||
// for (Long userId : userIds) {
|
||||
//
|
||||
// List<ProjectAttendance> projects = new ArrayList<>();
|
||||
// for (Long projectId : projectIds) {
|
||||
// // 老规矩如果calcTime和relationMonth不在一个月则查询relationMonth全月的 如果在一个月则查询从一号到calcTime的出勤次数 及day_length>0或hour>0或project_id=0
|
||||
// Long workDays = attendanceMapper.getWorkDaysByUserIdAndProjectId(userId,projectId,calcTime,relationMonth);
|
||||
//
|
||||
// ProjectAttendance projectAttendance = new ProjectAttendance();
|
||||
// projectAttendance.setProjectId(projectId);
|
||||
// projectAttendance.setWorkDays(workDays);
|
||||
// if (projectId.equals(0L)) {
|
||||
// projectAttendance.setProjectName("出差");
|
||||
// }else if (projectId.equals(1L)) {
|
||||
// projectAttendance.setProjectName("请假");
|
||||
// }else{
|
||||
// SysOaProjectVo sysOaProjectVo = projectMapper.selectVoById(projectId);
|
||||
// projectAttendance.setProjectName(sysOaProjectVo.getProjectName());
|
||||
// }
|
||||
//
|
||||
// projects.add(projectAttendance);
|
||||
// }
|
||||
// ProjectAttendanceVo projectAttendanceVo = new ProjectAttendanceVo();
|
||||
// projectAttendanceVo.setProjects(projects);
|
||||
// projectAttendanceVo.setRelationMonth(relationMonth);
|
||||
// projectAttendanceVo.setNickName(userMapper.selectVoById(userId).getNickName());
|
||||
// attendanceVoList.add(projectAttendanceVo);
|
||||
// }
|
||||
// //
|
||||
// return attendanceVoList;
|
||||
// }
|
||||
|
||||
public static List<Long> parseProjectIds(List<String> projectIdsString) {
|
||||
// 使用 HashSet 来确保去重
|
||||
|
||||
@@ -309,7 +309,7 @@
|
||||
SELECT
|
||||
COALESCE(SUM(CASE
|
||||
WHEN (day_length > 0 OR hour > 0)
|
||||
OR project_id = 0
|
||||
OR project_id IN (0, 1)
|
||||
THEN 1 ELSE 0 END), 0) AS work_days
|
||||
FROM sys_oa_attendance oas
|
||||
WHERE oas.user_id = #{userId}
|
||||
|
||||
Reference in New Issue
Block a user