From 0f9e0f8b06a9b0ab42e50b01440b1bfe7722c37f Mon Sep 17 00:00:00 2001 From: leebeomjun Date: Mon, 26 Feb 2024 13:26:34 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B3=B5=EC=A7=80=EC=82=AC=ED=95=AD=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cokr/xit/fims/mngt/Ntc.java | 29 ++ .../cokr/xit/fims/mngt/dao/NtcMapper.java | 78 +++++ .../xit/fims/mngt/service/NtcService.java | 45 +++ .../xit/fims/mngt/service/bean/NtcBean.java | 54 +++ .../mngt/service/bean/NtcServiceBean.java | 30 ++ .../xit/fims/mngt/web/Mngt01Controller.java | 115 ++++++- .../cokr/xit/fims/task/web/CmnController.java | 32 ++ .../sql/mapper/fims/mngt/ntc-mapper.xml | 110 ++++++ .../WEB-INF/jsp/fims/mngt/mngt01010-main.jsp | 314 +++++++++++++++++- .../WEB-INF/jsp/fims/mngt/mngt01020-info.jsp | 167 ++++++++++ 10 files changed, 971 insertions(+), 3 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/fims/mngt/mngt01020-info.jsp diff --git a/src/main/java/cokr/xit/fims/mngt/Ntc.java b/src/main/java/cokr/xit/fims/mngt/Ntc.java index 63f989fe..c64d23fd 100644 --- a/src/main/java/cokr/xit/fims/mngt/Ntc.java +++ b/src/main/java/cokr/xit/fims/mngt/Ntc.java @@ -11,4 +11,33 @@ import lombok.Setter; @Setter public class Ntc extends AbstractEntity { + /** + * 공지 ID + */ + private String ntcId; + + /** + * 공지 제목 + */ + private String ntcTtl; + + /** + * 공지 내용 + */ + private String ntcCn; + + /** + * 삭제 여부 + */ + private String delYn; + + /** + * 삭제 사유 + */ + private String delRsn; + + /** + * 시군구 코드 + */ + private String sggCd; } diff --git a/src/main/java/cokr/xit/fims/mngt/dao/NtcMapper.java b/src/main/java/cokr/xit/fims/mngt/dao/NtcMapper.java index 1af42c4b..ba3ec45d 100644 --- a/src/main/java/cokr/xit/fims/mngt/dao/NtcMapper.java +++ b/src/main/java/cokr/xit/fims/mngt/dao/NtcMapper.java @@ -1,8 +1,14 @@ package cokr.xit.fims.mngt.dao; +import java.util.List; +import java.util.Map; + import org.egovframe.rte.psl.dataaccess.mapper.Mapper; +import cokr.xit.fims.mngt.Ntc; +import cokr.xit.fims.mngt.NtcQuery; import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; /**공지사항 DAO * @author leebj @@ -10,4 +16,76 @@ import cokr.xit.foundation.component.AbstractMapper; @Mapper("ntcMapper") public interface NtcMapper extends AbstractMapper { + /**지정한 조건에 따라 공지사항 목록을 조회하여 반환한다.
+ * @param req 공지사항 조회 조건 + * @return 공지사항 목록 + */ + List selectNtcList(NtcQuery req); + + /**지정한 공지사항ID로 공지사항 객체를 반환한다. + * @param ntcId 공지사항 ID + * @return 공지사항 객체 + */ + DataObject selectNtcInfo(String ntcId); + + /**공지사항 정보를 등록한다. + * @param params 파라미터 + * + * @return 저장된 정보수 + */ + int insertNtc(Map params); + + /**공지사항 정보를 등록한다. + * @param ntc 공지사항 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean insert(Ntc ntc) { + return ntc != null && insertNtc(params().set("ntc", ntc)) == 1; + } + + /**공지사항 정보를 수정한다. + * @param params 파라미터 + *
  • "ntc" - 공지사항
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updateNtc(Map params); + + /**공지사항 정보를 수정한다. + * @param ntc 공지사항 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean update(Ntc ntc) { + return ntc != null && updateNtc(params().set("ntc", ntc)) == 1; + } + + /**지정한 공지사항을 삭제한다. + * @param params 파라미터 + *
  • "ntc" - 공지사항
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int deleteNtc(Map params); + + /**공지사항 정보를 삭제한다. + * @param ntc 공지사항 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean delete(Ntc ntc) { + return ntc != null && deleteNtc(params().set("ntc", ntc)) == 1; + } + } diff --git a/src/main/java/cokr/xit/fims/mngt/service/NtcService.java b/src/main/java/cokr/xit/fims/mngt/service/NtcService.java index c19438f3..9213ebf6 100644 --- a/src/main/java/cokr/xit/fims/mngt/service/NtcService.java +++ b/src/main/java/cokr/xit/fims/mngt/service/NtcService.java @@ -1,5 +1,50 @@ package cokr.xit.fims.mngt.service; +import java.util.List; + +import cokr.xit.fims.mngt.Ntc; +import cokr.xit.fims.mngt.NtcQuery; +import cokr.xit.foundation.data.DataObject; + public interface NtcService { + /**지정한 조건에 따라 공지사항 목록을 조회하여 반환한다. + * @param req 공지사항 조회 조건 + * @return 공지사항 목록 + */ + List getNtcList(NtcQuery req); + + /**지정한 공지사항ID로 공지사항 객체를 반환한다. + * @param ntcId 공지사항 ID + * @return 공지사항 객체 + */ + DataObject getNtcInfo(String ntcId); + + /**공지사항 정보를 등록한다. + * @param ntc 공지사항 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + String create(Ntc ntc); + + /**공지사항 정보를 수정한다. + * @param ntc 공지사항 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + String update(Ntc ntc); + + /**공지사항 정보를 삭제한다. + * @param ntc 공지사항 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + String remove(Ntc ntc); + } diff --git a/src/main/java/cokr/xit/fims/mngt/service/bean/NtcBean.java b/src/main/java/cokr/xit/fims/mngt/service/bean/NtcBean.java index d16e7af9..5ca54162 100644 --- a/src/main/java/cokr/xit/fims/mngt/service/bean/NtcBean.java +++ b/src/main/java/cokr/xit/fims/mngt/service/bean/NtcBean.java @@ -1,11 +1,16 @@ package cokr.xit.fims.mngt.service.bean; +import java.util.List; + import javax.annotation.Resource; import org.springframework.stereotype.Component; +import cokr.xit.fims.mngt.Ntc; +import cokr.xit.fims.mngt.NtcQuery; import cokr.xit.fims.mngt.dao.NtcMapper; import cokr.xit.foundation.AbstractComponent; +import cokr.xit.foundation.data.DataObject; /** 공지사항 Bean * @author leebj @@ -16,4 +21,53 @@ public class NtcBean extends AbstractComponent { @Resource(name="ntcMapper") private NtcMapper ntcMapper; + /**지정한 조건에 따라 공지사항 목록을 조회하여 반환한다. + * @param req 공지사항 조회 조건 + * @return 공지사항 목록 + */ + public List getNtcList(NtcQuery req) { + return ntcMapper.selectNtcList(req); + } + + /**지정한 공지사항ID로 공지사항 객체를 반환한다. + * @param ntcId 공지사항 ID + * @return 공지사항 객체 + */ + public DataObject getNtcInfo(String ntcId) { + return ntcMapper.selectNtcInfo(ntcId); + } + + /**공지사항 정보를 등록한다. + * @param ntc 공지사항 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean create(Ntc ntc) { + return ntcMapper.insert(ntc); + } + + /**공지사항 정보를 수정한다. + * @param ntc 공지사항 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean update(Ntc ntc) { + return ntcMapper.update(ntc); + } + + /**공지사항 정보를 삭제한다. + * @param ntc 공지사항 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean remove(Ntc ntc) { + return ntcMapper.delete(ntc); + } + } diff --git a/src/main/java/cokr/xit/fims/mngt/service/bean/NtcServiceBean.java b/src/main/java/cokr/xit/fims/mngt/service/bean/NtcServiceBean.java index 5e2759a8..58df5e09 100644 --- a/src/main/java/cokr/xit/fims/mngt/service/bean/NtcServiceBean.java +++ b/src/main/java/cokr/xit/fims/mngt/service/bean/NtcServiceBean.java @@ -1,11 +1,16 @@ package cokr.xit.fims.mngt.service.bean; +import java.util.List; + import javax.annotation.Resource; import org.springframework.stereotype.Service; +import cokr.xit.fims.mngt.Ntc; +import cokr.xit.fims.mngt.NtcQuery; import cokr.xit.fims.mngt.service.NtcService; import cokr.xit.foundation.component.AbstractServiceBean; +import cokr.xit.foundation.data.DataObject; @Service("ntcService") public class NtcServiceBean extends AbstractServiceBean implements NtcService { @@ -13,4 +18,29 @@ public class NtcServiceBean extends AbstractServiceBean implements NtcService { @Resource(name="ntcBean") private NtcBean ntcBean; + @Override + public List getNtcList(NtcQuery req) { + return ntcBean.getNtcList(req); + } + + @Override + public DataObject getNtcInfo(String ntcId) { + return ntcBean.getNtcInfo(ntcId); + } + + @Override + public String create(Ntc ntc) { + return ntcBean.create(ntc) ? "[S]" : "[F]"; + } + + @Override + public String update(Ntc ntc) { + return ntcBean.update(ntc) ? "[S]" : "[F]"; + } + + @Override + public String remove(Ntc ntc) { + return ntcBean.remove(ntc) ? "[S]" : "[F]"; + } + } diff --git a/src/main/java/cokr/xit/fims/mngt/web/Mngt01Controller.java b/src/main/java/cokr/xit/fims/mngt/web/Mngt01Controller.java index b1c55287..6dca60e3 100644 --- a/src/main/java/cokr/xit/fims/mngt/web/Mngt01Controller.java +++ b/src/main/java/cokr/xit/fims/mngt/web/Mngt01Controller.java @@ -1,11 +1,17 @@ package cokr.xit.fims.mngt.web; +import java.util.List; + import javax.annotation.Resource; import org.springframework.web.servlet.ModelAndView; +import cokr.xit.base.user.ManagedUser; import cokr.xit.base.web.ApplicationController; +import cokr.xit.fims.mngt.Ntc; +import cokr.xit.fims.mngt.NtcQuery; import cokr.xit.fims.mngt.service.NtcService; +import cokr.xit.foundation.data.DataObject; /**공지사항 서비스 웹 컨트롤러.
* {웹 컨텍스트}/mngt/mngt01 로 접근할 수 있다. @@ -17,7 +23,12 @@ public class Mngt01Controller extends ApplicationController { public class METHOD_URL { public static final String - ntcMain = "/010/main.do" + ntcMain = "/010/main.do", + getNtcList = "/010/list.do", + getNtcInfo = "/020/info.do", + create = "/020/create.do", + update = "/020/update.do", + remove = "/020/remove.do" ; } @@ -35,4 +46,106 @@ public class Mngt01Controller extends ApplicationController { return mav; } + /**공지사항 목록을 조회하여 반환한다.
+ * {@link NtcService#getNtcList(NtcQuery)} 참고 + * @param req 공지사항 조회 조건 + * @return jsonView + *
 {
+	 *     "ntcList": [공지사항 목록]
+	 *     "ntcStart": 공지사항 목록 시작 인덱스
+	 *     "ntcFetch": 한 번에 가져오는 공지사항 목록 수
+	 *     "ntcTotal": 조회 결과 찾은 전체 공지사항 수
+	 * }
+ */ + public ModelAndView getNtcList(NtcQuery req) { + ModelAndView mav = new ModelAndView("jsonView"); + setFetchSize(req); + + ManagedUser currentUser = (ManagedUser) currentUser().getUser(); + String sggCd = currentUser.getOrgID(); + req.setSggCd(sggCd); + List list = ntcService.getNtcList(req); + return setCollectionInfo(mav, list, "", ""); + } + + /**공지사항 상세 내용을 조회하여 반환한다.
+ * {@link NtcService#getNtcInfo(NtcQuery)} 참고 + * @param ntcId 공지사항 ID + * @return jsonView + */ + public ModelAndView getNtcInfo(String ntcId) { + boolean json = jsonResponse(); + ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/mngt/mngt01020-info"); + mav.addObject("pageName", "mngt01020"); + DataObject info = new DataObject(); + if(!ifEmpty(ntcId, ()->"").equals("")) { + info = ntcService.getNtcInfo(ntcId); + } else { + info = null; + } + mav.addObject("ntcInfo", json ? info : toJson(info)); + return mav; + } + + /**공지사항를 등록한다. + * @param ntc 공지사항 정보 + * @return jsonView + *
 {
+	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + public ModelAndView create(Ntc ntc) { + ModelAndView mav = new ModelAndView("jsonView"); + boolean saved = false; + + String rtnMsg = ntcService.create(ntc); + + if(rtnMsg.contains("[S]")) { + saved = true; + } + mav.addObject("saved", saved); + return mav; + } + + /**공지사항 정보를 수정한다. + * @param ntc 공지사항 정보 + * @return jsonView + *
 {
+	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + public ModelAndView update(Ntc ntc) { + ModelAndView mav = new ModelAndView("jsonView"); + boolean saved = false; + + String rtnMsg = ntcService.update(ntc); + + if(rtnMsg.contains("[S]")) { + saved = true; + } + mav.addObject("saved", saved); + return mav; + } + + /**지정한 공지사항를 제거한다. + * @param ntcIDs 공지사항 아이디 + * @return jsonView + *
 {
+	 *     "affected": 저장된 정보수
+	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + public ModelAndView remove(Ntc ntc) { + ModelAndView mav = new ModelAndView("jsonView"); + boolean saved = false; + + String rtnMsg = ntcService.remove(ntc); + + if(rtnMsg.contains("[S]")) { + saved = true; + } + mav.addObject("saved", saved); + return mav; + + } } diff --git a/src/main/java/cokr/xit/fims/task/web/CmnController.java b/src/main/java/cokr/xit/fims/task/web/CmnController.java index cd7341db..5e58d194 100644 --- a/src/main/java/cokr/xit/fims/task/web/CmnController.java +++ b/src/main/java/cokr/xit/fims/task/web/CmnController.java @@ -16,6 +16,8 @@ import cokr.xit.fims.cmmn.PrintOption; import cokr.xit.fims.crdn.Crdn; import cokr.xit.fims.mngt.FineIntegrationDepartment; import cokr.xit.fims.mngt.FineIntegrationSigungu; +import cokr.xit.fims.mngt.Ntc; +import cokr.xit.fims.mngt.NtcQuery; import cokr.xit.fims.mngt.Task; import cokr.xit.fims.mngt.VltnQuery; import cokr.xit.fims.sprt.SprtQuery; @@ -576,6 +578,36 @@ public class CmnController { return super.ntcMain(); } + @Override + @RequestMapping(name="공지사항 목록 조회", value=METHOD_URL.getNtcList) + public ModelAndView getNtcList(NtcQuery req) { + return super.getNtcList(req); + } + + @Override + @RequestMapping(name="공지사항 상세 조회", value=METHOD_URL.getNtcInfo) + public ModelAndView getNtcInfo(String ntcId) { + return super.getNtcInfo(ntcId); + } + + @Override + @RequestMapping(name="공지사항 등록", value=METHOD_URL.create) + public ModelAndView create(Ntc ntc) { + return super.create(ntc); + } + + @Override + @RequestMapping(name="공지사항 수정", value=METHOD_URL.update) + public ModelAndView update(Ntc ntc) { + return super.update(ntc); + } + + @Override + @RequestMapping(name="공지사항 삭제", value=METHOD_URL.remove) + public ModelAndView remove(Ntc ntc) { + return super.remove(ntc); + } + } @Controller diff --git a/src/main/resources/sql/mapper/fims/mngt/ntc-mapper.xml b/src/main/resources/sql/mapper/fims/mngt/ntc-mapper.xml index e6b979d7..c2b22ff1 100644 --- a/src/main/resources/sql/mapper/fims/mngt/ntc-mapper.xml +++ b/src/main/resources/sql/mapper/fims/mngt/ntc-mapper.xml @@ -1,4 +1,114 @@ + + + + + + + + + + + + + + + + + + + +SELECT A.NTC_ID + , A.SGG_CD + , A.NTC_TTL + , A.NTC_CN + , A.DEL_YN + , A.REG_DT + , A.RGTR + , A.MDFCN_DT + , A.MDFR + , A.DEL_DT + , A.DLTR + , A.DEL_RSN + FROM TB_NOTICE A + + + + + + + +/* 공지사항 등록(ntcMapper.insertNtc) */ + +SELECT + LPAD(CAST(IFNULL(MAX(NTC_ID) + 1, 1) AS INT), 10, '0') + AS NEW_ID +FROM TB_NOTICE + +INSERT + INTO TB_NOTICE ( + NTC_ID + , SGG_CD + , NTC_TTL + , NTC_CN + , DEL_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR +) VALUES ( + #{ntc.ntcId} + , #{ntc.sggCd} + , #{ntc.ntcTtl} + , #{ntc.ntcCn} + , 'N' + , + , #{currentUser.id} + , + , #{currentUser.id} +) + + + +/* 공지사항 수정(ntcMapper.updateNtc) */ +UPDATE TB_NOTICE + SET NTC_TTL = #{ntc.ntcTtl} + , NTC_CN = #{ntc.ntcCn} + , MDFCN_DT = + , MDFR = #{currentUser.id} + WHERE NTC_ID = #{ntc.ntcId} + + + +/* 공지사항 삭제(ntcMapper.deleteNtc) */ +UPDATE TB_NOTICE + SET DEL_YN = 'Y' + , MDFCN_DT = + , MDFR = #{currentUser.id} + WHERE NTC_ID = #{ntc.ntcId} + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt01010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt01010-main.jsp index 29cda737..8b5cf50d 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt01010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt01010-main.jsp @@ -1,4 +1,314 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> <%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> -공지사항 -공지사항 메인 \ No newline at end of file +공지사항 관리 +
+
+
+ +
+ + + + +
+ +
+ + +
+ +
+
+
+ +
    +
+
+ + + + + + +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt01020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt01020-info.jsp new file mode 100644 index 00000000..33584360 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt01020-info.jsp @@ -0,0 +1,167 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> +<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> +공지사항 상세 +
+
+ +
+
+ + + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ + + + +
+
+
+ + +
+ +
+
+ + \ No newline at end of file