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

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

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

@ -124,67 +124,6 @@ public class SndngBean extends AbstractBean {
return sndngMapper.selectWrngTrgts(req);
}
/** .
* @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;
}
// 사용자 정보를 조회한다.
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
// 발송(TB_SNDNG) 대장에 등록한다.
sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
sndng.setVltnId(trgtList.get(0).string("VLTN_ID")); // 위반 ID
sndng.setSndngEndYmd(null); // 발송 종료 일자
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 발송 준비
// 발송(TB_SNDNG) 대장을 등록한다.
rtnNocs = sndngMapper.insertSndng(sndng);
if (rtnNocs != 1) {
throw new RuntimeException("계도장 발송 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 발송 상세 대장을 등록한다.
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
}
}
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
* @param sndngDtl
* @return
@ -265,6 +204,115 @@ public class SndngBean extends AbstractBean {
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
* @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;
}
// 사용자 정보를 조회한다.
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
// 발송(TB_SNDNG) 대장에 등록한다.
sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
sndng.setVltnId(trgtList.get(0).string("VLTN_ID")); // 위반 ID
sndng.setSndngEndYmd(null); // 발송 종료 일자
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 발송 준비
// 발송(TB_SNDNG) 대장을 등록한다.
rtnNocs = sndngMapper.insertSndng(sndng);
if (rtnNocs != 1) {
throw new RuntimeException("계도장 발송 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 발송 상세(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
}
}
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String removeWrngSndng(Sndng sndng) {
// 변수 선언
boolean rtnScs = false; // 처리 결과 여부
String rtnMsg = ""; // 처리 메세지
// 발송 상세 대장 조회
SndbQuery req = new SndbQuery();
req.setSndngId(sndng.getSndngId());
req.setDelYn("N");
List<DataObject> sndngDtlList = sndngDtlMapper.selectSndngDtls(req);
// 발송 상세 상태 코드 검증 - 00(처리전)
for (DataObject info : sndngDtlList) {
if (!info.string("SNDNG_DTL_STTS_CD").equals("00")) {
throw new RuntimeException("[F] 발송 상세 자료중 상태코드가 '처리전'이 아닌 자료가 있습니다."); // 예외를 발생시켜서 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");
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장의 사용 여부를 "N"으로 처리하고, 단속(TB_CRDN) 대장의 단속 상태 코드를 수정한다.
rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("[F] 발송상세 삭제 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
// 발송(TB_SNDNG), 발송 상세(TB_SNDNG_DTL) 대장을 삭제한다.
rtnMsg = removeSndng(sndng);
// 메시지 확인
if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료..
throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback
}
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
* @param req
* @return
@ -873,6 +921,7 @@ public class SndngBean extends AbstractBean {
// 발송 상세(TB_SNDNG_DTL)
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
sndngDtl.setDelRsn(sndng.getDelRsn()); // 삭제 사유
// 발송 상세(TB_SNDNG_DTL) 대장을 삭제한다.
rtnNocs = sndngDtlMapper.deleteSndngDtl(sndngDtl);

@ -43,14 +43,19 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
return sndngBean.getWrngTrgts(req);
}
@Override
public List<DataObject> getWrngSndngList(SndbQuery req) {
return sndngBean.getSndngList(req);
}
@Override
public String createWrngSndngList(SndbQuery req, Sndng sndng) {
return sndngBean.createWrngSndngList(req, sndng);
}
@Override
public List<DataObject> getWrngSndngList(SndbQuery req) {
return sndngBean.getSndngList(req);
public String removeWrngSndng(Sndng sndng) {
return sndngBean.removeWrngSndng(sndng);
}
@Override

@ -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" // 사전통지 발송 대상 메인 화면
@ -346,8 +347,7 @@ public class Sndb01Controller extends ApplicationController {
return mav
.addObject("pageName", "sndb01030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "wrngSndng") // prefix
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.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)
@ -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("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("wrngSndngDtlList", toJson(mav.getModel().get("wrngSndngDtlList"))) // 자료
.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
* <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) .
* @return /sndb/sndb01/050-main
*/

@ -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 extends SprtQuery> T setUnusedInq(String unusedInq) {
this.unusedInq = unusedInq;
return self();
}
// ETC /////////////////////////////////////////////////////////////////////
public String getCallPurpose() {
return ifEmpty(callPurpose, () -> null);

@ -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);

@ -104,6 +104,7 @@
<sql id="selectList">
SELECT SD.SNDNG_DTL_ID <!-- 발송 상세 ID -->
, SD.SNDNG_ID <!-- 발송 ID -->
, SD.CRDN_ID <!-- 단속 ID -->
, SD.SVBTC_ID <!-- 공시송달 ID -->
, SD.LINK_TRGT_CD <!-- 연계 대상 코드 -->
@ -204,7 +205,8 @@
, SD.MDFCN_DT <!-- 수정 일시 -->
, SD.MDFR <!-- 수정자 -->
, (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.DEPT_CD <!-- 부서 코드 -->
, S.TASK_SE_CD <!-- 업무 구분 코드 -->
@ -222,6 +224,7 @@
, S.SNDNG_STTS_CD <!-- 발송 상태 코드 -->
, S.RSND_YN <!-- 재발송 여부 -->
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)
</sql>

Loading…
Cancel
Save