From 83f297741f07002f50a47abde2856174d737114c Mon Sep 17 00:00:00 2001 From: JoJH Date: Wed, 13 Nov 2024 15:33:23 +0900 Subject: [PATCH] =?UTF-8?q?1.=20=EA=B3=84=EA=B3=A0=EC=9E=A5=20=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=20=ED=98=84=ED=99=A9=20=EC=88=98=EC=A0=95.=202.=20?= =?UTF-8?q?=EA=B3=84=EA=B3=A0=EC=9E=A5=20=EC=82=AD=EC=A0=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xit/fims/sndb/service/SndngService.java | 27 +- .../xit/fims/sndb/service/bean/SndngBean.java | 309 ++++++++++-------- .../sndb/service/bean/SndngServiceBean.java | 15 +- .../xit/fims/sndb/web/Sndb01Controller.java | 70 +++- .../java/cokr/xit/fims/sprt/SprtQuery.java | 10 + .../xit/fims/sprt/web/Sprt02Controller.java | 5 + .../sql/mapper/fims/sndb/sndng-mapper.xml | 4 +- .../sql/mapper/fims/sndb/sndngDtl-mapper.xml | 5 +- 8 files changed, 283 insertions(+), 162 deletions(-) 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 f88b80a9..bbd59938 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java @@ -30,21 +30,30 @@ public interface SndngService { */ List getWrngTrgts(SndbQuery req); - /**계도장 발송 대상을 조회하여 발송 대장에 등록한다. - * @param req 계도장 발송 대상 조회, sndng 발송 대장 - * @return 저장 여부 - * - */ - String createWrngSndngList(SndbQuery req, Sndng sndng); - /**지정한 조건에 따라 계도장 발송 대장 목록을 조회하여 반환한다. * @param req 발송 대장 조회 조건 * @return 발송 대장 목록 */ List getWrngSndngList(SndbQuery req); + /**계고장 발송 대상을 조회하여 발송 대장에 등록한다. + * @param req 계도장 발송 대상 조회, sndng 발송 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + String createWrngSndngList(SndbQuery req, Sndng sndng); + + /**계고장 발송 대장 정보를 삭제한다. + * @param sndng 발송 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + String removeWrngSndng(Sndng sndng); + /**지정한 조건에 따라 사전통지 발송 대상 목록을 조회하여 반환한다. * @param req 발송 대장 조회 조건 * @return 발송 대장 목록 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 d639db8b..c5951907 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 @@ -124,146 +124,194 @@ public class SndngBean extends AbstractBean { return sndngMapper.selectWrngTrgts(req); } - /**계도장 발송 대상을 조회하여 발송 대장에 등록한다. - * @param req 계도장 발송 대상 조회, sndng 발송 대장 - * @return 저장 여부 - *
  • 저장됐으면 true
  • - *
  • 그렇지 않으면 false
  • - *
- */ - public String createWrngSndngList(SndbQuery req, Sndng sndng) { - // 변수 선언 - int rtnNocs = -1; // 처리 결과 건수 - String rtnMsg = ""; // 처리 결과 메시지 - - // 단속 Ids로 계도장 발송 대상 정보 조회 - List trgtList = sndngMapper.selectWrngTrgtCrdnIds(req); - - // 조회 건수 확인 - if (trgtList == null || trgtList.size() < 1) { - rtnMsg = "[F] 작업 중 대상 자료가 존재하지 않습니다."; - return rtnMsg; - } - if (sndng.getTnocs() != trgtList.size()) { - rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다."; - return rtnMsg; - } - - // 사용자 정보를 조회한다. - DataObject userInfo = userBean.getUserInfo(currentUser().getId()); + /**계도장 발송 상세 정보를 등록한다. + * @param sndngDtl 발송 상세 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String createWrngSndngDtl(Sndng sndng, String crdnId) { + // 변수 선언 + boolean rtnScs = false; // 처리 결과 여부 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = ""; // 처리 결과 메시지 + + // 단속, 납부자 대장을 조회 한다. + DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId); + + if (crdnPayerInfo == null) { + rtnMsg = "[F] 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다." + + "

" + "단속 ID : " + crdnId + "

"; + return rtnMsg; + } + if (crdnPayerInfo.string("RTPYR_ID").equals("")) { + rtnMsg = "[F] 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다." + + "

" + "단속ID : " + crdnId + + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") + + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") + + "

"; + return rtnMsg; + } - // 발송(TB_SNDNG) 대장에 등록한다. - sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드 - sndng.setVltnId(trgtList.get(0).string("VLTN_ID")); // 위반 ID - sndng.setSndngEndYmd(null); // 발송 종료 일자 + // 발송 상세(TB_SNDNG_DTL) + SndngDtl sndngDtl = new SndngDtl(); + sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드 + sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID + sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID + sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드 + sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자 + sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자 + sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명 + sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일 + sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소 + sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소 + sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호 + sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전 + sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시 + sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호 + sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명 + sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소 + sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue());// 과태료 금액 + sndngDtl.setPcptax(crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue()); // 본세 + sndngDtl.setAdamt(0); // 가산금 + sndngDtl.setSumAmt(0); // 합계 금액 + sndngDtl.setDudtAftrAmt(0); // 납기 후 금액 + sndngDtl.setDelYn("N"); // 삭제 여부 + + // 발송 상세(TB_SNDNG_DTL) 대장을 등록한다. + rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl); + if (rtnNocs != 1) { + throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } - if (sndng.getSndngRegSeCd() == null) { - sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별 - } - if (sndng.getRsndYn() == null) { - sndng.setRsndYn("N"); // 재발송 여부 - } - if (sndng.getDelYn() == null) { - sndng.setDelYn("N"); // 삭제 여부 - } - sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비 + // 단속 상태 코드를 수정한다. + if (crdnPayerInfo.string("CRDN_STTS_CD").equals("83")) { + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setCrdnId(crdnPayerInfo.string("CRDN_ID")); + crdnSttsHstry.setBfrSttsCd(crdnPayerInfo.string("CRDN_STTS_CD")); + crdnSttsHstry.setBfrSttsChgDt(crdnPayerInfo.string("CRDN_STTS_CHG_DT")); + crdnSttsHstry.setCrdnSttsCd("84"); + crdnSttsHstry.setTaskDtlId(sndngDtl.getSndngDtlId()); + + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. + rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("발송상세 등록 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } - // 발송(TB_SNDNG) 대장을 등록한다. - rtnNocs = sndngMapper.insertSndng(sndng); - if (rtnNocs != 1) { - throw new RuntimeException("계도장 발송 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**계도장 발송 대상을 조회하여 발송 대장에 등록한다. + * @param req 계도장 발송 대상 조회, sndng 발송 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String createWrngSndngList(SndbQuery req, Sndng sndng) { + // 변수 선언 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = ""; // 처리 결과 메시지 + + // 단속 IDs로 계도장 발송 대상 정보 조회 + List trgtList = sndngMapper.selectWrngTrgtCrdnIds(req); + + // 조회 건수 확인 + if (trgtList == null || trgtList.size() < 1) { + rtnMsg = "[F] 작업 중 대상 자료가 존재하지 않습니다."; + return rtnMsg; + } + if (sndng.getTnocs() != trgtList.size()) { + rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다."; + return rtnMsg; + } - // 발송 상세 대장을 등록한다. - for (int iLoop = 0; iLoop < trgtList.size(); iLoop++) { - rtnMsg = createWrngSndngDtl(sndng, trgtList.get(iLoop).string("CRDN_ID")); - if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. - throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback - } - } + // 사용자 정보를 조회한다. + DataObject userInfo = userBean.getUserInfo(currentUser().getId()); - return "[S] 작업이 정상 처리 되었습니다."; - } + // 발송(TB_SNDNG) 대장에 등록한다. + sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드 + sndng.setVltnId(trgtList.get(0).string("VLTN_ID")); // 위반 ID + sndng.setSndngEndYmd(null); // 발송 종료 일자 - /**계도장 발송 상세 정보를 등록한다. - * @param sndngDtl 발송 상세 - * @return 저장 여부 - *
  • 저장됐으면 true
  • - *
  • 그렇지 않으면 false
  • - *
