车间
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.domain.OaAttendanceRecord;
|
||||||
import com.ruoyi.oa.mapper.OaAttendanceRecordMapper;
|
import com.ruoyi.oa.mapper.OaAttendanceRecordMapper;
|
||||||
import com.ruoyi.oa.service.IOaAttendanceRecordService;
|
import com.ruoyi.oa.service.IOaAttendanceRecordService;
|
||||||
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
|
import com.ruoyi.oa.domain.vo.SysOaAttendanceVo;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -150,51 +152,94 @@ public class OaAttendanceRecordServiceImpl implements IOaAttendanceRecordService
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param userIds
|
* @param userIds
|
||||||
* @param calcTime “yyyy-MM-dd”
|
* @param calcTime "yyyy-MM-dd"
|
||||||
* @param relationMonth “yyyy-MM-dd”
|
* @param relationMonth "yyyy-MM-dd"
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@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请假
|
// 首先查询合并好的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);
|
List<Long> projectIds = parseProjectIds(projectIdsString);
|
||||||
projectIds.add(0L);
|
projectIds.add(0L);
|
||||||
projectIds.add(1L);
|
projectIds.add(1L);
|
||||||
// 然后拿着每一个userId和projectId去签到表查询出勤 在传入的计算时间之前
|
// 然后拿着每一个userId和projectId去签到表查询出勤 在传入的计算时间之前
|
||||||
List<ProjectAttendanceVo> attendanceVoList = new ArrayList<>();
|
List<ProjectAttendanceVo> attendanceVoList = new ArrayList<>();
|
||||||
for (Long userId : userIds) {
|
for (Long userId : userIds) {
|
||||||
|
|
||||||
List<ProjectAttendance> projects = new ArrayList<>();
|
List<ProjectAttendance> projects = new ArrayList<>();
|
||||||
for (Long projectId : projectIds) {
|
for (Long projectId : projectIds) {
|
||||||
// 老规矩如果calcTime和relationMonth不在一个月则查询relationMonth全月的 如果在一个月则查询从一号到calcTime的出勤次数 及day_length>0或hour>0或project_id=0
|
// 老规矩如果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 projectAttendance = new ProjectAttendance();
|
||||||
projectAttendance.setProjectId(projectId);
|
projectAttendance.setProjectId(projectId);
|
||||||
projectAttendance.setWorkDays(workDays);
|
projectAttendance.setWorkDays(workDays);
|
||||||
if (projectId.equals(0L)) {
|
if (projectId.equals(0L)) {
|
||||||
projectAttendance.setProjectName("出差");
|
projectAttendance.setProjectName("出差");
|
||||||
}else if (projectId.equals(1L)) {
|
} else if (projectId.equals(1L)) {
|
||||||
projectAttendance.setProjectName("请假");
|
projectAttendance.setProjectName("请假");
|
||||||
}else{
|
} else {
|
||||||
SysOaProjectVo sysOaProjectVo = projectMapper.selectVoById(projectId);
|
SysOaProjectVo sysOaProjectVo = projectMapper.selectVoById(projectId);
|
||||||
projectAttendance.setProjectName(sysOaProjectVo.getProjectName());
|
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;
|
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) {
|
public static List<Long> parseProjectIds(List<String> projectIdsString) {
|
||||||
// 使用 HashSet 来确保去重
|
// 使用 HashSet 来确保去重
|
||||||
|
|||||||
@@ -309,7 +309,7 @@
|
|||||||
SELECT
|
SELECT
|
||||||
COALESCE(SUM(CASE
|
COALESCE(SUM(CASE
|
||||||
WHEN (day_length > 0 OR hour > 0)
|
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
|
THEN 1 ELSE 0 END), 0) AS work_days
|
||||||
FROM sys_oa_attendance oas
|
FROM sys_oa_attendance oas
|
||||||
WHERE oas.user_id = #{userId}
|
WHERE oas.user_id = #{userId}
|
||||||
|
|||||||
Reference in New Issue
Block a user