1. 계고장 발송 현황 수정.

2. 계고장 삭제 수정.
main
JoJH 2 days ago
parent 004eeab4e4
commit 83f297741f

@ -30,21 +30,30 @@ public interface SndngService {
*/ */
List<DataObject> getWrngTrgts(SndbQuery req); List<DataObject> getWrngTrgts(SndbQuery req);
/** .
* @param req , sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String createWrngSndngList(SndbQuery req, Sndng sndng);
/** . /** .
* @param req * @param req
* @return * @return
*/ */
List<DataObject> getWrngSndngList(SndbQuery req); List<DataObject> getWrngSndngList(SndbQuery req);
/** .
* @param req , sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String createWrngSndngList(SndbQuery req, Sndng sndng);
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
String removeWrngSndng(Sndng sndng);
/** . /** .
* @param req * @param req
* @return * @return

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

@ -43,16 +43,21 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
return sndngBean.getWrngTrgts(req); return sndngBean.getWrngTrgts(req);
} }
@Override
public String createWrngSndngList(SndbQuery req, Sndng sndng) {
return sndngBean.createWrngSndngList(req, sndng);
}
@Override @Override
public List<DataObject> getWrngSndngList(SndbQuery req) { public List<DataObject> getWrngSndngList(SndbQuery req) {
return sndngBean.getSndngList(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 @Override
public List<DataObject> getAdvntceTrgtList(SndbQuery req) { public List<DataObject> getAdvntceTrgtList(SndbQuery req) {
return sndngBean.getAdvntceTrgtList(req); return sndngBean.getAdvntceTrgtList(req);

@ -80,6 +80,7 @@ public class Sndb01Controller extends ApplicationController {
, createWarningSendingList = "/020/createList.do" // 계고장 발송 대상 목록의 발송 등록 , createWarningSendingList = "/020/createList.do" // 계고장 발송 대상 목록의 발송 등록
, warningSendingMain = "/030/main.do" // 계고장 발송 현황 메인 화면 , warningSendingMain = "/030/main.do" // 계고장 발송 현황 메인 화면
, getWarningSendingList = "/030/list.do" // 계고장 발송 현황 목록 조회 , getWarningSendingList = "/030/list.do" // 계고장 발송 현황 목록 조회
, removeWarningSending = "/030/remove.do" // 계고장 발송 현황 삭제
, getWarningSendingDetailInfo = "/040/info.do" // 계고장 발송 현황 상세 화면 , getWarningSendingDetailInfo = "/040/info.do" // 계고장 발송 현황 상세 화면
, getWarningSendingDetailList = "/040/list.do" // 계고장 발송 현황 상세 목록 조회 , getWarningSendingDetailList = "/040/list.do" // 계고장 발송 현황 상세 목록 조회
, advanceNoticeTargetMain = "/050/main.do" // 사전통지 발송 대상 메인 화면 , advanceNoticeTargetMain = "/050/main.do" // 사전통지 발송 대상 메인 화면
@ -345,12 +346,11 @@ public class Sndb01Controller extends ApplicationController {
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054", "FIM067"); Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054", "FIM067");
return mav return mav
.addObject("pageName", "sndb01030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("pageName", "sndb01030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngSndng") // prefix .addObject("prefixUrl", CLASS_URL) // prefixUrl
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", fimsUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("sggCd", fimsUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록 .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) { public ModelAndView getWarningSendingList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) { if (!"xls".equals(req.getDownload())) {
List<?> result = sndngService.getWrngSndngList(setFetchSize(req)); List<?> result = sndngService.getWrngSndngList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndng"); return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else { } else {
// 현재 날짜 구하기 // 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
@ -428,15 +428,14 @@ public class Sndb01Controller extends ApplicationController {
mav.setViewName("fims/sndb/sndb01040-info"); mav.setViewName("fims/sndb/sndb01040-info");
return mav return mav
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName .addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도 .addObject("pageName", "sndb01040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("pageName", "sndb01040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("prefixUrl", CLASS_URL) // prefixUrl
.addObject("infoPrefix", "wrngSndngDtl") // prefix .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD)
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl .addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD)
.addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) .addObject("sndngId", req.getSndngId()) // 발송 ID(SNDNG_ID)
.addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD) .addObject("List", toJson(mav.getModel().get("List"))) // 데이터
.addObject("sndngId", req.getSndngId()) // 발송 ID(SNDNG_ID) .addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징
.addObject("wrngSndngDtlList", toJson(mav.getModel().get("wrngSndngDtlList"))) // 자료
; ;
} }
@ -456,7 +455,7 @@ public class Sndb01Controller extends ApplicationController {
public ModelAndView getWarningSendingDetailList(SndbQuery req) { public ModelAndView getWarningSendingDetailList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) { if (!"xls".equals(req.getDownload())) {
List<?> result = sndngDtlService.getSndngDtlList(setFetchSize(req)); List<?> result = sndngDtlService.getSndngDtlList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndngDtl"); return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else { } else {
// 현재 날짜 구하기 // 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
@ -508,6 +507,47 @@ public class Sndb01Controller extends ApplicationController {
} }
} }
/** .
* @param req , sndng
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@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) . /** (sndb/sndb01/050-main) .
* @return /sndb/sndb01/050-main * @return /sndb/sndb01/050-main
*/ */

@ -32,6 +32,7 @@ public class SprtQuery extends CmmnQuery {
private String rtpyrNm; // 납부자 명 private String rtpyrNm; // 납부자 명
private String fyr; // 회계연도 private String fyr; // 회계연도
private String levyNo; // 부과 번호 private String levyNo; // 부과 번호
private String unusedInq; // 미사용 조회 여부
// ETC // ETC
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회). private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
private String delRsn; // 삭제 사유 private String delRsn; // 삭제 사유
@ -209,6 +210,15 @@ public class SprtQuery extends CmmnQuery {
return self(); return self();
} }
public String getUnusedInq() {
return ifEmpty(unusedInq, () -> null);
}
public <T extends SprtQuery> T setUnusedInq(String unusedInq) {
this.unusedInq = unusedInq;
return self();
}
// ETC ///////////////////////////////////////////////////////////////////// // ETC /////////////////////////////////////////////////////////////////////
public String getCallPurpose() { public String getCallPurpose() {
return ifEmpty(callPurpose, () -> null); return ifEmpty(callPurpose, () -> null);

@ -274,6 +274,11 @@ public class Sprt02Controller extends ApplicationController {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 조회 // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 조회
CrdnSttsHstryQuery crdnSttsHstryQuery = new CrdnSttsHstryQuery(); CrdnSttsHstryQuery crdnSttsHstryQuery = new CrdnSttsHstryQuery();
crdnSttsHstryQuery.setCrdnId(req.getCrdnId()); // 단속 ID crdnSttsHstryQuery.setCrdnId(req.getCrdnId()); // 단속 ID
// 미사용 조회 여부
if (!"Y".equals(req.getUnusedInq())) {
crdnSttsHstryQuery.setUseYn("Y"); // 사용 여부
}
crdnSttsHstryQuery.setOrderBy("CSH.STTS_HSTRY_ID DESC"); // 정렬 crdnSttsHstryQuery.setOrderBy("CSH.STTS_HSTRY_ID DESC"); // 정렬
List<?> crdnSttsHstrys = crdnSttsHstryService.getCrdnSttsHstrys(crdnSttsHstryQuery); List<?> crdnSttsHstrys = crdnSttsHstryService.getCrdnSttsHstrys(crdnSttsHstryQuery);

@ -76,8 +76,8 @@
, (SELECT GET_CODE_NM('FIM049', S.SNDNG_STTS_CD) FROM DUAL) AS SNDNG_STTS_NM <!-- 발송 상태 명 --> , (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.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = S.MDFR) AS MDFR_NM <!-- 수정자 명 --> , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = S.MDFR) AS MDFR_NM <!-- 수정자 명 -->
FROM TB_SNDNG S 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) 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)
</sql> </sql>
<select id="selectSndngList" parameterType="map" resultType="dataobject">/* 발송 대장 목록 조회(sndngMapper.selectSndngList) */ <select id="selectSndngList" parameterType="map" resultType="dataobject">/* 발송 대장 목록 조회(sndngMapper.selectSndngList) */

