발송현황 관련 기능 수정/추가

master
mjkhan21 3 months ago
parent 4ba5578d55
commit 84aa95a681

@ -114,10 +114,11 @@ public class JasperController extends AbstractController {
@RequestMapping(name="사전통지서 미리보기", value="/prenotice.do")
public ModelAndView previewPrenotice(SndbQuery req, FimsPrintOption printOption) {
List<DataObject> crdnList = getCrdnList(req);
String[] crdnIds = crdnList.stream().map(row -> row.string("CRDN_ID")).toList().toArray(new String[crdnList.size()]);
List<DataObject> dtlList = sndngDtlService.getDetailList(List.of(req.getSndngId()));
String[] crdnIds = dtlList.stream().map(row -> row.string("CRDN_ID")).toList().toArray(new String[dtlList.size()]);
Map<String, List<FileInfo>> crdnFiles = fileBean.getFilesOf(Crdn.INF_TYPE, crdnIds).stream()
.collect(Collectors.groupingBy(row -> row.getInfoKey()));
setBankAccounts(dtlList);
String today = dateFormats.format("yyyyMMdd", System.currentTimeMillis()),
year = today.substring(0, 4),
@ -127,7 +128,7 @@ public class JasperController extends AbstractController {
String userName = user.getName(),
userPhoneNo = user.getPhoneNo(),
userEmail = user.getEmailAddress();
List<InputStream> inputStreams = crdnList.stream()
List<InputStream> inputStreams = dtlList.stream()
.flatMap(crdn -> {
crdn.set("CRDN_YMD_TM", DataFormat.yyyy_mm_dd(crdn.get("CRDN_YMD")) + " " + DataFormat.hh_mm_ss(crdn.get("CRDN_TM")))
.set("ADVNTCE_DUDT_YMD", DataFormat.yyyy_mm_dd(crdn.get("ADVNTCE_DUDT_YMD")))
@ -155,14 +156,49 @@ public class JasperController extends AbstractController {
};
return new ModelAndView("jasperView")
.addObject("jasper", jasper)
.addObject("dataMap", crdnList)
.addObject("dataMap", dtlList)
.addObject("filename", "prenotice.pdf")
.addObject("closables", inputStreams);
}
private void setBankAccounts(List<DataObject> list) {
if (isEmpty(list)) return;
for (DataObject row: list) {
for (int i = 0; i < 20; ++i) {
String suffix = i < 1 ? "" : Integer.toString(i + 1),
bankKey = "BANK_NM" + suffix,
bankField = switch (row.string(bankKey)) {
case "신한" -> "SAccountNo";
case "우리" -> "WAccountNo";
case "하나" -> "HAccountNo";
case "국민" -> "KAccountNo";
case "기업" -> "IAccountNo";
case "우체국" -> "PAccountNo";
case "씨티" -> "CAccountNo";
case "농협" -> "NAccountNo";
case "수협" -> "FAccountNo";
case "카카오" -> "OAccountNo";
case "K뱅크" -> "QAccountNo";
case "토스뱅크" -> "TAccountNo";
default -> null;
};
if (bankField == null) continue;
String accountKey = "VR_ACTNO" + suffix,
accountNo = row.string(accountKey);
row.remove(bankKey);
row.remove(accountKey);
row.put(bankField, accountNo);
}
}
}
@RequestMapping(name="고지서 미리보기", value="/notice.do")
public ModelAndView previewNotice(SndbQuery req, FimsPrintOption printOption) {
List<DataObject> crdnList = getCrdnList(req);
List<DataObject> crdnList = sndngDtlService.getDetailList(List.of(req.getSndngId())); //getCrdnList(req);
setBankAccounts(crdnList);
String today = dateFormats.format("yyyyMMdd", System.currentTimeMillis());
FimsUser user = (FimsUser)currentUser().getUser();

@ -237,6 +237,7 @@
// 검색조건과 저장 파라미터 객체를 합친다.
let params = $.extend({}, $P.ctrl.query, formFields);
params.divKb = "000"; // 취급 구분 - 일반
params.sndngRegSeCd = "01"; // 발송 등록 구분 코드(SNDNG_REG_SE_CD) - 01: 일괄
params.vltnCd = items[0].data.VLTN_CD;
params.rsndYn = "N"; // 재발송 여부

@ -118,7 +118,7 @@
</div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary w-px-120" name="btnUpdateStatus" title="발송상태 갱신">발송상태 갱신</button>
<button type="button" class="btn btn-primary w-px-120" name="btnUpdateStatus" title="발송 업데이트">발송 업데이트</button>
<button type="button" class="btn btn-primary w-px-120" name="btnRemove" title="계도장 발송 삭제">발송 삭제</button>
</span>
</span>
@ -205,6 +205,7 @@
<script>
LoadScript("sndb01030Script", wctx.url("/resources/js/fims/sndb/sndb01030.js?ver=${ver}"));
LoadScript("woopyonmoaScript", wctx.url("/resources/js/fims/sndb/woopyonmoa.js?ver=${ver}"));
/**************************************************************************
* Global Variable
@ -427,17 +428,7 @@
}
$P.fnUpdateStatus = () => {
let onSelect = selected => {
let file = selected[0];
upload({
url: wctx.url("/woopyonmoa/update.do"),
data: {upload: file},
success: resp => dialog.alert(resp.saved ? "저장됐습니다." : "저장하지 못했습니다.")
});
};
fileInput().select(onSelect);
};
$P.fnUpdateStatus = () => fileInput().select(selected => woopyonMoa.updateStatus(selected[0]));
/**************************************************************************
* 초기 셋팅
@ -454,10 +445,10 @@
$P.$findn("term").onEnterPress($P.fnSearchList);
// 버튼 이벤트
$P.$findn("btnUpdateStatus").on("click", () => $P.fnUpdateStatus());
$P.$findn("btnRemove").on("click", function() {
$P.fnRemove($P.$findn("btnRemove").attr("title")); // 삭제
});
$P.$findn("btnUpdateStatus").on("click", () => $P.fnUpdateStatus());
// DataTables width 변경 조정
Componentization.fnMakeResizableTable($P.findn("tableRspns"));

@ -44,6 +44,7 @@
<tr name="theadTr" data-search-target="[data-doctx='${pageName}']">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">차량번호</th>
<th class="cmn" style="width: 85px;">취급구분</th>
<th class="cmn" style="width: 120px;">발송상태</th>
<th class="cmn" style="width: 160px;">등기번호</th>
<th class="cmn" style="width: 120px;">발송일자</th>
@ -67,6 +68,7 @@
<tr data-index="{data-index}">
<td class="cmn text-center" onclick ondblclick>{ROW_NUM}</td>
<td class="cmn text-center" onclick ondblclick>{VHRNO}</td>
<td class="cmn text-center" onclick ondblclick>{DIV_KB_NM}</td>
<td class="cmn text-center" onclick ondblclick>{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick ondblclick>{RG_NO}</td>
<td class="cmn text-center" onclick ondblclick>{SNDNG_YMD}</td>
@ -86,7 +88,7 @@
</template>
<template name="tmpltNotFound">
<tr class="odd">
<td valign="top" colspan="17" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="18" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
@ -181,15 +183,7 @@
}
});
}
$P.downloadWarning = () => {
let params = new FimsFormFields($P.selectorn("frmEdit")).get();
params.download = "xls";
params.type = "woopyonmoa-upload.xls";
download.post({
url: wctx.url("/sndb/sndb01/040/list.do"),
data: params
});
};
$P.downloadWarning = () => woopyonMoa.downloadRequest(new FimsFormFields($P.selectorn("frmEdit")).get());
$P.previewWarning = (title) => {
// validate 확인
if (!AppSupport.customValidate($P.$findn("frmEdit").find("input,select,textarea"))) return;

@ -249,6 +249,7 @@
// 검색조건과 저장 파라미터 객체를 합친다.
let params = $.extend({}, $P.ctrl.query, formFields);
params.divKb = "001"; // 취급 구분 - 등기
params.sndngRegSeCd = "01"; // 발송 등록 구분 코드(SNDNG_REG_SE_CD) - 01: 일괄
params.vltnCd = items[0].data.VLTN_CD;
params.rsndYn = "N"; // 재발송 여부

@ -118,9 +118,8 @@
</div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary w-px-120" name="btnRemove" title="사전통보 발송 삭제">
발송 삭제
</button>
<button type="button" class="btn btn-primary w-px-120" name="btnUpdateStatus" title="발송 업데이트">발송 업데이트</button>
<button type="button" class="btn btn-primary w-px-120" name="btnRemove" title="사전통보 발송 삭제">발송 삭제</button>
</span>
</span>
</div>
@ -206,6 +205,7 @@
<script>
LoadScript("sndb01070Script", wctx.url("/resources/js/fims/sndb/sndb01070.js?ver=${ver}"));
LoadScript("woopyonmoaScript", wctx.url("/resources/js/fims/sndb/woopyonmoa.js?ver=${ver}"));
/**************************************************************************
* Global Variable
@ -426,6 +426,8 @@
});
}
$P.fnUpdateStatus = () => fileInput().select(selected => woopyonMoa.updateStatus(selected[0]));
/**************************************************************************
* 초기 셋팅
**************************************************************************/
@ -441,6 +443,7 @@
$P.$findn("term").onEnterPress($P.fnSearchList);
// 버튼 이벤트
$P.$findn("btnUpdateStatus").on("click", () => $P.fnUpdateStatus());
$P.$findn("btnRemove").on("click", function() {
$P.fnRemove($P.$findn("btnRemove").attr("title")); // 삭제
});

@ -31,10 +31,11 @@
<button type="button" class="btn btn-excel w-px-120" name="btnExcel" title="엑셀">엑셀</button>
<button type="button" class="btn btn-primary w-px-120" name="btnLinkNxrpIndivA01" title="세외수입 과태료대장 등록">과태료대장 등록</button>
<button type="button" class="btn btn-primary w-px-120" name="btnLinkNxrpIndivA03" title="세외수입 과태료대장 상세 조회">과태료대장 조회</button>
<button type="button" class="btn btn-primary w-px-120" name="btnCreateSndngLink" title="우편 통합 발송">우편 통합 발송</button>
<button type="button" class="btn btn-primary w-px-120" name="btnPrintAdvntcePdf01" title="사전통지 출력(PDF-A4)">사전통지 출력(PDF-A4)</button>
<button type="button" class="btn btn-primary w-px-120" name="btnPrintAdvntceOutsourcing" title="사전통지 출력(외주파일)">사전통지 출력(외주파일)</button>
<button type="button" class="btn btn-primary w-px-120" name="btnCreateSndbk" title="반송 확인">반송 확인</button>
<button hidden type="button" class="btn btn-primary w-px-120" name="btnCreateSndngLink" title="우편 통합 발송">우편 통합 발송</button>
<button type="button" class="btn btn-primary w-px-120" name="btnPrintAdvntcePdf01" title="사전통지 출력(PDF-A4)">사전통지 출력</button>
<button hidden type="button" class="btn btn-primary w-px-120" name="btnPrintAdvntceOutsourcing" title="사전통지 출력(외주파일)">사전통지 출력(외주파일)</button>
<button type="button" class="btn btn-primary w-px-120" name="btnDownloadPrenotice" title="우편 등록 파일">우편 등록 파일</button>
<button hidden type="button" class="btn btn-primary w-px-120" name="btnCreateSndbk" title="반송 확인">반송 확인</button>
</span>
</span>
</div> <!-- 업무 버튼 및 건수 표시 -->
@ -48,6 +49,7 @@
<tr name="theadTr" data-search-target="[data-doctx='${pageName}']">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">차량번호</th>
<th class="cmn" style="width: 85px;">취급구분</th>
<th class="cmn" style="width: 120px;">발송상태</th>
<th class="cmn" style="width: 160px;">등기번호</th>
<th class="cmn" style="width: 120px;">발송일자</th>
@ -78,6 +80,7 @@
<tr data-index="{data-index}">
<td class="cmn text-center" onclick ondblclick>{ROW_NUM}</td>
<td class="cmn text-center" onclick ondblclick>{VHRNO}</td>
<td class="cmn text-center" onclick ondblclick>{DIV_KB_NM}</td>
<td class="cmn text-center" onclick ondblclick>{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick ondblclick>{RG_NO}</td>
<td class="cmn text-center" onclick ondblclick>{SNDNG_YMD}</td>
@ -104,7 +107,7 @@
</template>
<template name="tmpltNotFound">
<tr class="odd">
<td valign="top" colspan="31" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
<td valign="top" colspan="32" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
@ -419,6 +422,7 @@
document.location.href = url + "?" + parameter;
}
}
$P.downloadPrenotice = () => woopyonMoa.downloadRequest(new FimsFormFields($P.selectorn("frmEdit")).get());
// 반송확인 버튼 이벤트
$P.fnCreateSndbk = (btnTitle) => {
@ -463,6 +467,9 @@
$P.$findn("btnPrintAdvntceOutsourcing").on("click", function() {
$P.fnMakeFileAdvntce($P.$findn("btnPrintAdvntceOutsourcing").attr("title"), "outsourcing"); // 사전통지 출력(외주파일)
});
$P.$findn("btnDownloadPrenotice").on("click", function() {
$P.downloadPrenotice($P.$findn("btnDownloadPrenotice").attr("title")); // 출력
});
$P.$findn("btnCreateSndbk").on("click", function() {
$P.fnCreateSndbk($P.$findn("btnCreateSndbk").attr("title")); // 반송 등록
});

@ -127,6 +127,7 @@
<button type="button" class="btn btn-primary w-px-120" name="btnCreate" title="고지서 발송 등록">
발송 등록
</button>
<button type="button" class="btn btn-primary w-px-120" name="btnUpdateStatus" title="발송 업데이트">발송 업데이트</button>
<button type="button" class="btn btn-primary w-px-120" name="btnRemove" title="고지서 발송 삭제">
발송 삭제
</button>
@ -215,6 +216,7 @@
<script>
LoadScript("sndb01110Script", wctx.url("/resources/js/fims/sndb/sndb01110.js?ver=${ver}"));
LoadScript("woopyonmoaScript", wctx.url("/resources/js/fims/sndb/woopyonmoa.js?ver=${ver}"));
/**************************************************************************
* Global Variable
@ -458,6 +460,8 @@
$P.getNhtSndngInfo(params);
}
$P.fnUpdateStatus = () => fileInput().select(selected => woopyonMoa.updateStatus(selected[0]));
// 삭제 버튼 클릭 이벤트
$P.fnRemove = (btnTitle) => {
@ -510,6 +514,7 @@
$P.$findn("btnCreate").on("click", function() {
$P.fnCreate($P.$findn("btnCreate").attr("title")); // 등록
});
$P.$findn("btnUpdateStatus").on("click", () => $P.fnUpdateStatus());
$P.$findn("btnRemove").on("click", function() {
$P.fnRemove($P.$findn("btnRemove").attr("title")); // 삭제
});

@ -30,21 +30,20 @@
<button type="button" class="btn btn-excel w-px-120" name="btnExcel" title="엑셀">
엑셀
</button>
<button type="button" class="btn btn-primary w-px-120" name="btnCreateSndngLink" title="우편 통합 발송">
<button hidden type="button" class="btn btn-primary w-px-120" name="btnCreateSndngLink" title="우편 통합 발송">
우편 통합 발송
</button>
<button type="button" class="btn btn-primary w-px-120" name="btnPrintNhtPdf01" title="고지서 출력(PDF-A4)">
고지서 출력(PDF-A4)
고지서 출력
</button>
<%--
<button type="button" class="btn btn-primary w-px-120" name="btnPrintNhtPdf02" title="고지서 출력(PDF-Letter)">
<button hidden type="button" class="btn btn-primary w-px-120" name="btnPrintNhtPdf02" title="고지서 출력(PDF-Letter)">
고지서 출력(PDF-Letter)
</button>
--%>
<button type="button" class="btn btn-primary w-px-120" name="btnPrintNhtOutsourcing" title="고지서 출력(외주파일)">
<button hidden type="button" class="btn btn-primary w-px-120" name="btnPrintNhtOutsourcing" title="고지서 출력(외주파일)">
고지서 출력(외주파일)
</button>
<button type="button" class="btn btn-primary w-px-120" name="btnCreateSndbk" title="반송 확인">
<button type="button" class="btn btn-primary w-px-120" name="btnDownloadNotice" title="우편 등록 파일">우편 등록 파일</button>
<button hidden type="button" class="btn btn-primary w-px-120" name="btnCreateSndbk" title="반송 확인">
반송 확인
</button>
</span>
@ -60,6 +59,7 @@
<tr name="theadTr" data-search-target="[data-doctx='${pageName}']">
<th class="cmn" style="width: 72px;">No.</th>
<th class="cmn" style="width: 120px;">차량번호</th>
<th class="cmn" style="width: 85px;">취급구분</th>
<th class="cmn" style="width: 120px;">발송상태</th>
<th class="cmn" style="width: 160px;">등기번호</th>
<th class="cmn" style="width: 120px;">발송일자</th>
@ -96,7 +96,8 @@
<template is="curly-brackets" name="tmpltRows">
<tr data-index="{data-index}">
<td class="cmn text-center" onclick ondblclick>{ROW_NUM}</td>
<td class="cmn text-center" onclick ondblclick>{VHRNO}</td>
<td class="cmn text-center" onclick ondblclick>{VHRNO}</td>
<td class="cmn text-center" onclick ondblclick>{DIV_KB_NM}</td>
<td class="cmn text-center" onclick ondblclick>{SNDNG_DTL_STTS_NM}</td>
<td class="cmn text-center" onclick ondblclick>{RG_NO}</td>
<td class="cmn text-center" onclick ondblclick>{SNDNG_YMD}</td>
@ -373,6 +374,7 @@
$P.fnRemoveDpcnData = (btnTitle) => {
//
}
$P.downloadNotice = () => woopyonMoa.downloadRequest(new FimsFormFields($P.selectorn("frmEdit")).get());
// 반송확인 버튼 이벤트
$P.fnCreateSndbk = (btnTitle) => {
@ -411,6 +413,9 @@
$P.$findn("btnPrintNhtOutsourcing").on("click", function() {
$P.fnMakeFileNht($P.$findn("btnPrintNhtOutsourcing").attr("title"), "outsourcing"); // 고지서 출력(외주파일)
});
$P.$findn("btnDownloadNotice").on("click", function() {
$P.downloadNotice($P.$findn("btnDownloadNotice").attr("title")); // 출력
});
$P.$findn("btnCreateSndbk").on("click", function() {
$P.fnCreateSndbk($P.$findn("btnCreateSndbk").attr("title")); // 반송 등록
});

@ -154,16 +154,16 @@
</div>
<!-- 업무 버튼 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary w-px-120" name="btnCreate" title="개별 반송 등록">
<button hidden type="button" class="btn btn-primary w-px-120" name="btnCreate" title="개별 반송 등록">
개별 반송 등록
</button>
<button type="button" class="btn btn-primary w-px-120" name="btnRemove" title="반송 삭제">
반송 삭제
</button>
<button type="button" class="btn btn-primary w-px-120" name="btnCreateSlctnSndngLink" title="선택 통합우편 발송">
<button hidden type="button" class="btn btn-primary w-px-120" name="btnCreateSlctnSndngLink" title="선택 통합우편 발송">
선택 통합우편 발송
</button>
<button type="button" class="btn btn-primary w-px-120" name="btnCreateWholSndngLink" title="전체 통합우편 발송">
<button hidden type="button" class="btn btn-primary w-px-120" name="btnCreateWholSndngLink" title="전체 통합우편 발송">
전체 통합우편 발송
</button>
<button type="button" class="btn btn-primary w-px-120" name="btnCreateSvbtc" title="공시송달 등록">

@ -0,0 +1,14 @@
var woopyonMoa = {
downloadRequest: (params) => {
params.template = "woopyonmoa-upload.xls";
download.post({
url: wctx.url("/woopyonmoa/download.do"),
data: params
});
},
updateStatus: (file) => upload({
url: wctx.url("/woopyonmoa/update.do"),
data: {upload: file},
success: resp => dialog.alert(resp.saved ? "저장됐습니다." : "저장하지 못했습니다.")
})
};
Loading…
Cancel
Save