From d0f9cefa80ff6f543b14a4ffb7113c85da959407 Mon Sep 17 00:00:00 2001 From: yoon Date: Thu, 13 Mar 2025 12:13:31 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B6=9C=ED=87=B4=EA=B7=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/CommutersController.java | 59 ++++++++++++++- .../localhost/mapper/CommutersMapper.java | 10 ++- .../localhost/mapper/NetprojctMapper.java | 1 + .../localhost/mapper/PromemberMapper.java | 2 + .../localhost/service/CommutersService.java | 73 ++++++++++++++----- .../localhost/service/NetprojctService.java | 6 ++ src/main/resources/mapper/CommutersMapper.xml | 73 +++++++++++++++---- src/main/resources/mapper/NetprojctMapper.xml | 13 ++-- src/main/resources/mapper/PromemberMapper.xml | 4 + 9 files changed, 198 insertions(+), 43 deletions(-) diff --git a/src/main/java/io/company/localhost/controller/api/CommutersController.java b/src/main/java/io/company/localhost/controller/api/CommutersController.java index 8689fb3..723522b 100644 --- a/src/main/java/io/company/localhost/controller/api/CommutersController.java +++ b/src/main/java/io/company/localhost/controller/api/CommutersController.java @@ -18,6 +18,8 @@ package io.company.localhost.controller.api; import java.util.List; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PatchMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -51,14 +53,63 @@ public class CommutersController { } /** - * 출퇴근 당일 조회 + * 퇴근 업데이트 + * + * @param map + * @return + * + */ + @PatchMapping("/updateLve") + public ApiResponse updateLeaveTime(@ReqMap MapDto map) { + boolean isLeaveTime = commutersService.updateLeaveTime(map); + return ApiResponse.ok(isLeaveTime); + } + + + /** + * 현재 달의 모든 출근 정보 조회 * * @param map * @return */ - @GetMapping("/today") - public ApiResponse> selectTodayCommuter(int memberSeq) { - return ApiResponse.ok(commutersService.selectTodayCommuter(memberSeq)); + @GetMapping("/month") + public ApiResponse> selectCommutersByMonth(int year, int month) { + return ApiResponse.ok(commutersService.selectCommutersByMonth(year, month)); + } + + /** + * 오늘 사용자의 출근 정보 조회 + * + * @param map + * @return + */ + @GetMapping("/today/{memberSeq}") + public ApiResponse> selectTodayCommuterInfo(@PathVariable Integer memberSeq) { + return ApiResponse.ok(commutersService.selectTodayCommuterInfo(memberSeq)); } + /** + * 오늘 출근 모든 사용자 조회 + * + * @param map + * @return + */ + @GetMapping("/todays") + public ApiResponse> selectTodayCommuter() { + return ApiResponse.ok(commutersService.selectTodayCommuter()); + } + + /** + * 출근 프로젝트 업데이트 + * + * @param map + * @return + * + */ + @PatchMapping("/update") + public ApiResponse updateCommuterProject(@ReqMap MapDto map) { + boolean isCommuter = commutersService.updateCommuterProject(map); + return ApiResponse.ok(isCommuter); + } + } diff --git a/src/main/java/io/company/localhost/mapper/CommutersMapper.java b/src/main/java/io/company/localhost/mapper/CommutersMapper.java index ca81364..80c54cb 100644 --- a/src/main/java/io/company/localhost/mapper/CommutersMapper.java +++ b/src/main/java/io/company/localhost/mapper/CommutersMapper.java @@ -27,6 +27,14 @@ public interface CommutersMapper { int updateLeaveTime(MapDto map); - List selectTodayCommuter(int memberSeq); + List selectCommutersByMonth(int year, int month); + + List selectTodayCommuterInfo(Integer memberSeq); + + List selectTodayCommuter(); + + int updateCommuterProject(MapDto map); + + int deleteCommuters(MapDto map); } diff --git a/src/main/java/io/company/localhost/mapper/NetprojctMapper.java b/src/main/java/io/company/localhost/mapper/NetprojctMapper.java index 9255cb9..61b4695 100644 --- a/src/main/java/io/company/localhost/mapper/NetprojctMapper.java +++ b/src/main/java/io/company/localhost/mapper/NetprojctMapper.java @@ -32,4 +32,5 @@ public interface NetprojctMapper { List selectProjectLog(int projctSeq); int deleteProject(MapDto map); + } diff --git a/src/main/java/io/company/localhost/mapper/PromemberMapper.java b/src/main/java/io/company/localhost/mapper/PromemberMapper.java index 278da6d..021c04f 100644 --- a/src/main/java/io/company/localhost/mapper/PromemberMapper.java +++ b/src/main/java/io/company/localhost/mapper/PromemberMapper.java @@ -32,5 +32,7 @@ public interface PromemberMapper { List selectProjectMembers(int projctSeq); List selectMemberProjects(int memberSeq); + + int deletePromember(MapDto map); } diff --git a/src/main/java/io/company/localhost/service/CommutersService.java b/src/main/java/io/company/localhost/service/CommutersService.java index 2c19b5a..9eae2b5 100644 --- a/src/main/java/io/company/localhost/service/CommutersService.java +++ b/src/main/java/io/company/localhost/service/CommutersService.java @@ -15,17 +15,13 @@ package io.company.localhost.service; import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.List; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import io.company.localhost.common.annotation.ReqMap; import io.company.localhost.common.dto.MapDto; import io.company.localhost.mapper.CommutersMapper; -import io.company.localhost.mapper.NetprojctMapper; -import io.company.localhost.mapper.PromemberMapper; -import io.company.localhost.mapper.commoncodMapper; import lombok.RequiredArgsConstructor; @Service @@ -42,6 +38,8 @@ public class CommutersService { */ public int insertCommuters(MapDto map) { map.put("commutDay", LocalDateTime.now()); + map.put("commutCme", LocalTime.now()); + int result = commutersMapper.insertCommuters(map); return result; @@ -52,21 +50,58 @@ public class CommutersService { * @param map * @return */ -// public List updateLeaveTime(MapDto map) { -// -// -// return ; -// } -// - - /** - * 당일 출근 기록 조회 - * @param memberSeq 사용자 번호 - * @return 당일 출근 정보 - */ - public List selectTodayCommuter(int memberSeq) { - return commutersMapper.selectTodayCommuter(memberSeq); + public boolean updateLeaveTime(MapDto map) { + + if(map.get("commutLve") != null) { + map.put("commutLve", null); + } else { + map.put("commutLve", LocalTime.now()); + } + + + return commutersMapper.updateLeaveTime(map) > 0; } + + /** + * 현재 달의 모든 출근 정보 조회 + * + * @param year, month + * @return + */ + public List selectCommutersByMonth(int year, int month) { + return commutersMapper.selectCommutersByMonth(year, month); + } + + /** + * 오늘 사용자 출근 정보 조회 + * + * @param memberSeq + * @return + */ + public List selectTodayCommuterInfo(Integer memberSeq) { + return commutersMapper.selectTodayCommuterInfo(memberSeq); + } + + /** + * 오늘 출근 모든 사용자 조회 + * + * @param + * @return + */ + public List selectTodayCommuter() { + return commutersMapper.selectTodayCommuter(); + } + + /** + * 출근 프로젝트 업데이트 + * + * @param map + * @return + */ + public boolean updateCommuterProject(MapDto map) { + return commutersMapper.updateCommuterProject(map) > 0; + } + } diff --git a/src/main/java/io/company/localhost/service/NetprojctService.java b/src/main/java/io/company/localhost/service/NetprojctService.java index 15d6983..3ee2891 100644 --- a/src/main/java/io/company/localhost/service/NetprojctService.java +++ b/src/main/java/io/company/localhost/service/NetprojctService.java @@ -22,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional; import io.company.localhost.common.annotation.ReqMap; import io.company.localhost.common.dto.MapDto; +import io.company.localhost.mapper.CommutersMapper; import io.company.localhost.mapper.NetprojctMapper; import io.company.localhost.mapper.PromemberMapper; import io.company.localhost.mapper.commoncodMapper; @@ -33,6 +34,7 @@ public class NetprojctService { private final commoncodMapper commoncodMapper; private final NetprojctMapper netprojctMapper; private final PromemberMapper promemberMapper; + private final CommutersMapper commutersMapper; /** @@ -123,6 +125,10 @@ public class NetprojctService { */ public boolean deleteProject(MapDto map) { + promemberMapper.deletePromember(map); + + commutersMapper.deleteCommuters(map); + boolean result = netprojctMapper.deleteProject(map) > 0; Integer color = map.getInt("projctCol"); diff --git a/src/main/resources/mapper/CommutersMapper.xml b/src/main/resources/mapper/CommutersMapper.xml index ee4dff3..1971a47 100644 --- a/src/main/resources/mapper/CommutersMapper.xml +++ b/src/main/resources/mapper/CommutersMapper.xml @@ -6,38 +6,83 @@ INSERT INTO commuters ( COMMUTSEQ, - MRMBERSEQ, + MEMBERSEQ, PROJCTSEQ, COMMUTCMT, - COMMUTLVT, + COMMUTLVE, COMMUTDAY, COMMUTARR ) VALUES ( #{commutSeq}, #{memberSeq}, #{projctSeq}, - #{commutCmt}, - #{commutLvt}, + #{commutCme}, + #{commutLve}, #{commutDay}, #{commutArr} ) - + UPDATE commuters - SET COMMUTLVT = #{commutLvt} - WHERE MRMBERSEQ = #{memberSeq} + SET COMMUTLVE = #{commutLve} + WHERE MEMBERSEQ = #{memberSeq} AND COMMUTDAY = CURDATE() - - + SELECT + c.COMMUTSEQ, + c.MEMBERSEQ, + c.PROJCTSEQ, + c.COMMUTCMT, + c.COMMUTLVE, + c.COMMUTDAY, + c.COMMUTARR, + m.MEMBERNAM as memberName, + m.MEMBERPRF as profile, + p.PROJCTNAM, + cc.CMNCODNAM AS projctcolor + FROM + commuters c + JOIN + netmember m ON c.MEMBERSEQ = m.MEMBERSEQ + JOIN + netprojct p ON c.PROJCTSEQ = p.PROJCTSEQ + LEFT JOIN commoncod cc ON p.PROJCTCOL = cc.CMNCODVAL AND cc.CMNCODYNP = '1' + WHERE + YEAR(c.COMMUTDAY) = #{year} + AND MONTH(c.COMMUTDAY) = #{month} + + + + + + + + + UPDATE commuters + SET PROJCTSEQ = #{projctSeq} + WHERE MEMBERSEQ = #{memberSeq} + AND COMMUTDAY = CURDATE() + + + + DELETE FROM commuters WHERE PROJCTSEQ = #{projctSeq} + diff --git a/src/main/resources/mapper/NetprojctMapper.xml b/src/main/resources/mapper/NetprojctMapper.xml index 2edfbc4..312ada9 100644 --- a/src/main/resources/mapper/NetprojctMapper.xml +++ b/src/main/resources/mapper/NetprojctMapper.xml @@ -30,6 +30,9 @@ AND SUBSTRING(p.PROJCTSTR, 1, 4) = #{category} + + AND (p.PROJCTEND IS NULL OR p.PROJCTEND > CURDATE()) + ORDER BY p.PROJCTSTR DESC @@ -105,9 +108,9 @@ - - DELETE FROM netprojct WHERE PROJCTSEQ = #{projctSeq} - - - + + DELETE FROM netprojct WHERE PROJCTSEQ = #{projctSeq} + + + diff --git a/src/main/resources/mapper/PromemberMapper.xml b/src/main/resources/mapper/PromemberMapper.xml index d9f5068..925d1e9 100644 --- a/src/main/resources/mapper/PromemberMapper.xml +++ b/src/main/resources/mapper/PromemberMapper.xml @@ -46,5 +46,9 @@ AND (p.PROJCTEND IS NULL OR p.PROJCTEND >= CURDATE()) ORDER BY p.PROJCTSTR DESC + + + DELETE FROM promember WHERE PROJCTSEQ = #{projctSeq} +