diff --git a/src/main/java/com/dbnt/faisp/config/BoardType.java b/src/main/java/com/dbnt/faisp/config/BoardType.java new file mode 100644 index 00000000..aa3526b8 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/config/BoardType.java @@ -0,0 +1,15 @@ +package com.dbnt.faisp.config; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public enum BoardType { + NOTICE("NOTICE"), + BOARD("BOARD"), + FILES("FILES"), + QNA("Q&A"); + + 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 b36bf6d5..a8ba27af 100644 --- a/src/main/java/com/dbnt/faisp/config/SecurityConfig.java +++ b/src/main/java/com/dbnt/faisp/config/SecurityConfig.java @@ -62,6 +62,7 @@ public class SecurityConfig{ .antMatchers( "/dashboard", "/refreshSession", + "/publicBoard/**", "/fpiMgt/**" ).hasRole(Role.USER.name()) // USER 접근 허용 .antMatchers( diff --git a/src/main/java/com/dbnt/faisp/publicBoard/PublicBoardController.java b/src/main/java/com/dbnt/faisp/publicBoard/PublicBoardController.java new file mode 100644 index 00000000..0d3b6592 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/publicBoard/PublicBoardController.java @@ -0,0 +1,64 @@ +package com.dbnt.faisp.publicBoard; + +import com.dbnt.faisp.config.BoardType; +import com.dbnt.faisp.config.Role; +import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanBoard; +import com.dbnt.faisp.publicBoard.model.PublicBoard; +import com.dbnt.faisp.publicBoard.service.PublicBoardService; +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.servlet.ModelAndView; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + + +@RestController +@RequiredArgsConstructor +@RequestMapping("/publicBoard") +public class PublicBoardController { + private final PublicBoardService publicBoardService; + + @GetMapping("/noticePage") + public ModelAndView organMgtPage(@AuthenticationPrincipal UserInfo loginUser, PublicBoard publicBoard) { + ModelAndView mav = new ModelAndView("publicBoard/notice"); + publicBoard.setQueryInfo(); + publicBoard.setPublicType(BoardType.NOTICE.getValue()); + if(loginUser.getAuthorities().contains(Role.SUB_ADMIN)){ + publicBoard.setOrganCdList(loginUser.getOrganCdList()); + } + mav.addObject("noticeList", publicBoardService.selectContentList(publicBoard)); + publicBoard.setContentCnt(publicBoardService.selectContentListCnt(publicBoard)); + publicBoard.setPaginationInfo(); + mav.addObject("searchParams", publicBoard); + return mav; + } + + @GetMapping("/editModal") + public ModelAndView editModal(@AuthenticationPrincipal UserInfo loginUser, PublicBoard publicBoard){ + ModelAndView mav = new ModelAndView("publicBoard/editModal"); + if(publicBoard.getPublicKey()!=null){ + publicBoard = publicBoardService.selectPublicBoard(publicBoard.getPublicKey()); + }else{ + publicBoard.setWrtOrgan(loginUser.getOgCd()); + publicBoard.setWrtPart(loginUser.getOfcCd()); + publicBoard.setWrtUserSeq(loginUser.getUserSeq()); + publicBoard.setWrtUserNm(loginUser.getUserNm()); + publicBoard.setWrtDt(LocalDateTime.now()); + } + mav.addObject("info", publicBoard); + return mav; + } + + @GetMapping("/planViewModal") + public ModelAndView planViewModal(@AuthenticationPrincipal UserInfo loginUser, PublicBoard publicBoard){ + ModelAndView mav = new ModelAndView("publicBoard/viewModal"); + publicBoard = publicBoardService.selectPublicBoard(publicBoard.getPublicKey()); + mav.addObject("info", publicBoard); + return mav; + } + +} diff --git a/src/main/java/com/dbnt/faisp/publicBoard/mapper/PublicBoardMapper.java b/src/main/java/com/dbnt/faisp/publicBoard/mapper/PublicBoardMapper.java new file mode 100644 index 00000000..4c7f65e7 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/publicBoard/mapper/PublicBoardMapper.java @@ -0,0 +1,13 @@ +package com.dbnt.faisp.publicBoard.mapper; + +import com.dbnt.faisp.publicBoard.model.PublicBoard; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface PublicBoardMapper { + List selectContentList(PublicBoard publicBoard); + + Integer selectContentListCnt(PublicBoard publicBoard); +} diff --git a/src/main/java/com/dbnt/faisp/publicBoard/model/PublicBoard.java b/src/main/java/com/dbnt/faisp/publicBoard/model/PublicBoard.java new file mode 100644 index 00000000..d1ebf8dc --- /dev/null +++ b/src/main/java/com/dbnt/faisp/publicBoard/model/PublicBoard.java @@ -0,0 +1,42 @@ +package com.dbnt.faisp.publicBoard.model; + +import com.dbnt.faisp.config.BaseModel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; +import java.time.LocalDateTime; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@Table(name = "public_board") +public class PublicBoard extends BaseModel { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "public_key") + private Integer publicKey; + @Column(name = "public_type") + private String publicType; + @Column(name = "title") + private String title; + @Column(name = "content") + private String content; + @Column(name = "wrt_organ") + private String wrtOrgan; + @Column(name = "wrt_part") + private String wrtPart; + @Column(name = "wrt_user_seq") + private Integer wrtUserSeq; + @Column(name = "wrt_user_nm") + private String wrtUserNm; + @Column(name = "wrt_dt") + private LocalDateTime wrtDt; + +} diff --git a/src/main/java/com/dbnt/faisp/publicBoard/model/PublicBoardComment.java b/src/main/java/com/dbnt/faisp/publicBoard/model/PublicBoardComment.java new file mode 100644 index 00000000..31a984e2 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/publicBoard/model/PublicBoardComment.java @@ -0,0 +1,51 @@ +package com.dbnt.faisp.publicBoard.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 = "public_board_comment") +@IdClass(PublicBoardComment.PublicBoardCommentId.class) +public class PublicBoardComment { + @Id + @Column(name = "public_key") + private Integer publicKey; + @Id + @Column(name = "comment_key") + private Integer commentKey; + @Column(name = "public_type") + private String public_type; + @Column(name = "content") + private String content; + @Column(name = "wrt_organ") + private String wrtOrgan; + @Column(name = "wrt_part") + private String wrtPart; + @Column(name = "wrt_user_seq") + private String wrtUserSeq; + @Column(name = "wrt_user_nm") + private String wrtUserNm; + @Column(name = "wrt_dt") + private LocalDateTime wrtDt; + @Column(name = "parent_comment") + private Integer parentComment; + + @Embeddable + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class PublicBoardCommentId implements Serializable { + private Integer publicKey; + private Integer commentKey; + } +} diff --git a/src/main/java/com/dbnt/faisp/publicBoard/model/PublicFile.java b/src/main/java/com/dbnt/faisp/publicBoard/model/PublicFile.java new file mode 100644 index 00000000..c863cafd --- /dev/null +++ b/src/main/java/com/dbnt/faisp/publicBoard/model/PublicFile.java @@ -0,0 +1,47 @@ +package com.dbnt.faisp.publicBoard.model; + +import com.dbnt.faisp.config.FileInfo; +import lombok.*; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; +import java.io.Serializable; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@Table(name = "plan_file") +@IdClass(PublicFile.PublicFileId.class) +public class PublicFile extends FileInfo { + @Id + @Column(name = "public_key") + private Integer publicKey; + @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 String fileSize; + @Column(name = "save_path") + private String savePath; + + + @Embeddable + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class PublicFileId implements Serializable { + private Integer publicKey; + private Integer fileSeq; + } + +} diff --git a/src/main/java/com/dbnt/faisp/publicBoard/repository/PublicBoardCommentRepository.java b/src/main/java/com/dbnt/faisp/publicBoard/repository/PublicBoardCommentRepository.java new file mode 100644 index 00000000..72ad24fe --- /dev/null +++ b/src/main/java/com/dbnt/faisp/publicBoard/repository/PublicBoardCommentRepository.java @@ -0,0 +1,9 @@ +package com.dbnt.faisp.publicBoard.repository; + +import com.dbnt.faisp.publicBoard.model.PublicBoardComment; +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface PublicBoardCommentRepository extends JpaRepository { + +} diff --git a/src/main/java/com/dbnt/faisp/publicBoard/repository/PublicBoardRepository.java b/src/main/java/com/dbnt/faisp/publicBoard/repository/PublicBoardRepository.java new file mode 100644 index 00000000..5bad1357 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/publicBoard/repository/PublicBoardRepository.java @@ -0,0 +1,9 @@ +package com.dbnt.faisp.publicBoard.repository; + +import com.dbnt.faisp.publicBoard.model.PublicBoard; +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface PublicBoardRepository extends JpaRepository { + +} diff --git a/src/main/java/com/dbnt/faisp/publicBoard/repository/PublicFileRepository.java b/src/main/java/com/dbnt/faisp/publicBoard/repository/PublicFileRepository.java new file mode 100644 index 00000000..fac049a4 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/publicBoard/repository/PublicFileRepository.java @@ -0,0 +1,9 @@ +package com.dbnt.faisp.publicBoard.repository; + +import com.dbnt.faisp.publicBoard.model.PublicFile; +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface PublicFileRepository extends JpaRepository { + +} diff --git a/src/main/java/com/dbnt/faisp/publicBoard/service/PublicBoardService.java b/src/main/java/com/dbnt/faisp/publicBoard/service/PublicBoardService.java new file mode 100644 index 00000000..47f09671 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/publicBoard/service/PublicBoardService.java @@ -0,0 +1,33 @@ +package com.dbnt.faisp.publicBoard.service; + +import com.dbnt.faisp.publicBoard.mapper.PublicBoardMapper; +import com.dbnt.faisp.publicBoard.model.PublicBoard; +import com.dbnt.faisp.publicBoard.repository.PublicBoardCommentRepository; +import com.dbnt.faisp.publicBoard.repository.PublicBoardRepository; +import com.dbnt.faisp.publicBoard.repository.PublicFileRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + + +@Service +@RequiredArgsConstructor +public class PublicBoardService { + private final PublicBoardRepository publicBoardRepository; + private final PublicBoardCommentRepository publicBoardCommentRepository; + private final PublicFileRepository publicFileRepository; + private final PublicBoardMapper publicBoardMapper; + + public List selectContentList(PublicBoard publicBoard) { + return publicBoardMapper.selectContentList(publicBoard); + } + + public Integer selectContentListCnt(PublicBoard publicBoard) { + return publicBoardMapper.selectContentListCnt(publicBoard); + } + + public PublicBoard selectPublicBoard(Integer publicKey) { + return publicBoardRepository.findById(publicKey).orElse(null); + } +} diff --git a/src/main/java/com/dbnt/faisp/translator/TranslatorController.java b/src/main/java/com/dbnt/faisp/translator/TranslatorController.java index 68299c48..f6966fe0 100644 --- a/src/main/java/com/dbnt/faisp/translator/TranslatorController.java +++ b/src/main/java/com/dbnt/faisp/translator/TranslatorController.java @@ -31,8 +31,8 @@ public class TranslatorController { private final AuthMgtService authMgtService; private final TranslatorService translatorSevice; private final OrganConfigService organConfigService; - - + + @GetMapping("/info") public ModelAndView translatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator,HttpServletResponse response) { ModelAndView mav = new ModelAndView("translator/translator"); @@ -42,23 +42,23 @@ public class TranslatorController { translator.setOrganCdList(organConfigService.selectOrganListWhereUserOgCd(loginUser.getOgCd())); //엑셀다운 if(translator.getExcel() != null && translator.getExcel().equals("Y")){ - String[] headers = { "translator_key", "ogdp1", "tr_lang", "tr_career", "tr_name", "tr_age", "tr_nny", "tr_edu", "tr_cft", "dml_yn", "apt_dt", "tr_phone"}; - String[] headerNames = { "연번", "관서명", "언어", "경력", "성명", "나이", "국적", "학력", "자격증", "해촉", "위촉일", "연락처" }; - String[] columnType = { "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String"}; - String sheetName = "민간 통역인 현황"; - String excelFileName = "민간 통역인 현황"; - List translatorInfoList= translatorSevice.selectTranslatorListEx(translator); + String[] headers = { "translator_key", "ogdp1", "tr_lang", "tr_career", "tr_name", "tr_age", "tr_nny", "tr_edu", "tr_cft", "dml_yn", "apt_dt", "tr_phone"}; + String[] headerNames = { "연번", "관서명", "언어", "경력", "성명", "나이", "국적", "학력", "자격증", "해촉", "위촉일", "연락처" }; + String[] columnType = { "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String"}; + String sheetName = "민간 통역인 현황"; + String excelFileName = "민간 통역인 현황"; + List translatorInfoList= translatorSevice.selectTranslatorListEx(translator); - try { - Utils.listToExcel(translatorInfoList, response, headers, headerNames, columnType, sheetName, excelFileName); - } catch (IOException e) { - - } - return null; + try { + Utils.listToExcel(translatorInfoList, response, headers, headerNames, columnType, sheetName, excelFileName); + } catch (IOException e) { + + } + return null; } //메뉴권한 확인 String accessAuth = authMgtService.selectAccessConfigList(params).get(0).getAccessAuth(); - + mav.addObject("mgtOrganList", loginUser.getOrganCdList()); mav.addObject("accessAuth", accessAuth); translator.setQueryInfo(); @@ -68,14 +68,14 @@ public class TranslatorController { mav.addObject("searchParams", translator); return mav; } - + @PostMapping("/insertTranslatorInfo") public String insertTranslatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator) { - translator.setWrtNm(loginUser.getUserId()); - translator.setWrtOrgan(loginUser.getOgCd()); + translator.setWrtNm(loginUser.getUserId()); + translator.setWrtOrgan(loginUser.getOgCd()); return translatorSevice.insertTranslatorInfo(translator); } - + @GetMapping("/translatorEditModal") public ModelAndView translatorEditModal(@AuthenticationPrincipal UserInfo loginUser,Translator translator){ ModelAndView mav = new ModelAndView("translator/translatorEditModal"); @@ -88,28 +88,28 @@ public class TranslatorController { mav.addObject("accessAuth", accessAuth); return mav; } - + @PostMapping("/updateTranslatorInfo") public void updatetranslatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator) { - translator.setWrtNm(loginUser.getUserId()); - translator.setWrtOrgan(loginUser.getOgCd()); - translatorSevice.updatetranslatorInfo(translator); + translator.setWrtNm(loginUser.getUserId()); + translator.setWrtOrgan(loginUser.getOgCd()); + translatorSevice.updatetranslatorInfo(translator); } - + @GetMapping("/revisionHistory") public ModelAndView revisionHistory(Translator translator){ ModelAndView mav = new ModelAndView("translator/translatorHistory"); mav.addObject("HistoryList", translatorSevice.selectHistoryList(translator)); return mav; } - + @GetMapping("/HistoryView") @ResponseBody public Translator HistoryView(Translator translator){ return translatorSevice.HistoryView(translator); } - + @GetMapping("/careerView") public ModelAndView careerView(@AuthenticationPrincipal UserInfo loginUser,TranslatorCrr translatorCrr){ ModelAndView mav = new ModelAndView("translator/translatorCareerModal"); @@ -124,34 +124,34 @@ public class TranslatorController { mav.addObject("accessAuth", accessAuth); return mav; } - + @GetMapping("/careerInsertPage") public ModelAndView careerInsertPage(TranslatorCrr translatorCrr){ ModelAndView mav = new ModelAndView("translator/translatorCareerInsert"); mav.addObject("trKey", translatorCrr.getTranslatorKey()); return mav; } - + @PostMapping("/insertTranslatorCareer") @ResponseBody public int insertTranslatorCareer(@RequestBody List translatorCrr){ - int trKey = translatorSevice.insertTranslatorCareer(translatorCrr); + int trKey = translatorSevice.insertTranslatorCareer(translatorCrr); return trKey; } - + @PostMapping("/deleteCareer") @ResponseBody public int deleteCareer(@RequestBody TranslatorCrr translatorCrr) { - int trKey = translatorSevice.deleteCareer(translatorCrr); + int trKey = translatorSevice.deleteCareer(translatorCrr); return trKey; } - + @PostMapping("/deleteTranslatorInfo") @ResponseBody public void deleteTranslatorInfo(@RequestBody int trKey) { - translatorSevice.deleteTranslatorInfo(trKey); + translatorSevice.deleteTranslatorInfo(trKey); } - + @GetMapping("/statisticsLang") public ModelAndView statisticsLang() { ModelAndView mav = new ModelAndView("translator/translatorStatisticsLang"); @@ -159,8 +159,8 @@ public class TranslatorController { mav.addObject("total", translatorSevice.selectStatisticsLangTotal()); return mav; } - - - + + + } diff --git a/src/main/resources/mybatisMapper/PublicBoardMapper.xml b/src/main/resources/mybatisMapper/PublicBoardMapper.xml new file mode 100644 index 00000000..7d4b7179 --- /dev/null +++ b/src/main/resources/mybatisMapper/PublicBoardMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + and a.public_type = #{publicType} + + + and a.wrt_dt >= #{startDate}::date + + + and a.wrt_dt <= #{endDate}::date + + + and a.wrt_organ in + + #{organCd} + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/js/publicBoard/notice.js b/src/main/resources/static/js/publicBoard/notice.js new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/static/js/publicBoard/publicBoard.js b/src/main/resources/static/js/publicBoard/publicBoard.js new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/templates/fragments/header.html b/src/main/resources/templates/fragments/header.html index fda49995..4f10c14d 100644 --- a/src/main/resources/templates/fragments/header.html +++ b/src/main/resources/templates/fragments/header.html @@ -27,7 +27,7 @@