diff --git a/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java b/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java index 2addbfed..b21d16a9 100644 --- a/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java +++ b/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java @@ -125,6 +125,26 @@ public interface SndngMapper extends AbstractMapper { return !InfoCrdnPayerTrgt.isEmpty() ? InfoCrdnPayerTrgt.get(0) : null; } + /**지정한 조건에 따라 발송 상세 객체의 마지막 1개를 반환한다. + * @param req 발송 조회 조건 + * @return 발송상세 미배달 정보 + */ + default DataObject selectSndbkInfo(SndbQuery req) { + // 기본 정렬 + if (req.getOrderBy() == null) { + req.setOrderBy("SD.SNDNG_DTL_ID DESC"); + } + + List sndbkInfo = selectSndngDtls(req); + + return !sndbkInfo.isEmpty() ? sndbkInfo.get(0) : null; + } + + + + + + /**발송 대장 정보를 등록한다. * @param params 파라미터 diff --git a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java index 15b9ab0b..0efc8596 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java @@ -100,12 +100,11 @@ public interface SndngService { */ String createSndngLink(Sndng sndng); - - - - - - + /**지정한 발송 상세 ID의 미배달 정보를 반환한다.
+ * @param sndngDtlId 발송 상세 ID + * @return 발송상세 미배달 정보 + */ + DataObject getSndbkInfo(SndbQuery req); diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java index 25d5b43c..635ff63c 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java @@ -24,6 +24,7 @@ import cokr.xit.fims.enis.service.bean.EnisMtchgBean; import cokr.xit.fims.epst.EpostRcptDtl; import cokr.xit.fims.epst.EpostRcptReg; import cokr.xit.fims.epst.service.bean.EpostRcptRegBean; +import cokr.xit.fims.excl.LevyExclQuery; import cokr.xit.fims.levy.Levy; import cokr.xit.fims.levy.service.bean.LevyBean; import cokr.xit.fims.sndb.SndbQuery; @@ -942,6 +943,51 @@ public class SndngBean extends AbstractComponent { return retMessage; } + /**OCR 밴드의 검을 반환한다. + * @param vrfcCode 검증에 사용할 코드 + * ocrData OCR 데이터 + * bgngPstn 시작 위치 + * totalLength OCR 데이터의 총길이 + * @return 검증 코드 + * + */ + public String getOcrVrfcCode(String vrfcCode, String strData, int totalLength) { + int temp = 0; + int cdTemp = 0; + String retCode = ""; + + for (int iLoop = 0; iLoop < totalLength; iLoop++) { + temp = (iLoop + vrfcCode.length()) % vrfcCode.length(); + cdTemp = cdTemp + (Integer.valueOf(strData.substring(iLoop, iLoop + 1)) * Integer.valueOf(vrfcCode.substring(temp, temp + 1))); + } + + retCode = String.valueOf(cdTemp % 10); + + return retCode; + } + + /**지정한 발송 상세 ID의 미배달 정보를 반환한다.
+ * @param sndngDtlId 발송 상세 ID + * @return 발송상세 미배달 정보 + */ + + public DataObject getSndbkInfo(SndbQuery req) { + return sndngMapper.selectSndbkInfo(req); + } + + + + + + + + + + + + /**지정한 조건에 따라 발송 대장 객체들을 반환한다. * @param req 발송 대장 조회 조건 * @return 발송 대장 객체 목록 @@ -1040,29 +1086,4 @@ public class SndngBean extends AbstractComponent { return svbtcMapper.delete(svbtc); } - /**OCR 밴드의 검을 반환한다. - * @param vrfcCode 검증에 사용할 코드 - * ocrData OCR 데이터 - * bgngPstn 시작 위치 - * totalLength OCR 데이터의 총길이 - * @return 검증 코드 - * - */ - public String getOcrVrfcCode(String vrfcCode, String strData, int totalLength) { - int temp = 0; - int cdTemp = 0; - String retCode = ""; - - for (int iLoop = 0; iLoop < totalLength; iLoop++) { - temp = (iLoop + vrfcCode.length()) % vrfcCode.length(); - cdTemp = cdTemp + (Integer.valueOf(strData.substring(iLoop, iLoop + 1)) * Integer.valueOf(vrfcCode.substring(temp, temp + 1))); - } - - retCode = String.valueOf(cdTemp % 10); - - return retCode; - } - } diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java index 67ab0346..0bb92055 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java @@ -86,6 +86,14 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic return sndngBean.createEPost(sndng); } + @Override + public DataObject getSndbkInfo(SndbQuery req) { + if (req.getCallPurpose() == null) { + req.setCallPurpose("view"); + } + + return sndngBean.getSndbkInfo(req); + } 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 33ba618d..5dac2aa2 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -8,8 +8,8 @@ import javax.annotation.Resource; import org.springframework.web.servlet.ModelAndView; import cokr.xit.base.code.CommonCode; +import cokr.xit.base.user.ManagedUser; import cokr.xit.base.user.service.UserService; -import cokr.xit.base.user.service.bean.UserBean; import cokr.xit.base.web.ApplicationController; import cokr.xit.fims.sndb.SndbQuery; import cokr.xit.fims.sndb.Sndng; @@ -44,6 +44,7 @@ public class Sndb01Controller extends ApplicationController { , advanceNoticeSendingMain = "/070/main.do" // 사전통지 발송 현황 메인 화면 , getAdvntceSndngList = "/070/list.do" // 사전통지 발송 대상 목록 조회 , getAdvntceSndngDltInfo = "/080/info.do" // 사전통지 발송 상세 대장 조회 + , getSndbkInfo = "/220/info.do" // , createSndng = "/020/createSndng.do" // 발송 대상 등록 , createSndngLink = "/080/createSndngLink.do" // 우편 통합 발송 연계 등록 ; @@ -64,6 +65,9 @@ public class Sndb01Controller extends ApplicationController { public ModelAndView warningSendingTargetMain() { ModelAndView mav = new ModelAndView("fims/sndb/sndb01010-main"); + // 사용자 정보 + ManagedUser managedUser = (ManagedUser)currentUser().getUser(); + // View(jsp)에서 사용할 공통코드를 조회 Map> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM054", "FIM061", "FIM064"); @@ -71,6 +75,7 @@ public class Sndb01Controller extends ApplicationController { return mav.addObject("pageName", "sndb01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("infoPrefix", "wrngSndngTrgt") // prefix + .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) .addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_ID) .addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_ID) @@ -124,11 +129,15 @@ public class Sndb01Controller extends ApplicationController { public ModelAndView warningSendingMain() { ModelAndView mav = new ModelAndView("fims/sndb/sndb01030-main"); + // 사용자 정보 + ManagedUser managedUser = (ManagedUser)currentUser().getUser(); + // View(jsp)에서 사용할 공통코드를 조회 Map> commonCodes = getCodesOf("FIM054"); return mav.addObject("pageName", "sndb01030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("infoPrefix", "sndng") // prefix + .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) ; } @@ -177,6 +186,9 @@ public class Sndb01Controller extends ApplicationController { public ModelAndView advanceNoticeSendingTargetMain() { ModelAndView mav = new ModelAndView("fims/sndb/sndb01050-main"); + // 사용자 정보 + ManagedUser managedUser = (ManagedUser)currentUser().getUser(); + // View(jsp)에서 사용할 공통코드를 조회 Map> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM054", "FIM061", "FIM064"); @@ -184,6 +196,7 @@ public class Sndb01Controller extends ApplicationController { return mav.addObject("pageName", "sndb01050") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("infoPrefix", "advntceSndngTrgt") // prefix + .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) .addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_CD) .addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_CD) @@ -238,11 +251,15 @@ public class Sndb01Controller extends ApplicationController { public ModelAndView advanceNoticeSendingMain() { ModelAndView mav = new ModelAndView("fims/sndb/sndb01070-main"); + // 사용자 정보 + ManagedUser managedUser = (ManagedUser)currentUser().getUser(); + // View(jsp)에서 사용할 공통코드를 조회 Map> commonCodes = getCodesOf("FIM054"); return mav.addObject("pageName", "sndb01070") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("infoPrefix", "sndng") // prefix + .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) ; } @@ -330,4 +347,38 @@ public class Sndb01Controller extends ApplicationController { + /**반송등록 (sndb/sndb01/220-info)을 연다. + * @param sndngId 발송 ID + * @return fims/sndb/sndb01220-info 또는 jsonView + *
{
+	 *     "sndngDtls":
+	 * }
+ */ + public ModelAndView getSndbkInfo(SndbQuery req) { + DataObject sndbkInfo = sndngService.getSndbkInfo(req); + + // 등록을 호출하였지만 등록된 미배달 사유가 있는지 확인. + if (req.getCallPurpose().equals("create") && !sndbkInfo.string("UNDLVR_RSN_NM").equals("")) { + ModelAndView mav = new ModelAndView("jsonView"); + + return mav.addObject("pageName", "sndb01220") + .addObject("retMessage", "이미 등록된 미배달 사유가 있습니다.") + ; + } else { + boolean json = jsonResponse(); + + ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01220-info"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("EGP010", "FIM054"); + + return mav.addObject("pageName", "sndb01220") + .addObject("EGP010List", commonCodes.get("EGP010")) // 미배달 사유 코드(NONDELIVREASNCD) + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 + .addObject("sndbkInfo", json ? sndbkInfo : toJson(sndbkInfo)) // 반송 정보 + ; + } + } + } diff --git a/src/main/java/cokr/xit/fims/task/web/DpvController.java b/src/main/java/cokr/xit/fims/task/web/DpvController.java index a87ea896..6af4ef8b 100644 --- a/src/main/java/cokr/xit/fims/task/web/DpvController.java +++ b/src/main/java/cokr/xit/fims/task/web/DpvController.java @@ -566,6 +566,14 @@ public class DpvController { return super.createSndngLink(sndng); } + @Override + @RequestMapping(name="장애인과태료업무 우편통합 발송 연계 등록", value=METHOD_URL.getSndbkInfo) + public ModelAndView getSndbkInfo(SndbQuery req) { + return super.getSndbkInfo(req); + } + + + } diff --git a/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml b/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml index df80e40d..11b00a13 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml @@ -911,7 +911,7 @@ , S.SNDNG_STTS_CD , S.RESND_YN FROM TB_SNDNG_DTL SD - INNER JOIN TB_SNDNG S ON (SD.SNDNG_ID = S.SNDNG_ID) + LEFT OUTER JOIN TB_SNDNG S ON (SD.SNDNG_ID = S.SNDNG_ID) + + + + +
+ +
+ + + +
+ +
+ + +
+
+ + + + +
+ + + + + + +
+ + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02020-info.jsp index 182f5f7f..5f0ea3e9 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02020-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02020-info.jsp @@ -1072,5 +1072,4 @@ fnImageDisplay${pageName}(true); }); -// #sourceURL=sprt02020-info.jsp diff --git a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02030-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02030-info.jsp index ddaaa92d..f85a0264 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02030-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02030-info.jsp @@ -514,5 +514,4 @@ } }); -// #sourceURL=sprt02030-info.jsp diff --git a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02040-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02040-info.jsp index e6975ce8..3fcd92a0 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02040-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02040-info.jsp @@ -9,25 +9,19 @@
- + - - - - - - @@ -42,28 +36,27 @@ id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info"> - 수납 + 수납 발송구분 - 발송일자 - 납기일자 - 등기번호 + 발송일자 + 납기일자 + 등기번호 성명 - 주소 - 상세주소 - 우편번호 - 회계연도 - 부과번호 - 금액 - 배달일자 - 배달시각 - 미배달사유 - 수령인 - 수령인관계 - 공시송달일자 - 처리상태 - 등록일시 + 주소 + 상세주소 + 우편번호 + 회계연도 + 부과번호 + 금액 + 배달일자 + 배달시각 + 미배달사유 + 수령인 + 수령인관계 + 처리상태 + 등록일시 등록사용자 - 수정일시 + 수정일시 수정사용자 @@ -89,8 +82,7 @@ {UNDLVR_RSN_NM} {RCPN_NM} {RCPN_REL_NM} - {SVBTC_YMD} - {SNDNG_DTL_STTS_NM} + {SNDNG_DTL_STTS_NM} {REG_DT} {RGTR_NM} {MDFCN_DT} @@ -100,7 +92,7 @@ @@ -159,11 +151,11 @@ id="DataTables_Table_0--${pageName}${pageDataName2}" aria-describedby="DataTables_Table_0_info"> - 공시송달일자 - 제목 - 문서번호 - 기타내용 - 등록일시 + 공시송달일자 + 제목 + 문서번호 + 기타내용 + 등록일시 등록사용자 @@ -217,7 +209,7 @@ , formats : { SNDNG_YMD : dateFormat , DUDT_YMD : dateFormat - , LEVY_SUM_AMT : numberFormat + , SUM_AMT : numberFormat , DLVR_YMD : dateFormat , DLVR_TM : timeFormat , REG_DT : datetimeFormat @@ -311,6 +303,84 @@ $("#tbody--${pageName}${pageDataName2}").html(trs.join()); } + // 개별 반송 등록 + ${pageName}CreateSndbk = (params) => { + if (!params) return; + + ajax.get({ + url : wctx.url(params.taskSeCd + "/sndb/sndb01/220/info.do") + , data : params || {} + , success : resp => { + dialog.open({ + id : "sndbkInfoDialog" + , title : "개별반송 등록" + , content : resp + , size : "md" + , onClose : () => { refreshDataInfo${pageName}(); } // callback 자료 조회 + }); + } + }); + } + + // 개별 반송 수정 + ${pageName}UpdateSndbk = (params) => { + if (!params) return; + + ajax.get({ + url : wctx.url(params.taskSeCd + "/sndb/sndb01/220/info.do") + , data : params || {} + , success : resp => { + dialog.open({ + id : "payerDialog" + , title : "개별반송 수정" + , content : resp + , size : "md" + , onClose : () => { refreshDataInfo${pageName}(); } // callback 자료 조회 + }); + } + }); + } + + // 개별 반송 삭제 + ${pageName}RemoveSndbk = (params) => { + + } + + // 자료 재조회 + refreshDataInfo${pageName} = () => { + let crdnId = $("#crdnId--${pageNameMain}").val(); + let sggCd = $("#sggCd--${pageNameMain}").val(); + let taskSeCd = $("#taskSeCd--${pageNameMain}").val(); + + // 단속 ID 가 없다면.. return + if (crdnId == null || crdnId == "") { + return; + } + + let params = { + callPurpose : "refresh" + , crdnId : crdnId + , sggCd : sggCd + , taskSeCd : taskSeCd + , delYn : "N" + }; + + ajax.get({ + url : wctx.url(taskSeCd + "/sprt/sprt02/040/info.do") + , headers: { Accept: "application/json; charset=utf-8" } // json + , data : params || {} + , success : resp => { + ${pageName}Dataset.setData(resp.sndngDtlList); // 발송 이력 + ${pageName}${pageDataName2}Dataset.setData(resp.svbtcList); // 공시송달 이력 + + // 최상단 단속 Data 셋팅 + if (resp.totalInfo) { + ${pageNameMain}Control.setData([resp.totalInfo]); + } + } + }); + } + /************************************************************************** * 초기 셋팅 **************************************************************************/ @@ -334,33 +404,63 @@ /************************************************************************** * function **************************************************************************/ - // 개별 발송 등록 - fnBtnSndngCreate${pageName} = () => { - alert("개별 발송 등록"); - } + // 개별 반송 등록 + fnCreateSndbk${pageName} = () => { + let sndngDtlId = ${pageName}Dataset.getValue("SNDNG_DTL_ID"); // 발송 상세 ID + let sndngDtlSttsCd = ${pageName}Dataset.getValue("SNDNG_DTL_STTS_CD"); // 발송 상세 상태 코드 - // 개별 발송 삭제 - fnBtnSndngRemove${pageName} = () => { - alert("개별 발송 삭제"); - } + // 발송상세ID 가 없다면.. return + if (sndngDtlId == null || sndngDtlId == "") { + return; + } + // 발송상세 상태코드 확인 + if (sndngDtlSttsCd == "05" || sndngDtlSttsCd == "06" || sndngDtlSttsCd == "07" ) { + dialog.alert({ + content : "발송상세 상태가 " + ${pageName}Dataset.getValue("SNDNG_DTL_STTS_NM") + " 입니다." + , onOK : () => {} + }); + + return; + } - // 개별 반송 등록 - fnBtnSndbkCreate${pageName} = () => { - alert("개별 반송 등록"); + let params = { + callPurpose : "create" + , sggCd : ${pageName}Dataset.getValue("SGG_CD") // 시군구 코드 + , taskSeCd : ${pageName}Dataset.getValue("TASK_SE_CD") // 업무 구분 코드 + , sndngDtlId : sndngDtlId // 발송 상세 ID + , sndngDtlSttsCd : sndngDtlSttsCd // 발송 상세 상태 코드 + }; + + ${pageName}CreateSndbk(params); } // 개별 반송 수정 - fnBtnSndbkUpdate${pageName} = () => { - alert("개별 반송 수정"); + fnUpdateSndbk${pageName} = () => { + let sndngDtlId = ${pageName}Dataset.getValue("SNDNG_DTL_ID"); + + // 발송상세ID 가 없다면.. return + if (sndngDtlId == null || sndngDtlId == "") { + return; + } + + let params = { + callPurpose : "update" + , sggCd : ${pageName}Dataset.getValue("SGG_CD") // 시군구 코드 + , taskSeCd : ${pageName}Dataset.getValue("TASK_SE_CD") // 업무 구분 코드 + , sndngDtlId : sndngDtlId // 발송 상세 ID + , sndngDtlSttsCd : ${pageName}Dataset.getValue("SNDNG_DTL_STTS_CD") // 발송 상세 상태 코드 + }; + + ${pageName}UpdateSndbk(params); } // 개별 반송 삭제 - fnBtnSndbkRemove${pageName} = () => { + fnRemoveSndbk${pageName} = () => { alert("개별 반송 삭제"); } // 우편 종적 보기 참고 https://www.data.go.kr/dataset/15000390/openapi.do - fnBtnPostTraceView${pageName} = () => { + fnViewPostTrace${pageName} = () => { let rgNo = ${pageName}Dataset.getValue("RG_NO"); alert("우편 종적 보기"); @@ -384,5 +484,4 @@ ${pageName}${pageDataName2}Dataset.setData(${svbtcList}); }); -// #sourceURL=sprt02040-info.jsp diff --git a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02050-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02050-info.jsp index 4fbbdb27..0e29f9b2 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02050-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02050-info.jsp @@ -720,5 +720,4 @@ ${pageName}${pageDataName4}Dataset.setData(${payerHstryList}); }); -// #sourceURL=sprt02050-info.jsp diff --git a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02080-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02080-info.jsp index 6db5a269..3ff2de42 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02080-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02080-info.jsp @@ -9,7 +9,7 @@
- +