From 6be5f8d335b5a84313b2c7351ec68c9370d2f175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=84=9D=20=EC=B5=9C?= Date: Thu, 15 Sep 2022 18:20:30 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B2=A9=EB=B3=B4=EC=88=98=EC=A7=91=ED=99=9C?= =?UTF-8?q?=EB=8F=99=20=EA=B3=84=ED=9A=8D=EC=88=98=EB=A6=BD=20=EA=B2=B0?= =?UTF-8?q?=EC=9E=AC=EA=B8=B0=EB=8A=A5=20=EC=9E=91=EC=97=85=EC=A4=91.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/dbnt/faisp/config/Role.java | 4 +- .../com/dbnt/faisp/config/SecurityConfig.java | 12 +- .../dbnt/faisp/fpiMgt/FpiMgtController.java | 140 ++++++++++-------- .../monthPlan/mapper/MonthPlanMapper.java | 6 +- .../fpiMgt/monthPlan/model/PlanApprv.java | 45 ++++++ .../model/{BoardPlan.java => PlanBoard.java} | 18 +-- .../repository/BoardPlanRepository.java | 9 -- .../repository/PlanApprvRepository.java | 11 ++ .../repository/PlanBoardRepository.java | 9 ++ .../monthPlan/service/MonthPlanService.java | 41 +++-- .../mybatisMapper/MonthPlanMapper.xml | 27 ++-- .../resources/static/js/authMgt/authMgt.js | 2 +- .../js/igActivities/fpiMgt/affairPlan.js | 2 + .../js/igActivities/fpiMgt/commitPlan.js | 33 +++++ .../js/igActivities/fpiMgt/monthPlan.js | 6 +- .../static/js/igActivities/fpiMgt/stayPlan.js | 33 +++++ .../fpiMgt/affairPlan/commitPlan.html | 1 + .../fpiMgt/affairPlan/stayPlan.html | 26 +++- .../resources/templates/layout/layout.html | 4 +- 19 files changed, 302 insertions(+), 127 deletions(-) create mode 100644 src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanApprv.java rename src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/{BoardPlan.java => PlanBoard.java} (76%) delete mode 100644 src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/BoardPlanRepository.java create mode 100644 src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanApprvRepository.java create mode 100644 src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanBoardRepository.java create mode 100644 src/main/resources/static/js/igActivities/fpiMgt/commitPlan.js create mode 100644 src/main/resources/static/js/igActivities/fpiMgt/stayPlan.js diff --git a/src/main/java/com/dbnt/faisp/config/Role.java b/src/main/java/com/dbnt/faisp/config/Role.java index 30cd6296..4aecfbc0 100644 --- a/src/main/java/com/dbnt/faisp/config/Role.java +++ b/src/main/java/com/dbnt/faisp/config/Role.java @@ -6,9 +6,9 @@ import lombok.Getter; @AllArgsConstructor @Getter public enum Role { - ADMIN("ROLE_ADMIN"), + USER("ROLE_USER"), SUB_ADMIN("ROLE_SUB_ADMIN"), - USER("ROLE_USER"); + ADMIN("ROLE_ADMIN"); private String value; } diff --git a/src/main/java/com/dbnt/faisp/config/SecurityConfig.java b/src/main/java/com/dbnt/faisp/config/SecurityConfig.java index 0acc055d..b36bf6d5 100644 --- a/src/main/java/com/dbnt/faisp/config/SecurityConfig.java +++ b/src/main/java/com/dbnt/faisp/config/SecurityConfig.java @@ -63,16 +63,16 @@ public class SecurityConfig{ "/dashboard", "/refreshSession", "/fpiMgt/**" - ).hasRole(Role.USER.name()) // USER, ADMIN 접근 허용 - .antMatchers( - "/codeMgt/**", - "/menuMgt/**" - ).hasRole(Role.ADMIN.name()) // ADMIN만 접근 허용 + ).hasRole(Role.USER.name()) // USER 접근 허용 .antMatchers( "/authMgt/**", "/userMgt/**", "/organMgt/**" - ).hasRole(Role.SUB_ADMIN.name()) // SUB_ADMIN만 접근 허용 + ).hasRole(Role.SUB_ADMIN.name()) // SUB_ADMIN 접근 허용 + .antMatchers( + "/codeMgt/**", + "/menuMgt/**" + ).hasRole(Role.ADMIN.name()) // ADMIN 접근 허용 .antMatchers("/login").permitAll() // 로그인 페이지는 권한 없이 접근 허용 .and() // 로그인 설정 .formLogin().loginPage("/login") // Custom login form 사용 diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/FpiMgtController.java b/src/main/java/com/dbnt/faisp/fpiMgt/FpiMgtController.java index bb5e7a5d..7c53ffa9 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/FpiMgtController.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/FpiMgtController.java @@ -1,8 +1,9 @@ package com.dbnt.faisp.fpiMgt; import com.dbnt.faisp.authMgt.service.AuthMgtService; +import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanApprv; import com.dbnt.faisp.fpiMgt.monthPlan.service.MonthPlanService; -import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan; +import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanBoard; import com.dbnt.faisp.userInfo.model.UserInfo; import lombok.RequiredArgsConstructor; import org.springframework.security.core.annotation.AuthenticationPrincipal; @@ -23,7 +24,7 @@ public class FpiMgtController { // 외사경찰견문관리 private final AuthMgtService authMgtService; @GetMapping("/monthPlanPage") - public ModelAndView monthPlanPage(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){ + public ModelAndView monthPlanPage(@AuthenticationPrincipal UserInfo loginUser, PlanBoard planBoard){ ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/monthPlan"); Map params = new HashMap<>(); params.put("userSeq", loginUser.getUserSeq()); @@ -33,59 +34,60 @@ public class FpiMgtController { // 외사경찰견문관리 switch (accessAuth){ case "ACC001": // 조회 case "ACC002": // 작성 // 자신이 작성한 문서만 열람가능 - boardPlan.setWrtUserSeq(loginUser.getUserSeq()); + planBoard.setWrtUserSeq(loginUser.getUserSeq()); break; case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능 - boardPlan.setOrganCdList(loginUser.getOrganCdList()); + planBoard.setOrganCdList(loginUser.getOrganCdList()); mav.addObject("mgtOrganList", loginUser.getOrganCdList()); break; } - mav.addObject("accessAuth", accessAuth); //결재권한 확인 - //authMgtService.selectApprovalConfigList(params); - boardPlan.setQueryInfo(); - mav.addObject("planList", monthPlanService.selectBoardPlanList(boardPlan)); - boardPlan.setContentCnt(monthPlanService.selectBoardPlanListCnt(boardPlan)); - boardPlan.setPaginationInfo(); - mav.addObject("searchParams", boardPlan); + String apprvAuth = authMgtService.selectApprovalConfigList(params).get(0).getApprovalAuth(); + mav.addObject("accessAuth", accessAuth); + mav.addObject("apprvAuth", apprvAuth); + planBoard.setQueryInfo(); + mav.addObject("planList", monthPlanService.selectPlanBoardList(planBoard)); + planBoard.setContentCnt(monthPlanService.selectPlanBoardListCnt(planBoard)); + planBoard.setPaginationInfo(); + mav.addObject("searchParams", planBoard); return mav; } @GetMapping("/planEditModal") - public ModelAndView planEditModal(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){ + public ModelAndView planEditModal(@AuthenticationPrincipal UserInfo loginUser, PlanBoard planBoard){ ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planEditModal"); - if(boardPlan.getPlanKey()!=null){ - boardPlan = monthPlanService.selectBoardPlan(boardPlan.getPlanKey()); + if(planBoard.getPlanKey()!=null){ + planBoard = monthPlanService.selectPlanBoard(planBoard.getPlanKey()); }else{ - boardPlan.setWrtOrgan(loginUser.getOgCd()); - boardPlan.setWrtUserSeq(loginUser.getUserSeq()); - boardPlan.setWrtUserNm(loginUser.getUserNm()); - boardPlan.setWrtDt(LocalDateTime.now()); + planBoard.setWrtOrgan(loginUser.getOgCd()); + planBoard.setWrtUserSeq(loginUser.getUserSeq()); + planBoard.setWrtUserNm(loginUser.getUserNm()); + planBoard.setWrtDt(LocalDateTime.now()); } - mav.addObject("plan", boardPlan); + mav.addObject("plan", planBoard); return mav; } @GetMapping("/planViewModal") - public ModelAndView planViewModal(BoardPlan boardPlan){ + public ModelAndView planViewModal(PlanBoard planBoard){ ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planViewModal"); - boardPlan = monthPlanService.selectBoardPlan(boardPlan.getPlanKey()); - mav.addObject("plan", boardPlan); + planBoard = monthPlanService.selectPlanBoard(planBoard.getPlanKey()); + mav.addObject("plan", planBoard); return mav; } @PostMapping("/savePlan") - public Integer savePlan(BoardPlan boardPlan, + public Integer savePlan(PlanBoard planBoard, @RequestParam(value = "planInfos", required = false) List planInfos, @RequestParam(value = "detailPlanInfos", required = false)List detailPlanInfos, MultipartHttpServletRequest request, @RequestParam(value = "fileSeq", required = false) List deleteFileSeq){ - boardPlan.setMultipartFileList(request.getMultiFileMap().get("uploadFiles")); - return monthPlanService.saveBoardPlan(boardPlan, planInfos, detailPlanInfos, deleteFileSeq); + planBoard.setMultipartFileList(request.getMultiFileMap().get("uploadFiles")); + return monthPlanService.savePlanBoard(planBoard, planInfos, detailPlanInfos, deleteFileSeq); } @GetMapping("/apprvStayPage") - public ModelAndView apprvStayPage(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){ + public ModelAndView apprvStayPage(@AuthenticationPrincipal UserInfo loginUser, PlanBoard planBoard){ ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/stayPlan"); Map params = new HashMap<>(); params.put("userSeq", loginUser.getUserSeq()); @@ -94,38 +96,51 @@ public class FpiMgtController { // 외사경찰견문관리 String accessAuth = authMgtService.selectAccessConfigList(params).get(0).getAccessAuth(); switch (accessAuth){ case "ACC001": // 조회 - case "ACC002": // 작성 // 자신이 작성한 문서만 열람가능 - boardPlan.setWrtUserSeq(loginUser.getUserSeq()); + case "ACC002": // 작성 // 자신의 관서 내에서 작성한 문서만 열람가능 + planBoard.setWrtOrgan(loginUser.getOgCd()); break; case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능 - boardPlan.setOrganCdList(loginUser.getOrganCdList()); + planBoard.setOrganCdList(loginUser.getOrganCdList()); mav.addObject("mgtOrganList", loginUser.getOrganCdList()); break; } //결재권한 확인 String apprvAuth = authMgtService.selectApprovalConfigList(params).get(0).getApprovalAuth(); - switch (apprvAuth){ - case "ACC004": // 계장대행 - case "ACC003": // 계장 // 결재대기 문서 조회 - boardPlan.setPlanState("DST002"); - break; - case "ACC002": // 부장대행 - case "ACC001": // 부장 // 계장승인 문서 조회 - boardPlan.setPlanState("DST004"); - break; + if(apprvAuth==null) { + planBoard.setWrtUserSeq(loginUser.getUserSeq()); + }else{ + mav.addObject("userNm", loginUser.getUserNm()); + switch (apprvAuth){ + case "APC004": // 계장대행 + case "APC003": // 계장 // 결재대기 문서 조회 + planBoard.setPlanState("DST002"); + break; + case "APC002": // 부장대행 + case "APC001": // 부장 // 계장승인 문서 조회 + planBoard.setPlanState("DST004"); + break; + } } mav.addObject("accessAuth", accessAuth); mav.addObject("apprvAuth", apprvAuth); - boardPlan.setQueryInfo(); - mav.addObject("planList", monthPlanService.selectBoardPlanList(boardPlan)); - boardPlan.setContentCnt(monthPlanService.selectBoardPlanListCnt(boardPlan)); - boardPlan.setPaginationInfo(); - mav.addObject("searchParams", boardPlan); + planBoard.setQueryInfo(); + mav.addObject("planList", monthPlanService.selectPlanBoardList(planBoard)); + planBoard.setContentCnt(monthPlanService.selectPlanBoardListCnt(planBoard)); + planBoard.setPaginationInfo(); + mav.addObject("searchParams", planBoard); return mav; } + @PostMapping("/planStateChange") + public Integer planStateChange(@AuthenticationPrincipal UserInfo loginUser, PlanApprv apprv){ + apprv.setUserSeq(loginUser.getUserSeq()); + apprv.setUserNm(loginUser.getUserNm()); + apprv.setSaveDt(LocalDateTime.now()); + return monthPlanService.planStateChange(apprv); + } + @GetMapping("/apprvCommitPage") - public ModelAndView apprvCommitPage(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){ + public ModelAndView apprvCommitPage(@AuthenticationPrincipal UserInfo loginUser, PlanBoard planBoard){ ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/commitPlan"); Map params = new HashMap<>(); params.put("userSeq", loginUser.getUserSeq()); @@ -135,32 +150,37 @@ public class FpiMgtController { // 외사경찰견문관리 switch (accessAuth){ case "ACC001": // 조회 case "ACC002": // 작성 // 자신의 관서 내에서 작성한 문서만 열람가능 - boardPlan.setWrtOrgan(loginUser.getOgCd()); + planBoard.setWrtOrgan(loginUser.getOgCd()); break; case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능 - boardPlan.setOrganCdList(loginUser.getOrganCdList()); + planBoard.setOrganCdList(loginUser.getOrganCdList()); mav.addObject("mgtOrganList", loginUser.getOrganCdList()); break; } //결재권한 확인 String apprvAuth = authMgtService.selectApprovalConfigList(params).get(0).getApprovalAuth(); - switch (apprvAuth){ - case "ACC004": // 계장대행 - case "ACC003": // 계장 // 계장반려, 계장승인 문서 조회 - boardPlan.setPlanState("DST002"); - break; - case "ACC002": // 부장대행 - case "ACC001": // 부장 // 부장반려, 부장승인 문서 조회 - boardPlan.setPlanState("DST004"); - break; + if(apprvAuth==null) { + planBoard.setWrtUserSeq(loginUser.getUserSeq()); + planBoard.setUserType("normal"); + }else{ + switch (apprvAuth) { + case "APC004": // 계장대행 + case "APC003": // 계장 // 계장반려, 계장승인 문서 조회 + planBoard.setUserType("section"); + break; + case "APC002": // 부장대행 + case "APC001": // 부장 // 부장반려, 부장승인 문서 조회 + planBoard.setUserType("head"); + break; + } } mav.addObject("accessAuth", accessAuth); mav.addObject("apprvAuth", apprvAuth); - boardPlan.setQueryInfo(); - mav.addObject("planList", monthPlanService.selectBoardPlanList(boardPlan)); - boardPlan.setContentCnt(monthPlanService.selectBoardPlanListCnt(boardPlan)); - boardPlan.setPaginationInfo(); - mav.addObject("searchParams", boardPlan); + planBoard.setQueryInfo(); + mav.addObject("planList", monthPlanService.selectPlanBoardList(planBoard)); + planBoard.setContentCnt(monthPlanService.selectPlanBoardListCnt(planBoard)); + planBoard.setPaginationInfo(); + mav.addObject("searchParams", planBoard); return mav; } } diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/mapper/MonthPlanMapper.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/mapper/MonthPlanMapper.java index c47763fd..e13632dc 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/mapper/MonthPlanMapper.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/mapper/MonthPlanMapper.java @@ -1,6 +1,6 @@ package com.dbnt.faisp.fpiMgt.monthPlan.mapper; -import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan; +import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanBoard; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -8,7 +8,7 @@ import java.util.List; @Mapper public interface MonthPlanMapper { - List selectBoardPlanList(BoardPlan boardPlan); + List selectPlanBoardList(PlanBoard planBoard); - Integer selectBoardPlanListCnt(BoardPlan boardPlan); + Integer selectPlanBoardListCnt(PlanBoard planBoard); } diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanApprv.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanApprv.java new file mode 100644 index 00000000..9c7be594 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanApprv.java @@ -0,0 +1,45 @@ +package com.dbnt.faisp.fpiMgt.monthPlan.model; + +import lombok.*; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; +import java.io.Serializable; +import java.time.LocalDateTime; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@Table(name = "plan_apprv") +@IdClass(PlanApprv.PlanApprvId.class) +public class PlanApprv { + @Id + @Column(name = "plan_key") + private Integer planKey; + @Id + @Column(name = "apprv_seq") + private Integer apprvSeq; + @Column(name = "state") + private String state; + @Column(name = "user_seq") + private Integer userSeq; + @Column(name = "user_nm") + private String userNm; + @Column(name = "etc") + private String etc; + @Column(name = "save_dt") + private LocalDateTime saveDt; + + @Embeddable + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class PlanApprvId implements Serializable { + private Integer planKey; + private Integer apprvSeq; + } +} diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/BoardPlan.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanBoard.java similarity index 76% rename from src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/BoardPlan.java rename to src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanBoard.java index aa61b1c5..97c06a67 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/BoardPlan.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanBoard.java @@ -20,8 +20,8 @@ import java.util.List; @NoArgsConstructor @DynamicInsert @DynamicUpdate -@Table(name = "board_plan") -public class BoardPlan extends BaseModel { +@Table(name = "plan_board") +public class PlanBoard extends BaseModel { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "plan_key") @@ -31,18 +31,6 @@ public class BoardPlan extends BaseModel { @Column(name = "plan_dt") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate planDt; - @Column(name = "section_nm") - private String sectionNm; - @Column(name = "section_apprv") - private String sectionApprv; - @Column(name = "section_etc") - private String sectionEtc; - @Column(name = "head_nm") - private String headNm; - @Column(name = "head_apprv") - private String headApprv; - @Column(name = "head_etc") - private String headEtc; @Column(name = "wrt_organ") private String wrtOrgan; @Column(name = "wrt_user_nm") @@ -55,6 +43,8 @@ public class BoardPlan extends BaseModel { @Column(name = "wrt_user_seq") private Integer wrtUserSeq; + @Transient + private String userType; @Transient private Integer fileCnt; @Transient diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/BoardPlanRepository.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/BoardPlanRepository.java deleted file mode 100644 index 0c163952..00000000 --- a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/BoardPlanRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.dbnt.faisp.fpiMgt.monthPlan.repository; - -import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan; -import org.springframework.data.jpa.repository.JpaRepository; - - -public interface BoardPlanRepository extends JpaRepository { - -} diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanApprvRepository.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanApprvRepository.java new file mode 100644 index 00000000..e3e4c278 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanApprvRepository.java @@ -0,0 +1,11 @@ +package com.dbnt.faisp.fpiMgt.monthPlan.repository; + +import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanApprv; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + + +public interface PlanApprvRepository extends JpaRepository { + Optional findTopByPlanKeyOrderByApprvSeqDesc(Integer planKey); +} diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanBoardRepository.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanBoardRepository.java new file mode 100644 index 00000000..145de070 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanBoardRepository.java @@ -0,0 +1,9 @@ +package com.dbnt.faisp.fpiMgt.monthPlan.repository; + +import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanBoard; +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface PlanBoardRepository extends JpaRepository { + +} diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/service/MonthPlanService.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/service/MonthPlanService.java index 159cf11a..cb7a1b54 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/service/MonthPlanService.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/service/MonthPlanService.java @@ -4,19 +4,19 @@ package com.dbnt.faisp.fpiMgt.monthPlan.service; import com.dbnt.faisp.config.BaseService; import com.dbnt.faisp.config.FileInfo; import com.dbnt.faisp.fpiMgt.monthPlan.mapper.MonthPlanMapper; -import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan; +import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanApprv; +import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanBoard; import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanFile; import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanMainInfo; -import com.dbnt.faisp.fpiMgt.monthPlan.repository.BoardPlanRepository; +import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanApprvRepository; +import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanBoardRepository; import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanFileRepository; import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanMainInfoRepository; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import javax.persistence.Transient; import java.io.File; import java.io.IOException; import java.util.List; @@ -25,13 +25,14 @@ import java.util.UUID; @Service @RequiredArgsConstructor public class MonthPlanService extends BaseService { - private final BoardPlanRepository boardPlanRepository; + private final PlanBoardRepository planBoardRepository; private final PlanFileRepository planFileRepository; private final PlanMainInfoRepository planMainInfoRepository; + private final PlanApprvRepository planApprvRepository; private final MonthPlanMapper monthPlanMapper; - public BoardPlan selectBoardPlan(Integer planKey) { - BoardPlan savedPlan = boardPlanRepository.findById(planKey).orElse(null); + public PlanBoard selectPlanBoard(Integer planKey) { + PlanBoard savedPlan = planBoardRepository.findById(planKey).orElse(null); if (savedPlan != null) { savedPlan.setFileList(planFileRepository.findByPlanKey(planKey)); savedPlan.setMainInfoList(planMainInfoRepository.findByPlanKey(planKey)); @@ -40,15 +41,15 @@ public class MonthPlanService extends BaseService { } @Transactional - public Integer saveBoardPlan(BoardPlan boardPlan, List planInfos, List detailPlanInfos, List deleteFileSeq) { - Integer planKey = boardPlanRepository.save(boardPlan).getPlanKey(); + public Integer savePlanBoard(PlanBoard planBoard, List planInfos, List detailPlanInfos, List deleteFileSeq) { + Integer planKey = planBoardRepository.save(planBoard).getPlanKey(); Integer infoSeq = savePlanMainInfos(planKey,0, "S", planInfos);//요약 summery savePlanMainInfos(planKey, infoSeq, "D", detailPlanInfos);//상세 detail if(deleteFileSeq != null && deleteFileSeq.size()>0){ deletePlanFile(planKey, deleteFileSeq); } - if(boardPlan.getMultipartFileList()!=null){ - saveUploadFiles(planKey, boardPlan.getMultipartFileList()); + if(planBoard.getMultipartFileList()!=null){ + saveUploadFiles(planKey, planBoard.getMultipartFileList()); } return planKey; } @@ -65,12 +66,12 @@ public class MonthPlanService extends BaseService { return planSeq; } - public List selectBoardPlanList(BoardPlan boardPlan) { - return monthPlanMapper.selectBoardPlanList(boardPlan); + public List selectPlanBoardList(PlanBoard planBoard) { + return monthPlanMapper.selectPlanBoardList(planBoard); } - public Integer selectBoardPlanListCnt(BoardPlan boardPlan) { - return monthPlanMapper.selectBoardPlanListCnt(boardPlan); + public Integer selectPlanBoardListCnt(PlanBoard planBoard) { + return monthPlanMapper.selectPlanBoardListCnt(planBoard); } private void saveUploadFiles(Integer planKey, List multipartFileList){ @@ -125,4 +126,14 @@ public class MonthPlanService extends BaseService { public FileInfo selectPlanFile(Integer parentKey, Integer fileSeq) { return planFileRepository.findById(new PlanFile.PlanFileId(parentKey, fileSeq)).orElse(null); } + + @Transactional + public Integer planStateChange(PlanApprv apprv) { + PlanBoard savedPlan = planBoardRepository.findById(apprv.getPlanKey()).orElse(null); + savedPlan.setPlanState(apprv.getState()); + PlanApprv lastApprv = planApprvRepository.findTopByPlanKeyOrderByApprvSeqDesc(apprv.getPlanKey()).orElse(null); + apprv.setApprvSeq(lastApprv==null?1:lastApprv.getApprvSeq()+1); + planApprvRepository.save(apprv); + return apprv.getApprvSeq(); + } } diff --git a/src/main/resources/mybatisMapper/MonthPlanMapper.xml b/src/main/resources/mybatisMapper/MonthPlanMapper.xml index 0d120faa..493624ed 100644 --- a/src/main/resources/mybatisMapper/MonthPlanMapper.xml +++ b/src/main/resources/mybatisMapper/MonthPlanMapper.xml @@ -4,7 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + and a.wrt_user_seq = #{wrtUserSeq} @@ -43,32 +43,41 @@ #{organCd} + + + and a.plan_state in ('DST003', 'DST004', 'DST005', 'DST006') + + + and a.plan_state in ('DST003', 'DST004', 'DST005', 'DST006') + + + and a.plan_state in ('DST003', 'DST005', 'DST006') + + - select a.plan_key, a.content_title, a.plan_state, a.plan_dt, - a.section_apprv, - a.head_apprv, a.wrt_organ, a.wrt_user_nm, a.wrt_dt, b.fileCnt - from board_plan a + from plan_board a left outer join (select plan_key, count(file_seq) as fileCnt from plan_file group by plan_key) b on a.plan_key = b.plan_key - + order by plan_key desc limit #{rowCnt} offset #{firstIndex} - select count(*) - from board_plan a - + from plan_board a + \ No newline at end of file diff --git a/src/main/resources/static/js/authMgt/authMgt.js b/src/main/resources/static/js/authMgt/authMgt.js index 2bb37189..24bc0d4c 100644 --- a/src/main/resources/static/js/authMgt/authMgt.js +++ b/src/main/resources/static/js/authMgt/authMgt.js @@ -47,7 +47,7 @@ $(document).on('click', '#saveAuthBtn', function (){ const authList = {}; authList.accessConfigList = accessConfigList; authList.approvalConfigList = approvalConfigList; - debugger + $.ajax({ type : 'POST', url : "/authMgt/saveAuth", diff --git a/src/main/resources/static/js/igActivities/fpiMgt/affairPlan.js b/src/main/resources/static/js/igActivities/fpiMgt/affairPlan.js index d125b053..f0bf24e4 100644 --- a/src/main/resources/static/js/igActivities/fpiMgt/affairPlan.js +++ b/src/main/resources/static/js/igActivities/fpiMgt/affairPlan.js @@ -7,6 +7,8 @@ $(document).on('click', '#apprvStayTab', function (){ $(document).on('click', '#apprvCommitTab', function (){ location.href = "/fpiMgt/apprvCommitPage"; }) + + function getViewModal(planKey){ $.ajax({ url: '/fpiMgt/planViewModal', diff --git a/src/main/resources/static/js/igActivities/fpiMgt/commitPlan.js b/src/main/resources/static/js/igActivities/fpiMgt/commitPlan.js new file mode 100644 index 00000000..88f3a617 --- /dev/null +++ b/src/main/resources/static/js/igActivities/fpiMgt/commitPlan.js @@ -0,0 +1,33 @@ + +$(document).on('click', '.planTr', function (){ + $(".trChkBox").prop("checked", false); + $(this).find(".trChkBox").prop("checked", true); + getViewModal(Number($(this).find(".planKey").val())); +}) + +$(document).on('click', '.apprvBtn', function (){ + $("#apprvFormPlanKey").val($("#viewModalPlanKey").val()); + $("#viewModalApprvValue").val($(this).attr("data-planstate")); + if(confirm($(this).val()+"하시겠습니까?")){ + const formData = new FormData($("#apprvForm")[0]); + contentFade("in") + $.ajax({ + type : 'POST', + data : formData, + url : "/fpiMgt/planStateChange", + processData: false, + contentType: false, + beforeSend: function (xhr){ + xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val()); + }, + success : function(result) { + alert("저장되었습니다") + contentFade("out"); + }, + error : function(xhr, status) { + alert("저장에 실패하였습니다."); + contentFade("out"); + } + }) + } +}) \ No newline at end of file diff --git a/src/main/resources/static/js/igActivities/fpiMgt/monthPlan.js b/src/main/resources/static/js/igActivities/fpiMgt/monthPlan.js index bd78ca0f..f38c7ef9 100644 --- a/src/main/resources/static/js/igActivities/fpiMgt/monthPlan.js +++ b/src/main/resources/static/js/igActivities/fpiMgt/monthPlan.js @@ -7,14 +7,14 @@ $(function(){ }); }) -$(document).on('click', '#addPlanBtn', function (){ - getEditModal(null) -}) $(document).on('click', '.planTr', function (){ $(".trChkBox").prop("checked", false); $(this).find(".trChkBox").prop("checked", true); getViewModal(Number($(this).find(".planKey").val())); }) +$(document).on('click', '#addPlanBtn', function (){ + getEditModal(null) +}) $(document).on('click', '#editPlanBtn', function (){ $("#planViewModal").modal('hide'); getEditModal(Number($("#planViewBody").find("[name='planKey']").val())); diff --git a/src/main/resources/static/js/igActivities/fpiMgt/stayPlan.js b/src/main/resources/static/js/igActivities/fpiMgt/stayPlan.js new file mode 100644 index 00000000..88f3a617 --- /dev/null +++ b/src/main/resources/static/js/igActivities/fpiMgt/stayPlan.js @@ -0,0 +1,33 @@ + +$(document).on('click', '.planTr', function (){ + $(".trChkBox").prop("checked", false); + $(this).find(".trChkBox").prop("checked", true); + getViewModal(Number($(this).find(".planKey").val())); +}) + +$(document).on('click', '.apprvBtn', function (){ + $("#apprvFormPlanKey").val($("#viewModalPlanKey").val()); + $("#viewModalApprvValue").val($(this).attr("data-planstate")); + if(confirm($(this).val()+"하시겠습니까?")){ + const formData = new FormData($("#apprvForm")[0]); + contentFade("in") + $.ajax({ + type : 'POST', + data : formData, + url : "/fpiMgt/planStateChange", + processData: false, + contentType: false, + beforeSend: function (xhr){ + xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val()); + }, + success : function(result) { + alert("저장되었습니다") + contentFade("out"); + }, + error : function(xhr, status) { + alert("저장에 실패하였습니다."); + contentFade("out"); + } + }) + } +}) \ No newline at end of file diff --git a/src/main/resources/templates/igActivities/fpiMgt/affairPlan/commitPlan.html b/src/main/resources/templates/igActivities/fpiMgt/affairPlan/commitPlan.html index 7abf09e0..feb3f2a7 100644 --- a/src/main/resources/templates/igActivities/fpiMgt/affairPlan/commitPlan.html +++ b/src/main/resources/templates/igActivities/fpiMgt/affairPlan/commitPlan.html @@ -4,6 +4,7 @@ layout:decorate="~{layout/layout}"> +
diff --git a/src/main/resources/templates/igActivities/fpiMgt/affairPlan/stayPlan.html b/src/main/resources/templates/igActivities/fpiMgt/affairPlan/stayPlan.html index 4604b509..d7fb6b05 100644 --- a/src/main/resources/templates/igActivities/fpiMgt/affairPlan/stayPlan.html +++ b/src/main/resources/templates/igActivities/fpiMgt/affairPlan/stayPlan.html @@ -4,6 +4,7 @@ layout:decorate="~{layout/layout}"> +
@@ -169,11 +170,30 @@
- diff --git a/src/main/resources/templates/layout/layout.html b/src/main/resources/templates/layout/layout.html index dfc00da5..85fe8a47 100644 --- a/src/main/resources/templates/layout/layout.html +++ b/src/main/resources/templates/layout/layout.html @@ -33,7 +33,7 @@ - +