From c520573fcb1d466ac1e15c5b621db59916139dd8 Mon Sep 17 00:00:00 2001 From: jjh Date: Mon, 24 Jun 2024 18:43:31 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B0=98=EC=86=A1=ED=98=84=ED=99=A9=20-=20?= =?UTF-8?q?=EC=88=98=EA=B8=B0=20=EB=B0=98=EC=86=A1=20=EB=93=B1=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xit/fims/sndb/web/Sndb01Controller.java | 227 +++++++++--------- .../sql/mapper/fims/sndb/sndngDtl-mapper.xml | 57 +++-- .../WEB-INF/jsp/fims/sndb/sndb01080-info.jsp | 5 +- .../WEB-INF/jsp/fims/sndb/sndb01120-info.jsp | 10 +- .../WEB-INF/jsp/fims/sndb/sndb01210-info.jsp | 23 +- .../WEB-INF/jsp/fims/sndb/sndb01220-main.jsp | 7 +- 6 files changed, 158 insertions(+), 171 deletions(-) diff --git a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java index 84438f3f..a24acae5 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -90,9 +90,9 @@ public class Sndb01Controller extends ApplicationController { , getAdvanceNoticeSendingDetailInfo = "/080/info.do" // 사전통지 발송 현황 상세 화면 , getAdvanceNoticeSendingDetailList = "/080/list.do" // 사전통지 발송 현황 상세 목록 조회 , createSendingLink = "/080/createSndngLink.do" // 사전통지 발송 현황 상세 목록의 우편통합 발송 연계 등록 - , makeAdvntcePdf = "/080/makeAdvntcePdf.do" // 사전통지 발송 현황 사전통지서 출력(PDF) - , makeAdvntceOutsourcing = "/080/makeAdvntceOutsourcing.do" // 사전통지 발송 현황 사전통지서 출력(외주파일) - , createSendBackList = "/080/createSndbkList.do" // 발송 상세 목록의 반송 확인(등록) + , makeAdvanceNoticePdf = "/080/makePdf.do" // 사전통지 발송 현황 사전통지서 출력(PDF) + , makeAdvanceNoticeOutsourcing = "/080/makeOutsourcing.do" // 사전통지 발송 현황 사전통지서 출력(외주파일) + , createAdvanceNoticeSendBackList = "/080/createSndbkList.do" // 사전통지 발송 상세 목록의 반송 확인(등록) , noticeSheetTargetMain = "/090/main.do" // 고지서 발송 대상 메인 화면 , getNoticeSheetTargetList = "/090/list.do" // 고지서 발송 대상 목록 조회 , getNoticeSheetTargetInfo = "/100/info.do" // 고지서 발송 대상 조회 @@ -1263,23 +1263,22 @@ public class Sndb01Controller extends ApplicationController { */ @Task @RequestMapping(name = "수기 반송 등록 정보 조회", value = METHOD_URL.sendingDetailInfo) - public ModelAndView sendingDetailInfo() { + public ModelAndView sendingDetailInfo(HttpServletRequest hReq, SndbQuery req) { ModelAndView mav = new ModelAndView("fims/sndb/sndb01210-info"); - // 사용자 정보 - ManagedUser managedUser = (ManagedUser)currentUser().getUser(); - // View(jsp)에서 사용할 공통코드를 조회 Map> commonCodes = getCodesOf("FIM047", "FIM054", "FIM081"); return mav - .addObject("pageName", "sndb01210") // View(jsp)에서 사용할 id 뒤에 붙일 suffix - .addObject("infoPrefix", "sndbkTrgt") // prefix - .addObject("infoPrefixUrl", CLASS_URL) // prefixUrl - .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) + .addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName + .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 + .addObject("pageName", "sndb01210") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "sndbkTrgt") // prefix + .addObject("infoPrefixUrl", CLASS_URL) // prefixUrl + .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) .addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록 - .addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD) - .addObject("FIM081List", commonCodes.get("FIM081")) // 미배달 사유 코드(UNDLVR_RSN_CD) + .addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD) + .addObject("FIM081List", commonCodes.get("FIM081")) // 미배달 사유 코드(UNDLVR_RSN_CD) ; } @@ -1354,8 +1353,80 @@ public class Sndb01Controller extends ApplicationController { .cell(4, 0).values(list, CellDef.values(cellDefs.stream().map(i -> {if(i.getValue() instanceof Format) {i.setField(null);}; return i;}).toList())); return new ModelAndView("downloadView") - .addObject("download", xlsx.getDownloadable().setFilename("사전통지발송상세" + "_목록_" + dateTime + ".xlsx")); + .addObject("download", xlsx.getDownloadable().setFilename("발송 상세" + "_목록_" + dateTime + ".xlsx")); + } + } + + /**발송상세 정보의 반송 정보를 등록한다. + * @param sndngDtl 발송상세 정보 + * @return jsonView + *
 {
+	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @Task + @RequestMapping(name="발송상세의 반송 정보 등록", value=METHOD_URL.createSendBack) + public ModelAndView createSendBack(SndngDtl sndngDtl) { + boolean saved = false; + String rtnMsg = sndngDtlService.createSndbk(sndngDtl); + + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } + + /**발송상세 정보의 반송 정보를 수정한다. + * @param sndngDtl 발송상세 정보 + * @return jsonView + *
 {
+	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @Task + @RequestMapping(name="발송상세의 반송 정보 수정", value=METHOD_URL.updateSendBack) + public ModelAndView updateSendBack(SndngDtl sndngDtl) { + boolean saved = false; + String rtnMsg = sndngDtlService.updateSndbk(sndngDtl); + + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } + + /**발송상세 정보의 반송 정보를 삭제한다. + * @param sndngDtl 발송상세 정보 + * @return jsonView + *
 {
+	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @Task + @RequestMapping(name="발송상세의 반송 정보 삭제", value=METHOD_URL.removeSendBack) + public ModelAndView removeSendBack(SndngDtl sndngDtl) { + boolean saved = false; + String rtnMsg = sndngDtlService.removeSndbk(sndngDtl); + + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); } /**반송 현황 메인화면(sndb/sndb01/220-main)을 연다. @@ -1502,102 +1573,6 @@ public class Sndb01Controller extends ApplicationController { } } - /**발송상세 목록의 반송 정보를 등록한다. - * @param sndngDtl 발송상세 정보 - * @return jsonView - *
 {
-	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @Task - @RequestMapping(name="발송상세 목록의 반송 정보 등록", value=METHOD_URL.createSendBackList) - public ModelAndView createSendBackList(SndbQuery req) { - boolean saved = false; - String rtnMsg = sndngDtlService.createSndbkList(req); - - if (rtnMsg.contains("[S]")) { - saved = true; - } else { - saved = false; - } - - return new ModelAndView("jsonView") - .addObject("saved", saved) - .addObject("rtnMsg", rtnMsg); - } - - /**발송상세 정보의 반송 정보를 등록한다. - * @param sndngDtl 발송상세 정보 - * @return jsonView - *
 {
-	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @Task - @RequestMapping(name="발송상세의 반송 정보 등록", value=METHOD_URL.createSendBack) - public ModelAndView createSendBack(SndngDtl sndngDtl) { - boolean saved = false; - String rtnMsg = sndngDtlService.createSndbk(sndngDtl); - - if (rtnMsg.contains("[S]")) { - saved = true; - } else { - saved = false; - } - - return new ModelAndView("jsonView") - .addObject("saved", saved) - .addObject("rtnMsg", rtnMsg); - } - - /**발송상세 정보의 반송 정보를 수정한다. - * @param sndngDtl 발송상세 정보 - * @return jsonView - *
 {
-	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @Task - @RequestMapping(name="발송상세의 반송 정보 수정", value=METHOD_URL.updateSendBack) - public ModelAndView updateSendBack(SndngDtl sndngDtl) { - boolean saved = false; - String rtnMsg = sndngDtlService.updateSndbk(sndngDtl); - - if (rtnMsg.contains("[S]")) { - saved = true; - } else { - saved = false; - } - - return new ModelAndView("jsonView") - .addObject("saved", saved) - .addObject("rtnMsg", rtnMsg); - } - - /**발송상세 정보의 반송 정보를 삭제한다. - * @param sndngDtl 발송상세 정보 - * @return jsonView - *
 {
-	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @Task - @RequestMapping(name="발송상세의 반송 정보 삭제", value=METHOD_URL.removeSendBack) - public ModelAndView removeSendBack(SndngDtl sndngDtl) { - boolean saved = false; - String rtnMsg = sndngDtlService.removeSndbk(sndngDtl); - - if (rtnMsg.contains("[S]")) { - saved = true; - } else { - saved = false; - } - - return new ModelAndView("jsonView") - .addObject("saved", saved) - .addObject("rtnMsg", rtnMsg); - } - /**공시송달 현황 메인화면(sndb/sndb01/240-main)을 연다. * * @return /sndb/sndb01/240-main @@ -1961,8 +1936,8 @@ public class Sndb01Controller extends ApplicationController { * @return 사전통지서 PDF파일 */ @Task - @RequestMapping(name="사전통지발송 현황 사전통지서 pdf 파일 생성", value=METHOD_URL.makeAdvntcePdf) - public ModelAndView makeAdvntcePdf(FimsPrintOption printOption, SndbQuery req) { + @RequestMapping(name="사전통지발송 현황 사전통지서 pdf 파일 생성", value=METHOD_URL.makeAdvanceNoticePdf) + public ModelAndView makeAdvanceNoticePdf(FimsPrintOption printOption, SndbQuery req) { ModelAndView mav = new ModelAndView("downloadView"); List list = sndngDtlService.getSndngTrgtDtlIds(req); @@ -2058,8 +2033,8 @@ public class Sndb01Controller extends ApplicationController { * @return 사전통지서 압축파일 */ @Task - @RequestMapping(name="사전통지발송 현황 사전통지서 외주 파일 생성", value=METHOD_URL.makeAdvntceOutsourcing) - public ModelAndView makeAdvntceOutsourcing(FimsPrintOption printOption, SndbQuery req) { + @RequestMapping(name="사전통지발송 현황 사전통지서 외주 파일 생성", value=METHOD_URL.makeAdvanceNoticeOutsourcing) + public ModelAndView makeAdvanceNoticeOutsourcing(FimsPrintOption printOption, SndbQuery req) { ModelAndView mav = new ModelAndView("downloadView"); String taskSeCd = ""; @@ -2134,6 +2109,30 @@ public class Sndb01Controller extends ApplicationController { return mav; } + /**발송상세 목록의 반송 정보를 등록한다. + * @param sndngDtl 발송상세 정보 + * @return jsonView + *
 {
+	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @Task + @RequestMapping(name="발송상세 목록의 반송 정보 등록", value=METHOD_URL.createAdvanceNoticeSendBackList) + public ModelAndView createAdvanceNoticeSendBackList(SndbQuery req) { + boolean saved = false; + String rtnMsg = sndngDtlService.createSndbkList(req); + + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } + /**과태료 대장 단속 정보 등록를 등록한다. * @param req 발송 대장 조회 조건 * @return jsonView diff --git a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml index 20568e46..c276756d 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml @@ -229,6 +229,12 @@ + + AND S.SGG_CD = #{sggCd} + + + AND S.TASK_SE_CD = #{taskSeCd} + AND SD.SNDNG_ID = #{sndngId} @@ -294,33 +300,6 @@ AND SD.CRDN_ID = #{crdnId} - - - AND SD.SNDNG_SE_CD = #{sndngSeCd} - - - AND SD.SNDNG_YMD = #{schSndngYmd} - - - AND SD.RCPN_NM = #{schRcpnNm} - - - AND SD.RG_NO = #{schRgNo} - - - AND SD.VHRNO = #{schVhrno} - - - AND SD.FYR = #{schFyr} - - - AND SD.VHRNO = #{schVhrno} - - - AND SD.LEVY_NO =]]> #{schLevyNoFrom} - - - AND SD.LEVY_NO #{schLevyNoTo} AND SD.DEL_YN = #{delYn} @@ -1019,8 +998,6 @@ /* 발송상세의 반송 정보 등록(sndngDtlMapper.createSndbk) */ UPDATE TB_SNDNG_DTL SET BFR_SNDNG_DTL_STTS_CD = SNDNG_DTL_STTS_CD - , BFR_DLVR_YMD = DLVR_YMD - , BFR_DLVR_HR = DLVR_TM , DLVR_YMD = #{dlvrYmd} , DLVR_TM = #{dlvrTm} , UNDLVR_RSN_CD = #{undlvrRsnCd} @@ -1028,19 +1005,39 @@ , SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} , MDFCN_DT = , MDFR = #{modifiedBy} + + + WHERE SNDNG_DTL_ID IN ( + #{sndngDtlId} + ) + + WHERE SNDNG_DTL_ID = #{sndngDtlId} + + AND DEL_YN = 'N' /* 발송상세의 반송 정보 수정(sndngDtlMapper.updateSndbk) */ UPDATE TB_SNDNG_DTL - SET DLVR_YMD = #{dlvrYmd} + SET BFR_DLVR_YMD = DLVR_YMD + , BFR_DLVR_HR = DLVR_TM + , DLVR_YMD = #{dlvrYmd} , DLVR_TM = #{dlvrTm} , UNDLVR_RSN_CD = #{undlvrRsnCd} , UNDLVR_RSN_NM = #{undlvrRsnNm} , MDFCN_DT = , MDFR = #{modifiedBy} + + + WHERE SNDNG_DTL_ID IN ( + #{sndngDtlId} + ) + + WHERE SNDNG_DTL_ID = #{sndngDtlId} + + AND DEL_YN = 'N' diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp index 9d6246a3..b5a1d94e 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp @@ -380,7 +380,6 @@ url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/080/createSndbkList.do") , data: params || {} , success: resp => { - // S 또는 F 를 버튼 title 로 변경하여 메시지 출력 let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title); dialog.alert({ @@ -508,10 +507,10 @@ let fileTypeName = ""; if (fileType == "pdf") { - url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makeAdvntcePdf.do"); + url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makePdf.do"); fileTypeName = "PDF 파일"; } else if (fileType == "outsourcing") { - url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makeAdvntceOutsourcing.do"); + url = wctx.url("/" + submitParam.taskSeCd + "${infoPrefixUrl}" + "/080/makeOutsourcing.do"); fileTypeName = "외주 요청 파일"; } diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01120-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01120-info.jsp index d6292927..9f42b48a 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01120-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01120-info.jsp @@ -297,15 +297,15 @@ if (!params) return; ajax.post({ - url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/080/createSndbkList.do") - , data : params || {} - , success : resp => { + url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/210/createList.do") + , data: params || {} + , success: resp => { // S 또는 F 를 버튼 title 로 변경하여 메시지 출력 let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, $("#btnCreateSndbk--${pageName}").attr("title")); dialog.alert({ - content : showMessage - , onOK : () => { } + content: showMessage + , onOK: () => { } }); } }); diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01210-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01210-info.jsp index bf0afa8f..a3122e19 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01210-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01210-info.jsp @@ -265,6 +265,7 @@ // FormFields $P.formFields = new FimsFormFields("#frmSearch--${pageName}"); + $P.formEditFields = new FimsFormFields("#frmEdit--${pageName}"); /************************************************************************** * DatasetControl @@ -355,10 +356,6 @@ if (resp.saved) { dialog.close($P.control.prefix + "Dialog--${openerPageName}"); - - if ("${savedCallbackFuncName}" != "") { - ${savedCallbackFuncName}(resp.saved); - } } } @@ -366,10 +363,8 @@ $P.control.save = (info) => { if (!info) return; - let create = ($P.callPurpose == "create"); - ajax.post({ - url: !create ? $P.control.urls.update : $P.control.urls.create + url: $P.control.urls.create , data: info || {} , success: resp => $P.control.onSave(resp) }); @@ -528,7 +523,6 @@ $P.control.download(); } - // 반송 등록 버튼 이벤트 $P.fnSave = () => { // 선택 자료 @@ -546,10 +540,10 @@ // validate 확인 if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; - let params = {}; - params.sggCd = $("#sggCd--${pageName}").val(); // 시군구 코드 - params.taskSeCd = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val(); // 업무 구분 코드 - params.sndngDtlIds = selected.join(","); // 발송 상세 Ids + let params = $P.formEditFields.get(); // formFields + params.sndngDtlIds = selected.join(","); // 발송 상세 Ids + params.undlvrRsnNm = $("#undlvrRsnCd--${pageName} option:selected").text(); // 미배달 사유 명 + params.sndngDtlSttsCd = "05"; // 발송 상세 상태 코드(FIM050) - 05: 반송 dialog.alert({ content: "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 등록하시겠습니까?" @@ -629,9 +623,8 @@ // 업무 구분별 설정 $P.setTask = (taskSeCd) => { // 업무구분에 따른 URL 설정 - $P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/210/list.do"); // 검색 - $P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/210/create.do"); // 등록 - $P.control.urls.update = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/210/updatet.do"); // 수정 + $P.control.urls.load = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/210/list.do"); // 검색 + $P.control.urls.create = wctx.url("/" + taskSeCd + "${infoPrefixUrl}" + "/230/create.do"); // 반송 등록 } /************************************************************************** diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01220-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01220-main.jsp index 291720f0..a52c59bf 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01220-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01220-main.jsp @@ -501,16 +501,15 @@ if (!params) return; ajax.get({ - url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/210/info.do") // 등록 + url: wctx.url("/" + params.taskSeCd + "${infoPrefixUrl}" + "/210/info.do") + "?openerPageName=${pageName}" , data: params || {} , success: resp => { dialog.open({ - id: $P.control.prefixed("Dialog--${pageName}") + id: $P.control.prefixed("TrgtDialog--${pageName}") , title: params.title , content: resp , size: "xxl" - , onClose: () => { } -// , onClose: () => { $P.fnRefreshList(); } + , onClose: () => {} }); } });