Merge branch 'main' of http://xit.xit-git.com:3000/xit-app/fims.git into main
commit
ecf21a0239
@ -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<DataObject> getSchdlList(SchdlQuery req);
|
||||
|
||||
/**지정한 조건에 따라 일정관리 객체를 반환한다.
|
||||
* @param schdlId 일정관리 ID
|
||||
* @return 일정관리 객체
|
||||
*/
|
||||
DataObject getSchdlInfo(String schdlId);
|
||||
|
||||
/**일정관리 정보를 등록한다.
|
||||
* @param schdl 일정관리
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
String create(Schdl schdl);
|
||||
|
||||
/**일정관리 정보를 수정한다.
|
||||
* @param schdl 일정관리
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
String update(Schdl schdl);
|
||||
|
||||
/**일정관리 정보를 삭제한다.
|
||||
* @param schdl 일정관리
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
String remove(Schdl schdl);
|
||||
}
|
||||
|
@ -1,4 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cokr.xit.fims.mngt.dao.SchdlMapper">
|
||||
|
||||
<!-- 일정관리 정보 매퍼
|
||||
========== 변경 이력 ==========
|
||||
2024-02-26 leebj 최초 작성
|
||||
============================ -->
|
||||
|
||||
<resultMap id="schdlRow" type="cokr.xit.fims.mngt.Schdl"> <!-- 일정관리 -->
|
||||
<result property="schdlId" column="SCHDL_ID" /> <!-- 일정 ID -->
|
||||
<result property="schdlBgngYmd" column="SCHDL_BGNG_YMD" /> <!-- 일정 시작 일자 -->
|
||||
<result property="schdlEndYmd" column="SCHDL_END_YMD" /> <!-- 일정 종료 일자 -->
|
||||
<result property="userId" column="USER_ID" /> <!-- 사용자 ID -->
|
||||
<result property="schdlCn" column="SCHDL_CN" /> <!-- 일정 내용 -->
|
||||
<result property="delYn" column="DEL_YN" /> <!-- 삭제 여부 -->
|
||||
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
|
||||
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
|
||||
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
|
||||
<result property="modifiedBy" column="MDFR" /> <!-- 수정자 -->
|
||||
<result property="removedAt" column="DEL_DT" /> <!-- 삭제 일시 -->
|
||||
<result property="removedBy" column="DLTR" /> <!-- 삭제자 -->
|
||||
<result property="delRsn" column="DEL_RSN" /> <!-- 삭제 사유 -->
|
||||
</resultMap>
|
||||
|
||||
<sql id="select">
|
||||
SELECT SCHDL_ID <!-- 일정 ID -->
|
||||
, SCHDL_BGNG_YMD <!-- 일정 시작 일자 -->
|
||||
, SCHDL_END_YMD <!-- 일정 종료 일자 -->
|
||||
, USER_ID <!-- 사용자 ID -->
|
||||
, SCHDL_CN <!-- 일정 내용 -->
|
||||
, DEL_YN <!-- 삭제 여부 -->
|
||||
, REG_DT <!-- 등록 일시 -->
|
||||
, RGTR <!-- 등록자 -->
|
||||
, MDFCN_DT <!-- 수정 일시 -->
|
||||
, MDFR <!-- 수정자 -->
|
||||
, DEL_DT <!-- 삭제 일시 -->
|
||||
, DLTR <!-- 삭제자 -->
|
||||
, DEL_RSN <!-- 삭제 사유 -->
|
||||
FROM TB_SCHDL
|
||||
</sql>
|
||||
|
||||
<select id="selectSchdlList" parameterType="map" resultType="dataobject">
|
||||
/* 일정관리 목록 조회(schdlMapper.selectSchdlList) */
|
||||
<include refid="select" />
|
||||
WHERE DEL_YN = 'N'
|
||||
AND USER_ID = #{userId}
|
||||
<include refid="utility.orderBy" />
|
||||
</select>
|
||||
|
||||
<select id="selectSchdlInfo" parameterType="string" resultType="dataObject">
|
||||
/* 일정관리 객체 가져오기(schdlMapper.selectSchdlInfo) */
|
||||
<include refid="select" />
|
||||
WHERE DEL_YN = 'N'
|
||||
AND SCHDL_ID = #{schdlId}
|
||||
</select>
|
||||
|
||||
<insert id="insertSchdl" parameterType="map">
|
||||
/* 일정관리 등록(schdlMapper.insertSchdl) */
|
||||
<selectKey resultType="string" keyProperty="schdl.schdlId" keyColumn="NEW_ID" order="BEFORE">
|
||||
SELECT
|
||||
LPAD(CAST(IFNULL(MAX(SCHDL_ID) + 1, 1) AS INT), 10, '0')
|
||||
AS NEW_ID
|
||||
FROM TB_SCHDL
|
||||
</selectKey>
|
||||
INSERT
|
||||
INTO TB_SCHDL (
|
||||
SCHDL_ID <!-- 일정 ID -->
|
||||
, SCHDL_BGNG_YMD <!-- 일정 시작 일자 -->
|
||||
, SCHDL_END_YMD <!-- 일정 종료 일자 -->
|
||||
, USER_ID <!-- 사용자 ID -->
|
||||
, SCHDL_CN <!-- 일정 내용 -->
|
||||
, DEL_YN <!-- 삭제 여부 -->
|
||||
, REG_DT <!-- 등록 일시 -->
|
||||
, RGTR <!-- 등록자 -->
|
||||
, MDFCN_DT <!-- 수정 일시 -->
|
||||
, MDFR <!-- 수정자 -->
|
||||
) VALUES (
|
||||
#{schdl.schdlId} <!-- 일정 ID -->
|
||||
, #{schdl.schdlBgngYmd} <!-- 일정 시작 일자 -->
|
||||
, #{schdl.schdlEndYmd} <!-- 일정 종료 일자 -->
|
||||
, #{schdl.userId} <!-- 사용자 ID -->
|
||||
, #{schdl.schdlCn} <!-- 일정 내용 -->
|
||||
, 'N' <!-- 삭제 여부 -->
|
||||
, <include refid="utility.now" /> <!-- 등록 일시 -->
|
||||
, #{currentUser.id} <!-- 등록자 -->
|
||||
, <include refid="utility.now" /> <!-- 수정 일시 -->
|
||||
, #{currentUser.id} <!-- 수정자 -->
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="updateSchdl" parameterType="map">
|
||||
/* 일정관리 수정(schdlMapper.updateSchdl) */
|
||||
UPDATE TB_SCHDL
|
||||
SET SCHDL_BGNG_YMD = #{schdl.schdlBgngYmd} <!-- 일정 시작 일자 -->
|
||||
, SCHDL_END_YMD = #{schdl.schdlEndYmd} <!-- 일정 종료 일자 -->
|
||||
, USER_ID = #{schdl.userId} <!-- 사용자 ID -->
|
||||
, SCHDL_CN = #{schdl.schdlCn} <!-- 일정 내용 -->
|
||||
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
|
||||
, MDFR = #{currentUser.id} <!-- 수정자 -->
|
||||
WHERE SCHDL_ID = #{schdl.schdlId}
|
||||
</update>
|
||||
|
||||
<update id="deleteSchdl" parameterType="map">
|
||||
/* 일정관리 삭제(schdlMapper.deleteSchdl) */
|
||||
UPDATE TB_SCHDL
|
||||
SET DEL_YN = 'Y'
|
||||
, DEL_DT = <include refid="utility.now" />
|
||||
, DLTR = #{currentUser.id}
|
||||
WHERE SCHDL_ID = #{schdl.schdlId}
|
||||
</update>
|
||||
|
||||
</mapper>
|
@ -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"%>
|
||||
<c:set var="pageKorName" scope="request">일정 상세</c:set>
|
||||
<div class="content-wrapper">
|
||||
<div class="container-xxl flex-grow-1 px-0">
|
||||
|
||||
<div class="card">
|
||||
<form id="frmEdit--${pageName}" name="frmEdit">
|
||||
<input type="text" id="schdlId--${pageName}" name="schdlId" data-map="SCHDL_ID" hidden />
|
||||
|
||||
<div class="row g-1">
|
||||
|
||||
<div class="col-md-6">
|
||||
<label for="schdlBgngYmd--${pageName}"
|
||||
class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">
|
||||
시작일
|
||||
</label>
|
||||
<input type="text" id="schdlBgngYmd--${pageName}" name="schdlBgngYmd" data-map="SCHDL_BGNG_YMD"
|
||||
class="form-control form-date" required
|
||||
data-fmt-type="day" title="시작 날짜 선택" />
|
||||
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="schdlEndYmd--${pageName}"
|
||||
class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">
|
||||
종료일
|
||||
</label>
|
||||
<input type="text" id="schdlEndYmd--${pageName}" name="schdlEndYmd" data-map="SCHDL_END_YMD"
|
||||
class="form-control form-date" required
|
||||
data-fmt-type="day" title="종료 날짜 선택" />
|
||||
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<label for="schdlCn--${pageName}"
|
||||
class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end align-top required">
|
||||
내용
|
||||
</label>
|
||||
<input type="text" id="schdlCn--${pageName}" name="schdlCn" data-map="SCHDL_CN"
|
||||
class="form-control w-px-500" required />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row m-3">
|
||||
<div class="col-md-12">
|
||||
<span class="float-end">
|
||||
<button type="button" id="btnSave--${pageName}" class="btn btn-primary">저장</button>
|
||||
<button type="button" id="btnRemove--${pageName}" class="btn btn-primary">삭제</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
pageObject["${pageName}"] = {};
|
||||
pageObject["${pageName}"].provided = {};
|
||||
|
||||
pageObject.childReq = [];
|
||||
pageObject.childReq.push({
|
||||
refresh : function(){ },
|
||||
});
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
var $P = pageObject["${pageName}"];
|
||||
|
||||
if(pageObject.parentRes.length > 0){
|
||||
$P.provided = pageObject.parentRes.pop();
|
||||
} else {
|
||||
$P.provided = pageObject.childReq.pop();
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* DatasetControl, Dataset, FormFields
|
||||
**************************************************************************/
|
||||
$P.formFields = new FimsFormFields("#frmEdit--${pageName}");
|
||||
|
||||
$P.schdlControl = new DatasetControl({
|
||||
dataGetter : obj => obj["List"], appendData : false,
|
||||
keymapper : info => info ? info.SCHDL_ID : "",
|
||||
urls : {
|
||||
create : wctx.url("/mngt/mngt02/020/create.do"),
|
||||
update : wctx.url("/mngt/mngt02/020/update.do"),
|
||||
remove : wctx.url("/mngt/mngt02/020/remove.do")
|
||||
},
|
||||
formats: {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
/**************************************************************************
|
||||
* Dataset.on
|
||||
**************************************************************************/
|
||||
$P.schdlControl.dataset.onCurrentChange = (dataItem) => {
|
||||
if(!dataItem){
|
||||
return;
|
||||
}
|
||||
$P.formFields.set(dataItem);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* pageObject.function
|
||||
**************************************************************************/
|
||||
$P.fnSave = () => {
|
||||
|
||||
if(!customValidate($("#frmEdit--${pageName} input"))) return;
|
||||
|
||||
var info = $P.formFields.get();
|
||||
|
||||
if(info.schdlBgngYmd > info.schdlEndYmd){
|
||||
alert("시작일자가 종료일자 보다 큽니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
var create = ($("#schdlId--${pageName}").val() == "");
|
||||
if(create){
|
||||
ajax.post({
|
||||
url : $P.schdlControl.urls.create,
|
||||
data : info,
|
||||
success : (resp) => {
|
||||
if(resp.saved){
|
||||
dialog.close("scheduleInfoDialog");
|
||||
dialog.alert({
|
||||
content:"저장되었습니다.",
|
||||
init : function() {
|
||||
setDialogZindex();
|
||||
focusClose();
|
||||
},
|
||||
onClose : () => {
|
||||
info.schdlId = resp.schdlId;
|
||||
$P.provided.refresh("add", info);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
ajax.post({
|
||||
url : $P.schdlControl.urls.update,
|
||||
data : info,
|
||||
success : (resp) => {
|
||||
if(resp.saved){
|
||||
dialog.close("scheduleInfoDialog");
|
||||
dialog.alert({
|
||||
content:"저장되었습니다.",
|
||||
init : function() {
|
||||
setDialogZindex();
|
||||
focusClose();
|
||||
},
|
||||
onClose : () => {
|
||||
$P.provided.refresh("modify", info);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$P.fnRemove = () => {
|
||||
|
||||
var info = $P.formFields.get();
|
||||
|
||||
ajax.post({
|
||||
url : $P.schdlControl.urls.remove,
|
||||
data : info,
|
||||
success : (resp) => {
|
||||
if(resp.saved){
|
||||
dialog.close("scheduleInfoDialog");
|
||||
dialog.alert({
|
||||
content:"삭제되었습니다.",
|
||||
init : function() {
|
||||
setDialogZindex();
|
||||
focusClose();
|
||||
},
|
||||
onClose : () => {
|
||||
$P.provided.refresh("del", { schdlId : info.schdlId });
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* element.on
|
||||
**************************************************************************/
|
||||
$("#btnSave--${pageName}").on('click', () => $P.fnSave());
|
||||
$("#btnRemove--${pageName}").on('click', () => $P.fnRemove());
|
||||
|
||||
/**************************************************************************
|
||||
* 초기화
|
||||
**************************************************************************/
|
||||
initDatepicker("frmEdit--${pageName}"); //달력 초기화
|
||||
|
||||
var schdlInfo = ${schdlInfo};
|
||||
if(schdlInfo != null){
|
||||
$P.schdlControl.dataset.setData([schdlInfo]);
|
||||
} else {
|
||||
|
||||
$P.schdlControl.dataset.setData([{ SCHDL_BGNG_YMD : "${schdlBgngYmd}", SCHDL_END_YMD : "${schdlEndYmd}" }]);
|
||||
|
||||
$("#btnRemove--${pageName}").attr("hidden","hidden");
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
Loading…
Reference in New Issue