1. 발송반송

- 계고장 발송 대상 수정.
  - 계고장 발송 현황 수정.

2. 주석 수정.
main
jjh 9 months ago
parent 4fc4bb824e
commit 2f6941338a

@ -244,7 +244,7 @@ public class Sndb01Controller extends ApplicationController {
.addObject("infoPrefix", "wrngTrgt") // prefix
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("wrngTrgtList", toJson(mav.getModel().get("wrngTrgt"))) //
.addObject("wrngTrgtList", toJson(mav.getModel().get("wrngTrgtList"))) // 자료
;
}
@ -369,18 +369,16 @@ public class Sndb01Controller extends ApplicationController {
*/
public ModelAndView getWarningSendingDetailInfo(SndbQuery req) {
//
List<DataObject> list = sndngDtlService.getSndngDtlList(req);
ModelAndView mav = getWarningSendingDetailList(req);
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01040-info");
mav.setViewName("fims/sndb/sndb01040-info");
return mav
.addObject("pageName", "sndb01040")
.addObject("infoPrefix", "wrngSndng") // prefix
.addObject("pageName", "sndb01040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngSndngDtl") // prefix
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("mainQuery", json ? req : toJson(req)) // Query
.addObject("wrngSndngDtl", json ? list : toJson(list)) // 계고장 발송 대상 정보
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("wrngSndngDtlList", toJson(mav.getModel().get("wrngSndngDtlList"))) // 자료
;
}

@ -395,6 +395,7 @@
<select id="selectWrngTrgtList" parameterType="map" resultType="dataobject">/* 계고장 발송 대상 목록 조회(sndngMapper.selectWrngTrgtList) */
<include refid="utility.paging-prefix" />
SELECT C.CRDN_ID <!-- 단속 ID -->
, SUM(C.FFNLG_CRDN_AMT) OVER() AS GRAMT <!-- 총금액 -->
<include refid="selectWrngTrgt" />
<include refid="fromWrngTrgt" />
<include refid="utility.orderBy" />
@ -402,9 +403,7 @@
</select>
<select id="selectWrngTrgts" parameterType="map" resultType="dataobject">/* 계고장 발송 대상 객체 가져오기(sndngMapper.selectWrngTrgts) */
SELECT COUNT(*) OVER() AS TNOCS <!-- 총건수 -->
, SUM(C.FFNLG_CRDN_AMT) OVER() AS GRAMT <!-- 총금액 -->
, C.CRDN_ID <!-- 단속 ID -->
SELECT C.CRDN_ID <!-- 단속 ID -->
<include refid="selectWrngTrgt" />
<include refid="fromWrngTrgt" />
<include refid="utility.orderBy" />

@ -605,7 +605,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -876,7 +876,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -605,7 +605,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -795,7 +795,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -871,7 +871,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -630,7 +630,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -741,7 +741,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -755,7 +755,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -732,13 +732,14 @@
$P.control.urls.remove = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/010/remove.do"); // 삭제
$P.control.urls.getInfo = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/020/info.do"); // 수정
}
/**************************************************************************
* 최초 실행 함수
**************************************************************************/
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -688,7 +688,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -787,7 +787,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -830,7 +830,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -78,6 +78,7 @@
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">계고일자</th>
<th class="cmn" style="width: 160px;">계고사유</th>
<th class="cmn" style="width: 160px;">민원신청번호</th>
@ -107,6 +108,7 @@
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{CRDN_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_RSN_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_APLY_NO}</td>
@ -134,7 +136,7 @@
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="24" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
@ -270,12 +272,29 @@
.replace(/{ondblclick}/gi, "pageObject['${pageName}'].getTotalInfo('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
// $("#tbody--${pageName}").html(trs.join());
let noMore = (totalSize == ${infoPrefix}List.length);
let initScroll = ($P.control.query.pageNum < 2) && ($P.control.untilPageNum == 0);
$("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore);
if ($P.control.untilPageNum != 0) {
$P.control.query.fetchSize = $P.control.defaultFetchSize;
$P.control.query.pageNum = $P.control.untilPageNum;
$P.control.untilPageNum = 0;
}
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
$P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
@ -300,8 +319,6 @@
, title : "개별총정보"
, content : resp
, size : "xxl"
, init : () => { }
, onClose : () => { }
});
}
});
@ -352,6 +369,28 @@
// DataTables width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
// DataTables 스크롤 이벤트 생성
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
/* 출처: https://nowonbun.tistory.com/538 [명월 일지:티스토리]
show.bs.modal : 모달이 열릴 때 바로 실행되는 이벤트입니다.
shown.bs.modal : 모달의 열림이 끝나고 실행되는 이벤트입니다.
hide.bs.modal : 모달이 닫힐 때 바로 실행되는 이벤트입니다.
hidden.bs.modal : 모달의 닫힘이 끝나고 실행되는 이벤트입니다.
*/
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) {
$P.control.setData({
${infoPrefix}List : ${wrngTrgtList}
, ${infoPrefix}Start : ${wrngTrgtStart}
, ${infoPrefix}Fetch : ${wrngTrgtFetch}
, ${infoPrefix}Total : ${wrngTrgtTotal}
});
// 초기 데이터 설정
$P.initData();
});
}
// 초기 화면 설정
@ -367,7 +406,7 @@
// 초기 데이터 설정
$P.initData = () => {
$("#tnocs--${pageName}").val($P.control.dataset.getValue("TNOCS")); // 총건수
$("#tnocs--${pageName}").val(${wrngTrgtTotal}); // 총건수
$("#gramt--${pageName}").val($P.control.dataset.getValue("GRAMT")); // 총금액
// 발송 종료 일자
@ -399,11 +438,8 @@
// 2. 초기 화면 설정
$P.initForm();
// 3. Dataset 설정
$P.control.addData(${wrngTrgtList});
// 4. 초기 데이터 설정
$P.initData();
// 3. 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
});
</script>

