From 2bb66a11b34ab87e7e29d043c7ec6f3b9c37ada1 Mon Sep 17 00:00:00 2001 From: jjh Date: Tue, 24 Oct 2023 17:45:18 +0900 Subject: [PATCH] =?UTF-8?q?=EC=97=85=EB=AC=B4=20=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=B8=94=20=EA=B4=80=EB=A0=A8=20java=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 --- .../java/cokr/xit/fims/cmmn/TaskInfo.java | 65 +++++++++ .../cokr/xit/fims/cmmn/TaskInfoQuery.java | 19 +++ .../xit/fims/cmmn/dao/TaskInfoMapper.java | 99 ++++++++++++++ .../fims/cmmn/service/TaskInfoService.java | 61 +++++++++ .../fims/cmmn/service/bean/TaskInfoBean.java | 82 ++++++++++++ .../service/bean/TaskInfoServiceBean.java | 58 ++++++++ .../xit/fims/cmmn/web/TaskInfoController.java | 105 +++++++++++++++ .../sql/mapper/fims/cmmn/taskInfo-mapper.xml | 125 ++++++++++++++++++ 8 files changed, 614 insertions(+) create mode 100644 src/main/java/cokr/xit/fims/cmmn/TaskInfo.java create mode 100644 src/main/java/cokr/xit/fims/cmmn/TaskInfoQuery.java create mode 100644 src/main/java/cokr/xit/fims/cmmn/dao/TaskInfoMapper.java create mode 100644 src/main/java/cokr/xit/fims/cmmn/service/TaskInfoService.java create mode 100644 src/main/java/cokr/xit/fims/cmmn/service/bean/TaskInfoBean.java create mode 100644 src/main/java/cokr/xit/fims/cmmn/service/bean/TaskInfoServiceBean.java create mode 100644 src/main/java/cokr/xit/fims/cmmn/web/TaskInfoController.java create mode 100644 src/main/resources/sql/mapper/fims/cmmn/taskInfo-mapper.xml diff --git a/src/main/java/cokr/xit/fims/cmmn/TaskInfo.java b/src/main/java/cokr/xit/fims/cmmn/TaskInfo.java new file mode 100644 index 00000000..b74972f2 --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/TaskInfo.java @@ -0,0 +1,65 @@ +package cokr.xit.fims.cmmn; + +import cokr.xit.foundation.AbstractEntity; +import lombok.Getter; +import lombok.Setter; + +/** + * 업무 정보 + * @author JoJH + */ +@Getter +@Setter +public class TaskInfo extends AbstractEntity { + + /** + * 시군구 코드 + */ + private String sggCd; + + /** + * 업무 구분 코드 + */ + private String taskSeCd; + + /** + * 업무 구분 명 + */ + private String taskSeNm; + + /** + * 사전통지 일수 + */ + private Integer advntceDaycnt; + + /** + * 사전통지 감경 율 + */ + private String advntceRductRt; + + /** + * 사회적약자 감경 율 + */ + private String wksnRductRt; + + /** + * 과태료 가산 일자 + */ + private String ffnlgAdtnYmd; + + /** + * 과태료 가산 율 + */ + private String ffnlgAdtnRt; + + /** + * 과태료 중가산 율 + */ + private String ffnlgInadtnRt; + + /** + * 과태료 중가산 최대 수 + */ + private Integer ffnlgInadtnMxmmCnt; + +} diff --git a/src/main/java/cokr/xit/fims/cmmn/TaskInfoQuery.java b/src/main/java/cokr/xit/fims/cmmn/TaskInfoQuery.java new file mode 100644 index 00000000..8d55ee0a --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/TaskInfoQuery.java @@ -0,0 +1,19 @@ +package cokr.xit.fims.cmmn; + +import cokr.xit.foundation.component.QueryRequest; + +/**업무 정보 정보 조회 요청 +* +*

상세 설명: +* +*

+* ============ 변경 이력 ============
+* 2023-10-24	JoJH 최초 작성
+* ================================
+* 
+*/ +public class TaskInfoQuery extends QueryRequest { + + private static final long serialVersionUID = 1L; + +} diff --git a/src/main/java/cokr/xit/fims/cmmn/dao/TaskInfoMapper.java b/src/main/java/cokr/xit/fims/cmmn/dao/TaskInfoMapper.java new file mode 100644 index 00000000..59eda3d8 --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/dao/TaskInfoMapper.java @@ -0,0 +1,99 @@ +package cokr.xit.fims.cmmn.dao; + +import java.util.List; +import java.util.Map; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; + +import cokr.xit.fims.cmmn.TaskInfo; +import cokr.xit.fims.cmmn.TaskInfoQuery; + +/** 업무 정보 정보 DAO + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-10-24	JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Mapper("taskInfoMapper") +public interface TaskInfoMapper extends AbstractMapper { + + /**지정한 조건에 따라 업무 정보 목록을 조회하여 반환한다.
+ * @param req 업무 정보 조회 조건 + * @return 업무 정보 목록 + */ + List selectTaskInfoList(TaskInfoQuery req); + + /**지정한 조건에 따라 업무 정보 객체들을 반환한다. + * @param req 업무 정보 조회 조건 + * @return 업무 정보 객체 목록 + */ + List selectTaskInfos(TaskInfoQuery req); + + /**업무 정보 정보를 등록한다. + * @param params 파라미터 + *
  • "taskInfo" - 업무 정보
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int insertTaskInfo(Map params); + + /**업무 정보 정보를 등록한다. + * @param taskInfo 업무 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean insert(TaskInfo taskInfo) { + return taskInfo != null && insertTaskInfo(params().set("taskInfo", taskInfo)) == 1; + } + + /**업무 정보 정보를 수정한다. + * @param params 파라미터 + *
  • "taskInfo" - 업무 정보
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updateTaskInfo(Map params); + + /**업무 정보 정보를 수정한다. + * @param taskInfo 업무 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean update(TaskInfo taskInfo) { + return taskInfo != null && updateTaskInfo(params().set("taskInfo", taskInfo)) == 1; + } + + /**지정한 업무 정보을 삭제한다. + * @param params 파라미터 + *
  • "taskInfo" - 업무 정보
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int deleteTaskInfo(Map params); + + /**업무 정보 정보를 삭제한다. + * @param taskInfo 업무 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean delete(TaskInfo taskInfo) { + return taskInfo != null && deleteTaskInfo(params().set("taskInfo", taskInfo)) == 1; + } + +} diff --git a/src/main/java/cokr/xit/fims/cmmn/service/TaskInfoService.java b/src/main/java/cokr/xit/fims/cmmn/service/TaskInfoService.java new file mode 100644 index 00000000..e960ccd9 --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/service/TaskInfoService.java @@ -0,0 +1,61 @@ +package cokr.xit.fims.cmmn.service; + +import java.util.List; + +import cokr.xit.foundation.data.DataObject; + +import cokr.xit.fims.cmmn.TaskInfo; +import cokr.xit.fims.cmmn.TaskInfoQuery; + +/**업무 정보 관리 서비스 인터페이스. + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-10-24	mjkhan 최초 작성
+ * ================================
+ * 
+ */ +public interface TaskInfoService { + + /**지정한 조건에 따라 업무 정보 목록을 조회하여 반환한다. + * @param req 업무 정보 조회 조건 + * @return 업무 정보 목록 + */ + List getTaskInfoList(TaskInfoQuery req); + + /**지정한 조건에 따라 업무 정보 객체들을 반환한다. + * @param req 업무 정보 조회 조건 + * @return 업무 정보 객체 목록 + */ + List getTaskInfos(TaskInfoQuery req); + + /**업무 정보 정보를 등록한다. + * @param taskInfo 업무 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + boolean create(TaskInfo taskInfo); + + /**업무 정보 정보를 수정한다. + * @param taskInfo 업무 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + boolean update(TaskInfo taskInfo); + + /**업무 정보 정보를 삭제한다. + * @param taskInfo 업무 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + boolean remove(TaskInfo taskInfo); + +} diff --git a/src/main/java/cokr/xit/fims/cmmn/service/bean/TaskInfoBean.java b/src/main/java/cokr/xit/fims/cmmn/service/bean/TaskInfoBean.java new file mode 100644 index 00000000..e383d04c --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/service/bean/TaskInfoBean.java @@ -0,0 +1,82 @@ +package cokr.xit.fims.cmmn.service.bean; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import cokr.xit.foundation.AbstractComponent; +import cokr.xit.foundation.data.DataObject; + +import cokr.xit.fims.cmmn.TaskInfo; +import cokr.xit.fims.cmmn.TaskInfoQuery; +import cokr.xit.fims.cmmn.dao.TaskInfoMapper; + +/**업무 정보 정보 관리 Bean + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-10-24	JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Component("taskInfoBean") +public class TaskInfoBean extends AbstractComponent { + + /** 업무 정보 정보 DAO */ + @Resource(name = "taskInfoMapper") + private TaskInfoMapper taskInfoMapper; + + /**지정한 조건에 따라 업무 정보 목록을 조회하여 반환한다. + * @param req 업무 정보 조회 조건 + * @return 업무 정보 목록 + */ + public List getTaskInfoList(TaskInfoQuery req) { + return taskInfoMapper.selectTaskInfoList(req); + } + + /**지정한 조건에 따라 업무 정보 객체들을 반환한다. + * @param req 업무 정보 조회 조건 + * @return 업무 정보 객체 목록 + */ + public List getTaskInfos(TaskInfoQuery req) { + return taskInfoMapper.selectTaskInfos(req); + } + + /**업무 정보 정보를 등록한다. + * @param taskInfo 업무 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean create(TaskInfo taskInfo) { + return taskInfoMapper.insert(taskInfo); + } + + /**업무 정보 정보를 수정한다. + * @param taskInfo 업무 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean update(TaskInfo taskInfo) { + return taskInfoMapper.update(taskInfo); + } + + /**업무 정보 정보를 삭제한다. + * @param taskInfo 업무 정보 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean remove(TaskInfo taskInfo) { + return taskInfoMapper.delete(taskInfo); + } + +} diff --git a/src/main/java/cokr/xit/fims/cmmn/service/bean/TaskInfoServiceBean.java b/src/main/java/cokr/xit/fims/cmmn/service/bean/TaskInfoServiceBean.java new file mode 100644 index 00000000..12f93a08 --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/service/bean/TaskInfoServiceBean.java @@ -0,0 +1,58 @@ +package cokr.xit.fims.cmmn.service.bean; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import cokr.xit.foundation.component.AbstractServiceBean; +import cokr.xit.foundation.data.DataObject; + +import cokr.xit.fims.cmmn.TaskInfo; +import cokr.xit.fims.cmmn.TaskInfoQuery; +import cokr.xit.fims.cmmn.service.TaskInfoService; + +/**업무 정보 서비스 구현체. + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-10-24	JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Service("taskInfoService") +public class TaskInfoServiceBean extends AbstractServiceBean implements TaskInfoService { + + /** 업무 정보 정보 Bean */ + @Resource(name = "taskInfoBean") + private TaskInfoBean taskInfoBean; + + @Override + public List getTaskInfoList(TaskInfoQuery req) { + return taskInfoBean.getTaskInfoList(req); + } + + @Override + public List getTaskInfos(TaskInfoQuery req) { + return taskInfoBean.getTaskInfos(req); + } + + @Override + public boolean create(TaskInfo taskInfo) { + return taskInfoBean.create(taskInfo); + } + + @Override + public boolean update(TaskInfo taskInfo) { + return taskInfoBean.update(taskInfo); + } + + @Override + public boolean remove(TaskInfo taskInfo) { + return taskInfoBean.remove(taskInfo); + } + +} diff --git a/src/main/java/cokr/xit/fims/cmmn/web/TaskInfoController.java b/src/main/java/cokr/xit/fims/cmmn/web/TaskInfoController.java new file mode 100644 index 00000000..7a5d8c46 --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/web/TaskInfoController.java @@ -0,0 +1,105 @@ +package cokr.xit.fims.cmmn.web; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import cokr.xit.foundation.web.AbstractController; + +import cokr.xit.fims.cmmn.TaskInfo; +import cokr.xit.fims.cmmn.TaskInfoQuery; +import cokr.xit.fims.cmmn.service.TaskInfoService; + +/**업무 정보 서비스의 웹 컨트롤러 + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-10-24	mjkhan 최초 작성
+ * ================================
+ * 
+ */ +@RequestMapping(name = "업무 정보", value = "/taskInfo") +public class TaskInfoController extends AbstractController { + + /**업무 정보 서비스*/ + @Resource(name = "taskInfoService") + private TaskInfoService taskInfoService; + + /**업무 정보 관리 메인화면(taskInfo/taskInfo-main)을 연다. + * 조건없는 {@link #getTaskInfoList(TaskInfoQuery) 업무 정보 조회 결과}를 포함시킨다. + * @return /taskInfo/taskInfo-main + */ + @RequestMapping(name = "업무 정보 메인", value = "/main.do") + public ModelAndView main() { + ModelAndView mav = getTaskInfoList(new TaskInfoQuery().setPageNum(1)); + mav.setViewName("/taskInfo/taskInfo-main"); + return mav.addObject("taskInfoList", toJson(mav.getModel().get("taskInfoList"))); + } + + /**업무 정보 목록을 조회하여 반환한다.
+ * {@link TaskInfoService#getTaskInfoList(TaskInfoQuery)} 참고 + * @param req 업무 정보 조회 조건 + * @return jsonView + *
 {
+	 *     "taskInfoList": [업무 정보 목록]
+	 *     "taskInfoStart": 업무 정보 목록 시작 인덱스
+	 *     "taskInfoFetch": 한 번에 가져오는 업무 정보 목록 수
+	 *     "taskInfoTotal": 조회 결과 찾은 전체 업무 정보 수
+	 * }
+ */ + @RequestMapping(name = "업무 정보 조회", value = "/list.do") + public ModelAndView getTaskInfoList(TaskInfoQuery req) { + List result = taskInfoService.getTaskInfoList(setFetchSize(req)); + return setCollectionInfo(new ModelAndView("jsonView"), result, "taskInfo"); + } + + /**업무 정보를 등록한다. + * @param taskInfo 업무 정보 정보 + * @return jsonView + *
 {
+	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "업무 정보 등록", value = "/create.do") + public ModelAndView create(TaskInfo taskInfo) { + boolean saved = taskInfoService.create(taskInfo); + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + /**업무 정보 정보를 수정한다. + * @param taskInfo 업무 정보 정보 + * @return jsonView + *
 {
+	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "업무 정보 수정", value = "/update.do") + public ModelAndView update(TaskInfo taskInfo) { + boolean saved = taskInfoService.update(taskInfo); + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + /**지정한 업무 정보를 제거한다. + * @param taskInfoIDs 업무 정보 아이디 + * @return jsonView + *
 {
+	 *     "affected": 저장된 정보수
+	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "업무 정보 제거", value = "/remove.do") + public ModelAndView remove(TaskInfo taskInfo) { + boolean saved = taskInfoService.remove(taskInfo); + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + +} diff --git a/src/main/resources/sql/mapper/fims/cmmn/taskInfo-mapper.xml b/src/main/resources/sql/mapper/fims/cmmn/taskInfo-mapper.xml new file mode 100644 index 00000000..1b07274c --- /dev/null +++ b/src/main/resources/sql/mapper/fims/cmmn/taskInfo-mapper.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT SGG_CD + , TASK_SE_CD + , TASK_SE_NM + , ADVNTCE_DAYCNT + , ADVNTCE_RDUCT_RT + , WKSN_RDUCT_RT + , FFNLG_ADTN_YMD + , FFNLG_ADTN_RT + , FFNLG_INADTN_RT + , FFNLG_INADTN_MXMM_CNT + , USE_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + FROM TB_TASK_INFO + + + + + + + /* 업무 정보 등록(taskInfoMapper.insertTaskInfo) */ + INSERT + INTO TB_TASK_INFO ( + SGG_CD + , TASK_SE_CD + , TASK_SE_NM + , ADVNTCE_DAYCNT + , ADVNTCE_RDUCT_RT + , WKSN_RDUCT_RT + , FFNLG_ADTN_YMD + , FFNLG_ADTN_RT + , FFNLG_INADTN_RT + , FFNLG_INADTN_MXMM_CNT + , USE_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + ) + VALUES ( + #{taskInfo.sggCd} + , #{taskInfo.taskSeCd} + , #{taskInfo.taskSeNm} + , #{taskInfo.advntceDaycnt} + , #{taskInfo.advntceRductRt} + , #{taskInfo.wksnRductRt} + , #{taskInfo.ffnlgAdtnYmd} + , #{taskInfo.ffnlgAdtnRt} + , #{taskInfo.ffnlgInadtnRt} + , #{taskInfo.ffnlgInadtnMxmmCnt} + , #{taskInfo.useYN} + , + , #{currentUser.id} + , + , #{currentUser.id} + ) + + + /* 업무 정보 수정(taskInfoMapper.updateTaskInfo) */ + UPDATE TB_TASK_INFO + SET TASK_SE_NM = #{taskInfo.taskSeNm} + , ADVNTCE_DAYCNT = #{taskInfo.advntceDaycnt} + , ADVNTCE_RDUCT_RT = #{taskInfo.advntceRductRt} + , WKSN_RDUCT_RT = #{taskInfo.wksnRductRt} + , FFNLG_ADTN_YMD = #{taskInfo.ffnlgAdtnYmd} + , FFNLG_ADTN_RT = #{taskInfo.ffnlgAdtnRt} + , FFNLG_INADTN_RT = #{taskInfo.ffnlgInadtnRt} + , FFNLG_INADTN_MXMM_CNT = #{taskInfo.ffnlgInadtnMxmmCnt} + , USE_YN = #{taskInfo.useYN} + , MDFCN_DT = + , MDFR = #{currentUser.id} + WHERE SGG_CD = #{taskInfo.sggCd} + AND TASK_SE_CD = #{taskInfo.taskSeCd} + + + /* 업무 정보 삭제(taskInfoMapper.deleteTaskInfo) */ + UPDATE TB_TASK_INFO SET + USE_YN = 'N' + , MDFCN_DT = + , MDFR = #{currentUser.id} + WHERE SGG_CD = #{taskInfo.sggCd} + AND TASK_SE_CD = #{taskInfo.taskSeCd} + + +