- */ - public String createWrngSndngDtl(Sndng sndng, String crdnId) { - // 변수 선언 - boolean rtnScs = false; // 처리 결과 여부 - int rtnNocs = -1; // 처리 결과 건수 - String rtnMsg = ""; // 처리 결과 메시지 + if (sndng.getSndngRegSeCd() == null) { + sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별 + } + if (sndng.getRsndYn() == null) { + sndng.setRsndYn("N"); // 재발송 여부 + } + if (sndng.getDelYn() == null) { + sndng.setDelYn("N"); // 삭제 여부 + } + sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비 - // 단속, 납부자 대장을 조회 한다. - DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId); + // 발송(TB_SNDNG) 대장을 등록한다. + rtnNocs = sndngMapper.insertSndng(sndng); + if (rtnNocs != 1) { + throw new RuntimeException("계도장 발송 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } - if (crdnPayerInfo == null) { - rtnMsg = "[F] 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다." - + "

" + "단속 ID : " + crdnId + "

"; - return rtnMsg; - } - if (crdnPayerInfo.string("RTPYR_ID").equals("")) { - rtnMsg = "[F] 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다." - + "

" + "단속ID : " + crdnId - + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") - + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") - + "

"; - return rtnMsg; - } + // 발송 상세(TB_SNDNG_DTL) 대장을 등록한다. + for (int iLoop = 0; iLoop < trgtList.size(); iLoop++) { + rtnMsg = createWrngSndngDtl(sndng, trgtList.get(iLoop).string("CRDN_ID")); + if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. + throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback + } + } - // 발송 상세(TB_SNDNG_DTL) - SndngDtl sndngDtl = new SndngDtl(); - sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드 - sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID - sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID - sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드 - sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자 - sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자 - sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명 - sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일 - sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소 - sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소 - sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호 - sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전 - sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시 - sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호 - sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명 - sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소 - sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue());// 과태료 금액 - sndngDtl.setPcptax(crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue()); // 본세 - sndngDtl.setAdamt(0); // 가산금 - sndngDtl.setSumAmt(0); // 합계 금액 - sndngDtl.setDudtAftrAmt(0); // 납기 후 금액 - sndngDtl.setDelYn("N"); // 삭제 여부 + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**계도장 발송 대장 정보를 삭제한다. + * @param sndng 발송 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String removeWrngSndng(Sndng sndng) { + // 변수 선언 + boolean rtnScs = false; // 처리 결과 여부 + String rtnMsg = ""; // 처리 메세지 + + // 발송 상세 대장 조회 + SndbQuery req = new SndbQuery(); + req.setSndngId(sndng.getSndngId()); + req.setDelYn("N"); + + List sndngDtlList = sndngDtlMapper.selectSndngDtls(req); + + // 발송 상세 상태 코드 검증 - 00(처리전) + for (DataObject info : sndngDtlList) { + if (!info.string("SNDNG_DTL_STTS_CD").equals("00")) { + throw new RuntimeException("[F] 발송 상세 자료중 상태코드가 '처리전'이 아닌 자료가 있습니다."); // 예외를 발생시켜서 DB Rollback + } - // 발송 상세(TB_SNDNG_DTL) 대장을 등록한다. - rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl); - if (rtnNocs != 1) { - throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setCrdnId(info.string("CRDN_ID")); // 단속 ID + crdnSttsHstry.setCrdnSttsCd(info.string("CRDN_STTS_CD")); // 단속 상태 코드 + crdnSttsHstry.setEtcCn("계고장 발송 현황 메뉴에서 발송 삭제 처리"); // 기타 내용 + crdnSttsHstry.setUseYn("N"); - // 단속 상태 코드를 수정한다. - if (crdnPayerInfo.string("CRDN_STTS_CD").equals("83")) { - CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); - crdnSttsHstry.setCrdnId(crdnPayerInfo.string("CRDN_ID")); - crdnSttsHstry.setBfrSttsCd(crdnPayerInfo.string("CRDN_STTS_CD")); - crdnSttsHstry.setBfrSttsChgDt(crdnPayerInfo.string("CRDN_STTS_CHG_DT")); - crdnSttsHstry.setCrdnSttsCd("84"); - crdnSttsHstry.setTaskDtlId(sndngDtl.getSndngDtlId()); + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장의 사용 여부를 "N"으로 처리하고, 단속(TB_CRDN) 대장의 단속 상태 코드를 수정한다. + rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("[F] 발송상세 삭제 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } - // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. - rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); - if (!rtnScs) { - throw new RuntimeException("발송상세 등록 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - } + // 발송(TB_SNDNG), 발송 상세(TB_SNDNG_DTL) 대장을 삭제한다. + rtnMsg = removeSndng(sndng); + // 메시지 확인 + if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. + throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback + } - return "[S] 작업이 정상 처리 되었습니다."; - } + return "[S] 작업이 정상 처리 되었습니다."; + } /**지정한 조건에 따라 사전통지 발송 대상 목록을 조회하여 반환한다. * @param req 발송 대장 조회 조건 @@ -870,9 +918,10 @@ public class SndngBean extends AbstractBean { // 변수 선언 int rtnNocs = -1; - // 발송 상세(TB_SNDNG_DTL) - SndngDtl sndngDtl = new SndngDtl(); - sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID + // 발송 상세(TB_SNDNG_DTL) + SndngDtl sndngDtl = new SndngDtl(); + sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID + sndngDtl.setDelRsn(sndng.getDelRsn()); // 삭제 사유 // 발송 상세(TB_SNDNG_DTL) 대장을 삭제한다. rtnNocs = sndngDtlMapper.deleteSndngDtl(sndngDtl); 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 b550b206..48a8ed39 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 @@ -43,16 +43,21 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic return sndngBean.getWrngTrgts(req); } - @Override - public String createWrngSndngList(SndbQuery req, Sndng sndng) { - return sndngBean.createWrngSndngList(req, sndng); - } - @Override public List getWrngSndngList(SndbQuery req) { return sndngBean.getSndngList(req); } + @Override + public String createWrngSndngList(SndbQuery req, Sndng sndng) { + return sndngBean.createWrngSndngList(req, sndng); + } + + @Override + public String removeWrngSndng(Sndng sndng) { + return sndngBean.removeWrngSndng(sndng); + } + @Override public List getAdvntceTrgtList(SndbQuery req) { return sndngBean.getAdvntceTrgtList(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 d3c097c6..3eadf18b 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -80,6 +80,7 @@ public class Sndb01Controller extends ApplicationController { , createWarningSendingList = "/020/createList.do" // 계고장 발송 대상 목록의 발송 등록 , warningSendingMain = "/030/main.do" // 계고장 발송 현황 메인 화면 , getWarningSendingList = "/030/list.do" // 계고장 발송 현황 목록 조회 + , removeWarningSending = "/030/remove.do" // 계고장 발송 현황 삭제 , getWarningSendingDetailInfo = "/040/info.do" // 계고장 발송 현황 상세 화면 , getWarningSendingDetailList = "/040/list.do" // 계고장 발송 현황 상세 목록 조회 , advanceNoticeTargetMain = "/050/main.do" // 사전통지 발송 대상 메인 화면 @@ -345,12 +346,11 @@ public class Sndb01Controller extends ApplicationController { Map> commonCodes = getCodesOf("FIM054", "FIM067"); return mav - .addObject("pageName", "sndb01030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix - .addObject("infoPrefix", "wrngSndng") // prefix - .addObject("infoPrefixUrl", CLASS_URL) // prefixUrl + .addObject("pageName", "sndb01030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("prefixUrl", CLASS_URL) // prefixUrl .addObject("sggCd", fimsUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록 - .addObject("FIM067List", commonCodes.get("FIM067")) // 발송 등록 구분 코드(SNDNG_REG_SE_CD) + .addObject("FIM067List", commonCodes.get("FIM067")) // 발송 등록 구분 코드(SNDNG_REG_SE_CD) ; } @@ -370,7 +370,7 @@ public class Sndb01Controller extends ApplicationController { public ModelAndView getWarningSendingList(SndbQuery req) { if (!"xls".equals(req.getDownload())) { List result = sndngService.getWrngSndngList(setFetchSize(req)); - return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndng"); + return setPagingInfo(new ModelAndView("jsonView"), result, ""); } else { // 현재 날짜 구하기 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); @@ -428,15 +428,14 @@ public class Sndb01Controller extends ApplicationController { mav.setViewName("fims/sndb/sndb01040-info"); return mav - .addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName - .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 - .addObject("pageName", "sndb01040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix - .addObject("infoPrefix", "wrngSndngDtl") // prefix - .addObject("infoPrefixUrl", CLASS_URL) // prefixUrl - .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) - .addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD) - .addObject("sndngId", req.getSndngId()) // 발송 ID(SNDNG_ID) - .addObject("wrngSndngDtlList", toJson(mav.getModel().get("wrngSndngDtlList"))) // 자료 + .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 + .addObject("pageName", "sndb01040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("prefixUrl", CLASS_URL) // prefixUrl + .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) + .addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD) + .addObject("sndngId", req.getSndngId()) // 발송 ID(SNDNG_ID) + .addObject("List", toJson(mav.getModel().get("List"))) // 데이터 + .addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징 ; } @@ -456,7 +455,7 @@ public class Sndb01Controller extends ApplicationController { public ModelAndView getWarningSendingDetailList(SndbQuery req) { if (!"xls".equals(req.getDownload())) { List result = sndngDtlService.getSndngDtlList(setFetchSize(req)); - return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndngDtl"); + return setPagingInfo(new ModelAndView("jsonView"), result, ""); } else { // 현재 날짜 구하기 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); @@ -508,6 +507,47 @@ public class Sndb01Controller extends ApplicationController { } } + /**계도장 발송 대상을 조회하여 발송 대장에 등록한다. + * @param req 계도장 발송 대상 조회, sndng 발송 대장 + * @return jsonView + *
 {
+     *     "saved": 등록되었으면 true, 그렇지 않으면 false
+     * }
+ */ + @Task + @RequestMapping(name="계고장 발송 삭제", value=METHOD_URL.removeWarningSending) + public ModelAndView removeWarningSending(Sndng sndng) { + boolean saved = false; + String rtnMsg = ""; + + // 발송 ID 단건 삭제 + if (sndng.getSndngIds() == null || sndng.getSndngIds().length < 1) { + rtnMsg = sndngService.removeWrngSndng(sndng); + } else { + // 발송 IDs 만큼 발송 삭제 반복.. + for (String sndngId : sndng.getSndngIds()) { + Sndng deltSndng = new Sndng(); + deltSndng.setSndngId(sndngId); + deltSndng.setDelRsn(sndng.getDelRsn()); + + // 발송 삭제 호출 + rtnMsg = sndngService.removeWrngSndng(deltSndng); + if (!rtnMsg.contains("[S]")) // 오류가 발생하였으면 종료.. + break; + } + } + + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } + /**사전통지 발송 대상 자료 메인화면(sndb/sndb01/050-main)을 연다. * @return /sndb/sndb01/050-main */ diff --git a/src/main/java/cokr/xit/fims/sprt/SprtQuery.java b/src/main/java/cokr/xit/fims/sprt/SprtQuery.java index 903b69e1..d3b99c03 100644 --- a/src/main/java/cokr/xit/fims/sprt/SprtQuery.java +++ b/src/main/java/cokr/xit/fims/sprt/SprtQuery.java @@ -32,6 +32,7 @@ public class SprtQuery extends CmmnQuery { private String rtpyrNm; // 납부자 명 private String fyr; // 회계연도 private String levyNo; // 부과 번호 + private String unusedInq; // 미사용 조회 여부 // ETC private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회). private String delRsn; // 삭제 사유 @@ -209,6 +210,15 @@ public class SprtQuery extends CmmnQuery { return self(); } + public String getUnusedInq() { + return ifEmpty(unusedInq, () -> null); + } + + public T setUnusedInq(String unusedInq) { + this.unusedInq = unusedInq; + return self(); + } + // ETC ///////////////////////////////////////////////////////////////////// public String getCallPurpose() { return ifEmpty(callPurpose, () -> null); diff --git a/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java b/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java index adc4a4b1..9153eb3c 100644 --- a/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java +++ b/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java @@ -274,6 +274,11 @@ public class Sprt02Controller extends ApplicationController { // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 조회 CrdnSttsHstryQuery crdnSttsHstryQuery = new CrdnSttsHstryQuery(); crdnSttsHstryQuery.setCrdnId(req.getCrdnId()); // 단속 ID + // 미사용 조회 여부 + if (!"Y".equals(req.getUnusedInq())) { + crdnSttsHstryQuery.setUseYn("Y"); // 사용 여부 + } + crdnSttsHstryQuery.setOrderBy("CSH.STTS_HSTRY_ID DESC"); // 정렬 List crdnSttsHstrys = crdnSttsHstryService.getCrdnSttsHstrys(crdnSttsHstryQuery); 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 ac2c8141..ff055d7e 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml @@ -76,8 +76,8 @@ , (SELECT GET_CODE_NM('FIM049', S.SNDNG_STTS_CD) FROM DUAL) AS SNDNG_STTS_NM , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = S.RGTR) AS RGTR_NM , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = S.MDFR) AS MDFR_NM - FROM TB_SNDNG S - LEFT OUTER JOIN TB_VLTN V ON (S.VLTN_ID = V.VLTN_ID AND S.SGG_CD = V.SGG_CD AND S.TASK_SE_CD = V.TASK_SE_CD) + FROM TB_SNDNG S + LEFT OUTER JOIN TB_VLTN V ON (S.VLTN_ID = V.VLTN_ID AND S.SGG_CD = V.SGG_CD AND S.TASK_SE_CD = V.TASK_SE_CD)