첩보수집활동 계획수립 결재기능 작업중.
parent
7448c93356
commit
6be5f8d335
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 사용
|
||||
|
|
|
|||
|
|
@ -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<String, Object> 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<String> planInfos,
|
||||
@RequestParam(value = "detailPlanInfos", required = false)List<String> detailPlanInfos,
|
||||
MultipartHttpServletRequest request,
|
||||
@RequestParam(value = "fileSeq", required = false) List<Integer> 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<String, Object> 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();
|
||||
if(apprvAuth==null) {
|
||||
planBoard.setWrtUserSeq(loginUser.getUserSeq());
|
||||
}else{
|
||||
mav.addObject("userNm", loginUser.getUserNm());
|
||||
switch (apprvAuth){
|
||||
case "ACC004": // 계장대행
|
||||
case "ACC003": // 계장 // 결재대기 문서 조회
|
||||
boardPlan.setPlanState("DST002");
|
||||
case "APC004": // 계장대행
|
||||
case "APC003": // 계장 // 결재대기 문서 조회
|
||||
planBoard.setPlanState("DST002");
|
||||
break;
|
||||
case "ACC002": // 부장대행
|
||||
case "ACC001": // 부장 // 계장승인 문서 조회
|
||||
boardPlan.setPlanState("DST004");
|
||||
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<String, Object> 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();
|
||||
if(apprvAuth==null) {
|
||||
planBoard.setWrtUserSeq(loginUser.getUserSeq());
|
||||
planBoard.setUserType("normal");
|
||||
}else{
|
||||
switch (apprvAuth) {
|
||||
case "ACC004": // 계장대행
|
||||
case "ACC003": // 계장 // 계장반려, 계장승인 문서 조회
|
||||
boardPlan.setPlanState("DST002");
|
||||
case "APC004": // 계장대행
|
||||
case "APC003": // 계장 // 계장반려, 계장승인 문서 조회
|
||||
planBoard.setUserType("section");
|
||||
break;
|
||||
case "ACC002": // 부장대행
|
||||
case "ACC001": // 부장 // 부장반려, 부장승인 문서 조회
|
||||
boardPlan.setPlanState("DST004");
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<BoardPlan> selectBoardPlanList(BoardPlan boardPlan);
|
||||
List<PlanBoard> selectPlanBoardList(PlanBoard planBoard);
|
||||
|
||||
Integer selectBoardPlanListCnt(BoardPlan boardPlan);
|
||||
Integer selectPlanBoardListCnt(PlanBoard planBoard);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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<BoardPlan, Integer> {
|
||||
|
||||
}
|
||||
|
|
@ -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<PlanApprv, PlanApprv.PlanApprvId> {
|
||||
Optional<PlanApprv> findTopByPlanKeyOrderByApprvSeqDesc(Integer planKey);
|
||||
}
|
||||
|
|
@ -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<PlanBoard, Integer> {
|
||||
|
||||
}
|
||||
|
|
@ -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<String> planInfos, List<String> detailPlanInfos, List<Integer> deleteFileSeq) {
|
||||
Integer planKey = boardPlanRepository.save(boardPlan).getPlanKey();
|
||||
public Integer savePlanBoard(PlanBoard planBoard, List<String> planInfos, List<String> detailPlanInfos, List<Integer> 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<BoardPlan> selectBoardPlanList(BoardPlan boardPlan) {
|
||||
return monthPlanMapper.selectBoardPlanList(boardPlan);
|
||||
public List<PlanBoard> 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<MultipartFile> 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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.dbnt.faisp.fpiMgt.monthPlan.mapper.MonthPlanMapper">
|
||||
<sql id="selectBoardPlanListWhere">
|
||||
<sql id="selectPlanBoardListWhere">
|
||||
<where>
|
||||
<if test='wrtUserSeq != null and wrtUserSeq != ""'>
|
||||
and a.wrt_user_seq = #{wrtUserSeq}
|
||||
|
|
@ -43,32 +43,41 @@
|
|||
#{organCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test='userType != null and userType != ""'>
|
||||
<if test='userType == "normal"'>
|
||||
and a.plan_state in ('DST003', 'DST004', 'DST005', 'DST006')
|
||||
</if>
|
||||
<if test='userType == "section"'>
|
||||
and a.plan_state in ('DST003', 'DST004', 'DST005', 'DST006')
|
||||
</if>
|
||||
<if test='userType == "head"'>
|
||||
and a.plan_state in ('DST003', 'DST005', 'DST006')
|
||||
</if>
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
<select id="selectBoardPlanList" resultType="BoardPlan" parameterType="BoardPlan">
|
||||
<select id="selectPlanBoardList" resultType="PlanBoard" parameterType="PlanBoard">
|
||||
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
|
||||
<include refid="selectBoardPlanListWhere"></include>
|
||||
<include refid="selectPlanBoardListWhere"></include>
|
||||
order by plan_key desc
|
||||
limit #{rowCnt} offset #{firstIndex}
|
||||
</select>
|
||||
<select id="selectBoardPlanListCnt" resultType="int" parameterType="BoardPlan">
|
||||
<select id="selectPlanBoardListCnt" resultType="int" parameterType="PlanBoard">
|
||||
select count(*)
|
||||
from board_plan a
|
||||
<include refid="selectBoardPlanListWhere"></include>
|
||||
from plan_board a
|
||||
<include refid="selectPlanBoardListWhere"></include>
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -47,7 +47,7 @@ $(document).on('click', '#saveAuthBtn', function (){
|
|||
const authList = {};
|
||||
authList.accessConfigList = accessConfigList;
|
||||
authList.approvalConfigList = approvalConfigList;
|
||||
debugger
|
||||
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : "/authMgt/saveAuth",
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
@ -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()));
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
@ -4,6 +4,7 @@
|
|||
layout:decorate="~{layout/layout}">
|
||||
<th:block layout:fragment="script">
|
||||
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/affairPlan.js}"></script>
|
||||
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/commitPlan.js}"></script>
|
||||
</th:block>
|
||||
<div layout:fragment="content">
|
||||
<main class="pt-3">
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
layout:decorate="~{layout/layout}">
|
||||
<th:block layout:fragment="script">
|
||||
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/affairPlan.js}"></script>
|
||||
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/stayPlan.js}"></script>
|
||||
</th:block>
|
||||
<div layout:fragment="content">
|
||||
<main class="pt-3">
|
||||
|
|
@ -169,11 +170,30 @@
|
|||
<h5 class="modal-title" id="planViewModalLabel">월간 계획 열람</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body" id="planViewBody">
|
||||
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-12" id="planViewBody"></div>
|
||||
<div class="col-12" th:if="${apprvAuth ne null}">
|
||||
<form action="#" method="post" id="apprvForm">
|
||||
<div class="row">
|
||||
<div class="col-10">
|
||||
<input type="hidden" name="planKey" id="apprvFormPlanKey">
|
||||
<input type="hidden" name="state" id="viewModalApprvValue">
|
||||
<input type="text" class="form-control form-control-sm" name="etc" placeholder="추가의견, 반려사유 기입">
|
||||
<input type="text" class="d-none" id="submitPrevention">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="button" class="btn btn-sm btn-success apprvBtn" th:data-planstate="${apprvAuth eq 'APC004'||apprvAuth eq 'APC003'?'DST004':'DST006'}" value="승인">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="button" class="btn btn-sm btn-danger apprvBtn" th:data-planstate="${apprvAuth eq 'APC004'||apprvAuth eq 'APC003'?'DST003':'DST005'}" value="반려">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-warning" id="editPlanBtn" th:unless="${accessAuth eq 'ACC001'}">수정</button>
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
<script type="text/javascript" th:src="@{/js/common.js}"></script>
|
||||
<!-- 컨텐츠페이지의 스크립트 영역이 들어감 -->
|
||||
<th:block layout:fragment="script"></th:block>
|
||||
<th:block sec:authorize="isAuthenticated()">
|
||||
<!--<th:block sec:authorize="isAuthenticated()">
|
||||
<script type="text/javascript">
|
||||
$(function (){
|
||||
/*세션 체크*/
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
}
|
||||
})
|
||||
</script>
|
||||
</th:block>
|
||||
</th:block>-->
|
||||
</head>
|
||||
<body class="d-flex flex-column h-100">
|
||||
<header th:replace="fragments/header :: headerFragment"></header>
|
||||
|
|
|
|||
Loading…
Reference in New Issue