사전통지 발송 현황 및 상세 수정.

main
JoJH 1 day ago
parent 696d7ad691
commit 4121711bd9

@ -36,7 +36,7 @@ public interface SndngService {
*/ */
List<DataObject> getWrngSndngList(SndbQuery req); List<DataObject> getWrngSndngList(SndbQuery req);
/** . /** .
* @param req , sndng * @param req , sndng
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
@ -66,7 +66,13 @@ public interface SndngService {
*/ */
List<DataObject> getAdvntceTrgts(SndbQuery req); List<DataObject> getAdvntceTrgts(SndbQuery req);
/** . /** .
* @param req
* @return
*/
List<DataObject> getAdvntceSndngList(SndbQuery req);
/** .
* @param req , sndng * @param req , sndng
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
@ -75,11 +81,14 @@ public interface SndngService {
*/ */
String createAdvntceSndngList(SndbQuery req, Sndng sndng); String createAdvntceSndngList(SndbQuery req, Sndng sndng);
/** . /** .
* @param req * @param sndng
* @return * @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/ */
List<DataObject> getAdvntceSndngList(SndbQuery req); String removeAdvntceSndng(Sndng sndng);
/** . /** .
* @param req * @param req

@ -87,9 +87,9 @@ public class SndngBean extends AbstractBean {
@Resource(name="fileBean") @Resource(name="fileBean")
private FileBean fileBean; private FileBean fileBean;
/** . /** .
* @param req * @param req
* @return * @return
*/ */
public List<DataObject> getWrngTrgtList(SndbQuery req) { public List<DataObject> getWrngTrgtList(SndbQuery req) {
// 삭제 여부 확인 // 삭제 여부 확인
@ -110,7 +110,7 @@ public class SndngBean extends AbstractBean {
/** . /** .
* @param req * @param req
* @return * @return
*/ */
public List<DataObject> getWrngTrgts(SndbQuery req) { public List<DataObject> getWrngTrgts(SndbQuery req) {
// 삭제 여부 확인 // 삭제 여부 확인
@ -124,7 +124,7 @@ public class SndngBean extends AbstractBean {
return sndngMapper.selectWrngTrgts(req); return sndngMapper.selectWrngTrgts(req);
} }
/** . /** .
* @param sndngDtl * @param sndngDtl
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
@ -204,8 +204,8 @@ public class SndngBean extends AbstractBean {
return "[S] 작업이 정상 처리 되었습니다."; return "[S] 작업이 정상 처리 되었습니다.";
} }
/** . /** .
* @param req , sndng * @param req , sndng
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
@ -216,7 +216,7 @@ public class SndngBean extends AbstractBean {
int rtnNocs = -1; // 처리 결과 건수 int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지 String rtnMsg = ""; // 처리 결과 메시지
// 단속 IDs로 계장 발송 대상 정보 조회 // 단속 IDs로 계장 발송 대상 정보 조회
List<DataObject> trgtList = sndngMapper.selectWrngTrgtCrdnIds(req); List<DataObject> trgtList = sndngMapper.selectWrngTrgtCrdnIds(req);
// 조회 건수 확인 // 조회 건수 확인
@ -264,7 +264,7 @@ public class SndngBean extends AbstractBean {
// 발송(TB_SNDNG) 대장을 등록한다. // 발송(TB_SNDNG) 대장을 등록한다.
rtnNocs = sndngMapper.insertSndng(sndng); rtnNocs = sndngMapper.insertSndng(sndng);
if (rtnNocs != 1) { if (rtnNocs != 1) {
throw new RuntimeException("계장 발송 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("계장 발송 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
// 발송 상세(TB_SNDNG_DTL) 대장을 등록한다. // 발송 상세(TB_SNDNG_DTL) 대장을 등록한다.
@ -278,7 +278,7 @@ public class SndngBean extends AbstractBean {
return "[S] 작업이 정상 처리 되었습니다."; return "[S] 작업이 정상 처리 되었습니다.";
} }
/** . /** .
* @param sndng * @param sndng
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
@ -328,7 +328,7 @@ public class SndngBean extends AbstractBean {
/** . /** .
* @param req * @param req
* @return * @return
*/ */
public List<DataObject> getAdvntceTrgtList(SndbQuery req) { public List<DataObject> getAdvntceTrgtList(SndbQuery req) {
// 삭제 여부 확인 // 삭제 여부 확인
@ -349,7 +349,7 @@ public class SndngBean extends AbstractBean {
/** . /** .
* @param req * @param req
* @return * @return
*/ */
public List<DataObject> getAdvntceTrgts(SndbQuery req) { public List<DataObject> getAdvntceTrgts(SndbQuery req) {
// 삭제 여부 확인 // 삭제 여부 확인
@ -659,9 +659,57 @@ public class SndngBean extends AbstractBean {
return "[S] 작업이 정상 처리 되었습니다."; return "[S] 작업이 정상 처리 되었습니다.";
} }
/** .
* @param sndng
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String removeAdvntceSndng(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 * @param req
* @return * @return
*/ */
public List<DataObject> getNhtTrgtList(SndbQuery req) { public List<DataObject> getNhtTrgtList(SndbQuery req) {
// 삭제 여부 확인 // 삭제 여부 확인
@ -682,7 +730,7 @@ public class SndngBean extends AbstractBean {
/** . /** .
* @param req * @param req
* @return * @return
*/ */
public List<DataObject> getNhtTrgts(SndbQuery req) { public List<DataObject> getNhtTrgts(SndbQuery req) {
// 삭제 여부 확인 // 삭제 여부 확인
@ -1387,7 +1435,7 @@ public class SndngBean extends AbstractBean {
int afterAdamt = 0; // 납기후 가산금 int afterAdamt = 0; // 납기후 가산금
int afterSumAmt = 0; // 납기후 합계 금액 int afterSumAmt = 0; // 납기후 합계 금액
// 계장에는 최초 과태료 금액을 출력한다. // 계장에는 최초 과태료 금액을 출력한다.
if (sndngDtlInfo.string("SNDNG_SE_CD").equals("11") || sndngDtlInfo.string("SNDNG_SE_CD").equals("12")) { if (sndngDtlInfo.string("SNDNG_SE_CD").equals("11") || sndngDtlInfo.string("SNDNG_SE_CD").equals("12")) {
pcptax = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 본세 = 과태료 단속 금액 pcptax = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 본세 = 과태료 단속 금액
adamt = 0; // 가산금 = 0 adamt = 0; // 가산금 = 0
@ -1427,7 +1475,7 @@ public class SndngBean extends AbstractBean {
String ocr0 = ""; String ocr0 = "";
String ocr1 = ""; String ocr1 = "";
String ocr2 = ""; String ocr2 = "";
if ("11,12".contains(sndngDtlInfo.string("SNDNG_SE_CD"))) { // 계 if ("11,12".contains(sndngDtlInfo.string("SNDNG_SE_CD"))) { // 계
ocr0 = ""; ocr0 = "";
ocr1 = ""; ocr1 = "";
ocr2 = ""; ocr2 = "";
@ -1576,7 +1624,7 @@ public class SndngBean extends AbstractBean {
// 사진파일명4 // 사진파일명4
epostRcptDtl.setRecevPhotoFilename4(""); epostRcptDtl.setRecevPhotoFilename4("");
// 계도장(10,11), 사전통지서(01,02)에는 사진을 출력한다. // 계고장(11,12), 사전통지서(01,02)에는 사진을 출력한다.
if ("01,02,11,12".contains(sndngDtlInfo.string("SNDNG_SE_CD"))) { if ("01,02,11,12".contains(sndngDtlInfo.string("SNDNG_SE_CD"))) {
// 단속 첨부 파일 조회 // 단속 첨부 파일 조회
List<FileInfo> fileInfo = fileBean.getFilesOf(Crdn.INF_TYPE, sndngDtlInfo.string("CRDN_ID")); List<FileInfo> fileInfo = fileBean.getFilesOf(Crdn.INF_TYPE, sndngDtlInfo.string("CRDN_ID"));

@ -68,14 +68,19 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic
return sndngBean.getAdvntceTrgts(req); return sndngBean.getAdvntceTrgts(req);
} }
@Override
public List<DataObject> getAdvntceSndngList(SndbQuery req) {
return sndngBean.getSndngList(req);
}
@Override @Override
public String createAdvntceSndngList(SndbQuery req, Sndng sndng) { public String createAdvntceSndngList(SndbQuery req, Sndng sndng) {
return sndngBean.createAdvntceSndngList(req, sndng); return sndngBean.createAdvntceSndngList(req, sndng);
} }
@Override @Override
public List<DataObject> getAdvntceSndngList(SndbQuery req) { public String removeAdvntceSndng(Sndng sndng) {
return sndngBean.getSndngList(req); return sndngBean.removeAdvntceSndng(sndng);
} }
@Override @Override

@ -430,22 +430,29 @@ public class Sndb01Controller extends ApplicationController {
@Task @Task
@RequestMapping(name="계고장 발송 현황 상세 화면", value=METHOD_URL.getWarningSendingDetailInfo) @RequestMapping(name="계고장 발송 현황 상세 화면", value=METHOD_URL.getWarningSendingDetailInfo)
public ModelAndView getWarningSendingDetailInfo(HttpServletRequest hReq, SndbQuery req) { public ModelAndView getWarningSendingDetailInfo(HttpServletRequest hReq, SndbQuery req) {
boolean json = jsonResponse();
ModelAndView mav = getWarningSendingDetailList(req); ModelAndView mav = getWarningSendingDetailList(req);
if (json) {
mav.setViewName("jsonView");
} else {
mav.setViewName("fims/sndb/sndb01040-info"); mav.setViewName("fims/sndb/sndb01040-info");
return mav mav.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("prefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD)
.addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD) .addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD)
.addObject("sndngId", req.getSndngId()) // 발송 ID(SNDNG_ID) .addObject("sndngId", req.getSndngId()) // 발송 ID(SNDNG_ID)
.addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("List", toJson(mav.getModel().get("List"))) // 데이터 .addObject("List", toJson(mav.getModel().get("List"))) // 데이터
.addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징 .addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징
; ;
} }
return mav;
}
/** - . /** - .
* {@link SndngService#getSndngList(SndngQuery)} * {@link SndngService#getSndngList(SndngQuery)}
* @param req * @param req
@ -510,19 +517,19 @@ 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())); .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") return new ModelAndView("downloadView")
.addObject("download", xlsx.getDownloadable().setFilename("계도장발송상세" + "_목록_" + dateTime + ".xlsx")); .addObject("download", xlsx.getDownloadable().setFilename("계도장 발송상세" + "_목록_" + dateTime + ".xlsx"));
} }
} }
/** . /** .
* @param req , sndng * @param sndng
* @return jsonView * @return jsonView
* <pre><code> { * <pre><code> {
* "saved": true, false * "saved": true, false
* }</code></pre> * }</code></pre>
*/ */
@Task @Task
@RequestMapping(name="계고장 발송 삭제", value=METHOD_URL.removeWarningSending) @RequestMapping(name="계고장 발송 대장 제거", value=METHOD_URL.removeWarningSending)
public ModelAndView removeWarningSending(Sndng sndng) { public ModelAndView removeWarningSending(Sndng sndng) {
boolean saved = false; boolean saved = false;
String rtnMsg = ""; String rtnMsg = "";
@ -737,8 +744,7 @@ public class Sndb01Controller extends ApplicationController {
return mav return mav
.addObject("pageName", "sndb01070") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("pageName", "sndb01070") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "advntceSndng") // 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)
@ -761,7 +767,7 @@ public class Sndb01Controller extends ApplicationController {
public ModelAndView getAdvanceNoticeSendingList(SndbQuery req) { public ModelAndView getAdvanceNoticeSendingList(SndbQuery req) {
if (!"xls".equals(req.getDownload())) { if (!"xls".equals(req.getDownload())) {
List<?> result = sndngService.getAdvntceSndngList(setFetchSize(req)); List<?> result = sndngService.getAdvntceSndngList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "advntceSndng"); return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else { } else {
// 현재 날짜 구하기 // 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
@ -804,6 +810,47 @@ public class Sndb01Controller extends ApplicationController {
} }
} }
/** .
* @param sndng
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@Task
@RequestMapping(name="사전통지 발송 대장 제거", value=METHOD_URL.removeAdvanceNoticeSending)
public ModelAndView removeAdvanceNoticeSending(Sndng sndng) {
boolean saved = false;
String rtnMsg = "";
// 발송 ID 단건 삭제
if (sndng.getSndngIds() == null || sndng.getSndngIds().length < 1) {
rtnMsg = sndngService.removeAdvntceSndng(sndng);
} else {
// 발송 IDs 만큼 발송 삭제 반복..
for (String sndngId : sndng.getSndngIds()) {
Sndng deltSndng = new Sndng();
deltSndng.setSndngId(sndngId);
deltSndng.setDelRsn(sndng.getDelRsn());
// 발송 삭제 호출
rtnMsg = sndngService.removeAdvntceSndng(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/080-info) . /** - (sndb/sndb01/080-info) .
* @param sndngId ID * @param sndngId ID
* @return fims/sndb/sndb01080-info jsonView * @return fims/sndb/sndb01080-info jsonView
@ -814,23 +861,29 @@ public class Sndb01Controller extends ApplicationController {
@Task @Task
@RequestMapping(name="사전통지 발송 현황 상세 화면", value=METHOD_URL.getAdvanceNoticeSendingDetailInfo) @RequestMapping(name="사전통지 발송 현황 상세 화면", value=METHOD_URL.getAdvanceNoticeSendingDetailInfo)
public ModelAndView getAdvanceNoticeSendingDetailInfo(HttpServletRequest hReq, SndbQuery req) { public ModelAndView getAdvanceNoticeSendingDetailInfo(HttpServletRequest hReq, SndbQuery req) {
boolean json = jsonResponse();
ModelAndView mav = getAdvanceNoticeSendingDetailList(req); ModelAndView mav = getAdvanceNoticeSendingDetailList(req);
if (json) {
mav.setViewName("jsonView");
} else {
mav.setViewName("fims/sndb/sndb01080-info"); mav.setViewName("fims/sndb/sndb01080-info");
return mav mav.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01080") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("pageName", "sndb01080") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "advntceSndngDtl") // prefix .addObject("prefixUrl", CLASS_URL) // prefixUrl
.addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
.addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD)
.addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD) .addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD)
.addObject("sndngId", req.getSndngId()) // 발송 ID(SNDNG_ID) .addObject("sndngId", req.getSndngId()) // 발송 ID(SNDNG_ID)
.addObject("advntceSndngDtlList", toJson(mav.getModel().get("advntceSndngDtlList"))) // 자료 .addObject("mainQuery", toJson(req)) // 검색 조건
.addObject("List", toJson(mav.getModel().get("List"))) // 데이터
.addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징
; ;
} }
return mav;
}
/** - . /** - .
* {@link SndngService#getSndngList(SndngQuery)} * {@link SndngService#getSndngList(SndngQuery)}
* @param req * @param req
@ -847,7 +900,7 @@ public class Sndb01Controller extends ApplicationController {
public ModelAndView getAdvanceNoticeSendingDetailList(SndbQuery req) { public ModelAndView getAdvanceNoticeSendingDetailList(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, "advntceSndngDtl"); return setPagingInfo(new ModelAndView("jsonView"), result, "");
} else { } else {
// 현재 날짜 구하기 // 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
@ -902,7 +955,7 @@ 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())); .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") return new ModelAndView("downloadView")
.addObject("download", xlsx.getDownloadable().setFilename("사전통지발송상세" + "_목록_" + dateTime + ".xlsx")); .addObject("download", xlsx.getDownloadable().setFilename("사전통지 발송상세" + "_목록_" + dateTime + ".xlsx"));
} }
} }

Loading…
Cancel
Save