@ -104,6 +104,7 @@
<sql id="selectList"> <sql id="selectList">
SELECT SD.SNDNG_DTL_ID <!-- 발송 상세 ID --> SELECT SD.SNDNG_DTL_ID <!-- 발송 상세 ID -->
, SD.SNDNG_ID <!-- 발송 ID -->
, SD.CRDN_ID <!-- 단속 ID --> , SD.CRDN_ID <!-- 단속 ID -->
, SD.SVBTC_ID <!-- 공시송달 ID --> , SD.SVBTC_ID <!-- 공시송달 ID -->
, SD.LINK_TRGT_CD <!-- 연계 대상 코드 --> , SD.LINK_TRGT_CD <!-- 연계 대상 코드 -->
@ -204,7 +205,8 @@
, SD.MDFCN_DT <!-- 수정 일시 --> , SD.MDFCN_DT <!-- 수정 일시 -->
, SD.MDFR <!-- 수정자 --> , SD.MDFR <!-- 수정자 -->
, (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.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, S.SNDNG_ID <!-- 발송 ID --> , C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
, S.SGG_CD <!-- 시군구 코드 --> , S.SGG_CD <!-- 시군구 코드 -->
, S.DEPT_CD <!-- 부서 코드 --> , S.DEPT_CD <!-- 부서 코드 -->
, S.TASK_SE_CD <!-- 업무 구분 코드 --> , S.TASK_SE_CD <!-- 업무 구분 코드 -->
@ -222,6 +224,7 @@
, S.SNDNG_STTS_CD <!-- 발송 상태 코드 --> , S.SNDNG_STTS_CD <!-- 발송 상태 코드 -->
, S.RSND_YN <!-- 재발송 여부 --> , S.RSND_YN <!-- 재발송 여부 -->
FROM TB_SNDNG_DTL SD FROM TB_SNDNG_DTL SD
INNER JOIN TB_CRDN C ON (SD.CRDN_ID = C.CRDN_ID)
LEFT OUTER JOIN TB_SNDNG S ON (SD.SNDNG_ID = S.SNDNG_ID) LEFT OUTER JOIN TB_SNDNG S ON (SD.SNDNG_ID = S.SNDNG_ID)
</sql> </sql>

Loading…
Cancel
Save