From 42931d6a5dc730d1ebba61c99055779f762a676b Mon Sep 17 00:00:00 2001 From: leebeomjun Date: Mon, 26 Feb 2024 17:56:52 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=BC=EC=A0=95=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=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/Schdl.java | 35 +++ .../java/cokr/xit/fims/mngt/SchdlQuery.java | 10 + .../cokr/xit/fims/mngt/dao/SchdlMapper.java | 84 +++++++ .../xit/fims/mngt/service/SchdlService.java | 43 ++++ .../xit/fims/mngt/service/bean/SchdlBean.java | 54 +++++ .../mngt/service/bean/SchdlServiceBean.java | 29 +++ .../xit/fims/mngt/web/Mngt02Controller.java | 117 +++++++++- .../cokr/xit/fims/task/web/CmnController.java | 33 +++ .../sql/mapper/fims/mngt/ntc-mapper.xml | 6 +- .../sql/mapper/fims/mngt/schdl-mapper.xml | 109 +++++++++ .../WEB-INF/jsp/fims/mngt/mngt02010-main.jsp | 154 +++++++++---- .../WEB-INF/jsp/fims/mngt/mngt02020-info.jsp | 213 ++++++++++++++++++ .../js/fims/framework/cmm/cmmnDateUtil.js | 7 +- 13 files changed, 846 insertions(+), 48 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/fims/mngt/mngt02020-info.jsp diff --git a/src/main/java/cokr/xit/fims/mngt/Schdl.java b/src/main/java/cokr/xit/fims/mngt/Schdl.java index d513de62..e8122b44 100644 --- a/src/main/java/cokr/xit/fims/mngt/Schdl.java +++ b/src/main/java/cokr/xit/fims/mngt/Schdl.java @@ -11,4 +11,39 @@ import lombok.Setter; @Setter public class Schdl extends AbstractEntity { + /** + * 일정 ID + */ + private String schdlId; + + /** + * 일정 시작 일자 + */ + private String schdlBgngYmd; + + /** + * 일정 종료 일자 + */ + private String schdlEndYmd; + + /** + * 사용자 ID + */ + private String userId; + + /** + * 일정 내용 + */ + private String schdlCn; + + /** + * 삭제 여부 + */ + private String delYn; + + /** + * 삭제 사유 + */ + private String delRsn; + } diff --git a/src/main/java/cokr/xit/fims/mngt/SchdlQuery.java b/src/main/java/cokr/xit/fims/mngt/SchdlQuery.java index f499c19f..07b0be39 100644 --- a/src/main/java/cokr/xit/fims/mngt/SchdlQuery.java +++ b/src/main/java/cokr/xit/fims/mngt/SchdlQuery.java @@ -16,4 +16,14 @@ public class SchdlQuery extends CmmnQuery { private static final long serialVersionUID = 1L; + private String userId; + + public String getUserId() { + return this.userId; + } + + public SchdlQuery setUserId(String userId) { + this.userId = userId; + return this; + } } diff --git a/src/main/java/cokr/xit/fims/mngt/dao/SchdlMapper.java b/src/main/java/cokr/xit/fims/mngt/dao/SchdlMapper.java index 8afead52..4aac1bd9 100644 --- a/src/main/java/cokr/xit/fims/mngt/dao/SchdlMapper.java +++ b/src/main/java/cokr/xit/fims/mngt/dao/SchdlMapper.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.Schdl; +import cokr.xit.fims.mngt.SchdlQuery; import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; /**일정관리 DAO * @author leebj @@ -10,4 +16,82 @@ import cokr.xit.foundation.component.AbstractMapper; @Mapper("schdlMapper") public interface SchdlMapper extends AbstractMapper { + /**지정한 조건에 따라 일정관리 목록을 조회하여 반환한다.
+ * @param req 일정관리 조회 조건 + * @return 일정관리 목록 + */ + List selectSchdlList(SchdlQuery req); + + /**지정한 조건에 따라 일정관리 객체를 반환한다. + * @param schdlId 일정관리 ID + * @return 일정관리 객체 + */ + DataObject selectSchdlInfo(String schdlId); + + /**일정관리 정보를 등록한다. + * @param params 파라미터 + * + * @return 저장된 정보수 + */ + int insertSchdl(Map params); + + /**일정관리 정보를 등록한다. + * @param schdl 일정관리 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean insert(Schdl schdl) { + if(schdl == null) { + return false; + } + DataObject map = params().set("schdl", schdl); + int effected = insertSchdl(map); + return effected == 1; + + } + + /**일정관리 정보를 수정한다. + * @param params 파라미터 + *
  • "schdl" - 일정관리
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updateSchdl(Map params); + + /**일정관리 정보를 수정한다. + * @param schdl 일정관리 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean update(Schdl schdl) { + return schdl != null && updateSchdl(params().set("schdl", schdl)) == 1; + } + + /**지정한 일정관리을 삭제한다. + * @param params 파라미터 + *
  • "schdl" - 일정관리
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int deleteSchdl(Map params); + + /**일정관리 정보를 삭제한다. + * @param schdl 일정관리 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean delete(Schdl schdl) { + return schdl != null && deleteSchdl(params().set("schdl", schdl)) == 1; + } + } diff --git a/src/main/java/cokr/xit/fims/mngt/service/SchdlService.java b/src/main/java/cokr/xit/fims/mngt/service/SchdlService.java index 2c8857e5..843557bc 100644 --- a/src/main/java/cokr/xit/fims/mngt/service/SchdlService.java +++ b/src/main/java/cokr/xit/fims/mngt/service/SchdlService.java @@ -1,5 +1,48 @@ package cokr.xit.fims.mngt.service; +import java.util.List; + +import cokr.xit.fims.mngt.Schdl; +import cokr.xit.fims.mngt.SchdlQuery; +import cokr.xit.foundation.data.DataObject; + public interface SchdlService { + /**지정한 조건에 따라 일정관리 목록을 조회하여 반환한다. + * @param req 일정관리 조회 조건 + * @return 일정관리 목록 + */ + List getSchdlList(SchdlQuery req); + + /**지정한 조건에 따라 일정관리 객체를 반환한다. + * @param schdlId 일정관리 ID + * @return 일정관리 객체 + */ + DataObject getSchdlInfo(String schdlId); + + /**일정관리 정보를 등록한다. + * @param schdl 일정관리 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + String create(Schdl schdl); + + /**일정관리 정보를 수정한다. + * @param schdl 일정관리 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + String update(Schdl schdl); + /**일정관리 정보를 삭제한다. + * @param schdl 일정관리 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + String remove(Schdl schdl); } diff --git a/src/main/java/cokr/xit/fims/mngt/service/bean/SchdlBean.java b/src/main/java/cokr/xit/fims/mngt/service/bean/SchdlBean.java index 115de778..fae6272f 100644 --- a/src/main/java/cokr/xit/fims/mngt/service/bean/SchdlBean.java +++ b/src/main/java/cokr/xit/fims/mngt/service/bean/SchdlBean.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.Schdl; +import cokr.xit.fims.mngt.SchdlQuery; import cokr.xit.fims.mngt.dao.SchdlMapper; import cokr.xit.foundation.AbstractComponent; +import cokr.xit.foundation.data.DataObject; /** 일정관리 Bean * @author leebj @@ -16,4 +21,53 @@ public class SchdlBean extends AbstractComponent { @Resource(name="schdlMapper") private SchdlMapper schdlMapper; + /**지정한 조건에 따라 일정관리 목록을 조회하여 반환한다. + * @param req 일정관리 조회 조건 + * @return 일정관리 목록 + */ + public List getSchdlList(SchdlQuery req) { + return schdlMapper.selectSchdlList(req); + } + + /**지정한 조건에 따라 일정관리 객체를 반환한다. + * @param schdlId 일정관리 ID + * @return 일정관리 객체 + */ + public DataObject getSchdlInfo(String schdlId) { + return schdlMapper.selectSchdlInfo(schdlId); + } + + /**일정관리 정보를 등록한다. + * @param schdl 일정관리 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean create(Schdl schdl) { + return schdlMapper.insert(schdl); + } + + /**일정관리 정보를 수정한다. + * @param schdl 일정관리 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean update(Schdl schdl) { + return schdlMapper.update(schdl); + } + + /**일정관리 정보를 삭제한다. + * @param schdl 일정관리 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean remove(Schdl schdl) { + return schdlMapper.delete(schdl); + } + } diff --git a/src/main/java/cokr/xit/fims/mngt/service/bean/SchdlServiceBean.java b/src/main/java/cokr/xit/fims/mngt/service/bean/SchdlServiceBean.java index 486460a8..6cb357cb 100644 --- a/src/main/java/cokr/xit/fims/mngt/service/bean/SchdlServiceBean.java +++ b/src/main/java/cokr/xit/fims/mngt/service/bean/SchdlServiceBean.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.Schdl; +import cokr.xit.fims.mngt.SchdlQuery; import cokr.xit.fims.mngt.service.SchdlService; import cokr.xit.foundation.component.AbstractServiceBean; +import cokr.xit.foundation.data.DataObject; @Service("schdlService") public class SchdlServiceBean extends AbstractServiceBean implements SchdlService { @@ -13,4 +18,28 @@ public class SchdlServiceBean extends AbstractServiceBean implements SchdlServic @Resource(name="schdlBean") private SchdlBean schdlBean; + @Override + public List getSchdlList(SchdlQuery req) { + return schdlBean.getSchdlList(req); + } + + @Override + public DataObject getSchdlInfo(String schdlId) { + return schdlBean.getSchdlInfo(schdlId); + } + + @Override + public String create(Schdl schdl) { + return schdlBean.create(schdl) ? "[S]" : "[F]"; + } + + @Override + public String update(Schdl schdl) { + return schdlBean.update(schdl) ? "[S]" : "[F]"; + } + + @Override + public String remove(Schdl schdl) { + return schdlBean.remove(schdl) ? "[S]" : "[F]"; + } } diff --git a/src/main/java/cokr/xit/fims/mngt/web/Mngt02Controller.java b/src/main/java/cokr/xit/fims/mngt/web/Mngt02Controller.java index b8a38612..ddb4c32f 100644 --- a/src/main/java/cokr/xit/fims/mngt/web/Mngt02Controller.java +++ b/src/main/java/cokr/xit/fims/mngt/web/Mngt02Controller.java @@ -1,11 +1,16 @@ package cokr.xit.fims.mngt.web; +import java.util.List; + import javax.annotation.Resource; import org.springframework.web.servlet.ModelAndView; import cokr.xit.base.web.ApplicationController; +import cokr.xit.fims.mngt.Schdl; +import cokr.xit.fims.mngt.SchdlQuery; import cokr.xit.fims.mngt.service.SchdlService; +import cokr.xit.foundation.data.DataObject; /**일정관리 서비스 웹 컨트롤러.
* {웹 컨텍스트}/mngt/mngt02 로 접근할 수 있다. @@ -17,7 +22,12 @@ public class Mngt02Controller extends ApplicationController { public class METHOD_URL { public static final String - schdlMain = "/010/main.do" + schdlMain = "/010/main.do", + getSchdlList = "/010/list.do", + getSchdlInfo = "/020/info.do", + create = "/020/create.do", + update = "/020/update.do", + remove = "/020/remove.do" ; } @@ -35,4 +45,109 @@ public class Mngt02Controller extends ApplicationController { return mav; } + /**일정관리 목록을 조회하여 반환한다.
+ * {@link SchdlService#getSchdlList(SchdlQuery)} 참고 + * @param req 일정관리 조회 조건 + * @return jsonView + *
 {
+	 *     "schdlList": [일정관리 목록]
+	 *     "schdlStart": 일정관리 목록 시작 인덱스
+	 *     "schdlFetch": 한 번에 가져오는 일정관리 목록 수
+	 *     "schdlTotal": 조회 결과 찾은 전체 일정관리 수
+	 * }
+ */ + public ModelAndView getSchdlList(SchdlQuery req) { + ModelAndView mav = new ModelAndView("jsonView"); + + req.setUserId(currentUser().getId()); + List list = schdlService.getSchdlList(req); + mav.addObject("list", list); + return mav; + } + + /**일정관리를 조회하여 반환한다.
+ * {@link SchdlService#getSchdlInfo(SchdlQuery)} 참고 + * @param req 일정관리 조회 조건 + * @return jsonView + */ + public ModelAndView getSchdlInfo(String schdlId, String schdlBgngYmd, String schdlEndYmd) { + + boolean json = jsonResponse(); + ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/mngt/mngt02020-info"); + mav.addObject("pageName", "mngt02020"); + DataObject info = new DataObject(); + + if(!ifEmpty(schdlId, ()->"").equals("")) { + info = schdlService.getSchdlInfo(schdlId); + } else { + info = null; + } + mav.addObject("schdlInfo", json ? info : toJson(info)); + + mav.addObject("schdlBgngYmd", schdlBgngYmd); + mav.addObject("schdlEndYmd", schdlEndYmd); + return mav; + } + + /**일정을 등록한다. + * @param schdl 일정관리 정보 + * @return jsonView + *
 {
+	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + public ModelAndView create(Schdl schdl) { + ModelAndView mav = new ModelAndView("jsonView"); + boolean saved = false; + schdl.setUserId(currentUser().getId()); + String rtnMsg = schdlService.create(schdl); + + if(rtnMsg.contains("[S]")) { + saved = true; + } + mav.addObject("saved", saved); + mav.addObject("schdlId", schdl.getSchdlId()); + return mav; + } + + /**일정을 수정한다. + * @param schdl 일정관리 정보 + * @return jsonView + *
 {
+	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + public ModelAndView update(Schdl schdl) { + ModelAndView mav = new ModelAndView("jsonView"); + boolean saved = false; + schdl.setUserId(currentUser().getId()); + String rtnMsg = schdlService.update(schdl); + + if(rtnMsg.contains("[S]")) { + saved = true; + } + mav.addObject("saved", saved); + return mav; + } + + /**지정한 일정을 제거한다. + * @param schdlIDs 일정관리 아이디 + * @return jsonView + *
 {
+	 *     "affected": 저장된 정보수
+	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + public ModelAndView remove(Schdl schdl) { + ModelAndView mav = new ModelAndView("jsonView"); + boolean saved = false; + schdl.setUserId(currentUser().getId()); + String rtnMsg = schdlService.remove(schdl); + + 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 5e58d194..206207a5 100644 --- a/src/main/java/cokr/xit/fims/task/web/CmnController.java +++ b/src/main/java/cokr/xit/fims/task/web/CmnController.java @@ -18,6 +18,8 @@ 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.Schdl; +import cokr.xit.fims.mngt.SchdlQuery; import cokr.xit.fims.mngt.Task; import cokr.xit.fims.mngt.VltnQuery; import cokr.xit.fims.sprt.SprtQuery; @@ -620,6 +622,37 @@ public class CmnController { return super.schdlMain(); } + @Override + @RequestMapping(name="일정 목록 조회", value=METHOD_URL.getSchdlList) + public ModelAndView getSchdlList(SchdlQuery req) { + return super.getSchdlList(req); + } + + @Override + @RequestMapping(name="일정 조회", value=METHOD_URL.getSchdlInfo) + public ModelAndView getSchdlInfo(String schdlId, String schdlBgngYmd, String schdlEndYmd) { + return super.getSchdlInfo(schdlId, schdlBgngYmd, schdlEndYmd); + } + + + @Override + @RequestMapping(name="일정 추가", value=METHOD_URL.create) + public ModelAndView create(Schdl schdl) { + return super.create(schdl); + } + + @Override + @RequestMapping(name="일정 수정", value=METHOD_URL.update) + public ModelAndView update(Schdl schdl) { + return super.update(schdl); + } + + @Override + @RequestMapping(name="일정 삭제", value=METHOD_URL.remove) + public ModelAndView remove(Schdl schdl) { + return super.remove(schdl); + } + } @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 c2b22ff1..ec9cec31 100644 --- a/src/main/resources/sql/mapper/fims/mngt/ntc-mapper.xml +++ b/src/main/resources/sql/mapper/fims/mngt/ntc-mapper.xml @@ -105,9 +105,9 @@ UPDATE TB_NOTICE /* 공지사항 삭제(ntcMapper.deleteNtc) */ UPDATE TB_NOTICE - SET DEL_YN = 'Y' - , MDFCN_DT = - , MDFR = #{currentUser.id} + SET DEL_YN = 'Y' + , DEL_DT = + , DLTR = #{currentUser.id} WHERE NTC_ID = #{ntc.ntcId} diff --git a/src/main/resources/sql/mapper/fims/mngt/schdl-mapper.xml b/src/main/resources/sql/mapper/fims/mngt/schdl-mapper.xml index f114e8dc..d5864755 100644 --- a/src/main/resources/sql/mapper/fims/mngt/schdl-mapper.xml +++ b/src/main/resources/sql/mapper/fims/mngt/schdl-mapper.xml @@ -1,4 +1,113 @@ + + + + + + + + + + + + + + + + + + + + +SELECT SCHDL_ID + , SCHDL_BGNG_YMD + , SCHDL_END_YMD + , USER_ID + , SCHDL_CN + , DEL_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + , DEL_DT + , DLTR + , DEL_RSN + FROM TB_SCHDL + + + + + + + +/* 일정관리 등록(schdlMapper.insertSchdl) */ + +SELECT + LPAD(CAST(IFNULL(MAX(SCHDL_ID) + 1, 1) AS INT), 10, '0') + AS NEW_ID +FROM TB_SCHDL + +INSERT + INTO TB_SCHDL ( + SCHDL_ID + , SCHDL_BGNG_YMD + , SCHDL_END_YMD + , USER_ID + , SCHDL_CN + , DEL_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR +) VALUES ( + #{schdl.schdlId} + , #{schdl.schdlBgngYmd} + , #{schdl.schdlEndYmd} + , #{schdl.userId} + , #{schdl.schdlCn} + , 'N' + , + , #{currentUser.id} + , + , #{currentUser.id} +) + + + +/* 일정관리 수정(schdlMapper.updateSchdl) */ +UPDATE TB_SCHDL + SET SCHDL_BGNG_YMD = #{schdl.schdlBgngYmd} + , SCHDL_END_YMD = #{schdl.schdlEndYmd} + , USER_ID = #{schdl.userId} + , SCHDL_CN = #{schdl.schdlCn} + , MDFCN_DT = + , MDFR = #{currentUser.id} + WHERE SCHDL_ID = #{schdl.schdlId} + + + +/* 일정관리 삭제(schdlMapper.deleteSchdl) */ +UPDATE TB_SCHDL + SET DEL_YN = 'Y' + , DEL_DT = + , DLTR = #{currentUser.id} + WHERE SCHDL_ID = #{schdl.schdlId} + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt02010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt02010-main.jsp index ffe25b4c..db311b16 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt02010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt02010-main.jsp @@ -12,54 +12,124 @@ + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt02020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt02020-info.jsp new file mode 100644 index 00000000..fc01e6eb --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/fims/mngt/mngt02020-info.jsp @@ -0,0 +1,213 @@ +<%@ 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/resources/js/fims/framework/cmm/cmmnDateUtil.js b/src/main/webapp/resources/js/fims/framework/cmm/cmmnDateUtil.js index 2c8648b3..0a975de6 100644 --- a/src/main/webapp/resources/js/fims/framework/cmm/cmmnDateUtil.js +++ b/src/main/webapp/resources/js/fims/framework/cmm/cmmnDateUtil.js @@ -293,9 +293,12 @@ function to2(numberObj) { * 입력일의 이전일 계산 */ function getPrevDay(datestr, days) { - if ( days == "0") return datestr; + if ( days == "0") + return datestr; datestr = datestr.replace(/-/g, ""); - if (datestr == "") return ""; + if (datestr == "") + return ""; + var dateObj = window.getDateObject(datestr); dateObj.setDate(dateObj.getDate() - parseInt(days, 10));