근태 관리 목록 조회시 1번의 쿼리로 조회되게 변경

This commit is contained in:
2026-02-24 17:17:21 +09:00
parent befcd92f2b
commit 23f59a4894
3 changed files with 854 additions and 724 deletions

View File

@@ -12,7 +12,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Repository @Repository
public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport {
@Autowired @Autowired
private SqlSessionTemplate sqlSessionTemplate; private SqlSessionTemplate sqlSessionTemplate;
@@ -67,6 +67,21 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{
return getSqlSession().selectList(sqlId, paramMap); return getSqlSession().selectList(sqlId, paramMap);
} }
/**
* 근태관리 정보 - 날짜별,직원 근태 전체 조회(최적화용) (List)
*
* @param Map
* @return
* @throws DataAccessException
*/
public List<Map<String, Object>> selectListAttendanceAll(HashMap<String, Object> paramMap)
throws DataAccessException {
logger.debug("WebAttendanceSqlMapDAO selectListAttendanceAll START");
String sqlId = "WebAttendance.selectListAttendanceAll";
logger.debug("WebAttendanceSqlMapDAO selectListAttendanceAll END");
return getSqlSession().selectList(sqlId, paramMap);
}
/** /**
* 근태관리 정보 - 해당 날짜 등록여부 조회 (List) * 근태관리 정보 - 해당 날짜 등록여부 조회 (List)
* *

View File

@@ -76,6 +76,28 @@
ORDER BY MA.MEMBER_CODE ASC ORDER BY MA.MEMBER_CODE ASC
</select> </select>
<select id="selectListAttendanceAll" parameterType="hashmap" resultType="hashmap">
SELECT MA.MU_ATTENDANCE_ID AS "muAttendanceId"
,MA.MU_MEMBER_ID AS "muMemberId"
,MA.ATTENDANCE_TYPE AS "attendanceType"
,DATE_FORMAT(MA.START_DATE,'%Y-%m-%d') AS "startDate"
,DATE_FORMAT(MA.END_DATE,'%Y-%m-%d') AS "endDate"
,DATE_FORMAT(MA.ATTENDANCE_TIME, '%H:%i') AS "attendanceTime"
,DATE_FORMAT(MA.START_TIME, '%H:%i') AS "startTime"
,DATE_FORMAT(MA.END_TIME, '%H:%i') AS "endTime"
,MA.MU_VACATION_ID AS "muVacationId"
,IFNULL(MV.VACATION_NAME, '') AS "vacationName"
FROM MU_ATTENDANCE AS MA
LEFT JOIN MU_VACATION AS MV
ON MV.MU_VACATION_ID = MA.MU_VACATION_ID
AND MV.USE_YN = 'Y'
WHERE MA.USE_YN = 'Y'
AND MA.STATUS != 'D'
AND ((DATE_FORMAT(MA.START_DATE,'%Y-%m-%d') &lt;= #{attendanceSearchStartDate} AND DATE_FORMAT(MA.END_DATE,'%Y-%m-%d') &gt;= #{attendanceSearchStartDate})
OR (DATE_FORMAT(MA.START_DATE,'%Y-%m-%d') &lt;= #{attendanceSearchEndDate} AND DATE_FORMAT(MA.END_DATE,'%Y-%m-%d') &gt;= #{attendanceSearchEndDate})
OR (DATE_FORMAT(MA.START_DATE,'%Y-%m-%d') &gt; #{attendanceSearchStartDate} AND DATE_FORMAT(MA.END_DATE,'%Y-%m-%d') &lt; #{attendanceSearchEndDate}))
</select>
<select id="selectListAttendance" parameterType="hashmap" resultType="hashmap"> <select id="selectListAttendance" parameterType="hashmap" resultType="hashmap">
SELECT MAX(MU_ATTENDANCE_ID) AS "muAttendanceId" SELECT MAX(MU_ATTENDANCE_ID) AS "muAttendanceId"
,MA.MU_MEMBER_ID AS "muMemberId" ,MA.MU_MEMBER_ID AS "muMemberId"