From 23f59a4894070e0dea6b6190405c1af1a715978c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=A4=80=EC=8B=9D=28PJS=29?= Date: Tue, 24 Feb 2026 17:17:21 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B7=BC=ED=83=9C=20=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=EC=8B=9C=201=EB=B2=88?= =?UTF-8?q?=EC=9D=98=20=EC=BF=BC=EB=A6=AC=EB=A1=9C=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=EB=90=98=EA=B2=8C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../webattendance/WebAttendanceSqlMapDAO.java | 53 +- .../impl/WebAttendanceServiceImpl.java | 1503 +++++++++-------- .../resources/mappers/WebAttendanceSqlMap.xml | 22 + 3 files changed, 854 insertions(+), 724 deletions(-) diff --git a/src/main/java/com/madeu/dao/web/webattendance/WebAttendanceSqlMapDAO.java b/src/main/java/com/madeu/dao/web/webattendance/WebAttendanceSqlMapDAO.java index 6f57705..8d8f182 100644 --- a/src/main/java/com/madeu/dao/web/webattendance/WebAttendanceSqlMapDAO.java +++ b/src/main/java/com/madeu/dao/web/webattendance/WebAttendanceSqlMapDAO.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.Map; @Repository -public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ +public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport { @Autowired private SqlSessionTemplate sqlSessionTemplate; @@ -21,13 +21,13 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ void init() { setSqlSessionTemplate(sqlSessionTemplate); } - + /** * 근태관리 정보 - 조회날짜 조회 (List) * * @param Map * @return - * @throws DataAccessException + * @throws DataAccessException */ public List> selectListAttendanceDate(HashMap paramMap) throws DataAccessException { @@ -36,13 +36,13 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ logger.debug("WebAttendanceSqlMapDAO selectListAttendanceDate END"); return getSqlSession().selectList(sqlId, paramMap); } - + /** * 근태관리 정보 - 직원 조회 (List) * * @param Map * @return - * @throws DataAccessException + * @throws DataAccessException */ public List> selectListAttendanceMember(HashMap paramMap) throws DataAccessException { @@ -51,13 +51,13 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ logger.debug("WebAttendanceSqlMapDAO selectListAttendanceMember END"); return getSqlSession().selectList(sqlId, paramMap); } - + /** * 근태관리 정보 - 날짜별,직원 근태 조회 (List) * * @param Map * @return - * @throws DataAccessException + * @throws DataAccessException */ public List> selectListAttendance(HashMap paramMap) throws DataAccessException { @@ -66,13 +66,28 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ logger.debug("WebAttendanceSqlMapDAO selectListAttendance END"); return getSqlSession().selectList(sqlId, paramMap); } - + + /** + * 근태관리 정보 - 날짜별,직원 근태 전체 조회(최적화용) (List) + * + * @param Map + * @return + * @throws DataAccessException + */ + public List> selectListAttendanceAll(HashMap paramMap) + throws DataAccessException { + logger.debug("WebAttendanceSqlMapDAO selectListAttendanceAll START"); + String sqlId = "WebAttendance.selectListAttendanceAll"; + logger.debug("WebAttendanceSqlMapDAO selectListAttendanceAll END"); + return getSqlSession().selectList(sqlId, paramMap); + } + /** * 근태관리 정보 - 해당 날짜 등록여부 조회 (List) * * @param Map * @return - * @throws DataAccessException + * @throws DataAccessException */ public List> selectAttendanceDate(HashMap paramMap) throws DataAccessException { @@ -81,13 +96,13 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ logger.debug("WebAttendanceSqlMapDAO selectAttendanceDate END"); return getSqlSession().selectList(sqlId, paramMap); } - + /** * 근태관리 상세 정보 조회 (출/퇴근 조회) * * @param Map * @return - * @throws DataAccessException + * @throws DataAccessException */ public List> selectAttendanceCommute(HashMap paramMap) throws DataAccessException { @@ -96,13 +111,13 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ logger.debug("WebAttendanceSqlMapDAO selectAttendanceCommute END"); return getSqlSession().selectList(sqlId, paramMap); } - + /** * 근태관리 상세 정보 조회 (연차 조회) * * @param Map * @return - * @throws DataAccessException + * @throws DataAccessException */ public List> selectAttendanceVacation(HashMap paramMap) throws DataAccessException { @@ -111,13 +126,13 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ logger.debug("WebAttendanceSqlMapDAO selectAttendanceVacation END"); return getSqlSession().selectList(sqlId, paramMap); } - + /** * 금일 근무현황 정보 조회 (List) * * @param Map * @return - * @throws DataAccessException + * @throws DataAccessException */ public List> selectListTodayAttendance(HashMap paramMap) throws DataAccessException { @@ -126,7 +141,7 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ logger.debug("WebAttendanceSqlMapDAO selectListTodayAttendance END"); return getSqlSession().selectList(sqlId, paramMap); } - + /** * 근태관리 정보 등록 * @@ -141,7 +156,7 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ logger.debug("WebAttendanceSqlMapDAO insertAttendance END"); return getSqlSession().insert(sqlId, paramMap); } - + /** * 근태관리 정보 수정 (출/퇴근) * @@ -156,7 +171,7 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ logger.debug("WebAttendanceSqlMapDAO updateAttendanceCommute END"); return getSqlSession().insert(sqlId, paramMap); } - + /** * 근태관리 정보 수정 (연차) * @@ -171,7 +186,7 @@ public class WebAttendanceSqlMapDAO extends SqlSessionDaoSupport{ logger.debug("WebAttendanceSqlMapDAO updateAttendanceVacation END"); return getSqlSession().insert(sqlId, paramMap); } - + /** * 근태관리 정보 취소 (연차) * diff --git a/src/main/java/com/madeu/service/web/webattendance/impl/WebAttendanceServiceImpl.java b/src/main/java/com/madeu/service/web/webattendance/impl/WebAttendanceServiceImpl.java index adf223a..df4c563 100644 --- a/src/main/java/com/madeu/service/web/webattendance/impl/WebAttendanceServiceImpl.java +++ b/src/main/java/com/madeu/service/web/webattendance/impl/WebAttendanceServiceImpl.java @@ -30,25 +30,25 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @Service("WebAttendanceService") public class WebAttendanceServiceImpl implements WebAttendanceService { - + @Autowired private WebAttendanceSqlMapDAO webAttendanceSqlMapDAO; - + @Autowired private WebMemberSqlMapDAO webMemberSqlMapDAO; - + @Autowired private WebAuthMenuRelationSqlMapDAO webAuthMenuRelationSqlMapDAO; - + @Autowired private WebVacationManagementSqlMapDAO webVacationManagementSqlMapDAO; - + @Autowired private WebVacationSqlMapDAO webVacationSqlMapDAO; @Autowired private WebHospitalSqlMapDAO webHospitalSqlMapDAO; - + /** * 근태관리 리스트 화면으로 이동. * @@ -64,62 +64,60 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { HashMap map = new HashMap(); - log.debug("loginMemberId :"+paramMap.get("loginMemberId")); - - log.debug("menuClass :"+paramMap.get("menuClass")); - - try{ - boolean check = true; - - String menuClass = String.valueOf(paramMap.get("menuClass")); - + log.debug("loginMemberId :" + paramMap.get("loginMemberId")); + + log.debug("menuClass :" + paramMap.get("menuClass")); + + try { + boolean check = true; + + String menuClass = String.valueOf(paramMap.get("menuClass")); + // 정렬 - if(true != ValidationCheckUtil.emptyCheck(menuClass)){ + if (true != ValidationCheckUtil.emptyCheck(menuClass)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","메뉴 정보가 없습니다."); + map.put("msgDesc", "메뉴 정보가 없습니다."); } - - if(true == check){ + + if (true == check) { // 사용자 확인 List> userListMap = webMemberSqlMapDAO.checkMember(paramMap); int userListMapSize = userListMap.size(); - - if(1==userListMapSize){ + + if (1 == userListMapSize) { paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); } } - - if(true == check){ + + if (true == check) { // 권한 조회 HashMap authCheckParamMap = new HashMap(); - authCheckParamMap.put("menuClass",paramMap.get("menuClass")); - authCheckParamMap.put("muAuthId",paramMap.get("menuClassAuthId")); - List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); + authCheckParamMap.put("menuClass", paramMap.get("menuClass")); + authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); + List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO + .selectAuthMenuRelation(authCheckParamMap); int authMenuRelationlistMapSize = authMenuRelationlistMap.size(); - - if(1==authMenuRelationlistMapSize){ + + if (1 == authMenuRelationlistMapSize) { map.put("msgCode", Constants.OK); - map.put("success","true"); - + map.put("success", "true"); + map.put("selectUseYn", authMenuRelationlistMap.get(0).get("selectUseYn")); map.put("insertUseYn", authMenuRelationlistMap.get(0).get("insertUseYn")); map.put("updateUseYn", authMenuRelationlistMap.get(0).get("updateUseYn")); map.put("deleteUseYn", authMenuRelationlistMap.get(0).get("deleteUseYn")); map.put("downloadUseYn", authMenuRelationlistMap.get(0).get("downloadUseYn")); - } - else { + } else { map.put("msgCode", Constants.FAIL); map.put("msgDesc", "권한 정보가 없습니다."); } } - } - catch(Exception e){ + } catch (Exception e) { e.printStackTrace(); throw e; } @@ -127,7 +125,7 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { log.debug("WebAttendanceServiceImpl selectListAttendanceIntro END"); return map; } - + /** * 근태관리 리스트 조회 * @@ -143,93 +141,108 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { HashMap map = new HashMap(); - log.debug("loginMemberId :"+paramMap.get("loginMemberId")); - - log.debug("menuClass :"+paramMap.get("menuClass")); - - log.debug("attendanceSearchKeywordParam :"+paramMap.get("attendanceSearchKeywordParam")); - log.debug("attendanceSort :"+paramMap.get("attendanceSort")); - log.debug("attendanceDir :"+paramMap.get("attendanceDir")); - log.debug("attendanceStart :"+paramMap.get("attendanceStart")); - log.debug("attendanceLimit :"+paramMap.get("attendanceLimit")); - - log.debug("selectListAttendance :"+paramMap.get("selectListAttendance")); - log.debug("attendanceSearchGroupId :"+paramMap.get("attendanceSearchGroupId")); + log.debug("loginMemberId :" + paramMap.get("loginMemberId")); - try{ - boolean check = true; - - if(true == check){ + log.debug("menuClass :" + paramMap.get("menuClass")); + + log.debug("attendanceSearchKeywordParam :" + paramMap.get("attendanceSearchKeywordParam")); + log.debug("attendanceSort :" + paramMap.get("attendanceSort")); + log.debug("attendanceDir :" + paramMap.get("attendanceDir")); + log.debug("attendanceStart :" + paramMap.get("attendanceStart")); + log.debug("attendanceLimit :" + paramMap.get("attendanceLimit")); + + log.debug("selectListAttendance :" + paramMap.get("selectListAttendance")); + log.debug("attendanceSearchGroupId :" + paramMap.get("attendanceSearchGroupId")); + + try { + boolean check = true; + + if (true == check) { // 사용자 확인 List> userListMap = webMemberSqlMapDAO.checkMember(paramMap); int userListMapSize = userListMap.size(); - - if(1==userListMapSize){ + + if (1 == userListMapSize) { paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); } } - if(true == check){ + if (true == check) { // 권한 조회 HashMap authCheckParamMap = new HashMap(); - authCheckParamMap.put("menuClass",paramMap.get("menuClass")); - authCheckParamMap.put("muAuthId",paramMap.get("menuClassAuthId")); - List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); + authCheckParamMap.put("menuClass", paramMap.get("menuClass")); + authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); + List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO + .selectAuthMenuRelation(authCheckParamMap); - if(1==authMenuRelationlistMap.size()){ + if (1 == authMenuRelationlistMap.size()) { - if(("Y").equals(authMenuRelationlistMap.get(0).get("selectUseYn"))) { + if (("Y").equals(authMenuRelationlistMap.get(0).get("selectUseYn"))) { - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "조회 권한 정보가 없습니다."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "권한 정보가 없습니다."); } } - if(true == check){ + if (true == check) { List> listMap = new ArrayList>(); - + // 직원 조회 List> memberListMap = webAttendanceSqlMapDAO.selectListAttendanceMember(paramMap); - + // 날짜 조회 List> dateListMap = webAttendanceSqlMapDAO.selectListAttendanceDate(paramMap); - + + // N+1 문제 해결을 위한 월간 전체 근태 내역 1회 조회 후 멤버별 인메모리 매핑 + List> allAttendanceList = webAttendanceSqlMapDAO.selectListAttendanceAll(paramMap); + Map>> attendanceByMember = new HashMap>>(); + if (allAttendanceList != null) { + for (Map record : allAttendanceList) { + String memberId = String.valueOf(record.get("muMemberId")); + if (!attendanceByMember.containsKey(memberId)) { + attendanceByMember.put(memberId, new ArrayList>()); + } + attendanceByMember.get(memberId).add(record); + } + } + for (int j = 0; j < memberListMap.size(); j++) { String muMemberId = String.valueOf(memberListMap.get(j).get("muMemberId")); String memberName = String.valueOf(memberListMap.get(j).get("memberName")); - String muGroupId = String.valueOf(memberListMap.get(j).get("muGroupId")); - String muDutyId = String.valueOf(memberListMap.get(j).get("muDutyId")); + String muGroupId = String.valueOf(memberListMap.get(j).get("muGroupId")); + String muDutyId = String.valueOf(memberListMap.get(j).get("muDutyId")); paramMap.put("muMemberId", muMemberId); paramMap.put("muGroupId", muGroupId); paramMap.put("muDutyId", muDutyId); - + + List> memberAllRecords = attendanceByMember.containsKey(muMemberId) + ? attendanceByMember.get(muMemberId) + : new ArrayList>(); + for (int i = 0; i < dateListMap.size(); i++) { Map addResultMap = new HashMap(); - + String searchDate = String.valueOf(dateListMap.get(i).get("resultDate")); paramMap.put("searchDate", searchDate); - - // 근태 내역 조회 - List> attendanceListMap = webAttendanceSqlMapDAO.selectListAttendance(paramMap); - - if(attendanceListMap.size()>0) { + + // 근태 내역 메모리 기반 조립 + List> attendanceListMap = buildDailyAttendanceList(memberAllRecords, + muMemberId, searchDate); + + if (attendanceListMap.size() > 0) { addResultMap.put("attendanceListMap", attendanceListMap); - } - else { + } else { addResultMap.put("attendanceListMap", null); } addResultMap.put("muGroupId", muGroupId); @@ -237,20 +250,19 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { addResultMap.put("muMemberId", muMemberId); addResultMap.put("memberName", memberName); addResultMap.put("searchDate", searchDate); - + listMap.add(addResultMap); } - + } - + map.put("msgCode", Constants.OK); - map.put("success","true"); - map.put("dateRows",dateListMap); - map.put("memberRows",memberListMap); - map.put("rows",listMap); + map.put("success", "true"); + map.put("dateRows", dateListMap); + map.put("memberRows", memberListMap); + map.put("rows", listMap); } - } - catch(Exception e){ + } catch (Exception e) { e.printStackTrace(); throw e; } @@ -258,7 +270,7 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { log.debug("WebAttendanceServiceImpl selectListAttendance END"); return map; } - + /** * 근태관리 리스트 조회 (Excel) * @@ -274,95 +286,110 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { HashMap map = new HashMap(); - log.debug("loginMemberId :"+paramMap.get("loginMemberId")); - - log.debug("menuClass :"+paramMap.get("menuClass")); - - log.debug("attendanceSearchKeywordParam :"+paramMap.get("attendanceSearchKeywordParam")); - log.debug("attendanceSort :"+paramMap.get("attendanceSort")); - log.debug("attendanceDir :"+paramMap.get("attendanceDir")); - log.debug("attendanceStart :"+paramMap.get("attendanceStart")); - log.debug("attendanceLimit :"+paramMap.get("attendanceLimit")); - - log.debug("attendanceSearchStartDate :"+paramMap.get("attendanceSearchStartDate")); - log.debug("attendanceSearchEndDate :"+paramMap.get("attendanceSearchEndDate")); - log.debug("attendanceSearchDateType :"+paramMap.get("attendanceSearchDateType")); - log.debug("attendanceSearchGroupId :"+paramMap.get("attendanceSearchGroupId")); + log.debug("loginMemberId :" + paramMap.get("loginMemberId")); - try{ - boolean check = true; - - if(true == check){ + log.debug("menuClass :" + paramMap.get("menuClass")); + + log.debug("attendanceSearchKeywordParam :" + paramMap.get("attendanceSearchKeywordParam")); + log.debug("attendanceSort :" + paramMap.get("attendanceSort")); + log.debug("attendanceDir :" + paramMap.get("attendanceDir")); + log.debug("attendanceStart :" + paramMap.get("attendanceStart")); + log.debug("attendanceLimit :" + paramMap.get("attendanceLimit")); + + log.debug("attendanceSearchStartDate :" + paramMap.get("attendanceSearchStartDate")); + log.debug("attendanceSearchEndDate :" + paramMap.get("attendanceSearchEndDate")); + log.debug("attendanceSearchDateType :" + paramMap.get("attendanceSearchDateType")); + log.debug("attendanceSearchGroupId :" + paramMap.get("attendanceSearchGroupId")); + + try { + boolean check = true; + + if (true == check) { // 사용자 확인 List> userListMap = webMemberSqlMapDAO.checkMember(paramMap); int userListMapSize = userListMap.size(); - - if(1==userListMapSize){ + + if (1 == userListMapSize) { paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); } } - if(true == check){ + if (true == check) { // 권한 조회 HashMap authCheckParamMap = new HashMap(); - authCheckParamMap.put("menuClass",paramMap.get("menuClass")); - authCheckParamMap.put("muAuthId",paramMap.get("menuClassAuthId")); - List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); + authCheckParamMap.put("menuClass", paramMap.get("menuClass")); + authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); + List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO + .selectAuthMenuRelation(authCheckParamMap); - if(1==authMenuRelationlistMap.size()){ + if (1 == authMenuRelationlistMap.size()) { - if(("Y").equals(authMenuRelationlistMap.get(0).get("downloadUseYn"))) { + if (("Y").equals(authMenuRelationlistMap.get(0).get("downloadUseYn"))) { - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "내려받기 권한 정보가 없습니다."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "권한 정보가 없습니다."); } } - if(true == check){ + if (true == check) { List> listMap = new ArrayList>(); - + // 직원 조회 List> memberListMap = webAttendanceSqlMapDAO.selectListAttendanceMember(paramMap); - + // 날짜 조회 List> dateListMap = webAttendanceSqlMapDAO.selectListAttendanceDate(paramMap); - + + // N+1 문제 해결을 위한 월간 전체 근태 내역 1회 조회 후 멤버별 인메모리 매핑 + List> allAttendanceList = webAttendanceSqlMapDAO.selectListAttendanceAll(paramMap); + Map>> attendanceByMember = new HashMap>>(); + if (allAttendanceList != null) { + for (Map record : allAttendanceList) { + String memberId = String.valueOf(record.get("muMemberId")); + if (!attendanceByMember.containsKey(memberId)) { + attendanceByMember.put(memberId, new ArrayList>()); + } + attendanceByMember.get(memberId).add(record); + } + } + for (int j = 0; j < memberListMap.size(); j++) { String muMemberId = String.valueOf(memberListMap.get(j).get("muMemberId")); String memberName = String.valueOf(memberListMap.get(j).get("memberName")); - String muGroupId = String.valueOf(memberListMap.get(j).get("muGroupId")); - String muDutyId = String.valueOf(memberListMap.get(j).get("muDutyId")); + String muGroupId = String.valueOf(memberListMap.get(j).get("muGroupId")); + String muDutyId = String.valueOf(memberListMap.get(j).get("muDutyId")); paramMap.put("muMemberId", muMemberId); paramMap.put("muGroupId", muGroupId); paramMap.put("muDutyId", muDutyId); - + + List> memberAllRecords = attendanceByMember.containsKey(muMemberId) + ? attendanceByMember.get(muMemberId) + : new ArrayList>(); + for (int i = 0; i < dateListMap.size(); i++) { Map addResultMap = new HashMap(); - + String searchDate = String.valueOf(dateListMap.get(i).get("resultDate")); paramMap.put("searchDate", searchDate); - - // 근태 내역 조회 - List> attendanceListMap = webAttendanceSqlMapDAO.selectListAttendance(paramMap); - - if(attendanceListMap.size()>0) { + + // 근태 내역 메모리 기반 조립 + List> attendanceListMap = buildDailyAttendanceList(memberAllRecords, + muMemberId, searchDate); + + if (attendanceListMap.size() > 0) { addResultMap.put("attendanceListMap", attendanceListMap); - } - else { + } else { addResultMap.put("attendanceListMap", null); } addResultMap.put("muGroupId", muGroupId); @@ -370,21 +397,20 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { addResultMap.put("muMemberId", muMemberId); addResultMap.put("memberName", memberName); addResultMap.put("searchDate", searchDate); - + listMap.add(addResultMap); } - + } - + map.put("msgCode", Constants.OK); - map.put("success","true"); - map.put("dateRows",dateListMap); - map.put("memberRows",memberListMap); - map.put("rows",listMap); + map.put("success", "true"); + map.put("dateRows", dateListMap); + map.put("memberRows", memberListMap); + map.put("rows", listMap); } - } - catch(Exception e){ + } catch (Exception e) { e.printStackTrace(); throw e; } @@ -392,7 +418,105 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { log.debug("WebAttendanceServiceImpl selectListAttendanceExcel END"); return map; } - + + /** + * 전체 통계 메모리 내역상출 로직 (SQL UNION 변환기) + */ + private List> buildDailyAttendanceList(List> allList, String muMemberId, + String searchDate) { + List> dailyList = new ArrayList>(); + Map commuteMap = null; + + for (Map record : allList) { + String recMemberId = String.valueOf(record.get("muMemberId")); + String recStartDate = String.valueOf(record.get("startDate")); + String recEndDate = String.valueOf(record.get("endDate")); + + if (recMemberId.equals(muMemberId) && searchDate.compareTo(recStartDate) >= 0 + && searchDate.compareTo(recEndDate) <= 0) { + String attType = String.valueOf(record.get("attendanceType")); + + if ("A".equals(attType) || "B".equals(attType)) { + if (commuteMap == null) { + commuteMap = new HashMap(); + commuteMap.put("muAttendanceId", null); + commuteMap.put("muMemberId", muMemberId); + commuteMap.put("attendanceType", "A"); // UI 출/퇴근 row는 원래 항상 'A'로 내려감 (SQL과 동일) + commuteMap.put("searchDate", searchDate); + commuteMap.put("startTime", "-"); + commuteMap.put("muAttendanceId2", null); + commuteMap.put("endTime", "-"); + commuteMap.put("totalWorkHour", "-"); + commuteMap.put("muVacationId", ""); + commuteMap.put("vacationName", ""); + } + if ("A".equals(attType)) { + commuteMap.put("muAttendanceId", record.get("muAttendanceId")); + commuteMap.put("startTime", + record.get("attendanceTime") != null && !"".equals(record.get("attendanceTime")) + ? record.get("attendanceTime") + : "-"); + } else if ("B".equals(attType)) { + commuteMap.put("muAttendanceId2", record.get("muAttendanceId")); + commuteMap.put("endTime", + record.get("attendanceTime") != null && !"".equals(record.get("attendanceTime")) + ? record.get("attendanceTime") + : "-"); + } + } else if ("C".equals(attType)) { + Map cMap = new HashMap(); + cMap.put("muAttendanceId", record.get("muAttendanceId")); + cMap.put("muMemberId", muMemberId); + cMap.put("attendanceType", "C"); + cMap.put("searchDate", searchDate); + cMap.put("startTime", ""); + cMap.put("muAttendanceId2", ""); + cMap.put("endTime", ""); + cMap.put("totalWorkHour", ""); + cMap.put("muVacationId", ""); + cMap.put("vacationName", ""); + dailyList.add(cMap); + } else if ("D".equals(attType) || "E".equals(attType)) { + Map vMap = new HashMap(); + vMap.put("muAttendanceId", record.get("muAttendanceId")); + vMap.put("muMemberId", muMemberId); + vMap.put("attendanceType", attType); + vMap.put("searchDate", searchDate); + vMap.put("startTime", record.get("startTime") != null ? record.get("startTime") : ""); + vMap.put("muAttendanceId2", ""); + vMap.put("endTime", record.get("endTime") != null ? record.get("endTime") : ""); + vMap.put("totalWorkHour", ""); + vMap.put("muVacationId", record.get("muVacationId")); + vMap.put("vacationName", record.get("vacationName")); + dailyList.add(vMap); + } + } + } + + if (commuteMap != null) { + String sTime = String.valueOf(commuteMap.get("startTime")); + String eTime = String.valueOf(commuteMap.get("endTime")); + if (!"-".equals(sTime) && !"-".equals(eTime) && sTime != null && eTime != null && !"null".equals(sTime) + && !"null".equals(eTime)) { + try { + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("HH:mm"); + java.util.Date d1 = sdf.parse(sTime); + java.util.Date d2 = sdf.parse(eTime); + long diff = d2.getTime() - d1.getTime(); + if (diff < 0) + diff += 24 * 60 * 60 * 1000; + long hours = diff / (60 * 60 * 1000); + long minutes = (diff / (60 * 1000)) % 60; + commuteMap.put("totalWorkHour", String.format("%02d시간%02d분", hours, minutes)); + } catch (Exception e) { + } + } + dailyList.add(0, commuteMap); // 출근 기록을 리눅스결과 제일 상단에 위치시킴 (UNION 순서) + } + + return dailyList; + } + /** * 금일 근무현황 리스트 조회 * @@ -408,62 +532,59 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { HashMap map = new HashMap(); - log.debug("loginMemberId :"+paramMap.get("loginMemberId")); - - log.debug("menuClass :"+paramMap.get("menuClass")); - - try{ - boolean check = true; - - if(true == check){ + log.debug("loginMemberId :" + paramMap.get("loginMemberId")); + + log.debug("menuClass :" + paramMap.get("menuClass")); + + try { + boolean check = true; + + if (true == check) { // 사용자 확인 List> userListMap = webMemberSqlMapDAO.checkMember(paramMap); int userListMapSize = userListMap.size(); - - if(1==userListMapSize){ + + if (1 == userListMapSize) { paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); } } - if(true == check){ + if (true == check) { // 권한 조회 HashMap authCheckParamMap = new HashMap(); - authCheckParamMap.put("menuClass",paramMap.get("menuClass")); - authCheckParamMap.put("muAuthId",paramMap.get("menuClassAuthId")); - List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); + authCheckParamMap.put("menuClass", paramMap.get("menuClass")); + authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); + List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO + .selectAuthMenuRelation(authCheckParamMap); - if(1==authMenuRelationlistMap.size()){ + if (1 == authMenuRelationlistMap.size()) { - if(("Y").equals(authMenuRelationlistMap.get(0).get("selectUseYn"))) { + if (("Y").equals(authMenuRelationlistMap.get(0).get("selectUseYn"))) { - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "조회 권한 정보가 없습니다."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "권한 정보가 없습니다."); } } - if(true == check){ + if (true == check) { List> listMap = webAttendanceSqlMapDAO.selectListTodayAttendance(paramMap); - + map.put("msgCode", Constants.OK); - map.put("success","true"); - map.put("rows",listMap); + map.put("success", "true"); + map.put("rows", listMap); } - } - catch(Exception e){ + } catch (Exception e) { e.printStackTrace(); throw e; } @@ -471,168 +592,163 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { log.debug("WebAttendanceServiceImpl selectListTodayAttendance END"); return map; } - + /** * 근태관리 정보 등록 (출퇴근/휴무) * * @param paramMap * @return - * @throws Exception + * @throws Exception */ @Override - @Transactional(rollbackFor={Exception.class}, propagation = Propagation.REQUIRES_NEW) + @Transactional(rollbackFor = { Exception.class }, propagation = Propagation.REQUIRES_NEW) public HashMap insertAttendance( - HashMap paramMap) throws Exception{ + HashMap paramMap) throws Exception { log.debug("WebAttendanceServiceImpl insertAttendance START"); - + HashMap map = new HashMap(); - log.debug("loginMemberId :"+paramMap.get("loginMemberId")); - - log.debug("menuClass :"+paramMap.get("menuClass")); - - log.debug("muMemberId :"+paramMap.get("muMemberId")); - log.debug("attendanceType :"+paramMap.get("attendanceType")); - log.debug("startDate :"+paramMap.get("startDate")); - log.debug("endDate :"+paramMap.get("endDate")); - log.debug("attendanceTime :"+paramMap.get("attendanceTime")); - log.debug("etc :"+paramMap.get("etc")); + log.debug("loginMemberId :" + paramMap.get("loginMemberId")); - try{ - boolean check = true; + log.debug("menuClass :" + paramMap.get("menuClass")); + + log.debug("muMemberId :" + paramMap.get("muMemberId")); + log.debug("attendanceType :" + paramMap.get("attendanceType")); + log.debug("startDate :" + paramMap.get("startDate")); + log.debug("endDate :" + paramMap.get("endDate")); + log.debug("attendanceTime :" + paramMap.get("attendanceTime")); + log.debug("etc :" + paramMap.get("etc")); + + try { + boolean check = true; String tId = String.valueOf(System.currentTimeMillis()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar c1 = Calendar.getInstance(); String tDate = sdf.format(c1.getTime()); - String muMemberId = String.valueOf(paramMap.get("muMemberId")); - String attendanceType = String.valueOf(paramMap.get("attendanceType")); - String startDate = String.valueOf(paramMap.get("startDate")); - String endDate = String.valueOf(paramMap.get("endDate")); - String attendanceTime = String.valueOf(paramMap.get("attendanceTime")); - String etc = String.valueOf(paramMap.get("etc")); - - if(true != ValidationCheckUtil.emptyCheck(muMemberId)){ + String muMemberId = String.valueOf(paramMap.get("muMemberId")); + String attendanceType = String.valueOf(paramMap.get("attendanceType")); + String startDate = String.valueOf(paramMap.get("startDate")); + String endDate = String.valueOf(paramMap.get("endDate")); + String attendanceTime = String.valueOf(paramMap.get("attendanceTime")); + String etc = String.valueOf(paramMap.get("etc")); + + if (true != ValidationCheckUtil.emptyCheck(muMemberId)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","직원 정보가 없습니다."); + map.put("msgDesc", "직원 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(attendanceType)){ + + if (true != ValidationCheckUtil.emptyCheck(attendanceType)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","근태유형 정보가 없습니다."); - } - else { - if(("C").equals(attendanceType)) { + map.put("msgDesc", "근태유형 정보가 없습니다."); + } else { + if (("C").equals(attendanceType)) { // 휴무일경우 attendanceTime = null; paramMap.put("attendanceTime", null); - } - else { - if(true != ValidationCheckUtil.emptyCheck(attendanceTime)){ + } else { + if (true != ValidationCheckUtil.emptyCheck(attendanceTime)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","시간 정보가 없습니다."); + map.put("msgDesc", "시간 정보가 없습니다."); } } } - - if(true != ValidationCheckUtil.emptyCheck(startDate)){ + + if (true != ValidationCheckUtil.emptyCheck(startDate)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","시작일자 정보가 없습니다."); + map.put("msgDesc", "시작일자 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(endDate)){ + + if (true != ValidationCheckUtil.emptyCheck(endDate)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","종료일자 정보가 없습니다."); + map.put("msgDesc", "종료일자 정보가 없습니다."); } - - if(true == check){ + + if (true == check) { // 사용자 확인 List> userListMap = webMemberSqlMapDAO.checkMember(paramMap); int userListMapSize = userListMap.size(); - - if(1==userListMapSize){ + + if (1 == userListMapSize) { paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); } } - - if(true == check){ + + if (true == check) { // 권한 조회 HashMap authCheckParamMap = new HashMap(); - authCheckParamMap.put("menuClass",paramMap.get("menuClass")); - authCheckParamMap.put("muAuthId",paramMap.get("menuClassAuthId")); - List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); + authCheckParamMap.put("menuClass", paramMap.get("menuClass")); + authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); + List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO + .selectAuthMenuRelation(authCheckParamMap); int authMenuRelationlistMapSize = authMenuRelationlistMap.size(); - - if(1==authMenuRelationlistMapSize){ - - if(("Y").equals(authMenuRelationlistMap.get(0).get("insertUseYn"))) { - - } - else { + + if (1 == authMenuRelationlistMapSize) { + + if (("Y").equals(authMenuRelationlistMap.get(0).get("insertUseYn"))) { + + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "등록 권한 정보가 없습니다."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "권한 정보가 없습니다."); } } - - if(true == check){ + + if (true == check) { // 직원 조회 List> memberListMap = webMemberSqlMapDAO.selectMember(paramMap); int memberListMapSize = memberListMap.size(); - - if(1 == memberListMapSize){ + + if (1 == memberListMapSize) { paramMap.put("muGroupId", memberListMap.get(0).get("muGroupId")); paramMap.put("muDutyId", memberListMap.get(0).get("muDutyId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "직원 정보가 올바르지 않습니다."); } } - - if(true == check){ + + if (true == check) { // 겹치는 일자 안 들어가도록 조회 List> attendanceListMap = webAttendanceSqlMapDAO.selectAttendanceDate(paramMap); - int attendanceListMapSize = Integer.parseInt(String.valueOf(attendanceListMap.get(0).get("totalCount"))); - - if(0 == attendanceListMapSize){ - - } - else { + int attendanceListMapSize = Integer + .parseInt(String.valueOf(attendanceListMap.get(0).get("totalCount"))); + + if (0 == attendanceListMapSize) { + + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "이미 등록된 근태정보가 있습니다."); } } - if(true == check){ + if (true == check) { // 휴일 확인 List> hospitalListMap = webHospitalSqlMapDAO.selectHospitalWeek2(paramMap); int hospitalListMapSize = hospitalListMap.size(); - if(0 < hospitalListMapSize) { - for(int i=0; i map = new HashMap(); - log.debug("loginMemberId :"+paramMap.get("loginMemberId")); - - log.debug("menuClass :"+paramMap.get("menuClass")); - - log.debug("muAttendanceId :"+paramMap.get("muAttendanceId")); - log.debug("muAttendanceId2 :"+paramMap.get("muAttendanceId2")); + log.debug("loginMemberId :" + paramMap.get("loginMemberId")); - try{ - boolean check = true; - - String muAttendanceId = String.valueOf(paramMap.get("muAttendanceId")); + log.debug("menuClass :" + paramMap.get("menuClass")); + + log.debug("muAttendanceId :" + paramMap.get("muAttendanceId")); + log.debug("muAttendanceId2 :" + paramMap.get("muAttendanceId2")); + + try { + boolean check = true; + + String muAttendanceId = String.valueOf(paramMap.get("muAttendanceId")); String muAttendanceId2 = String.valueOf(paramMap.get("muAttendanceId2")); - - if(true != ValidationCheckUtil.emptyCheck(muAttendanceId) && true != ValidationCheckUtil.emptyCheck(muAttendanceId2)){ + + if (true != ValidationCheckUtil.emptyCheck(muAttendanceId) + && true != ValidationCheckUtil.emptyCheck(muAttendanceId2)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","근태 정보가 없습니다."); + map.put("msgDesc", "근태 정보가 없습니다."); } - - if(true == check){ + + if (true == check) { // 사용자 확인 List> userListMap = webMemberSqlMapDAO.checkMember(paramMap); int userListMapSize = userListMap.size(); - - if(1==userListMapSize){ + + if (1 == userListMapSize) { paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); } } - if(true == check){ + if (true == check) { // 권한 조회 HashMap authCheckParamMap = new HashMap(); - authCheckParamMap.put("menuClass",paramMap.get("menuClass")); - authCheckParamMap.put("muAuthId",paramMap.get("menuClassAuthId")); - List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); + authCheckParamMap.put("menuClass", paramMap.get("menuClass")); + authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); + List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO + .selectAuthMenuRelation(authCheckParamMap); - if(1==authMenuRelationlistMap.size()){ + if (1 == authMenuRelationlistMap.size()) { - if(("Y").equals(authMenuRelationlistMap.get(0).get("selectUseYn"))) { + if (("Y").equals(authMenuRelationlistMap.get(0).get("selectUseYn"))) { - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "조회 권한 정보가 없습니다."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "권한 정보가 없습니다."); } } - - if(true == check){ + + if (true == check) { List> listMap = webAttendanceSqlMapDAO.selectAttendanceCommute(paramMap); - + map.put("msgCode", Constants.OK); - map.put("success","true"); - map.put("rows",listMap); + map.put("success", "true"); + map.put("rows", listMap); } - } - catch(Exception e){ + } catch (Exception e) { e.printStackTrace(); throw e; } @@ -764,167 +877,163 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { * * @param paramMap * @return - * @throws Exception + * @throws Exception */ @Override - @Transactional(rollbackFor={Exception.class}, propagation = Propagation.REQUIRES_NEW) + @Transactional(rollbackFor = { Exception.class }, propagation = Propagation.REQUIRES_NEW) public HashMap updateAttendanceCommute( - HashMap paramMap) throws Exception{ + HashMap paramMap) throws Exception { log.debug("WebAttendanceServiceImpl updateAttendanceCommute START"); - - HashMap map = new HashMap(); - - log.debug("loginMemberId :"+paramMap.get("loginMemberId")); - - log.debug("menuClass :"+paramMap.get("menuClass")); - - log.debug("muAttendanceId :"+paramMap.get("muAttendanceId")); - log.debug("muAttendanceId2 :"+paramMap.get("muAttendanceId2")); - log.debug("muMemberId :"+paramMap.get("muMemberId")); - log.debug("attendanceDate :"+paramMap.get("attendanceDate")); - log.debug("startTime :"+paramMap.get("startTime")); - log.debug("endTime :"+paramMap.get("endTime")); - try{ - boolean check = true; + HashMap map = new HashMap(); + + log.debug("loginMemberId :" + paramMap.get("loginMemberId")); + + log.debug("menuClass :" + paramMap.get("menuClass")); + + log.debug("muAttendanceId :" + paramMap.get("muAttendanceId")); + log.debug("muAttendanceId2 :" + paramMap.get("muAttendanceId2")); + log.debug("muMemberId :" + paramMap.get("muMemberId")); + log.debug("attendanceDate :" + paramMap.get("attendanceDate")); + log.debug("startTime :" + paramMap.get("startTime")); + log.debug("endTime :" + paramMap.get("endTime")); + + try { + boolean check = true; String tId = String.valueOf(System.currentTimeMillis()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar c1 = Calendar.getInstance(); String tDate = sdf.format(c1.getTime()); - - String muAttendanceId = String.valueOf(paramMap.get("muAttendanceId")); - String muAttendanceId2 = String.valueOf(paramMap.get("muAttendanceId2")); - String muMemberId = String.valueOf(paramMap.get("muMemberId")); - String attendanceDate = String.valueOf(paramMap.get("attendanceDate")); - String startTime = String.valueOf(paramMap.get("startTime")); - String endTime = String.valueOf(paramMap.get("endTime")); + + String muAttendanceId = String.valueOf(paramMap.get("muAttendanceId")); + String muAttendanceId2 = String.valueOf(paramMap.get("muAttendanceId2")); + String muMemberId = String.valueOf(paramMap.get("muMemberId")); + String attendanceDate = String.valueOf(paramMap.get("attendanceDate")); + String startTime = String.valueOf(paramMap.get("startTime")); + String endTime = String.valueOf(paramMap.get("endTime")); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm"); LocalTime fommat_startTime = LocalTime.parse(startTime, formatter); LocalTime fommat_endTime = LocalTime.parse(endTime, formatter); - if(true != ValidationCheckUtil.emptyCheck(muAttendanceId) && true != ValidationCheckUtil.emptyCheck(muAttendanceId2)){ + if (true != ValidationCheckUtil.emptyCheck(muAttendanceId) + && true != ValidationCheckUtil.emptyCheck(muAttendanceId2)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","근태 정보가 없습니다."); + map.put("msgDesc", "근태 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(muMemberId)){ + + if (true != ValidationCheckUtil.emptyCheck(muMemberId)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","직원 정보가 없습니다."); + map.put("msgDesc", "직원 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(attendanceDate)){ + + if (true != ValidationCheckUtil.emptyCheck(attendanceDate)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","날짜 정보가 없습니다."); + map.put("msgDesc", "날짜 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(startTime)){ + + if (true != ValidationCheckUtil.emptyCheck(startTime)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","출근시간 정보가 없습니다."); + map.put("msgDesc", "출근시간 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(endTime)){ + + if (true != ValidationCheckUtil.emptyCheck(endTime)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","퇴근시간 정보가 없습니다."); + map.put("msgDesc", "퇴근시간 정보가 없습니다."); } - if(fommat_startTime.isAfter(fommat_endTime)||fommat_startTime.equals(fommat_endTime)){ + if (fommat_startTime.isAfter(fommat_endTime) || fommat_startTime.equals(fommat_endTime)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","출/퇴근기록을 다시 확인해주세요"); + map.put("msgDesc", "출/퇴근기록을 다시 확인해주세요"); } - if(true == check){ + if (true == check) { // 사용자 확인 List> userListMap = webMemberSqlMapDAO.checkMember(paramMap); int userListMapSize = userListMap.size(); - - if(1==userListMapSize){ + + if (1 == userListMapSize) { paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); } } - - if(true == check){ + + if (true == check) { // 권한 조회 HashMap authCheckParamMap = new HashMap(); - authCheckParamMap.put("menuClass",paramMap.get("menuClass")); - authCheckParamMap.put("muAuthId",paramMap.get("menuClassAuthId")); - List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); + authCheckParamMap.put("menuClass", paramMap.get("menuClass")); + authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); + List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO + .selectAuthMenuRelation(authCheckParamMap); int authMenuRelationlistMapSize = authMenuRelationlistMap.size(); - - if(1==authMenuRelationlistMapSize){ - - if(("Y").equals(authMenuRelationlistMap.get(0).get("updateUseYn"))) { - - } - else { + + if (1 == authMenuRelationlistMapSize) { + + if (("Y").equals(authMenuRelationlistMap.get(0).get("updateUseYn"))) { + + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "수정 권한 정보가 없습니다."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "권한 정보가 없습니다."); } } - - if(true == check){ + + if (true == check) { // 직원 조회 List> memberListMap = webMemberSqlMapDAO.selectMember(paramMap); int memberListMapSize = memberListMap.size(); - - if(1 == memberListMapSize){ + + if (1 == memberListMapSize) { paramMap.put("muGroupId", memberListMap.get(0).get("muGroupId")); paramMap.put("muDutyId", memberListMap.get(0).get("muDutyId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "직원 정보가 올바르지 않습니다."); } } - - if(true == check){ + + if (true == check) { paramMap.put("tDate", tDate); paramMap.put("tId", tId); - + // 출근시간 처리 - if(true != ValidationCheckUtil.emptyCheck(muAttendanceId)) { + if (true != ValidationCheckUtil.emptyCheck(muAttendanceId)) { String attendanceId = ("A").concat(String.valueOf(System.currentTimeMillis())); - paramMap.put("muAttendanceId",attendanceId); + paramMap.put("muAttendanceId", attendanceId); paramMap.put("attendanceType", "A"); paramMap.put("startDate", attendanceDate); paramMap.put("endDate", attendanceDate); paramMap.put("attendanceTime", startTime); webAttendanceSqlMapDAO.insertAttendance(paramMap); - } - else { + } else { paramMap.put("muAttendanceId", muAttendanceId); paramMap.put("attendanceTime", startTime); webAttendanceSqlMapDAO.updateAttendanceCommute(paramMap); } - + // 퇴근시간 처리 - if(true != ValidationCheckUtil.emptyCheck(muAttendanceId2)) { + if (true != ValidationCheckUtil.emptyCheck(muAttendanceId2)) { String attendanceId = ("A").concat(String.valueOf(System.currentTimeMillis())); - paramMap.put("muAttendanceId",attendanceId); + paramMap.put("muAttendanceId", attendanceId); paramMap.put("attendanceType", "B"); paramMap.put("startDate", attendanceDate); paramMap.put("endDate", attendanceDate); paramMap.put("attendanceTime", endTime); webAttendanceSqlMapDAO.insertAttendance(paramMap); - } - else { + } else { paramMap.put("muAttendanceId", muAttendanceId2); paramMap.put("attendanceTime", endTime); webAttendanceSqlMapDAO.updateAttendanceCommute(paramMap); @@ -933,17 +1042,16 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { map.put("msgCode", Constants.OK); map.put("msgDesc", "수정되었습니다."); } - - } - catch (Exception e) { + + } catch (Exception e) { e.printStackTrace(); throw e; } - + log.debug("WebAttendanceServiceImpl updateAttendanceCommute END"); return map; } - + /** * 근태관리 상세 조회 (연차 조회) * @@ -959,79 +1067,76 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { HashMap map = new HashMap(); - log.debug("loginMemberId :"+paramMap.get("loginMemberId")); - - log.debug("menuClass :"+paramMap.get("menuClass")); - - log.debug("muAttendanceId :"+paramMap.get("muAttendanceId")); - log.debug("muMemberId :"+paramMap.get("muMemberId")); + log.debug("loginMemberId :" + paramMap.get("loginMemberId")); - try{ - boolean check = true; - - String muAttendanceId = String.valueOf(paramMap.get("muAttendanceId")); - String muMemberId = String.valueOf(paramMap.get("muMemberId")); - - if(true != ValidationCheckUtil.emptyCheck(muAttendanceId)){ + log.debug("menuClass :" + paramMap.get("menuClass")); + + log.debug("muAttendanceId :" + paramMap.get("muAttendanceId")); + log.debug("muMemberId :" + paramMap.get("muMemberId")); + + try { + boolean check = true; + + String muAttendanceId = String.valueOf(paramMap.get("muAttendanceId")); + String muMemberId = String.valueOf(paramMap.get("muMemberId")); + + if (true != ValidationCheckUtil.emptyCheck(muAttendanceId)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","근태 정보가 없습니다."); + map.put("msgDesc", "근태 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(muMemberId)){ + + if (true != ValidationCheckUtil.emptyCheck(muMemberId)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","직원 정보가 없습니다."); + map.put("msgDesc", "직원 정보가 없습니다."); } - - if(true == check){ + + if (true == check) { // 사용자 확인 List> userListMap = webMemberSqlMapDAO.checkMember(paramMap); int userListMapSize = userListMap.size(); - - if(1==userListMapSize){ + + if (1 == userListMapSize) { paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); } } - if(true == check){ + if (true == check) { // 권한 조회 HashMap authCheckParamMap = new HashMap(); - authCheckParamMap.put("menuClass",paramMap.get("menuClass")); - authCheckParamMap.put("muAuthId",paramMap.get("menuClassAuthId")); - List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); + authCheckParamMap.put("menuClass", paramMap.get("menuClass")); + authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); + List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO + .selectAuthMenuRelation(authCheckParamMap); - if(1==authMenuRelationlistMap.size()){ + if (1 == authMenuRelationlistMap.size()) { - if(("Y").equals(authMenuRelationlistMap.get(0).get("selectUseYn"))) { + if (("Y").equals(authMenuRelationlistMap.get(0).get("selectUseYn"))) { - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "조회 권한 정보가 없습니다."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "권한 정보가 없습니다."); } } - if(true == check){ + if (true == check) { List> listMap = webAttendanceSqlMapDAO.selectAttendanceVacation(paramMap); - + map.put("msgCode", Constants.OK); - map.put("success","true"); - map.put("rows",listMap); + map.put("success", "true"); + map.put("rows", listMap); } - } - catch(Exception e){ + } catch (Exception e) { e.printStackTrace(); throw e; } @@ -1039,178 +1144,173 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { log.debug("WebAttendanceServiceImpl selectAttendanceVacation END"); return map; } - + /** * 근태관리 정보 등록 (연차) * * @param paramMap * @return - * @throws Exception + * @throws Exception */ @Override - @Transactional(rollbackFor={Exception.class}, propagation = Propagation.REQUIRES_NEW) + @Transactional(rollbackFor = { Exception.class }, propagation = Propagation.REQUIRES_NEW) public HashMap insertAttendanceVacation( - HashMap paramMap) throws Exception{ + HashMap paramMap) throws Exception { log.debug("WebAttendanceServiceImpl insertAttendanceVacation START"); - + HashMap map = new HashMap(); - log.debug("loginMemberId :"+paramMap.get("loginMemberId")); - - log.debug("menuClass :"+paramMap.get("menuClass")); + log.debug("loginMemberId :" + paramMap.get("loginMemberId")); - log.debug("muMemberId :"+paramMap.get("muMemberId")); - log.debug("muVacationId :"+paramMap.get("muVacationId")); - log.debug("startDate :"+paramMap.get("startDate")); - log.debug("endDate :"+paramMap.get("endDate")); - log.debug("startTime :"+paramMap.get("startTime")); - log.debug("endTime :"+paramMap.get("endTime")); - log.debug("etc :"+paramMap.get("etc")); + log.debug("menuClass :" + paramMap.get("menuClass")); - try{ - boolean check = true; + log.debug("muMemberId :" + paramMap.get("muMemberId")); + log.debug("muVacationId :" + paramMap.get("muVacationId")); + log.debug("startDate :" + paramMap.get("startDate")); + log.debug("endDate :" + paramMap.get("endDate")); + log.debug("startTime :" + paramMap.get("startTime")); + log.debug("endTime :" + paramMap.get("endTime")); + log.debug("etc :" + paramMap.get("etc")); + + try { + boolean check = true; String tId = String.valueOf(System.currentTimeMillis()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar c1 = Calendar.getInstance(); String tDate = sdf.format(c1.getTime()); - String muMemberId = String.valueOf(paramMap.get("muMemberId")); - String muVacationId = String.valueOf(paramMap.get("muVacationId")); - String startDate = String.valueOf(paramMap.get("startDate")); - String endDate = String.valueOf(paramMap.get("endDate")); - String startTime = String.valueOf(paramMap.get("startTime")); - String endTime = String.valueOf(paramMap.get("endTime")); - - if(true != ValidationCheckUtil.emptyCheck(muMemberId)){ + String muMemberId = String.valueOf(paramMap.get("muMemberId")); + String muVacationId = String.valueOf(paramMap.get("muVacationId")); + String startDate = String.valueOf(paramMap.get("startDate")); + String endDate = String.valueOf(paramMap.get("endDate")); + String startTime = String.valueOf(paramMap.get("startTime")); + String endTime = String.valueOf(paramMap.get("endTime")); + + if (true != ValidationCheckUtil.emptyCheck(muMemberId)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","직원 정보가 없습니다."); + map.put("msgDesc", "직원 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(muVacationId)){ + + if (true != ValidationCheckUtil.emptyCheck(muVacationId)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","연차사용단위 정보가 없습니다."); + map.put("msgDesc", "연차사용단위 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(startDate)){ + + if (true != ValidationCheckUtil.emptyCheck(startDate)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","시작일자 정보가 없습니다."); + map.put("msgDesc", "시작일자 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(endDate)){ + + if (true != ValidationCheckUtil.emptyCheck(endDate)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","종료일자 정보가 없습니다."); + map.put("msgDesc", "종료일자 정보가 없습니다."); } - - if(true == check){ + + if (true == check) { // 사용자 확인 List> userListMap = webMemberSqlMapDAO.checkMember(paramMap); int userListMapSize = userListMap.size(); - - if(1==userListMapSize){ + + if (1 == userListMapSize) { paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); } } - - if(true == check){ + + if (true == check) { // 권한 조회 HashMap authCheckParamMap = new HashMap(); - authCheckParamMap.put("menuClass",paramMap.get("menuClass")); - authCheckParamMap.put("muAuthId",paramMap.get("menuClassAuthId")); - List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); + authCheckParamMap.put("menuClass", paramMap.get("menuClass")); + authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); + List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO + .selectAuthMenuRelation(authCheckParamMap); int authMenuRelationlistMapSize = authMenuRelationlistMap.size(); - - if(1==authMenuRelationlistMapSize){ - - if(("Y").equals(authMenuRelationlistMap.get(0).get("insertUseYn"))) { - - } - else { + + if (1 == authMenuRelationlistMapSize) { + + if (("Y").equals(authMenuRelationlistMap.get(0).get("insertUseYn"))) { + + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "등록 권한 정보가 없습니다."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "권한 정보가 없습니다."); } } - - if(true == check){ + + if (true == check) { // 직원 조회 List> memberListMap = webMemberSqlMapDAO.selectMember(paramMap); int memberListMapSize = memberListMap.size(); - - if(1 == memberListMapSize){ + + if (1 == memberListMapSize) { paramMap.put("muGroupId", memberListMap.get(0).get("muGroupId")); paramMap.put("muDutyId", memberListMap.get(0).get("muDutyId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "직원 정보가 올바르지 않습니다."); } } - - if(true == check){ + + if (true == check) { // 연차사용단위 정보 조회 List> vacationListMap = webVacationSqlMapDAO.selectVacation(paramMap); int vacationListMapSize = vacationListMap.size(); - - if(1 == vacationListMapSize) { + + if (1 == vacationListMapSize) { String hourType = String.valueOf(vacationListMap.get(0).get("hourType")); - - if(("A").equals(hourType)) { + + if (("A").equals(hourType)) { paramMap.put("attendanceType", "D"); - } - else { + } else { // 반차 paramMap.put("attendanceType", "E"); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "연차사용단위 정보가 없습니다."); } } - - if(true == check){ + + if (true == check) { // 겹치는 일자 안 들어가도록 조회 List> attendanceListMap = webAttendanceSqlMapDAO.selectAttendanceDate(paramMap); - int attendanceListMapSize = Integer.parseInt(String.valueOf(attendanceListMap.get(0).get("totalCount"))); - - if(0 == attendanceListMapSize){ - - } - else { + int attendanceListMapSize = Integer + .parseInt(String.valueOf(attendanceListMap.get(0).get("totalCount"))); + + if (0 == attendanceListMapSize) { + + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "이미 등록된 근태정보가 있습니다."); } } - if(true == check){ + if (true == check) { // 휴일 확인 List> hospitalListMap = webHospitalSqlMapDAO.selectHospitalWeek2(paramMap); int hospitalListMapSize = hospitalListMap.size(); - if(0 < hospitalListMapSize) { - for(int i=0; i> vacationManagementListMap = webVacationManagementSqlMapDAO.selectVacationManagementLeftDays(paramMap); + List> vacationManagementListMap = webVacationManagementSqlMapDAO + .selectVacationManagementLeftDays(paramMap); int vacationManagementListMapListMapSize = vacationManagementListMap.size(); - - if(vacationManagementListMapListMapSize==1){ - double leftDays = Double.parseDouble(String.valueOf(vacationManagementListMap.get(0).get("leftDays"))); + + if (vacationManagementListMapListMapSize == 1) { + double leftDays = Double + .parseDouble(String.valueOf(vacationManagementListMap.get(0).get("leftDays"))); double useDays = 0.5; - if("D".equals(paramMap.get("attendanceType"))){ - useDays = getDateDays(startDate, endDate); + if ("D".equals(paramMap.get("attendanceType"))) { + useDays = getDateDays(startDate, endDate); } - if(leftDays>=useDays) { - paramMap.put("muVacationManagementId", vacationManagementListMap.get(0).get("muVacationManagementId")); + if (leftDays >= useDays) { + paramMap.put("muVacationManagementId", + vacationManagementListMap.get(0).get("muVacationManagementId")); paramMap.put("days", useDays); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc", "잔여연차는 "+leftDays+"일 입니다. 연차기간을 확인해주세요."); + map.put("msgDesc", "잔여연차는 " + leftDays + "일 입니다. 연차기간을 확인해주세요."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "발행된 연차 정보가 없습니다. 관리자에게 문의하십시오."); } } - - if(true == check){ + + if (true == check) { paramMap.put("tDate", tDate); paramMap.put("tId", tId); - + String muAttendanceId = ("A").concat(String.valueOf(System.currentTimeMillis())); - paramMap.put("muAttendanceId",muAttendanceId); + paramMap.put("muAttendanceId", muAttendanceId); webAttendanceSqlMapDAO.insertAttendance(paramMap); - log.debug("muAttendanceId :"+paramMap.get("id")); + log.debug("muAttendanceId :" + paramMap.get("id")); paramMap.put("muAttendanceId", paramMap.get("id")); map.put("muAttendanceId", paramMap.get("muAttendanceId")); - + // 잔여연차 업데이트 webVacationManagementSqlMapDAO.updateVacationManagementLeftDays(paramMap); - + map.put("msgCode", Constants.OK); map.put("msgDesc", "등록되었습니다."); } - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); throw e; } - + log.debug("WebAttendanceServiceImpl insertAttendanceVacation END"); return map; } @@ -1282,230 +1382,226 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { * * @param paramMap * @return - * @throws Exception + * @throws Exception */ @Override - @Transactional(rollbackFor={Exception.class}, propagation = Propagation.REQUIRES_NEW) + @Transactional(rollbackFor = { Exception.class }, propagation = Propagation.REQUIRES_NEW) public HashMap updateAttendanceVacation( - HashMap paramMap) throws Exception{ + HashMap paramMap) throws Exception { log.debug("WebAttendanceServiceImpl updateAttendanceVacation START"); - - HashMap map = new HashMap(); - - log.debug("loginMemberId :"+paramMap.get("loginMemberId")); - - log.debug("menuClass :"+paramMap.get("menuClass")); - - log.debug("muAttendanceId :"+paramMap.get("muAttendanceId")); - log.debug("muMemberId :"+paramMap.get("muMemberId")); - log.debug("muVacationId :"+paramMap.get("muVacationId")); - log.debug("startDate :"+paramMap.get("startDate")); - log.debug("endDate :"+paramMap.get("endDate")); - log.debug("startTime :"+paramMap.get("startTime")); - log.debug("endTime :"+paramMap.get("endTime")); - log.debug("etc :"+paramMap.get("etc")); - try{ - boolean check = true; + HashMap map = new HashMap(); + + log.debug("loginMemberId :" + paramMap.get("loginMemberId")); + + log.debug("menuClass :" + paramMap.get("menuClass")); + + log.debug("muAttendanceId :" + paramMap.get("muAttendanceId")); + log.debug("muMemberId :" + paramMap.get("muMemberId")); + log.debug("muVacationId :" + paramMap.get("muVacationId")); + log.debug("startDate :" + paramMap.get("startDate")); + log.debug("endDate :" + paramMap.get("endDate")); + log.debug("startTime :" + paramMap.get("startTime")); + log.debug("endTime :" + paramMap.get("endTime")); + log.debug("etc :" + paramMap.get("etc")); + + try { + boolean check = true; String tId = String.valueOf(System.currentTimeMillis()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar c1 = Calendar.getInstance(); String tDate = sdf.format(c1.getTime()); - - String muAttendanceId = String.valueOf(paramMap.get("muAttendanceId")); - String muMemberId = String.valueOf(paramMap.get("muMemberId")); - String muVacationId = String.valueOf(paramMap.get("muVacationId")); - String startDate = String.valueOf(paramMap.get("startDate")); - String endDate = String.valueOf(paramMap.get("endDate")); - String startTime = String.valueOf(paramMap.get("startTime")); - String endTime = String.valueOf(paramMap.get("endTime")); - if(true != ValidationCheckUtil.emptyCheck(muAttendanceId)){ + String muAttendanceId = String.valueOf(paramMap.get("muAttendanceId")); + String muMemberId = String.valueOf(paramMap.get("muMemberId")); + String muVacationId = String.valueOf(paramMap.get("muVacationId")); + String startDate = String.valueOf(paramMap.get("startDate")); + String endDate = String.valueOf(paramMap.get("endDate")); + String startTime = String.valueOf(paramMap.get("startTime")); + String endTime = String.valueOf(paramMap.get("endTime")); + + if (true != ValidationCheckUtil.emptyCheck(muAttendanceId)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","근태 정보가 없습니다."); + map.put("msgDesc", "근태 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(muMemberId)){ + + if (true != ValidationCheckUtil.emptyCheck(muMemberId)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","직원 정보가 없습니다."); + map.put("msgDesc", "직원 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(muVacationId)){ + + if (true != ValidationCheckUtil.emptyCheck(muVacationId)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","연차사용단위 정보가 없습니다."); + map.put("msgDesc", "연차사용단위 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(startDate)){ + + if (true != ValidationCheckUtil.emptyCheck(startDate)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","시작일자 정보가 없습니다."); + map.put("msgDesc", "시작일자 정보가 없습니다."); } - - if(true != ValidationCheckUtil.emptyCheck(endDate)){ + + if (true != ValidationCheckUtil.emptyCheck(endDate)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","종료일자 정보가 없습니다."); + map.put("msgDesc", "종료일자 정보가 없습니다."); } - - if(true == check){ + + if (true == check) { // 사용자 확인 List> userListMap = webMemberSqlMapDAO.checkMember(paramMap); int userListMapSize = userListMap.size(); - - if(1==userListMapSize){ + + if (1 == userListMapSize) { paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); } } - - if(true == check){ + + if (true == check) { // 권한 조회 HashMap authCheckParamMap = new HashMap(); - authCheckParamMap.put("menuClass",paramMap.get("menuClass")); - authCheckParamMap.put("muAuthId",paramMap.get("menuClassAuthId")); - List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); + authCheckParamMap.put("menuClass", paramMap.get("menuClass")); + authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); + List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO + .selectAuthMenuRelation(authCheckParamMap); int authMenuRelationlistMapSize = authMenuRelationlistMap.size(); - - if(1==authMenuRelationlistMapSize){ - - if(("Y").equals(authMenuRelationlistMap.get(0).get("updateUseYn"))) { - - } - else { + + if (1 == authMenuRelationlistMapSize) { + + if (("Y").equals(authMenuRelationlistMap.get(0).get("updateUseYn"))) { + + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "수정 권한 정보가 없습니다."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "권한 정보가 없습니다."); } } - - if(true == check){ + + if (true == check) { // 연차사용단위 정보 조회 List> vacationListMap = webVacationSqlMapDAO.selectVacation(paramMap); int vacationListMapSize = vacationListMap.size(); - - if(1 == vacationListMapSize) { + + if (1 == vacationListMapSize) { String hourType = String.valueOf(vacationListMap.get(0).get("hourType")); - - if(("A").equals(hourType)) { + + if (("A").equals(hourType)) { paramMap.put("attendanceType", "D"); - } - else { + } else { // 반차 paramMap.put("attendanceType", "E"); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "연차사용단위 정보가 없습니다."); } } - - if(true == check){ + + if (true == check) { // 겹치는 일자 안 들어가도록 조회 List> attendanceListMap = webAttendanceSqlMapDAO.selectAttendanceDate(paramMap); - int attendanceListMapSize = Integer.parseInt(String.valueOf(attendanceListMap.get(0).get("totalCount"))); - - if(0 == attendanceListMapSize){ - - } - else { + int attendanceListMapSize = Integer + .parseInt(String.valueOf(attendanceListMap.get(0).get("totalCount"))); + + if (0 == attendanceListMapSize) { + + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "이미 등록된 근태정보가 있습니다."); } } - - if(true == check){ + + if (true == check) { // 연차정보 조회 List> attendanceListMap = webAttendanceSqlMapDAO.selectAttendanceVacation(paramMap); int attendanceListMapSize = attendanceListMap.size(); - - if(1 == attendanceListMapSize) { + + if (1 == attendanceListMapSize) { // 수정 전 데이터 - String oldMuVacationManagementId = String.valueOf(attendanceListMap.get(0).get("muVacationManagementId")); - Double oldDays = Double.parseDouble(String.valueOf(attendanceListMap.get(0).get("days"))); + String oldMuVacationManagementId = String + .valueOf(attendanceListMap.get(0).get("muVacationManagementId")); + Double oldDays = Double.parseDouble(String.valueOf(attendanceListMap.get(0).get("days"))); // 발행된 연차 및 잔여 연차 확인 - // 수정 시 기존연차와 남은 연차 합해서 확인 - List> vacationManagementListMap = webVacationManagementSqlMapDAO.selectVacationManagementLeftDays(paramMap); + // 수정 시 기존연차와 남은 연차 합해서 확인 + List> vacationManagementListMap = webVacationManagementSqlMapDAO + .selectVacationManagementLeftDays(paramMap); int vacationManagementListMapListMapSize = vacationManagementListMap.size(); - - if(vacationManagementListMapListMapSize==1){ - String muVacationManagementId = String.valueOf(vacationManagementListMap.get(0).get("muVacationManagementId")); - double leftDays = Double.parseDouble(String.valueOf(vacationManagementListMap.get(0).get("leftDays"))); + + if (vacationManagementListMapListMapSize == 1) { + String muVacationManagementId = String + .valueOf(vacationManagementListMap.get(0).get("muVacationManagementId")); + double leftDays = Double + .parseDouble(String.valueOf(vacationManagementListMap.get(0).get("leftDays"))); double useDays = 0.5; - if("D".equals(paramMap.get("attendanceType"))){ - useDays = getDateDays(startDate, endDate); + if ("D".equals(paramMap.get("attendanceType"))) { + useDays = getDateDays(startDate, endDate); } - if((leftDays+oldDays)>=useDays) { - - paramMap.put("muVacationManagementId", vacationManagementListMap.get(0).get("muVacationManagementId")); + if ((leftDays + oldDays) >= useDays) { + + paramMap.put("muVacationManagementId", + vacationManagementListMap.get(0).get("muVacationManagementId")); paramMap.put("days", useDays); - + webAttendanceSqlMapDAO.updateAttendanceVacation(paramMap); map.put("msgCode", Constants.OK); map.put("msgDesc", "수정되었습니다."); - + // 잔여연차 업데이트 - if(oldMuVacationManagementId == muVacationManagementId) { + if (oldMuVacationManagementId == muVacationManagementId) { // 연차사용단위가 변경되지 않았을 경우 - paramMap.put("days", useDays-oldDays); + paramMap.put("days", useDays - oldDays); paramMap.put("muVacationManagementId", muVacationManagementId); webVacationManagementSqlMapDAO.updateVacationManagementLeftDays(paramMap); - } - else { + } else { // 연차사용단위가 변경되었을 경우 // 1. 이전 남은연차 갯수 수정 paramMap.put("days", -oldDays); paramMap.put("muVacationManagementId", oldMuVacationManagementId); webVacationManagementSqlMapDAO.updateVacationManagementLeftDays(paramMap); - + // 2. 수정 남은연차 갯수 수정 paramMap.put("days", useDays); paramMap.put("muVacationManagementId", muVacationManagementId); webVacationManagementSqlMapDAO.updateVacationManagementLeftDays(paramMap); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "잔여연차가 없거나 부족합니다. 연차기간을 확인해주세요."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "발행된 연차 정보가 없습니다. 관리자에게 문의하십시오."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "연차 정보가 없습니다."); } } - - } - catch (Exception e) { + + } catch (Exception e) { e.printStackTrace(); throw e; } - + log.debug("WebAttendanceServiceImpl updateAttendanceVacation END"); return map; } @@ -1515,97 +1611,95 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { * * @param paramMap * @return - * @throws Exception + * @throws Exception */ @Override - @Transactional(rollbackFor={Exception.class}, propagation = Propagation.REQUIRES_NEW) + @Transactional(rollbackFor = { Exception.class }, propagation = Propagation.REQUIRES_NEW) public HashMap updateAttendanceVacationCancel( - HashMap paramMap) throws Exception{ + HashMap paramMap) throws Exception { log.debug("WebAttendanceServiceImpl updateAttendanceVacationCancel START"); - + HashMap map = new HashMap(); - - log.debug("loginMemberId :"+paramMap.get("loginMemberId")); - - log.debug("menuClass :"+paramMap.get("menuClass")); - - log.debug("muAttendanceId :"+paramMap.get("muAttendanceId")); - log.debug("cancelEtc :"+paramMap.get("cancelEtc")); - try{ - boolean check = true; + log.debug("loginMemberId :" + paramMap.get("loginMemberId")); - String muAttendanceId = String.valueOf(paramMap.get("muAttendanceId")); - String cancelEtc = String.valueOf(paramMap.get("cancelEtc")); + log.debug("menuClass :" + paramMap.get("menuClass")); - if(true != ValidationCheckUtil.emptyCheck(muAttendanceId)){ + log.debug("muAttendanceId :" + paramMap.get("muAttendanceId")); + log.debug("cancelEtc :" + paramMap.get("cancelEtc")); + + try { + boolean check = true; + + String muAttendanceId = String.valueOf(paramMap.get("muAttendanceId")); + String cancelEtc = String.valueOf(paramMap.get("cancelEtc")); + + if (true != ValidationCheckUtil.emptyCheck(muAttendanceId)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","휴무관리 식별자 정보가 없습니다."); + map.put("msgDesc", "휴무관리 식별자 정보가 없습니다."); } - if(true != ValidationCheckUtil.emptyCheck(cancelEtc)){ + if (true != ValidationCheckUtil.emptyCheck(cancelEtc)) { check = false; map.put("msgCode", Constants.FAIL); - map.put("msgDesc","취소사유 정보가 없습니다."); + map.put("msgDesc", "취소사유 정보가 없습니다."); } - - if(true == check){ + + if (true == check) { // 사용자 확인 List> userListMap = webMemberSqlMapDAO.checkMember(paramMap); int userListMapSize = userListMap.size(); - - if(1==userListMapSize){ + + if (1 == userListMapSize) { paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); } } - - if(true == check){ + + if (true == check) { // 권한 조회 HashMap authCheckParamMap = new HashMap(); - authCheckParamMap.put("menuClass",paramMap.get("menuClass")); - authCheckParamMap.put("muAuthId",paramMap.get("menuClassAuthId")); - List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); + authCheckParamMap.put("menuClass", paramMap.get("menuClass")); + authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); + List> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO + .selectAuthMenuRelation(authCheckParamMap); int authMenuRelationlistMapSize = authMenuRelationlistMap.size(); - - if(1==authMenuRelationlistMapSize){ - - if(("Y").equals(authMenuRelationlistMap.get(0).get("updateUseYn"))) { - - } - else { + + if (1 == authMenuRelationlistMapSize) { + + if (("Y").equals(authMenuRelationlistMap.get(0).get("updateUseYn"))) { + + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "수정 권한 정보가 없습니다."); } - } - else { + } else { check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc", "권한 정보가 없습니다."); } } - - if(true == check){ + + if (true == check) { // 휴무 정보 확인 List> attendanceListMap = webAttendanceSqlMapDAO.selectAttendanceVacation(paramMap); - - if(attendanceListMap.size()==1) { - Double days = Double.parseDouble(String.valueOf(attendanceListMap.get(0).get("days"))); - String muVacationManagementId = String.valueOf(attendanceListMap.get(0).get("muVacationManagementId")); - String muMemberId = String.valueOf(attendanceListMap.get(0).get("muMemberId")); - String status = String.valueOf(attendanceListMap.get(0).get("status")); + if (attendanceListMap.size() == 1) { + Double days = Double.parseDouble(String.valueOf(attendanceListMap.get(0).get("days"))); + String muVacationManagementId = String + .valueOf(attendanceListMap.get(0).get("muVacationManagementId")); + String muMemberId = String.valueOf(attendanceListMap.get(0).get("muMemberId")); + String status = String.valueOf(attendanceListMap.get(0).get("status")); - if(("D").equals(status)){ + if (("D").equals(status)) { map.put("msgCode", Constants.FAIL); map.put("msgDesc", "이미 취소된 연차입니다."); - }else{ + } else { // 취소가 아닐 경우만 업데이트 // 취소처리 webAttendanceSqlMapDAO.updateAttendanceCancel(paramMap); @@ -1619,28 +1713,27 @@ public class WebAttendanceServiceImpl implements WebAttendanceService { map.put("msgCode", Constants.OK); map.put("msgDesc", "처리되었습니다."); } - }else{ + } else { map.put("msgCode", Constants.FAIL); map.put("msgDesc", "휴무관리 정보가 없습니다."); } } - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); throw e; } - + log.debug("WebAttendanceServiceImpl updateAttendanceVacationCancel END"); return map; } - + public long getDateDays(String startDate, String endDate) throws Exception { Date format1 = new SimpleDateFormat("yyyy-MM-dd").parse(endDate); Date format2 = new SimpleDateFormat("yyyy-MM-dd").parse(startDate); - - long diffSec = (format1.getTime() - format2.getTime()) / 1000; //초 차이 - long diffDays = diffSec / (24*60*60); //일자수 차이 - - return diffDays+1; + + long diffSec = (format1.getTime() - format2.getTime()) / 1000; // 초 차이 + long diffDays = diffSec / (24 * 60 * 60); // 일자수 차이 + + return diffDays + 1; } } diff --git a/src/main/resources/mappers/WebAttendanceSqlMap.xml b/src/main/resources/mappers/WebAttendanceSqlMap.xml index 37a7a6f..cb298f9 100644 --- a/src/main/resources/mappers/WebAttendanceSqlMap.xml +++ b/src/main/resources/mappers/WebAttendanceSqlMap.xml @@ -76,6 +76,28 @@ ORDER BY MA.MEMBER_CODE ASC + +