diff --git a/src/main/java/com/dbnt/faisp/config/BaseBoard.java b/src/main/java/com/dbnt/faisp/config/BaseBoard.java new file mode 100644 index 00000000..8b0c8a43 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/config/BaseBoard.java @@ -0,0 +1,24 @@ +package com.dbnt.faisp.config; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import javax.persistence.Column; +import javax.persistence.Transient; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +public class BaseBoard extends BaseModel { + + @Column(name = "wrt_organ") + private String wrtOrgan; + @Column(name = "wrt_nm") + private String wrtNm; + @Column(name = "wrt_dt") + private LocalDateTime wrtDt; + +} diff --git a/src/main/java/com/dbnt/faisp/config/SecurityConfig.java b/src/main/java/com/dbnt/faisp/config/SecurityConfig.java index e6a58aef..0acc055d 100644 --- a/src/main/java/com/dbnt/faisp/config/SecurityConfig.java +++ b/src/main/java/com/dbnt/faisp/config/SecurityConfig.java @@ -61,7 +61,8 @@ public class SecurityConfig{ http.authorizeRequests() // 페이지 권한 설정 .antMatchers( "/dashboard", - "/refreshSession" + "/refreshSession", + "/fpiMgt/**" ).hasRole(Role.USER.name()) // USER, ADMIN 접근 허용 .antMatchers( "/codeMgt/**", diff --git a/src/main/java/com/dbnt/faisp/controller/FpiMgtController.java b/src/main/java/com/dbnt/faisp/controller/FpiMgtController.java index 47b18356..8f54df4d 100644 --- a/src/main/java/com/dbnt/faisp/controller/FpiMgtController.java +++ b/src/main/java/com/dbnt/faisp/controller/FpiMgtController.java @@ -5,11 +5,13 @@ 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.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + @RestController @RequiredArgsConstructor @RequestMapping("/fpiMgt") @@ -27,4 +29,25 @@ public class FpiMgtController { // 외사경찰견문관리 mav.addObject("searchParams", boardPlan); return mav; } + + @GetMapping("/planEditModal") + public ModelAndView planEditModal(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){ + ModelAndView mav = new ModelAndView("igActivities/fpiMgt/monthPlan/planEditModal"); + if(boardPlan.getPlanKey()!=null){ + boardPlan = monthPlanService.selectBoardPlan(boardPlan.getPlanKey()); + }else{ + boardPlan.setWrtOrgan(loginUser.getOgCd()); + boardPlan.setWrtNm(loginUser.getUserNm()); + boardPlan.setWrtDt(LocalDateTime.now()); + } + 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){ + return 0; + } } diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/MonthPlanService.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/MonthPlanService.java index e5616b3e..bb4e0ec5 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/MonthPlanService.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/MonthPlanService.java @@ -1,10 +1,25 @@ package com.dbnt.faisp.fpiMgt.monthPlan; +import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan; +import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanFile; +import com.dbnt.faisp.fpiMgt.monthPlan.repository.BoardPlanRepository; +import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanFileRepository; +import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanMainInfoRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor -public class MonthPlanService { // 월간계획 +public class MonthPlanService { + private final BoardPlanRepository boardPlanRepository; + private final PlanFileRepository planFileRepository; + private final PlanMainInfoRepository planMainInfoRepository; + + public BoardPlan selectBoardPlan(Integer planKey) { + BoardPlan savedPlan = boardPlanRepository.findById(planKey).orElse(null); + savedPlan.setFileList(planFileRepository.findByPlanKey(planKey)); + savedPlan.setMainInfoList(planMainInfoRepository.findByPlanKey(planKey)); + return savedPlan; + } } diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/BoardPlan.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/BoardPlan.java index 36e83225..74045e72 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/BoardPlan.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/BoardPlan.java @@ -1,6 +1,6 @@ package com.dbnt.faisp.fpiMgt.monthPlan.model; -import com.dbnt.faisp.config.BaseModel; +import com.dbnt.faisp.config.BaseBoard; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -8,6 +8,7 @@ import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; import javax.persistence.*; +import java.time.LocalDate; import java.util.List; @Getter @@ -17,28 +18,33 @@ import java.util.List; @DynamicInsert @DynamicUpdate @Table(name = "board_plan") -public class BoardPlan extends BaseModel { +public class BoardPlan extends BaseBoard { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "plan_key") private Integer planKey; - @Column(name = "cat1_cd") - private String cat1Cd; - @Column(name = "cat2_cd") - private String cat2Cd; - @Column(name = "cat3_cd") - private String cat3Cd; - @Column(name = "menu_url") - private String menuUrl; - @Column(name = "approval_chk") - private String approvalChk; + @Column(name = "plan_state") + private String planState; + @Column(name = "content_title") + private String contentTitle; + @Column(name = "plan_dt") + 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; @Transient - private List childList; - + private List mainInfoList; @Transient - private Integer cat1RowspanCnt; - @Transient - private Integer cat2RowspanCnt; + private List fileList; } diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanFile.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanFile.java index e5635317..a412f390 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanFile.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanFile.java @@ -1,14 +1,11 @@ package com.dbnt.faisp.fpiMgt.monthPlan.model; -import com.dbnt.faisp.config.BaseModel; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; import javax.persistence.*; -import java.util.List; +import java.io.Serializable; @Getter @Setter @@ -16,29 +13,34 @@ import java.util.List; @NoArgsConstructor @DynamicInsert @DynamicUpdate -@Table(name = "board_plan") -public class PlanFile extends BaseModel { +@Table(name = "plan_file") +@IdClass(PlanFile.PlanFileId.class) +public class PlanFile{ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "plan_key") private Integer planKey; - @Column(name = "cat1_cd") - private String cat1Cd; - @Column(name = "cat2_cd") - private String cat2Cd; - @Column(name = "cat3_cd") - private String cat3Cd; - @Column(name = "menu_url") - private String menuUrl; - @Column(name = "approval_chk") - private String approvalChk; + @Id + @Column(name = "file_seq") + private Integer fileSeq; + @Column(name = "orig_nm") + private String origNm; + @Column(name = "conv_nm") + private String convNm; + @Column(name = "file_extn") + private String fileExtn; + @Column(name = "file_size") + private Integer fileSize; + @Column(name = "save_path") + private String savePath; - @Transient - private List childList; - @Transient - private Integer cat1RowspanCnt; - @Transient - private Integer cat2RowspanCnt; + @Embeddable + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class PlanFileId implements Serializable { + private Integer planKey; + private Integer fileSeq; + } } diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanMainInfo.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanMainInfo.java index 6e793293..950b562a 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanMainInfo.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/model/PlanMainInfo.java @@ -1,14 +1,11 @@ package com.dbnt.faisp.fpiMgt.monthPlan.model; -import com.dbnt.faisp.config.BaseModel; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; import javax.persistence.*; -import java.util.List; +import java.io.Serializable; @Getter @Setter @@ -17,28 +14,25 @@ import java.util.List; @DynamicInsert @DynamicUpdate @Table(name = "board_plan") -public class PlanMainInfo extends BaseModel { +@IdClass(PlanMainInfo.PlanMainInfoId.class) +public class PlanMainInfo { @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "plan_key") private Integer planKey; - @Column(name = "cat1_cd") - private String cat1Cd; - @Column(name = "cat2_cd") - private String cat2Cd; - @Column(name = "cat3_cd") - private String cat3Cd; - @Column(name = "menu_url") - private String menuUrl; - @Column(name = "approval_chk") - private String approvalChk; - - @Transient - private List childList; - - @Transient - private Integer cat1RowspanCnt; - @Transient - private Integer cat2RowspanCnt; + @Id + @Column(name = "plan_seq") + private Integer planSeq; + @Column(name = "plan_type") + private String planType; + @Column(name = "plan_info") + private String planInfo; + @Embeddable + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class PlanMainInfoId implements Serializable { + private Integer planKey; + private Integer planSeq; + } } 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 new file mode 100644 index 00000000..0c163952 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/BoardPlanRepository.java @@ -0,0 +1,9 @@ +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/PlanFileRepository.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanFileRepository.java new file mode 100644 index 00000000..908e11bf --- /dev/null +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanFileRepository.java @@ -0,0 +1,11 @@ +package com.dbnt.faisp.fpiMgt.monthPlan.repository; + +import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanFile; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + + +public interface PlanFileRepository extends JpaRepository { + List findByPlanKey(Integer planKey); +} diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanMainInfoRepository.java b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanMainInfoRepository.java new file mode 100644 index 00000000..7aeb5f5b --- /dev/null +++ b/src/main/java/com/dbnt/faisp/fpiMgt/monthPlan/repository/PlanMainInfoRepository.java @@ -0,0 +1,11 @@ +package com.dbnt.faisp.fpiMgt.monthPlan.repository; + +import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanMainInfo; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + + +public interface PlanMainInfoRepository extends JpaRepository { + List findByPlanKey(Integer planKey); +} diff --git a/src/main/resources/static/js/igActivities/fpiMgt/monthPlan.js b/src/main/resources/static/js/igActivities/fpiMgt/monthPlan.js new file mode 100644 index 00000000..86bea80a --- /dev/null +++ b/src/main/resources/static/js/igActivities/fpiMgt/monthPlan.js @@ -0,0 +1,72 @@ + +$(document).on('click', '#addPlanBtn', function (){ + $.ajax({ + url: '/fpiMgt/planEditModal', + data: {planKey: null}, + type: 'GET', + dataType:"html", + success: function(html){ + $("#planEditBody").empty().append(html) + $("#planEditModal").modal('show'); + $("#planDt").datepicker({ + format: "yyyy-mm-dd", + language: "ko" + }); + }, + error:function(){ + + } + }); +}) + +$(document).on('click', '#planAddBtn', function (){ + $("#planDiv").append("") +}) + +$(document).on('click', '#detailPlanAddBtn', function (){ + const detailPlanDiv = $("#detailPlanDiv"); + detailPlanDiv.append(""); + const lastAppendTextarea = detailPlanDiv.children()[detailPlanDiv.children().length-1]; + $(lastAppendTextarea).summernote({ + lang:'ko-KR', + height: 120, + disableDragAndDrop: true, + toolbar: [ + ['style', ['style']], + ['font', ['bold', 'underline', 'clear']], + ['color', ['color']], + ['para', ['ul', 'ol', 'paragraph']], + ['table', ['table']] + ] + }); +}) + +$(document).on('click', '#savePlanBtn', function (){ + savePlan('S') +}) +$(document).on('click', '#saveTempBtn', function (){ + savePlan('T') +}) + +function savePlan(planState){ + if(confirm("저장하시겠습니까?")){ + $("#planState").val(planState); + contentFade("in"); + const formData = new FormData($("#planEditForm")[0]); + $.ajax({ + type : 'POST', + data : formData, + url : "/fpiMgt/savePlan", + processData: false, + contentType: false, + success : function(result) { + debugger + contentFade("out"); + }, + error : function(xhr, status) { + alert("저장에 실패하였습니다.") + contentFade("out"); + } + }) + } +} \ No newline at end of file diff --git a/src/main/resources/templates/igActivities/fpiMgt/monthPlan/monthPlan.html b/src/main/resources/templates/igActivities/fpiMgt/monthPlan/monthPlan.html index 57374427..5cb905b7 100644 --- a/src/main/resources/templates/igActivities/fpiMgt/monthPlan/monthPlan.html +++ b/src/main/resources/templates/igActivities/fpiMgt/monthPlan/monthPlan.html @@ -3,7 +3,7 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout/layout}"> - +
@@ -26,7 +26,7 @@
- +
@@ -49,9 +49,7 @@
-
- -
+
- +
@@ -90,51 +88,20 @@ -