@ -322,7 +322,7 @@
, data : params || {}
, success : resp => {
dialog.open({
id : $P.control.prefixed("DtlDialog")
id : "wrngSndngDtlDialog"
, title : "계고장 발송 상세 정보"
, content : resp
, size : $P.control.infoSize
@ -596,7 +596,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

@ -10,8 +10,7 @@
<div class="wrapper-pop">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<input type="hidden" id="sggCd--${pageName}" name="sggCd" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" />
<input type="hidden" id="sndngId--${pageName}" name="sndngId" />
</form> <!-- /입력 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
@ -25,10 +24,10 @@
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀" onclick="fnExcel${pageName}();">
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀">
엑셀
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnPrint--${pageName}" title="계고장 출력" onclick="fnPrint${pageName}();">
<button type="button" class="btn btn-primary w-px-120" id="btnPrint--${pageName}" title="계고장 출력">
계고장 출력
</button>
</span>
@ -43,6 +42,7 @@
<thead class="sticky-thead">
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">발송상태</th>
<th class="cmn" style="width: 160px;">등기번호</th>
<th class="cmn" style="width: 120px;">발송일자</th>
@ -72,6 +72,7 @@
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{SNDNG_DTL_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RG_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_YMD}</td>
@ -99,7 +100,7 @@
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="24" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
@ -142,7 +143,7 @@
prefix : "wrngSndngDtl"
, prefixName : "계고장 발송 상세 정보"
, keymapper : info => info ? info.SNDNG_DTL_ID : ""
, dataGetter : obj => obj.wrngSndngDtlList
, dataGetter : obj => obj.${infoPrefix}List
, appendData : true
, formats : {
SNDNG_YMD : dateFormat
@ -199,11 +200,10 @@
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "$P.control.setCurrent('" + dataItem.getValue("SNDNG_DTL_ID") + "');")
.replace(/{ondblclick}/gi, "getTotalInfo${pageName}('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{onclick}/gi, "pageObject['${pageName}'].control.setCurrent('" + dataItem.getValue("SNDNG_DTL_ID") + "');")
.replace(/{ondblclick}/gi, "pageObject['${pageName}'].getTotalInfo('" + dataItem.getValue("CRDN_ID") + "');")
);
let noMore = (totalSize == ${infoPrefix}List.length);
let initScroll = ($P.control.query.pageNum < 2) && ($P.control.untilPageNum == 0);
@ -220,7 +220,7 @@
}
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
scrollDataList${pageName} = () => {
$P.scrollDataList = () => {
$P.control.tableRenderComplete = false; // dataTables 에 자료 추가 false
$P.control.load($P.control.query.pageNum + 1);
@ -230,14 +230,14 @@
* 사용자 함수(function)
**************************************************************************/
// 개별총정보 dialog
getTotalInfo${pageName} = (crdnId) => {
$P.getTotalInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let params = {
callControlName : "$P.control"
callControlName : "pageObject['${pageName}'].control"
, callPurpose : "view"
, sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("#taskSeCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val()
, crdnId : crdnId
}
@ -256,23 +256,15 @@
}
// 출력
printWrng${pageName} = (params) => {
$P.print = (params) => {
if (!params) return;
}
// 검색 자료 재조회
refreshList${pageName} = () => {
$P.control.untilPageNum = $P.control.query.pageNum;
$P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum;
$P.control.load(1);
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 엑셀 버튼 이벤트
fnExcel${pageName} = () => {
$P.fnExcel = () => {
if ($P.control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
@ -283,22 +275,22 @@
}
// DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td"));
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)"));
$P.control.query.cellDefs = cellDefs;
$P.control.download();
}
// 계고장출력 버튼 이벤트
fnPrint${pageName} = () => {
$P.fnPrint = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
dialog.alert({
content : $P.control.prefixName + " 정보를 출력하시겠습니까?"
, onOK : () => {
printWrng${pageName}(${pageName}Fields.get());
$P.print($P.formFields.get());
}
});
}
@ -306,33 +298,20 @@
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 이벤트
setEvent${pageName} = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmEdit--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() {
let value = this.value.replaceAll("-", "");
if (value.length > 7) {
this.value = value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6);
} else if(value.length > 5) {
this.value = value.substring(0, 4) + "-" + value.substring(4);
}
});
});
// 이벤트 설정
$P.setEvent = () => {
// 기본 버튼 이벤트
$("#btnExcel--${pageName}").on("click", () => $P.fnExcel()); // 엑셀
// 업무 버튼 이벤트
$("#btnPrint--${pageName}").on("click", () => $P.fnPrint()); // 출력
// DataTables width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
// DataTables 스크롤 이벤트 생성
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName});
/* 출처: https://nowonbun.tistory.com/538 [명월 일지:티스토리]
show.bs.modal : 모달이 열릴 때 바로 실행되는 이벤트입니다.
shown.bs.modal : 모달의 열림이 끝나고 실행되는 이벤트입니다.
hide.bs.modal : 모달이 닫힐 때 바로 실행되는 이벤트입니다.
hidden.bs.modal : 모달의 닫힘이 끝나고 실행되는 이벤트입니다.
*/
fnMakeScrollableTable($("#table-responsive--${pageName}")[0], $P.scrollDataList);
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) {
$P.control.setData({
@ -341,49 +320,42 @@
, ${infoPrefix}Fetch : ${wrngSndngDtlFetch}
, ${infoPrefix}Total : ${wrngSndngDtlTotal}
});
// 초기 데이터 설정
$P.initData();
});
}
// 화면 초기 설정
initForm${pageName} = () => {
// 초기 화면 설정
$P.initForm = () => {
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// dataset 초기화
$P.control.dataset.clear();
}
// 기본 데이터 설정
setFormData${pageName} = () => {
let sggCd = ${pageName}Query.sggCd;
let taskSeCd = ${pageName}Query.taskSeCd;
$("#sggCd--${pageName}").val(sggCd); // 시군구 코드
$("#taskSeCd--${pageName}").val(taskSeCd); // 업무 구분 코드
// 검색 조건 설정
$P.control.defaultFetchSize = ${pageName}Query.fetchSize;
$P.control.query = ${pageName}Query;
// 초기 데이터 설정
$P.initData = () => {
//
$("#sndngId--${pageName}").val($P.control.dataset.getValue("SNDNG_ID"));
// URL 설정
setURL${pageName}(taskSeCd);
$P.setURL($P.mainQuery.taskSeCd);
}
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/040/list.do"); // 조회
// 업무구분에 따른 URL 설정
$P.setURL = (taskSeCd) => {
$P.control.urls.load = wctx.url("/" + taskSeCd + $P.PrefixUrl + "/040/list.do"); // 조회
}
// 이벤트 설정
setEvent${pageName}();
// 화면 초기화
initForm${pageName}();
/**************************************************************************
* 최초 실행 함수
**************************************************************************/
// 1. 이벤트 설정
$P.setEvent();
// 기본 데이터 설정
setFormData${pageName}();
// 2. 초기 화면 설정
$P.initForm();
// 보안모드
// 3. 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
});

@ -659,7 +659,7 @@
// 1. 이벤트 설정
$P.setEvent();
// 2. 화면 초기 설정 및 업무 구분 변경
// 2. 초기 설정 및 업무 구분 변경
$P.fnResetAndChangeBiz($("#layout-navbar input[name='taskSeCd']:checked").val());
// 3. 보안모드

Loading…
Cancel
Save