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;
|
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 {
|
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"?>
|
<?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">
|
<!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">
|
<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>
|
</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