계고장 발송 현황 수정.

사전통지 발송 현황 수정.
main
jjh 11 months ago
parent bb2830072d
commit 05aedda926

@ -31,6 +31,12 @@ public interface SndngDtlService {
*/
List<DataObject> getSndngDtls(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getWrngSndngDtlList(SndbQuery req);
/** .
* @param req
* @return

@ -47,12 +47,6 @@ public interface SndngService {
*/
List<DataObject> getWrngSndngList(SndbQuery req);
/** .
* @param req
* @return
*/
List<DataObject> getWrngSndngDtls(SndbQuery req);
/** .
* @param req
* @return

@ -40,6 +40,11 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl
return sndngDtlBean.getSndngDtls(req);
}
@Override
public List<DataObject> getWrngSndngDtlList(SndbQuery req) {
return sndngDtlBean.getSndngDtlList(req);
}
@Override
public List<DataObject> getAdvntceSndngDtlList(SndbQuery req) {
return sndngDtlBean.getSndngDtlList(req);

@ -55,11 +55,6 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
return sndngBean.getSndngList(req);
}
@Override
public List<DataObject> getWrngSndngDtls(SndbQuery req) {
return sndngDtlBean.getSndngDtls(req);
}
@Override
public List<DataObject> getAdvntceTrgtList(SndbQuery req) {
return sndngBean.getAdvntceTrgtList(req);

@ -51,15 +51,16 @@ public class Sndb01Controller extends ApplicationController {
, createWarningSendingList = "/020/createList.do" // 계고장 발송 등록
, warningSendingMain = "/030/main.do" // 계고장 발송 현황 메인 화면
, getWarningSendingList = "/030/list.do" // 계고장 발송 현황 목록 조회
, getWarningSendingInfo = "/040/info.do" // 계고장 발송 상세 대장 조회
, getWarningSendingInfo = "/040/info.do" // 계고장 발송 상세 화면
, getWarningSendingDetailsList = "/040/list.do" // 계고장 발송 현황 상세 목록 조회
, advanceNoticeTargetMain = "/050/main.do" // 사전통지 발송 대상 메인 화면
, getAdvanceNoticeTargetList = "/050/list.do" // 사전통지 발송 대상 목록 조회
, getAdvanceNoticeTargetInfo = "/060/info.do" // 사전통지 발송 대상 조회
, createAdvanceNoticeSendingList = "/060/createList.do" // 사전통지 발송 등록
, advanceNoticeSendingMain = "/070/main.do" // 사전통지 발송 현황 메인 화면
, getAdvanceNoticeSendingList = "/070/list.do" // 사전통지 발송 대상 목록 조회
, getAdvanceNoticeSendingInfo = "/080/info.do" // 사전통지 발송 상세 대장 조회
, getAdvanceNoticeSendingDetailsList= "/080/list.do" // 사전통지 발송 상세 대장 조회
, getAdvanceNoticeSendingInfo = "/080/info.do" // 사전통지 발송 상세 화면
, getAdvanceNoticeSendingDetailsList= "/080/list.do" // 사전통지 발송 현황 상세 목록 조회
@ -132,7 +133,7 @@ public class Sndb01Controller extends ApplicationController {
;
}
/** .<br />
/** .
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
@ -278,7 +279,7 @@ public class Sndb01Controller extends ApplicationController {
;
}
/** .<br />
/** .
* {@link SndngService#getWarningSendingList(SndngQuery)}
* @param req
* @return jsonView
@ -342,7 +343,7 @@ public class Sndb01Controller extends ApplicationController {
}
}
/** - (sndb/sndb01/040-info) .
/** - (sndb/sndb01/040-info) .
* @param sndngId ID
* @return fims/sndb/sndb01040-info jsonView
* <pre>{
@ -350,19 +351,91 @@ public class Sndb01Controller extends ApplicationController {
* }</pre>
*/
public ModelAndView getWarningSendingInfo(SndbQuery req) {
List<?> sndngDtls = sndngService.getWrngSndngDtls(req);
boolean json = jsonResponse();
//
ModelAndView mav = getWarningSendingDetailsList(req);
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01040-info");
mav.setViewName("fims/sndb/sndb01040-info");
return mav.addObject("pageName", "sndb01040")
.addObject("sggCd", req.getSggCd())
.addObject("taskSeCd", req.getTaskSeCd())
.addObject("wrngSndngDtl", json ? sndngDtls : toJson(sndngDtls)) // 계도장 발송 현황 세부내용
return mav
.addObject("pageName", "sndb01040")
.addObject("query", toJson(req))
.addObject("wrngSndngDtlList", toJson(mav.getModel().get("wrngSndngDtlList")))
;
}
/** - .
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
* <pre><code> {
* "sndngDtlList": [ ]
* "sndngDtlStart":
* "sndngDtlFetch":
* "sndngDtlTotal":
* }</code></pre>
*/
public ModelAndView getWarningSendingDetailsList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) {
List<?> result = sndngDtlService.getWrngSndngDtlList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndngDtl");
} else {
// 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String dateTime = dateFormat.format(System.currentTimeMillis());
ArrayList<CellDef> cellDefs = fromJson(req.getCellDefs(), new TypeReference<ArrayList<CellDef>>() {});
XLSWriter xlsx = new XLSWriter()
.setFilename("계도장발송상세" + "_목록_" + dateTime + ".xlsx")
.worksheet(0);
// CellStyle 지정은 여기에서..
CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬
CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,)
CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일
CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간
List<DataObject> list = sndngDtlService.getWrngSndngDtlList(req.setFetchSize(0));
CellDef.setValues(cellDefs, Map.ofEntries(
Map.entry("발송상태", xlsx.style("SNDNG_DTL_STTS_NM", center))
, Map.entry("등기번호", xlsx.style("RG_NO", center))
, Map.entry("발송일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_YMD"))).style(dateYMD))
, Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD))
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자생일", xlsx.style("RTPYR_BRDT_MASK", center))
, Map.entry("우편번호", xlsx.style("RTPYR_ZIP", center))
, Map.entry("주소", "RTPYR_ADDR")
, Map.entry("상세주소", "RTPYR_DTL_ADDR")
, Map.entry("배달일자", xlsx.style("DLVR_YMD", center))
, Map.entry("배달시각", xlsx.style("DLVR_TM", center))
, Map.entry("미배달사유", "UNDLVR_RSN_NM")
, Map.entry("수령인", "RCPN_NM")
, Map.entry("수령인관계", "RCPN_REL_NM")
, Map.entry("단속일시", xlsx.style("CRDN_DT", center))
, Map.entry("차량번호", "VHRNO")
, Map.entry("단속장소", "CRDN_PLC")
, Map.entry("과태료금액", xlsx.style("FFNLG_AMT", numeric))
, Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT))
, Map.entry("등록사용자", xlsx.style("RGTR_NM", center))
, Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT))
, Map.entry("수정사용자", xlsx.style("MDFR_NM", center))
)
);
xlsx.cell(0, 0)
.value("계도장 발송 상세", center)
.merge(0, cellDefs.size() - 1)
.cell(3, 0)
.rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx)))
.cell(4, 0)
.values(list, CellDef.values(cellDefs));
return new ModelAndView("xlsView")
.addObject("xls", xlsx);
}
}
/** (sndb/sndb01/050-main) .
* @return /sndb/sndb01/050-main
*/
@ -390,7 +463,7 @@ public class Sndb01Controller extends ApplicationController {
;
}
/** .<br />
/** .
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
@ -531,14 +604,15 @@ public class Sndb01Controller extends ApplicationController {
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
return mav.addObject("pageName", "sndb01070") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
return mav
.addObject("pageName", "sndb01070") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "advntceSndng") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
;
}
/** .<br />
/** .
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
@ -602,7 +676,7 @@ public class Sndb01Controller extends ApplicationController {
}
}
/** - (sndb/sndb01/080-info) .
/** - (sndb/sndb01/080-info) .
* @param sndngId ID
* @return fims/sndb/sndb01080-info jsonView
* <pre>{
@ -622,15 +696,15 @@ public class Sndb01Controller extends ApplicationController {
;
}
/** .<br />
/** - .
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
* <pre><code> {
* "sndngList": [ ]
* "sndngStart":
* "sndngFetch":
* "sndngTotal":
* "sndngDtlList": [ ]
* "sndngDtlStart":
* "sndngDtlFetch":
* "sndngDtlTotal":
* }</code></pre>
*/
public ModelAndView getAdvanceNoticeSendingDetailsList(SndbQuery req) {
@ -662,10 +736,15 @@ public class Sndb01Controller extends ApplicationController {
, Map.entry("발송일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_YMD"))).style(dateYMD))
, Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD))
, Map.entry("납부자명", "RTPYR_NM")
, Map.entry("납부자번호", xlsx.style("RTPYR_BRDT", center))
, Map.entry("납부자생일", xlsx.style("RTPYR_BRDT_MASK", center))
, Map.entry("우편번호", xlsx.style("RTPYR_ZIP", center))
, Map.entry("주소", "RTPYR_ADDR")
, Map.entry("상세주소", "RTPYR_DTL_ADDR")
, Map.entry("배달일자", xlsx.style("DLVR_YMD", center))
, Map.entry("배달시각", xlsx.style("DLVR_TM", center))
, Map.entry("미배달사유", "UNDLVR_RSN_NM")
, Map.entry("수령인", "RCPN_NM")
, Map.entry("수령인관계", "RCPN_REL_NM")
, Map.entry("단속일시", xlsx.style("CRDN_DT", center))
, Map.entry("차량번호", "VHRNO")
, Map.entry("단속장소", "CRDN_PLC")
@ -696,9 +775,6 @@ public class Sndb01Controller extends ApplicationController {
/** (sndb/sndb01/090-main) .
*
* @return /sndb/sndb01/090-main
@ -719,7 +795,7 @@ public class Sndb01Controller extends ApplicationController {
;
}
/** .<br />
/** .
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
@ -961,7 +1037,7 @@ public class Sndb01Controller extends ApplicationController {
;
}
/** .<br />
/** .
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView
@ -999,7 +1075,7 @@ public class Sndb01Controller extends ApplicationController {
;
}
/** .<br />
/** .
* {@link SndngService#getSndngList(SndngQuery)}
* @param req
* @return jsonView

@ -554,11 +554,17 @@ public class DpvController {
}
@Override
@RequestMapping(name="계고장 발송 현황 상세 조회", value=METHOD_URL.getWarningSendingInfo)
@RequestMapping(name="계고장 발송 현황 상세 화면", value=METHOD_URL.getWarningSendingInfo)
public ModelAndView getWarningSendingInfo(SndbQuery req) {
return super.getWarningSendingInfo(req);
}
@Override
@RequestMapping(name="계고장 발송 현황 상세 목록 조회", value=METHOD_URL.getWarningSendingDetailsList)
public ModelAndView getWarningSendingDetailsList(SndbQuery req) {
return super.getWarningSendingDetailsList(req);
}
@Override
@RequestMapping(name="사전통지 발송 대상 목록 조회", value=METHOD_URL.getAdvanceNoticeTargetList)
public ModelAndView getAdvanceNoticeTargetList(SndbQuery req) {

@ -155,16 +155,20 @@
, SD.DEL_DT /* 삭제 일시 */
, SD.DLTR /* 삭제자 */
, SD.DEL_RSN /* 삭제 사유 */
, GET_MASK_DATE(SD.DUDT_YMD, 'K') AS DUDT_YMD_MASK_KOR /* 납기 일자(한글표기) */
, GET_MASK_DATE(SD.DUDT_YMD, '.') AS DUDT_YMD_MASK /* 납기 일자 */
, GET_MASK_DATE(SD.DUDT_AFTR_YMD, '.') AS DUDT_AFTR_YMD_MASK /* 납기 후 일자 */
, GET_MASK_EPAYNO(SD.EPAYNO) AS EPAYNO_MASK /* 전자납부번호 */
, (SELECT GET_CODE_NM('FIM050', SD.SNDNG_DTL_STTS_CD) FROM DUAL) AS SNDNG_DTL_STTS_NM /* 발송 상세 상태 명 */
, (SELECT GET_CODE_NM('FIM050', SD.BFR_SNDNG_DTL_STTS_CD) FROM DUAL) AS BFR_SNDNG_DTL_STTS_NM /* 전 발송 상세 상태 명 */
, (SELECT GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD) FROM DUAL) AS SNDNG_RCVMT_NM /* 발송 수납 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.RGTR) AS RGTR_NM /* 등록자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.MDFR) AS MDFR_NM /* 수정자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.DLTR) AS DLTR_NM /* 삭제자 명 */
, (SELECT GET_MASK_DATE(SD.SNDNG_YMD, '-') FROM DUAL) AS SNDNG_YMD_MASK /* 부과 일자 */
, (SELECT GET_MASK_DATE(SD.SNDNG_END_YMD, '-') FROM DUAL) AS SNDNG_END_YMD_MASK /* 부과 일자 */
, (SELECT GET_BRDT_FORMAT(SD.RTPYR_BRDT, '.') FROM DUAL) AS RTPYR_BRDT_MASK /* 납부자 생년월일 마스크 */
, (SELECT GET_MASK_DATE(SD.LEVY_YMD, '.') FROM DUAL) AS LEVY_YMD_MASK /* 부과 일자 */
, (SELECT GET_MASK_DATE(SD.DUDT_YMD, 'K') FROM DUAL) AS DUDT_YMD_MASK_KOR /* 납기 일자(한글표기) */
, (SELECT GET_MASK_DATE(SD.DUDT_YMD, '.') FROM DUAL) AS DUDT_YMD_MASK /* 납기 일자 */
, (SELECT GET_MASK_DATE(SD.DUDT_AFTR_YMD, '.') FROM DUAL) AS DUDT_AFTR_YMD_MASK /* 납기 후 일자 */
, (SELECT GET_MASK_EPAYNO(SD.EPAYNO) FROM DUAL) AS EPAYNO_MASK /* 전자납부번호 */
, (SELECT GET_CODE_NM('FIM050', SD.SNDNG_DTL_STTS_CD) FROM DUAL) AS SNDNG_DTL_STTS_NM /* 발송 상세 상태 명 */
, (SELECT GET_CODE_NM('FIM050', SD.BFR_SNDNG_DTL_STTS_CD) FROM DUAL) AS BFR_SNDNG_DTL_STTS_NM /* 전 발송 상세 상태 명 */
, (SELECT GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD) FROM DUAL) AS SNDNG_RCVMT_NM /* 발송 수납 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.RGTR) AS RGTR_NM /* 등록자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.MDFR) AS MDFR_NM /* 수정자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.DLTR) AS DLTR_NM /* 삭제자 명 */
, S.SNDNG_ID /* 발송 ID */
, S.SGG_CD /* 시군구 코드 */
, S.DEPT_CD /* 부서 코드 */
@ -182,8 +186,8 @@
, S.SNDNG_STTS_CD /* 발송 상태 코드 */
, S.RESND_YN /* 재발송 여부 */
, (SELECT GET_CODE_NM('FIM047', S.SNDNG_SE_CD) FROM DUAL) AS SNDNG_SE_NM /* 발송 구분 명 */
FROM TB_SNDNG_DTL SD
LEFT OUTER JOIN TB_SNDNG S ON (SD.SNDNG_ID = S.SNDNG_ID)
FROM TB_SNDNG_DTL SD
LEFT OUTER JOIN TB_SNDNG S ON (SD.SNDNG_ID = S.SNDNG_ID)
</sql>
<select id="selectSndngDtlList" parameterType="map" resultType="dataobject">/* 발송 상세 목록 조회(sndngDtlMapper.selectSndngDtlList) */
@ -191,18 +195,21 @@
<include refid="selectList" />
<where>
<if test="sndngDtlIDs != null">
AND SD.SNDNG_DTL_ID IN ( /* 발송 상세 IDs */
AND SD.SNDNG_DTL_ID IN ( /* 발송 상세 IDs */
<foreach collection="sndngDtlIDs" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
)
</if>
<if test="sndngDtlId != null">
AND SD.SNDNG_DTL_ID = #{sndngDtlId} /* 발송 상세 ID */
AND SD.SNDNG_DTL_ID = #{sndngDtlId} /* 발송 상세 ID */
</if>
<if test="sndngId != null">
AND SD.SNDNG_ID = #{sndngId} /* 발송 ID */
AND SD.SNDNG_ID = #{sndngId} /* 발송 ID */
</if>
<if test="crdnId != null">
AND SD.CRDN_ID = #{crdnId} /* 단속 ID */
AND SD.CRDN_ID = #{crdnId} /* 단속 ID */
</if>
<if test="delYN != null">
AND SD.DEL_YN = #{delYN} /* 삭제 여부 */
</if>
</where>
<include refid="utility.orderBy" />
@ -213,7 +220,7 @@
<include refid="selectList" />
<where>
<if test="sndngDtlIDs != null">
AND SD.SNDNG_DTL_ID IN ( /* 발송 상세 IDs */
AND SD.SNDNG_DTL_ID IN ( /* 발송 상세 IDs */
<foreach collection="sndngDtlIDs" item="sndngDtlId" separator=","> #{sndngDtlId} </foreach>
)
</if>
@ -226,6 +233,9 @@
<if test="crdnId != null">
AND SD.CRDN_ID = #{crdnId} /* 단속 ID */
</if>
<if test="delYN != null">
AND SD.DEL_YN = #{delYN} /* 삭제 여부 */
</if>
</where>
<include refid="utility.orderBy" />
</select>

@ -347,18 +347,17 @@
setFormData${pageName} = () => {
$("#tnocs--${pageName}").val(${pageName}Control.dataset.getValue("TNOCS")); // 총건수
$("#gramt--${pageName}").val(${pageName}Control.dataset.getValue("GRAMT")); // 총금액
$("#ttlNm--${pageName}").val("계고장 발송"); // 제목
// 발송 종료 일자
$("#sndngEndYmd--${pageName}").val("");
$("#sndngEndYmd--${pageName}").prop("disabled", true);
$("#divSndngEndYmd--${pageName}").hide();
// 제목
$("#docNo--${pageName}").val("계고장 발송");
}
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/createList.do"); // 등록
// ${pageName}Control.urls.update = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/updateList.do"); // 수정
}
/**************************************************************************

@ -271,12 +271,10 @@
${pageName}Control.getInfo = (sndngId) => {
if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return;
let params = {
callPurpose : "view"
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
, sndngId : sndngId // 발송 ID
};
let params = ${pageName}Control.query;
params.callPurpose = "view"; // 호출 용도
params.pageNum = 1; // 페이지 번호
params.sndngId = sndngId; // 발송 ID
ajax.get({
url : ${pageName}Control.urls.getInfo

@ -17,8 +17,17 @@
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<label class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></label>
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</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>
<button type="button" class="btn btn-primary w-px-120" id="btnPrint--${pageName}" title="계고장 출력" onclick="fnPrint${pageName}();">
계고장 출력
</button>
@ -43,7 +52,6 @@
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 200px;">등기번호</th>
<th class="cmn" style="width: 120px;">배달일자</th>
<th class="cmn" style="width: 120px;">배달시각</th>
<th class="cmn" style="width: 200px;">미배달사유</th>
@ -70,11 +78,10 @@
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DUDT_YMD}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT_MASK}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RG_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{UNDLVR_RSN_NM}</td>
@ -94,7 +101,7 @@
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="24" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
@ -118,6 +125,8 @@
var ${pageName}CallPurpose = "${callPurpose}";
// FormFields
var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}");
// main 의 검색 조건을 그대로 유지
var ${pageName}Query = ${query};
/**************************************************************************
* DatasetControl
@ -128,7 +137,8 @@
, keymapper : info => info ? info.SNDNG_DTL_ID : ""
, dataGetter : obj => obj.wrngSndngDtlList
, appendData : true
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, untilPageNum : 0 // 현재 페이지 번호
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, formats : {
SNDNG_YMD : dateFormat
, DUDT_YMD : dateFormat
@ -143,7 +153,16 @@
**************************************************************************/
// Dataset 변경 이벤트
${pageName}Control.onDatasetChange = obj => {
renderList${pageName}();
renderList${pageName}(obj.${infoPrefix}Total);
$("#paging--${pageName}").setPagingInfo({
list : ${pageName}Control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "${pageName}Control.load({index})"
});
${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
};
@ -157,23 +176,11 @@
$("#tbody--${pageName}").setCurrentRow(key);
};
// 선택(체크) 변경 이벤트
${pageName}Control.onSelectionChange = selected => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let keys = selected.map(e => ${infoPrefix}List.getKey(e));
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
};
/**************************************************************************
* DataTables 이벤트
**************************************************************************/
// DataTables에 click, dbclick 이벤트
renderList${pageName} = () => {
renderList${pageName} = (totalSize) => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
@ -186,13 +193,29 @@
.replace(/{ondblclick}/gi, "getTotalInfo${pageName}('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
$("th input[type='checkbox']").prop("checked", false);
let noMore = (totalSize == ${infoPrefix}List.length);
let initScroll = (${pageName}Control.query.pageNum < 2) && (${pageName}Control.untilPageNum == 0);
$("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore);
if (${pageName}Control.untilPageNum != 0) {
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize;
${pageName}Control.query.pageNum = ${pageName}Control.untilPageNum;
${pageName}Control.untilPageNum = 0;
}
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
// DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트
scrollDataList${pageName} = () => {
${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 false
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
@ -225,20 +248,39 @@
// 출력
printWrng${pageName} = (params) => {
if (!params) return;
}
params.delYN = "N"; // 삭제 여부
// 검색 자료 재조회
refreshList${pageName} = () => {
${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum;
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize * ${pageName}Control.query.pageNum;
// ajax.post({
// url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create
// , data : params
// , success : resp => ${pageName}Control.onSave(resp)
// });
${pageName}Control.load(1);
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 계고장 출력
// 엑셀 버튼 이벤트
fnExcel${pageName} = () => {
if (${pageName}Control.dataset.empty) {
dialog.alert({
content : "검색된 자료가 없습니다."
, onOK : () => { }
});
return;
}
// DataTables(그리드)
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td"));
${pageName}Control.query.cellDefs = cellDefs;
${pageName}Control.download();
}
// 계고장출력 버튼 이벤트
fnPrint${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
@ -271,6 +313,25 @@
// 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 : 모달의 닫힘이 끝나고 실행되는 이벤트입니다.
*/
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) {
${pageName}Control.setData({
${infoPrefix}List : ${wrngSndngDtlList}
, ${infoPrefix}Start : ${wrngSndngDtlStart}
, ${infoPrefix}Fetch : ${wrngSndngDtlFetch}
, ${infoPrefix}Total : ${wrngSndngDtlTotal}
});
});
}
// 화면 초기 설정
@ -278,19 +339,29 @@
// 화면 초기화
$("#frmEdit--${pageName}")[0].reset();
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
// dataset 초기화
${pageName}Control.dataset.clear();
}
// 기본 데이터 설정
setFormData${pageName} = () => {
$("#sggCd--${pageName}").val(${sggCd}); // 시군구 코드
$("#taskSeCd--${pageName}").val(${taskSeCd}); // 업무 구분 코드
let sggCd = ${pageName}Query.sggCd;
let taskSeCd = ${pageName}Query.taskSeCd;
$("#sggCd--${pageName}").val(sggCd); // 시군구 코드
$("#taskSeCd--${pageName}").val(taskSeCd); // 업무 구분 코드
// 검색 조건 설정
${pageName}Control.defaultFetchSize = ${pageName}Query.fetchSize;
${pageName}Control.query = ${pageName}Query;
// URL 설정
setURL${pageName}(taskSeCd);
}
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
//
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/040/list.do"); // 조회
}
/**************************************************************************
@ -303,15 +374,9 @@
// 화면 초기화
initForm${pageName}();
// Dataset 설정
${pageName}Control.addData(${wrngSndngDtl});
// 기본 데이터 설정
setFormData${pageName}();
// URL 설정
setURL${pageName}(${taskSeCd});
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
});

@ -350,13 +350,12 @@
$("#gramt--${pageName}").val(${pageName}Control.dataset.getValue("GRAMT")); // 총금액
$("#sndngYmd--${pageName}").val(${pageName}AdvntceYmdInfo.LEVY_YMD_MASK); // 발송일자
$("#sndngEndYmd--${pageName}").val(${pageName}AdvntceYmdInfo.DUDT_YMD_MASK); // 납기일자
$("#docNo--${pageName}").val("사전통지 발송"); // 제목
$("#ttlNm--${pageName}").val("사전통지 발송"); // 제목
}
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/060/createList.do"); // 등록
// ${pageName}Control.urls.update = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/060/updateList.do"); // 수정
}
/**************************************************************************

@ -273,8 +273,9 @@
if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return;
let params = ${pageName}Control.query;
params.callPurpose = "view";
params.sndngId = sndngId;
params.callPurpose = "view"; // 호출 용도
params.pageNum = 1; // 페이지 번호
params.sndngId = sndngId; // 발송 ID
ajax.get({
url : ${pageName}Control.urls.getInfo

@ -25,11 +25,8 @@
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀 저장" onclick="fnList${pageName}();">
검색
</button>
<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="엑셀" onclick="fnExcel${pageName}();">
엑셀
</button>
<button type="button" class="btn btn-primary w-px-120" id="btnCreateNxrpLink--${pageName}" title="세외수입 등록" onclick="fnCreateNxrpLink${pageName}();">
세외수입 등록
@ -63,16 +60,22 @@
<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: 120px;">발송상태</th>
<th class="cmn" style="width: 200px;">등기번호</th>
<th class="cmn" style="width: 160px;">등기번호</th>
<th class="cmn" style="width: 120px;">발송일자</th>
<th class="cmn" style="width: 120px;">납기일자</th>
<th class="cmn" style="width: 200px;">납부자명</th>
<th class="cmn" style="width: 120px;">납부자번호</th>
<th class="cmn" style="width: 120px;">납부자생일</th>
<th class="cmn" style="width: 100px;">우편번호</th>
<th class="cmn" style="width: 280px;">주소</th>
<th class="cmn" style="width: 320px;">상세주소</th>
<th class="cmn" style="width: 120px;">배달일자</th>
<th class="cmn" style="width: 120px;">배달시각</th>
<th class="cmn" style="width: 200px;">미배달사유</th>
<th class="cmn" style="width: 200px;">수령인</th>
<th class="cmn" style="width: 200px;">수령인관계</th>
<th class="cmn" style="width: 180px;">단속일시</th>
<th class="cmn" style="width: 140px;">차량번호</th>
<th class="cmn" style="width: 160px;">단속법정동</th>
<th class="cmn" style="width: 280px;">단속장소</th>
<th class="cmn" style="width: 120px;">과태료금액</th>
<th class="cmn" style="width: 180px;">등록일시</th>
@ -89,14 +92,20 @@
<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>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SNDNG_END_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DUDT_YMD}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT_MASK}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_ZIP}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_ADDR}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_DTL_ADDR}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DLVR_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{UNDLVR_RSN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RCPN_REL_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_DT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
@ -108,7 +117,7 @@
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="18" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="24" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
@ -220,9 +229,6 @@
${pageName}Control.untilPageNum = 0;
}
// checkbox 체크 해제
$("th input[type='checkbox']").prop("checked", false);
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
}
@ -358,7 +364,7 @@
if (selected.length < 1) return;
params.sndngDtlIDs = selected.join(","); // 발송 상세 IDs
params.delYn = "N"; // 삭제 여부
params.delYN = "N"; // 삭제 여부
ajax.post({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/levyIdnty.do")
@ -378,14 +384,7 @@
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
//
fnList${pageName} = () => {
${pageName}Control.query = ${pageName}Query;
${pageName}Control.load(1);
}
// 엑셀 저장
// 엑셀 버튼 이벤트
fnExcel${pageName} = () => {
if (${pageName}Control.dataset.empty) {
dialog.alert({
@ -397,14 +396,14 @@
}
// DataTables(그리드)
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)"));
let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th")
, $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td"));
${pageName}Control.query.cellDefs = cellDefs;
${pageName}Control.download();
}
// 세외수입 등록
// 세외수입등록 버튼 이벤트
fnCreateNxrpLink${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
@ -418,7 +417,7 @@
});
}
// 매치정보 작성
// 매치정보작성 버튼 이벤트
fnUpdateNxrpMtchg${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
@ -426,7 +425,7 @@
updateNxrpMtchg${pageName}(${pageName}Query);
}
// 우편통합 발송
// 우편통합발송 버튼 이벤트
fnCreateSndngLink${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
@ -451,7 +450,7 @@
);
}
// 사전통지 출력
// 사전통지출력 버튼 이벤트
fnPrintAdvntce${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
@ -464,7 +463,7 @@
});
}
// 반송 확인
// 반송확인 버튼 이벤트
fnCreateSndbk${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
@ -477,7 +476,7 @@
});
}
// 미부과건 확인
// 미부과건확인 버튼 이벤트
fnLevyIdnty${pageName} = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
@ -508,6 +507,22 @@
// 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 : 모달의 닫힘이 끝나고 실행되는 이벤트입니다.
*/
// DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다.
$("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) {
${pageName}Control.setData({
${infoPrefix}List : ${advntceSndngDtlList}
, ${infoPrefix}Start : ${advntceSndngDtlStart}
, ${infoPrefix}Fetch : ${advntceSndngDtlFetch}
, ${infoPrefix}Total : ${advntceSndngDtlTotal}
});
});
}
// 화면 초기 설정
@ -537,7 +552,7 @@
// 업무구분에 따른 url 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/080/list.do"); // 조회
${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/080/list.do"); // 조회
}
/**************************************************************************
@ -550,14 +565,6 @@
// 화면 초기화
initForm${pageName}();
//
${pageName}Control.setData({
${infoPrefix}List : ${advntceSndngDtlList}
, ${infoPrefix}Start : ${advntceSndngDtlStart}
, ${infoPrefix}Fetch : ${advntceSndngDtlFetch}
, ${infoPrefix}Total : ${advntceSndngDtlTotal}
});
// 기본 데이터 설정
setFormData${pageName}();

Loading…
Cancel
Save