package com.dbnt.faisp.fpiMgt; import com.dbnt.faisp.authMgt.service.AuthMgtService; import com.dbnt.faisp.fpiMgt.monthPlan.service.MonthPlanService; import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan; import com.dbnt.faisp.userInfo.model.UserInfo; import lombok.RequiredArgsConstructor; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequiredArgsConstructor @RequestMapping("/fpiMgt") public class FpiMgtController { // 외사경찰견문관리 private final MonthPlanService monthPlanService; private final AuthMgtService authMgtService; @GetMapping("/monthPlanPage") public ModelAndView monthPlanPage(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){ ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/monthPlan"); Map params = new HashMap<>(); params.put("userSeq", loginUser.getUserSeq()); params.put("menuUrl", "/fpiMgt/monthPlanPage"); //메뉴권한 확인 String accessAuth = authMgtService.selectAccessConfigList(params).get(0).getAccessAuth(); switch (accessAuth){ case "ACC001": // 조회 case "ACC002": // 작성 // 자신이 작성한 문서만 열람가능 boardPlan.setWrtUserSeq(loginUser.getUserSeq()); break; case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능 boardPlan.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); return mav; } @GetMapping("/planEditModal") public ModelAndView planEditModal(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){ ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planEditModal"); if(boardPlan.getPlanKey()!=null){ boardPlan = monthPlanService.selectBoardPlan(boardPlan.getPlanKey()); }else{ boardPlan.setWrtOrgan(loginUser.getOgCd()); boardPlan.setWrtUserSeq(loginUser.getUserSeq()); boardPlan.setWrtUserNm(loginUser.getUserNm()); boardPlan.setWrtDt(LocalDateTime.now()); } mav.addObject("plan", boardPlan); return mav; } @GetMapping("/planViewModal") public ModelAndView planViewModal(BoardPlan boardPlan){ ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planViewModal"); boardPlan = monthPlanService.selectBoardPlan(boardPlan.getPlanKey()); mav.addObject("plan", boardPlan); return mav; } @PostMapping("/savePlan") public Integer savePlan(BoardPlan boardPlan, @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); } @GetMapping("/apprvStayPage") public ModelAndView apprvStayPage(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){ ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/stayPlan"); Map params = new HashMap<>(); params.put("userSeq", loginUser.getUserSeq()); params.put("menuUrl", "/fpiMgt/monthPlanPage"); //메뉴권한 확인 String accessAuth = authMgtService.selectAccessConfigList(params).get(0).getAccessAuth(); switch (accessAuth){ case "ACC001": // 조회 case "ACC002": // 작성 // 자신이 작성한 문서만 열람가능 boardPlan.setWrtUserSeq(loginUser.getUserSeq()); break; case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능 boardPlan.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; } 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); return mav; } @GetMapping("/apprvCommitPage") public ModelAndView apprvCommitPage(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){ ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/commitPlan"); Map params = new HashMap<>(); params.put("userSeq", loginUser.getUserSeq()); params.put("menuUrl", "/fpiMgt/monthPlanPage"); //메뉴권한 확인 String accessAuth = authMgtService.selectAccessConfigList(params).get(0).getAccessAuth(); switch (accessAuth){ case "ACC001": // 조회 case "ACC002": // 작성 // 자신의 관서 내에서 작성한 문서만 열람가능 boardPlan.setWrtOrgan(loginUser.getOgCd()); break; case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능 boardPlan.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; } 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); return mav; } }